diff --git a/AlagappanRa_ip_master/authorship.json b/AlagappanRa_ip_master/authorship.json index c96b7b0f..d34256ca 100644 --- a/AlagappanRa_ip_master/authorship.json +++ b/AlagappanRa_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/main/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package main;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.CustomList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.Deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.Event;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.DukeException;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.ToDo;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.CommandType;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.Global;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":" private static final String chatBotName \u003d \"CHAD CCP\";","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":" private static final CustomList list \u003d new CustomList();","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"AlagappanRa"},"content":" Duke dukeInstance \u003d new Duke();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"AlagappanRa"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"AlagappanRa"},"content":" dukeInstance.greetUser();","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"AlagappanRa"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"AlagappanRa"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"AlagappanRa"},"content":" CommandType commandType \u003d CommandType.getCommandType(command);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AlagappanRa"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"AlagappanRa"},"content":" case BYE:","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"AlagappanRa"},"content":" dukeInstance.goodBye();","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"AlagappanRa"},"content":" scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"AlagappanRa"},"content":" return; ","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"AlagappanRa"},"content":" case LIST:","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"AlagappanRa"},"content":" list.printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"AlagappanRa"},"content":" case MARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"AlagappanRa"},"content":" list.markAsDone(command);","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"AlagappanRa"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"AlagappanRa"},"content":" case UNMARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"AlagappanRa"},"content":" int unmarkIndex \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"AlagappanRa"},"content":" list.markAsUndone(unmarkIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"AlagappanRa"},"content":" case TODO:","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"AlagappanRa"},"content":" list.addTask(createToDoTask(command));","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"AlagappanRa"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"AlagappanRa"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"AlagappanRa"},"content":" list.addTask(new Deadline(command.substring(9)));","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"AlagappanRa"},"content":" case EVENT:","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"AlagappanRa"},"content":" list.addTask(new Event(command.substring(6)));","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"AlagappanRa"},"content":" case DELETE:","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"AlagappanRa"},"content":" int deleteIndex \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"AlagappanRa"},"content":" list.deleteTask(deleteIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"AlagappanRa"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\"));","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"AlagappanRa"},"content":" public void greetUser() {","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"AlagappanRa"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"AlagappanRa"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"AlagappanRa"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"AlagappanRa"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"AlagappanRa"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Hello! I\u0027m \" + Duke.chatBotName);","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"AlagappanRa"},"content":" // public void echoUserAndAddToList(String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"AlagappanRa"},"content":" // System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"AlagappanRa"},"content":" // list.add(new Task(command));","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"AlagappanRa"},"content":" // System.out.println(\"added: \" + command);","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"AlagappanRa"},"content":" // System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"AlagappanRa"},"content":" // }","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"AlagappanRa"},"content":" public static ToDo createToDoTask(String command) throws DukeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"AlagappanRa"},"content":" command.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"AlagappanRa"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"todo command must be followed by a space and a string. ERR: STRING INDEX OUT OF BOUNDS.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"AlagappanRa"},"content":" String description \u003d command.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"AlagappanRa"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"todo command must be followed by a space and a string. ERR: NO STRING.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"AlagappanRa"},"content":" return new ToDo(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"AlagappanRa"},"content":" public void goodBye() {","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":111,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"AlagappanRa":108,"-":4}},{"path":"src/main/java/mypackage/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public enum CommandType {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, UNKNOWN;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":" public static CommandType getCommandType(String command) {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":" return BYE;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":" return LIST;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":" return MARK;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":" return UNMARK;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AlagappanRa"},"content":" return TODO;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"AlagappanRa"},"content":" return DEADLINE;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.startsWith(\"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"AlagappanRa"},"content":" return EVENT;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"AlagappanRa"},"content":" return DELETE;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"AlagappanRa"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AlagappanRa"},"content":" return UNKNOWN;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AlagappanRa":27}},{"path":"src/main/java/mypackage/CustomList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":"public class CustomList extends ArrayList\u003cTask\u003e {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":" public CustomList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" public void printList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":" for (int i \u003d 0; i \u003c this.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":" System.out.println((i + 1) + \". \" + this.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AlagappanRa"},"content":" public void markAsDone(String command) throws DukeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AlagappanRa"},"content":" Integer.valueOf(command.substring(5));","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"AlagappanRa"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Mark command must be followed by a space and an integer. ERR: STRING INDEX OUT OF BOUNDS.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AlagappanRa"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Mark command must be followed by a space and an integer. ERR: NOT AN INTEGER.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AlagappanRa"},"content":" int index \u003d Integer.valueOf(command.substring(5));","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"AlagappanRa"},"content":" if (index \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Mark command must be followed by a space and an integer. ERR: NO INTEGER.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"AlagappanRa"},"content":" this.get(index - 1).markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"AlagappanRa"},"content":" } catch (IndexOutOfBoundsException e){","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"There is no task at that index.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\" \" + this.get(index - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"AlagappanRa"},"content":" public void markAsUndone(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"AlagappanRa"},"content":" this.get(index - 1).markAsUndone();","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\" \" + this.get(index - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"AlagappanRa"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"AlagappanRa"},"content":" Task t \u003d this.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Now you have \" + Integer.toString(this.size()) + \" \" + (this.size() \u003d\u003d 1 ? \"task\" : \"tasks\") + \" in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"AlagappanRa"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"AlagappanRa"},"content":" this.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Now you have \" + Integer.toString(this.size()) + \" \" + (this.size() \u003d\u003d 1 ? \"task\" : \"tasks\") + \" in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AlagappanRa":71}},{"path":"src/main/java/mypackage/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" private final String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":" public Deadline(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":" super(description.substring(0, description.indexOf(\"/\") - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":" this.by \u003d description.substring(description.indexOf(\"/\") + 4);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), by);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AlagappanRa":15}},{"path":"src/main/java/mypackage/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":" return String.format(\"☹ OOPS!!! %s\", super.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AlagappanRa":12}},{"path":"src/main/java/mypackage/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" private final String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":" private final String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":" public Event(String m) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":" super(m.substring(0, m.indexOf(\"/\") - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" int indexOfFirstSlash \u003d m.indexOf(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":" int indexOfSecondSlash \u003d m.indexOf(\"/\", m.indexOf(\"/\") + 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" this.from \u003d m.substring(indexOfFirstSlash + 6, indexOfSecondSlash - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":" this.by \u003d m.substring(indexOfSecondSlash + 4);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AlagappanRa"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AlagappanRa"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), from, by);","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AlagappanRa":19}},{"path":"src/main/java/mypackage/Global.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public enum Global {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" ;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":" public static final String LINE \u003d \"____________________________________________________\";","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AlagappanRa":7}},{"path":"src/main/java/mypackage/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" private Boolean isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":" private final String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":" return \"[\" + (isDone ? \"X\" : \" \") + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AlagappanRa"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AlagappanRa"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AlagappanRa"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"AlagappanRa"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AlagappanRa":23}},{"path":"src/main/java/mypackage/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AlagappanRa":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"blah","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"todo read book","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":"todo return book","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":"todo buy bread","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":"bye","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AlagappanRa":14}},{"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":"AlagappanRa"},"content":"for /r \"..\\src\\main\\java\" %%a in (*.java) do (","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin %%a","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":")","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"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":20,"author":{"gitId":"AlagappanRa"},"content":"java -classpath ..\\bin main.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"AlagappanRa":4,"-":19}}] +[{"path":"data/store.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"[T][ ] t1","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"[T][ ] t2","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":"[T][ ] t3","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AlagappanRa":4}},{"path":"src/main/java/main/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package main;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.CustomList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.Deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.Database;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.Event;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.DukeException;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.ToDo;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.CommandType;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":"import mypackage.Global;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":" private static final String chatBotName \u003d \"CHAD CCP\";","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":" private static CustomList list;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":" private static final Database database \u003d new Database();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"AlagappanRa"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AlagappanRa"},"content":" Duke dukeInstance \u003d new Duke();","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"AlagappanRa"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"AlagappanRa"},"content":" dukeInstance.greetUser();","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AlagappanRa"},"content":" database.loadOrCreateFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AlagappanRa"},"content":" list \u003d database.readData();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AlagappanRa"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"AlagappanRa"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"AlagappanRa"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"AlagappanRa"},"content":" CommandType commandType \u003d CommandType.getCommandType(command);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"AlagappanRa"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"AlagappanRa"},"content":" case BYE:","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"AlagappanRa"},"content":" dukeInstance.goodBye();","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"AlagappanRa"},"content":" scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"AlagappanRa"},"content":" return; ","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"AlagappanRa"},"content":" case LIST:","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"AlagappanRa"},"content":" list.printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"AlagappanRa"},"content":" case MARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"AlagappanRa"},"content":" list.markAsDone(command, database);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AlagappanRa"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"AlagappanRa"},"content":" case UNMARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"AlagappanRa"},"content":" int unmarkIndex \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"AlagappanRa"},"content":" list.markAsUndone(unmarkIndex, database);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"AlagappanRa"},"content":" case TODO:","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"AlagappanRa"},"content":" list.addTask(createToDoTask(command), database);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"AlagappanRa"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"AlagappanRa"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"AlagappanRa"},"content":" list.addTask(new Deadline(command.substring(9)), database);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"AlagappanRa"},"content":" case EVENT:","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"AlagappanRa"},"content":" list.addTask(new Event(command.substring(6)), database);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"AlagappanRa"},"content":" case DELETE:","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"AlagappanRa"},"content":" int deleteIndex \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"AlagappanRa"},"content":" list.deleteTask(deleteIndex, database);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"AlagappanRa"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\"));","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"AlagappanRa"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"AlagappanRa"},"content":" public void greetUser() {","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"AlagappanRa"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"AlagappanRa"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"AlagappanRa"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"AlagappanRa"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"AlagappanRa"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Hello! I\u0027m \" + Duke.chatBotName);","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"AlagappanRa"},"content":" // public void echoUserAndAddToList(String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"AlagappanRa"},"content":" // System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"AlagappanRa"},"content":" // list.add(new Task(command));","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"AlagappanRa"},"content":" // System.out.println(\"added: \" + command);","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"AlagappanRa"},"content":" // System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"AlagappanRa"},"content":" // }","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"AlagappanRa"},"content":" public static ToDo createToDoTask(String command) throws DukeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"AlagappanRa"},"content":" command.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"AlagappanRa"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"todo command must be followed by a space and a string. ERR: STRING INDEX OUT OF BOUNDS.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"AlagappanRa"},"content":" String description \u003d command.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"AlagappanRa"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"todo command must be followed by a space and a string. ERR: NO STRING.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"AlagappanRa"},"content":" return new ToDo(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"AlagappanRa"},"content":" public void goodBye() {","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":121,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"AlagappanRa":119,"-":3}},{"path":"src/main/java/mypackage/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public enum CommandType {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" BYE, ","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":" LIST, ","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":" MARK, ","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":" UNMARK, ","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":" TODO, ","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" DEADLINE, ","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":" EVENT, ","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" DELETE, ","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":" UNKNOWN;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":" public static CommandType getCommandType(String command) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AlagappanRa"},"content":" return BYE;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"AlagappanRa"},"content":" return LIST;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"AlagappanRa"},"content":" return MARK;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"AlagappanRa"},"content":" return UNMARK;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AlagappanRa"},"content":" return TODO;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"AlagappanRa"},"content":" return DEADLINE;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.startsWith(\"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"AlagappanRa"},"content":" return EVENT;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"AlagappanRa"},"content":" } else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"AlagappanRa"},"content":" return DELETE;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"AlagappanRa"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"AlagappanRa"},"content":" return UNKNOWN;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AlagappanRa":35}},{"path":"src/main/java/mypackage/CustomList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":"public class CustomList extends ArrayList\u003cTask\u003e {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":" public CustomList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" public void printList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":" for (int i \u003d 0; i \u003c this.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":" System.out.println((i + 1) + \". \" + this.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AlagappanRa"},"content":" public void markAsDone(String command, Database database, boolean... isFromDatabase) throws DukeException{ ","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AlagappanRa"},"content":" if (isFromDatabase.length \u003e 0 \u0026\u0026 isFromDatabase[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AlagappanRa"},"content":" this.get(Integer.valueOf(command.substring(5)) - 1).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AlagappanRa"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"AlagappanRa"},"content":" Integer.valueOf(command.substring(5));","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AlagappanRa"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Mark command must be followed by a space and an integer. ERR: STRING INDEX OUT OF BOUNDS.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"AlagappanRa"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Mark command must be followed by a space and an integer. ERR: NOT AN INTEGER.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"AlagappanRa"},"content":" int index \u003d Integer.valueOf(command.substring(5));","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"AlagappanRa"},"content":" if (index \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Mark command must be followed by a space and an integer. ERR: NO INTEGER.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"AlagappanRa"},"content":" this.get(index - 1).markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"AlagappanRa"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"There is no task at that index.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\" \" + this.get(index - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"AlagappanRa"},"content":" database.replaceLine(index, this.get(index - 1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"AlagappanRa"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"AlagappanRa"},"content":" public void markAsUndone(int index, Database database, boolean... isFromDatabase) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"AlagappanRa"},"content":" if (isFromDatabase.length \u003e 0 \u0026\u0026 isFromDatabase[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"AlagappanRa"},"content":" this.get(index - 1).markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"AlagappanRa"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"AlagappanRa"},"content":" this.get(index - 1).markAsUndone();","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"AlagappanRa"},"content":" database.replaceLine(index, this.get(index - 1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"AlagappanRa"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"AlagappanRa"},"content":" public void deleteTask(int index, Database database, boolean... isFromDatabase) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"AlagappanRa"},"content":" if (isFromDatabase.length \u003e 0 \u0026\u0026 isFromDatabase[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"AlagappanRa"},"content":" this.remove(index - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"AlagappanRa"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"AlagappanRa"},"content":" Task t \u003d this.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Now you have \" + Integer.toString(this.size()) + \" \" + (this.size() \u003d\u003d 1 ? \"task\" : \"tasks\") + \" in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"AlagappanRa"},"content":" database.deleteLine(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"AlagappanRa"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"AlagappanRa"},"content":" public void addTask(Task task, Database database, boolean... isFromDatabase) {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"AlagappanRa"},"content":" if (isFromDatabase.length \u003e 0 \u0026\u0026 isFromDatabase[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"AlagappanRa"},"content":" this.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"AlagappanRa"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"AlagappanRa"},"content":" this.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(\"Now you have \" + Integer.toString(this.size()) + \" \" + (this.size() \u003d\u003d 1 ? \"task\" : \"tasks\") + \" in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"AlagappanRa"},"content":" database.writeData(task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"AlagappanRa"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"AlagappanRa"},"content":" System.out.println(Global.LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AlagappanRa":120}},{"path":"src/main/java/mypackage/Database.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":"public class Database {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":" private final String PARENT_DIR \u003d \"./data\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":" private final String FILEPATH \u003d \"./data/store.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":" private File store;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AlagappanRa"},"content":" public Database() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AlagappanRa"},"content":" //This method loads the file if it exists, and creates it if it doesn\u0027t","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AlagappanRa"},"content":" public void loadOrCreateFile() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AlagappanRa"},"content":" // Create a File object for the parent directory","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AlagappanRa"},"content":" File parentDir \u003d new File(this.PARENT_DIR);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AlagappanRa"},"content":" //System.out.println(\"Parent dir \" + parentDir.getAbsolutePath());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AlagappanRa"},"content":" // Create the directory if it doesn\u0027t exist","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AlagappanRa"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AlagappanRa"},"content":" boolean dirCreated \u003d parentDir.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AlagappanRa"},"content":" if (!dirCreated) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Failed to create directory at \" + parentDir.getAbsolutePath());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AlagappanRa"},"content":" // Create a File object for the file to be created","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AlagappanRa"},"content":" File file \u003d new File(this.FILEPATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AlagappanRa"},"content":" // Create the file if it doesn\u0027t exist","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AlagappanRa"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AlagappanRa"},"content":" boolean fileCreated \u003d file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AlagappanRa"},"content":" if (!fileCreated) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Failed to create store file at \" + file.getAbsolutePath());","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AlagappanRa"},"content":" //it is guarneeted that the file exists","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"AlagappanRa"},"content":" store \u003d file;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AlagappanRa"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(FILEPATH + \" cannot be created.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"AlagappanRa"},"content":" //This should only be accessed one time at startup","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"AlagappanRa"},"content":" public CustomList readData() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"AlagappanRa"},"content":" BufferedReader br;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"AlagappanRa"},"content":" CustomList result \u003d new CustomList();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"AlagappanRa"},"content":" br \u003d new BufferedReader(new FileReader(this.store));","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"AlagappanRa"},"content":" String line;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"AlagappanRa"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"AlagappanRa"},"content":" //[T][X] read book ","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"AlagappanRa"},"content":" if (line.startsWith(\"[T]\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"AlagappanRa"},"content":" result.addTask(new ToDo(","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"AlagappanRa"},"content":" line.substring(7, line.length())), ","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"AlagappanRa"},"content":" this, ","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"AlagappanRa"},"content":" true","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"AlagappanRa"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"AlagappanRa"},"content":" if (line.substring(4, 5).equals(\"X\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"AlagappanRa"},"content":" result.get(result.size() - 1).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"AlagappanRa"},"content":" //[D][ ] return book (by: Sunday)","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"AlagappanRa"},"content":" } else if (line.startsWith(\"[D]\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"AlagappanRa"},"content":" int byIndex \u003d line.indexOf(\"(by: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"AlagappanRa"},"content":" result.addTask(new Deadline(","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"AlagappanRa"},"content":" line.substring(7, byIndex - 1), ","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"AlagappanRa"},"content":" line.substring(byIndex + 5, line.length() - 1)),","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"AlagappanRa"},"content":" this,","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"AlagappanRa"},"content":" true","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"AlagappanRa"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"AlagappanRa"},"content":" if (line.substring(4, 5).equals(\"X\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"AlagappanRa"},"content":" result.get(result.size() - 1).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"AlagappanRa"},"content":" //[E][ ] project meeting (from: Mon 2pm to: Fri 4pm)","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"AlagappanRa"},"content":" } else if (line.startsWith(\"[E]\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"AlagappanRa"},"content":" int fromIndex \u003d line.indexOf(\" (from: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"AlagappanRa"},"content":" int toIndex \u003d line.indexOf(\" to: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"AlagappanRa"},"content":" result.addTask(new Event(","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"AlagappanRa"},"content":" line.substring(7, fromIndex), ","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"AlagappanRa"},"content":" line.substring(fromIndex + 8, toIndex),","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"AlagappanRa"},"content":" line.substring(toIndex + 5, line.length() - 1)),","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"AlagappanRa"},"content":" this,","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"AlagappanRa"},"content":" true","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"AlagappanRa"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"AlagappanRa"},"content":" if (line.substring(4, 5).equals(\"X\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"AlagappanRa"},"content":" result.get(result.size() - 1).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"AlagappanRa"},"content":" br.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"AlagappanRa"},"content":" return result;","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"AlagappanRa"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"AlagappanRa"},"content":" public void writeData(String newData) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"AlagappanRa"},"content":" BufferedWriter bw;","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"AlagappanRa"},"content":" bw \u003d new BufferedWriter(new FileWriter(this.store, true)); ","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"AlagappanRa"},"content":" bw.newLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"AlagappanRa"},"content":" bw.write(newData);","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"AlagappanRa"},"content":" bw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"AlagappanRa"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"AlagappanRa"},"content":" public void deleteLine(int lineNumber) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"AlagappanRa"},"content":" List\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"AlagappanRa"},"content":" BufferedReader br \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"AlagappanRa"},"content":" BufferedWriter bw \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"AlagappanRa"},"content":" // Read file into list","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"AlagappanRa"},"content":" br \u003d new BufferedReader(new FileReader(this.store));","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"AlagappanRa"},"content":" String line;","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"AlagappanRa"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"AlagappanRa"},"content":" lines.add(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"AlagappanRa"},"content":" br.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"AlagappanRa"},"content":" // Remove the line","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"AlagappanRa"},"content":" if (lineNumber \u003c 1 || lineNumber \u003e lines.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Invalid line number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"AlagappanRa"},"content":" lines.remove(lineNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"AlagappanRa"},"content":" // Write list back to file","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"AlagappanRa"},"content":" bw \u003d new BufferedWriter(new FileWriter(store));","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"AlagappanRa"},"content":" for (int i \u003d 0; i \u003c lines.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"AlagappanRa"},"content":" bw.write(lines.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"AlagappanRa"},"content":" if (i \u003c lines.size() - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"AlagappanRa"},"content":" bw.newLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"AlagappanRa"},"content":" bw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"AlagappanRa"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"AlagappanRa"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"AlagappanRa"},"content":" if (br !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"AlagappanRa"},"content":" br.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"AlagappanRa"},"content":" if (bw !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"AlagappanRa"},"content":" bw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"AlagappanRa"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Something went wrong while closing the file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"AlagappanRa"},"content":" public void replaceLine(int lineNumber, String newData) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"AlagappanRa"},"content":" List\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"AlagappanRa"},"content":" BufferedReader br \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"AlagappanRa"},"content":" BufferedWriter bw \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"AlagappanRa"},"content":" // Read file into list","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"AlagappanRa"},"content":" br \u003d new BufferedReader(new FileReader(this.store));","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"AlagappanRa"},"content":" String line;","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"AlagappanRa"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"AlagappanRa"},"content":" lines.add(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"AlagappanRa"},"content":" br.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"AlagappanRa"},"content":" // Replace the line","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"AlagappanRa"},"content":" if (lineNumber \u003c 1 || lineNumber \u003e lines.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Invalid line number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"AlagappanRa"},"content":" lines.set(lineNumber, newData);","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"AlagappanRa"},"content":" // Write list back to file","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"AlagappanRa"},"content":" bw \u003d new BufferedWriter(new FileWriter(store));","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"AlagappanRa"},"content":" for (int i \u003d 0; i \u003c lines.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"AlagappanRa"},"content":" bw.write(lines.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"AlagappanRa"},"content":" if (i \u003c lines.size() - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"AlagappanRa"},"content":" bw.newLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"AlagappanRa"},"content":" } ","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"AlagappanRa"},"content":" bw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"AlagappanRa"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"AlagappanRa"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"AlagappanRa"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"AlagappanRa"},"content":" if (br !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"AlagappanRa"},"content":" br.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"AlagappanRa"},"content":" if (bw !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"AlagappanRa"},"content":" bw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"AlagappanRa"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"AlagappanRa"},"content":" throw new DukeException(\"Something went wrong while closing the file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AlagappanRa":210}},{"path":"src/main/java/mypackage/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" private final String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":" public Deadline(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":" super(description.substring(0, description.indexOf(\"/\") - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":" this.by \u003d description.substring(description.indexOf(\"/\") + 4);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AlagappanRa"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AlagappanRa"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AlagappanRa"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), by);","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AlagappanRa":20}},{"path":"src/main/java/mypackage/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":" return String.format(\"☹ OOPS!!! %s\", super.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AlagappanRa":12}},{"path":"src/main/java/mypackage/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" private final String to;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":" private final String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":" public Event(String m) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":" super(m.substring(0, m.indexOf(\"/\") - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" int indexOfFirstSlash \u003d m.indexOf(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":" int indexOfSecondSlash \u003d m.indexOf(\"/\", m.indexOf(\"/\") + 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" this.from \u003d m.substring(indexOfFirstSlash + 6, indexOfSecondSlash - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":" this.to \u003d m.substring(indexOfSecondSlash + 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":" public Event (String m, String from, String to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AlagappanRa"},"content":" super(m);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AlagappanRa"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AlagappanRa"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AlagappanRa"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AlagappanRa"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"AlagappanRa"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AlagappanRa":26}},{"path":"src/main/java/mypackage/Global.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public enum Global {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" ;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":" public static final String LINE \u003d \"____________________________________________________\";","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AlagappanRa":7}},{"path":"src/main/java/mypackage/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" private Boolean isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":" private final String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":" return \"[\" + (isDone ? \"X\" : \" \") + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AlagappanRa"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AlagappanRa"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AlagappanRa"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"AlagappanRa"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AlagappanRa":23}},{"path":"src/main/java/mypackage/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"package mypackage;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AlagappanRa":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AlagappanRa"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AlagappanRa"},"content":"blah","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AlagappanRa"},"content":"todo read book","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AlagappanRa"},"content":"todo return book","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AlagappanRa"},"content":"todo buy bread","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AlagappanRa"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AlagappanRa"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AlagappanRa"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AlagappanRa"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AlagappanRa"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AlagappanRa"},"content":"event project meeting /from Mon 2pm /to Fri 4pm","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AlagappanRa"},"content":"list","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AlagappanRa"},"content":"bye","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AlagappanRa":15}},{"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":"AlagappanRa"},"content":"for /r \"..\\src\\main\\java\" %%a in (*.java) do (","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AlagappanRa"},"content":" javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin %%a","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AlagappanRa"},"content":")","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"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":20,"author":{"gitId":"AlagappanRa"},"content":"java -classpath ..\\bin main.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"AlagappanRa":4,"-":19}}] diff --git a/AlagappanRa_ip_master/commits.json b/AlagappanRa_ip_master/commits.json index 131d5633..ef7439f0 100644 --- a/AlagappanRa_ip_master/commits.json +++ b/AlagappanRa_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"AlagappanRa":[{"date":"2023-08-23","commitResults":[{"hash":"7fb10af7792cf4e68ed90e7f365f0293d0060ee5","isMergeCommit":false,"messageTitle":"Tasks Completed: Level 0. Rename, Greet, Exit Level 1. Echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":6}}},{"hash":"55bb0e8fbdac69a7ef3e855b62a33095a59aef5d","isMergeCommit":false,"messageTitle":"Tasks Completed: Level 0. Rename, Greet, Exit Level 1. Echo","messageBody":"","tags":["Level-2","Level-1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b9bf836ab351b116b8770729c09b860918dd362b","isMergeCommit":false,"messageTitle":"Level 3 [COMPLETED]","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":4}}},{"hash":"8a6cffb0f189ec7156c21f9190e570439dc878b9","isMergeCommit":false,"messageTitle":"Level 4 [COMPLETED]","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":12}}},{"hash":"3e4abeb46c93dd58331e88615b032ea43e36b52b","isMergeCommit":false,"messageTitle":"Level 5 [COMPLETED]","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":1,"deletions":1},"bat":{"insertions":4,"deletions":2}}},{"hash":"6554a1692679a3e2473c51b0cc9bb9b0b8ca7e0a","isMergeCommit":false,"messageTitle":"Level 5 [COMPLETED]","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":16}}},{"hash":"9a6ee064fc4869aa1eb1309b3ea681ae39809d11","isMergeCommit":false,"messageTitle":"Level 6 [COMPLETED]","messageBody":"","tags":["Level-6","A-TextUiTesting","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"b78e91bb85881351f7efd37d3c9aeae18184bbb0","isMergeCommit":false,"messageTitle":"Reformatted code to include additional enums","messageBody":"Reformatted code to include additional enums\n","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":4},"java":{"insertions":92,"deletions":44}}}]}]},"authorFileTypeContributionMap":{"AlagappanRa":{"java":294,"md":0,"fxml":0,"sh":0,"bat":4,"gradle":0,"txt":14}},"authorContributionVariance":{"AlagappanRa":6922.3315},"authorDisplayNameMap":{"AlagappanRa":"CS2103T-T17-2 ALAG..THAN"}} +{"authorDailyContributionsMap":{"AlagappanRa":[{"date":"2023-08-23","commitResults":[{"hash":"7fb10af7792cf4e68ed90e7f365f0293d0060ee5","isMergeCommit":false,"messageTitle":"Tasks Completed: Level 0. Rename, Greet, Exit Level 1. Echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":6}}},{"hash":"55bb0e8fbdac69a7ef3e855b62a33095a59aef5d","isMergeCommit":false,"messageTitle":"Tasks Completed: Level 0. Rename, Greet, Exit Level 1. Echo","messageBody":"","tags":["Level-2","Level-1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b9bf836ab351b116b8770729c09b860918dd362b","isMergeCommit":false,"messageTitle":"Level 3 [COMPLETED]","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":4}}},{"hash":"8a6cffb0f189ec7156c21f9190e570439dc878b9","isMergeCommit":false,"messageTitle":"Level 4 [COMPLETED]","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":12}}},{"hash":"3e4abeb46c93dd58331e88615b032ea43e36b52b","isMergeCommit":false,"messageTitle":"Level 5 [COMPLETED]","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":1,"deletions":1},"bat":{"insertions":4,"deletions":2}}},{"hash":"6554a1692679a3e2473c51b0cc9bb9b0b8ca7e0a","isMergeCommit":false,"messageTitle":"Level 5 [COMPLETED]","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":16}}},{"hash":"9a6ee064fc4869aa1eb1309b3ea681ae39809d11","isMergeCommit":false,"messageTitle":"Level 6 [COMPLETED]","messageBody":"","tags":["Level-6","A-TextUiTesting","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"b78e91bb85881351f7efd37d3c9aeae18184bbb0","isMergeCommit":false,"messageTitle":"Reformatted code to include additional enums","messageBody":"Reformatted code to include additional enums\n","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":4},"java":{"insertions":92,"deletions":44}}}]},{"date":"2023-09-01","commitResults":[{"hash":"7d653c8e4dcd8cc9d1c0a2c416dc4f1bca27f9e0","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":1},"java":{"insertions":354,"deletions":65}}},{"hash":"972ff0eaf017fe07e7d5ef6843e77cdf52547bac","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AlagappanRa/branch-Level-7","messageBody":"Level-7","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"AlagappanRa":{"java":584,"md":0,"fxml":0,"sh":0,"bat":4,"gradle":0,"txt":19}},"authorContributionVariance":{"AlagappanRa":15618.623},"authorDisplayNameMap":{"AlagappanRa":"CS2103T-T17-2 ALAG..THAN"}} diff --git a/AndrewJanong_ip_master/authorship.json b/AndrewJanong_ip_master/authorship.json index f1021a46..8db5418b 100644 --- a/AndrewJanong_ip_master/authorship.json +++ b/AndrewJanong_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" mainClassName \u003d \"duke.Duke\"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" archiveFileName \u003d \"duke.jar\"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"AndrewJanong":2,"-":42}},{"path":"settings.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"include \u0027test\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AndrewJanong":2}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" * A chatbot to keep track of your tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" private static final Storage storage \u003d new Storage();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" private static final TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" private static final Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" * Sends a greeting message to the user.","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" private static void greetingMessage() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" Ui.greetUser();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" * Adds a task to the task list and sends a message of the task added.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":" * A task can be a task.ToDo, task.Deadline, or task.Event.","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" * @param command","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" * @param taskInfo","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":" private static void addTask(Command command, String taskInfo) throws DukeInvalidDateException {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" Task newTask;","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" if (command \u003d\u003d Command.TODO) {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":" newTask \u003d new ToDo(taskInfo);","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.DEADLINE) {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":" String[] deadlineInfo \u003d taskInfo.split(\" /by \");","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" newTask \u003d new Deadline(deadlineInfo[0], deadlineInfo[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":" } else { // command \u003d\u003d Command.EVENT","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"AndrewJanong"},"content":" String[] eventInfo \u003d taskInfo.split(\" /from \");","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"AndrewJanong"},"content":" String[] eventTime \u003d eventInfo[1].split(\" /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"AndrewJanong"},"content":" newTask \u003d new Event(eventInfo[0], eventTime[0], eventTime[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"AndrewJanong"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"AndrewJanong"},"content":" * Edits a task in the list.","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"AndrewJanong"},"content":" * Editing a task can be deleting, marking, or unmarking a task.","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"AndrewJanong"},"content":" * @param command","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"AndrewJanong"},"content":" * @param taskIndex","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"AndrewJanong"},"content":" private static void editTask (Command command, int taskIndex) {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"AndrewJanong"},"content":" if (command \u003d\u003d Command.DELETE) {","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"AndrewJanong"},"content":" tasks.deleteTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.MARK) {","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"AndrewJanong"},"content":" tasks.markTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.UNMARK) {","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"AndrewJanong"},"content":" tasks.unmarkTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"AndrewJanong"},"content":" * Executes single commands.","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"AndrewJanong"},"content":" * Single commands consists of: Listing all tasks, Printing goodbye message.","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"AndrewJanong"},"content":" * @param command","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"AndrewJanong"},"content":" private static void executeSingleCommand(Command command) {","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"AndrewJanong"},"content":" if (command \u003d\u003d Command.LIST) {","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(tasks.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.BYE) {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"AndrewJanong"},"content":" Ui.printExitMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"AndrewJanong"},"content":" * Runs the command from the user input.","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"AndrewJanong"},"content":" * @param inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"AndrewJanong"},"content":" * @return A boolean to stop the chatbot on \"bye\" command","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"AndrewJanong"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"AndrewJanong"},"content":" private static boolean runCommand(Command command, String[] inputs) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"AndrewJanong"},"content":" if (command \u003d\u003d Command.BYE) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"AndrewJanong"},"content":" Ui.printExitMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"AndrewJanong"},"content":" storage.writeTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"AndrewJanong"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.TODO || command \u003d\u003d Command.DEADLINE || command \u003d\u003d Command.EVENT) {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"AndrewJanong"},"content":" if (inputs.length \u003d\u003d 1 || inputs[1].equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeEmptyArgumentException(\"OOPS!!! Argument for this command is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"AndrewJanong"},"content":" if (command \u003d\u003d Command.TODO) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"AndrewJanong"},"content":" addTask(Command.TODO, inputs[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.DEADLINE) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"AndrewJanong"},"content":" addTask(Command.DEADLINE, inputs[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"AndrewJanong"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"AndrewJanong"},"content":" addTask(Command.EVENT, inputs[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.DELETE) {","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"AndrewJanong"},"content":" if (inputs.length \u003d\u003d 1 || inputs[1].equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeEmptyArgumentException(\"OOPS!!! Argument for this command is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"AndrewJanong"},"content":" if (!tasks.isValidIndex(Integer.parseInt(inputs[1]))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidIndexException(Integer.toString(tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"AndrewJanong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidIndexException(Integer.toString(tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"AndrewJanong"},"content":" editTask(Command.DELETE, Integer.parseInt(inputs[1]));","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.LIST) {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"AndrewJanong"},"content":" executeSingleCommand(Command.LIST);","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.MARK) {","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"AndrewJanong"},"content":" if (inputs.length \u003d\u003d 1 || inputs[1].equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeEmptyArgumentException(\"OOPS!!! Argument for this command is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"AndrewJanong"},"content":" if (!tasks.isValidIndex(Integer.parseInt(inputs[1]))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidIndexException(Integer.toString(tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"AndrewJanong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidIndexException(Integer.toString(tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"AndrewJanong"},"content":" editTask(Command.MARK, Integer.parseInt(inputs[1]));","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.UNMARK) {","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"AndrewJanong"},"content":" if (inputs.length \u003d\u003d 1 || inputs[1].equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeEmptyArgumentException(\"OOPS!!! Argument for this command is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"AndrewJanong"},"content":" if (!tasks.isValidIndex(Integer.parseInt(inputs[1]))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidIndexException(Integer.toString(tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"AndrewJanong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidIndexException(Integer.toString(tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"AndrewJanong"},"content":" Duke.editTask(Command.UNMARK, Integer.parseInt(inputs[1]));","lastModifiedDate":"2023-08-29"},{"lineNumber":152,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"AndrewJanong"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"AndrewJanong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"AndrewJanong"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"AndrewJanong"},"content":" Ui.greetUser();","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"AndrewJanong"},"content":" storage.getTasksFromData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"AndrewJanong"},"content":" } catch (IOException error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Shutting down...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"AndrewJanong"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"AndrewJanong"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"AndrewJanong"},"content":" String userInput \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"AndrewJanong"},"content":" Command command \u003d parser.parseInput(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"AndrewJanong"},"content":" String[] inputs \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"AndrewJanong"},"content":" if (!Duke.runCommand(command, inputs)) break;","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"AndrewJanong"},"content":" storage.writeTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"AndrewJanong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"AndrewJanong":179,"-":3}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"public enum Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" BYE,","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" TODO,","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" DEADLINE,","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" EVENT,","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":" DELETE,","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" LIST,","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" MARK,","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" UNMARK,","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"AndrewJanong":12}},{"path":"src/main/java/duke/exceptions/DukeEmptyArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Represents an exception where there are no arguments in the input","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public class DukeEmptyArgumentException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" public DukeEmptyArgumentException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":12}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Represents an exception that might happen in the chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":12}},{"path":"src/main/java/duke/exceptions/DukeInvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Represents an exception where the date of the task is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public class DukeInvalidDateException extends DukeException{","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" public DukeInvalidDateException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"AndrewJanong":12}},{"path":"src/main/java/duke/exceptions/DukeInvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Represents an exception where the index of the task is invalid.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public class DukeInvalidIndexException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" public DukeInvalidIndexException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" super(\"OOPS!!! You currently have \" + message + \" task(s). Please enter a valid index.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":12}},{"path":"src/main/java/duke/exceptions/DukeUnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Represents an exception where the command is unknown","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public class DukeUnknownCommandException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" public DukeUnknownCommandException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" super(\"OOPS!!! Sorry, but I don\u0027t think \\\"\" + message + \"\\\" is a valid command.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":12}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.DukeUnknownCommandException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" public Command parseInput(String input) throws DukeUnknownCommandException {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":" String[] inputs \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" String command \u003d inputs[0].toLowerCase();","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" return Command.BYE;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" return Command.TODO;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" return Command.DEADLINE;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" return Command.EVENT;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" return Command.DELETE;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" return Command.LIST;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" return Command.MARK;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" return Command.UNMARK;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeUnknownCommandException(command);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"AndrewJanong":32}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.DukeInvalidDateException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" public Storage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" File dataFolder \u003d new File(\"./data\");","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" if (!dataFolder.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" dataFolder.mkdir();","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" File dataFile \u003d new File(\"./data/data.txt\");","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" if (!dataFile.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" dataFile.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" } catch (IOException error) {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Something went wrong when loading tasks :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":" public void getTasksFromData(TaskList taskList) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":" File dataFile \u003d new File(\"./data/data.txt\");","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" Scanner reader \u003d new Scanner(dataFile);","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":" while (reader.hasNextLine()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" String[] currentTask \u003d reader.nextLine().split(Pattern.quote(\"|\"), 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":" String taskType \u003d currentTask[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" String[] taskInfo \u003d currentTask[1].split(Pattern.quote(\"|\"), 0);","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"AndrewJanong"},"content":" Task task;","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"AndrewJanong"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"AndrewJanong"},"content":" case \"T\":","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"AndrewJanong"},"content":" task \u003d new ToDo(taskInfo[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"AndrewJanong"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"AndrewJanong"},"content":" case \"D\":","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"AndrewJanong"},"content":" task \u003d new Deadline(taskInfo[1], taskInfo[2]);","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"AndrewJanong"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"AndrewJanong"},"content":" case \"E\":","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"AndrewJanong"},"content":" task \u003d new Event(taskInfo[1], taskInfo[2], taskInfo[3]);","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"AndrewJanong"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"AndrewJanong"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"AndrewJanong"},"content":" continue;","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"AndrewJanong"},"content":" } catch (DukeInvalidDateException error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Something went wrong when loading tasks :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"AndrewJanong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"AndrewJanong"},"content":" if (taskInfo[0].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"AndrewJanong"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"AndrewJanong"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"AndrewJanong"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"AndrewJanong"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"AndrewJanong"},"content":" reader.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"AndrewJanong"},"content":" taskList.readTasksFromStorage(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"AndrewJanong"},"content":" public void writeTasks(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"AndrewJanong"},"content":" FileWriter dataWriter \u003d new FileWriter(\"./data/data.txt\");","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"AndrewJanong"},"content":" for (int taskIndex \u003d 1; taskIndex \u003c\u003d taskList.getSize(); taskIndex++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"AndrewJanong"},"content":" dataWriter.write(taskList.getTask(taskIndex).toDataRepresentation() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"AndrewJanong"},"content":" dataWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"AndrewJanong"},"content":" } catch (IOException error) {","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Something went wrong when updating tasks :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"AndrewJanong":95}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.DukeInvalidDateException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" * Represents a task that needs to be done before a specific date/time.","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" * The end time or due date of the deadline.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" protected LocalDate endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" * A public constructor for the task.Deadline.","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" * @param description","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" * @param endTime","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" public Deadline(String description, String endTime) throws DukeInvalidDateException{","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" this.endTime \u003d LocalDate.parse(endTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" } catch (DateTimeParseException error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidDateException(\"Date must be of the form yyyy-mm-dd.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" public String toDataRepresentation() {","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" return \"D|\" + super.toDataRepresentation() + \"|\" + endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":" * A string representation of a task.Deadline.","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" * Uses an extra [D] to represent a task.Deadline and the due date.","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":" * @return the string representation of the task.Deadline","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.endTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":49}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.DukeInvalidDateException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" * Represents a task that starts at a specific date/time and ends at a specific date/time.","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" * The start time of the event.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" protected LocalDate startTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" * The end time of the event.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" protected LocalDate endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" * A public constructor for the task.Event.","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" * @param description","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" * @param startTime","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" * @param endTime","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" public Event(String description, String startTime, String endTime) throws DukeInvalidDateException {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" this.startTime \u003d LocalDate.parse(startTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":" this.endTime \u003d LocalDate.parse(endTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" } catch (DateTimeParseException error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidDateException(\"Date must be of the form yyyy-mm-dd.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":" public String toDataRepresentation() {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" return \"E|\" + super.toDataRepresentation() + \"|\" + startTime + \"|\" + endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"AndrewJanong"},"content":" * A string representation of a task.Event.","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"AndrewJanong"},"content":" * Uses an extra [E] to represent a task.Event, start time, and end time.","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"AndrewJanong"},"content":" * @return the string representation of the task.Event","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"AndrewJanong"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"AndrewJanong"},"content":" return \"[E]\" + super.toString() +","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"AndrewJanong"},"content":" \" (from: \" + this.startTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) +","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"AndrewJanong"},"content":" \" to: \" + this.endTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":59}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Represents a task.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" * The task name or description.","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" * Marks whether the task is done or not.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" * A public constructor for the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" * A task is set to be not done when first constructed.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" * @param description","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" * Gets the icon that shows whether the task is done or not.","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":" * @return The icon representing the progress of the task ([X] for done, [ ] for not done)","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"AndrewJanong"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"AndrewJanong"},"content":" return \"[X]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"AndrewJanong"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"AndrewJanong"},"content":" return \"[ ]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"AndrewJanong"},"content":" * The representation of the task to be used in the data.","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"AndrewJanong"},"content":" * @return Data representation of the task","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"AndrewJanong"},"content":" public String toDataRepresentation() {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"AndrewJanong"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"AndrewJanong"},"content":" return \"1|\" + this.description;","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"AndrewJanong"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"AndrewJanong"},"content":" return \"0|\" + this.description;","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"AndrewJanong"},"content":" * Shows the string representation of a task by its status and name.","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"AndrewJanong"},"content":" * @return the String representing the task","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"AndrewJanong"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"AndrewJanong"},"content":" return this.getStatusIcon() + \" \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":76}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" public void readTasksFromStorage(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" public Task getTask(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" return tasks.get(taskIndex - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" public boolean isValidIndex(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" return taskIndex \u003e 0 \u0026\u0026 taskIndex \u003c\u003d tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" public void addTask(Task newTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Got it. I\u0027ve added this task:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" \"\\t \" + newTask,","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":" \"Now you have \" + getSize() + \" tasks in your list. Good luck!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":" public void deleteTask(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" Task deletedTask \u003d tasks.get(taskIndex - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" tasks.remove(taskIndex - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Noted. I\u0027ve removed this task:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":" deletedTask.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" \"Now you have \" + this.tasks.size() + \" tasks in your list. Good luck!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"AndrewJanong"},"content":" public void markTask(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"AndrewJanong"},"content":" Task task \u003d this.tasks.get(taskIndex - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"AndrewJanong"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Nice job! I\u0027ve marked this task as done:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"AndrewJanong"},"content":" \"\\t \" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"AndrewJanong"},"content":" public void unmarkTask(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"AndrewJanong"},"content":" Task task \u003d this.tasks.get(taskIndex - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"AndrewJanong"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"What happened? I\u0027ve marked this task as not done yet:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"AndrewJanong"},"content":" \"\\t \" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"AndrewJanong"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"AndrewJanong"},"content":" String tasksList;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"AndrewJanong"},"content":" if (getSize() \u003e 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"AndrewJanong"},"content":" tasksList \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"AndrewJanong"},"content":" for (int taskIndex \u003d 1; taskIndex \u003c\u003d tasks.size(); taskIndex++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"AndrewJanong"},"content":" tasksList +\u003d (\"\\t \" + taskIndex + \".\" + getTask(taskIndex) + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"AndrewJanong"},"content":" tasksList +\u003d (\"\\t Keep up the good work!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"AndrewJanong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"AndrewJanong"},"content":" tasksList \u003d \"You currently have no tasks :)\";","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"AndrewJanong"},"content":" return tasksList;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"AndrewJanong":85}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Represents a task without any date/time attached to it.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" * A public constructor for the task.ToDo.","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" * @param description","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" public String toDataRepresentation() {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" return \"T|\" + super.toDataRepresentation();","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" * A string representation of a task.ToDo.","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" * Uses an extra [T] to represent a task.ToDo.","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" * @return the string representation of the task.ToDo","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":31}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" private static final String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" public static void printLines(String ...lines) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" System.out.println(\"\\t\" + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":" for (String line : lines) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" System.out.println(\"\\t \" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" System.out.println(\"\\t\" + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":" public static void greetUser() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" printLines(\"Hello I\u0027m ADJ\", \"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" public static void printExitMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" printLines(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"AndrewJanong":21}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.DukeUnknownCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" public void parseInput_listCommand_success() throws DukeUnknownCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" Command listCommand \u003d Command.LIST;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" assertEquals(parser.parseInput(\"list\"), listCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" public void parseInput_invalidCommand_errorThrown() throws DukeUnknownCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" parser.parseInput(\"help\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" fail(\"Should have thrown invalid command error\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" } catch (DukeException error) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AndrewJanong":29}},{"path":"src/test/java/duke/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" private TaskList sampleTaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" public void setSampleTaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" sampleTaskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" tasks.add(new TaskSample());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" tasks.add(new TaskSample());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" tasks.add(new TaskSample());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" sampleTaskList.readTasksFromStorage(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" public void getSize_threeTasks_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" assertEquals(sampleTaskList.getSize(), 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" public void addTask_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" sampleTaskList.addTask(new TaskSample());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" assertEquals(sampleTaskList.getSize(), 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" public void deleteTask_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" sampleTaskList.deleteTask(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":" assertEquals(sampleTaskList.getSize(), 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":" public void markTask_correctStatusIcon() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" sampleTaskList.markTask(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":" assertEquals(sampleTaskList.getTask(2).getStatusIcon(), \"[X]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AndrewJanong":47}},{"path":"src/test/java/duke/task/TaskSample.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"public class TaskSample extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" protected TaskSample() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" super(\"taskSample\");","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AndrewJanong":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"deadline QF1100 quiz /by August 25th","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"todo Read 2100 tutorial 1","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"event NUSSU CommIT interview /from August 30th 7pm /to 8pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"todo Read CS2102 notes","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"mark 6","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":"what?","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":15}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" mainClassName \u003d \"duke.Duke\"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" archiveFileName \u003d \"duke.jar\"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"AndrewJanong":2,"-":42}},{"path":"settings.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"include \u0027test\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AndrewJanong":2}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" * The Duke program implements a","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" * chatbot to keep track of your tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" private static final Storage storage \u003d new Storage();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" private static final TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" private static final Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" * Sends a greeting message to the user.","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" private static void greetingMessage() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" Ui.greetUser();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":" * Adds a task to the task list and sends a message of the task added.","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" * A task can be a ToDo, Deadline, or Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" * @param command Task command of input.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":" * @param taskInfo Info regarding the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":" private static void addTask(Command command, String taskInfo) throws DukeInvalidDateException {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" Task newTask;","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" if (command \u003d\u003d Command.TODO) {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":" newTask \u003d new ToDo(taskInfo);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.DEADLINE) {","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":" String[] deadlineInfo \u003d taskInfo.split(\" /by \");","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"AndrewJanong"},"content":" newTask \u003d new Deadline(deadlineInfo[0], deadlineInfo[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"AndrewJanong"},"content":" } else { // command \u003d\u003d Command.EVENT","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"AndrewJanong"},"content":" String[] eventInfo \u003d taskInfo.split(\" /from \");","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"AndrewJanong"},"content":" String[] eventTime \u003d eventInfo[1].split(\" /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"AndrewJanong"},"content":" newTask \u003d new Event(eventInfo[0], eventTime[0], eventTime[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"AndrewJanong"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"AndrewJanong"},"content":" * Edits a task in the list.","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"AndrewJanong"},"content":" * Editing a task can be deleting, marking, or unmarking a task.","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"AndrewJanong"},"content":" * @param command Edit command of input.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"AndrewJanong"},"content":" * @param taskIndex Index of task to edit.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"AndrewJanong"},"content":" private static void editTask (Command command, int taskIndex) {","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"AndrewJanong"},"content":" if (command \u003d\u003d Command.DELETE) {","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"AndrewJanong"},"content":" tasks.deleteTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.MARK) {","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"AndrewJanong"},"content":" tasks.markTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.UNMARK) {","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"AndrewJanong"},"content":" tasks.unmarkTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"AndrewJanong"},"content":" * Executes single commands.","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"AndrewJanong"},"content":" * Single commands consists of: Listing all tasks, Printing goodbye message.","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"AndrewJanong"},"content":" * @param command Single command of input.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"AndrewJanong"},"content":" private static void executeSingleCommand(Command command) {","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"AndrewJanong"},"content":" if (command \u003d\u003d Command.LIST) {","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(tasks.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.BYE) {","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"AndrewJanong"},"content":" Ui.printExitMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"AndrewJanong"},"content":" * Runs the command from the user input.","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"AndrewJanong"},"content":" * @param command Command of the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"AndrewJanong"},"content":" * @param inputs Arguments of the input.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"AndrewJanong"},"content":" * @return A boolean to stop the chatbot on \"bye\" command","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"AndrewJanong"},"content":" * @throws DukeException Error when executing the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"AndrewJanong"},"content":" private static boolean runCommand(Command command, String[] inputs) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"AndrewJanong"},"content":" if (command \u003d\u003d Command.BYE) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"AndrewJanong"},"content":" Ui.printExitMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"AndrewJanong"},"content":" storage.writeTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"AndrewJanong"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.TODO || command \u003d\u003d Command.DEADLINE || command \u003d\u003d Command.EVENT) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"AndrewJanong"},"content":" if (inputs.length \u003d\u003d 1 || inputs[1].equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeEmptyArgumentException(\"OOPS!!! Argument for this command is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"AndrewJanong"},"content":" if (command \u003d\u003d Command.TODO) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"AndrewJanong"},"content":" addTask(Command.TODO, inputs[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.DEADLINE) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"AndrewJanong"},"content":" addTask(Command.DEADLINE, inputs[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"AndrewJanong"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"AndrewJanong"},"content":" addTask(Command.EVENT, inputs[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.DELETE) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"AndrewJanong"},"content":" if (inputs.length \u003d\u003d 1 || inputs[1].equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeEmptyArgumentException(\"OOPS!!! Argument for this command is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"AndrewJanong"},"content":" if (!tasks.isValidIndex(Integer.parseInt(inputs[1]))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidIndexException(Integer.toString(tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"AndrewJanong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidIndexException(Integer.toString(tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"AndrewJanong"},"content":" editTask(Command.DELETE, Integer.parseInt(inputs[1]));","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.LIST) {","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"AndrewJanong"},"content":" executeSingleCommand(Command.LIST);","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.MARK) {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"AndrewJanong"},"content":" if (inputs.length \u003d\u003d 1 || inputs[1].equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeEmptyArgumentException(\"OOPS!!! Argument for this command is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"AndrewJanong"},"content":" if (!tasks.isValidIndex(Integer.parseInt(inputs[1]))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidIndexException(Integer.toString(tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"AndrewJanong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidIndexException(Integer.toString(tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"AndrewJanong"},"content":" editTask(Command.MARK, Integer.parseInt(inputs[1]));","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"AndrewJanong"},"content":" } else if (command \u003d\u003d Command.UNMARK) {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"AndrewJanong"},"content":" if (inputs.length \u003d\u003d 1 || inputs[1].equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeEmptyArgumentException(\"OOPS!!! Argument for this command is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"AndrewJanong"},"content":" if (!tasks.isValidIndex(Integer.parseInt(inputs[1]))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidIndexException(Integer.toString(tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"AndrewJanong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidIndexException(Integer.toString(tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"AndrewJanong"},"content":" Duke.editTask(Command.UNMARK, Integer.parseInt(inputs[1]));","lastModifiedDate":"2023-08-29"},{"lineNumber":158,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"AndrewJanong"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"AndrewJanong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"AndrewJanong"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"AndrewJanong"},"content":" Ui.greetUser();","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"AndrewJanong"},"content":" storage.getTasksFromData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"AndrewJanong"},"content":" } catch (IOException error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Shutting down...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"AndrewJanong"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"AndrewJanong"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"AndrewJanong"},"content":" String userInput \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"AndrewJanong"},"content":" Command command \u003d parser.parseInput(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"AndrewJanong"},"content":" String[] inputs \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"AndrewJanong"},"content":" if (!Duke.runCommand(command, inputs)) break;","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"AndrewJanong"},"content":" storage.writeTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"AndrewJanong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"AndrewJanong":185,"-":3}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"public enum Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" BYE,","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" TODO,","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" DEADLINE,","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" EVENT,","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":" DELETE,","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" LIST,","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" MARK,","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" UNMARK,","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"AndrewJanong":12}},{"path":"src/main/java/duke/exceptions/DukeEmptyArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Represents an exception where there are no arguments in the input","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public class DukeEmptyArgumentException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" public DukeEmptyArgumentException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":12}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Represents an exception that might happen in the chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":12}},{"path":"src/main/java/duke/exceptions/DukeInvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Represents an exception where the date of the task is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public class DukeInvalidDateException extends DukeException{","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" public DukeInvalidDateException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"AndrewJanong":12}},{"path":"src/main/java/duke/exceptions/DukeInvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Represents an exception where the index of the task is invalid.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public class DukeInvalidIndexException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" public DukeInvalidIndexException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" super(\"OOPS!!! You currently have \" + message + \" task(s). Please enter a valid index.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":12}},{"path":"src/main/java/duke/exceptions/DukeUnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Represents an exception where the command is unknown","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public class DukeUnknownCommandException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" public DukeUnknownCommandException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" super(\"OOPS!!! Sorry, but I don\u0027t think \\\"\" + message + \"\\\" is a valid command.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":12}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.DukeUnknownCommandException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" * Represents a parser to parse","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":" * the users\u0027 input.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":" * Parses the input of the user and returns the Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" * @param input Input of the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" * @return Command of the input.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" * @throws DukeUnknownCommandException Error when the command input is unknwon.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" public Command parseInput(String input) throws DukeUnknownCommandException {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" String[] inputs \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" String command \u003d inputs[0].toLowerCase();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" return Command.BYE;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" return Command.TODO;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" return Command.DEADLINE;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" return Command.EVENT;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" return Command.DELETE;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" return Command.LIST;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" return Command.MARK;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":" } else if (command.equals(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" return Command.UNMARK;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeUnknownCommandException(command);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"AndrewJanong":45}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.DukeInvalidDateException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" * Represents a storage to write and read data","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" * of the users\u0027 tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" * Creates a Storage object.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" * Folder and File of data will be created if have not before.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" public Storage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" File dataFolder \u003d new File(\"./data\");","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" if (!dataFolder.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" dataFolder.mkdir();","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" File dataFile \u003d new File(\"./data/data.txt\");","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" if (!dataFile.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":" dataFile.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":" } catch (IOException error) {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Something went wrong when loading tasks :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":" * Gets data from the data file and","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"AndrewJanong"},"content":" * passes it to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AndrewJanong"},"content":" * @param taskList Task list of the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"AndrewJanong"},"content":" * @throws IOException Error when reading data.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"AndrewJanong"},"content":" public void getTasksFromData(TaskList taskList) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"AndrewJanong"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"AndrewJanong"},"content":" File dataFile \u003d new File(\"./data/data.txt\");","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"AndrewJanong"},"content":" Scanner reader \u003d new Scanner(dataFile);","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"AndrewJanong"},"content":" while (reader.hasNextLine()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"AndrewJanong"},"content":" String[] currentTask \u003d reader.nextLine().split(Pattern.quote(\"|\"), 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"AndrewJanong"},"content":" String taskType \u003d currentTask[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"AndrewJanong"},"content":" String[] taskInfo \u003d currentTask[1].split(Pattern.quote(\"|\"), 0);","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"AndrewJanong"},"content":" Task task;","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"AndrewJanong"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"AndrewJanong"},"content":" case \"T\":","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"AndrewJanong"},"content":" task \u003d new ToDo(taskInfo[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"AndrewJanong"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"AndrewJanong"},"content":" case \"D\":","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"AndrewJanong"},"content":" task \u003d new Deadline(taskInfo[1], taskInfo[2]);","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"AndrewJanong"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"AndrewJanong"},"content":" case \"E\":","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"AndrewJanong"},"content":" task \u003d new Event(taskInfo[1], taskInfo[2], taskInfo[3]);","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"AndrewJanong"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"AndrewJanong"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"AndrewJanong"},"content":" continue;","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"AndrewJanong"},"content":" } catch (DukeInvalidDateException error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Something went wrong when loading tasks :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"AndrewJanong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"AndrewJanong"},"content":" if (taskInfo[0].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"AndrewJanong"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"AndrewJanong"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"AndrewJanong"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"AndrewJanong"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"AndrewJanong"},"content":" reader.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"AndrewJanong"},"content":" taskList.readTasksFromStorage(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"AndrewJanong"},"content":" * Writes to the data file the current users\u0027 tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"AndrewJanong"},"content":" * @param taskList Task list of the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"AndrewJanong"},"content":" public void writeTasks(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"AndrewJanong"},"content":" FileWriter dataWriter \u003d new FileWriter(\"./data/data.txt\");","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"AndrewJanong"},"content":" for (int taskIndex \u003d 1; taskIndex \u003c\u003d taskList.getSize(); taskIndex++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"AndrewJanong"},"content":" dataWriter.write(taskList.getTask(taskIndex).toDataRepresentation() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"AndrewJanong"},"content":" dataWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"AndrewJanong"},"content":" } catch (IOException error) {","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Something went wrong when updating tasks :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"AndrewJanong":113}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.DukeInvalidDateException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" * A class which represents","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" * a task that needs to be done before a specific date.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" /** Due date of the deadline */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" protected LocalDate endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" * Creates a Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" * @param description Description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" * @param endTime Due date of the deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" public Deadline(String description, String endTime) throws DukeInvalidDateException{","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" this.endTime \u003d LocalDate.parse(endTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" } catch (DateTimeParseException error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidDateException(\"Date must be of the form yyyy-mm-dd.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" public String toDataRepresentation() {","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" return \"D|\" + super.toDataRepresentation() + \"|\" + endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":" * Returns s string representation of a Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" * Uses an extra [D] to represent a Deadline and the due date.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" * @return the string representation of the Deadline","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"AndrewJanong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.endTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":50}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.DukeInvalidDateException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" * A class which represents","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" * a task that starts and ends at a specific date.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" /** Start time of the event */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" protected LocalDate startTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" /** End time of the event */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" protected LocalDate endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" * Creates an Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" * @param description Description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" * @param startTime Start time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" * @param endTime End time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" public Event(String description, String startTime, String endTime) throws DukeInvalidDateException {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" this.startTime \u003d LocalDate.parse(startTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" this.endTime \u003d LocalDate.parse(endTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" } catch (DateTimeParseException error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":" throw new DukeInvalidDateException(\"Date must be of the form yyyy-mm-dd.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":" public String toDataRepresentation() {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" return \"E|\" + super.toDataRepresentation() + \"|\" + startTime + \"|\" + endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":" * A string representation of an Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"AndrewJanong"},"content":" * Uses an extra [E] to represent a Event, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AndrewJanong"},"content":" * @return the string representation of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"AndrewJanong"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"AndrewJanong"},"content":" return \"[E]\" + super.toString() +","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"AndrewJanong"},"content":" \" (from: \" + this.startTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) +","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"AndrewJanong"},"content":" \" to: \" + this.endTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":58}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * An abstract class which represents a task for Duke chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" /** Task name or description */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" /** Status or progress of a task (done or not done) */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" * Creates a Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" * A task is set to be not done when first constructed.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" * @param description Description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":" * Gets the icon that represents","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" * the status of the task ([X] for done, [ ] for not done).","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" * @return The icon representing the progress of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"AndrewJanong"},"content":" return \"[X]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"AndrewJanong"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"AndrewJanong"},"content":" return \"[ ]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"AndrewJanong"},"content":" * Returns the representation of the task in data format.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"AndrewJanong"},"content":" * @return Data representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"AndrewJanong"},"content":" public String toDataRepresentation() {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"AndrewJanong"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"AndrewJanong"},"content":" return \"1|\" + this.description;","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"AndrewJanong"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"AndrewJanong"},"content":" return \"0|\" + this.description;","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"AndrewJanong"},"content":" * Returns the String representation of a task by its status and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"AndrewJanong"},"content":" * @return the String representing the task","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"AndrewJanong"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"AndrewJanong"},"content":" return this.getStatusIcon() + \" \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":77}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":" * TaskList represents the list of tasks of the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":" /** Tasks of the user */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" * Creates a TaskList object which is initially is empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" * Reads all tasks from the storage and","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" * adds them to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" * @param tasks Tasks from the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" public void readTasksFromStorage(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":" * Gets the task with a specific index.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" * @param taskIndex Index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" * @return The task with that index.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" public Task getTask(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":" return tasks.get(taskIndex - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":" * Gets the size of the current task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":" * @return Size of task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AndrewJanong"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"AndrewJanong"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"AndrewJanong"},"content":" * Checks whether an index is valid.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"AndrewJanong"},"content":" * @param taskIndex Index to be checked.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"AndrewJanong"},"content":" * @return Validity of the index.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"AndrewJanong"},"content":" public boolean isValidIndex(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"AndrewJanong"},"content":" return taskIndex \u003e 0 \u0026\u0026 taskIndex \u003c\u003d tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"AndrewJanong"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"AndrewJanong"},"content":" * Sends a message confirming the added task.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"AndrewJanong"},"content":" * @param newTask The new task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"AndrewJanong"},"content":" public void addTask(Task newTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"AndrewJanong"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Got it. I\u0027ve added this task:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"AndrewJanong"},"content":" \"\\t \" + newTask,","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"AndrewJanong"},"content":" \"Now you have \" + getSize() + \" tasks in your list. Good luck!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"AndrewJanong"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"AndrewJanong"},"content":" * Sends a message confirming the deleted task.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"AndrewJanong"},"content":" * @param taskIndex Task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"AndrewJanong"},"content":" public void deleteTask(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"AndrewJanong"},"content":" Task deletedTask \u003d tasks.get(taskIndex - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"AndrewJanong"},"content":" tasks.remove(taskIndex - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Noted. I\u0027ve removed this task:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"AndrewJanong"},"content":" deletedTask.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"AndrewJanong"},"content":" \"Now you have \" + this.tasks.size() + \" tasks in your list. Good luck!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"AndrewJanong"},"content":" * Marks a task as completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"AndrewJanong"},"content":" * @param taskIndex Index of the task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"AndrewJanong"},"content":" public void markTask(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"AndrewJanong"},"content":" Task task \u003d this.tasks.get(taskIndex - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"AndrewJanong"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"Nice job! I\u0027ve marked this task as done:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"AndrewJanong"},"content":" \"\\t \" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"AndrewJanong"},"content":" * Unmarks a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"AndrewJanong"},"content":" * @param taskIndex Index of the task to be unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"AndrewJanong"},"content":" public void unmarkTask(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"AndrewJanong"},"content":" Task task \u003d this.tasks.get(taskIndex - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"AndrewJanong"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"AndrewJanong"},"content":" Ui.printLines(\"What happened? I\u0027ve marked this task as not done yet:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"AndrewJanong"},"content":" \"\\t \" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"AndrewJanong"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"AndrewJanong"},"content":" String tasksList;","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"AndrewJanong"},"content":" if (getSize() \u003e 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"AndrewJanong"},"content":" tasksList \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"AndrewJanong"},"content":" for (int taskIndex \u003d 1; taskIndex \u003c\u003d tasks.size(); taskIndex++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"AndrewJanong"},"content":" tasksList +\u003d (\"\\t \" + taskIndex + \".\" + getTask(taskIndex) + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"AndrewJanong"},"content":" tasksList +\u003d (\"\\t Keep up the good work!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"AndrewJanong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"AndrewJanong"},"content":" tasksList \u003d \"You currently have no tasks :)\";","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"AndrewJanong"},"content":" return tasksList;","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"AndrewJanong":139}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * A class which represents","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" * a task without any date/time attached to it.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" * Creates a ToDo object.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" * @param description Description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" public String toDataRepresentation() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" return \"T|\" + super.toDataRepresentation();","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" * Returns the string representation of a ToDo.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" * Uses an extra [T] to represent a ToDo.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" * @return the string representation of the ToDo.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":34}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" * Implements the Ui of the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" * Deals with how the chatbot interacts with the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":" * @author Andrew Daniel Janong","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":" /** A line break for chatbot responses */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":" private static final String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":" * Prints all lines in a structured manner.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" * Response printed will start and end with a line break.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" * @param lines Lines to be printed.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" public static void printLines(String ...lines) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" System.out.println(\"\\t\" + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" for (String line : lines) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" System.out.println(\"\\t \" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" System.out.println(\"\\t\" + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" * Greets the user everytime chatbot opens.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" public static void greetUser() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" printLines(\"Hello I\u0027m ADJ\", \"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":" * Prints an goodbye message when the user exits.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" public static void printExitMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" printLines(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"AndrewJanong":40}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import duke.exceptions.DukeUnknownCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" public void parseInput_listCommand_success() throws DukeUnknownCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" Command listCommand \u003d Command.LIST;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" assertEquals(parser.parseInput(\"list\"), listCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" public void parseInput_invalidCommand_errorThrown() throws DukeUnknownCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" parser.parseInput(\"help\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":" fail(\"Should have thrown invalid command error\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" } catch (DukeException error) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AndrewJanong":29}},{"path":"src/test/java/duke/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":" private TaskList sampleTaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AndrewJanong"},"content":" public void setSampleTaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AndrewJanong"},"content":" sampleTaskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AndrewJanong"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AndrewJanong"},"content":" tasks.add(new TaskSample());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AndrewJanong"},"content":" tasks.add(new TaskSample());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AndrewJanong"},"content":" tasks.add(new TaskSample());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AndrewJanong"},"content":" sampleTaskList.readTasksFromStorage(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AndrewJanong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AndrewJanong"},"content":" public void getSize_threeTasks_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AndrewJanong"},"content":" assertEquals(sampleTaskList.getSize(), 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AndrewJanong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AndrewJanong"},"content":" public void addTask_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AndrewJanong"},"content":" sampleTaskList.addTask(new TaskSample());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AndrewJanong"},"content":" assertEquals(sampleTaskList.getSize(), 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AndrewJanong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AndrewJanong"},"content":" public void deleteTask_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AndrewJanong"},"content":" sampleTaskList.deleteTask(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AndrewJanong"},"content":" assertEquals(sampleTaskList.getSize(), 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AndrewJanong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AndrewJanong"},"content":" public void markTask_correctStatusIcon() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AndrewJanong"},"content":" sampleTaskList.markTask(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AndrewJanong"},"content":" assertEquals(sampleTaskList.getTask(2).getStatusIcon(), \"[X]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AndrewJanong":47}},{"path":"src/test/java/duke/task/TaskSample.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"public class TaskSample extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":" protected TaskSample() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":" super(\"taskSample\");","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AndrewJanong":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AndrewJanong"},"content":"deadline QF1100 quiz /by August 25th","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AndrewJanong"},"content":"todo Read 2100 tutorial 1","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"AndrewJanong"},"content":"event NUSSU CommIT interview /from August 30th 7pm /to 8pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AndrewJanong"},"content":"todo Read CS2102 notes","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AndrewJanong"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AndrewJanong"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AndrewJanong"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AndrewJanong"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AndrewJanong"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AndrewJanong"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AndrewJanong"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AndrewJanong"},"content":"mark 6","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AndrewJanong"},"content":"what?","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AndrewJanong"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AndrewJanong"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AndrewJanong":15}}] diff --git a/AndrewJanong_ip_master/commits.json b/AndrewJanong_ip_master/commits.json index b74b131f..b00309de 100644 --- a/AndrewJanong_ip_master/commits.json +++ b/AndrewJanong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"AndrewJanong":[{"date":"2023-08-24","commitResults":[{"hash":"2f3425b57a4640422880121f27f95cde9cb9ae20","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"2194c8c219b15a4c165f46d498f5d7df49a84bd8","isMergeCommit":false,"messageTitle":"Echo feature added","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":6}}},{"hash":"51a2082f19b514081bf245a58529938db1cfa75a","isMergeCommit":false,"messageTitle":"Add, List feature added","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":2}}},{"hash":"d175a96dc84ba70336ba541fbc7597c88af3d907","isMergeCommit":false,"messageTitle":"Mark as Done feature added","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":18}}},{"hash":"08d92c962148343c99eab034b36032d013eba718","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines feature added","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":219,"deletions":43}}},{"hash":"d96418c1b66a4ee59bd6927c631cee9f3b88d863","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"7ea4799ba4b978f16f5d2ec2a3a693cbe7964b6a","isMergeCommit":false,"messageTitle":"Handle Errors by adding Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":104,"deletions":29}}},{"hash":"ecb49b65e2ac86832350e6c3072a518658a53001","isMergeCommit":false,"messageTitle":"Delete feature added","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":29,"deletions":3}}}]},{"date":"2023-08-29","commitResults":[{"hash":"10312716601687e52993307a4edf7e501ee4b243","isMergeCommit":false,"messageTitle":"Used Enums and improved File Management","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":66}}},{"hash":"b60e74dbce0803331697ac7ffa65e6859fa04bb5","isMergeCommit":false,"messageTitle":"Save feature added","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":203,"deletions":37}}}]},{"date":"2023-08-31","commitResults":[{"hash":"9408b1cd6ad4d06bcca03345c4f385d538fef5f7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"d8640e91786558a981bff3aa128b31b46d0f8882","isMergeCommit":false,"messageTitle":"Dates and Times simple features added","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":27}}},{"hash":"f2e9652d044c45257c544e1a4956c1bb56c63d27","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"137bc568f5eb890a63007b928b16481ff5b27a01","isMergeCommit":false,"messageTitle":"Ui class added","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":60}}},{"hash":"fbecf6f48fd432f539216ef75dffb4a968d3ceb9","isMergeCommit":false,"messageTitle":"Added TaskList class and modified Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":97}}},{"hash":"08f5c424d60a596877233f6a1405723b7153b675","isMergeCommit":false,"messageTitle":"Added Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":21}}},{"hash":"2f637308d2209bd49591ce0cbb11b0376b5cafd5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"a07b4d824a2c8a0e6397761fa7126336c7df32db","isMergeCommit":false,"messageTitle":"Put all classes in packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":33}}},{"hash":"f5770048a86caa933045bfd7707f9f0040e5d81a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"b05915f50f193a64cf4ce5b1f53ee5552a27df83","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"9f336b0ecb652275e7c91cfa15b58bd584bac296","isMergeCommit":false,"messageTitle":"Added TaskList tests","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":0},"java":{"insertions":54,"deletions":0}}},{"hash":"abb33d98a9f1fe1720cf437407a2904bd6c3b2f9","isMergeCommit":false,"messageTitle":"Added Parser tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":0}}},{"hash":"7010795425fbc144de5b9b5ffed8cc657ae4529e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"68a455279cdb14add8def9f6bef9737cd14190b3","isMergeCommit":false,"messageTitle":"Setup JAR file and fix data.txt creation bug","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":0},"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"AndrewJanong":{"java":782,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":4,"txt":15}},"authorContributionVariance":{"AndrewJanong":46898.695},"authorDisplayNameMap":{"AndrewJanong":"CS2103T-W16-1 ANDR..NONG"}} +{"authorDailyContributionsMap":{"AndrewJanong":[{"date":"2023-08-24","commitResults":[{"hash":"2f3425b57a4640422880121f27f95cde9cb9ae20","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"2194c8c219b15a4c165f46d498f5d7df49a84bd8","isMergeCommit":false,"messageTitle":"Echo feature added","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":6}}},{"hash":"51a2082f19b514081bf245a58529938db1cfa75a","isMergeCommit":false,"messageTitle":"Add, List feature added","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":2}}},{"hash":"d175a96dc84ba70336ba541fbc7597c88af3d907","isMergeCommit":false,"messageTitle":"Mark as Done feature added","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":18}}},{"hash":"08d92c962148343c99eab034b36032d013eba718","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines feature added","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":219,"deletions":43}}},{"hash":"d96418c1b66a4ee59bd6927c631cee9f3b88d863","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"7ea4799ba4b978f16f5d2ec2a3a693cbe7964b6a","isMergeCommit":false,"messageTitle":"Handle Errors by adding Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":104,"deletions":29}}},{"hash":"ecb49b65e2ac86832350e6c3072a518658a53001","isMergeCommit":false,"messageTitle":"Delete feature added","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":29,"deletions":3}}}]},{"date":"2023-08-29","commitResults":[{"hash":"10312716601687e52993307a4edf7e501ee4b243","isMergeCommit":false,"messageTitle":"Used Enums and improved File Management","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":66}}},{"hash":"b60e74dbce0803331697ac7ffa65e6859fa04bb5","isMergeCommit":false,"messageTitle":"Save feature added","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":203,"deletions":37}}}]},{"date":"2023-08-31","commitResults":[{"hash":"9408b1cd6ad4d06bcca03345c4f385d538fef5f7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"d8640e91786558a981bff3aa128b31b46d0f8882","isMergeCommit":false,"messageTitle":"Dates and Times simple features added","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":27}}},{"hash":"f2e9652d044c45257c544e1a4956c1bb56c63d27","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"137bc568f5eb890a63007b928b16481ff5b27a01","isMergeCommit":false,"messageTitle":"Ui class added","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":60}}},{"hash":"fbecf6f48fd432f539216ef75dffb4a968d3ceb9","isMergeCommit":false,"messageTitle":"Added TaskList class and modified Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":97}}},{"hash":"08f5c424d60a596877233f6a1405723b7153b675","isMergeCommit":false,"messageTitle":"Added Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":21}}},{"hash":"2f637308d2209bd49591ce0cbb11b0376b5cafd5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"a07b4d824a2c8a0e6397761fa7126336c7df32db","isMergeCommit":false,"messageTitle":"Put all classes in packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":33}}},{"hash":"f5770048a86caa933045bfd7707f9f0040e5d81a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"b05915f50f193a64cf4ce5b1f53ee5552a27df83","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"9f336b0ecb652275e7c91cfa15b58bd584bac296","isMergeCommit":false,"messageTitle":"Added TaskList tests","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":0},"java":{"insertions":54,"deletions":0}}},{"hash":"abb33d98a9f1fe1720cf437407a2904bd6c3b2f9","isMergeCommit":false,"messageTitle":"Added Parser tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":0}}},{"hash":"7010795425fbc144de5b9b5ffed8cc657ae4529e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"68a455279cdb14add8def9f6bef9737cd14190b3","isMergeCommit":false,"messageTitle":"Setup JAR file and fix data.txt creation bug","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"76bc163ea38c4449f616184234e077ef79d64fcd","isMergeCommit":false,"messageTitle":"Added JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":171,"deletions":57}}},{"hash":"a9a7a64fd5f5f9d998b606940963771061397ed3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"AndrewJanong":{"java":896,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":4,"txt":15}},"authorContributionVariance":{"AndrewJanong":49397.57},"authorDisplayNameMap":{"AndrewJanong":"CS2103T-W16-1 ANDR..NONG"}} diff --git a/AprupKale_ip_master/authorship.json b/AprupKale_ip_master/authorship.json index d1fddf02..ed0422a5 100644 --- a/AprupKale_ip_master/authorship.json +++ b/AprupKale_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"AprupKale":2,"-":22}},{"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":"AprupKale"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"mainClassName \u003d \u0027duke.Duke\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"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":"AprupKale"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-30"},{"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":"AprupKale"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"AprupKale":5,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":" public static final DateTimeFormatter TIME_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy - HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" Duke max \u003d new Duke(\"data/duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" max.run();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" this.ui.greet();;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" this.ui.getUserInput(this.taskList, this.storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" System.out.println(\"\\n\" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" } finally {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" this.ui.exit();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"AprupKale":31,"-":3}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeDateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" public Task getTask(String userInput) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" Task add;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" add \u003d parseTodo(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" add \u003d parseDeadline(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" add \u003d parseEvent(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" return add;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" public Todo parseTodo(String userInput) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" String description \u003d userInput.substring(userInput.indexOf(\u0027 \u0027) + 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" if (description.isEmpty() || description.equals(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" throw new DukeParseException(\"todo\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" return new Todo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" public Deadline parseDeadline(String userInput) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" String description \u003d userInput.substring(userInput.indexOf(\u0027 \u0027) + 1, userInput.indexOf(\u0027/\u0027) - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" String by \u003d userInput.substring(userInput.indexOf(\"/by\") + 4);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" return new Deadline(description, LocalDateTime.parse(by, Duke.TIME_FORMAT));","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" throw new DukeParseException(\"deadline\");","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" throw new DukeDateTimeParseException();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" public Event parseEvent(String userInput) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":" String description \u003d userInput.substring(userInput.indexOf(\u0027 \u0027) + 1, userInput.indexOf(\u0027/\u0027) - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":" String from \u003d userInput.substring(userInput.indexOf(\"/from\") + 6, userInput.indexOf(\"/to\") - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":" String to \u003d userInput.substring(userInput.indexOf(\"/to\") + 4);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":" return new Event(description, LocalDateTime.parse(from, Duke.TIME_FORMAT),","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(to, Duke.TIME_FORMAT));","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":" throw new DukeParseException(\"event\");","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":" throw new DukeDateTimeParseException();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":65}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" public TaskList readFromFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" File f \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" if (line \u003d\u003d null || line.equals(\"\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" String[] params \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" boolean isDone \u003d params[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" switch (params[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" list.addToList(new Todo(params[2], isDone));","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" list.addToList(new Deadline(params[2], isDone, LocalDateTime.parse(params[3], Duke.TIME_FORMAT)));","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" list.addToList(new Event(params[2], isDone, LocalDateTime.parse(params[3], Duke.TIME_FORMAT),","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(params[4], Duke.TIME_FORMAT)));","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":" isDone \u003d params[0].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" list.addToList(new Task(params[1].trim(), isDone));","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":" s.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":" System.out.println(\"\\n\" + \"OOPS!!! Could not find the file \" + this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":" finally {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":" return list;","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"AprupKale"},"content":" public void writeToFile(TaskList list) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"AprupKale"},"content":" FileWriter fw \u003d new FileWriter(\"data/duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"AprupKale"},"content":" StringBuffer write \u003d new StringBuffer(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"AprupKale"},"content":" for (int i \u003d 0; i \u003c list.getNumberOfTasks(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"AprupKale"},"content":" write.append(list.getTaskAt(i).getTextRepresentation() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"AprupKale"},"content":" fw.write(write.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"AprupKale"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"AprupKale"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"AprupKale"},"content":" System.out.println(\"\\n\" + \"OOPS!!! Could not find the file \" + this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"AprupKale"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"AprupKale"},"content":" System.out.println(\"\\n\" + \"OOPS!!! \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":82}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" public static TaskList of(Task ... args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" for (Task task: args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" return taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" public void addToList(Task s) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" this.list.add(s);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" public Task getTaskAt(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" return this.list.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" public int getNumberOfTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" return this.list.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" public void deleteTaskAt(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" this.list.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" s.append(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" for (int i \u003d 0; i \u003c this.list.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" s.append((i + 1) + \".\" + this.list.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" if (i \u003c this.list.size() - 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" s.append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" return s.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":" } else if (!(o instanceof TaskList)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":" TaskList taskList \u003d (TaskList) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" if (taskList.getNumberOfTasks() \u003d\u003d this.getNumberOfTasks()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":" for (int i \u003d 0; i \u003c this.getNumberOfTasks(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":" if (!(taskList.getTaskAt(i).equals(this.getTaskAt(i)))) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"AprupKale"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":71}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeIndexOutOfBoundsException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" public void greet() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":" display(\"Hello! I\u0027m Max\\n\" + \"What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" public void exit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" display(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" public void getUserInput(TaskList taskList, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" taskList \u003d storage.readFromFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" while (true) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" String userInput \u003d sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" display(taskList.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" // get index by splitting user input and get task at that index from list","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" if (index \u003c 1 || index \u003e taskList.getNumberOfTasks()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" throw new DukeIndexOutOfBoundsException(\"marked\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" Task toBeMarked \u003d taskList.getTaskAt(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" toBeMarked.mark();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" display(\"Nice! I\u0027ve marked this task as done:\\n\" + toBeMarked.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" // get index by splitting user input and get task at that index from list","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" if (index \u003c 1 || index \u003e taskList.getNumberOfTasks()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" throw new DukeIndexOutOfBoundsException(\"unmarked\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" Task toBeUnmarked \u003d taskList.getTaskAt(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" toBeUnmarked.unmark();","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":" display(\"OK, I\u0027ve marked this task as not done yet:\\n\" + toBeUnmarked.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":" if (index \u003c 1 || index \u003e taskList.getNumberOfTasks()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":" throw new DukeIndexOutOfBoundsException(\"deleted\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":" Task toBeDeleted \u003d taskList.getTaskAt(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" taskList.deleteTaskAt(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":" display(\"Noted. I\u0027ve removed this task:\\n\" + toBeDeleted.toString()","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":" + \"\\nNow you have \" + taskList.getNumberOfTasks() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"AprupKale"},"content":" Task add \u003d parser.getTask(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(add);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"AprupKale"},"content":" display(\"Got it. I\u0027ve added this task:\\n\" + add.toString()","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"AprupKale"},"content":" + \"\\nNow you have \" + taskList.getNumberOfTasks() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"AprupKale"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"AprupKale"},"content":" throw new DukeException(\"OOPS!!! Could not add task to the list\");","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"AprupKale"},"content":" storage.writeToFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"AprupKale"},"content":" public static void display(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"AprupKale"},"content":" lines();","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"AprupKale"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"AprupKale"},"content":" lines();","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"AprupKale"},"content":" public static void lines() {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"AprupKale"},"content":" System.out.println(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"AprupKale"},"content":" for (int i \u003d 0; i \u003c 50; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"AprupKale"},"content":" System.out.print(\"-\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"AprupKale"},"content":" System.out.println(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":90}},{"path":"src/main/java/duke/exceptions/DukeDateTimeParseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class DukeDateTimeParseException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":" public DukeDateTimeParseException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" super(\"OOPS!!! Date and Time format does not match dd mmm yyyy - hh:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":7}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class DukeException extends RuntimeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AprupKale":7}},{"path":"src/main/java/duke/exceptions/DukeIndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class DukeIndexOutOfBoundsException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":" public DukeIndexOutOfBoundsException(String action) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" super(\"OOPS!!! Index of task to be \" + action + \" is out of bounds\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":7}},{"path":"src/main/java/duke/exceptions/DukeParseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class DukeParseException extends DukeException{","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":" public DukeParseException(String task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" super(\"OOPS!!! Missing parameters in \" + task);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":7}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.Duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" public Deadline(String description, boolean isDone, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" public String getTextRepresentation() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" return \"D | \" + super.getTextRepresentation() + \" | \" + this.by.format(Duke.TIME_FORMAT);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(Duke.TIME_FORMAT) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" } else if (!(o instanceof Deadline)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" Deadline deadline \u003d (Deadline) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" return deadline.by.equals(this.by)","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 deadline.description.equals(this.description)","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 deadline.isDone \u003d\u003d this.isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AprupKale":42}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.Duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" public Event(String description, boolean isDone, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" public String getTextRepresentation() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" return \"E | \" + super.getTextRepresentation() + \" | \" + this.from.format(Duke.TIME_FORMAT) + \" | \"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" + this.to.format(Duke.TIME_FORMAT);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(Duke.TIME_FORMAT)","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" + \" to: \" + this.to.format(Duke.TIME_FORMAT) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" } else if (!(o instanceof Event)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" Event event \u003d (Event) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" return event.from.equals(this.from)","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 event.to.equals(this.to)","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 event.description.equals(this.description)","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 event.isDone \u003d\u003d this.isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AprupKale":49}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" public int getStatusNumerical() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" return (this.isDone ? 1 : 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" public String getTextRepresentation() {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" return this.getStatusNumerical() + \" | \" + this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" } else if (!(o instanceof Task)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" Task task \u003d (Task) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":" return task.description.equals(this.description)","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 task.isDone \u003d\u003d this.isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AprupKale":54}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":" public String getTextRepresentation() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" return \"T | \" + super.getTextRepresentation();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" } else if (!(o instanceof Todo)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" Todo todo \u003d (Todo) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" return todo.description.equals(this.description)","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 todo.isDone \u003d\u003d this.isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AprupKale":34}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" private static final Parser PARSER \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" public void parseTodo_validInput_expectedOutcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" assertEquals(new Todo(\"read book\"), PARSER.parseTodo(\"todo read book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" public void parseTodo_missingParameters_throwException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" assertEquals(new Todo(\"read book\"), PARSER.parseTodo(\"todo\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" } catch (DukeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" assertEquals(\"OOPS!!! Missing parameters in todo\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" public void parseDeadline_validInput_expectedOutcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" assertEquals(new Deadline(\"return book\",","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"01 Sep 2023 - 16:00\", Duke.TIME_FORMAT)),","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" PARSER.parseDeadline(\"deadline return book /by 01 Sep 2023 - 16:00\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" public void parseDeadline_missingParameters_throwException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" assertEquals(new Deadline(\"return book\",","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"01 Sep 2023 - 16:00\", Duke.TIME_FORMAT)),","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" PARSER.parseDeadline(\"deadline return book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" } catch (DukeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" assertEquals(\"OOPS!!! Missing parameters in deadline\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" public void parseEvent_validInput_expectedOutcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":" assertEquals(new Event(\"project meeting\",","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"06 Aug 2023 - 14:00\", Duke.TIME_FORMAT),","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"06 Aug 2023 - 16:00\", Duke.TIME_FORMAT)),","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":" PARSER.parseEvent(\"event project meeting /from 06 Aug 2023 - 14:00 /to 06 Aug 2023 - 16:00\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":" public void parseEvent_missingParameters_throwException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":" assertEquals(new Event(\"project meeting\",","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"06 Aug 2023 - 14:00\", Duke.TIME_FORMAT),","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"06 Aug 2023 - 16:00\", Duke.TIME_FORMAT)),","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"AprupKale"},"content":" PARSER.parseEvent(\"event project meeting /from 06 Aug 2023 - 14:00\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"AprupKale"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"AprupKale"},"content":" } catch (DukeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"AprupKale"},"content":" assertEquals(\"OOPS!!! Missing parameters in event\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AprupKale":71}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":" private static final Todo TODO \u003d new Todo(\"read book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" private static final Deadline DEADLINE \u003d new Deadline(\"return book\",","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"01 Sep 2023 - 16:00\", Duke.TIME_FORMAT));","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" private static final Event EVENT \u003d new Event(\"project meeting\",","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"06 Aug 2023 - 14:00\", Duke.TIME_FORMAT),","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"06 Aug 2023 - 16:00\", Duke.TIME_FORMAT));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" private static final TaskList TASK_LIST \u003d TaskList.of(TODO, DEADLINE, EVENT);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" public void addToList_addTask_addSuccessfully() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(TODO);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(DEADLINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(EVENT);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" assertEquals(TASK_LIST, taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" public void getTaskAt_correctIndex_getSuccessfully() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" assertEquals(TODO, TASK_LIST.getTaskAt(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" assertEquals(DEADLINE, TASK_LIST.getTaskAt(1));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" assertEquals(EVENT, TASK_LIST.getTaskAt(2));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" public void deleteTaskAt_correctIndex_deleteSuccessfully() {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(TODO);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(DEADLINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(EVENT);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(new Todo(\"play tennis\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" taskList.deleteTaskAt(3);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" assertEquals(TASK_LIST, taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" public void getNumberOfTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":" assertEquals(3, TASK_LIST.getNumberOfTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AprupKale":52}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"deadline return book /by 06 Jun 2023 - 1600","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"event project meeting /from 06 Aug 2023 - 1400 /to 06 Aug 2023 - 1600","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"todo join sports club","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"deadline return another book /by 02 Sep 2023 - 1600","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":"event another project meeting /from 30 Aug 2023 - 2100 /to 30 Aug 2023 - 2200","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AprupKale":11}},{"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":"AprupKale"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"AprupKale":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"AprupKale":2,"-":22}},{"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":"AprupKale"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"mainClassName \u003d \u0027duke.Duke\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"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":"AprupKale"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"AprupKale":9,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":" /** Time format for the Max bot */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" public static final DateTimeFormatter TIME_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy - HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":" /** Ui object to interact with user */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":" /** TaskList object to store tasks */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" /** Storage object to interact with data file(s) */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" * Constructs a bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" * @param filePath Path of data file from root.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" * Initializes the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" * @param args Arguments to main.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" Duke max \u003d new Duke(\"data/duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" max.run();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" * Runs the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" this.ui.greet();;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" this.ui.getUserInput(this.taskList, this.storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" System.out.println(\"\\n\" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" } finally {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" this.ui.exit();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"AprupKale":48,"-":3}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeDateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" * Converts String input to Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" * @param userInput User input in String format.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" * @return Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" * @throws DukeException If error is encountered while parsing.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" public Task getTask(String userInput) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" Task add;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" add \u003d parseTodo(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" add \u003d parseDeadline(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" add \u003d parseEvent(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" return add;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" * Converts String input to Todo object.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" * @param userInput User input in String format.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" * @return Todo object.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" * @throws DukeParseException If error is encountered while parsing.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" public Todo parseTodo(String userInput) throws DukeParseException {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" String description \u003d userInput.substring(userInput.indexOf(\u0027 \u0027) + 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" if (description.isEmpty() || description.equals(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" throw new DukeParseException(\"todo\");","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" return new Todo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":" * Converts String input to Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":" * @param userInput User input in String format.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" * @return Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":" * @throws DukeParseException If error is encountered while parsing.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":" public Deadline parseDeadline(String userInput) throws DukeParseException {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"AprupKale"},"content":" String description \u003d userInput.substring(userInput.indexOf(\u0027 \u0027) + 1, userInput.indexOf(\u0027/\u0027) - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"AprupKale"},"content":" String by \u003d userInput.substring(userInput.indexOf(\"/by\") + 4);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"AprupKale"},"content":" return new Deadline(description, LocalDateTime.parse(by, Duke.TIME_FORMAT));","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"AprupKale"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"AprupKale"},"content":" throw new DukeParseException(\"deadline\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"AprupKale"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"AprupKale"},"content":" throw new DukeDateTimeParseException();","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"AprupKale"},"content":" * Converts String input to Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"AprupKale"},"content":" * @param userInput User input in String format.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"AprupKale"},"content":" * @return Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"AprupKale"},"content":" * @throws DukeParseException If error is encountered while parsing.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"AprupKale"},"content":" public Event parseEvent(String userInput) throws DukeParseException {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"AprupKale"},"content":" String description \u003d userInput.substring(userInput.indexOf(\u0027 \u0027) + 1, userInput.indexOf(\u0027/\u0027) - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"AprupKale"},"content":" String from \u003d userInput.substring(userInput.indexOf(\"/from\") + 6, userInput.indexOf(\"/to\") - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"AprupKale"},"content":" String to \u003d userInput.substring(userInput.indexOf(\"/to\") + 4);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"AprupKale"},"content":" return new Event(description, LocalDateTime.parse(from, Duke.TIME_FORMAT),","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(to, Duke.TIME_FORMAT));","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"AprupKale"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"AprupKale"},"content":" throw new DukeParseException(\"event\");","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"AprupKale"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"AprupKale"},"content":" throw new DukeDateTimeParseException();","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"AprupKale"},"content":" * Returns task list filtered using the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"AprupKale"},"content":" * @param userInput User input in String format.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"AprupKale"},"content":" * @param taskList TaskList to filter.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"AprupKale"},"content":" * @return Filtered TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"AprupKale"},"content":" public TaskList getTaskList(String userInput, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"AprupKale"},"content":" TaskList filtered \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"AprupKale"},"content":" String keyword \u003d userInput.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"AprupKale"},"content":" for (int i \u003d 0; i \u003c taskList.getNumberOfTasks(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"AprupKale"},"content":" if (taskList.getTaskAt(i).containsKeyword(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"AprupKale"},"content":" filtered.addToList(taskList.getTaskAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"AprupKale"},"content":" return filtered;","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":113}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeFileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" /** File path of data file */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" * Constructs a Storage object.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" * @param filePath path of data file from root.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" * Reads list of tasks from file.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" * @return TaskList object.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" * @throws DukeFileNotFoundException If file is not found at filePath.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" public TaskList readFromFile() throws DukeFileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" File f \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" if (line \u003d\u003d null || line.equals(\"\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" String[] params \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" boolean isDone \u003d params[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" switch (params[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" list.addToList(new Todo(params[2], isDone));","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":" list.addToList(new Deadline(params[2], isDone, LocalDateTime.parse(params[3], Duke.TIME_FORMAT)));","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" list.addToList(new Event(params[2], isDone, LocalDateTime.parse(params[3], Duke.TIME_FORMAT),","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(params[4], Duke.TIME_FORMAT)));","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"AprupKale"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"AprupKale"},"content":" isDone \u003d params[0].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"AprupKale"},"content":" list.addToList(new Task(params[1].trim(), isDone));","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"AprupKale"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"AprupKale"},"content":" s.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"AprupKale"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"AprupKale"},"content":" System.out.println(\"\\n\" + \"OOPS!!! Could not find the file \" + this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"AprupKale"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"AprupKale"},"content":" throw new DukeFileNotFoundException(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"AprupKale"},"content":" * Writes list of tasks to file.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"AprupKale"},"content":" * @param list TaskList object having a list of Tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"AprupKale"},"content":" * @throws DukeFileNotFoundException If file is not found at filePath.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"AprupKale"},"content":" public void writeToFile(TaskList list) throws DukeFileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"AprupKale"},"content":" FileWriter fw \u003d new FileWriter(\"data/duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"AprupKale"},"content":" StringBuffer write \u003d new StringBuffer(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"AprupKale"},"content":" for (int i \u003d 0; i \u003c list.getNumberOfTasks(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"AprupKale"},"content":" write.append(list.getTaskAt(i).getTextRepresentation() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"AprupKale"},"content":" fw.write(write.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"AprupKale"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"AprupKale"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"AprupKale"},"content":" throw new DukeFileNotFoundException(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"AprupKale"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"AprupKale"},"content":" System.out.println(\"\\n\" + \"OOPS!!! \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":101}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":" /** List of tasks */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":" * Constructs a TaskList object.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" * Returns a list of tasks with tasks passed as arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" * @param args Tasks to be added to the TaskList object.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" * @return TaskList object.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" public static TaskList of(Task ... args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" for (Task task: args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" return taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" * Adds task to list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" * @param s Task to add to the TaskList object.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" public void addToList(Task s) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" this.list.add(s);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" * Returns task at specific index.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" * @param index Index from which Task is to be obtained.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" * @return Task object at index in the TaskList object.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" public Task getTaskAt(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" return this.list.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":" * Returns number of tasks in the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":" * @return Number of tasks in the TaskList object.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":" public int getNumberOfTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":" return this.list.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":" * Deletes task at specific index.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"AprupKale"},"content":" * @param index Index from which Task is to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"AprupKale"},"content":" public void deleteTaskAt(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"AprupKale"},"content":" this.list.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"AprupKale"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"AprupKale"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"AprupKale"},"content":" for (int i \u003d 0; i \u003c this.list.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"AprupKale"},"content":" s.append((i + 1) + \".\" + this.list.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"AprupKale"},"content":" if (i \u003c this.list.size() - 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"AprupKale"},"content":" s.append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"AprupKale"},"content":" return s.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"AprupKale"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"AprupKale"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"AprupKale"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"AprupKale"},"content":" } else if (!(o instanceof TaskList)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"AprupKale"},"content":" TaskList taskList \u003d (TaskList) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"AprupKale"},"content":" if (taskList.getNumberOfTasks() \u003d\u003d this.getNumberOfTasks()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"AprupKale"},"content":" for (int i \u003d 0; i \u003c this.getNumberOfTasks(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"AprupKale"},"content":" if (!(taskList.getTaskAt(i).equals(this.getTaskAt(i)))) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"AprupKale"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":102}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeIndexOutOfBoundsException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" * Displays greeting message.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" public void greet() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" display(\"Hello! I\u0027m Max\\n\" + \"What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" * Displays exit message.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" public void exit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" display(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" * Gets user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" * @param taskList TaskList object with list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" * @param storage Storage object to interact with data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" * @throws DukeException If any exception is encountered.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" public void getUserInput(TaskList taskList, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" taskList \u003d storage.readFromFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" while (true) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" String userInput \u003d sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" display(\"Here are the tasks in your list:\\n\" + taskList.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" // get index by splitting user input and get task at that index from list","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" if (index \u003c 1 || index \u003e taskList.getNumberOfTasks()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" throw new DukeIndexOutOfBoundsException(\"marked\");","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" Task toBeMarked \u003d taskList.getTaskAt(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" toBeMarked.mark();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":" display(\"Nice! I\u0027ve marked this task as done:\\n\" + toBeMarked.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":" // get index by splitting user input and get task at that index from list","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":" if (index \u003c 1 || index \u003e taskList.getNumberOfTasks()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" throw new DukeIndexOutOfBoundsException(\"unmarked\");","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":" Task toBeUnmarked \u003d taskList.getTaskAt(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"AprupKale"},"content":" toBeUnmarked.unmark();","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"AprupKale"},"content":" display(\"OK, I\u0027ve marked this task as not done yet:\\n\" + toBeUnmarked.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"AprupKale"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"AprupKale"},"content":" if (index \u003c 1 || index \u003e taskList.getNumberOfTasks()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"AprupKale"},"content":" throw new DukeIndexOutOfBoundsException(\"deleted\");","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"AprupKale"},"content":" Task toBeDeleted \u003d taskList.getTaskAt(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"AprupKale"},"content":" taskList.deleteTaskAt(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"AprupKale"},"content":" display(\"Noted. I\u0027ve removed this task:\\n\" + toBeDeleted.toString()","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"AprupKale"},"content":" + \"\\nNow you have \" + taskList.getNumberOfTasks() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"AprupKale"},"content":" } else if (userInput.startsWith(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"AprupKale"},"content":" TaskList filtered \u003d parser.getTaskList(userInput, taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"AprupKale"},"content":" display(\"Here are the matching tasks in your list:\\n\" + filtered.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"AprupKale"},"content":" Task add \u003d parser.getTask(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(add);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"AprupKale"},"content":" display(\"Got it. I\u0027ve added this task:\\n\" + add.toString()","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"AprupKale"},"content":" + \"\\nNow you have \" + taskList.getNumberOfTasks() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"AprupKale"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"AprupKale"},"content":" throw new DukeException(\"OOPS!!! Could not add task to the list\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"AprupKale"},"content":" storage.writeToFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"AprupKale"},"content":" * Displays message to user.","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"AprupKale"},"content":" * @param message Message to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"AprupKale"},"content":" public static void display(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"AprupKale"},"content":" lines();","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"AprupKale"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"AprupKale"},"content":" lines();","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"AprupKale"},"content":" * Draws horizontal lines.","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"AprupKale"},"content":" public static void lines() {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"AprupKale"},"content":" System.out.println(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"AprupKale"},"content":" for (int i \u003d 0; i \u003c 50; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"AprupKale"},"content":" System.out.print(\"-\");","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"AprupKale"},"content":" System.out.println(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":115}},{"path":"src/main/java/duke/exceptions/DukeDateTimeParseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class DukeDateTimeParseException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":" public DukeDateTimeParseException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" super(\"OOPS!!! Date and Time format does not match dd mmm yyyy - hh:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":7}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class DukeException extends RuntimeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AprupKale":7}},{"path":"src/main/java/duke/exceptions/DukeFileNotFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class DukeFileNotFoundException extends DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":" public DukeFileNotFoundException(String file) {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" super(\"\\nOOPS!!! Could not find the file \" + file);","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AprupKale":7}},{"path":"src/main/java/duke/exceptions/DukeIndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class DukeIndexOutOfBoundsException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":" public DukeIndexOutOfBoundsException(String action) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" super(\"OOPS!!! Index of task to be \" + action + \" is out of bounds\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":7}},{"path":"src/main/java/duke/exceptions/DukeParseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class DukeParseException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":" public DukeParseException(String task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" super(\"OOPS!!! Missing parameters in \" + task);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"AprupKale":7}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.Duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":" /** Finish by time for the deadline */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":" * Constructs a Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" * @param description Description of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" * @param by Finish by time of the Deadline","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" * Constructs a Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" * @param description Description of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" * @param isDone Status of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" * @param by Finish by time of the Deadline","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" public Deadline(String description, boolean isDone, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" * Returns text representation of deadline for data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" * @return Text representation of Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" public String getTextRepresentation() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" return \"D | \" + super.getTextRepresentation() + \" | \" + this.by.format(Duke.TIME_FORMAT);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(Duke.TIME_FORMAT) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":" } else if (!(o instanceof Deadline)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":" Deadline deadline \u003d (Deadline) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":" return deadline.by.equals(this.by)","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 deadline.description.equals(this.description)","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 deadline.isDone \u003d\u003d this.isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AprupKale":62}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.Duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":" /** Start time for the event */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":" /** End time for the event */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" * Constructs an Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" * @param description Description of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" * @param from Start time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" * @param to End time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" * Constructs an Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" * @param description Description of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" * @param isDone Status of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" * @param from Start time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" * @param to End time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" public Event(String description, boolean isDone, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" * Returns text representation of deadline for data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" * @return Text representation of Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" public String getTextRepresentation() {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" return \"E | \" + super.getTextRepresentation() + \" | \" + this.from.format(Duke.TIME_FORMAT) + \" | \"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" + this.to.format(Duke.TIME_FORMAT);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(Duke.TIME_FORMAT)","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":" + \" to: \" + this.to.format(Duke.TIME_FORMAT) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":" } else if (!(o instanceof Event)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"AprupKale"},"content":" Event event \u003d (Event) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"AprupKale"},"content":" return event.from.equals(this.from)","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 event.to.equals(this.to)","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 event.description.equals(this.description)","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 event.isDone \u003d\u003d this.isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AprupKale":71}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" /** Description of task */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":" /** Status of task */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":" * Constructs a Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":" * @param description Description of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" * Constructs a Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" * @param description Description of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" * @param isDone Status of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" * Returns status of task as String.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" * @return Status of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" * Return status of task as Integer.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" * @return Status of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" public int getStatusNumerical() {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" return (this.isDone ? 1 : 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":" * Unmarks the task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"AprupKale"},"content":" * Returns text representation of task for data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"AprupKale"},"content":" * @return Text representation of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"AprupKale"},"content":" public String getTextRepresentation() {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"AprupKale"},"content":" return this.getStatusNumerical() + \" | \" + this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"AprupKale"},"content":" * Checks if task contains keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"AprupKale"},"content":" * @param keyword Keyword to be checked.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"AprupKale"},"content":" * @return If task contains keyword or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"AprupKale"},"content":" public boolean containsKeyword(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"AprupKale"},"content":" return this.description.contains(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"AprupKale"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"AprupKale"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"AprupKale"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"AprupKale"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"AprupKale"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"AprupKale"},"content":" } else if (!(o instanceof Task)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"AprupKale"},"content":" Task task \u003d (Task) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"AprupKale"},"content":" return task.description.equals(this.description)","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 task.isDone \u003d\u003d this.isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AprupKale":99}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":" * Constructs a Todo object.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":" * @param description Description of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" * Constructs a Todo object.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" * @param description Description of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" * @param isDone Status of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" * Returns text representation of todo for data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" * @return Text representation of Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" public String getTextRepresentation() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" return \"T | \" + super.getTextRepresentation();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" } else if (!(o instanceof Todo)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" Todo todo \u003d (Todo) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" return todo.description.equals(this.description)","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" \u0026\u0026 todo.isDone \u003d\u003d this.isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AprupKale":50}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.exceptions.DukeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" private static final Parser PARSER \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" public void parseTodo_validInput_expectedOutcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" assertEquals(new Todo(\"read book\"), PARSER.parseTodo(\"todo read book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" public void parseTodo_missingParameters_throwException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" assertEquals(new Todo(\"read book\"), PARSER.parseTodo(\"todo\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" } catch (DukeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" assertEquals(\"OOPS!!! Missing parameters in todo\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" public void parseDeadline_validInput_expectedOutcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" assertEquals(new Deadline(\"return book\",","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"01 Sep 2023 - 16:00\", Duke.TIME_FORMAT)),","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":" PARSER.parseDeadline(\"deadline return book /by 01 Sep 2023 - 16:00\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" public void parseDeadline_missingParameters_throwException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" assertEquals(new Deadline(\"return book\",","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"01 Sep 2023 - 16:00\", Duke.TIME_FORMAT)),","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" PARSER.parseDeadline(\"deadline return book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" } catch (DukeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":" assertEquals(\"OOPS!!! Missing parameters in deadline\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":" public void parseEvent_validInput_expectedOutcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"AprupKale"},"content":" assertEquals(new Event(\"project meeting\",","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"06 Aug 2023 - 14:00\", Duke.TIME_FORMAT),","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"06 Aug 2023 - 16:00\", Duke.TIME_FORMAT)),","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"AprupKale"},"content":" PARSER.parseEvent(\"event project meeting /from 06 Aug 2023 - 14:00 /to 06 Aug 2023 - 16:00\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"AprupKale"},"content":" public void parseEvent_missingParameters_throwException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"AprupKale"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"AprupKale"},"content":" assertEquals(new Event(\"project meeting\",","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"06 Aug 2023 - 14:00\", Duke.TIME_FORMAT),","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"06 Aug 2023 - 16:00\", Duke.TIME_FORMAT)),","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"AprupKale"},"content":" PARSER.parseEvent(\"event project meeting /from 06 Aug 2023 - 14:00\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"AprupKale"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"AprupKale"},"content":" } catch (DukeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"AprupKale"},"content":" assertEquals(\"OOPS!!! Missing parameters in event\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AprupKale":71}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"AprupKale"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"AprupKale"},"content":" private static final Todo TODO \u003d new Todo(\"read book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"AprupKale"},"content":" private static final Deadline DEADLINE \u003d new Deadline(\"return book\",","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"01 Sep 2023 - 16:00\", Duke.TIME_FORMAT));","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"AprupKale"},"content":" private static final Event EVENT \u003d new Event(\"project meeting\",","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"06 Aug 2023 - 14:00\", Duke.TIME_FORMAT),","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"AprupKale"},"content":" LocalDateTime.parse(\"06 Aug 2023 - 16:00\", Duke.TIME_FORMAT));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"AprupKale"},"content":" private static final TaskList TASK_LIST \u003d TaskList.of(TODO, DEADLINE, EVENT);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"AprupKale"},"content":" public void addToList_addTask_addSuccessfully() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"AprupKale"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(TODO);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(DEADLINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(EVENT);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"AprupKale"},"content":" assertEquals(TASK_LIST, taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"AprupKale"},"content":" public void getTaskAt_correctIndex_getSuccessfully() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"AprupKale"},"content":" assertEquals(TODO, TASK_LIST.getTaskAt(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"AprupKale"},"content":" assertEquals(DEADLINE, TASK_LIST.getTaskAt(1));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"AprupKale"},"content":" assertEquals(EVENT, TASK_LIST.getTaskAt(2));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"AprupKale"},"content":" public void deleteTaskAt_correctIndex_deleteSuccessfully() {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"AprupKale"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(TODO);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(DEADLINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(EVENT);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"AprupKale"},"content":" taskList.addToList(new Todo(\"play tennis\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"AprupKale"},"content":" taskList.deleteTaskAt(3);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"AprupKale"},"content":" assertEquals(TASK_LIST, taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"AprupKale"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"AprupKale"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"AprupKale"},"content":" public void getNumberOfTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"AprupKale"},"content":" assertEquals(3, TASK_LIST.getNumberOfTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"AprupKale"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"AprupKale"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"AprupKale":52}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AprupKale"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"AprupKale"},"content":"deadline return book /by 06 Jun 2023 - 1600","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"AprupKale"},"content":"event project meeting /from 06 Aug 2023 - 1400 /to 06 Aug 2023 - 1600","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"AprupKale"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"AprupKale"},"content":"todo join sports club","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"AprupKale"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"AprupKale"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"AprupKale"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"AprupKale"},"content":"deadline return another book /by 02 Sep 2023 - 1600","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"AprupKale"},"content":"event another project meeting /from 30 Aug 2023 - 2100 /to 30 Aug 2023 - 2200","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"AprupKale"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"AprupKale":11}},{"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":"AprupKale"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"AprupKale":1,"-":20}}] diff --git a/AprupKale_ip_master/commits.json b/AprupKale_ip_master/commits.json index e2bf2c7c..e39da57d 100644 --- a/AprupKale_ip_master/commits.json +++ b/AprupKale_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"AprupKale":[{"date":"2023-08-24","commitResults":[{"hash":"284f2d1a10cd2a9e7962cdbbd260e6277d6b991a","isMergeCommit":false,"messageTitle":"Update for Level 0 - Add greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":6}}},{"hash":"148e3fb42fd31522459caa60aa7588a56b0c7b53","isMergeCommit":false,"messageTitle":"Update for Level 1 - Add user input echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"fda795115570792efe1685d7a8ebeb09d5af919b","isMergeCommit":false,"messageTitle":"Update for Level 2 - Add list to store user input","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":4}}},{"hash":"aa1a66208477b70d5381dd5c046860d008e6710b","isMergeCommit":false,"messageTitle":"Update for Level 3 - Add Task and ability to mark and unmark tasks done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":4}}},{"hash":"05baa3021f43f313097a4f5a2f9cf46a2ce08cf2","isMergeCommit":false,"messageTitle":"Remove redundant code in greet and exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":8}}},{"hash":"57028f000338420df54ef64221dd197302b51bbb","isMergeCommit":false,"messageTitle":"Update for Level 4 - Add Todo, Deadline and Event","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":3}}},{"hash":"3b1753394c412d255f46c9a4033e493f50ee6133","isMergeCommit":false,"messageTitle":"Update for A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"f880b68357a0dd8f2d4d901da3e23c49ae67be73","isMergeCommit":false,"messageTitle":"Update for Level 5 - Add exception handling with DukeException","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":16}}},{"hash":"0e8ebaf382f53ec43e77e5526a42dc00cf9f7375","isMergeCommit":false,"messageTitle":"Update for Level 6 - Add ability to delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":15}}}]},{"date":"2023-08-30","commitResults":[{"hash":"999c0d0b9adbb228005c86ea9d810fc8c4ff2ba5","isMergeCommit":false,"messageTitle":"Change List to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":39}}},{"hash":"54fb6214a13bb2b82c1026084ee58ca6d25a36df","isMergeCommit":false,"messageTitle":"Update for Level 7 - Add save ability","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":2}}},{"hash":"9bbff45f95737c3b7d59bba8c53928d1581ad20c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"899bdb6dc5933b55d2b77ceb8ca070a274d1c89b","isMergeCommit":false,"messageTitle":"Modify text-ui-test/input.txt and text-ui-test/EXPECTED.TXT","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2}}},{"hash":"580b3d9986bb504a80dad16043dac2c4ae9908a3","isMergeCommit":false,"messageTitle":"Update for Level 8 - Add date and time format for deadlines and events","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":29,"deletions":21}}},{"hash":"395db1238b4ea452cb5e28570bb8b6bfaf3362a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"021bcb5d1383f9cec080cf280ffa2535cb9332f0","isMergeCommit":false,"messageTitle":"Update for A-MoreOOP - Add Parser, Storage and Ui classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":225,"deletions":188}}},{"hash":"7ab8e4693be955405e74a6a948fcdb05e95b2b72","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"748e51093bf0c9699da84d369e39ba25dec88368","isMergeCommit":false,"messageTitle":"Update for A-Packages - Add packages duke, duke.tasks, and duke.exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":1},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"c53feab1749d2b0f7a3a07748def20a3c2aabe78","isMergeCommit":false,"messageTitle":"Add DukeIndexOutOfBoundsException, DukeParseException, and DukeDateTimeParseException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":9}}},{"hash":"492038a4eb1fbfa205c548a546dbbe90adaf2307","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"1c2f1eeea84c50a75ea70e3c5ae48e728fa03bfb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b80a45c4e61f982d1321464c35f7ed66e04c5958","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7b38c674f608f6ee923a9e05ee1051c3091ac527","isMergeCommit":false,"messageTitle":"Update for A-Gradle - Add Gradle to build and run tests on project","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"772b5e30f970d1fc0f7108b08869210c985bf4ae","isMergeCommit":false,"messageTitle":"Add equals() method to Task, Todo, Deadline, Event and TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":3}}},{"hash":"924d0aa887dc05b1bce36fd775dfe1372176cf16","isMergeCommit":false,"messageTitle":"Update for A-JUnit - Add Test classes for Parser and TaskList","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":131,"deletions":0}}},{"hash":"15d5597dc08cd5d03f7d5823f8ca61c96b673424","isMergeCommit":false,"messageTitle":"Update for A-Jar - Edit build.gradle to build .jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"AprupKale":{"java":669,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":5,"txt":11}},"authorContributionVariance":{"AprupKale":42812.92},"authorDisplayNameMap":{"AprupKale":"CS2103T-W17-2 KALE..INAY"}} +{"authorDailyContributionsMap":{"AprupKale":[{"date":"2023-08-24","commitResults":[{"hash":"284f2d1a10cd2a9e7962cdbbd260e6277d6b991a","isMergeCommit":false,"messageTitle":"Update for Level 0 - Add greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":6}}},{"hash":"148e3fb42fd31522459caa60aa7588a56b0c7b53","isMergeCommit":false,"messageTitle":"Update for Level 1 - Add user input echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"fda795115570792efe1685d7a8ebeb09d5af919b","isMergeCommit":false,"messageTitle":"Update for Level 2 - Add list to store user input","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":4}}},{"hash":"aa1a66208477b70d5381dd5c046860d008e6710b","isMergeCommit":false,"messageTitle":"Update for Level 3 - Add Task and ability to mark and unmark tasks done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":4}}},{"hash":"05baa3021f43f313097a4f5a2f9cf46a2ce08cf2","isMergeCommit":false,"messageTitle":"Remove redundant code in greet and exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":8}}},{"hash":"57028f000338420df54ef64221dd197302b51bbb","isMergeCommit":false,"messageTitle":"Update for Level 4 - Add Todo, Deadline and Event","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":3}}},{"hash":"3b1753394c412d255f46c9a4033e493f50ee6133","isMergeCommit":false,"messageTitle":"Update for A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"f880b68357a0dd8f2d4d901da3e23c49ae67be73","isMergeCommit":false,"messageTitle":"Update for Level 5 - Add exception handling with DukeException","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":16}}},{"hash":"0e8ebaf382f53ec43e77e5526a42dc00cf9f7375","isMergeCommit":false,"messageTitle":"Update for Level 6 - Add ability to delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":15}}}]},{"date":"2023-08-30","commitResults":[{"hash":"999c0d0b9adbb228005c86ea9d810fc8c4ff2ba5","isMergeCommit":false,"messageTitle":"Change List to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":39}}},{"hash":"54fb6214a13bb2b82c1026084ee58ca6d25a36df","isMergeCommit":false,"messageTitle":"Update for Level 7 - Add save ability","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":2}}},{"hash":"9bbff45f95737c3b7d59bba8c53928d1581ad20c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"899bdb6dc5933b55d2b77ceb8ca070a274d1c89b","isMergeCommit":false,"messageTitle":"Modify text-ui-test/input.txt and text-ui-test/EXPECTED.TXT","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2}}},{"hash":"580b3d9986bb504a80dad16043dac2c4ae9908a3","isMergeCommit":false,"messageTitle":"Update for Level 8 - Add date and time format for deadlines and events","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":29,"deletions":21}}},{"hash":"395db1238b4ea452cb5e28570bb8b6bfaf3362a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"021bcb5d1383f9cec080cf280ffa2535cb9332f0","isMergeCommit":false,"messageTitle":"Update for A-MoreOOP - Add Parser, Storage and Ui classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":225,"deletions":188}}},{"hash":"7ab8e4693be955405e74a6a948fcdb05e95b2b72","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"748e51093bf0c9699da84d369e39ba25dec88368","isMergeCommit":false,"messageTitle":"Update for A-Packages - Add packages duke, duke.tasks, and duke.exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":1},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"c53feab1749d2b0f7a3a07748def20a3c2aabe78","isMergeCommit":false,"messageTitle":"Add DukeIndexOutOfBoundsException, DukeParseException, and DukeDateTimeParseException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":9}}},{"hash":"492038a4eb1fbfa205c548a546dbbe90adaf2307","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"1c2f1eeea84c50a75ea70e3c5ae48e728fa03bfb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b80a45c4e61f982d1321464c35f7ed66e04c5958","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7b38c674f608f6ee923a9e05ee1051c3091ac527","isMergeCommit":false,"messageTitle":"Update for A-Gradle - Add Gradle to build and run tests on project","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"772b5e30f970d1fc0f7108b08869210c985bf4ae","isMergeCommit":false,"messageTitle":"Add equals() method to Task, Todo, Deadline, Event and TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":3}}},{"hash":"924d0aa887dc05b1bce36fd775dfe1372176cf16","isMergeCommit":false,"messageTitle":"Update for A-JUnit - Add Test classes for Parser and TaskList","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":131,"deletions":0}}},{"hash":"15d5597dc08cd5d03f7d5823f8ca61c96b673424","isMergeCommit":false,"messageTitle":"Update for A-Jar - Edit build.gradle to build .jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":0}}},{"hash":"aff56d9c61e48d33fb9ec116198c199902c4c21e","isMergeCommit":false,"messageTitle":"Update for A-JavaDoc - Add documentation for all public fields and methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":227,"deletions":7}}},{"hash":"cc12b925f0b41debda144517c514a2d256b296c0","isMergeCommit":false,"messageTitle":"Update for A-CodingStandard - Add config/checkstyle/checkstyle.xml and config/checkstyle/suppressions.xml","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":4,"deletions":0}}},{"hash":"6831e293e24ac904c9c8a11e990e848d02d2c0be","isMergeCommit":false,"messageTitle":"Update for Level 9 - Add functionality to search task with a keyword","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":2}}},{"hash":"6c509799e06d509262478509d3a8f5980387bb2f","isMergeCommit":false,"messageTitle":"Fix coding standard errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}},{"hash":"93b20befb25fada9ce5623f76d061b6092ddb7b2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard","A-CheckStyle"],"fileTypesAndContributionMap":{}},{"hash":"34c300a94418c613567679968f175072a51ae2a9","isMergeCommit":true,"messageTitle":"Fix conflicts in Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Storage.java\n","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"56c7519d1ccf1e4fdc3b426e11c1d4a9ab4346f2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"9189d24f09deb6fb97a63066c9a2ae6b5c74009c","isMergeCommit":false,"messageTitle":"Add documentation for Task::containsKeyword and Parser::getTaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"AprupKale":{"java":919,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":9,"txt":11}},"authorContributionVariance":{"AprupKale":52390.164},"authorDisplayNameMap":{"AprupKale":"CS2103T-W17-2 KALE..INAY"}} diff --git a/B-enguin_ip_master/authorship.json b/B-enguin_ip_master/authorship.json index aa44969b..1300d239 100644 --- a/B-enguin_ip_master/authorship.json +++ b/B-enguin_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"B-enguin":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"B-enguin":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"1 todo b","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"0 todo a","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"1 deadline a /by 2023-08-26","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"0 deadline c /by 2023-09-03","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"0 event task /from 2023-08-26 /to 2023-08-27","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"0 todo abc","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"B-enguin":6}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.command.Parser;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" * The main duke class.","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"public class Duke {","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" private UI ui;","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" private Storage storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" * Constructor for Duke class.","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" * @param savePath string of path to the savefile","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" public Duke(String savePath) {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" this.storage \u003d new Storage(savePath);","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" this.taskList \u003d this.storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" this.ui \u003d new UI(\"Heimdallr\");","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" UI.sendError(e.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" System.exit(0);","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" * Runs the duke program.","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" * Spins up the program until exit command is given by the user","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" public void run() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" String rawCommand \u003d UI.readMessage();","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" Command c \u003d Parser.parseCommand(rawCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" c.execute(this.taskList, this.ui, this.storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" UI.sendError(e.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":58}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":" * Represents an Exception specific to Duke.","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" public DukeException(String e) {","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" super(e);","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"B-enguin":10}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.command.Parser;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.io.File;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"public class Storage {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" private final String savePath;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" private final boolean isUpdatable \u003d true;","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" public Storage(String savePath) {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" this.savePath \u003d savePath;","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" * Updates the savefile to the most current tasks.","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current list of tasks","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" public void updateFile(TaskList taskList) {","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" if (isUpdatable) {","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath, false);","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" for (Task t : taskList) {","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" writer.write(t.getSaveString() + \"\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" UI.sendError(e.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" * Loads a TaskList from the given savefile.","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" * @return a TaskList constructed from the savefile","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException when file is corrupted","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" public TaskList load() throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" File save \u003d new File(this.savePath);","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" Scanner scanner \u003d new Scanner(save);","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" if (line.length() !\u003d 0) {","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" String[] s \u003d line.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" Command c \u003d Parser.parseCommand(s[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, this);","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" if (Integer.parseInt(s[0]) \u003d\u003d 1) {","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" taskList.get(taskList.size() - 1).markAsDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" scanner.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" return taskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" UI.sendError(e.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" File save \u003d new File(this.savePath);","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" save.createNewFile();","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" return new TaskList();","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" } catch (IOException innerE) {","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" throw new Error(\"Cannot create save file\");","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":77}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" * Represents an exit command by the user.","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"public class ByeCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"bye\";","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" return true;","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" // Nothing","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":24}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" * Represents a user command.","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"public interface Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" * Execute the given command.","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if there is error running the command","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" void execute(TaskList taskList, UI ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" * @return true if program should exit, false otherwise","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" boolean isExit();","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":30}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"public class DeadlineCommand extends NonemptyArgumentCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"deadline\";","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" private final String arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" * Constructor for a DeadlineCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments for the DeadlineCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" public DeadlineCommand(String arguments) {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" * They must,","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" * 1. Be in the format [description] /by YYYY-MM-DD","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" * @param arguments argument to validate","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException is argument is not valid","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" protected void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" super.validate(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" String[] userArgs \u003d arguments.split(\"/by \");","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" if (userArgs.length !\u003d 2) {","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Missing Argument for command: \" + commandString + \", should include /by YYYY-MM-DD\");","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" if (Objects.equals(userArgs[1], \"\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Missing Argument for command: \" + commandString + \", should include /by YYYY-MM-DD\");","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" LocalDate date \u003d LocalDate.parse(userArgs[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Invalid Date Format for command: \" + commandString + \", should be /by YYYY-MM-DD\");","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" * Creates a Deadline task.","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if deadline task cannot be created","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" validate(this.arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" String[] userArgs \u003d arguments.split(\"/by \");","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" LocalDate date \u003d LocalDate.parse(userArgs[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" taskList.add(new Deadline(userArgs[0], date));","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"Got it. I\u0027ve added this task:\\n \" +","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":" taskList.get(taskList.size() - 1) +","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"B-enguin"},"content":" String.format(\"\\nNow you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"B-enguin"},"content":" storage.updateFile(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":87,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":87}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"public class DeleteCommand extends NumberedChoiceCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"mark\";","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" private final String arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" * Constructor for the DeleteCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments for DeleteCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" public DeleteCommand(String arguments) {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" * Deletes a specified task.","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException when unable to delete","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" validate(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" int choice \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"Noted. I\u0027ve removed this task:\\n \" +","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" taskList.get(choice) +","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" String.format(\"\\nNow you have %d tasks in the list.\", taskList.size() - 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" taskList.remove(choice);","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" storage.updateFile(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" * They must be","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" * 1. Numeric","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" * 2. A valid choice given current tasks","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" private void validate(TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" super.validate(this.arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" int choice \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" if (choice \u003c 0 || choice \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Argument Provided out of range: \" + (choice + 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":71}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"public class EventCommand extends NonemptyArgumentCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"event\";","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" private final String arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" * Constructor for an EventCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments for EventCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" public EventCommand(String arguments) {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" * Validate arguments for this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" * They must,","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" * 1. Be in the format [description] /from YYYY-MM-DD /to YYYY-MM-DD","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments to validate","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" protected void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" super.validate(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" String[] userArgs \u003d arguments.split(\"/from \");","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" if (userArgs.length !\u003d 2) {","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Missing Argument for command: \" +","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" commandString +","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" \", should include /from YYYY-MM-DD /to YYYY-MM-DD\");","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" String desc \u003d userArgs[0];","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" String[] subcommandArgs \u003d userArgs[1].split(\"/to \");","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" if (subcommandArgs.length !\u003d 2) {","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Missing Argument for command: \" +","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" commandString +","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" \", should include /from YYYY-MM-DD /to YYYY-MM-DD\");","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" if (Objects.equals(subcommandArgs[0], \"\") || Objects.equals(subcommandArgs[1], \"\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Missing Argument for command: \" +","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" commandString +","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" \", should include /from YYYY-MM-DD /to YYYY-MM-DD\");","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" LocalDate date \u003d LocalDate.parse(subcommandArgs[0].trim());","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" date \u003d LocalDate.parse(subcommandArgs[1].trim());","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Invalid Date Format for command: \" +","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" commandString +","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" \"should be /from YYYY-MM-DD /to YYYY-MM-DD\");","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" * Create an Event Task.","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if unable to create event","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"B-enguin"},"content":" validate(this.arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":87,"author":{"gitId":"B-enguin"},"content":" String[] userArgs \u003d arguments.split(\"/from |/to \");","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"B-enguin"},"content":" LocalDate from \u003d LocalDate.parse(userArgs[1].trim());","lastModifiedDate":"2023-08-25"},{"lineNumber":89,"author":{"gitId":"B-enguin"},"content":" LocalDate to \u003d LocalDate.parse(userArgs[2].trim());","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"B-enguin"},"content":" taskList.add(new Event(userArgs[0].trim(), from, to));","lastModifiedDate":"2023-08-25"},{"lineNumber":91,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"Got it. I\u0027ve added this task:\\n \" +","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"B-enguin"},"content":" taskList.get(taskList.size() - 1) +","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"B-enguin"},"content":" String.format(\"\\nNow you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-08-25"},{"lineNumber":94,"author":{"gitId":"B-enguin"},"content":" storage.updateFile(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":95,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":96,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":97,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":100,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":101,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":101}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"public class FindCommand extends NonemptyArgumentCommand implements Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"find\";","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" private final String argument;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" public FindCommand(String argument) {","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" this.argument \u003d argument;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" protected void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" super.validate(arguments);","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" if (taskList.get(i).getDescription().contains(argument)) {","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" output.append(i + 1).append(\". \").append(taskList.get(i)).append(\"\\n\");","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" if (output.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"No Items in List\");","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"Here are the matching tasks in your list:\\n\" + output);","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"B-enguin":41}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"list\";","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" private final String argument;","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" * Constructor for ListCommand.","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" * @param argument arguments for ListCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" public ListCommand(String argument) {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" this.argument \u003d argument;","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" * They must have one of the following formats,","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" * \u003cul\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" * \u003cli\u003elist\u003c/li\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" * \u003cli\u003elist now\u003c/li\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" * \u003cli\u003elist YYYY-MM-DD\u003c/li\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments to validate","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" private void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" if (arguments !\u003d null) {","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" // Non null argument, check format","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" if (arguments.equals(\"now\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" return;","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" // User Specified Date, check date","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" LocalDate date \u003d LocalDate.parse(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Invalid Date Format Provided, expected either:\\n\\tlist\\n\\tlist now\\n\\tlist YYYY-MM-DD\");","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" * List tasks depending on arguments.","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" * \u003cul\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" * \u003cli\u003elist: list all tasks\u003c/li\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" * \u003cli\u003elist now: list all tasks ending within 1 week from now\u003c/li\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" * \u003cli\u003elist YYYY-MM-DD: list all task ending before specified date\u003c/li\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if unable to list tasks","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"B-enguin"},"content":" validate(this.argument);","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"B-enguin"},"content":" LocalDate date;","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"B-enguin"},"content":" if (this.argument !\u003d null) {","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"B-enguin"},"content":" if (this.argument.equals(\"now\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"B-enguin"},"content":" date \u003d LocalDate.now().plusWeeks(1L);","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"B-enguin"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"B-enguin"},"content":" date \u003d LocalDate.parse(this.argument);","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":87,"author":{"gitId":"B-enguin"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"B-enguin"},"content":" date \u003d LocalDate.MAX;","lastModifiedDate":"2023-08-25"},{"lineNumber":89,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"B-enguin"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2023-08-25"},{"lineNumber":91,"author":{"gitId":"B-enguin"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"B-enguin"},"content":" if (taskList.get(i).isBefore(date)) {","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"B-enguin"},"content":" output.append(i + 1).append(\". \").append(taskList.get(i)).append(\"\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":94,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":95,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":96,"author":{"gitId":"B-enguin"},"content":" if (output.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-25"},{"lineNumber":97,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"No Items in List\");","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"B-enguin"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(output.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":100,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":101,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":102,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":103,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":104,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":105,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":106,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":107,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":107}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"public class MarkCommand extends NumberedChoiceCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"mark\";","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" private final String arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" * Constructor for MarkCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments for MarkCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" public MarkCommand(String arguments) {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" * Mark a Task as done.","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if unable to mark task as done","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" validate(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" int choice \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" taskList.get(choice).markAsDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"Nice! I\u0027ve marked this task as done:\\n \" + taskList.get(choice));","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" storage.updateFile(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" * They must be,","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" * 1. Numeric","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" * 2. Valid Choice for the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" * @param taskList The current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" private void validate(TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" super.validate(this.arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" int choice \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" if (choice \u003c 0 || choice \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Argument Provided out of range: \" + (choice + 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":70}},{"path":"src/main/java/duke/command/NonemptyArgumentCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"public abstract class NonemptyArgumentCommand {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments to validate","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" protected void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" if (arguments \u003d\u003d null) {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(String.format(\"Missing Argument for NonemptyArgumentCommand: %s\", this));","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":18}},{"path":"src/main/java/duke/command/NumberedChoiceCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"public abstract class NumberedChoiceCommand extends NonemptyArgumentCommand {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments to validate","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" protected void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" super.validate(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" int i \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Invalid Argument Provided, expected numeric argument: \" + arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":22}},{"path":"src/main/java/duke/command/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"public class Parser {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" * Parse the raw input from user","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" * @param rawCommand the raw input given by the user","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" * @return the command if it exists","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if no matching command is found","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" public static Command parseCommand(String rawCommand) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" // Clean Raw Input","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" rawCommand \u003d rawCommand.trim().replaceAll(\" +\", \" \");","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" // Read Command","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" String[] userInput \u003d rawCommand.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" String command \u003d userInput[0];","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" String arguments \u003d userInput.length \u003d\u003d 2 ? userInput[1] : null;","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" switch (command) {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" case \"bye\":","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" case \"list\":","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" return new ListCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" case \"mark\":","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" return new MarkCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" return new UnmarkCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" case \"delete\":","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" return new DeleteCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" case \"todo\":","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" return new TodoCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" return new DeadlineCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" case \"event\":","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" return new EventCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" default:","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Invalid Command: \" + command + \" , Please Try Again...\");","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":43}},{"path":"src/main/java/duke/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"public class TodoCommand extends NonemptyArgumentCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"todo\";","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" private final String arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" * Constructor for TodoCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments for TodoCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" public TodoCommand(String arguments) {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" * They must not be empty","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments to validate","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" protected void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" super.validate(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" * Create a Todo Task","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if unable to create Todo task","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" validate(this.arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" taskList.add(new Todo(this.arguments));","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"Got it. I\u0027ve added this task:\\n \" +","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" taskList.get(taskList.size() - 1) +","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" String.format(\"\\nNow you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" storage.updateFile(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":67}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"public class UnmarkCommand extends NumberedChoiceCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"unmark\";","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" private final String arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" * Constructor for Unmark command","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments to Unmark command","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" public UnmarkCommand(String arguments) {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" * Mark a task as not done.","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if unable to mark a task as not done","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" validate(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" int choice \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" taskList.get(choice).markAsNotDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"OK, I\u0027ve marked this task as not done yet:\\n \" + taskList.get(choice));","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" storage.updateFile(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" * Validate the arguments to this command","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" * They must be,","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" * 1. Numeric","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" * 2. Valid choice for the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" private void validate(TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" super.validate(this.arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" int choice \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" if (choice \u003c 0 || choice \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Argument Provided out of range: \" + (choice + 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":69}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.task;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" * Constructor to Deadline Task.","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" * @param description description of task","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" * @param by date task is due","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" super(description);","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" * Returns if task is before given date.","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" * @param date given date to check against","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" * @return true if task is before given date, false otherwise","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" public boolean isBefore(LocalDate date) {","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" return this.by.isBefore(date);","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" * Get string representation of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" * @return string representation of task","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" * Get a string representing this event to save to file.","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" * @return string representing this event to save to file","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" return String.format(\"%d deadline %s /by %s\", isDone ? 1 : 0, description.trim(), by);","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"B-enguin":52}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.task;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" protected LocalDate from;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" protected LocalDate to;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" * Constructor to Event Task.","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" * @param description description of task","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" * @param from task start date","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" * @param to task end date","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" super(description);","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-19"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" * Returns if task is before given date.","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" * @param date given date to check against","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" * @return true if task is before given date, false otherwise","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" public boolean isBefore(LocalDate date) {","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" return this.to.isBefore(date);","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" * Get string representation of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" * @return string representation of task","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" return \"[E]\" +","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" super.toString() +","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" \" (from: \" +","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) +","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" \" to: \" +","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) +","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" * Get a string representing this event to save to file.","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" * @return string representing this event to save to file","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" return String.format(\"%d event %s /from %s /to %s\", isDone ? 1 : 0, description.trim(), from, to);","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"B-enguin":62}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.task;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":" protected String description;","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" * Constructor for Task.","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" * @param description description of task","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" * String representing status of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" * @return string representing status of task","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-19"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-19"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" * Change task to done","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-19"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-19"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" * Change task to not done","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-19"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-19"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" * Get a string representing this event to save to file.","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" * @return string representing this event to save to file","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" return \"\";","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" * Returns a description of the event","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" * @return a string representing the description of the event","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" return description;","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" * Returns if task is before given date.","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" * @param date given date to check against","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" * @return true","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" public boolean isBefore(LocalDate date) {","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" return true;","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" * Get string representation of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" * @return string representation of task","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-19"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":79,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"B-enguin":79}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.task;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"public class TaskList extends ArrayList\u003cTask\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":6}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.task;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":" super(description);","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" return String.format(\"%d todo %s\", isDone ? 1 : 0, description.trim());","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"B-enguin":19}},{"path":"src/main/java/duke/ui/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.ui;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"public class UI {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" private final String name;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" private static final Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" public static boolean active \u003d false;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" private enum Colors {","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" RESET(\"\\u001B[0m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" BLACK(\"\\u001B[30m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" RED(\"\\u001B[31m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" GREEN(\"\\u001B[32m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" YELLOW(\"\\u001B[33m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" BLUE(\"\\u001B[34m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" PURPLE(\"\\u001B[35m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" CYAN(\"\\u001B[36m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" ;","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" private final String code;","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" Colors(String c) {","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" code \u003d c;","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" return code;","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" public UI(String name) {","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" UI.active \u003d true;","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" // Send Greeting Message","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" sendMessage(String.format(\"Hello! I\u0027m %s\\nWhat can I do for you?\", this.name));","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" public static void exit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" sendMessage(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" public static void sendMessage(String msgs) {","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" if (active) {","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" for (String msg : msgs.split(\"\\n\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" System.out.println(\"\\t\" + Colors.CYAN + msg + Colors.RESET);","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" public static void sendError(String msgs) {","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" for (String msg : msgs.split(\"\\n\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" System.out.println(\"\\t\" + Colors.RED + msg + Colors.RESET);","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" public static void printLine() {","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" System.out.println(\"\\t____________________________________________________________\");","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" public static String readMessage() {","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":72}},{"path":"src/test/java/duke/command/ByeCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"public class ByeCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" public void byeCommandShouldExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new ByeCommand();","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" assertTrue(c.isExit());","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":14}},{"path":"src/test/java/duke/command/DeadlineCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"import java.util.List;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertLinesMatch;","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"public class DeadlineCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" public void deadlineCorrect(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new DeadlineCommand(\"task /by 2023-08-26\");","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" assertEquals(\"[D][ ] task (by: Aug 26 2023)\",taskList.get(0).toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" List\u003cString\u003e lines \u003d List.of(\"0 deadline task /by 2023-08-26\");","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" assertLinesMatch(lines, Files.readAllLines(savePath.resolve(\"duke.txt\")));","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" public void withoutArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" new DeadlineCommand(\"\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" public void missingArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" new DeadlineCommand(\"task\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" public void missingTimeArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" new DeadlineCommand(\"task /by\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" public void invalidTimeArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" new DeadlineCommand(\"task /by s\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" public void invalidTimeFormat_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" new DeadlineCommand(\"task /by 26-08-2023\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" public void invalidSubcommand_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" new DeadlineCommand(\"task /to 26-08-2023\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":76}},{"path":"src/test/java/duke/command/DeleteCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"import java.util.List;","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertLinesMatch;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" public void deleteCorrect(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath.resolve(\"duke.txt\").toString(), false);","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" writer.write(\"0 todo task\\n0 todo task1\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new DeleteCommand(\"1\");","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" List\u003cString\u003e lines \u003d List.of(\"0 todo task1\");","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" assertLinesMatch(lines, Files.readAllLines(savePath.resolve(\"duke.txt\")));","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" public void withoutArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" new DeleteCommand(\"\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" public void nonNumeric_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" new DeleteCommand(\"notNumber\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" public void invalidNumericNumber_throwsDukeException(@TempDir Path savePath) throws IOException{","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath.resolve(\"duke.txt\").toString(), false);","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" writer.write(\"0 todo task\\n0 todo task1\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" new DeleteCommand(\"3\").execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":68}},{"path":"src/test/java/duke/command/EventCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"import java.util.List;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"public class EventCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" public void eventCorrect(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new EventCommand(\"task /from 2023-08-26 /to 2023-08-27\");","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" assertEquals(\"[E][ ] task (from: Aug 26 2023 to: Aug 27 2023)\",taskList.get(0).toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" List\u003cString\u003e lines \u003d List.of(\"0 event task /from 2023-08-26 /to 2023-08-27\");","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" assertLinesMatch(lines, Files.readAllLines(savePath.resolve(\"duke.txt\")));","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" assertEquals(0, 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" public void withoutArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" new EventCommand(\"\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" public void missingArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" new EventCommand(\"task\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" public void missingTimeArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" new EventCommand(\"task /by\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" public void invalidTimeArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" new EventCommand(\"task /by s\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" public void invalidTimeFormat_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" new EventCommand(\"task /by 26-08-2023\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" public void invalidSubcommand_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" new EventCommand(\"task /from 2023-08-26 /from 2023-08-26\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":75}},{"path":"src/test/java/duke/command/MarkCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"import java.util.List;","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"public class MarkCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" public void markCorrect(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath.resolve(\"duke.txt\").toString(), false);","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" writer.write(\"0 todo task\\n0 todo task1\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new MarkCommand(\"1\");","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" assertEquals(\"X\", taskList.get(0).getStatusIcon());","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" List\u003cString\u003e lines \u003d List.of(\"1 todo task\",\"0 todo task1\");","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" assertLinesMatch(lines, Files.readAllLines(savePath.resolve(\"duke.txt\")));","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" public void withoutArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" new MarkCommand(\"\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" public void nonNumeric_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" new MarkCommand(\"notNumber\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" public void invalidNumericNumber_throwsDukeException(@TempDir Path savePath) throws IOException{","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath.resolve(\"duke.txt\").toString(), false);","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" writer.write(\"0 todo task\\n0 todo task1\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" new MarkCommand(\"3\").execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":66}},{"path":"src/test/java/duke/command/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" public void invalidCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" Parser.parseCommand(\"thisIsInvalid\");","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" public void byeReturnsByeCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"bye\") instanceof ByeCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" public void listReturnsListCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"list\") instanceof ListCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" public void markReturnsMarkCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"mark 1\") instanceof MarkCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" public void unmarkReturnUnmarkCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"unmark 1\") instanceof UnmarkCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" public void deleteReturnDeleteCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"delete 1\") instanceof DeleteCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" public void todoReturnTodoCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"todo\") instanceof TodoCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" public void deadlineReturnDeadlineCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"deadline\") instanceof DeadlineCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"B-enguin"},"content":" public void eventReturEventCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"event\") instanceof EventCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":87,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":89,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":90}},{"path":"src/test/java/duke/command/TodoCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"import java.util.List;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"public class TodoCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" public void todoCorrect(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new TodoCommand(\"task\");","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" assertEquals(\"[T][ ] task\",taskList.get(0).toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" List\u003cString\u003e lines \u003d List.of(\"0 todo task\");","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" assertLinesMatch(lines, Files.readAllLines(savePath.resolve(\"duke.txt\")));","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" public void missingArgument_throwsException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" new TodoCommand(null).execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":39}},{"path":"src/test/java/duke/command/UnmarkCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"import java.util.List;","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"public class UnmarkCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" public void unmarkCorrect(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath.resolve(\"duke.txt\").toString(), false);","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" writer.write(\"1 todo task\\n0 todo task1\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new UnmarkCommand(\"1\");","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" assertEquals(\" \", taskList.get(0).getStatusIcon());","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" List\u003cString\u003e lines \u003d List.of(\"0 todo task\",\"0 todo task1\");","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" assertLinesMatch(lines, Files.readAllLines(savePath.resolve(\"duke.txt\")));","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" public void withoutArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" new UnmarkCommand(\"\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" public void nonNumeric_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" new UnmarkCommand(\"notNumber\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" public void invalidNumericNumber_throwsDukeException(@TempDir Path savePath) throws IOException{","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath.resolve(\"duke.txt\").toString(), false);","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" writer.write(\"0 todo task\\n0 todo task1\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" new UnmarkCommand(\"3\").execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":66}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"randomCommand","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"todo buy bread","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"event eat bread /from now /to later","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"deadline make bread /by later","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"mark 1","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"mark 3","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"unmark 1","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"mark 4","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"bye","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"B-enguin":13}},{"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":"B-enguin"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-25"},{"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":{"B-enguin":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":"-"},"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":"B-enguin"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2023-08-20"},{"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":{"B-enguin":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"B-enguin":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"B-enguin":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"1 todo b","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"0 todo a","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"1 deadline a /by 2023-08-26","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"0 deadline c /by 2023-09-03","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"0 event task /from 2023-08-26 /to 2023-08-27","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"0 todo abc","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"B-enguin":6}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.command.Parser;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" * The main duke class.","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"public class Duke {","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" private UI ui;","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" private Storage storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" * Constructor for Duke class.","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" * @param savePath string of path to the savefile","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" public Duke(String savePath) {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" this.storage \u003d new Storage(savePath);","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" this.taskList \u003d this.storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" this.ui \u003d new UI(\"Heimdallr\");","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" UI.sendError(e.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" System.exit(0);","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" * Runs the duke program.","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" * Spins up the program until exit command is given by the user","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" public void run() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" String rawCommand \u003d UI.readMessage();","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" Command c \u003d Parser.parseCommand(rawCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" c.execute(this.taskList, this.ui, this.storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" UI.sendError(e.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":58}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":" * Represents an Exception specific to Duke.","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" public DukeException(String e) {","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" super(e);","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"B-enguin":10}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import duke.command.Parser;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" * Storage handler for duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"public class Storage {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" private final String savePath;","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" private final boolean isUpdatable \u003d true;","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" public Storage(String savePath) {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" this.savePath \u003d savePath;","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" * Updates the savefile to the most current tasks.","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current list of tasks","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" public void updateFile(TaskList taskList) {","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" if (isUpdatable) {","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath, false);","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" for (Task t : taskList) {","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" writer.write(t.getSaveString() + \"\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" UI.sendError(e.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" * Loads a TaskList from the given savefile.","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" * @return a TaskList constructed from the savefile","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException when file is corrupted","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" public TaskList load() throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" File save \u003d new File(this.savePath);","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" Scanner scanner \u003d new Scanner(save);","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" if (line.length() !\u003d 0) {","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" String[] s \u003d line.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" Command c \u003d Parser.parseCommand(s[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, this);","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" if (Integer.parseInt(s[0]) \u003d\u003d 1) {","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" taskList.get(taskList.size() - 1).markAsDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" scanner.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" return taskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" UI.sendError(e.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" File save \u003d new File(this.savePath);","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" save.createNewFile();","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" return new TaskList();","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" } catch (IOException innerE) {","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" throw new Error(\"Cannot create save file\");","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":80}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" * Represents an exit command by the user.","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"public class ByeCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"bye\";","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" return true;","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" // Nothing","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":24}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" * Represents a user command.","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"public interface Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" * Execute the given command.","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if there is error running the command","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" void execute(TaskList taskList, UI ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" * @return true if program should exit, false otherwise","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" boolean isExit();","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":30}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" * Command to create a Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"public class DeadlineCommand extends NonemptyArgumentCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"deadline\";","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" private final String arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" * Constructor for a DeadlineCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments for the DeadlineCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" public DeadlineCommand(String arguments) {","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" * They must,","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" * 1. Be in the format [description] /by YYYY-MM-DD","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" * @param arguments argument to validate","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException is argument is not valid","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" protected void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" super.validate(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" String[] userArgs \u003d arguments.split(\"/by \");","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" if (userArgs.length !\u003d 2) {","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Missing Argument for command: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" + commandString","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" + \", should include /by YYYY-MM-DD\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" if (Objects.equals(userArgs[1], \"\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Missing Argument for command: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" + commandString","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" + \", should include /by YYYY-MM-DD\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" LocalDate date \u003d LocalDate.parse(userArgs[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Invalid Date Format for command: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" + commandString","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" + \", should be /by YYYY-MM-DD\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" * Creates a Deadline task.","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if deadline task cannot be created","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"B-enguin"},"content":" validate(this.arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"B-enguin"},"content":" String[] userArgs \u003d arguments.split(\"/by \");","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"B-enguin"},"content":" LocalDate date \u003d LocalDate.parse(userArgs[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"B-enguin"},"content":" taskList.add(new Deadline(userArgs[0], date));","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"B-enguin"},"content":" + taskList.get(taskList.size() - 1)","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"B-enguin"},"content":" + String.format(\"\\nNow you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"B-enguin"},"content":" storage.updateFile(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":91,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":94,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":95,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":96,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":96}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" * Command to delete a Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"public class DeleteCommand extends NumberedChoiceCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"mark\";","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" private final String arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" * Constructor for the DeleteCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments for DeleteCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" public DeleteCommand(String arguments) {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" * Deletes a specified task.","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException when unable to delete","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" validate(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" int choice \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"Noted. I\u0027ve removed this task:\\n \"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" + taskList.get(choice)","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" + String.format(\"\\nNow you have %d tasks in the list.\", taskList.size() - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" taskList.remove(choice);","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" storage.updateFile(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" * They must be","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" * 1. Numeric","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" * 2. A valid choice given current tasks","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" private void validate(TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" super.validate(this.arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" int choice \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" if (choice \u003c 0 || choice \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Argument Provided out of range: \" + (choice + 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":74}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" * Command to create an Event Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"public class EventCommand extends NonemptyArgumentCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"event\";","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" private final String arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" * Constructor for an EventCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments for EventCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" public EventCommand(String arguments) {","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" * Validate arguments for this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" * They must,","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" * 1. Be in the format [description] /from YYYY-MM-DD /to YYYY-MM-DD","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments to validate","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" protected void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" super.validate(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" String[] userArgs \u003d arguments.split(\"/from \");","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" if (userArgs.length !\u003d 2) {","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Missing Argument for command: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" + commandString","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" + \", should include /from YYYY-MM-DD /to YYYY-MM-DD\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" String desc \u003d userArgs[0];","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" String[] subcommandArgs \u003d userArgs[1].split(\"/to \");","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" if (subcommandArgs.length !\u003d 2) {","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Missing Argument for command: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" + commandString","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" + \", should include /from YYYY-MM-DD /to YYYY-MM-DD\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" if (Objects.equals(subcommandArgs[0], \"\") || Objects.equals(subcommandArgs[1], \"\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Missing Argument for command: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" + commandString","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" + \", should include /from YYYY-MM-DD /to YYYY-MM-DD\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" LocalDate date \u003d LocalDate.parse(subcommandArgs[0].trim());","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" date \u003d LocalDate.parse(subcommandArgs[1].trim());","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Invalid Date Format for command: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" + commandString","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" + \"should be /from YYYY-MM-DD /to YYYY-MM-DD\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"B-enguin"},"content":" * Create an Event Task.","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if unable to create event","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":89,"author":{"gitId":"B-enguin"},"content":" validate(this.arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"B-enguin"},"content":" String[] userArgs \u003d arguments.split(\"/from |/to \");","lastModifiedDate":"2023-08-25"},{"lineNumber":91,"author":{"gitId":"B-enguin"},"content":" LocalDate from \u003d LocalDate.parse(userArgs[1].trim());","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"B-enguin"},"content":" LocalDate to \u003d LocalDate.parse(userArgs[2].trim());","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"B-enguin"},"content":" taskList.add(new Event(userArgs[0].trim(), from, to));","lastModifiedDate":"2023-08-25"},{"lineNumber":94,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"B-enguin"},"content":" + taskList.get(taskList.size() - 1)","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"B-enguin"},"content":" + String.format(\"\\nNow you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"B-enguin"},"content":" storage.updateFile(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":100,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":101,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":102,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":103,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":104,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":104}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" * Command to find a Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"public class FindCommand extends NonemptyArgumentCommand implements Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"find\";","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" private final String argument;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" public FindCommand(String argument) {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" this.argument \u003d argument;","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" protected void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" super.validate(arguments);","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" if (taskList.get(i).getDescription().contains(argument)) {","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" output.append(i + 1).append(\". \").append(taskList.get(i)).append(\"\\n\");","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" if (output.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"No Items in List\");","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"Here are the matching tasks in your list:\\n\" + output);","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"B-enguin":44}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" * Command to list Tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"list\";","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" private final String argument;","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" * Constructor for ListCommand.","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" * @param argument arguments for ListCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" public ListCommand(String argument) {","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" this.argument \u003d argument;","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" * They must have one of the following formats,","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" * \u003cul\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" * \u003cli\u003elist\u003c/li\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" * \u003cli\u003elist now\u003c/li\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" * \u003cli\u003elist YYYY-MM-DD\u003c/li\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments to validate","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" private void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" if (arguments !\u003d null) {","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" // Non null argument, check format","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" if (arguments.equals(\"now\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" return;","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" // User Specified Date, check date","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" LocalDate date \u003d LocalDate.parse(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" \"Invalid Date Format Provided, expected either:\\n\\tlist\\n\\tlist now\\n\\tlist YYYY-MM-DD\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" * List tasks depending on arguments.","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" * \u003cul\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" * \u003cli\u003elist: list all tasks\u003c/li\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" * \u003cli\u003elist now: list all tasks ending within 1 week from now\u003c/li\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" * \u003cli\u003elist YYYY-MM-DD: list all task ending before specified date\u003c/li\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if unable to list tasks","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"B-enguin"},"content":" validate(this.argument);","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"B-enguin"},"content":" LocalDate date;","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"B-enguin"},"content":" if (this.argument !\u003d null) {","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"B-enguin"},"content":" if (this.argument.equals(\"now\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":87,"author":{"gitId":"B-enguin"},"content":" date \u003d LocalDate.now().plusWeeks(1L);","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"B-enguin"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":89,"author":{"gitId":"B-enguin"},"content":" date \u003d LocalDate.parse(this.argument);","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":91,"author":{"gitId":"B-enguin"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"B-enguin"},"content":" date \u003d LocalDate.MAX;","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":94,"author":{"gitId":"B-enguin"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2023-08-25"},{"lineNumber":95,"author":{"gitId":"B-enguin"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-25"},{"lineNumber":96,"author":{"gitId":"B-enguin"},"content":" if (taskList.get(i).isBefore(date)) {","lastModifiedDate":"2023-08-25"},{"lineNumber":97,"author":{"gitId":"B-enguin"},"content":" output.append(i + 1).append(\". \").append(taskList.get(i)).append(\"\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":100,"author":{"gitId":"B-enguin"},"content":" if (output.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-25"},{"lineNumber":101,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"No Items in List\");","lastModifiedDate":"2023-08-25"},{"lineNumber":102,"author":{"gitId":"B-enguin"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":103,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(output.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":104,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":105,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":106,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":107,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":108,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":109,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":110,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":111,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":111}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" * Command to mark a Task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"public class MarkCommand extends NumberedChoiceCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"mark\";","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" private final String arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" * Constructor for MarkCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments for MarkCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" public MarkCommand(String arguments) {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" * Mark a Task as done.","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if unable to mark task as done","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" validate(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" int choice \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" taskList.get(choice).markAsDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"Nice! I\u0027ve marked this task as done:\\n \" + taskList.get(choice));","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" storage.updateFile(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" * They must be,","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" * 1. Numeric","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" * 2. Valid Choice for the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" * @param taskList The current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" private void validate(TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" super.validate(this.arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" int choice \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" if (choice \u003c 0 || choice \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Argument Provided out of range: \" + (choice + 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":73}},{"path":"src/main/java/duke/command/NonemptyArgumentCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":" * Represents an argument with one or more non-empty arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" * In the structure [command] [args]","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"public abstract class NonemptyArgumentCommand {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments to validate","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" protected void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" if (arguments \u003d\u003d null) {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(String.format(\"Missing Argument for NonemptyArgumentCommand: %s\", this));","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":23}},{"path":"src/main/java/duke/command/NumberedChoiceCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":" * Represents a command with a non-empty numerical argument.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" * Should be of the structure [command] [number], where number is a task id.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"public abstract class NumberedChoiceCommand extends NonemptyArgumentCommand {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments to validate","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" protected void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" super.validate(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" int i \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Invalid Argument Provided, expected numeric argument: \" + arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":27}},{"path":"src/main/java/duke/command/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":" * Raw text handler for duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"public class Parser {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" * Parse the raw input from user","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" * @param rawCommand the raw input given by the user","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" * @return the command if it exists","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if no matching command is found","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" public static Command parseCommand(String rawCommand) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" // Clean Raw Input","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" rawCommand \u003d rawCommand.trim().replaceAll(\" +\", \" \");","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" // Read Command","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" String[] userInput \u003d rawCommand.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" String command \u003d userInput[0];","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" String arguments \u003d userInput.length \u003d\u003d 2 ? userInput[1] : null;","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" switch (command) {","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" case \"bye\":","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" case \"list\":","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" return new ListCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" case \"mark\":","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" return new MarkCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" return new UnmarkCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" case \"delete\":","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" return new DeleteCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" case \"todo\":","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" return new TodoCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" return new DeadlineCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" case \"event\":","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" return new EventCommand(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" default:","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Invalid Command: \" + command + \" , Please Try Again...\");","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":46}},{"path":"src/main/java/duke/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" * Command to create a Todo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"public class TodoCommand extends NonemptyArgumentCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"todo\";","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" private final String arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" * Constructor for TodoCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments for TodoCommand","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" public TodoCommand(String arguments) {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" * Validate arguments to this command.","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" * They must not be empty","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments to validate","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" protected void validate(String arguments) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" super.validate(arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" * Create a Todo Task","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if unable to create Todo task","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" validate(this.arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" taskList.add(new Todo(this.arguments));","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" + taskList.get(taskList.size() - 1)","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" + String.format(\"\\nNow you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" storage.updateFile(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":70}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import duke.ui.UI;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" * Command to set a Task to not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"public class UnmarkCommand extends NumberedChoiceCommand implements Command {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" private static final String commandString \u003d \"unmark\";","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" private final String arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" * Constructor for Unmark command","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" * @param arguments arguments to Unmark command","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" public UnmarkCommand(String arguments) {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" * If program should exit after command execution.","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" * @return false","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" return false;","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" * Mark a task as not done.","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" * @param ui the UI tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" * @param storage the Storage tied to the program","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if unable to mark a task as not done","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" validate(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" int choice \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" taskList.get(choice).markAsNotDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" UI.sendMessage(\"OK, I\u0027ve marked this task as not done yet:\\n \" + taskList.get(choice));","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" storage.updateFile(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" * Validate the arguments to this command","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" * They must be,","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" * 1. Numeric","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" * 2. Valid choice for the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" * @param taskList the current TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" * @throws DukeException if arguments are invalid","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" private void validate(TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" super.validate(this.arguments);","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" int choice \u003d Integer.parseInt(arguments) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" if (choice \u003c 0 || choice \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" throw new DukeException(\"Argument Provided out of range: \" + (choice + 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" return commandString;","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":72}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.task;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" * Represents a Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" * Constructor to Deadline Task.","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" * @param description description of task","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" * @param by date task is due","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" super(description);","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-19"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" * Returns if task is before given date.","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" * @param date given date to check against","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" * @return true if task is before given date, false otherwise","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" public boolean isBefore(LocalDate date) {","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" return this.by.isBefore(date);","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" * Get string representation of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" * @return string representation of task","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" * Get a string representing this event to save to file.","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" * @return string representing this event to save to file","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" return String.format(\"%d deadline %s /by %s\", isDone ? 1 : 0, description.trim(), by);","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"B-enguin":55}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.task;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" * Represents an Event Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" protected LocalDate from;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" protected LocalDate to;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" * Constructor to Event Task.","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" * @param description description of task","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" * @param from task start date","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" * @param to task end date","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" super(description);","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-19"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-19"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" * Returns if task is before given date.","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" * @param date given date to check against","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" * @return true if task is before given date, false otherwise","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" public boolean isBefore(LocalDate date) {","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" return this.to.isBefore(date);","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" * Get string representation of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" * @return string representation of task","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" return String.format(\"[E]%s (from: %s to: %s)\",","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" super.toString(),","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")),","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" * Get a string representing this event to save to file.","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" * @return string representing this event to save to file","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" return String.format(\"%d event %s /from %s /to %s\", isDone ? 1 : 0, description.trim(), from, to);","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"B-enguin":62}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.task;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":" * Represents a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" protected String description;","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" * Constructor for Task.","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" * @param description description of task","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" * String representing status of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" * @return string representing status of task","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-19"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-19"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" * Change task to done","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-19"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-19"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" * Change task to not done","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-19"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-19"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" * Get a string representing this event to save to file.","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" * @return string representing this event to save to file","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" return \"\";","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" * Returns a description of the event","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" * @return a string representing the description of the event","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" return description;","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" * Returns if task is before given date.","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" * @param date given date to check against","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" * @return true","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" public boolean isBefore(LocalDate date) {","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" return true;","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" * Get string representation of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" *","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" * @return string representation of task","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":79,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":80,"author":{"gitId":"B-enguin"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-19"},{"lineNumber":81,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":82,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"B-enguin":82}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.task;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":" * Represents a task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"public class TaskList extends ArrayList\u003cTask\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":9}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.task;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":" * Represents a Todo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" super(description);","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" return String.format(\"%d todo %s\", isDone ? 1 : 0, description.trim());","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"B-enguin":22}},{"path":"src/main/java/duke/ui/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.ui;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":" * UI Handler for duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"public class UI {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" private static final Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" private static boolean isActive \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" private final String name;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" private enum Colors {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" RESET(\"\\u001B[0m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" BLACK(\"\\u001B[30m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" RED(\"\\u001B[31m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":" GREEN(\"\\u001B[32m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" YELLOW(\"\\u001B[33m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" BLUE(\"\\u001B[34m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" PURPLE(\"\\u001B[35m\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" CYAN(\"\\u001B[36m\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" private final String code;","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" Colors(String c) {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" code \u003d c;","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" return code;","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" * Constructor for a UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" * @param name name of the application","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" public UI(String name) {","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" UI.isActive \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" // Send Greeting Message","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" sendMessage(String.format(\"Hello! I\u0027m %s\\nWhat can I do for you?\", this.name));","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" public static void exit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" sendMessage(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" * Prints a message to the set output.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" * @param msgs the message to print","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" public static void sendMessage(String msgs) {","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" if (isActive) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" for (String msg : msgs.split(\"\\n\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" System.out.println(\"\\t\" + Colors.CYAN + msg + Colors.RESET);","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" * Prints a error to the set output.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" * @param msgs the error to print","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" public static void sendError(String msgs) {","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" for (String msg : msgs.split(\"\\n\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" System.out.println(\"\\t\" + Colors.RED + msg + Colors.RESET);","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" public static void printLine() {","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":" System.out.println(\"\\t____________________________________________________________\");","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"B-enguin"},"content":" public static String readMessage() {","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"B-enguin"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":85}},{"path":"src/test/java/duke/command/ByeCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"public class ByeCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":" public void byeCommandShouldExit() {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new ByeCommand();","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" assertTrue(c.isExit());","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":14}},{"path":"src/test/java/duke/command/DeadlineCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertLinesMatch;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.util.List;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"public class DeadlineCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" public void deadlineCorrect(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new DeadlineCommand(\"task /by 2023-08-26\");","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" assertEquals(\"[D][ ] task (by: Aug 26 2023)\", taskList.get(0).toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" List\u003cString\u003e lines \u003d List.of(\"0 deadline task /by 2023-08-26\");","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" assertLinesMatch(lines, Files.readAllLines(savePath.resolve(\"duke.txt\")));","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" public void withoutArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" new DeadlineCommand(\"\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" public void missingArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" new DeadlineCommand(\"task\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" public void missingTimeArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" new DeadlineCommand(\"task /by\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" public void invalidTimeArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" new DeadlineCommand(\"task /by s\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" public void invalidTimeFormat_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" new DeadlineCommand(\"task /by 26-08-2023\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" public void invalidSubcommand_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" new DeadlineCommand(\"task /to 26-08-2023\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":78}},{"path":"src/test/java/duke/command/DeleteCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertLinesMatch;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import java.util.List;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" public void deleteCorrect(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath.resolve(\"duke.txt\").toString(), false);","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" writer.write(\"0 todo task\\n0 todo task1\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new DeleteCommand(\"1\");","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" List\u003cString\u003e lines \u003d List.of(\"0 todo task1\");","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" assertLinesMatch(lines, Files.readAllLines(savePath.resolve(\"duke.txt\")));","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" public void withoutArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" new DeleteCommand(\"\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" public void nonNumeric_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" new DeleteCommand(\"notNumber\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" public void invalidNumericNumber_throwsDukeException(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath.resolve(\"duke.txt\").toString(), false);","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" writer.write(\"0 todo task\\n0 todo task1\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" new DeleteCommand(\"3\").execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":70}},{"path":"src/test/java/duke/command/EventCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertLinesMatch;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.util.List;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"public class EventCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" public void eventCorrect(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new EventCommand(\"task /from 2023-08-26 /to 2023-08-27\");","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" assertEquals(\"[E][ ] task (from: Aug 26 2023 to: Aug 27 2023)\", taskList.get(0).toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" List\u003cString\u003e lines \u003d List.of(\"0 event task /from 2023-08-26 /to 2023-08-27\");","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" assertLinesMatch(lines, Files.readAllLines(savePath.resolve(\"duke.txt\")));","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" assertEquals(0, 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" public void withoutArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" new EventCommand(\"\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" public void missingArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" new EventCommand(\"task\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" public void missingTimeArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" new EventCommand(\"task /by\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" public void invalidTimeArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" new EventCommand(\"task /by s\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" public void invalidTimeFormat_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" new EventCommand(\"task /by 26-08-2023\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":" public void invalidSubcommand_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" new EventCommand(\"task /from 2023-08-26 /from 2023-08-26\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":78}},{"path":"src/test/java/duke/command/MarkCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertLinesMatch;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import java.util.List;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":"public class MarkCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" public void markCorrect(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath.resolve(\"duke.txt\").toString(), false);","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" writer.write(\"0 todo task\\n0 todo task1\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new MarkCommand(\"1\");","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" assertEquals(\"X\", taskList.get(0).getStatusIcon());","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" List\u003cString\u003e lines \u003d List.of(\"1 todo task\", \"0 todo task1\");","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" assertLinesMatch(lines, Files.readAllLines(savePath.resolve(\"duke.txt\")));","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" public void withoutArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" new MarkCommand(\"\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" public void nonNumeric_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" new MarkCommand(\"notNumber\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" public void invalidNumericNumber_throwsDukeException(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath.resolve(\"duke.txt\").toString(), false);","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" writer.write(\"0 todo task\\n0 todo task1\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" new MarkCommand(\"3\").execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":69}},{"path":"src/test/java/duke/command/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":" public void invalidCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":" Parser.parseCommand(\"thisIsInvalid\");","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":" public void byeReturnsByeCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"bye\") instanceof ByeCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" public void listReturnsListCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"list\") instanceof ListCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" public void markReturnsMarkCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"mark 1\") instanceof MarkCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" public void unmarkReturnUnmarkCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"unmark 1\") instanceof UnmarkCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" public void deleteReturnDeleteCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"delete 1\") instanceof DeleteCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" public void todoReturnTodoCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"todo\") instanceof TodoCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"B-enguin"},"content":" public void deadlineReturnDeadlineCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"deadline\") instanceof DeadlineCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"B-enguin"},"content":" public void eventReturEventCommand() {","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"B-enguin"},"content":" assertTrue(Parser.parseCommand(\"event\") instanceof EventCommand);","lastModifiedDate":"2023-08-25"},{"lineNumber":87,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":91,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":91}},{"path":"src/test/java/duke/command/TodoCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertLinesMatch;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.util.List;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"public class TodoCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" public void todoCorrect(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new TodoCommand(\"task\");","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" assertEquals(\"[T][ ] task\", taskList.get(0).toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" List\u003cString\u003e lines \u003d List.of(\"0 todo task\");","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" assertLinesMatch(lines, Files.readAllLines(savePath.resolve(\"duke.txt\")));","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" public void missingArgument_throwsException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" new TodoCommand(null).execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":43}},{"path":"src/test/java/duke/command/UnmarkCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"package duke.command;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertLinesMatch;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"import java.util.List;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"B-enguin"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"B-enguin"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"B-enguin"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"B-enguin"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"B-enguin"},"content":"public class UnmarkCommandTest {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"B-enguin"},"content":" public void unmarkCorrect(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath.resolve(\"duke.txt\").toString(), false);","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"B-enguin"},"content":" writer.write(\"1 todo task\\n0 todo task1\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"B-enguin"},"content":" Command c \u003d new UnmarkCommand(\"1\");","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"B-enguin"},"content":" c.execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"B-enguin"},"content":" assertEquals(\" \", taskList.get(0).getStatusIcon());","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"B-enguin"},"content":" List\u003cString\u003e lines \u003d List.of(\"0 todo task\", \"0 todo task1\");","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"B-enguin"},"content":" assertLinesMatch(lines, Files.readAllLines(savePath.resolve(\"duke.txt\")));","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"B-enguin"},"content":" public void withoutArgument_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"B-enguin"},"content":" new UnmarkCommand(\"\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"B-enguin"},"content":" public void nonNumeric_throwsDukeException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"B-enguin"},"content":" new UnmarkCommand(\"notNumber\").execute(null, null, null);","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"B-enguin"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"B-enguin"},"content":" @Test","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"B-enguin"},"content":" public void invalidNumericNumber_throwsDukeException(@TempDir Path savePath) throws IOException {","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"B-enguin"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"B-enguin"},"content":" Storage storage \u003d new Storage(savePath.resolve(\"duke.txt\").toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"B-enguin"},"content":" FileWriter writer \u003d new FileWriter(savePath.resolve(\"duke.txt\").toString(), false);","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"B-enguin"},"content":" writer.write(\"0 todo task\\n0 todo task1\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"B-enguin"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"B-enguin"},"content":" TaskList taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"B-enguin"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"B-enguin"},"content":" new UnmarkCommand(\"3\").execute(taskList, null, storage);","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"B-enguin"},"content":" });","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"B-enguin"},"content":" } catch (DukeException ignored) {","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"B-enguin"},"content":" // Do Nothing","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"B-enguin"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"B-enguin"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"B-enguin":69}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"B-enguin"},"content":"randomCommand","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"B-enguin"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"B-enguin"},"content":"todo buy bread","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"B-enguin"},"content":"event eat bread /from now /to later","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"B-enguin"},"content":"deadline make bread /by later","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"B-enguin"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"B-enguin"},"content":"mark 1","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"B-enguin"},"content":"mark 3","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"B-enguin"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"B-enguin"},"content":"unmark 1","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"B-enguin"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"B-enguin"},"content":"mark 4","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"B-enguin"},"content":"bye","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"B-enguin":13}},{"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":"B-enguin"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-25"},{"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":{"B-enguin":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":"-"},"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":"B-enguin"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2023-08-20"},{"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":{"B-enguin":1,"-":37}}] diff --git a/B-enguin_ip_master/commits.json b/B-enguin_ip_master/commits.json index 6320fc21..bb567328 100644 --- a/B-enguin_ip_master/commits.json +++ b/B-enguin_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"B-enguin":[{"date":"2023-08-19","commitResults":[{"hash":"a603492d9166ad1e6f0b1d5213bc9f98beb32d0e","isMergeCommit":false,"messageTitle":"Implemented Level-0 Requirements","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"94c70140eaddd43f2742ce09bf68467b54d93844","isMergeCommit":false,"messageTitle":"Implemented Level-1 Requirements","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":6}}},{"hash":"92e269c766f813ed0f899f6782067426c920a8b0","isMergeCommit":false,"messageTitle":"Implemented Level-2 Requirements","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"864fac5977e54c6cf81050fbfd1bd217bb9b2b31","isMergeCommit":false,"messageTitle":"Implemented Level-3, A-Classes Requirements","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":2}}},{"hash":"c7f5bc781c2333bd0107835edb0a7f7b2583e185","isMergeCommit":false,"messageTitle":"Implemented Level-4, A-Inheritance Requirements","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":31}}}]},{"date":"2023-08-20","commitResults":[{"hash":"acfefc15b8f06bf439f2bedf7d2a755bc7332121","isMergeCommit":false,"messageTitle":"Implemented A-TextUiTesting Requirements","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":7,"deletions":3},"sh":{"insertions":1,"deletions":1}}},{"hash":"387e67973b1d90c03e5975225762c0891ac94ae5","isMergeCommit":false,"messageTitle":"Implemented Level-5, A-Exceptions Requirements","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":62}}},{"hash":"187c1d7a0b9f7661b346ca71930f732bd6bc202a","isMergeCommit":false,"messageTitle":"Implemented Level-6, A-Collections Requirements","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":24}}},{"hash":"10402b37b3d396ba29b67382f018506c3ad62545","isMergeCommit":false,"messageTitle":"Implemented A-Enums Requirements","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":2}}}]},{"date":"2023-08-25","commitResults":[{"hash":"4f65672552935a08c7c90215f6c1f35201e1ead4","isMergeCommit":false,"messageTitle":"Refactor for A-MoreOOP, A-Packages. Added requirements for Level-7","messageBody":"","tags":["Level-7","A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":640,"deletions":199},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"a8e5ae6104c59a8ce190a1c61361cad02b2cae90","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"736953cbdfb6a2549253c1e2bebe1c84259dac31","isMergeCommit":false,"messageTitle":"Added Tracking for save data","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"c0bbf458c48270f28d945a3d55c775064f3e2aaa","isMergeCommit":false,"messageTitle":"Implemented Level-8 Requirements","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":100,"deletions":18}}},{"hash":"9fc8adacbff01a9574a6a103903badfd1363ab1a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5a545abf343177df643ea7de44e5af7b37d338b3","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"c245787f42051f13070d90eef92a049086d40f7d","isMergeCommit":false,"messageTitle":"Fix build.gradle for project structure","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"b30385829ea56f5ae2734e235d02a0cea6c68f63","isMergeCommit":false,"messageTitle":"Add A-JUnit requirements","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":520,"deletions":11}}},{"hash":"2395d27320f66afa7b183112a712fcb7a1956b37","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-26","commitResults":[{"hash":"966df7180ea6b34a38a2883ece4fcfe8a975b11b","isMergeCommit":false,"messageTitle":"Add Javadocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":334,"deletions":4}}},{"hash":"0989a3e492251f77f9c202c2319a52c26fe876be","isMergeCommit":false,"messageTitle":"Add A-CodingStandard Requirements","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":82}}},{"hash":"e2d27c50b2a3aac202ce225448baec216d409388","isMergeCommit":false,"messageTitle":"Add Level-9 Requirements","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":45}}},{"hash":"fdd1bfe60474d6cbc06507e629256551853fc40b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"18427960fe60ee395f2eb814331405c3689e7ea0","isMergeCommit":true,"messageTitle":"Add Level-9 Requirements","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"fb715cb21eaa21f741fe229359972cc7b116970a","isMergeCommit":false,"messageTitle":"Fix missing getDescription from Task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":9,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"B-enguin":{"java":1679,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":1,"txt":19}},"authorContributionVariance":{"B-enguin":184363.73},"authorDisplayNameMap":{"B-enguin":"CS2103T-T13-3 BENJ.. HUI"}} +{"authorDailyContributionsMap":{"B-enguin":[{"date":"2023-08-19","commitResults":[{"hash":"a603492d9166ad1e6f0b1d5213bc9f98beb32d0e","isMergeCommit":false,"messageTitle":"Implemented Level-0 Requirements","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"94c70140eaddd43f2742ce09bf68467b54d93844","isMergeCommit":false,"messageTitle":"Implemented Level-1 Requirements","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":6}}},{"hash":"92e269c766f813ed0f899f6782067426c920a8b0","isMergeCommit":false,"messageTitle":"Implemented Level-2 Requirements","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"864fac5977e54c6cf81050fbfd1bd217bb9b2b31","isMergeCommit":false,"messageTitle":"Implemented Level-3, A-Classes Requirements","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":2}}},{"hash":"c7f5bc781c2333bd0107835edb0a7f7b2583e185","isMergeCommit":false,"messageTitle":"Implemented Level-4, A-Inheritance Requirements","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":31}}}]},{"date":"2023-08-20","commitResults":[{"hash":"acfefc15b8f06bf439f2bedf7d2a755bc7332121","isMergeCommit":false,"messageTitle":"Implemented A-TextUiTesting Requirements","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":7,"deletions":3},"sh":{"insertions":1,"deletions":1}}},{"hash":"387e67973b1d90c03e5975225762c0891ac94ae5","isMergeCommit":false,"messageTitle":"Implemented Level-5, A-Exceptions Requirements","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":62}}},{"hash":"187c1d7a0b9f7661b346ca71930f732bd6bc202a","isMergeCommit":false,"messageTitle":"Implemented Level-6, A-Collections Requirements","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":24}}},{"hash":"10402b37b3d396ba29b67382f018506c3ad62545","isMergeCommit":false,"messageTitle":"Implemented A-Enums Requirements","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":2}}}]},{"date":"2023-08-25","commitResults":[{"hash":"4f65672552935a08c7c90215f6c1f35201e1ead4","isMergeCommit":false,"messageTitle":"Refactor for A-MoreOOP, A-Packages. Added requirements for Level-7","messageBody":"","tags":["Level-7","A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":640,"deletions":199},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"a8e5ae6104c59a8ce190a1c61361cad02b2cae90","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"736953cbdfb6a2549253c1e2bebe1c84259dac31","isMergeCommit":false,"messageTitle":"Added Tracking for save data","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"c0bbf458c48270f28d945a3d55c775064f3e2aaa","isMergeCommit":false,"messageTitle":"Implemented Level-8 Requirements","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":100,"deletions":18}}},{"hash":"9fc8adacbff01a9574a6a103903badfd1363ab1a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5a545abf343177df643ea7de44e5af7b37d338b3","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"c245787f42051f13070d90eef92a049086d40f7d","isMergeCommit":false,"messageTitle":"Fix build.gradle for project structure","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"b30385829ea56f5ae2734e235d02a0cea6c68f63","isMergeCommit":false,"messageTitle":"Add A-JUnit requirements","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":520,"deletions":11}}},{"hash":"2395d27320f66afa7b183112a712fcb7a1956b37","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-26","commitResults":[{"hash":"966df7180ea6b34a38a2883ece4fcfe8a975b11b","isMergeCommit":false,"messageTitle":"Add Javadocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":334,"deletions":4}}},{"hash":"0989a3e492251f77f9c202c2319a52c26fe876be","isMergeCommit":false,"messageTitle":"Add A-CodingStandard Requirements","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":82}}},{"hash":"e2d27c50b2a3aac202ce225448baec216d409388","isMergeCommit":false,"messageTitle":"Add Level-9 Requirements","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":45}}},{"hash":"fdd1bfe60474d6cbc06507e629256551853fc40b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"18427960fe60ee395f2eb814331405c3689e7ea0","isMergeCommit":true,"messageTitle":"Add Level-9 Requirements","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"fb715cb21eaa21f741fe229359972cc7b116970a","isMergeCommit":false,"messageTitle":"Fix missing getDescription from Task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":9,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"14486907201708a3603bb192960ee6092680c8b6","isMergeCommit":false,"messageTitle":"Modify project to follow checkstyle.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":216,"deletions":126}}},{"hash":"bccf06c22dcc29f1bdba4ee2d391deacf485d552","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Checkstyle\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"B-enguin":{"java":1769,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":1,"txt":19}},"authorContributionVariance":{"B-enguin":154663.73},"authorDisplayNameMap":{"B-enguin":"CS2103T-T13-3 BENJ.. HUI"}} diff --git a/CJ-Lee01_ip_master/authorship.json b/CJ-Lee01_ip_master/authorship.json index 3c2c44cd..bb7b41e4 100644 --- a/CJ-Lee01_ip_master/authorship.json +++ b/CJ-Lee01_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/duke/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"public enum Commands {","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":" //alr implemented enums.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" deadline,","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" todo,","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":" event,","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" bye,","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" list,","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" mark,","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" unmark,","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" delete,","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" unknown;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" public static Commands get(String cmd) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" Commands c;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" c \u003d Commands.valueOf(cmd);","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IllegalArgumentException | NullPointerException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" c \u003d Commands.unknown;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" return c;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CJ-Lee01":23}},{"path":"src/main/java/duke/DateTimeOptional.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.temporal.TemporalAccessor;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"public abstract class DateTimeOptional {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" private static DateTimeFormatter standardDateTimeParser \u003d DateTimeFormatter","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" .ofPattern(\"[yyyy MM dd[ HHmm]][yyyy-MM-dd[ HHmm]][yyyy/MM/dd[ HHmm]]\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" private static DateTimeFormatter standardDateTimeDisplay \u003d DateTimeFormatter","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" .ofPattern(\"dd-MM-yyyy [HH:mm]\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" public static DateTimeOptional parseDateTime(String s) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" TemporalAccessor temp \u003d standardDateTimeParser.parse(s);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(s, standardDateTimeParser);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" return new DateTimeOnly(dateTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" LocalDate date \u003d LocalDate.parse(s, standardDateTimeParser);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" return new DateOnly(date);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException.DukeDateTimeException(s);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" public abstract String displayText();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" private static class DateOnly extends DateTimeOptional {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" final LocalDate date;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" DateOnly(LocalDate date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" return this.date.format(standardDateTimeParser);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" public String displayText() {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" return this.date.format(standardDateTimeDisplay);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" private static class DateTimeOnly extends DateTimeOptional {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" final LocalDateTime date;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" DateTimeOnly(LocalDateTime date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" return this.date.format(standardDateTimeParser);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" public String displayText() {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" return this.date.format(standardDateTimeDisplay);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CJ-Lee01":65}},{"path":"src/main/java/duke/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":" private DateTimeOptional deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" public static Deadlines create(String rawLine) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" if (rawLine.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Err: Empty Description\");","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" String[] instructions \u003d rawLine.split(\" /by \");","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" if (instructions.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Err: No deadline given. Format - deadline \u003cdescription\u003e /by \u003cdeadline\u003e\");","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" DateTimeOptional deadline \u003d DateTimeOptional.parseDateTime(instructions[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" return new Deadlines(instructions[0], deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException.DukeDateTimeException(instructions[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" public Deadlines(String item, DateTimeOptional deadline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" super(item);","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" \"deadline %d %s /by %s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" super.isDone ? 1 : 0,","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" super.description,","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" this.deadline","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" \"[D][%s] %s (by %s)\",","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" super.getStatusIcon(),","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" super.description,","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" this.deadline.displayText()","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CJ-Lee01":46}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"public class Duke {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" private static final String NAME \u003d \"Nino!\";","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" UserInterface userInterface \u003d new UserInterface(new Storage(), new StoreList());","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" System.out.println(\"Hello, my name is \" + Duke.NAME);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" UserInterface.display(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" userInterface.start();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" userInterface.readCommandLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" userInterface.exit();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CJ-Lee01":19}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" public static class DukeDateTimeException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" public DukeDateTimeException(String s) {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":" super(\"Err: DateTime given does not fit the format. Expected: yyyy MM DD HHmm. Got \"+ s);","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" public DukeException(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"CJ-Lee01":12}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" private DateTimeOptional startTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" private DateTimeOptional endTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" public static Event create(String rawLine) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" if (rawLine.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Err: Empty Description\");","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" String[] instructions \u003d rawLine.split(\" /from \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" if (instructions.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Err: No start time given. Format is in event \u003cdesc\u003e /from \u003ctime\u003e /to \u003ctime\u003e\");","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" String[] timeLine \u003d instructions[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" if (timeLine.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Err: No end time given. Format is in event \u003cdesc\u003e /from \u003ctime\u003e /to \u003ctime\u003e\");","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" DateTimeOptional startDate, endDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" startDate \u003d DateTimeOptional.parseDateTime(timeLine[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException.DukeDateTimeException(timeLine[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" endDate \u003d DateTimeOptional.parseDateTime(timeLine[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException.DukeDateTimeException(timeLine[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" return new Event(instructions[0], startDate, endDate);","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" public Event(String description, DateTimeOptional startTime, DateTimeOptional endTime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" \"event %d %s /from %s /to %s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" super.isDone ? 1 : 0,","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" super.description,","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" this.startTime,","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" this.endTime","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" \"[E][%s] %s (from: %s to: %s)\",","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" super.getStatusIcon(),","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" super.description,","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" this.startTime.displayText(),","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" this.endTime.displayText()","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CJ-Lee01":65}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" public static Task[] parseFile(Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" String[] lines \u003d storage.readLines();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" for (String line: lines) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" tasks.add(parseTaskFromFileLine(line));","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" return tasks.toArray(new Task[]{});","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" private static Task parseTaskFromFileLine(String s) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" String[] tokens \u003d s.split(\" \", 3);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" Commands c \u003d Commands.valueOf(tokens[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" boolean done \u003d !tokens[1].equals(\"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" String desc \u003d tokens[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" Task task \u003d Task.create(c, desc);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" if (done) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IllegalArgumentException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Corrupted file. Delete all text in the duke.txt to use it again.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Corrupted file. Delete all text in the duke.txt to use it again.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" public static Task parseTask(String s) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" if (s.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Empty line found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" String[] instructions \u003d s.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" Commands cmd \u003d Commands.get(instructions[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" return Parser.parseTask(cmd, instructions);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" public static Task parseTask(Commands cmd, String[] instructions) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" if (instructions.length !\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"No details given for command: \" + cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" return Task.create(cmd, instructions[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"CJ-Lee01":53}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" private static final String FILE_PATH \u003d \"../../duke.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" public Storage(File file) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" this.file \u003d file;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" public Storage(String pathName) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" this.file \u003d new File(pathName);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Unable to find or create file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" public Storage() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" this.file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Unable to find or create file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" public String[] readLines() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" Scanner sc;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" sc \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"File not found.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" ArrayList\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" lines.add(sc.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" return lines.toArray(new String[]{});","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" public void write(String s) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" PrintWriter pw \u003d new PrintWriter(fileWriter);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" pw.write(s);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" pw.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" pw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" System.out.println(\"Unable to write to duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"CJ-Lee01":64}},{"path":"src/main/java/duke/StoreList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.Collection;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"public class StoreList {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" public StoreList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" String add(Commands type, String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" Task task \u003d Task.create(type, description);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" list.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" \"added: %s\\nYou have %d tasks.\",","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" task,","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" list.size()","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" return e.toString();","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" public String add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" list.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" \"added: %s\\nYou have %d tasks.\",","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" task,","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" list.size()","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" public void addTasks(Collection\u003c? extends Task\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" list.addAll(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" String markDone(String position) {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" int index \u003d Integer.parseInt(position) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(\"Nice! You have completed the task:\\n %s\", task);","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" return \"Err: Index provided is not an integer\";","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" return \"Err: Index provided is out of position of the list\";","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" String markUndone(String position) {","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" int index \u003d Integer.parseInt(position) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(\"Ok! duke.Task marked undone:\\n %s\", task);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" return \"Err: Index provided is not an integer\";","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" return \"Err: Index provided is out of position of the list\";","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" String delete(String position) {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" int index \u003d Integer.parseInt(position) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" Task task \u003d list.remove(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" \"removed: %s\\nYou have %d tasks.\",","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" task,","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" list.size()","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" return \"Err: Index provided is not an integer\";","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"CJ-Lee01"},"content":" return \"Err: Index provided is out of position of the list\";","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" return \"You have no tasks :).\";","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" result +\u003d String.format(\" %d. %s\\n\", i + 1, list.get(i));","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" return result;","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" public String showSaveText() {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" String saveText \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" saveText +\u003d list.get(i).fileString() + (i + 1 \u003d\u003d list.size() ? \"\" : \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"CJ-Lee01"},"content":" return saveText;","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"CJ-Lee01":101}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":" protected boolean isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" public static Task create(Commands command, String rawLine) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" switch (command) {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" case todo:","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" return ToDo.create(rawLine);","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" case deadline:","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" return Deadlines.create(rawLine);","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" case event:","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" return Event.create(rawLine);","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" default:","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" throw new RuntimeException(\"Command not recognized\"); //literally should not run","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" public abstract String fileString();","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CJ-Lee01":43}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" public static ToDo create(String description) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Err: Empty Description\");","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" return new ToDo(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" \"todo %d %s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" super.isDone ? 1 : 0,","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" super.description","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" \"[T][%s] %s\",","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" super.getStatusIcon(),","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" super.description","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CJ-Lee01":32}},{"path":"src/main/java/duke/UserInterface.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"public class UserInterface {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" private Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" private StoreList list;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" public UserInterface(Storage storage, StoreList list) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" this.list \u003d list;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" public boolean hasNextCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" return sc.hasNext();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" public void start() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" Task[] tasks \u003d Parser.parseFile(this.storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" this.list.addTasks(List.of(tasks));","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" public void readCommandLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" Reading: while (true) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" String line \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" if (line.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" display(\"Err: No command input\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" continue;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" String[] instruction \u003d line.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" Commands cmd \u003d Commands.get(instruction[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" String response;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" switch (cmd) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" case bye:","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" this.save();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" break Reading;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" case list:","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d list.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" display(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" case deadline:","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" case todo:","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" case event:","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" Task task \u003d Parser.parseTask(cmd, instruction);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d list.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" display(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" display(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" case mark:","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d list.markDone(instruction[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" display(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" display(\"Err: Index not in range of list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" case unmark:","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d list.markUndone(instruction[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" display(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" display(\"Err: Index not in range of list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":" case delete:","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d list.delete(instruction[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" display(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" display(\"Err: Index not in range of list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"CJ-Lee01"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d \"Err: Unknown command - \" + instruction[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" display(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" public void save() {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" String saveText \u003d list.showSaveText();","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" storage.write(saveText);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" public void exit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" this.save();","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" public static void display(String s) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"CJ-Lee01"},"content":" System.out.println(wrapper(s));","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"CJ-Lee01"},"content":" private static String wrapper(String line) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" String frame \u003d \"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\";","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(\"%s\\n%s\", line, frame);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"CJ-Lee01":108}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":"delete 1","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":"test","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"CJ-Lee01":13}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"CJ-Lee01":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"CJ-Lee01":1,"-":41}},{"path":"src/main/java/duke/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" * This represents the different commands that can be used in the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"public enum Commands {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" //alr implemented enums.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" deadline,","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" todo,","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" event,","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" bye,","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" list,","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" mark,","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" unmark,","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" delete,","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" find,","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" unknown;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" * Takes a string and returns the corresponding Commands enum value.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" * If the string does not match any of the enum values, it returns the unknown value.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" * @param cmd The string to be converted to a Commands enum value.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" * @return The corresponding Commands enum value or unknown if no match is found.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" public static Commands get(String cmd) {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" Commands c;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" c \u003d Commands.valueOf(cmd);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IllegalArgumentException | NullPointerException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" c \u003d Commands.unknown;","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" return c;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CJ-Lee01":34}},{"path":"src/main/java/duke/DateTimeOptional.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.temporal.TemporalAccessor;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" * This abstract class wraps around an optional date and time value.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":"public abstract class DateTimeOptional {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" /** Accepted format for date and times. */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" private static DateTimeFormatter standardDateTimeParser \u003d DateTimeFormatter","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" .ofPattern(\"[yyyy MM dd[ HHmm]][yyyy-MM-dd[ HHmm]][yyyy/MM/dd[ HHmm]]\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" /** Display format for datetime. */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" private static DateTimeFormatter standardDateTimeDisplay \u003d DateTimeFormatter","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" .ofPattern(\"dd-MM-yyyy [HH:mm]\");","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" * Parses a string into a DateTimeOptional object.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" * If the string cannot be parsed into either, it throws a DukeException.DukeDateTimeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" * @param s The string to be parsed into a DateTimeOptional object.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" * @return A DateTimeOptional object representing the parsed date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException.DukeDateTimeException If the string cannot be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" public static DateTimeOptional parseDateTime(String s) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" TemporalAccessor temp \u003d standardDateTimeParser.parse(s);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(s, standardDateTimeParser);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" return new DateTimeOnly(dateTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" LocalDate date \u003d LocalDate.parse(s, standardDateTimeParser);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" return new DateOnly(date);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException.DukeDateTimeException(s);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a string representation of the date and time value in display format.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representation of the date and time value in display format.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" public abstract String displayText();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" private static class DateOnly extends DateTimeOptional {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" final LocalDate date;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" DateOnly(LocalDate date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" return this.date.format(standardDateTimeParser);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" public String displayText() {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" return this.date.format(standardDateTimeDisplay);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" private static class DateTimeOnly extends DateTimeOptional {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" final LocalDateTime date;","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" DateTimeOnly(LocalDateTime date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" return this.date.format(standardDateTimeParser);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" public String displayText() {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"CJ-Lee01"},"content":" return this.date.format(standardDateTimeDisplay);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CJ-Lee01":82}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" * This represents a Deadline which extends Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" /** The date to complete the task by. */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" private DateTimeOptional deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" * Parses a raw string containing description and date information into a deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" * The raw string must be in the format \"description /by deadline\".","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" * If the raw string is empty, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" * If the raw string does not contain a deadline, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" * If the deadline cannot be parsed into a DateTimeOptional object, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" * @param rawLine The raw string to be parsed into a Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" * @return A Deadline object representing the parsed task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException If the raw string is empty or does not contain a deadline or contains invalid deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" public static Deadline create(String rawLine) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" if (rawLine.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Err: Empty Description\");","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" String[] instructions \u003d rawLine.split(\" /by \");","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" if (instructions.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Err: No deadline given. Format - deadline \u003cdescription\u003e /by \u003cdeadline\u003e\");","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" DateTimeOptional deadline \u003d DateTimeOptional.parseDateTime(instructions[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" return new Deadline(instructions[0], deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException.DukeDateTimeException(instructions[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" * Constructs a deadline with the description and a DateTimeOptional object.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" * @param item The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" * @param deadline The deadline of the task as a DateTimeOptional object.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" public Deadline(String item, DateTimeOptional deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" super(item);","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a string representation of the task in file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representation of the task in file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" \"deadline %d %s /by %s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" super.isDone ? 1 : 0,","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" super.description,","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" this.deadline","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a string representation of the task in display format.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representation of the task in display format.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-21"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" \"[D][%s] %s (by %s)\",","lastModifiedDate":"2023-08-21"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" super.getStatusIcon(),","lastModifiedDate":"2023-08-21"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" super.description,","lastModifiedDate":"2023-08-21"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":" this.deadline.displayText()","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-21"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CJ-Lee01":74}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" * This represents the main entry point of the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"public class Duke {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" /** The name of the bot. */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" private static final String NAME \u003d \"Nino!\";","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" * runs the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" * @param args Command line arguments (not used).","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" UserInterface userInterface \u003d new UserInterface(new Storage(), new StoreList());","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" System.out.println(\"Hello, my name is \" + Duke.NAME);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" UserInterface.display(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" userInterface.start();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" userInterface.readCommandLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" userInterface.exit();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CJ-Lee01":28}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" * Custom exception for the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" * Custom exception for invalid date and time values.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" public static class DukeDateTimeException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" * Creates an exception with the invalid datetime string.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" * @param s The invalid date and time value.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" public DukeDateTimeException(String s) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" super(\"Err: DateTime given does not fit the format. Expected: yyyy MM DD HHmm. Got \" + s);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" * Takes the string and creates an exception with the error message as string.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" * @param s The error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" public DukeException(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"CJ-Lee01":29}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":" * Event task with start and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" /** Start time. */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" private DateTimeOptional startTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" /** End time. */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" private DateTimeOptional endTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" * Takes a raw string and attempts to create an Event object from it.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" * The raw string must be in the format \"description /from start_time /to end_time\".","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" * If the raw string is empty, does not contain a start time or end time, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" * If the start time or end time cannot be parsed into a DateTimeOptional object, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" * @param rawLine The raw string to be parsed into an Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" * @return An Event object representing the parsed task.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException If the raw string is empty or does not contain a start or end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" public static Event create(String rawLine) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" if (rawLine.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Err: Empty Description\");","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" String[] instructions \u003d rawLine.split(\" /from \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" if (instructions.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Err: No start time given. Format is in event \u003cdesc\u003e /from \u003ctime\u003e /to \u003ctime\u003e\");","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" String[] timeLine \u003d instructions[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" if (timeLine.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Err: No end time given. Format is in event \u003cdesc\u003e /from \u003ctime\u003e /to \u003ctime\u003e\");","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" DateTimeOptional startDate, endDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" startDate \u003d DateTimeOptional.parseDateTime(timeLine[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException.DukeDateTimeException(timeLine[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" endDate \u003d DateTimeOptional.parseDateTime(timeLine[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException.DukeDateTimeException(timeLine[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" return new Event(instructions[0], startDate, endDate);","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" * Constructs an Event object given the description, the start and the end.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" * @param startTime The start time of the task as a DateTimeOptional object.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" * @param endTime The end time of the task as a DateTimeOptional object.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" public Event(String description, DateTimeOptional startTime, DateTimeOptional endTime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a string representation of the task in file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representation of the task in file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" \"event %d %s /from %s /to %s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" super.isDone ? 1 : 0,","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" super.description,","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" this.startTime,","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" this.endTime","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a string representation of the task in display format.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representation of the task in display format.","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-21"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" \"[E][%s] %s (from: %s to: %s)\",","lastModifiedDate":"2023-08-21"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" super.getStatusIcon(),","lastModifiedDate":"2023-08-21"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" super.description,","lastModifiedDate":"2023-08-21"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" this.startTime.displayText(),","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" this.endTime.displayText()","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-21"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CJ-Lee01":97}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":" * A parser for the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" * Takes a Storage object and attempts to parse the tasks stored in it into an array of Task objects.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" * If a line in the storage file cannot be parsed into a Task object, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" * @param storage The Storage object to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" * @return An array of Task objects representing the tasks stored in the Storage object.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException If a line in the storage file cannot be parsed into a Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" public static Task[] parseFile(Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" String[] lines \u003d storage.readLines();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" for (String line : lines) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" tasks.add(parseTaskFromFileLine(line));","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" return tasks.toArray(new Task[]{});","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" * Takes a string representing a line from the storage file and attempts to parse it into a Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" * If the string cannot be parsed into a Task object, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" * @param line The string to be parsed into a Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" * @return A Task object representing the parsed task.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException If the string cannot be parsed into a Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" private static Task parseTaskFromFileLine(String line) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" String[] tokens \u003d line.split(\" \", 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" Commands c \u003d Commands.valueOf(tokens[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" boolean done \u003d !tokens[1].equals(\"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" String desc \u003d tokens[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" Task task \u003d Task.create(c, desc);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" if (done) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IllegalArgumentException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Corrupted file. Delete all text in the duke.txt to use it again.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Corrupted file. Delete all text in the duke.txt to use it again.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" * Takes a string (from the command line) and attempts to parse it into a Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" * If the string is empty, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" * @param s The string to be parsed into a Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" * @return A Task object representing the parsed task.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException If the string is empty or cannot be parsed into a Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" public static Task parseTask(String s) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" if (s.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Empty line found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" String[] instructions \u003d s.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" Commands cmd \u003d Commands.get(instructions[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" return Parser.parseTask(cmd, instructions);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" * Takes a Commands enum value and an array of strings and attempts to create a Task object from them.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" * If the array of strings does not contain enough information to create a Task object, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" * @param cmd The Commands enum value representing the type of task to be created.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" * @param instructions The array of strings containing information about the task to be created.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"CJ-Lee01"},"content":" * @return A Task object representing the created task.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException If the array of strings does not contain enough information to create a Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" public static Task parseTask(Commands cmd, String[] instructions) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"CJ-Lee01"},"content":" if (instructions.length !\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"No details given for command: \" + cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"CJ-Lee01"},"content":" return Task.create(cmd, instructions[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" public static String findAll(String[] instructions, StoreList src) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" String listString;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" if (instructions.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" listString \u003d src.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(\"Here are the tasks:\\n%s\", listString);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" String term \u003d instructions[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" StoreList list \u003d src.findAll(term);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" listString \u003d list.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(\"Here are the tasks with \u0027%s\u0027:\\n%s\", term, listString);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"CJ-Lee01":102}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" * Storage system for Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" /** Default file path. */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" private static final String FILE_PATH \u003d \"../../duke.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" /** The file to parse */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" * Constructs a Storage object with a File object.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" * @param file The File object representing the file to be used for storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" public Storage(File file) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" this.file \u003d file;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" * Constructs a Storage object with a string representing the path of the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" * If the file does not exist, it attempts to create it.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" * If the file cannot be created, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" * @param pathName The path of the file to be used for storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException If the file cannot be created.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" public Storage(String pathName) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" this.file \u003d new File(pathName);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Unable to find or create file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" * Creates a Storage object using the default file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" * If the file does not exist, it attempts to create it.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" * If the file cannot be created, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException If the file cannot be created.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" public Storage() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" this.file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Unable to find or create file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" * Reads the lines from the storage file and returns them as an array of strings.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" * If the storage file cannot be found, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" * @return An array of strings representing the lines in the storage file.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException If the storage file cannot be found.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" public String[] readLines() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" Scanner sc;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" sc \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"File not found.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" ArrayList\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"CJ-Lee01"},"content":" lines.add(sc.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" return lines.toArray(new String[]{});","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"CJ-Lee01"},"content":" * Takes a string and writes it to the storage file.","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" * @param s The string to be written to the storage file.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" public void write(String s) {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" PrintWriter pw \u003d new PrintWriter(fileWriter);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" pw.write(s);","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" pw.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" pw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" System.out.println(\"Unable to write to duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"CJ-Lee01":101}},{"path":"src/main/java/duke/StoreList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.Collection;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" * List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"public class StoreList {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" /** The list of task. */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" /** Creates a new list of tasks. */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" public StoreList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" * Adds task corresponding to the Commands enum value and a string representing the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" * If a task cannot be created from the given information, it returns an error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" * @param type The Commands enum value representing the type of task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" * @param description The description of the task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representing the result of adding the task to the list or an error if unsuccessful.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" String add(Commands type, String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" Task task \u003d Task.create(type, description);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" list.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" \"added: %s\\nYou have %d tasks.\",","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" task,","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" list.size()","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" return e.toString();","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" * This method takes a Task object and adds it to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" * @param task The Task object to be added to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representing the result of adding the task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" public String add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" list.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" \"added: %s\\nYou have %d tasks.\",","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" task,","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" list.size()","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" * Takes collection of Task objects and adds them all to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" * @param tasks The collection of Task objects to be added to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" public void addTasks(Collection\u003c? extends Task\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" list.addAll(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" * Marks the task at the string representation of the position of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" * If the position is not a valid integer, it returns an error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" * If the position is out of bounds, it returns an error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":" * @param position The position of the task in the list as a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representing the result of marking the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" String markDone(String position) {","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" int index \u003d Integer.parseInt(position) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(\"Nice! You have completed the task:\\n %s\", task);","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" return \"Err: Index provided is not an integer\";","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"CJ-Lee01"},"content":" return \"Err: Index provided is out of position of the list\";","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" * Unmarks the task at the string representation of the position of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" * If the position is not a valid integer, it returns an error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" * If the position is out of bounds, it returns an error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" * @param position The position of the task in the list as a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representing the result of marking the task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" String markUndone(String position) {","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" int index \u003d Integer.parseInt(position) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"CJ-Lee01"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(\"Ok! duke.Task marked undone:\\n %s\", task);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"CJ-Lee01"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"CJ-Lee01"},"content":" return \"Err: Index provided is not an integer\";","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" return \"Err: Index provided is out of position of the list\";","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"CJ-Lee01"},"content":" * Deletes task based on the position from parsing the string.","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"CJ-Lee01"},"content":" * If the position is not a valid integer, it returns an error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"CJ-Lee01"},"content":" * If the position is out of bounds, it returns an error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"CJ-Lee01"},"content":" * @param position The position of the task in the list as a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representing the result of removing the task from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"CJ-Lee01"},"content":" String delete(String position) {","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"CJ-Lee01"},"content":" int index \u003d Integer.parseInt(position) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"CJ-Lee01"},"content":" Task task \u003d list.remove(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"CJ-Lee01"},"content":" \"removed: %s\\nYou have %d tasks.\",","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"CJ-Lee01"},"content":" task,","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"CJ-Lee01"},"content":" list.size()","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"CJ-Lee01"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"CJ-Lee01"},"content":" return \"Err: Index provided is not an integer\";","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"CJ-Lee01"},"content":" return \"Err: Index provided is out of position of the list\";","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a string representation of the list of tasks in display format.","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representation of the list of tasks in display format.","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"CJ-Lee01"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"CJ-Lee01"},"content":" return \"You have no tasks :).\";","lastModifiedDate":"2023-08-28"},{"lineNumber":141,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":142,"author":{"gitId":"CJ-Lee01"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":143,"author":{"gitId":"CJ-Lee01"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":144,"author":{"gitId":"CJ-Lee01"},"content":" result +\u003d String.format(\" %d. %s\\n\", i + 1, list.get(i));","lastModifiedDate":"2023-08-28"},{"lineNumber":145,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":146,"author":{"gitId":"CJ-Lee01"},"content":" return result;","lastModifiedDate":"2023-08-28"},{"lineNumber":147,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":148,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":149,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"CJ-Lee01"},"content":" * Gives representation of the list of tasks in file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representation of the list of tasks in file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"CJ-Lee01"},"content":" public String showSaveText() {","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"CJ-Lee01"},"content":" String saveText \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"CJ-Lee01"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"CJ-Lee01"},"content":" saveText +\u003d list.get(i).fileString() + (i + 1 \u003d\u003d list.size() ? \"\" : \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"CJ-Lee01"},"content":" return saveText;","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"CJ-Lee01"},"content":" * Finds all tasks that contains the term and returns it as a StoreList.","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"CJ-Lee01"},"content":" * @param term","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"CJ-Lee01"},"content":" * @return the StoreList","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"CJ-Lee01"},"content":" public StoreList findAll(String term) {","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"CJ-Lee01"},"content":" if (term.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"CJ-Lee01"},"content":" return this;","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"CJ-Lee01"},"content":" StoreList result \u003d new StoreList();","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"CJ-Lee01"},"content":" this.list.forEach((task) -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"CJ-Lee01"},"content":" if (task.contains(term)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"CJ-Lee01"},"content":" result.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"CJ-Lee01"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"CJ-Lee01"},"content":" return result;","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"CJ-Lee01":181}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" * This abstract class represents a task in the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" /** Task description. */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" /** Task is done. */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" protected boolean isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" * Creates as task based on the Commands enum value and a string representing the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" * If a task cannot be created from the given information, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" * @param command The Commands enum value representing the type of task to be created.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" * @param rawLine The description of the task to be created.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" * @return A Task object representing the created task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException If a task cannot be created from the given information.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" public static Task create(Commands command, String rawLine) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" switch (command) {","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" case todo:","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" return ToDo.create(rawLine);","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" case deadline:","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" return Deadline.create(rawLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" case event:","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" return Event.create(rawLine);","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" default:","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" throw new RuntimeException(\"Command not recognized\"); //literally should not run","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" * Creates the task by takes a string representing the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" * This method returns a string representing the done status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representing the done status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a string representation of the task in file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representation of the task in file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" public abstract String fileString();","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" * Checks if the description contains the substring","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" * @param s","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" * @return true if found, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" public boolean contains(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"CJ-Lee01"},"content":" return this.description.contains(s);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a string representation of the task in display format.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representation of the task in display format.","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-21"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CJ-Lee01":91}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":" * Todo keep tracks of tasks without deadlines.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":" * Creates a todo from a string representing the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" * If the description is empty, it throws a DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" * @return A ToDo object representing the created task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException If the description is empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" public static ToDo create(String description) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" throw new DukeException(\"Err: Empty Description\");","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" return new ToDo(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" * Constructs a todo with a string representing the description.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a string representation of the task in file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representation of the task in file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" \"todo %d %s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" super.isDone ? 1 : 0,","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" super.description","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":" * Gives a string representation of the task in display format.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" * @return A string representation of the task in display format.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" \"[T][%s] %s\",","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" super.getStatusIcon(),","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" super.description","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" );","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CJ-Lee01":59}},{"path":"src/main/java/duke/UserInterface.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":" * User Interface for the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"public class UserInterface {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" /** Scanner to scan line input. */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" private Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" /** Storage to store the save file. */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" /** List to keep track of tasks while program is running. */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":" private StoreList list;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" * Creates a user interface from a Storage object and a StoreList object.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" * @param storage The Storage object to be used by the user interface.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" * @param list The StoreList object to be used by the user interface.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":" public UserInterface(Storage storage, StoreList list) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"CJ-Lee01"},"content":" this.list \u003d list;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"CJ-Lee01"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"CJ-Lee01"},"content":" * Checks if there is another command to be read from the user, and returns true if there is and false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"CJ-Lee01"},"content":" * @return True if there is another command to be read from the user, and false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"CJ-Lee01"},"content":" public boolean hasNextCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"CJ-Lee01"},"content":" return sc.hasNext();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"CJ-Lee01"},"content":" * Starts the user interface by reading the tasks from the storage file and adding them to the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"CJ-Lee01"},"content":" * @throws DukeException If there is an error reading the tasks from the storage file.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"CJ-Lee01"},"content":" public void start() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"CJ-Lee01"},"content":" Task[] tasks \u003d Parser.parseFile(this.storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"CJ-Lee01"},"content":" this.list.addTasks(List.of(tasks));","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"CJ-Lee01"},"content":" * Reads commands from the user and processes them until the user enters the \"bye\" command.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"CJ-Lee01"},"content":" public void readCommandLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"CJ-Lee01"},"content":" Reading:","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"CJ-Lee01"},"content":" while (true) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"CJ-Lee01"},"content":" String line \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"CJ-Lee01"},"content":" if (line.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"CJ-Lee01"},"content":" display(\"Err: No command input\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"CJ-Lee01"},"content":" continue;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"CJ-Lee01"},"content":" String[] instructions \u003d line.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"CJ-Lee01"},"content":" Commands cmd \u003d Commands.get(instructions[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"CJ-Lee01"},"content":" String response;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"CJ-Lee01"},"content":" switch (cmd) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"CJ-Lee01"},"content":" case bye:","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"CJ-Lee01"},"content":" this.save();","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"CJ-Lee01"},"content":" break Reading;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"CJ-Lee01"},"content":" case list:","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d list.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"CJ-Lee01"},"content":" display(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"CJ-Lee01"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"CJ-Lee01"},"content":" case deadline:","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"CJ-Lee01"},"content":" // Fallthrough","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"CJ-Lee01"},"content":" case todo:","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"CJ-Lee01"},"content":" // Fallthrough","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"CJ-Lee01"},"content":" case event:","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"CJ-Lee01"},"content":" Task task \u003d Parser.parseTask(cmd, instructions);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d list.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"CJ-Lee01"},"content":" display(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"CJ-Lee01"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"CJ-Lee01"},"content":" display(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"CJ-Lee01"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"CJ-Lee01"},"content":" case mark:","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d list.markDone(instructions[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"CJ-Lee01"},"content":" display(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"CJ-Lee01"},"content":" display(\"Err: Index not in range of list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"CJ-Lee01"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"CJ-Lee01"},"content":" case unmark:","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d list.markUndone(instructions[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"CJ-Lee01"},"content":" display(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"CJ-Lee01"},"content":" display(\"Err: Index not in range of list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"CJ-Lee01"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"CJ-Lee01"},"content":" case delete:","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"CJ-Lee01"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d list.delete(instructions[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"CJ-Lee01"},"content":" display(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"CJ-Lee01"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"CJ-Lee01"},"content":" display(\"Err: Index not in range of list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"CJ-Lee01"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"CJ-Lee01"},"content":" case find:","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d Parser.findAll(instructions, list);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"CJ-Lee01"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"CJ-Lee01"},"content":" response \u003d \"Err: Unknown command - \" + instructions[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"CJ-Lee01"},"content":" display(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"CJ-Lee01"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"CJ-Lee01"},"content":" sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"CJ-Lee01"},"content":" * Saves the current state of the list of tasks to the storage file.","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"CJ-Lee01"},"content":" public void save() {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"CJ-Lee01"},"content":" String saveText \u003d list.showSaveText();","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"CJ-Lee01"},"content":" storage.write(saveText);","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"CJ-Lee01"},"content":" * Exits the user interface by saving the current state of the list of tasks to the storage file and closing any resources used by the user interface.","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"CJ-Lee01"},"content":" public void exit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"CJ-Lee01"},"content":" this.save();","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"CJ-Lee01"},"content":" sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"CJ-Lee01"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"CJ-Lee01"},"content":" * Displays a string to a user in a formatted manner.","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"CJ-Lee01"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"CJ-Lee01"},"content":" * @param s The string to be displayed to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"CJ-Lee01"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"CJ-Lee01"},"content":" public static void display(String s) {","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"CJ-Lee01"},"content":" System.out.println(wrapper(s));","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"CJ-Lee01"},"content":" private static String wrapper(String line) {","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"CJ-Lee01"},"content":" String frame \u003d \"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\";","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"CJ-Lee01"},"content":" return String.format(\"%s\\n%s\", line, frame);","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"CJ-Lee01":149}},{"path":"src/test/java/duke/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" public void cannotCreateDeadlineWithoutDateTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" Deadline deadline \u003d Deadline.create(\"test\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" public void cannotCreateEmptyDeadline() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" Deadline deadline \u003d Deadline.create(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"CJ-Lee01":24}},{"path":"src/test/java/duke/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"public class EventTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" public void cannotCreateEventWithoutDateTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" Event event \u003d Event.create(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":" public void cannotCreateEmptyEvent() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"CJ-Lee01"},"content":" Event event \u003d Event.create(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"CJ-Lee01"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"CJ-Lee01":24}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":" public void cannotCreateEmptyTodo() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":" ToDo todo \u003d ToDo.create(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"CJ-Lee01"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"CJ-Lee01"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"CJ-Lee01"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"CJ-Lee01"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"CJ-Lee01":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"CJ-Lee01"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"CJ-Lee01"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"CJ-Lee01"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"CJ-Lee01"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"CJ-Lee01"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"CJ-Lee01"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"CJ-Lee01"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"CJ-Lee01"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"CJ-Lee01"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"CJ-Lee01"},"content":"delete 1","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"CJ-Lee01"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"CJ-Lee01"},"content":"test","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"CJ-Lee01"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"CJ-Lee01":13}},{"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":"CJ-Lee01"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"CJ-Lee01":1,"-":20}}] diff --git a/CJ-Lee01_ip_master/commits.json b/CJ-Lee01_ip_master/commits.json index 4fbc85d6..bed4ebc8 100644 --- a/CJ-Lee01_ip_master/commits.json +++ b/CJ-Lee01_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"CJ-Lee01":[{"date":"2023-08-21","commitResults":[{"hash":"0d19cd21dbf2a5128bc69b8246cce182f7c0e02c","isMergeCommit":false,"messageTitle":"Changed name of bot.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b74efd13263354746f94a0fe29ebccc33556e56e","isMergeCommit":false,"messageTitle":"Renamed bot back to Duke.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":10}}},{"hash":"6d878fae36ab179e55aeb5bfe1ebcff03bb3840b","isMergeCommit":false,"messageTitle":"Added reader to the bot.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":2}}},{"hash":"a0297391659a89ca5e5f18a06d1e426e2be9dea0","isMergeCommit":false,"messageTitle":"Added StoreList class and enum commands. For future use.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"0595d69396839c7c4b5399893407b37a5afa9e14","isMergeCommit":false,"messageTitle":"Added functionality for level 2.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":4}}},{"hash":"9869a11680af72fa394caddb800bf1a6ef236c89","isMergeCommit":false,"messageTitle":"Added Task class.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"244ba6dba84ae02ce13b280e176c72877a1dd9c3","isMergeCommit":false,"messageTitle":"Done level 3.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":6}}},{"hash":"254e50b0b328e35cfb5913822f02ce7a7ce7e411","isMergeCommit":false,"messageTitle":"Created new files for tasks.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"6788c9d1e47aa35e8dfea5be0503b6e159c3ede0","isMergeCommit":false,"messageTitle":"Created enum for task creation commands.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"d5b6efff18a964d57da627106be13dc0aab03e83","isMergeCommit":false,"messageTitle":"Modified CreateTaskCommands to be more generic. Implemented subclasses for Task.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":9}}},{"hash":"84127b4c4cbc2bfef93bdb7748ada8ed9b7a8076","isMergeCommit":false,"messageTitle":"modified Duke to handle more commands. Updated commands list to add mark and unmark.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":28}}}]},{"date":"2023-08-23","commitResults":[{"hash":"561688d0cc7c7487426166cff66b6b16a790720f","isMergeCommit":false,"messageTitle":"Fixed bug in event creation.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"eda47ff4fa811047bc1afa42e517d136e1946de0","isMergeCommit":false,"messageTitle":"Added test but idk if they work.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"d202b000d8d2e4591ac6c7daa050b612cb659606","isMergeCommit":false,"messageTitle":"Implemented error handling.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":35}}},{"hash":"bb3ee61b446eaa13ffbe31fcad042531e2887dba","isMergeCommit":false,"messageTitle":"Added delete handling.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":23}}},{"hash":"fe203585e08b143d4a7b0bed39edecff00a4da82","isMergeCommit":false,"messageTitle":"Updated test files.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"0824fb3650e6842c42c5c8e6e12a5ce7e4f9c191","isMergeCommit":false,"messageTitle":"Shows the enum implementation.","messageBody":"","tags":["A-enums"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"f8d3b4f0fb9a3b706493c27fd17252b39631d3e8","isMergeCommit":false,"messageTitle":"Add local storage for list.","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":178,"deletions":72}}},{"hash":"09acaeed40fcd6f4b0514ccba7218465ebb717b4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"ce68c99c900314165ec0ff4513c967421d00379c","isMergeCommit":false,"messageTitle":"Add datetime support for Deadlines.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":20,"deletions":3}}},{"hash":"632611cee1b0ec557577c612666df54f89121353","isMergeCommit":false,"messageTitle":"Add datetime functionality for events.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":5}}}]},{"date":"2023-08-30","commitResults":[{"hash":"d81560e3afdc382a024d349fae200470e388ed73","isMergeCommit":false,"messageTitle":"Add wrapper for parsing datetime.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":0}}},{"hash":"dc9c945a56c78612dcf3a7e728fa5bf3a195480e","isMergeCommit":false,"messageTitle":"Fix datetime bug.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":9}}},{"hash":"3ac0b7e2d2b9facef5ef5b2b43552295d4c45181","isMergeCommit":false,"messageTitle":"Add datetime formatting to tasks.","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":15}}},{"hash":"17ed7bc968dd774f409857985575fe7d5c245a28","isMergeCommit":false,"messageTitle":"Clear duke.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":5}}},{"hash":"3afce4873ddd2062790ba9d04271a5b3c094a254","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"984594f89a2223523f1e5cb7cc4ab023e5264e7c","isMergeCommit":false,"messageTitle":"Add more classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":222,"deletions":0}}},{"hash":"caeefa04834d36ee3dd504de1110c07d69eb2a79","isMergeCommit":false,"messageTitle":"Update Duke and StoreList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":6}}},{"hash":"acaa025ae8a2cd2356eb5460f9bb5d335a3021bd","isMergeCommit":false,"messageTitle":"Clean various classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":167}}},{"hash":"8869a5ad188352f64a9ab5f98f9bb0832bad1674","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-moreOOP"],"fileTypesAndContributionMap":{}},{"hash":"3e577b1b4a48682e9731edb9117cc4f1f7fc1b8e","isMergeCommit":false,"messageTitle":"Add to duke package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":8}}},{"hash":"e03e1f354e25cc91dd4bc4590881615b86a55fcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a93a12e0c2540d69d006d871775b74eb523351a","isMergeCommit":false,"messageTitle":"Move Duke under duke package","messageBody":"","tags":["A-packages"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"CJ-Lee01":{"java":631,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":13}},"authorContributionVariance":{"CJ-Lee01":22566.062},"authorDisplayNameMap":{"CJ-Lee01":"CS2103T-W08-3 LEE .. JIE"}} +{"authorDailyContributionsMap":{"CJ-Lee01":[{"date":"2023-08-21","commitResults":[{"hash":"0d19cd21dbf2a5128bc69b8246cce182f7c0e02c","isMergeCommit":false,"messageTitle":"Changed name of bot.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b74efd13263354746f94a0fe29ebccc33556e56e","isMergeCommit":false,"messageTitle":"Renamed bot back to Duke.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":10}}},{"hash":"6d878fae36ab179e55aeb5bfe1ebcff03bb3840b","isMergeCommit":false,"messageTitle":"Added reader to the bot.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":2}}},{"hash":"a0297391659a89ca5e5f18a06d1e426e2be9dea0","isMergeCommit":false,"messageTitle":"Added StoreList class and enum commands. For future use.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"0595d69396839c7c4b5399893407b37a5afa9e14","isMergeCommit":false,"messageTitle":"Added functionality for level 2.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":4}}},{"hash":"9869a11680af72fa394caddb800bf1a6ef236c89","isMergeCommit":false,"messageTitle":"Added Task class.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"244ba6dba84ae02ce13b280e176c72877a1dd9c3","isMergeCommit":false,"messageTitle":"Done level 3.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":6}}},{"hash":"254e50b0b328e35cfb5913822f02ce7a7ce7e411","isMergeCommit":false,"messageTitle":"Created new files for tasks.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"6788c9d1e47aa35e8dfea5be0503b6e159c3ede0","isMergeCommit":false,"messageTitle":"Created enum for task creation commands.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"d5b6efff18a964d57da627106be13dc0aab03e83","isMergeCommit":false,"messageTitle":"Modified CreateTaskCommands to be more generic. Implemented subclasses for Task.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":9}}},{"hash":"84127b4c4cbc2bfef93bdb7748ada8ed9b7a8076","isMergeCommit":false,"messageTitle":"modified Duke to handle more commands. Updated commands list to add mark and unmark.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":28}}}]},{"date":"2023-08-23","commitResults":[{"hash":"561688d0cc7c7487426166cff66b6b16a790720f","isMergeCommit":false,"messageTitle":"Fixed bug in event creation.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"eda47ff4fa811047bc1afa42e517d136e1946de0","isMergeCommit":false,"messageTitle":"Added test but idk if they work.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"d202b000d8d2e4591ac6c7daa050b612cb659606","isMergeCommit":false,"messageTitle":"Implemented error handling.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":35}}},{"hash":"bb3ee61b446eaa13ffbe31fcad042531e2887dba","isMergeCommit":false,"messageTitle":"Added delete handling.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":23}}},{"hash":"fe203585e08b143d4a7b0bed39edecff00a4da82","isMergeCommit":false,"messageTitle":"Updated test files.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"0824fb3650e6842c42c5c8e6e12a5ce7e4f9c191","isMergeCommit":false,"messageTitle":"Shows the enum implementation.","messageBody":"","tags":["A-enums"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"f8d3b4f0fb9a3b706493c27fd17252b39631d3e8","isMergeCommit":false,"messageTitle":"Add local storage for list.","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":178,"deletions":72}}},{"hash":"09acaeed40fcd6f4b0514ccba7218465ebb717b4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"ce68c99c900314165ec0ff4513c967421d00379c","isMergeCommit":false,"messageTitle":"Add datetime support for Deadlines.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":20,"deletions":3}}},{"hash":"632611cee1b0ec557577c612666df54f89121353","isMergeCommit":false,"messageTitle":"Add datetime functionality for events.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":5}}}]},{"date":"2023-08-30","commitResults":[{"hash":"d81560e3afdc382a024d349fae200470e388ed73","isMergeCommit":false,"messageTitle":"Add wrapper for parsing datetime.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":0}}},{"hash":"dc9c945a56c78612dcf3a7e728fa5bf3a195480e","isMergeCommit":false,"messageTitle":"Fix datetime bug.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":9}}},{"hash":"3ac0b7e2d2b9facef5ef5b2b43552295d4c45181","isMergeCommit":false,"messageTitle":"Add datetime formatting to tasks.","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":15}}},{"hash":"17ed7bc968dd774f409857985575fe7d5c245a28","isMergeCommit":false,"messageTitle":"Clear duke.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":5}}},{"hash":"3afce4873ddd2062790ba9d04271a5b3c094a254","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"984594f89a2223523f1e5cb7cc4ab023e5264e7c","isMergeCommit":false,"messageTitle":"Add more classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":222,"deletions":0}}},{"hash":"caeefa04834d36ee3dd504de1110c07d69eb2a79","isMergeCommit":false,"messageTitle":"Update Duke and StoreList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":6}}},{"hash":"acaa025ae8a2cd2356eb5460f9bb5d335a3021bd","isMergeCommit":false,"messageTitle":"Clean various classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":167}}},{"hash":"8869a5ad188352f64a9ab5f98f9bb0832bad1674","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-moreOOP"],"fileTypesAndContributionMap":{}},{"hash":"3e577b1b4a48682e9731edb9117cc4f1f7fc1b8e","isMergeCommit":false,"messageTitle":"Add to duke package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":8}}},{"hash":"e03e1f354e25cc91dd4bc4590881615b86a55fcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a93a12e0c2540d69d006d871775b74eb523351a","isMergeCommit":false,"messageTitle":"Move Duke under duke package","messageBody":"","tags":["A-packages"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":4}}},{"hash":"22ae77c258527d6ff112402b0d8c9918e82dff1a","isMergeCommit":false,"messageTitle":"Update files","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"e9c8068462bc81513a458188bb177808f6b5d05c","isMergeCommit":false,"messageTitle":"Edit files","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"8b935246a3a770b090261eb9a3500c551740d414","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9135fab3a3e5538d696e36f0fb143afb3e8c2c52","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":6}}},{"hash":"b6be486edf468ef7fc098fe2d7547b0d1878704f","isMergeCommit":false,"messageTitle":"Enforce code style","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":57}}}]},{"date":"2023-09-01","commitResults":[{"hash":"853c58eb908ade1c03e78fde9dcb83fad67b9bfc","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":351,"deletions":20}}},{"hash":"730b7a5254536d532082a3f9ab4ae458c0046ad1","isMergeCommit":false,"messageTitle":"Add finding function","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":7}}},{"hash":"26342caf00ef2542e1e69e50d4e59059419730a4","isMergeCommit":false,"messageTitle":"Refactor instruction name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"8d5ac7927f5ca7c55db076b103627d9988692678","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"00bead8e9a1b49e89580218454e39200c71cc70f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1062bd4cc2d6ccbf98ccd7f57793e510bd793e1e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"CJ-Lee01":{"java":1093,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":13}},"authorContributionVariance":{"CJ-Lee01":41734.918},"authorDisplayNameMap":{"CJ-Lee01":"CS2103T-W08-3 LEE .. JIE"}} diff --git a/CelestineTan03_ip_master/authorship.json b/CelestineTan03_ip_master/authorship.json index 16fa643c..67d0efba 100644 --- a/CelestineTan03_ip_master/authorship.json +++ b/CelestineTan03_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"CelestineTan03":2,"-":41}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" * Represents a task of type Deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" private final LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" private final DateTimeFormatter formatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for a task of type Deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" * @param description the task details","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" * @param by the deadline for the task","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mm a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(formatter) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task in file format.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation in file format","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" return \"D | \" + this.isDone + \" | \" + this.description + \" | \" + this.by.format(formatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" * Return the task type.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":" * @return the task type","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" public String getTaskType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" return \"deadline\";","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CelestineTan03":56}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import java.io.*;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" * A chatbot that provides a to-do list function","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for the chatbot","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" tasks \u003d new TaskList(this.storage.load());","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" * Run the chatbot","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" this.ui.printGreeting();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" // Only exit when user types the command bye","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" label:","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" while (true) {","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" if (sc.hasNextLine()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" Parser parser \u003d new Parser(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" String firstWord \u003d parser.getCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" switch (firstWord) {","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" case \"bye\":","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" this.storage.saveTasks(this.tasks.getTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" } catch (IOException exception) {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":" this.ui.printFarewell();","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" sc.close();","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" break label;","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" // Display the stored commands","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" case \"list\":","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":" if (this.tasks.getNumberOfTasks() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"You do not have any tasks in the list.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" for (int i \u003d 0; i \u003c this.tasks.getNumberOfTasks(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(i + 1 + \".\" + this.tasks.getTasks().get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"CelestineTan03"},"content":" // Add task","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"CelestineTan03"},"content":" case \"todo\":","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.addTask(parser.getTodoTask(), \"todo\");","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":71,"author":{"gitId":"CelestineTan03"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-21"},{"lineNumber":72,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.addTask(parser.getDeadlineTask(), \"deadline\");","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":78,"author":{"gitId":"CelestineTan03"},"content":" case \"event\":","lastModifiedDate":"2023-08-21"},{"lineNumber":79,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.addTask(parser.getEventTask(), \"event\");","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":85,"author":{"gitId":"CelestineTan03"},"content":" // Mark task as done","lastModifiedDate":"2023-08-21"},{"lineNumber":86,"author":{"gitId":"CelestineTan03"},"content":" case \"mark\":","lastModifiedDate":"2023-08-21"},{"lineNumber":87,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.markTask(parser.getTaskNumber(), \"mark\");","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":93,"author":{"gitId":"CelestineTan03"},"content":" // Mark task as not done","lastModifiedDate":"2023-08-21"},{"lineNumber":94,"author":{"gitId":"CelestineTan03"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-21"},{"lineNumber":95,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.markTask(parser.getTaskNumber(), \"unmark\");","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"CelestineTan03"},"content":" // Remove task","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"CelestineTan03"},"content":" case \"delete\":","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.removeTask(parser.getTaskNumber());","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"CelestineTan03"},"content":" // Find task","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"CelestineTan03"},"content":" case \"find\":","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.findTask(parser.getSearchKeyword());","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"CelestineTan03"},"content":" // Invalid command","lastModifiedDate":"2023-08-21"},{"lineNumber":118,"author":{"gitId":"CelestineTan03"},"content":" default:","lastModifiedDate":"2023-08-21"},{"lineNumber":119,"author":{"gitId":"CelestineTan03"},"content":" this.ui.printAllCommands();","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":121,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":122,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":125,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"CelestineTan03"},"content":" * The main method to run the chatbot","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"CelestineTan03"},"content":" * @param args the command line arguments","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"CelestineTan03"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"CelestineTan03"},"content":" new Duke(\"./duke.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"CelestineTan03":131,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":" * Represents a DukeException","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for DukeException","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" * @param exception the type of exception","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" public DukeException(ExceptionTypes exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" super(exception.getErrormessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"CelestineTan03":15}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" * Represents a task of type Event","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" private final LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" private final LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" private final DateTimeFormatter formatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for task of type Event","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" * @param description the task details","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" * @param from the start date/time for the task","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" * @param to the end date/time for the task","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mm a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(formatter) + \" to: \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" this.to.format(formatter) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task in file format.","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation in file format","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" return \"E | \" + this.isDone + \" | \" + this.description + \" | \" + this.from.format(formatter) +","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" \" | \" + this.to.format(formatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" * Return the task type.","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":" * @return the task type","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" public String getTaskType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":" return \"event\";","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CelestineTan03":60}},{"path":"src/main/java/duke/ExceptionTypes.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":" * Represents the types of exceptions","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"public enum ExceptionTypes {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" INVALIDCOMMANDEVENT(\"OOPS!!! Invalid command. The command for an event should be:\\nevent \u003ctask\u003e /from yyyy-mm-dd hh:mm /to yyyy-mm-dd hh:mm\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" INCOMPLETECOMMANDEVENT(\"OOPS!!! The description of an event cannot be empty and the start and end time/date cannot be empty.\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" INVALIDCOMMANDDEADLINE(\"OOPS!!! Invalid command. The command for a deadline should be:\\ndeadline \u003ctask\u003e /by yyyy-mm-dd hh:mm\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" INCOMPLETECOMMANDDEADLINE(\"OOPS!!! The description of a deadline cannot be empty and the deadline for the deadline cannot be empty.\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" INCOMPLETECOMMANDTODO(\"OOPS!!! The description of a todo cannot be empty.\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" INVALIDTASKNUMBER(\"OOPS!! Invalid task number. The task number has to be from one to the number of tasks in the list.\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" INCOMPLETETASKNUMBER(\"OOPS!! Task number cannot empty. Please indicate a task number from one to the number of tasks in the list.\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" MARKEMPTYLIST(\"Add task to start marking task as done!\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" UNMARKEMPTYLIST(\"Add task to start marking task as not done!\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" DELETEEMPTYLIST(\"Add task to start deleting!\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" INVALIDCOMMAND(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" EMPTYKEYWORD(\"OOPS!!! Please enter something to search.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" private final String errormessage;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" ExceptionTypes(String errormessage) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" this.errormessage \u003d errormessage;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" // A method to get the error message of the exception","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" public String getErrormessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" return this.errormessage;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"CelestineTan03":31}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":" * Represents a parser that parses the user input","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" private String[] words;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for a parser","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" * @param input the user input","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" public Parser(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" // Split string into first word and remaining words","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" this.words \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" * Return the command word of the user input","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" * @return the command word","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" public String getCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" return this.words[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" public String[] getTodoTask() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" if (this.words.length \u003d\u003d 1 || this.words[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INCOMPLETECOMMANDTODO);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" return this.words;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" * Return the description of the deadline task","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" * @return the description of the deadline task","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" * @throws DukeException if the user input is invalid","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" public String[] getDeadlineTask() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" if (this.words.length \u003d\u003d 1 || this.words[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INCOMPLETECOMMANDDEADLINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" } else if (this.words[1].contains(\"/by\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" String[] description \u003d this.words[1].split(\" /by \");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" if (description.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDCOMMANDDEADLINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":" return description;","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDCOMMANDDEADLINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":" * Return the description of the event task","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":" * @return the description of the event task","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" * @throws DukeException if the user input is invalid","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CelestineTan03"},"content":" public String[] getEventTask() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CelestineTan03"},"content":" if (this.words.length \u003d\u003d 1 || this.words[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INCOMPLETECOMMANDEVENT);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"CelestineTan03"},"content":" } else if (this.words[1].contains(\"/from\") \u0026\u0026 this.words[1].contains(\"/to\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"CelestineTan03"},"content":" String[] description \u003d this.words[1].split(\" /from \");","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"CelestineTan03"},"content":" if (description.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INCOMPLETECOMMANDEVENT);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"CelestineTan03"},"content":" String[] interval \u003d description[1].split(\" /to \");","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"CelestineTan03"},"content":" if (interval.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDCOMMANDDEADLINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"CelestineTan03"},"content":" return new String[]{description[0], interval[0], interval[1]};","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"CelestineTan03"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDCOMMANDEVENT);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"CelestineTan03"},"content":" * Return the task number of the task to be marked as done or deleted","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"CelestineTan03"},"content":" * @return the task number","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"CelestineTan03"},"content":" * @throws DukeException if the user input is invalid","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"CelestineTan03"},"content":" public int getTaskNumber() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"CelestineTan03"},"content":" if (this.words.length \u003d\u003d 1 || this.words[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INCOMPLETETASKNUMBER);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"CelestineTan03"},"content":" return Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"CelestineTan03"},"content":" public String getSearchKeyword() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"CelestineTan03"},"content":" if (this.words.length \u003d\u003d 1 || this.words[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.EMPTYKEYWORD);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"CelestineTan03"},"content":" return this.words[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CelestineTan03":98}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" * Represents a storage for the chatbot","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" private final String path;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" private final DateTimeFormatter outputFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for the storage","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" * @param filePath the path to the file","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" this.path \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" this.outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mm a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" // Create file if file does not exist","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" if (!file.createNewFile()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" this.load();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" } catch (IOException exception) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" * Save the tasks to the file","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" * @param tasks the list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" * @throws IOException if there is an error writing to the file","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" public void saveTasks(List\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" FileWriter writer \u003d new FileWriter(this.path);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" writer.write(task.toFileFormat() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":" * Load the tasks from the file","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":" * @return the list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" * @throws IOException if there is an error reading from the file","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CelestineTan03"},"content":" public List\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CelestineTan03"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CelestineTan03"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(this.path));","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"CelestineTan03"},"content":" String nextTask \u003d reader.readLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"CelestineTan03"},"content":" while (nextTask !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"CelestineTan03"},"content":" String[] taskDescription \u003d nextTask.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"CelestineTan03"},"content":" String isDone \u003d taskDescription[1].strip();","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"CelestineTan03"},"content":" String description \u003d taskDescription[2].strip();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"CelestineTan03"},"content":" switch (taskDescription[0].strip()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"CelestineTan03"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"CelestineTan03"},"content":" tasks.add(new Todo(description));","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"CelestineTan03"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"CelestineTan03"},"content":" tasks.add(new Deadline(description,","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"CelestineTan03"},"content":" LocalDateTime.parse(taskDescription[3].strip(), this.outputFormatter)));","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"CelestineTan03"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"CelestineTan03"},"content":" tasks.add(new Event(description, LocalDateTime.parse(taskDescription[3].strip(),","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"CelestineTan03"},"content":" this.outputFormatter), LocalDateTime.parse(taskDescription[4].strip(), this.outputFormatter)));","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"CelestineTan03"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"CelestineTan03"},"content":" if (isDone.equals(\"true\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"CelestineTan03"},"content":" int index \u003d tasks.size() - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"CelestineTan03"},"content":" tasks.get(index).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"CelestineTan03"},"content":" nextTask \u003d reader.readLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"CelestineTan03"},"content":" reader.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"CelestineTan03"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CelestineTan03":94}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":" * Represents a task","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for a task","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" * @param description the task details","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" * Check if the task has been completed and","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" * return the status icon of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" * @return the status icon of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" return(isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" // Mark a task as done","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" // Mark a task as not done","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task in file format.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation in file format","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" abstract String toFileFormat();","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":" * Return the type of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":" * @return the type of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CelestineTan03"},"content":" abstract String getTaskType();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CelestineTan03":63}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" private final DateTimeFormatter inputFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for the task list if an initial list exist","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" * @param tasks the list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" this.inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for the task list if an initial list does not exist","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" this.inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" * Returns the number of tasks in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" * @return the number of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" public int getNumberOfTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" * Returns the list of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" * @return the list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" return this.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" * Returns a success message when a task has been successfully added.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" * @return the success message","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" public String printAddTaskSuccessMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":" StringBuilder message \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" message.append(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":" message.append(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" message.append(this.tasks.get(this.tasks.size() - 1).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":" message.append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CelestineTan03"},"content":" message.append(\"Now you have \");","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CelestineTan03"},"content":" message.append(this.tasks.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CelestineTan03"},"content":" message.append(\" task(s) in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"CelestineTan03"},"content":" return message.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"CelestineTan03"},"content":" * Returns a success message when a task has been successfully deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"CelestineTan03"},"content":" * @return the success message","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"CelestineTan03"},"content":" public String printRemoveTaskSuccessMessage(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"CelestineTan03"},"content":" StringBuilder message \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"CelestineTan03"},"content":" message.append(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"CelestineTan03"},"content":" message.append(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"CelestineTan03"},"content":" message.append(task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"CelestineTan03"},"content":" message.append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"CelestineTan03"},"content":" message.append(\"Now you have \");","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"CelestineTan03"},"content":" message.append(this.tasks.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"CelestineTan03"},"content":" message.append(\" task(s) in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"CelestineTan03"},"content":" return message.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"CelestineTan03"},"content":" * Takes in the task details and add the task to the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"CelestineTan03"},"content":" * @param task the task description","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"CelestineTan03"},"content":" * @param typeOfTask the type of the task to be added","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"CelestineTan03"},"content":" * @throws DukeException if invalid or incorrect command","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"CelestineTan03"},"content":" public void addTask(String[] task, String typeOfTask) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"CelestineTan03"},"content":" switch (typeOfTask) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"CelestineTan03"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.add(new Event(task[0], LocalDateTime.parse(task[1], this.inputFormatter),","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"CelestineTan03"},"content":" LocalDateTime.parse(task[2], this.inputFormatter)));","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"CelestineTan03"},"content":" } catch (DateTimeParseException exception) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Invalid start and end date/time. The format should be yyyy-mm-dd hh:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(printAddTaskSuccessMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"CelestineTan03"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.add(new Todo(task[1]));","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(printAddTaskSuccessMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"CelestineTan03"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.add(new Deadline(task[0], LocalDateTime.parse(task[1], this.inputFormatter)));","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"CelestineTan03"},"content":" } catch (DateTimeParseException exception) {","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Invalid start and end date/time. The format should be yyyy-mm-dd hh:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(printAddTaskSuccessMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"CelestineTan03"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDCOMMAND);","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"CelestineTan03"},"content":" * Takes in the command to delete a task","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"CelestineTan03"},"content":" * and remove the task from the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"CelestineTan03"},"content":" * @param taskNumber the task number of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"CelestineTan03"},"content":" * @throws DukeException if invalid or incorrect command","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"CelestineTan03"},"content":" public void removeTask(int taskNumber) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"CelestineTan03"},"content":" if (this.tasks.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.DELETEEMPTYLIST);","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"CelestineTan03"},"content":" if (taskNumber \u003e this.tasks.size() || taskNumber \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDTASKNUMBER);","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"CelestineTan03"},"content":" Task task \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.remove(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(printRemoveTaskSuccessMessage(task));","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"CelestineTan03"},"content":" * Takes in the task command to mark or unmark","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"CelestineTan03"},"content":" * a task and mark the task as done or mark a task as","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"CelestineTan03"},"content":" * not done","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"CelestineTan03"},"content":" * @param taskNumber the task number of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"CelestineTan03"},"content":" * @param action to mark or unmark the task","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"CelestineTan03"},"content":" * @throws DukeException if invalid or incorrect command","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"CelestineTan03"},"content":" public void markTask(int taskNumber, String action) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"CelestineTan03"},"content":" switch(action) {","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"CelestineTan03"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"CelestineTan03"},"content":" if (this.tasks.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.MARKEMPTYLIST);","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"CelestineTan03"},"content":" if (taskNumber \u003e this.tasks.size() || taskNumber \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDTASKNUMBER);","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"CelestineTan03"},"content":" Task markTask \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"CelestineTan03"},"content":" markTask.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(markTask.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"CelestineTan03"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"CelestineTan03"},"content":" if (this.tasks.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.UNMARKEMPTYLIST);","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"CelestineTan03"},"content":" if (taskNumber \u003e this.tasks.size() || taskNumber \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDTASKNUMBER);","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"CelestineTan03"},"content":" Task unmarkTask \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"CelestineTan03"},"content":" unmarkTask.markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(unmarkTask.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"CelestineTan03"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDCOMMAND);","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"CelestineTan03"},"content":" public void findTask(String keyword) {","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"CelestineTan03"},"content":" if (this.tasks.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"There are no matching tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"CelestineTan03"},"content":" return;","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"CelestineTan03"},"content":" int count \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"CelestineTan03"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"CelestineTan03"},"content":" if (task.toString().contains(keyword) || task.getTaskType().contains(keyword)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"CelestineTan03"},"content":" if (count \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Here are the matching task(s) in your list:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(count + \". \" + task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"CelestineTan03"},"content":" count++;","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"CelestineTan03"},"content":" if (count \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"There are no matching tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CelestineTan03":199}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":" * Represents a task of type todo","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for a task of type todo","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" * @param description the task details","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task in file format.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation in file format","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" return \"T | \" + this.isDone + \" | \" + this.description;","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" * Return the task type.","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" * @return the task type","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" public String getTaskType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" return \"todo\";","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CelestineTan03":46}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":" // Print the greeting message","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":" public void printGreeting() {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Hello! I\u0027m Botty!\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" // Print the farewell message","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" public void printFarewell() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" // Print all the available commands","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" public void printAllCommands() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"OOPS!!! Invalid command. Try the following commands instead:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e todo \u003ctask\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e deadline \u003ctask\u003e /by yyyy-mm-dd hh:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e event \u003ctask\u003e /from yyyy-mm-dd hh:mm /to yyyy-mm-dd hh:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e list\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e mark \u003ctask number\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e unmark \u003ctask number\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e delete \u003ctask number\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e find \u003ckeyword\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e bye\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CelestineTan03":27}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" * Represents a test for Parser class","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" public void testGetCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"todo\", new Parser(\"todo sleep\").getCommand());","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" public void testGetTodoTask() {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" assertArrayEquals(new String[] {\"todo\"}, new Parser(\"todo\").getTodoTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"OOPS!!! The description of a todo cannot be empty.\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" public void testIncompleteCommandDeadline() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" assertArrayEquals(new String[] {\"deadline\"}, new Parser(\"deadline\").getDeadlineTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"OOPS!!! The description of a deadline cannot be empty and\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" \" the deadline for the deadline cannot be empty.\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" public void testInvalidCommandDeadline() {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" assertArrayEquals(new String[] {\"deadline\", \"sleep\"}, new Parser(\"deadline sleep /by\").getDeadlineTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"OOPS!!! Invalid command. The command for a deadline should be:\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" \"deadline \u003ctask\u003e /by yyyy-mm-dd hh:mm\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":" public void testIncompleteCommandEvent() {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" assertArrayEquals(new String[] {\"event\"}, new Parser(\"event\").getEventTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"OOPS!!! The description of an event cannot be empty and the start\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" \" and end time/date cannot be empty.\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":" public void testInvalidCommandEvent() {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CelestineTan03"},"content":" assertArrayEquals(new String[] {\"event\", \"sleep\"}, new Parser(\"event sleep /from\").getEventTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CelestineTan03"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"OOPS!!! Invalid command. The command for an event should be:\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"CelestineTan03"},"content":" \"event \u003ctask\u003e /from yyyy-mm-dd hh:mm /to yyyy-mm-dd hh:mm\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CelestineTan03":69}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" * Represents a test for Todo class","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" public void testToStringConversion() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"[T][ ] sleep\", new Todo(\"sleep\").toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" public void testToFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"T | false | sleep\", new Todo(\"sleep\").toFileFormat());","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CelestineTan03":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"unmark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"delete 1","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"todo","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"todo sleep","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":"event","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":"event meeting /from 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":"event meeting /from 2023-10-10 14:00 /to 2023-10-10 16:00","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"deadline","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":"deadline lecture quiz /by 9pm","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":"deadline lecture quiz /by 2023-10-05 23:59","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":"find","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":"find sleep","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":"mark","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":"mark -2","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":"unmark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":"unmark 10","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":"unmark","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":"delete -4","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":"delete","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":"delete 1","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":"add task","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"CelestineTan03":26}},{"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":"CelestineTan03"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2023-08-30"},{"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":"-"},"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":{"CelestineTan03":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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"CelestineTan03":2,"-":41}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" * Represents a task of type Deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" private final LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" private final DateTimeFormatter formatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for a task of type Deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" * @param description the task details","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" * @param by the deadline for the task","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mm a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(formatter) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task in file format.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation in file format","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" return \"D | \" + this.isDone + \" | \" + this.description + \" | \" + this.by.format(formatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" * Return the task type.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":" * @return the task type","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" public String getTaskType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" return \"deadline\";","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CelestineTan03":56}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import java.io.*;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" * A chatbot that provides a to-do list function","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for the chatbot","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" tasks \u003d new TaskList(this.storage.load());","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" * Run the chatbot","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" this.ui.printGreeting();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" // Only exit when user types the command bye","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" label:","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" while (true) {","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" if (sc.hasNextLine()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" Parser parser \u003d new Parser(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" String firstWord \u003d parser.getCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" switch (firstWord) {","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" case \"bye\":","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" this.storage.saveTasks(this.tasks.getTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" } catch (IOException exception) {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":" this.ui.printFarewell();","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" sc.close();","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" break label;","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" // Display the stored commands","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" case \"list\":","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":" if (this.tasks.getNumberOfTasks() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"You do not have any tasks in the list.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" for (int i \u003d 0; i \u003c this.tasks.getNumberOfTasks(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(i + 1 + \".\" + this.tasks.getTasks().get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"CelestineTan03"},"content":" // Add task","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"CelestineTan03"},"content":" case \"todo\":","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.addTask(parser.getTodoTask(), \"todo\");","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":71,"author":{"gitId":"CelestineTan03"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-21"},{"lineNumber":72,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.addTask(parser.getDeadlineTask(), \"deadline\");","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":78,"author":{"gitId":"CelestineTan03"},"content":" case \"event\":","lastModifiedDate":"2023-08-21"},{"lineNumber":79,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.addTask(parser.getEventTask(), \"event\");","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":85,"author":{"gitId":"CelestineTan03"},"content":" // Mark task as done","lastModifiedDate":"2023-08-21"},{"lineNumber":86,"author":{"gitId":"CelestineTan03"},"content":" case \"mark\":","lastModifiedDate":"2023-08-21"},{"lineNumber":87,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.markTask(parser.getTaskNumber(), \"mark\");","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":93,"author":{"gitId":"CelestineTan03"},"content":" // Mark task as not done","lastModifiedDate":"2023-08-21"},{"lineNumber":94,"author":{"gitId":"CelestineTan03"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-21"},{"lineNumber":95,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.markTask(parser.getTaskNumber(), \"unmark\");","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"CelestineTan03"},"content":" // Remove task","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"CelestineTan03"},"content":" case \"delete\":","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.removeTask(parser.getTaskNumber());","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"CelestineTan03"},"content":" // Find task","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"CelestineTan03"},"content":" case \"find\":","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.findTask(parser.getSearchKeyword());","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"CelestineTan03"},"content":" // Invalid command","lastModifiedDate":"2023-08-21"},{"lineNumber":118,"author":{"gitId":"CelestineTan03"},"content":" default:","lastModifiedDate":"2023-08-21"},{"lineNumber":119,"author":{"gitId":"CelestineTan03"},"content":" this.ui.printAllCommands();","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":121,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":122,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":125,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"CelestineTan03"},"content":" * The main method to run the chatbot","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"CelestineTan03"},"content":" * @param args the command line arguments","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"CelestineTan03"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"CelestineTan03"},"content":" new Duke(\"./duke.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"CelestineTan03":131,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":" * Represents a DukeException","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for DukeException","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" * @param exception the type of exception","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" public DukeException(ExceptionTypes exception) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" super(exception.getErrormessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"CelestineTan03":15}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" * Represents a task of type Event","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" private final LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" private final LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" private final DateTimeFormatter formatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for task of type Event","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" * @param description the task details","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" * @param from the start date/time for the task","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" * @param to the end date/time for the task","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mm a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(formatter) + \" to: \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" this.to.format(formatter) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task in file format.","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation in file format","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" return \"E | \" + this.isDone + \" | \" + this.description + \" | \" + this.from.format(formatter) +","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" \" | \" + this.to.format(formatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" * Return the task type.","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":" * @return the task type","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" public String getTaskType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":" return \"event\";","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CelestineTan03":60}},{"path":"src/main/java/duke/ExceptionTypes.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":" * Represents the types of exceptions","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"public enum ExceptionTypes {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" INVALIDCOMMANDEVENT(\"OOPS!!! Invalid command. The command for an event should be:\\nevent \u003ctask\u003e /from yyyy-mm-dd hh:mm /to yyyy-mm-dd hh:mm\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" INCOMPLETECOMMANDEVENT(\"OOPS!!! The description of an event cannot be empty and the start and end time/date cannot be empty.\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" INVALIDCOMMANDDEADLINE(\"OOPS!!! Invalid command. The command for a deadline should be:\\ndeadline \u003ctask\u003e /by yyyy-mm-dd hh:mm\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" INCOMPLETECOMMANDDEADLINE(\"OOPS!!! The description of a deadline cannot be empty and the deadline for the deadline cannot be empty.\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" INCOMPLETECOMMANDTODO(\"OOPS!!! The description of a todo cannot be empty.\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" INVALIDTASKNUMBER(\"OOPS!! Invalid task number. The task number has to be from one to the number of tasks in the list.\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" INCOMPLETETASKNUMBER(\"OOPS!! Task number cannot empty. Please indicate a task number from one to the number of tasks in the list.\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" MARKEMPTYLIST(\"Add task to start marking task as done!\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" UNMARKEMPTYLIST(\"Add task to start marking task as not done!\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" DELETEEMPTYLIST(\"Add task to start deleting!\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" INVALIDCOMMAND(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" EMPTYKEYWORD(\"OOPS!!! Please enter something to search.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" private final String errormessage;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" ExceptionTypes(String errormessage) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" this.errormessage \u003d errormessage;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" // A method to get the error message of the exception","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" public String getErrormessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" return this.errormessage;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"CelestineTan03":31}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":" * Represents a parser that parses the user input","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" private String[] words;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for a parser","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" * @param input the user input","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" public Parser(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" // Split string into first word and remaining words","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" this.words \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" * Return the command word of the user input","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" * @return the command word","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" public String getCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" return this.words[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" public String[] getTodoTask() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" if (this.words.length \u003d\u003d 1 || this.words[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INCOMPLETECOMMANDTODO);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" return this.words;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" * Return the description of the deadline task","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" * @return the description of the deadline task","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" * @throws DukeException if the user input is invalid","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" public String[] getDeadlineTask() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" if (this.words.length \u003d\u003d 1 || this.words[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INCOMPLETECOMMANDDEADLINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" } else if (this.words[1].contains(\"/by\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" String[] description \u003d this.words[1].split(\" /by \");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" if (description.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDCOMMANDDEADLINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":" return description;","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDCOMMANDDEADLINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":" * Return the description of the event task","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":" * @return the description of the event task","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" * @throws DukeException if the user input is invalid","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CelestineTan03"},"content":" public String[] getEventTask() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CelestineTan03"},"content":" if (this.words.length \u003d\u003d 1 || this.words[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INCOMPLETECOMMANDEVENT);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"CelestineTan03"},"content":" } else if (this.words[1].contains(\"/from\") \u0026\u0026 this.words[1].contains(\"/to\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"CelestineTan03"},"content":" String[] description \u003d this.words[1].split(\" /from \");","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"CelestineTan03"},"content":" if (description.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INCOMPLETECOMMANDEVENT);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"CelestineTan03"},"content":" String[] interval \u003d description[1].split(\" /to \");","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"CelestineTan03"},"content":" if (interval.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDCOMMANDDEADLINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"CelestineTan03"},"content":" return new String[]{description[0], interval[0], interval[1]};","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"CelestineTan03"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDCOMMANDEVENT);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"CelestineTan03"},"content":" * Return the task number of the task to be marked as done or deleted","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"CelestineTan03"},"content":" * @return the task number","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"CelestineTan03"},"content":" * @throws DukeException if the user input is invalid","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"CelestineTan03"},"content":" public int getTaskNumber() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"CelestineTan03"},"content":" if (this.words.length \u003d\u003d 1 || this.words[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INCOMPLETETASKNUMBER);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"CelestineTan03"},"content":" return Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"CelestineTan03"},"content":" public String getSearchKeyword() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"CelestineTan03"},"content":" if (this.words.length \u003d\u003d 1 || this.words[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.EMPTYKEYWORD);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"CelestineTan03"},"content":" return this.words[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CelestineTan03":98}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" * Represents a storage for the chatbot","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" private final String path;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" private final DateTimeFormatter outputFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for the storage","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" * @param filePath the path to the file","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" this.path \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" this.outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mm a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" // Create file if file does not exist","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" if (!file.createNewFile()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" this.load();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" } catch (IOException exception) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" * Save the tasks to the file","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" * @param tasks the list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" * @throws IOException if there is an error writing to the file","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" public void saveTasks(List\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" FileWriter writer \u003d new FileWriter(this.path);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" writer.write(task.toFileFormat() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":" * Load the tasks from the file","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":" * @return the list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" * @throws IOException if there is an error reading from the file","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CelestineTan03"},"content":" public List\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CelestineTan03"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CelestineTan03"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(this.path));","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"CelestineTan03"},"content":" String nextTask \u003d reader.readLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"CelestineTan03"},"content":" while (nextTask !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"CelestineTan03"},"content":" String[] taskDescription \u003d nextTask.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"CelestineTan03"},"content":" String isDone \u003d taskDescription[1].strip();","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"CelestineTan03"},"content":" String description \u003d taskDescription[2].strip();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"CelestineTan03"},"content":" switch (taskDescription[0].strip()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"CelestineTan03"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"CelestineTan03"},"content":" tasks.add(new Todo(description));","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"CelestineTan03"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"CelestineTan03"},"content":" tasks.add(new Deadline(description,","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"CelestineTan03"},"content":" LocalDateTime.parse(taskDescription[3].strip(), this.outputFormatter)));","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"CelestineTan03"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"CelestineTan03"},"content":" tasks.add(new Event(description, LocalDateTime.parse(taskDescription[3].strip(),","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"CelestineTan03"},"content":" this.outputFormatter), LocalDateTime.parse(taskDescription[4].strip(), this.outputFormatter)));","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"CelestineTan03"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"CelestineTan03"},"content":" if (isDone.equals(\"true\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"CelestineTan03"},"content":" int index \u003d tasks.size() - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"CelestineTan03"},"content":" tasks.get(index).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"CelestineTan03"},"content":" nextTask \u003d reader.readLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"CelestineTan03"},"content":" reader.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"CelestineTan03"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CelestineTan03":94}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":" * Represents a task","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for a task","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" * @param description the task details","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" * Check if the task has been completed and","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" * return the status icon of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" * @return the status icon of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" return(isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" // Mark a task as done","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" // Mark a task as not done","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task in file format.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation in file format","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" abstract String toFileFormat();","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":" * Return the type of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":" * @return the type of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CelestineTan03"},"content":" abstract String getTaskType();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CelestineTan03":63}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" private final DateTimeFormatter inputFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for the task list if an initial list exist","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" * @param tasks the list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" this.inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for the task list if an initial list does not exist","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" this.inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" * Returns the number of tasks in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" * @return the number of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" public int getNumberOfTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" * Returns the list of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" * @return the list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":" return this.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" * Returns a success message when a task has been successfully added.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" * @return the success message","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" public String printAddTaskSuccessMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":" StringBuilder message \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" message.append(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":" message.append(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" message.append(this.tasks.get(this.tasks.size() - 1).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":" message.append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CelestineTan03"},"content":" message.append(\"Now you have \");","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CelestineTan03"},"content":" message.append(this.tasks.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CelestineTan03"},"content":" message.append(\" task(s) in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"CelestineTan03"},"content":" return message.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"CelestineTan03"},"content":" * Returns a success message when a task has been successfully deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"CelestineTan03"},"content":" * @return the success message","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"CelestineTan03"},"content":" public String printRemoveTaskSuccessMessage(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"CelestineTan03"},"content":" StringBuilder message \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"CelestineTan03"},"content":" message.append(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"CelestineTan03"},"content":" message.append(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"CelestineTan03"},"content":" message.append(task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"CelestineTan03"},"content":" message.append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"CelestineTan03"},"content":" message.append(\"Now you have \");","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"CelestineTan03"},"content":" message.append(this.tasks.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"CelestineTan03"},"content":" message.append(\" task(s) in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"CelestineTan03"},"content":" return message.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"CelestineTan03"},"content":" * Takes in the task details and add the task to the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"CelestineTan03"},"content":" * @param task the task description","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"CelestineTan03"},"content":" * @param typeOfTask the type of the task to be added","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"CelestineTan03"},"content":" * @throws DukeException if invalid or incorrect command","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"CelestineTan03"},"content":" public void addTask(String[] task, String typeOfTask) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"CelestineTan03"},"content":" switch (typeOfTask) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"CelestineTan03"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.add(new Event(task[0], LocalDateTime.parse(task[1], this.inputFormatter),","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"CelestineTan03"},"content":" LocalDateTime.parse(task[2], this.inputFormatter)));","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"CelestineTan03"},"content":" } catch (DateTimeParseException exception) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Invalid start and end date/time. The format should be yyyy-mm-dd hh:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(printAddTaskSuccessMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"CelestineTan03"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.add(new Todo(task[1]));","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(printAddTaskSuccessMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"CelestineTan03"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.add(new Deadline(task[0], LocalDateTime.parse(task[1], this.inputFormatter)));","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"CelestineTan03"},"content":" } catch (DateTimeParseException exception) {","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Invalid start and end date/time. The format should be yyyy-mm-dd hh:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(printAddTaskSuccessMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"CelestineTan03"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDCOMMAND);","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"CelestineTan03"},"content":" * Takes in the command to delete a task","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"CelestineTan03"},"content":" * and remove the task from the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"CelestineTan03"},"content":" * @param taskNumber the task number of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"CelestineTan03"},"content":" * @throws DukeException if invalid or incorrect command","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"CelestineTan03"},"content":" public void removeTask(int taskNumber) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"CelestineTan03"},"content":" if (this.tasks.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.DELETEEMPTYLIST);","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"CelestineTan03"},"content":" if (taskNumber \u003e this.tasks.size() || taskNumber \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDTASKNUMBER);","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"CelestineTan03"},"content":" Task task \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"CelestineTan03"},"content":" this.tasks.remove(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(printRemoveTaskSuccessMessage(task));","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"CelestineTan03"},"content":" * Takes in the task command to mark or unmark","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"CelestineTan03"},"content":" * a task and mark the task as done or mark a task as","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"CelestineTan03"},"content":" * not done","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"CelestineTan03"},"content":" * @param taskNumber the task number of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"CelestineTan03"},"content":" * @param action to mark or unmark the task","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"CelestineTan03"},"content":" * @throws DukeException if invalid or incorrect command","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"CelestineTan03"},"content":" public void markTask(int taskNumber, String action) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"CelestineTan03"},"content":" switch(action) {","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"CelestineTan03"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"CelestineTan03"},"content":" if (this.tasks.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.MARKEMPTYLIST);","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"CelestineTan03"},"content":" if (taskNumber \u003e this.tasks.size() || taskNumber \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDTASKNUMBER);","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"CelestineTan03"},"content":" Task markTask \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"CelestineTan03"},"content":" markTask.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(markTask.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"CelestineTan03"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"CelestineTan03"},"content":" if (this.tasks.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.UNMARKEMPTYLIST);","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"CelestineTan03"},"content":" if (taskNumber \u003e this.tasks.size() || taskNumber \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDTASKNUMBER);","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"CelestineTan03"},"content":" Task unmarkTask \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"CelestineTan03"},"content":" unmarkTask.markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(unmarkTask.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"CelestineTan03"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"CelestineTan03"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"CelestineTan03"},"content":" throw new DukeException(ExceptionTypes.INVALIDCOMMAND);","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"CelestineTan03"},"content":" public void findTask(String keyword) {","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"CelestineTan03"},"content":" if (this.tasks.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"There are no matching tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"CelestineTan03"},"content":" return;","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"CelestineTan03"},"content":" int count \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"CelestineTan03"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"CelestineTan03"},"content":" if (task.toString().contains(keyword) || task.getTaskType().contains(keyword)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"CelestineTan03"},"content":" if (count \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Here are the matching task(s) in your list:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(count + \". \" + task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"CelestineTan03"},"content":" count++;","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"CelestineTan03"},"content":" if (count \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"There are no matching tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CelestineTan03":199}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":" * Represents a task of type todo","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" * A constructor for a task of type todo","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" * @param description the task details","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" * Return the string representation of the task in file format.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" * @return the string representation in file format","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" return \"T | \" + this.isDone + \" | \" + this.description;","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" * Return the task type.","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" * @return the task type","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" public String getTaskType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" return \"todo\";","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"CelestineTan03":46}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":" // Print the greeting message","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":" public void printGreeting() {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Hello! I\u0027m Botty!\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" // Print the farewell message","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":" public void printFarewell() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" // Print all the available commands","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" public void printAllCommands() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"OOPS!!! Invalid command. Try the following commands instead:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e todo \u003ctask\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e deadline \u003ctask\u003e /by yyyy-mm-dd hh:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e event \u003ctask\u003e /from yyyy-mm-dd hh:mm /to yyyy-mm-dd hh:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e list\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e mark \u003ctask number\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e unmark \u003ctask number\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e delete \u003ctask number\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e find \u003ckeyword\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":" System.out.println(\"\u003e bye\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CelestineTan03":27}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" * Represents a test for Parser class","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" public void testGetCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"todo\", new Parser(\"todo sleep\").getCommand());","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" public void testGetTodoTask() {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" assertArrayEquals(new String[] {\"todo\"}, new Parser(\"todo\").getTodoTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"OOPS!!! The description of a todo cannot be empty.\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"CelestineTan03"},"content":" public void testIncompleteCommandDeadline() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"CelestineTan03"},"content":" assertArrayEquals(new String[] {\"deadline\"}, new Parser(\"deadline\").getDeadlineTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"CelestineTan03"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"OOPS!!! The description of a deadline cannot be empty and\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"CelestineTan03"},"content":" \" the deadline for the deadline cannot be empty.\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"CelestineTan03"},"content":" public void testInvalidCommandDeadline() {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"CelestineTan03"},"content":" assertArrayEquals(new String[] {\"deadline\", \"sleep\"}, new Parser(\"deadline sleep /by\").getDeadlineTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"CelestineTan03"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"OOPS!!! Invalid command. The command for a deadline should be:\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"CelestineTan03"},"content":" \"deadline \u003ctask\u003e /by yyyy-mm-dd hh:mm\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"CelestineTan03"},"content":" public void testIncompleteCommandEvent() {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"CelestineTan03"},"content":" assertArrayEquals(new String[] {\"event\"}, new Parser(\"event\").getEventTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"CelestineTan03"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"OOPS!!! The description of an event cannot be empty and the start\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"CelestineTan03"},"content":" \" and end time/date cannot be empty.\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"CelestineTan03"},"content":" public void testInvalidCommandEvent() {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"CelestineTan03"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"CelestineTan03"},"content":" assertArrayEquals(new String[] {\"event\", \"sleep\"}, new Parser(\"event sleep /from\").getEventTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"CelestineTan03"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"CelestineTan03"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"OOPS!!! Invalid command. The command for an event should be:\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"CelestineTan03"},"content":" \"event \u003ctask\u003e /from yyyy-mm-dd hh:mm /to yyyy-mm-dd hh:mm\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CelestineTan03":69}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":" * Represents a test for Todo class","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":" public void testToStringConversion() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"[T][ ] sleep\", new Todo(\"sleep\").toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" public void testToFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":" assertEquals(\"T | false | sleep\", new Todo(\"sleep\").toFileFormat());","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"CelestineTan03":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"CelestineTan03"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"CelestineTan03"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"CelestineTan03"},"content":"unmark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"CelestineTan03"},"content":"delete 1","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"CelestineTan03"},"content":"todo","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"CelestineTan03"},"content":"todo sleep","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"CelestineTan03"},"content":"event","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"CelestineTan03"},"content":"event meeting /from 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"CelestineTan03"},"content":"event meeting /from 2023-10-10 14:00 /to 2023-10-10 16:00","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"CelestineTan03"},"content":"deadline","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"CelestineTan03"},"content":"deadline lecture quiz /by 9pm","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"CelestineTan03"},"content":"deadline lecture quiz /by 2023-10-05 23:59","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"CelestineTan03"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"CelestineTan03"},"content":"find","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"CelestineTan03"},"content":"find sleep","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":"mark","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":"mark -2","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":"unmark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":"unmark 10","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"CelestineTan03"},"content":"unmark","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":"delete -4","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"CelestineTan03"},"content":"delete","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"CelestineTan03"},"content":"delete 1","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"CelestineTan03"},"content":"add task","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"CelestineTan03"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"CelestineTan03":26}},{"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":"CelestineTan03"},"content":"# delete stored data from previous run","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"CelestineTan03"},"content":"if [ -e \"./duke.txt\" ]","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"CelestineTan03"},"content":"then","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"CelestineTan03"},"content":" rm ./duke.txt","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"CelestineTan03"},"content":"fi","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"CelestineTan03"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"CelestineTan03"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"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":29,"author":{"gitId":"CelestineTan03"},"content":"java -classpath ../bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"CelestineTan03":8,"-":36}}] diff --git a/CelestineTan03_ip_master/commits.json b/CelestineTan03_ip_master/commits.json index beb4a0a4..7dd2085b 100644 --- a/CelestineTan03_ip_master/commits.json +++ b/CelestineTan03_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"CelestineTan03":[{"date":"2023-08-21","commitResults":[{"hash":"c9d815d867ac39c6f14cddb86cdb95f8a4b8ac9b","isMergeCommit":false,"messageTitle":"Rename chatbot and make chatbot greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"452735866ed65367eddb8600aabad358b606e835","isMergeCommit":false,"messageTitle":"Chatbot now echos user\u0027s command","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"e8854359fd0bcdb00ff02e6aff17d512684689f9","isMergeCommit":false,"messageTitle":"Add list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"7c862be0853d87015956278fccb64c225ff0276d","isMergeCommit":false,"messageTitle":"Add the ability to mark and unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":5}}},{"hash":"f3dbb859ac7703392bfd57f11df5a40addfcd0ae","isMergeCommit":false,"messageTitle":"Add support for tracking ToDos, Deadlines and Events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":32}}}]},{"date":"2023-08-22","commitResults":[{"hash":"8bf452611252e8fdfe9c95f10c2c3f89c636529a","isMergeCommit":false,"messageTitle":"Test using the I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":55,"deletions":52}}},{"hash":"31f2c9f5db4ac35df255cb6bd3124b0cba76c725","isMergeCommit":false,"messageTitle":"Add input validation","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":68,"deletions":19}}},{"hash":"6367ed81c74c1d1878ba02e4e32be686cb370bf0","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":50,"deletions":10}}}]},{"date":"2023-08-23","commitResults":[{"hash":"39a876eba2c13af8be29bc21a7eecd39cca50bca","isMergeCommit":false,"messageTitle":"Update error handling and add javadoc","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":214,"deletions":66}}}]},{"date":"2023-08-28","commitResults":[{"hash":"dc130cbf0a2aeac45d785d60f14359b50e698d1f","isMergeCommit":false,"messageTitle":"feat: add the ability to save data","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":4}}}]},{"date":"2023-08-29","commitResults":[{"hash":"1558e9309921801d11d4220510e2e28b6bafec37","isMergeCommit":false,"messageTitle":"Add date and time feature","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":125,"deletions":103}}}]},{"date":"2023-08-30","commitResults":[{"hash":"de716081744f46ad60f61341424aafbc80248797","isMergeCommit":false,"messageTitle":"refactor: extract Ui, Storage, Parser, TaskList classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":395,"deletions":325}}},{"hash":"accbfd8c2c04000e1d473e5a7b27988ad1e3ea32","isMergeCommit":false,"messageTitle":"Add package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"1a8d0d568f85551d9ce791992058c158e2afdbd0","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"576740df4bd14c629e9f6207c35c6b229690f5f1","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":0}}},{"hash":"b4cc4feb64d0756c6b8e4c87ab6c62aac685ac7a","isMergeCommit":false,"messageTitle":"Create JAR file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"607f5f0fdad3e64ebac8f93d7e417f3f581b9578","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":147,"deletions":1}}},{"hash":"1d148e0193ece363b98a9b04b97020dd503f9cd3","isMergeCommit":false,"messageTitle":"Update code to comply with coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":1}}},{"hash":"d700e6fcd3fe3d28338740157b7143c6af235fb2","isMergeCommit":false,"messageTitle":"feat: find task by searching for keyword","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":77,"deletions":6}}},{"hash":"f25547fbac6b5f91e2f9c452e9f17d668817c80e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Task.java\n","fileTypesAndContributionMap":{}},{"hash":"52fd869228fa0fe57cf9334fdd96785f9faa54bc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Deadline.java\n#\tsrc/main/java/duke/Event.java\n#\tsrc/main/java/duke/Task.java\n#\tsrc/main/java/duke/Todo.java\n","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"CelestineTan03":{"java":910,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":2,"txt":26}},"authorContributionVariance":{"CelestineTan03":84609.51},"authorDisplayNameMap":{"CelestineTan03":"CS2103T-W08-1 CELE..TONG"}} +{"authorDailyContributionsMap":{"CelestineTan03":[{"date":"2023-08-21","commitResults":[{"hash":"c9d815d867ac39c6f14cddb86cdb95f8a4b8ac9b","isMergeCommit":false,"messageTitle":"Rename chatbot and make chatbot greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"452735866ed65367eddb8600aabad358b606e835","isMergeCommit":false,"messageTitle":"Chatbot now echos user\u0027s command","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"e8854359fd0bcdb00ff02e6aff17d512684689f9","isMergeCommit":false,"messageTitle":"Add list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"7c862be0853d87015956278fccb64c225ff0276d","isMergeCommit":false,"messageTitle":"Add the ability to mark and unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":5}}},{"hash":"f3dbb859ac7703392bfd57f11df5a40addfcd0ae","isMergeCommit":false,"messageTitle":"Add support for tracking ToDos, Deadlines and Events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":32}}}]},{"date":"2023-08-22","commitResults":[{"hash":"8bf452611252e8fdfe9c95f10c2c3f89c636529a","isMergeCommit":false,"messageTitle":"Test using the I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":55,"deletions":52}}},{"hash":"31f2c9f5db4ac35df255cb6bd3124b0cba76c725","isMergeCommit":false,"messageTitle":"Add input validation","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":68,"deletions":19}}},{"hash":"6367ed81c74c1d1878ba02e4e32be686cb370bf0","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":50,"deletions":10}}}]},{"date":"2023-08-23","commitResults":[{"hash":"39a876eba2c13af8be29bc21a7eecd39cca50bca","isMergeCommit":false,"messageTitle":"Update error handling and add javadoc","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":214,"deletions":66}}}]},{"date":"2023-08-28","commitResults":[{"hash":"dc130cbf0a2aeac45d785d60f14359b50e698d1f","isMergeCommit":false,"messageTitle":"feat: add the ability to save data","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":4}}}]},{"date":"2023-08-29","commitResults":[{"hash":"1558e9309921801d11d4220510e2e28b6bafec37","isMergeCommit":false,"messageTitle":"Add date and time feature","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":125,"deletions":103}}}]},{"date":"2023-08-30","commitResults":[{"hash":"de716081744f46ad60f61341424aafbc80248797","isMergeCommit":false,"messageTitle":"refactor: extract Ui, Storage, Parser, TaskList classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":395,"deletions":325}}},{"hash":"accbfd8c2c04000e1d473e5a7b27988ad1e3ea32","isMergeCommit":false,"messageTitle":"Add package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"1a8d0d568f85551d9ce791992058c158e2afdbd0","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"576740df4bd14c629e9f6207c35c6b229690f5f1","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":0}}},{"hash":"b4cc4feb64d0756c6b8e4c87ab6c62aac685ac7a","isMergeCommit":false,"messageTitle":"Create JAR file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"607f5f0fdad3e64ebac8f93d7e417f3f581b9578","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":147,"deletions":1}}},{"hash":"1d148e0193ece363b98a9b04b97020dd503f9cd3","isMergeCommit":false,"messageTitle":"Update code to comply with coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":1}}},{"hash":"d700e6fcd3fe3d28338740157b7143c6af235fb2","isMergeCommit":false,"messageTitle":"feat: find task by searching for keyword","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":77,"deletions":6}}},{"hash":"f25547fbac6b5f91e2f9c452e9f17d668817c80e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Task.java\n","fileTypesAndContributionMap":{}},{"hash":"52fd869228fa0fe57cf9334fdd96785f9faa54bc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Deadline.java\n#\tsrc/main/java/duke/Event.java\n#\tsrc/main/java/duke/Task.java\n#\tsrc/main/java/duke/Todo.java\n","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"a8c4096e493a62d55a7d034d0640eab318a164e1","isMergeCommit":false,"messageTitle":"fix: text-ui-test fail due to previous test data stored and input to wrong program","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":7,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"CelestineTan03":{"java":910,"md":0,"fxml":0,"sh":8,"bat":0,"gradle":2,"txt":26}},"authorContributionVariance":{"CelestineTan03":76547.18},"authorDisplayNameMap":{"CelestineTan03":"CS2103T-W08-1 CELE..TONG"}} diff --git a/Chrainx_ip_master/authorship.json b/Chrainx_ip_master/authorship.json index 753d21b7..8de9f2f7 100644 --- a/Chrainx_ip_master/authorship.json +++ b/Chrainx_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"T,1,a","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"D,1,a ,2022-10-10","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"T,1,a","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"D,1,a ,2022-10-10","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Chrainx":4}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"import Duke.TaskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import Duke.Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"import Duke.Parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import Duke.Storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"import Duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":" * Class for duke","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":" private Scanner sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" public Duke() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" this.ui.printChat(\" Hello! I\u0027m Chrainx\\n\" + \" What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" this.storage.createStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" this.tasks \u003d this.storage.getStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" this.ui.error(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" while (this.sc.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" String input \u003d this.sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" Parser.parse(input, ui, storage, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" if (input.toUpperCase().equals(\"BYE\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" this.sc.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" this.ui.error(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" new Duke().run();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":"// private static boolean isInteger(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":"// Integer.parseInt(str);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":"// return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":"// } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":"// return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":"// public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Chrainx"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Chrainx"},"content":"// Duke.Storage.Storage storedList \u003d new Duke.Storage.Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Chrainx"},"content":"// ArrayList\u003cDuke.Duke.Task.Task\u003e taskList \u003d storedList.getStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Chrainx"},"content":"// \" Hello! I\u0027m Chrainx\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Chrainx"},"content":"// \" What can I do for you?\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Chrainx"},"content":"// Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Chrainx"},"content":"// while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Chrainx"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Chrainx"},"content":"// String input \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Chrainx"},"content":"// if (","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Chrainx"},"content":"// input.split(\" \").length \u003d\u003d 2","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 input.split(\" \")[0].equals(\"mark\")","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 isInteger(input.split(\" \")[1])","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 Integer.parseInt(input.split(\" \")[1]) \u003c\u003d taskList.size()","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 Integer.parseInt(input.split(\" \")[1]) \u003e\u003d 1","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Chrainx"},"content":"// ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Chrainx"},"content":"// taskList.get(Integer.parseInt(input.split(\" \")[1]) - 1).changeMarkStatus(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Chrainx"},"content":"// \"You have marked this task as done\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Chrainx"},"content":"// taskList.get(Integer.parseInt(input.split(\" \")[1]) - 1).toString() + \"\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Chrainx"},"content":"// } else if (","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Chrainx"},"content":"// input.split(\" \").length \u003d\u003d 2","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 input.split(\" \")[0].equals(\"unmark\")","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 isInteger((input.split(\" \"))[1])","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 Integer.parseInt(input.split(\" \")[1]) \u003c\u003d taskList.size()","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 Integer.parseInt(input.split(\" \")[1]) \u003e\u003d 1","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"Chrainx"},"content":"// ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"Chrainx"},"content":"// taskList.get(Integer.parseInt(input.split(\" \")[1]) - 1).changeMarkStatus(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Chrainx"},"content":"// \"You have marked this task as not done\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"Chrainx"},"content":"// taskList.get(Integer.parseInt(input.split(\" \")[1]) - 1).toString() + \"\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"Chrainx"},"content":"// } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"Chrainx"},"content":"// System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"Chrainx"},"content":"// for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"Chrainx"},"content":"// (i + 1) + \". \" + taskList.get(i).toString() + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"Chrainx"},"content":"// System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"Chrainx"},"content":"// } else if (input.split(\" \").length \u003d\u003d 2","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 input.split(\" \")[0].equals(\"delete\")","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 isInteger((input.split(\" \"))[1])","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 Integer.parseInt(input.split(\" \")[1]) \u003c\u003d taskList.size()","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 Integer.parseInt(input.split(\" \")[1]) \u003e\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"Chrainx"},"content":"// \"Noted. I\u0027ve removed this task:\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"Chrainx"},"content":"// taskList.get(Integer.parseInt(input.split(\" \")[1]) - 1)","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"Chrainx"},"content":"// taskList.remove(Integer.parseInt(input.split(\" \")[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"Chrainx"},"content":"// \"Now you have \" + taskList.size() + \" task in the list\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"Chrainx"},"content":"// } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"Chrainx"},"content":"// System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"Chrainx"},"content":"// if (Duke.Task.ToDos.isTodo(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"Chrainx"},"content":"// taskList.add(new Duke.Task.ToDos(input.substring(5)));","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"Chrainx"},"content":"// System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"Chrainx"},"content":"// } else if (Duke.Task.Deadlines.isDeadline(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"Chrainx"},"content":"// taskList.add(","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"Chrainx"},"content":"// new Duke.Task.Deadlines(","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"Chrainx"},"content":"// input.substring(9, input.indexOf(\"/by \")),","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"Chrainx"},"content":"// input.substring(input.indexOf(\"/by \") + 4)","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"Chrainx"},"content":"// )","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"Chrainx"},"content":"// System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Chrainx"},"content":"// } else if (Duke.Task.Events.isEvent(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"Chrainx"},"content":"// taskList.add(new Duke.Task.Events(","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"Chrainx"},"content":"// input.substring(6, input.indexOf(\"/from \")),","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"Chrainx"},"content":"// input.substring(input.indexOf(\"/from \") + 6, input.indexOf(\"/to \") - 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"Chrainx"},"content":"// input.substring(input.indexOf(\"/to \") + 4)","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"Chrainx"},"content":"// )","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"Chrainx"},"content":"// System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"Chrainx"},"content":"// } else if (input.equals(\"bye\")){","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"Chrainx"},"content":"// storedList.editStorage(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"Chrainx"},"content":"// \" Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"Chrainx"},"content":"// \"Wish You a wonderful day\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"Chrainx"},"content":"// scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"Chrainx"},"content":"// break;","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"Chrainx"},"content":"// } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"Chrainx"},"content":"// Duke.Duke.Task.Task.isTask(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"Chrainx"},"content":"// taskList.get(taskList.size() - 1).toString() + \"\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"Chrainx"},"content":"// \"Now you have \" + (taskList.size()) + \" tasks in the list.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"Chrainx"},"content":"// } catch (Duke.DukeException.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"Chrainx"},"content":"// System.out.println(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"Chrainx"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"Chrainx"},"content":"// } catch (Duke.DukeException.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"Chrainx"},"content":"// System.out.println(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Chrainx":164,"-":4}},{"path":"src/main/java/Duke/DukeException/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package Duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":" public DukeException(String ErrMsg) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":" super(ErrMsg);","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":" return super.getMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Chrainx":11}},{"path":"src/main/java/Duke/Parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package Duke.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import Duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"import Duke.Storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import Duke.Task.Deadlines;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"import Duke.Task.Events;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"import Duke.Task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"import Duke.Task.ToDos;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":"import Duke.TaskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":"import Duke.Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":" private static boolean isInteger(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" Integer.parseInt(str);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" public static void parse(String input, Ui ui, Storage storage, TaskList tasks) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" String command \u003d input.split(\" \")[0].toUpperCase();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" Task targetTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" if (command.equals(\"BYE\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" ui.bye();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" storage.editStorage(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"LIST\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" ui.listing(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"TODO\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" if (ToDos.isTodo(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" targetTask \u003d new ToDos(input.substring(5));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" ui.addTask(targetTask, tasks.getNumberOfTask() + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" tasks.addTask(targetTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"This todo is invalid\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"DEADLINE\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":" if (Deadlines.isDeadline(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" targetTask \u003d new Deadlines(","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" input.substring(9, input.indexOf(\"/by \")),","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" input.substring(input.indexOf(\"/by \") + 4)","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" ui.addTask(targetTask, tasks.getNumberOfTask() + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":" tasks.addTask(targetTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"This deadline is invalid\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"EVENT\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":" if (Events.isEvent(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":" targetTask \u003d new Events(","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":" input.substring(6, input.indexOf(\"/from \")),","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":" input.substring(input.indexOf(\"/from \") + 6, input.indexOf(\"/to \") - 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":" input.substring(input.indexOf(\"/to \") + 4)","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Chrainx"},"content":" ui.addTask(targetTask, tasks.getNumberOfTask() + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Chrainx"},"content":" tasks.addTask((targetTask));","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"This event is invalid\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"MARK\")){","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Chrainx"},"content":" if (input.split(\" \").length \u003d\u003d 2 \u0026\u0026 isInteger(input.split(\" \")[1])) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Chrainx"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Chrainx"},"content":" if (index \u003c\u003d tasks.getNumberOfTask() - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Chrainx"},"content":" tasks.getTask(index).changeMarkStatus(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Chrainx"},"content":" ui.markAsDone(tasks.getTask(index));","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"You don\u0027t have that many tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"UNMARK\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Chrainx"},"content":" if (input.split(\" \").length \u003d\u003d 2 \u0026\u0026 isInteger(input.split(\" \")[1])) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Chrainx"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Chrainx"},"content":" if (index \u003c\u003d tasks.getNumberOfTask() - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Chrainx"},"content":" tasks.getTask(index).changeMarkStatus(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Chrainx"},"content":" ui.markAsNotDone(tasks.getTask(index));","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"You don\u0027t have that many tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"DELETE\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Chrainx"},"content":" if (input.split(\" \").length \u003d\u003d 2 \u0026\u0026 isInteger(input.split(\" \")[1])) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Chrainx"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Chrainx"},"content":" if (index \u003c\u003d tasks.getNumberOfTask() - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Chrainx"},"content":" ui.deleteTask(tasks.getTask(index), tasks.getNumberOfTask() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Chrainx"},"content":" tasks.deleteTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"You don\u0027t have that many tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! I don\u0027t understand this command\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Chrainx":96}},{"path":"src/main/java/Duke/Storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package Duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import Duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"import Duke.Task.Deadlines;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import Duke.Task.Events;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"import Duke.Task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"import Duke.Task.ToDos;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"import Duke.TaskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" private final String DIRECTORY \u003d \"./data\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" private final String FILE_PATH \u003d DIRECTORY + \"/duke.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" private File FILE;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" public void createStorage() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" File directory \u003d new File(this.DIRECTORY);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" this.FILE \u003d new File(this.FILE_PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" if (!this.FILE.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" this.FILE.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS!!! Failed to create a file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" public TaskList getStorage() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" Scanner sc \u003d new Scanner(this.FILE);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" String taskType \u003d input.split(\",\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" String taskMark \u003d input.split(\",\")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" String taskName \u003d input.split(\",\")[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" tasks.addTask(new ToDos(taskName));","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" tasks.addTask(new Deadlines(taskName, input.split(\",\")[3]));","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":" tasks.addTask(new Events(taskName, input.split(\",\")[3],input.split(\",\")[4]));","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\" OOPS!!! Failed to load tasks from file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":" if (taskMark \u003d\u003d \"0\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":" tasks.getTask(tasks.getNumberOfTask() - 1).changeMarkStatus(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Chrainx"},"content":" System.out.println(tasks.getNumberOfTask());","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Chrainx"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Chrainx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\" OOPS!!! Failed to load tasks from file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Chrainx"},"content":" public void editStorage (TaskList tasks) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Chrainx"},"content":" FileWriter fw \u003d new FileWriter(FILE);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Chrainx"},"content":" for (int i \u003d 0; i \u003c tasks.getNumberOfTask(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Chrainx"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Chrainx"},"content":" fw.write(task.writeString());","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Chrainx"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Chrainx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\" OOPS!!! Failed to write to file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Chrainx":76}},{"path":"src/main/java/Duke/Task/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package Duke.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import Duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":" * class for deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":" * The deadline of the task","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" private LocalDate ddl;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" * The constructor","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" * @param name the name of the deadline task","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" * @param ddl the deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" public Deadlines (String name, String ddl) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" this.ddl \u003d LocalDate.parse(ddl);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\" OOPS!!! Invalid date format. Please type dates in the format yyyy-mm-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" public String writeString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" if (this.getMarkStatus()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" return \"D,0\" + this.getName() + \",\" + this.ddl + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" return \"D,1,\" + this.getName() + \",\" + this.ddl + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" * Convert to string","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" * @return a string","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" return \"[D]\" + super.toString() + \"(by: \"+ this.ddl.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) +\")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":" * To check whether the input is a Duke.Task.Deadlines","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":" * @param input the task","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":" * @return Boolean","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":" public static boolean isDeadline(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Chrainx"},"content":" if(input.split( \" \")[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Chrainx"},"content":" if (input.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! The description of deadline cannot be empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Chrainx"},"content":" } else if (!input.contains(\"/by \")){","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! The description of deadline does not contain /by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Chrainx"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Chrainx"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Chrainx":69}},{"path":"src/main/java/Duke/Task/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package Duke.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import Duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":" * class for events","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"public class Events extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":" * For the start","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" private LocalDate start;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" * For the end","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" private LocalDate end;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" * The constructor","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" * @param name the name of the event task","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" * @param start The starting time","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" * @param end The ending time","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" public Events (String name, String start, String end) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" this.start \u003d LocalDate.parse(start);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" this.end \u003d LocalDate.parse(end);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\" OOPS!!! Invalid date format. Please type dates in the format yyyy-mm-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" public String writeString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":" if (this.getMarkStatus()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" return \"E,0,\" + this.getName() + \",\" + this.start + \",\" + this.end + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" return \"E,1,\" + this.getName() + \",\" + this.start + \",\" + this.end + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":" * To convert the task to string","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":" * @return a string","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":" return \"[E]\"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":" + super.toString()","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":" + \"(from: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":" + this.start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Chrainx"},"content":" + \" to: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Chrainx"},"content":" + this.end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Chrainx"},"content":" + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Chrainx"},"content":" * To check whether the input is a Duke.Task.Deadlines","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Chrainx"},"content":" * @param input the task","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Chrainx"},"content":" * @return Boolean","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Chrainx"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"Chrainx"},"content":" public static boolean isEvent(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Chrainx"},"content":" if(input.split( \" \")[0].equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"Chrainx"},"content":" if (input.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! The description of event cannot be empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Chrainx"},"content":" } else if (!input.contains(\"/from\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! The description of event does not contain /from\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Chrainx"},"content":" } else if (!input.contains(\"/to\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! The description of event does not contain /to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"Chrainx"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"Chrainx"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Chrainx":83}},{"path":"src/main/java/Duke/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package Duke.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import Duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":" * Class For Duke.Duke.Task.Task","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":" * To show whether it is marked/not","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" * The name of the task","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" private String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" * Constructor","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" * @param name of the task","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" * Change the status to a new status","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" * @param newStatus that we want to change","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" public void changeMarkStatus(boolean newStatus) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" this.isDone \u003d newStatus;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" * to print it as a string","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" * @return a string representing the task","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" if (this.isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" return \"[X] \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" return \"[ ] \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":" public String getName() {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":" return this.name;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":" public Boolean getMarkStatus() {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":" return this.isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":" public abstract String writeString();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Chrainx"},"content":" * To check whether the input is a task","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Chrainx"},"content":" * @param input the task","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"Chrainx"},"content":" * @return Boolean","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"Chrainx"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Chrainx"},"content":" public static boolean isTask(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Chrainx"},"content":" if(input.split( \" \")[0].equals(\"todo\") || input.split( \" \")[0].equals(\"deadline\") || input.split( \" \")[0].equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Chrainx"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Chrainx":70}},{"path":"src/main/java/Duke/Task/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package Duke.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import Duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"public class ToDos extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":" * The constructor","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":" * @param name the name of the Duke.Task.ToDos","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" public ToDos (String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" * To convert the Duke.Task.ToDos to the string","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" * @return a string","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" public String writeString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" if (this.getMarkStatus()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" return \"T,0,\" + this.getName() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" return \"T,1,\" + this.getName() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" * To check whether the input is a Todo","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" * @param input the task","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" * @return Boolean","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" public static boolean isTodo(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":" if(input.split( \" \")[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" if (input.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! The description of todo cannot be empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Chrainx":50}},{"path":"src/main/java/Duke/TaskList/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package Duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import Duke.Task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" return this.tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" public int getNumberOfTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Chrainx":34}},{"path":"src/main/java/Duke/Ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package Duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import Duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"import Duke.Task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import Duke.TaskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":" private final String Border \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":" public void printChat(String chat) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":" System.out.println(Border + \"\\n\" + chat + \"\\n\" + Border);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":" public void Hello() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":" printChat(\"Hello! I\u0027m Chrainx\\n\" + \" What can I do for you?\" );","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" public void addTask(Task task, int numberOfTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" printChat(\"Got it, I have added this task:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" + task.toString() + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" + \"Now you have \" + numberOfTask","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" + \" tasks in the list\"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" public void deleteTask(Task task, int numberOfTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" printChat(\"Noted, I have removed this task:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" + task.toString() + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" + \"Now you have \" + numberOfTask","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" + \" tasks in the list\"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" public void markAsDone(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" printChat(\"You have marked this task as done\\n\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" public void markAsNotDone(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" printChat(\"You have marked this task as not done\\n\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" public void bye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" printChat(\"Bye. Hope to see you again soon!\\n\" + \"Wish You a wonderful day\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" public void error(DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":" printChat(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":" public void listing(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":" String listOfTask \u003d \"Here are the list of your task:\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":" for (int i \u003d 0; i \u003c tasks.getNumberOfTask(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":" listOfTask \u003d listOfTask + tasks.getTask(i).toString() + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":" printChat(listOfTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Chrainx":56}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"a","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"b","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"deadline /by today","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"todo sleep","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"event festival /from today /to tommorow","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":"mark my answer","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":"deadline a /by x","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":"event","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":"event /to y","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Chrainx":22}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"# duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":"3. After that, locate the `src/main/java/duke.java` file, right-click it, and choose `Run duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Chrainx":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Chrainx":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"T,1,a","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"D,1,a ,2022-10-10","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"T,1,a","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"D,1,a ,2022-10-10","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"T,1,c","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Chrainx":5}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"import duke.TaskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import duke.Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"import duke.Parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import duke.Storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"import duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":" * Class for duke","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":" private Scanner sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" public Duke() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" this.ui.printChat(\" Hello! I\u0027m Chrainx\\n\" + \" What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" this.storage.createStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" this.tasks \u003d this.storage.getStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" this.ui.error(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" while (this.sc.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" String input \u003d this.sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" Parser.parse(input, ui, storage, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" if (input.toUpperCase().equals(\"BYE\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" this.sc.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" this.ui.error(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" new Duke().run();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":"// private static boolean isInteger(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":"// Integer.parseInt(str);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":"// return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":"// } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":"// return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":"// public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Chrainx"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Chrainx"},"content":"// Duke.Storage.Storage storedList \u003d new Duke.Storage.Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Chrainx"},"content":"// ArrayList\u003cDuke.Duke.Task.Task\u003e taskList \u003d storedList.getStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Chrainx"},"content":"// \" Hello! I\u0027m Chrainx\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Chrainx"},"content":"// \" What can I do for you?\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Chrainx"},"content":"// Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Chrainx"},"content":"// while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Chrainx"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Chrainx"},"content":"// String input \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Chrainx"},"content":"// if (","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Chrainx"},"content":"// input.split(\" \").length \u003d\u003d 2","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 input.split(\" \")[0].equals(\"mark\")","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 isInteger(input.split(\" \")[1])","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 Integer.parseInt(input.split(\" \")[1]) \u003c\u003d taskList.size()","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 Integer.parseInt(input.split(\" \")[1]) \u003e\u003d 1","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Chrainx"},"content":"// ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Chrainx"},"content":"// taskList.get(Integer.parseInt(input.split(\" \")[1]) - 1).changeMarkStatus(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Chrainx"},"content":"// \"You have marked this task as done\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Chrainx"},"content":"// taskList.get(Integer.parseInt(input.split(\" \")[1]) - 1).toString() + \"\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Chrainx"},"content":"// } else if (","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Chrainx"},"content":"// input.split(\" \").length \u003d\u003d 2","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 input.split(\" \")[0].equals(\"unmark\")","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 isInteger((input.split(\" \"))[1])","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 Integer.parseInt(input.split(\" \")[1]) \u003c\u003d taskList.size()","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 Integer.parseInt(input.split(\" \")[1]) \u003e\u003d 1","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"Chrainx"},"content":"// ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"Chrainx"},"content":"// taskList.get(Integer.parseInt(input.split(\" \")[1]) - 1).changeMarkStatus(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Chrainx"},"content":"// \"You have marked this task as not done\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"Chrainx"},"content":"// taskList.get(Integer.parseInt(input.split(\" \")[1]) - 1).toString() + \"\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"Chrainx"},"content":"// } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"Chrainx"},"content":"// System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"Chrainx"},"content":"// for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"Chrainx"},"content":"// (i + 1) + \". \" + taskList.get(i).toString() + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"Chrainx"},"content":"// System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"Chrainx"},"content":"// } else if (input.split(\" \").length \u003d\u003d 2","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 input.split(\" \")[0].equals(\"delete\")","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 isInteger((input.split(\" \"))[1])","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 Integer.parseInt(input.split(\" \")[1]) \u003c\u003d taskList.size()","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Chrainx"},"content":"// \u0026\u0026 Integer.parseInt(input.split(\" \")[1]) \u003e\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"Chrainx"},"content":"// \"Noted. I\u0027ve removed this task:\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"Chrainx"},"content":"// taskList.get(Integer.parseInt(input.split(\" \")[1]) - 1)","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"Chrainx"},"content":"// taskList.remove(Integer.parseInt(input.split(\" \")[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"Chrainx"},"content":"// \"Now you have \" + taskList.size() + \" task in the list\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"Chrainx"},"content":"// } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"Chrainx"},"content":"// System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"Chrainx"},"content":"// if (Duke.Task.ToDos.isTodo(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"Chrainx"},"content":"// taskList.add(new Duke.Task.ToDos(input.substring(5)));","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"Chrainx"},"content":"// System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"Chrainx"},"content":"// } else if (Duke.Task.Deadlines.isDeadline(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"Chrainx"},"content":"// taskList.add(","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"Chrainx"},"content":"// new Duke.Task.Deadlines(","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"Chrainx"},"content":"// input.substring(9, input.indexOf(\"/by \")),","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"Chrainx"},"content":"// input.substring(input.indexOf(\"/by \") + 4)","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"Chrainx"},"content":"// )","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"Chrainx"},"content":"// System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Chrainx"},"content":"// } else if (Duke.Task.Events.isEvent(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"Chrainx"},"content":"// taskList.add(new Duke.Task.Events(","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"Chrainx"},"content":"// input.substring(6, input.indexOf(\"/from \")),","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"Chrainx"},"content":"// input.substring(input.indexOf(\"/from \") + 6, input.indexOf(\"/to \") - 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"Chrainx"},"content":"// input.substring(input.indexOf(\"/to \") + 4)","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"Chrainx"},"content":"// )","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"Chrainx"},"content":"// System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"Chrainx"},"content":"// } else if (input.equals(\"bye\")){","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"Chrainx"},"content":"// storedList.editStorage(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"Chrainx"},"content":"// \" Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"Chrainx"},"content":"// \"Wish You a wonderful day\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"Chrainx"},"content":"// );","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"Chrainx"},"content":"// scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"Chrainx"},"content":"// break;","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"Chrainx"},"content":"// } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"Chrainx"},"content":"// Duke.Duke.Task.Task.isTask(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"Chrainx"},"content":"// System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"Chrainx"},"content":"// taskList.get(taskList.size() - 1).toString() + \"\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"Chrainx"},"content":"// \"Now you have \" + (taskList.size()) + \" tasks in the list.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"Chrainx"},"content":"// \"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"Chrainx"},"content":"// } catch (Duke.DukeException.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"Chrainx"},"content":"// System.out.println(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"Chrainx"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"Chrainx"},"content":"// } catch (Duke.DukeException.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"Chrainx"},"content":"// System.out.println(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"Chrainx"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Chrainx":164,"-":4}},{"path":"src/main/java/duke/DukeException/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":" public DukeException(String ErrMsg) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":" super(ErrMsg);","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":" return super.getMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Chrainx":11}},{"path":"src/main/java/duke/Parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package duke.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"import duke.Storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import duke.Task.Deadlines;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"import duke.Task.Events;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"import duke.Task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"import duke.Task.ToDos;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":"import duke.TaskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":"import duke.Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":" private static boolean isInteger(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" Integer.parseInt(str);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" public static void parse(String input, Ui ui, Storage storage, TaskList tasks) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" String command \u003d input.split(\" \")[0].toUpperCase();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" Task targetTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" if (command.equals(\"BYE\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" ui.bye();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" storage.editStorage(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"LIST\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" ui.listing(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"TODO\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" if (ToDos.isTodo(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" targetTask \u003d new ToDos(input.substring(5));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" ui.addTask(targetTask, tasks.getNumberOfTask() + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" tasks.addTask(targetTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"This todo is invalid\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"DEADLINE\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":" if (Deadlines.isDeadline(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" targetTask \u003d new Deadlines(","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" input.substring(9, input.indexOf(\"/by \")),","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" input.substring(input.indexOf(\"/by \") + 4)","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" ui.addTask(targetTask, tasks.getNumberOfTask() + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":" tasks.addTask(targetTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"This deadline is invalid\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"EVENT\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":" if (Events.isEvent(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":" targetTask \u003d new Events(","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":" input.substring(6, input.indexOf(\"/from \")),","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":" input.substring(input.indexOf(\"/from \") + 6, input.indexOf(\"/to \") - 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":" input.substring(input.indexOf(\"/to \") + 4)","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Chrainx"},"content":" ui.addTask(targetTask, tasks.getNumberOfTask() + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Chrainx"},"content":" tasks.addTask((targetTask));","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"This event is invalid\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"MARK\")){","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Chrainx"},"content":" if (input.split(\" \").length \u003d\u003d 2 \u0026\u0026 isInteger(input.split(\" \")[1])) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Chrainx"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Chrainx"},"content":" if (index \u003c\u003d tasks.getNumberOfTask() - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Chrainx"},"content":" tasks.getTask(index).changeMarkStatus(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Chrainx"},"content":" ui.markAsDone(tasks.getTask(index));","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"You don\u0027t have that many tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"UNMARK\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Chrainx"},"content":" if (input.split(\" \").length \u003d\u003d 2 \u0026\u0026 isInteger(input.split(\" \")[1])) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Chrainx"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Chrainx"},"content":" if (index \u003c\u003d tasks.getNumberOfTask() - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Chrainx"},"content":" tasks.getTask(index).changeMarkStatus(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Chrainx"},"content":" ui.markAsNotDone(tasks.getTask(index));","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"You don\u0027t have that many tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Chrainx"},"content":" } else if (command.equals(\"DELETE\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Chrainx"},"content":" if (input.split(\" \").length \u003d\u003d 2 \u0026\u0026 isInteger(input.split(\" \")[1])) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Chrainx"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Chrainx"},"content":" if (index \u003c\u003d tasks.getNumberOfTask() - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Chrainx"},"content":" ui.deleteTask(tasks.getTask(index), tasks.getNumberOfTask() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Chrainx"},"content":" tasks.deleteTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"You don\u0027t have that many tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! I don\u0027t understand this command\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Chrainx":96}},{"path":"src/main/java/duke/Storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"import duke.Task.Deadlines;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import duke.Task.Events;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"import duke.Task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"import duke.Task.ToDos;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"import duke.TaskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" private final String DIRECTORY \u003d \"./data\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" private final String FILE_PATH \u003d DIRECTORY + \"/duke.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" private File FILE;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" public void createStorage() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" File directory \u003d new File(this.DIRECTORY);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" this.FILE \u003d new File(this.FILE_PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" if (!this.FILE.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" this.FILE.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS!!! Failed to create a file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" public TaskList getStorage() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" Scanner sc \u003d new Scanner(this.FILE);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" String taskType \u003d input.split(\",\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" String taskMark \u003d input.split(\",\")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" String taskName \u003d input.split(\",\")[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" tasks.addTask(new ToDos(taskName));","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" tasks.addTask(new Deadlines(taskName, input.split(\",\")[3]));","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":" tasks.addTask(new Events(taskName, input.split(\",\")[3],input.split(\",\")[4]));","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\" OOPS!!! Failed to load tasks from file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":" if (taskMark \u003d\u003d \"0\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":" tasks.getTask(tasks.getNumberOfTask() - 1).changeMarkStatus(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Chrainx"},"content":" System.out.println(tasks.getNumberOfTask());","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Chrainx"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Chrainx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\" OOPS!!! Failed to load tasks from file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Chrainx"},"content":" public void editStorage (TaskList tasks) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Chrainx"},"content":" FileWriter fw \u003d new FileWriter(FILE);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Chrainx"},"content":" for (int i \u003d 0; i \u003c tasks.getNumberOfTask(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Chrainx"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Chrainx"},"content":" fw.write(task.writeString());","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Chrainx"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Chrainx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\" OOPS!!! Failed to write to file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Chrainx":76}},{"path":"src/main/java/duke/Task/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package duke.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":" * class for deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":" * The deadline of the task","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" private LocalDate ddl;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" * The constructor","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" * @param name the name of the deadline task","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" * @param ddl the deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" public Deadlines (String name, String ddl) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" this.ddl \u003d LocalDate.parse(ddl);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\" OOPS!!! Invalid date format. Please type dates in the format yyyy-mm-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" public String writeString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" if (this.getMarkStatus()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" return \"D,0\" + this.getName() + \",\" + this.ddl + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" return \"D,1,\" + this.getName() + \",\" + this.ddl + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" * Convert to string","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" * @return a string","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" return \"[D]\" + super.toString() + \"(by: \"+ this.ddl.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) +\")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":" * To check whether the input is a Duke.Task.Deadlines","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":" * @param input the task","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":" * @return Boolean","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":" public static boolean isDeadline(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Chrainx"},"content":" if(input.split( \" \")[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Chrainx"},"content":" if (input.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! The description of deadline cannot be empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Chrainx"},"content":" } else if (!input.contains(\"/by \")){","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! The description of deadline does not contain /by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Chrainx"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Chrainx"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Chrainx":69}},{"path":"src/main/java/duke/Task/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package duke.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":" * class for events","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"public class Events extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":" * For the start","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" private LocalDate start;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" * For the end","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" private LocalDate end;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" * The constructor","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" * @param name the name of the event task","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" * @param start The starting time","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" * @param end The ending time","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" public Events (String name, String start, String end) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" this.start \u003d LocalDate.parse(start);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" this.end \u003d LocalDate.parse(end);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\" OOPS!!! Invalid date format. Please type dates in the format yyyy-mm-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" public String writeString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":" if (this.getMarkStatus()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" return \"E,0,\" + this.getName() + \",\" + this.start + \",\" + this.end + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" return \"E,1,\" + this.getName() + \",\" + this.start + \",\" + this.end + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":" * To convert the task to string","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":" * @return a string","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":" return \"[E]\"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":" + super.toString()","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":" + \"(from: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":" + this.start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Chrainx"},"content":" + \" to: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Chrainx"},"content":" + this.end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Chrainx"},"content":" + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Chrainx"},"content":" * To check whether the input is a Duke.Task.Deadlines","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Chrainx"},"content":" * @param input the task","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Chrainx"},"content":" * @return Boolean","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Chrainx"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"Chrainx"},"content":" public static boolean isEvent(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Chrainx"},"content":" if(input.split( \" \")[0].equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"Chrainx"},"content":" if (input.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! The description of event cannot be empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Chrainx"},"content":" } else if (!input.contains(\"/from\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! The description of event does not contain /from\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Chrainx"},"content":" } else if (!input.contains(\"/to\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! The description of event does not contain /to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"Chrainx"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"Chrainx"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Chrainx":83}},{"path":"src/main/java/duke/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package duke.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":" * Class For Duke.Duke.Task.Task","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":" * To show whether it is marked/not","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" * The name of the task","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" private String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" * Constructor","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" * @param name of the task","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" * Change the status to a new status","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" * @param newStatus that we want to change","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" public void changeMarkStatus(boolean newStatus) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" this.isDone \u003d newStatus;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" * to print it as a string","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" * @return a string representing the task","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" if (this.isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" return \"[X] \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" return \"[ ] \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":" public String getName() {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":" return this.name;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":" public Boolean getMarkStatus() {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":" return this.isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":" public abstract String writeString();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Chrainx"},"content":" * To check whether the input is a task","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Chrainx"},"content":" * @param input the task","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"Chrainx"},"content":" * @return Boolean","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"Chrainx"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Chrainx"},"content":" public static boolean isTask(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Chrainx"},"content":" if(input.split( \" \")[0].equals(\"todo\") || input.split( \" \")[0].equals(\"deadline\") || input.split( \" \")[0].equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Chrainx"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Chrainx":70}},{"path":"src/main/java/duke/Task/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package duke.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"public class ToDos extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":" * The constructor","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":" * @param name the name of the Duke.Task.ToDos","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" public ToDos (String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" * To convert the Duke.Task.ToDos to the string","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" * @return a string","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" public String writeString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" if (this.getMarkStatus()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" return \"T,0,\" + this.getName() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" return \"T,1,\" + this.getName() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" * To check whether the input is a Todo","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" * @param input the task","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":" * @return Boolean","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" public static boolean isTodo(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":" if(input.split( \" \")[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" if (input.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" throw new DukeException(\"OOPS! The description of todo cannot be empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Chrainx":50}},{"path":"src/main/java/duke/TaskList/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import duke.Task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" return this.tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" public int getNumberOfTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Chrainx":34}},{"path":"src/main/java/duke/Ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"import duke.Task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import duke.TaskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":" private final String Border \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":" public void printChat(String chat) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":" System.out.println(Border + \"\\n\" + chat + \"\\n\" + Border);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":" public void Hello() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":" printChat(\"Hello! I\u0027m Chrainx\\n\" + \" What can I do for you?\" );","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" public void addTask(Task task, int numberOfTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" printChat(\"Got it, I have added this task:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" + task.toString() + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" + \"Now you have \" + numberOfTask","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" + \" tasks in the list\"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" public void deleteTask(Task task, int numberOfTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" printChat(\"Noted, I have removed this task:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" + task.toString() + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" + \"Now you have \" + numberOfTask","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" + \" tasks in the list\"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" public void markAsDone(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" printChat(\"You have marked this task as done\\n\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Chrainx"},"content":" public void markAsNotDone(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Chrainx"},"content":" printChat(\"You have marked this task as not done\\n\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Chrainx"},"content":" public void bye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Chrainx"},"content":" printChat(\"Bye. Hope to see you again soon!\\n\" + \"Wish You a wonderful day\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Chrainx"},"content":" public void error(DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Chrainx"},"content":" printChat(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Chrainx"},"content":" public void listing(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Chrainx"},"content":" String listOfTask \u003d \"Here are the list of your task:\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Chrainx"},"content":" for (int i \u003d 0; i \u003c tasks.getNumberOfTask(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Chrainx"},"content":" listOfTask \u003d listOfTask + tasks.getTask(i).toString() + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Chrainx"},"content":" printChat(listOfTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Chrainx":56}},{"path":"src/test/java/parser/parserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"import duke.Task.Deadlines;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import duke.Task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"import duke.TaskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"import duke.Task.ToDos;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":"public class parserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":" public void initialize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":" this.tasks.addTask(new ToDos(\"IDK\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Chrainx"},"content":" public void getNumberOfTask_checkTaskCount() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Chrainx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Chrainx"},"content":" this.tasks.addTask(new Deadlines(\"back\", \"2023-10-10\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Chrainx"},"content":" assertEquals(tasks.getNumberOfTask(), 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Chrainx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Chrainx"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Chrainx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Chrainx"},"content":" public void getTask_noDescriptionTodo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Chrainx"},"content":" assertEquals(\"[T][ ] IDK\" ,this.tasks.getTask(0).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Chrainx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Chrainx":36}},{"path":"src/test/java/taskList/taskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"package taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"import duke.DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"import duke.Parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"import duke.Storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"import duke.TaskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"import duke.Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":"public class taskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Chrainx":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Chrainx"},"content":"a","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Chrainx"},"content":"b","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Chrainx"},"content":"deadline /by today","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Chrainx"},"content":"todo sleep","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Chrainx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Chrainx"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Chrainx"},"content":"event festival /from today /to tommorow","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Chrainx"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Chrainx"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Chrainx"},"content":"mark my answer","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Chrainx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Chrainx"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Chrainx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Chrainx"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Chrainx"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Chrainx"},"content":"deadline a /by x","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Chrainx"},"content":"event","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Chrainx"},"content":"event /to y","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Chrainx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Chrainx"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Chrainx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Chrainx"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Chrainx":22}},{"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":"Chrainx"},"content":"java -classpath ..\\bin duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"Chrainx":1,"-":20}}] diff --git a/Chrainx_ip_master/commits.json b/Chrainx_ip_master/commits.json index 82b9e2fd..57a613f0 100644 --- a/Chrainx_ip_master/commits.json +++ b/Chrainx_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Chrainx":[{"date":"2023-08-24","commitResults":[{"hash":"362d7a191ebe56d4063c68a1bcdf4e58e464993e","isMergeCommit":false,"messageTitle":"level-0","messageBody":"","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"1de83fb1e5f20721864f0108e433967a54cd8627","isMergeCommit":false,"messageTitle":"level-1","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"1aa873ef83f017970bc2b6abdc4dd2470e4058b7","isMergeCommit":false,"messageTitle":"level-2","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":7}}},{"hash":"113ce4b27cc2c5933211e8675d3b74f4f797763a","isMergeCommit":false,"messageTitle":"level-3","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":3}}},{"hash":"e2d6cd9477c5dbb50ffb92931fe9847ca8b70968","isMergeCommit":false,"messageTitle":"level-4","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":14}}},{"hash":"6a5d744e87ccbb88daf15abbeee0eaf2c94654ba","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"d66d7fe2ef6cb1b77727bb54600c8b5e18474d2e","isMergeCommit":false,"messageTitle":"level-6","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":14,"deletions":0}}},{"hash":"f4fbbbf7fb7e6a2bf52e36fd4cf5b522792cd124","isMergeCommit":false,"messageTitle":"level-6","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1}}},{"hash":"251b8b17d8947397dd783a5c98b941fbdec985a7","isMergeCommit":false,"messageTitle":"level-7","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":241,"deletions":66}}}]},{"date":"2023-08-31","commitResults":[{"hash":"a886ecc7724a28a25ce9b9a89970cdeda8ec7526","isMergeCommit":false,"messageTitle":"level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":4,"deletions":78}}},{"hash":"42bc53869c87e999da2018cf1b2ed3db213d929e","isMergeCommit":false,"messageTitle":"level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":224,"deletions":127}}},{"hash":"c43833bbf66d8ca994120210f538b42c9d117a76","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Chrainx/branch-level-7","messageBody":"Branch level 7","fileTypesAndContributionMap":{}},{"hash":"4e4983a669095ff071cf6780b3645408682a0f28","isMergeCommit":false,"messageTitle":"level-8","messageBody":"","tags":["level-8","level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4},"java":{"insertions":47,"deletions":25}}},{"hash":"faf206d5991174701898f5b35c08a620062562bf","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Chrainx/branch-level-8","messageBody":"level-8","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"6d95b6486b3da2b844bab48e73ab12b3372357ef","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":333,"deletions":134}}},{"hash":"9c6102f16b256ff5669b6f09389c9f2fd941b4b5","isMergeCommit":true,"messageTitle":"Merge pull request #3 from Chrainx/A-MoreOOP","messageBody":"A-MoreOOP","fileTypesAndContributionMap":{}},{"hash":"a62464b7c4791d20c3048773e0dd3839bd13ec0d","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":25}}},{"hash":"c7b24277762e795177c1191d1f9a1a1544894f3f","isMergeCommit":true,"messageTitle":"Merge pull request #4 from Chrainx/A-Packages","messageBody":"A-Packages","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Chrainx":{"java":709,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":26}},"authorContributionVariance":{"Chrainx":52769.164},"authorDisplayNameMap":{"Chrainx":"CS2103T-W11-2 FRED..ENCE"}} +{"authorDailyContributionsMap":{"Chrainx":[{"date":"2023-08-24","commitResults":[{"hash":"362d7a191ebe56d4063c68a1bcdf4e58e464993e","isMergeCommit":false,"messageTitle":"level-0","messageBody":"","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"1de83fb1e5f20721864f0108e433967a54cd8627","isMergeCommit":false,"messageTitle":"level-1","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"1aa873ef83f017970bc2b6abdc4dd2470e4058b7","isMergeCommit":false,"messageTitle":"level-2","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":7}}},{"hash":"113ce4b27cc2c5933211e8675d3b74f4f797763a","isMergeCommit":false,"messageTitle":"level-3","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":3}}},{"hash":"e2d6cd9477c5dbb50ffb92931fe9847ca8b70968","isMergeCommit":false,"messageTitle":"level-4","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":14}}},{"hash":"6a5d744e87ccbb88daf15abbeee0eaf2c94654ba","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"d66d7fe2ef6cb1b77727bb54600c8b5e18474d2e","isMergeCommit":false,"messageTitle":"level-6","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":14,"deletions":0}}},{"hash":"f4fbbbf7fb7e6a2bf52e36fd4cf5b522792cd124","isMergeCommit":false,"messageTitle":"level-6","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1}}},{"hash":"251b8b17d8947397dd783a5c98b941fbdec985a7","isMergeCommit":false,"messageTitle":"level-7","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":241,"deletions":66}}}]},{"date":"2023-08-31","commitResults":[{"hash":"a886ecc7724a28a25ce9b9a89970cdeda8ec7526","isMergeCommit":false,"messageTitle":"level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":4,"deletions":78}}},{"hash":"42bc53869c87e999da2018cf1b2ed3db213d929e","isMergeCommit":false,"messageTitle":"level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":224,"deletions":127}}},{"hash":"c43833bbf66d8ca994120210f538b42c9d117a76","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Chrainx/branch-level-7","messageBody":"Branch level 7","fileTypesAndContributionMap":{}},{"hash":"4e4983a669095ff071cf6780b3645408682a0f28","isMergeCommit":false,"messageTitle":"level-8","messageBody":"","tags":["level-8","level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4},"java":{"insertions":47,"deletions":25}}},{"hash":"faf206d5991174701898f5b35c08a620062562bf","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Chrainx/branch-level-8","messageBody":"level-8","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"6d95b6486b3da2b844bab48e73ab12b3372357ef","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":333,"deletions":134}}},{"hash":"9c6102f16b256ff5669b6f09389c9f2fd941b4b5","isMergeCommit":true,"messageTitle":"Merge pull request #3 from Chrainx/A-MoreOOP","messageBody":"A-MoreOOP","fileTypesAndContributionMap":{}},{"hash":"a62464b7c4791d20c3048773e0dd3839bd13ec0d","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":25}}},{"hash":"c7b24277762e795177c1191d1f9a1a1544894f3f","isMergeCommit":true,"messageTitle":"Merge pull request #4 from Chrainx/A-Packages","messageBody":"A-Packages","fileTypesAndContributionMap":{}},{"hash":"c505c0ca3ca06e133706de768127501143aa6a07","isMergeCommit":true,"messageTitle":"Merge pull request #5 from Chrainx/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}},{"hash":"ec5ba1efae7945d586bccec0a42911d7b7b3121c","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":0},"java":{"insertions":36,"deletions":36},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"20b57a1e0f3090c2291f5e29da0eeba9edea3a9a","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"Chrainx":{"java":756,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":27}},"authorContributionVariance":{"Chrainx":61548.25},"authorDisplayNameMap":{"Chrainx":"CS2103T-W11-2 FRED..ENCE"}} diff --git a/ChuanXinNg_ip_master/authorship.json b/ChuanXinNg_ip_master/authorship.json index b7aa87a1..ea6fa2db 100644 --- a/ChuanXinNg_ip_master/authorship.json +++ b/ChuanXinNg_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"# roo project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":"3. After that, locate the `src/main/java/roo.java` file, right-click it, and choose `Run roo.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ChuanXinNg":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ChuanXinNg":1,"-":41}},{"path":"data/roo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"[T][ ] wertyu","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ChuanXinNg":1}},{"path":"roo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"[T][ ] borrow book","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"[T][ ] drink water","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"[E][ ] book fair from: 29 Aug 2023 12:34 PM to: 30 Aug 2023 12:00 PM","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"[D][ ] study CS2013T by: 28 Aug 2023 12:44 PM","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"[D][ ] return book by: 29 Aug 2023 12:44 PM","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":5}},{"path":"src/main/java/roo/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":" * Represents the commands available in the Roo application.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"public enum Commands {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":" LIST, UNMARK, MARK, DELETE, TODO, DEADLINE, EVENT, END, DATE, CLEAR, FIND, UNKNOWN","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":8}},{"path":"src/main/java/roo/Parse.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" * Deals with making sense of the user command.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"public class Parse {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" * Creates a Task object based on the input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" * @param str The input string representing a task.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" * @return A Task object parsed from the input string, or null if parsing fails.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" public static Task makeTask(String str) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" if (str.startsWith(\"[T]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" if (str.contains(\"[x]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" return new Todo(str.substring(8), true);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" } else if (str.contains(\"[ ]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" return new Todo(str.substring(8), false);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" } else if (str.startsWith(\"[D]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" int sub \u003d str.indexOf(\"by: \");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" if (str.contains(\"[x]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" return new Deadline(str.substring(8, sub - 1), str.substring(sub + 4), true);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" } else if (str.contains(\"[ ]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" return new Deadline(str.substring(8, sub - 1), str.substring(sub + 4), false);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" } else if (str.startsWith(\"[E]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" int sub1 \u003d str.indexOf(\"from: \");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" int sub2 \u003d str.indexOf(\"to: \");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" if (str.contains(\"[x]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" return new Event(str.substring(8, sub1 - 1), str.substring(sub1 + 6, sub2 - 1),","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" str.substring(sub2 + 4), true);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" } else if (str.contains(\"[ ]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" return new Event(str.substring(8, sub1 - 1), str.substring(sub1 + 6, sub2 - 1),","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" str.substring(sub2 + 4), false);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" * Parses a user input string and determines the corresponding command.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" * @param input The user input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" * @return The Commands enum representing the detected command.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" public static Commands parse(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" Commands c;","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.LIST;","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.UNMARK;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.MARK;","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"delete\") || input.startsWith(\"remove\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.DELETE;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.TODO;","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.DEADLINE;","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.EVENT;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"check\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.DATE;","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"clear\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.CLEAR;","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"find\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.FIND;","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"end\") || input.startsWith(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.END;","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.UNKNOWN;","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" return c;","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":83}},{"path":"src/main/java/roo/Roo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" * The main class for the Roo application, which is a tasks management program.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":"public class Roo {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Roo object with the specified file path.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" * @param filePath The path to the file where tasks are stored.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" Roo (String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" this.tasks \u003d new TaskList(storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" this.ui \u003d new Ui(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" * Starts the Roo application. Initializes the task list, greets the user, and handles user commands.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" this.storage.initialise(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" String input;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" Commands c;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" while (true) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" input \u003d this.ui.read();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Parse.parse(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" switch (c) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.list();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" case CLEAR:","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.clear();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" case DATE:","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" if (input.length() \u003c 7) {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Which day u want oh?? Give in dd-MM-yyyy ahhh\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" String date \u003d input.substring(6);","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy\");","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.listDateEvents(LocalDate.parse(date, formatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" case FIND:","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" if (input.length() \u003c 6) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"What do you want to find ahh??\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" String keyword \u003d input.substring(6);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.find(keyword);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" case UNMARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" if (input.length() \u003c 8) {","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Please unmark your task using this format: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" + \"\\\"unmark [serial number]\\\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" int t \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" if (t \u003e this.tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"We dunhave so many task lah \u003d_\u003d\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" } else if (!this.tasks.isDone(t - 1)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Weihh... It\u0027s unmark ehhh\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.markUndone(t - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" case MARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" if (input.length() \u003c 6) {","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Please mark your task using this format: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"ChuanXinNg"},"content":" + \"\\\"mark [serial number]\\\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"ChuanXinNg"},"content":" int u \u003d Integer.parseInt(input.substring(5));","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"ChuanXinNg"},"content":" if (u \u003e this.tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"We dunhave so many task lah \u003d_\u003d\\nq\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"ChuanXinNg"},"content":" } else if (this.tasks.isDone(u - 1)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Weihh... It\u0027s already mark ehhh\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.markDone(u - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"ChuanXinNg"},"content":" case DELETE:","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"ChuanXinNg"},"content":" if (input.length() \u003c 8) {","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Please delete your task using this format: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"ChuanXinNg"},"content":" + \"\\\"delete [serial number]\\\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"ChuanXinNg"},"content":" int v \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"ChuanXinNg"},"content":" if (v \u003e this.tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"We dunhave so many task lah \u003d_\u003d\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.delete(v - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"ChuanXinNg"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"ChuanXinNg"},"content":" String tsk \u003d input.substring(4);","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.add(new Todo(tsk));","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"ChuanXinNg"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"ChuanXinNg"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":114,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Please enter your task with this format: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"ChuanXinNg"},"content":" + \"\\\"deadline task_description /by dd-MM-yyyy HH:mm (deadline)\\\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":117,"author":{"gitId":"ChuanXinNg"},"content":" String tk \u003d input.substring(8, input.indexOf(\"/\") - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.add(new Deadline(tk, input.substring(input.indexOf(\"/by\") + 4)));","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"ChuanXinNg"},"content":" case EVENT:","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"ChuanXinNg"},"content":" if (!input.contains(\"/from\") || !input.contains(\"/to\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":123,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Please enter your task with this format: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"ChuanXinNg"},"content":" + \"\\\"event task_description /from dd-MM-yyyy HH:mm (start) \"","lastModifiedDate":"2023-08-29"},{"lineNumber":125,"author":{"gitId":"ChuanXinNg"},"content":" + \" /to dd-MM-yyyy HH:mm (end)\\\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":127,"author":{"gitId":"ChuanXinNg"},"content":" String ts \u003d input.substring(5, input.indexOf(\"/from\") - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"ChuanXinNg"},"content":" String start \u003d input.substring(input.indexOf(\"/from\") + 6, input.indexOf(\"/to\") - 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"ChuanXinNg"},"content":" String end \u003d input.substring(input.indexOf(\"/to\") + 4);","lastModifiedDate":"2023-08-29"},{"lineNumber":130,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.add(new Event(ts, start, end));","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"ChuanXinNg"},"content":" case END:","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"ChuanXinNg"},"content":" return;","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"ChuanXinNg"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"I dunno what u mean!!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":140,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(exception.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":143,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":145,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":146,"author":{"gitId":"ChuanXinNg"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":147,"author":{"gitId":"ChuanXinNg"},"content":" Roo roo \u003d new Roo(\"roo.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"ChuanXinNg"},"content":" roo.run();","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ChuanXinNg":148,"-":2}},{"path":"src/main/java/roo/RooException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"public class RooException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":" public RooException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":" super(message);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" return \"Paiseh... \" + this.getMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"ChuanXinNg":12}},{"path":"src/main/java/roo/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" * Deals with loading tasks from the file and saving tasks in the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" private File file;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" private final String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Storage object with the specified file path.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" * @param filePath The path to the file where tasks are stored.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" public Storage (String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" * Initializes the Storage and reads task data from the file if it exists.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" * @param tasks The TaskList to populate with read tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" public void initialise(TaskList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" this.file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" if (!file.createNewFile()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" this.readFileContents(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"I/O error greet: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" * Reads the contents of the file and adds tasks to the given TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" * @param tasks The TaskList to add the tasks to.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" * @throws FileNotFoundException If the file is not found.","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" private void readFileContents(TaskList tasks) throws FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" Scanner sc \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" if (!input.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" tasks.add(Parse.makeTask(input));","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" sc.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" * Clears the file contents by deleting and recreating the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" public void clear() {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" Files.delete(Paths.get(filePath));","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" this.file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" } catch (IOException err) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Error clearing \" + err.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" * Modifies the file contents to match the provided list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" * @param tasks The list of tasks to update the file with.","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" public void modifyFile(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" Files.delete(Paths.get(filePath));","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":" this.file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" FileWriter writer \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":" writer.write(t.toString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"ChuanXinNg"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"ChuanXinNg"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"I/O error modify \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"ChuanXinNg"},"content":" * Adds a task to the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The task to be added to the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"ChuanXinNg"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"ChuanXinNg"},"content":" FileWriter writer \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"ChuanXinNg"},"content":" writer.write(task.toString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"ChuanXinNg"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"ChuanXinNg"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"I/O error add \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":105}},{"path":"src/main/java/roo/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" * Manages a list of tasks and interacts with the Storage class for task-related operations.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" private final ArrayList\u003cTask\u003e data \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a TaskList with a reference to the associated Storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" * @param storage The Storage instance associated with this TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" public TaskList (Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" * Checks if a task at a specified index is marked as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" * @return true if the task is marked as done, false otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" public boolean isDone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" return data.get(index).done();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" * Returns the number of tasks in the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" * @return The number of tasks in the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" return this.data.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" * Adds a task to the list without updating the storage immediately.","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" this.data.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" * Adds a new task to the list and updates the storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" public void addNew(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" this.data.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" this.storage.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" * Clears the task list and updates the storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" public void clear() {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" this.data.clear();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" this.storage.clear();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" * Lists tasks matching the given date.","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" * @param date The date for which tasks are to be listed.","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" public void listDateEvents(LocalDate date) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" for (Task dt : data) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" if (dt.getDate() !\u003d null \u0026\u0026 dt.getDate().getDayOfMonth() \u003d\u003d date.getDayOfMonth()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"- \" + dt.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":" * Lists tasks matching a given keyword.","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" * @param keyword The keyword to search for in tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":" public void find(String keyword) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"ChuanXinNg"},"content":" int count \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"ChuanXinNg"},"content":" for (Task dt : data) {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"ChuanXinNg"},"content":" if (dt.toString().contains(keyword)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(count + \". \" + dt.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"ChuanXinNg"},"content":" count++;","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"ChuanXinNg"},"content":" * Marks a task at a specific index as done and updates the storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task to mark as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"ChuanXinNg"},"content":" public void markDone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"ChuanXinNg"},"content":" data.get(index).markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"ChuanXinNg"},"content":" storage.modifyFile(this.data);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"ChuanXinNg"},"content":" * Marks a task at a specific index as undone and updates the storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task to mark as undone.","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"ChuanXinNg"},"content":" public void markUndone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"ChuanXinNg"},"content":" data.get(index).markUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"ChuanXinNg"},"content":" storage.modifyFile(this.data);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"ChuanXinNg"},"content":" * Deletes a task at a specific index, updates the storage, and displays updated task count.","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task to delete.","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"ChuanXinNg"},"content":" public void delete(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"ChuanXinNg"},"content":" data.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"ChuanXinNg"},"content":" storage.modifyFile(this.data);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"ChuanXinNg"},"content":" * Gets the string representation of a task at a specific index.","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"ChuanXinNg"},"content":" * @return The string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"ChuanXinNg"},"content":" public String taskDetails(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"ChuanXinNg"},"content":" return data.get(index).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"ChuanXinNg"},"content":" * Lists all tasks in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"ChuanXinNg"},"content":" public void list() {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"ChuanXinNg"},"content":" if (data.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Congrats!!! Nothing to do now!!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"ChuanXinNg"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"ChuanXinNg"},"content":" for (int i \u003d 0; i \u003c data.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"ChuanXinNg"},"content":" Task dt \u003d data.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println((i + 1) + \". \" + dt.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":145}},{"path":"src/main/java/roo/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" * Deals with interactions with the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Ui object with the given TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" * @param tasks The TaskList associated with this Ui instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" public Ui (TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" * Displays a welcome message to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" public void greet() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" String logo \u003d \" ____ \\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" + \"| _ \\\\ _____ _____ \\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" + \"| |/ / | _ || _ |\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" + \"| |\\\\ \\\\ | |_| || |_| |\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" + \"|_| \\\\_\\\\|_____||_____|\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" String hello \u003d \"Hello! I am Roo!!\\n\" + \"What can I do for you ah?\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Hello from\\n\" + logo + hello);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" * Reads a line of input from the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" * @return The user\u0027s input as a String.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" public String read() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" * Closes the scanner and displays an exit message.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" public void close() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" scanner.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Ciao! Hope to see you soon yorr!!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" * Displays the list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" public void list() {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Although I dunwan to list... But here is your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" tasks.list();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" * Clears all tasks and displays a message indicating that.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" public void clear() {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" tasks.clear();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"All tasks cleared\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" * Lists tasks matching the given date.","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" * @param date The date for which tasks are to be listed.","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" public void listDateEvents(LocalDate date) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Your task on \" + date.toString() + \"...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" tasks.listDateEvents(date);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" * Lists tasks matching a given keyword.","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":" * @param keyword The keyword to search for in tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" public void find(String keyword) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Nah, your matching tasks:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"ChuanXinNg"},"content":" tasks.find(keyword);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"ChuanXinNg"},"content":" * Marks a task as done and displays a completion message on the task to mark as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task to mark as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"ChuanXinNg"},"content":" public void markDone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"ChuanXinNg"},"content":" tasks.markDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Yay! \\\"\" + tasks.taskDetails(index) + \"\\\" done liao!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"ChuanXinNg"},"content":" * Marks a task as undone and displays a message on the task to mark as undone.","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task to mark as undone.","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"ChuanXinNg"},"content":" public void markUndone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"ChuanXinNg"},"content":" tasks.markUndone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Hmm... Why just now don\u0027t mark \\\"\" + tasks.taskDetails(index) + \"\\\" as done properly...\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"ChuanXinNg"},"content":" * Deletes a task, displays a removal message about the task to delete, and shows the updated task count.","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task to delete.","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"ChuanXinNg"},"content":" public void delete(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Okay!! Task \\\"\" + tasks.taskDetails(index) + \"\\\" removed :) \");","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"ChuanXinNg"},"content":" tasks.delete(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"You still have \" + tasks.size() + \" tasks in the list\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"ChuanXinNg"},"content":" * Adds a task, displays an addition message with the added task details, and shows the updated task count.","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"ChuanXinNg"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"ChuanXinNg"},"content":" tasks.addNew(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"\\\"\" + task.toString() + \"\\\" added :)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Now got \" + tasks.size() + \" task liao T_T\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":124}},{"path":"src/main/java/roo/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" * Represents a task with deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Deadline Task with specific task details and date. It is initialised as not finished.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" * @param date Deadline of the task with dd-MM-yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the date is empty or consists only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" public Deadline(String task, String date) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" super(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" if (date.isEmpty() || date.equals(\" \")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"What is your DEADLINE???\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\");","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" this.date \u003d LocalDateTime.parse(date, formatter1);","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" this.date \u003d LocalDateTime.parse(date, formatter2);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Please use this format for your time: dd-MM-yyyy HH:mm\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Deadline Task with specific task details and date.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" * @param date Deadline of the task with dd-MM-yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" * @param isFinish The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the date is empty or consists only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" public Deadline(String task, String date, boolean isFinish) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" super(task, isFinish);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" if (date.isEmpty() || date.equals(\" \")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"What is your DEADLINE???\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\");","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" this.date \u003d LocalDateTime.parse(date, formatter1);","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" this.date \u003d LocalDateTime.parse(date, formatter2);","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Please use this format for your time: dd-MM-yyyy HH:mm\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" * Returns the deadline of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" * @return the deadline of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" public LocalDateTime getDate() {","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" return this.date;","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" * @return A string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" return \"[D]\" + super.toString() + \" by: \" + this.date.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"ChuanXinNg":81}},{"path":"src/main/java/roo/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" * Represents a event with start and end time.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Event with given event details and date. It is initialised as not finished.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" * @param start Start date and time of the event with dd-MM-yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" * @param end End date and time of the event with dd-MM-yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the dates are empty or consist only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" public Event(String task, String start, String end) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" super(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" if (start.isEmpty() || start.equals(\" \")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Missing time!!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" } else if (end.isEmpty() || end.equals(\" \")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Missing time!!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\");","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" this.start \u003d LocalDateTime.parse(start, formatter1);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" this.start \u003d LocalDateTime.parse(start, formatter2);","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Please use this format for your start time: dd-MM-yyyy HH:mm\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" this.end \u003d LocalDateTime.parse(end, formatter1);","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" this.end \u003d LocalDateTime.parse(end, formatter2);","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Please use this format for your end time: dd-MM-yyyy HH:mm\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Event with given event details and date.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" * @param start Start date and time of the event with dd-MM-yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" * @param end End date and time of the event with dd-MM-yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" * @param isFinish The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the dates are empty or consist only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" public Event(String task, String start, String end, boolean isFinish) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" super(task, isFinish);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" if (start.isEmpty() || start.equals(\" \")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Missing time !!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" } else if (end.isEmpty() || end.equals(\" \")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Missing time!!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\");","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" this.start \u003d LocalDateTime.parse(start, formatter1);","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" this.start \u003d LocalDateTime.parse(start, formatter2);","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Please use this format for your start time: dd-MM-yyyy HH:mm\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" this.end \u003d LocalDateTime.parse(end, formatter1);","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"ChuanXinNg"},"content":" this.end \u003d LocalDateTime.parse(end, formatter2);","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Please use this format for your end time: dd-MM-yyyy HH:mm\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ChuanXinNg"},"content":" * Returns the start date of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"ChuanXinNg"},"content":" * @return the start date of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"ChuanXinNg"},"content":" public LocalDateTime getDate() {","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"ChuanXinNg"},"content":" return this.start;","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"ChuanXinNg"},"content":" * Returns a string representation of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"ChuanXinNg"},"content":" * @return A string representation of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"ChuanXinNg"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"ChuanXinNg"},"content":" return \"[E]\" + super.toString()","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"ChuanXinNg"},"content":" + \" from: \" + this.start.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\"))","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"ChuanXinNg"},"content":" + \" to: \" + this.end.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"ChuanXinNg":111}},{"path":"src/main/java/roo/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":" * Represents a task in the Duke application.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":" * Tasks can be marked as done or undone, and have a description and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" private boolean isFinish;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" private final String task;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Task object with the given description. The task is initialized as not finished.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the task description is empty or consists only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" public Task (String task) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" if (task.isEmpty() || task.equals(\" \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Description is EMPTY!!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" this.isFinish \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Task object with the given description.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" * @param isFinish The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" public Task (String task, boolean isFinish) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" this.isFinish \u003d isFinish;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" * Checks if the task is marked as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" * @return true if the task is marked as done, false otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" public boolean done() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" return this.isFinish;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" public void markDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" this.isFinish \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" * Marks the task as undone.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" this.isFinish \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" * Abstract method to be implemented by subclasses. Returns the date associated with the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" * @return The date associated with the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" public abstract LocalDateTime getDate();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" * @return A string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" if (this.isFinish) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" return \"[x] \" + this.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" return \"[ ] \" + this.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":77}},{"path":"src/main/java/roo/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":" * Represents a todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Todo Task with specific details. It is initialised as not finished.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the task description is empty or consists only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" public Todo(String task) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" super(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Todo Task with specific details.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" * @param isFinish The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the task description is empty or consists only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" public Todo(String task, boolean isFinish) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" super(task, isFinish);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" * Returns null","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" * @return null","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" public LocalDateTime getDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" * Returns a string representation of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" * @return A string representation of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":48}},{"path":"src/test/java/roo/ParseTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"public class ParseTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_list() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.LIST, Parse.parse(\"list\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_mark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.MARK, Parse.parse(\"mark 1\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_unmark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.UNMARK, Parse.parse(\"unmark 1\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_delete() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.DELETE, Parse.parse(\"delete 1\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_todo() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.TODO, Parse.parse(\"todo drink water\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_deadline() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.DEADLINE, Parse.parse(\"deadline cs2103t /by 28-08-2023 12:44\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_event() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.EVENT, Parse.parse(\"event st1131 /from 29-08-2023 12:34 /to 30-08-2023 12:00\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_check() {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.DATE, Parse.parse(\"check 29-08-2023\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_clear() {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.CLEAR, Parse.parse(\"clear\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_end() {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.END, Parse.parse(\"end\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.END, Parse.parse(\"bye\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_unknown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.UNKNOWN, Parse.parse(\"abcdefg\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.UNKNOWN, Parse.parse(\"hello\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.UNKNOWN, Parse.parse(\"\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":67}},{"path":"src/test/java/roo/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_validInput1_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" Deadline deadline \u003d new Deadline(\"valid input 1\", \"30-08-2023 23:59\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"[D][ ] valid input 1 by: 30 Aug 2023 11:59 PM\", deadline.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_validInput2_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" Deadline deadline \u003d new Deadline(\"valid input 2\", \"30 Aug 2023 09:00 PM\");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"[D][ ] valid input 2 by: 30 Aug 2023 09:00 PM\", deadline.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_invalidInput_fail() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" Deadline deadline \u003d new Deadline(\"\", \"30/08/2023 2359\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"Description is EMPTY!!!\\n\", exception.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" public void getDate_validDate1_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" Deadline deadline \u003d new Deadline(\"valid date 1\", \"30-08-2023 21:00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(LocalDateTime.parse(\"30-08-2023 21:00\", DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" deadline.getDate());","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" public void getDate_validDate2_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" Deadline deadline \u003d new Deadline(\"valid date 2\", \"30 Aug 2023 09:00 PM\");","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(LocalDateTime.parse(\"30-08-2023 21:00\", DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" deadline.getDate());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":65}},{"path":"src/test/java/roo/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"public class EventTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_validInput1_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"valid input 1\", \"30-08-2023 23:59\", \"31-08-2023 23:59\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"[E][ ] valid input 1 from: 30 Aug 2023 11:59 PM to: 31 Aug 2023 11:59 PM\",","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" event.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_validInput2_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"valid input 2\", \"30 Aug 2023 11:59 PM\", \"31 Aug 2023 11:59 PM\");","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"[E][ ] valid input 2 from: 30 Aug 2023 11:59 PM to: 31 Aug 2023 11:59 PM\",","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" event.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_invalidInput1_fail() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"\", \"30-08-2023 23:59\", \"31-08-2023 23:59\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"Description is EMPTY!!!\\n\", exception.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_noStartDate_fail() {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"no start date\", \"\", \"31-08-2023 23:59\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"Missing time !!!\\n\", exception.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_noEndDate_fail() {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"no end date\", \"30-08-2023 23:59\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"Missing time !!!\\n\", exception.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" public void getDate_validDate1_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"valid date 1\", \"30-08-2023 21:00\", \"31-08-2023 23:59\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(LocalDateTime.parse(\"30-08-2023 21:00\", DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" event.getDate());","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" public void getDate_validDate2_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"valid date 2\", \"30 Aug 2023 09:00 PM\", \"31 Aug 2023 11:59 PM\");","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(LocalDateTime.parse(\"30-08-2023 21:00\", DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" event.getDate());","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":87}},{"path":"src/test/java/roo/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_validInput1_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" Todo todo \u003d new Todo(\"borrow book\");","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"[T][ ] borrow book\", todo.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_invalidInput_fail() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" Todo todo \u003d new Todo(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"Description is EMPTY!!!\\n\", exception.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" public void getDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" Todo todo \u003d new Todo(\"borrow book\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" assertNull(todo.getDate());","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":39}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"clear","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"todo drink water","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"event book fair /from 29-08-2023 12:34 /to 30-08-2023 12:00","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"deadline study CS2013T /by 28-08-2023 12:44","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"event 123456 /from 29-08-2023 13:56 /to 30-08-2023 00:00","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":"deadline return book /by 29-08-2023 12:44","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":"mark 5","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":"check 29-08-2023","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":"list","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":"end","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":18}},{"path":"text-ui-test/roo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"[T][x] drink water","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"[E][ ] book fair from: 29 Aug 2023 12:34 PM to: 30 Aug 2023 12:00 PM","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"[D][ ] study CS2013T by: 28 Aug 2023 12:44 PM","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"[E][ ] 123456 from: 29 Aug 2023 01:56 PM to: 30 Aug 2023 12:00 AM","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"[D][x] return book by: 29 Aug 2023 12:44 PM","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":5}},{"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":"ChuanXinNg"},"content":"javac -cp \"..\\src\\main\\java\" -Xlint:none -d ..\\bin ..\\src\\main\\java\\roo\\task\\*.java","lastModifiedDate":"2023-08-31"},{"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":"ChuanXinNg"},"content":"java -classpath \"..\\bin\" roo.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"ChuanXinNg":2,"-":19}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"# roo project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":"3. After that, locate the `src/main/java/roo.java` file, right-click it, and choose `Run roo.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ChuanXinNg":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" mainClass.set(\"roo.Roo\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ChuanXinNg":1,"-":41}},{"path":"data/roo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"[T][ ] wertyu","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ChuanXinNg":1}},{"path":"roo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"[T][ ] borrow book","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":1}},{"path":"src/main/java/roo/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":" * Represents the commands available in the Roo application.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"public enum Commands {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":" LIST, UNMARK, MARK, DELETE, TODO, DEADLINE, EVENT, END, DATE, CLEAR, FIND, UNKNOWN","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":8}},{"path":"src/main/java/roo/Parse.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" * Deals with making sense of the user command.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"public class Parse {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" * Creates a Task object based on the input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" * @param str The input string representing a task.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" * @return A Task object parsed from the input string, or null if parsing fails.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" public static Task makeTask(String str) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" if (str.startsWith(\"[T]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" if (str.contains(\"[x]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" return new Todo(str.substring(8), true);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" } else if (str.contains(\"[ ]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" return new Todo(str.substring(8), false);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" } else if (str.startsWith(\"[D]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" int sub \u003d str.indexOf(\"by: \");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" if (str.contains(\"[x]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" return new Deadline(str.substring(8, sub - 1), str.substring(sub + 4), true);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" } else if (str.contains(\"[ ]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" return new Deadline(str.substring(8, sub - 1), str.substring(sub + 4), false);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" } else if (str.startsWith(\"[E]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" int sub1 \u003d str.indexOf(\"from: \");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" int sub2 \u003d str.indexOf(\"to: \");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" if (str.contains(\"[x]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" return new Event(str.substring(8, sub1 - 1), str.substring(sub1 + 6, sub2 - 1),","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" str.substring(sub2 + 4), true);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" } else if (str.contains(\"[ ]\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" return new Event(str.substring(8, sub1 - 1), str.substring(sub1 + 6, sub2 - 1),","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" str.substring(sub2 + 4), false);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" * Parses a user input string and determines the corresponding command.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" * @param input The user input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" * @return The Commands enum representing the detected command.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" public static Commands parse(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" Commands c;","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.LIST;","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.UNMARK;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.MARK;","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"delete\") || input.startsWith(\"remove\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.DELETE;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.TODO;","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.DEADLINE;","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.EVENT;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"check\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.DATE;","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"clear\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.CLEAR;","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"find\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.FIND;","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" } else if (input.startsWith(\"end\") || input.startsWith(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.END;","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Commands.UNKNOWN;","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" return c;","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":83}},{"path":"src/main/java/roo/Roo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" * The main class for the Roo application, which is a tasks management program.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":"public class Roo {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Roo object with the specified file path.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" * @param filePath The path to the file where tasks are stored.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" Roo (String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" this.tasks \u003d new TaskList(storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" this.ui \u003d new Ui(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" * Starts the Roo application. Initializes the task list, greets the user, and handles user commands.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" this.storage.initialise(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" String input;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" Commands c;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" while (true) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" input \u003d this.ui.read();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" c \u003d Parse.parse(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" switch (c) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.list();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" case CLEAR:","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.clear();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" case DATE:","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" if (input.length() \u003c 7) {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Which day u want oh?? Give in dd-MM-yyyy ahhh\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" String date \u003d input.substring(6);","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy\");","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.listDateEvents(LocalDate.parse(date, formatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" case FIND:","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" if (input.length() \u003c 6) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"What do you want to find ahh??\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" String keyword \u003d input.substring(6);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.find(keyword);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" case UNMARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" if (input.length() \u003c 8) {","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Please unmark your task using this format: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" + \"\\\"unmark [serial number]\\\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" int t \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" if (t \u003e this.tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"We dunhave so many task lah \u003d_\u003d\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" } else if (!this.tasks.isDone(t - 1)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Weihh... It\u0027s unmark ehhh\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.markUndone(t - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" case MARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" if (input.length() \u003c 6) {","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Please mark your task using this format: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"ChuanXinNg"},"content":" + \"\\\"mark [serial number]\\\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"ChuanXinNg"},"content":" int u \u003d Integer.parseInt(input.substring(5));","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"ChuanXinNg"},"content":" if (u \u003e this.tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"We dunhave so many task lah \u003d_\u003d\\nq\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"ChuanXinNg"},"content":" } else if (this.tasks.isDone(u - 1)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Weihh... It\u0027s already mark ehhh\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.markDone(u - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"ChuanXinNg"},"content":" case DELETE:","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"ChuanXinNg"},"content":" if (input.length() \u003c 8) {","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Please delete your task using this format: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"ChuanXinNg"},"content":" + \"\\\"delete [serial number]\\\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"ChuanXinNg"},"content":" int v \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"ChuanXinNg"},"content":" if (v \u003e this.tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"We dunhave so many task lah \u003d_\u003d\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.delete(v - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"ChuanXinNg"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"ChuanXinNg"},"content":" String tsk \u003d input.substring(4);","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.add(new Todo(tsk));","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"ChuanXinNg"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"ChuanXinNg"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":114,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Please enter your task with this format: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"ChuanXinNg"},"content":" + \"\\\"deadline task_description /by dd-MM-yyyy HH:mm (deadline)\\\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":117,"author":{"gitId":"ChuanXinNg"},"content":" String tk \u003d input.substring(8, input.indexOf(\"/\") - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.add(new Deadline(tk, input.substring(input.indexOf(\"/by\") + 4)));","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"ChuanXinNg"},"content":" case EVENT:","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"ChuanXinNg"},"content":" if (!input.contains(\"/from\") || !input.contains(\"/to\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":123,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Please enter your task with this format: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"ChuanXinNg"},"content":" + \"\\\"event task_description /from dd-MM-yyyy HH:mm (start) \"","lastModifiedDate":"2023-08-29"},{"lineNumber":125,"author":{"gitId":"ChuanXinNg"},"content":" + \" /to dd-MM-yyyy HH:mm (end)\\\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":127,"author":{"gitId":"ChuanXinNg"},"content":" String ts \u003d input.substring(5, input.indexOf(\"/from\") - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"ChuanXinNg"},"content":" String start \u003d input.substring(input.indexOf(\"/from\") + 6, input.indexOf(\"/to\") - 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"ChuanXinNg"},"content":" String end \u003d input.substring(input.indexOf(\"/to\") + 4);","lastModifiedDate":"2023-08-29"},{"lineNumber":130,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.add(new Event(ts, start, end));","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"ChuanXinNg"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"ChuanXinNg"},"content":" case END:","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"ChuanXinNg"},"content":" this.ui.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"ChuanXinNg"},"content":" return;","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"ChuanXinNg"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"I dunno what u mean!!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":140,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(exception.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":143,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":145,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":146,"author":{"gitId":"ChuanXinNg"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":147,"author":{"gitId":"ChuanXinNg"},"content":" Roo roo \u003d new Roo(\"roo.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"ChuanXinNg"},"content":" roo.run();","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ChuanXinNg":148,"-":2}},{"path":"src/main/java/roo/RooException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"public class RooException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":" public RooException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":" super(message);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" return \"Paiseh... \" + this.getMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"ChuanXinNg":12}},{"path":"src/main/java/roo/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" * Deals with loading tasks from the file and saving tasks in the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" private File file;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" private final String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Storage object with the specified file path.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" * @param filePath The path to the file where tasks are stored.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" public Storage (String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" * Initializes the Storage and reads task data from the file if it exists.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" * @param tasks The TaskList to populate with read tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" public void initialise(TaskList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" this.file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" if (!file.createNewFile()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" this.readFileContents(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"I/O error greet: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" * Reads the contents of the file and adds tasks to the given TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" * @param tasks The TaskList to add the tasks to.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" * @throws FileNotFoundException If the file is not found.","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" private void readFileContents(TaskList tasks) throws FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" Scanner sc \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" if (!input.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" tasks.add(Parse.makeTask(input));","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" sc.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" * Clears the file contents by deleting and recreating the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" public void clear() {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" Files.delete(Paths.get(filePath));","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" this.file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" } catch (IOException err) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Error clearing \" + err.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" * Modifies the file contents to match the provided list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" * @param tasks The list of tasks to update the file with.","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" public void modifyFile(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" Files.delete(Paths.get(filePath));","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":" this.file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" FileWriter writer \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":" writer.write(t.toString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"ChuanXinNg"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"ChuanXinNg"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"I/O error modify \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"ChuanXinNg"},"content":" * Adds a task to the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The task to be added to the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"ChuanXinNg"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"ChuanXinNg"},"content":" FileWriter writer \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"ChuanXinNg"},"content":" writer.write(task.toString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"ChuanXinNg"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"ChuanXinNg"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"I/O error add \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":105}},{"path":"src/main/java/roo/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" * Manages a list of tasks and interacts with the Storage class for task-related operations.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" private final ArrayList\u003cTask\u003e data \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a TaskList with a reference to the associated Storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" * @param storage The Storage instance associated with this TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" public TaskList (Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" * Checks if a task at a specified index is marked as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" * @return true if the task is marked as done, false otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" public boolean isDone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" return data.get(index).done();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" * Returns the number of tasks in the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" * @return The number of tasks in the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" return this.data.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" * Adds a task to the list without updating the storage immediately.","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" this.data.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" * Adds a new task to the list and updates the storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" public void addNew(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" this.data.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" this.storage.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" * Clears the task list and updates the storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" public void clear() {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" this.data.clear();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" this.storage.clear();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" * Lists tasks matching the given date.","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" * @param date The date for which tasks are to be listed.","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" public void listDateEvents(LocalDate date) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" for (Task dt : data) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" if (dt.getDate() !\u003d null \u0026\u0026 dt.getDate().getDayOfMonth() \u003d\u003d date.getDayOfMonth()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"- \" + dt.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":" * Lists tasks matching a given keyword.","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" * @param keyword The keyword to search for in tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":" public void find(String keyword) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"ChuanXinNg"},"content":" int count \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"ChuanXinNg"},"content":" for (Task dt : data) {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"ChuanXinNg"},"content":" if (dt.toString().contains(keyword)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(count + \". \" + dt.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"ChuanXinNg"},"content":" count++;","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"ChuanXinNg"},"content":" * Marks a task at a specific index as done and updates the storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task to mark as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"ChuanXinNg"},"content":" public void markDone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"ChuanXinNg"},"content":" data.get(index).markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"ChuanXinNg"},"content":" storage.modifyFile(this.data);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"ChuanXinNg"},"content":" * Marks a task at a specific index as undone and updates the storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task to mark as undone.","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"ChuanXinNg"},"content":" public void markUndone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"ChuanXinNg"},"content":" data.get(index).markUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"ChuanXinNg"},"content":" storage.modifyFile(this.data);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"ChuanXinNg"},"content":" * Deletes a task at a specific index, updates the storage, and displays updated task count.","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task to delete.","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"ChuanXinNg"},"content":" public void delete(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"ChuanXinNg"},"content":" data.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"ChuanXinNg"},"content":" storage.modifyFile(this.data);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"ChuanXinNg"},"content":" * Gets the string representation of a task at a specific index.","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"ChuanXinNg"},"content":" * @return The string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"ChuanXinNg"},"content":" public String taskDetails(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"ChuanXinNg"},"content":" return data.get(index).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"ChuanXinNg"},"content":" * Lists all tasks in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"ChuanXinNg"},"content":" public void list() {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"ChuanXinNg"},"content":" if (data.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Congrats!!! Nothing to do now!!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"ChuanXinNg"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"ChuanXinNg"},"content":" for (int i \u003d 0; i \u003c data.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"ChuanXinNg"},"content":" Task dt \u003d data.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println((i + 1) + \". \" + dt.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":145}},{"path":"src/main/java/roo/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" * Deals with interactions with the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Ui object with the given TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" * @param tasks The TaskList associated with this Ui instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" public Ui (TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" * Displays a welcome message to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" public void greet() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" String logo \u003d \" ____ \\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" + \"| _ \\\\ _____ _____ \\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" + \"| |/ / | _ || _ |\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" + \"| |\\\\ \\\\ | |_| || |_| |\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" + \"|_| \\\\_\\\\|_____||_____|\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" String hello \u003d \"Hello! I am Roo!!\\n\" + \"What can I do for you ah?\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Hello from\\n\" + logo + hello);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" * Reads a line of input from the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" * @return The user\u0027s input as a String.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" public String read() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" * Closes the scanner and displays an exit message.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" public void close() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" scanner.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Ciao! Hope to see you soon yorr!!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" * Displays the list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" public void list() {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Although I dunwan to list... But here is your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" tasks.list();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" * Clears all tasks and displays a message indicating that.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" public void clear() {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" tasks.clear();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"All tasks cleared\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" * Lists tasks matching the given date.","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" * @param date The date for which tasks are to be listed.","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" public void listDateEvents(LocalDate date) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Your task on \" + date.toString() + \"...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" tasks.listDateEvents(date);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" * Lists tasks matching a given keyword.","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":" * @param keyword The keyword to search for in tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" public void find(String keyword) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Nah, your matching tasks:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"ChuanXinNg"},"content":" tasks.find(keyword);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"ChuanXinNg"},"content":" * Marks a task as done and displays a completion message on the task to mark as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task to mark as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"ChuanXinNg"},"content":" public void markDone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"ChuanXinNg"},"content":" tasks.markDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Yay! \\\"\" + tasks.taskDetails(index) + \"\\\" done liao!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"ChuanXinNg"},"content":" * Marks a task as undone and displays a message on the task to mark as undone.","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task to mark as undone.","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"ChuanXinNg"},"content":" public void markUndone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"ChuanXinNg"},"content":" tasks.markUndone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Hmm... Why just now don\u0027t mark \\\"\" + tasks.taskDetails(index) + \"\\\" as done properly...\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"ChuanXinNg"},"content":" * Deletes a task, displays a removal message about the task to delete, and shows the updated task count.","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"ChuanXinNg"},"content":" * @param index The index of the task to delete.","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"ChuanXinNg"},"content":" public void delete(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Okay!! Task \\\"\" + tasks.taskDetails(index) + \"\\\" removed :) \");","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"ChuanXinNg"},"content":" tasks.delete(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"You still have \" + tasks.size() + \" tasks in the list\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"ChuanXinNg"},"content":" * Adds a task, displays an addition message with the added task details, and shows the updated task count.","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"ChuanXinNg"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"ChuanXinNg"},"content":" tasks.addNew(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"\\\"\" + task.toString() + \"\\\" added :)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"ChuanXinNg"},"content":" System.out.println(\"Now got \" + tasks.size() + \" task liao T_T\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":124}},{"path":"src/main/java/roo/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" * Represents a task with deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Deadline Task with specific task details and date. It is initialised as not finished.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" * @param date Deadline of the task with dd-MM-yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the date is empty or consists only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" public Deadline(String task, String date) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" super(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" if (date.isEmpty() || date.equals(\" \")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"What is your DEADLINE???\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\");","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" this.date \u003d LocalDateTime.parse(date, formatter1);","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" this.date \u003d LocalDateTime.parse(date, formatter2);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Please use this format for your time: dd-MM-yyyy HH:mm\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Deadline Task with specific task details and date.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" * @param date Deadline of the task with dd-MM-yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" * @param isFinish The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the date is empty or consists only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" public Deadline(String task, String date, boolean isFinish) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" super(task, isFinish);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" if (date.isEmpty() || date.equals(\" \")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"What is your DEADLINE???\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\");","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" this.date \u003d LocalDateTime.parse(date, formatter1);","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" this.date \u003d LocalDateTime.parse(date, formatter2);","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Please use this format for your time: dd-MM-yyyy HH:mm\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" * Returns the deadline of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" * @return the deadline of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" public LocalDateTime getDate() {","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" return this.date;","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" * @return A string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" return \"[D]\" + super.toString() + \" by: \" + this.date.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"ChuanXinNg":81}},{"path":"src/main/java/roo/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" * Represents a event with start and end time.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Event with given event details and date. It is initialised as not finished.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" * @param start Start date and time of the event with dd-MM-yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" * @param end End date and time of the event with dd-MM-yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the dates are empty or consist only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" public Event(String task, String start, String end) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" super(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" if (start.isEmpty() || start.equals(\" \")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Missing time!!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" } else if (end.isEmpty() || end.equals(\" \")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Missing time!!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\");","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" this.start \u003d LocalDateTime.parse(start, formatter1);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" this.start \u003d LocalDateTime.parse(start, formatter2);","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Please use this format for your start time: dd-MM-yyyy HH:mm\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" this.end \u003d LocalDateTime.parse(end, formatter1);","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" this.end \u003d LocalDateTime.parse(end, formatter2);","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Please use this format for your end time: dd-MM-yyyy HH:mm\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Event with given event details and date.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" * @param start Start date and time of the event with dd-MM-yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" * @param end End date and time of the event with dd-MM-yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" * @param isFinish The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the dates are empty or consist only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" public Event(String task, String start, String end, boolean isFinish) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" super(task, isFinish);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" if (start.isEmpty() || start.equals(\" \")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Missing time !!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" } else if (end.isEmpty() || end.equals(\" \")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Missing time!!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\");","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" this.start \u003d LocalDateTime.parse(start, formatter1);","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" this.start \u003d LocalDateTime.parse(start, formatter2);","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Please use this format for your start time: dd-MM-yyyy HH:mm\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" this.end \u003d LocalDateTime.parse(end, formatter1);","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"ChuanXinNg"},"content":" this.end \u003d LocalDateTime.parse(end, formatter2);","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"ChuanXinNg"},"content":" } catch (DateTimeParseException err2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"ChuanXinNg"},"content":" System.err.println(\"Please use this format for your end time: dd-MM-yyyy HH:mm\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ChuanXinNg"},"content":" * Returns the start date of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"ChuanXinNg"},"content":" * @return the start date of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"ChuanXinNg"},"content":" public LocalDateTime getDate() {","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"ChuanXinNg"},"content":" return this.start;","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"ChuanXinNg"},"content":" * Returns a string representation of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"ChuanXinNg"},"content":" * @return A string representation of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"ChuanXinNg"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"ChuanXinNg"},"content":" return \"[E]\" + super.toString()","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"ChuanXinNg"},"content":" + \" from: \" + this.start.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\"))","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"ChuanXinNg"},"content":" + \" to: \" + this.end.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy hh:mm a\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"ChuanXinNg":111}},{"path":"src/main/java/roo/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":" * Represents a task in the Duke application.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":" * Tasks can be marked as done or undone, and have a description and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" private boolean isFinish;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" private final String task;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Task object with the given description. The task is initialized as not finished.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the task description is empty or consists only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" public Task (String task) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" if (task.isEmpty() || task.equals(\" \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" throw new RooException(\"Description is EMPTY!!!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" this.isFinish \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Task object with the given description.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" * @param isFinish The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" public Task (String task, boolean isFinish) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" this.isFinish \u003d isFinish;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" * Checks if the task is marked as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" * @return true if the task is marked as done, false otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" public boolean done() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" return this.isFinish;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" public void markDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" this.isFinish \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" * Marks the task as undone.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" this.isFinish \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" * Abstract method to be implemented by subclasses. Returns the date associated with the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" * @return The date associated with the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" public abstract LocalDateTime getDate();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" * @return A string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" if (this.isFinish) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" return \"[x] \" + this.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" return \"[ ] \" + this.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":77}},{"path":"src/main/java/roo/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":" * Represents a todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Todo Task with specific details. It is initialised as not finished.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the task description is empty or consists only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" public Todo(String task) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" super(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" * Constructs a Todo Task with specific details.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" * @param task The description of the todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" * @param isFinish The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" * @throws RooException If the task description is empty or consists only of spaces.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" public Todo(String task, boolean isFinish) throws RooException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" super(task, isFinish);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" * Returns null","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" * @return null","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" public LocalDateTime getDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" * Returns a string representation of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" * @return A string representation of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":48}},{"path":"src/test/java/roo/ParseTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"public class ParseTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_list() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.LIST, Parse.parse(\"list\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_mark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.MARK, Parse.parse(\"mark 1\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_unmark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.UNMARK, Parse.parse(\"unmark 1\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_delete() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.DELETE, Parse.parse(\"delete 1\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_todo() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.TODO, Parse.parse(\"todo drink water\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_deadline() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.DEADLINE, Parse.parse(\"deadline cs2103t /by 28-08-2023 12:44\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_event() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.EVENT, Parse.parse(\"event st1131 /from 29-08-2023 12:34 /to 30-08-2023 12:00\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_check() {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.DATE, Parse.parse(\"check 29-08-2023\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_clear() {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.CLEAR, Parse.parse(\"clear\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_end() {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.END, Parse.parse(\"end\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.END, Parse.parse(\"bye\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" public void parse_unknown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.UNKNOWN, Parse.parse(\"abcdefg\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.UNKNOWN, Parse.parse(\"hello\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(Commands.UNKNOWN, Parse.parse(\"\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":67}},{"path":"src/test/java/roo/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_validInput1_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" Deadline deadline \u003d new Deadline(\"valid input 1\", \"30-08-2023 23:59\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"[D][ ] valid input 1 by: 30 Aug 2023 11:59 PM\", deadline.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_validInput2_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" Deadline deadline \u003d new Deadline(\"valid input 2\", \"30 Aug 2023 09:00 PM\");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"[D][ ] valid input 2 by: 30 Aug 2023 09:00 PM\", deadline.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_invalidInput_fail() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" Deadline deadline \u003d new Deadline(\"\", \"30/08/2023 2359\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"Description is EMPTY!!!\\n\", exception.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":" public void getDate_validDate1_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" Deadline deadline \u003d new Deadline(\"valid date 1\", \"30-08-2023 21:00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(LocalDateTime.parse(\"30-08-2023 21:00\", DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" deadline.getDate());","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" public void getDate_validDate2_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" Deadline deadline \u003d new Deadline(\"valid date 2\", \"30 Aug 2023 09:00 PM\");","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(LocalDateTime.parse(\"30-08-2023 21:00\", DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" deadline.getDate());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":65}},{"path":"src/test/java/roo/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"public class EventTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_validInput1_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"valid input 1\", \"30-08-2023 23:59\", \"31-08-2023 23:59\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"[E][ ] valid input 1 from: 30 Aug 2023 11:59 PM to: 31 Aug 2023 11:59 PM\",","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" event.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_validInput2_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"valid input 2\", \"30 Aug 2023 11:59 PM\", \"31 Aug 2023 11:59 PM\");","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"[E][ ] valid input 2 from: 30 Aug 2023 11:59 PM to: 31 Aug 2023 11:59 PM\",","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" event.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_invalidInput1_fail() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"\", \"30-08-2023 23:59\", \"31-08-2023 23:59\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"Description is EMPTY!!!\\n\", exception.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_noStartDate_fail() {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"no start date\", \"\", \"31-08-2023 23:59\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"Missing time!!!\\n\", exception.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_noEndDate_fail() {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"no end date\", \"30-08-2023 23:59\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"Missing time!!!\\n\", exception.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"ChuanXinNg"},"content":" public void getDate_validDate1_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"valid date 1\", \"30-08-2023 21:00\", \"31-08-2023 23:59\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(LocalDateTime.parse(\"30-08-2023 21:00\", DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"ChuanXinNg"},"content":" event.getDate());","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"ChuanXinNg"},"content":" public void getDate_validDate2_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"ChuanXinNg"},"content":" Event event \u003d new Event(\"valid date 2\", \"30 Aug 2023 09:00 PM\", \"31 Aug 2023 11:59 PM\");","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(LocalDateTime.parse(\"30-08-2023 21:00\", DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"ChuanXinNg"},"content":" event.getDate());","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":87}},{"path":"src/test/java/roo/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"package roo.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"import roo.RooException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_validInput1_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":" Todo todo \u003d new Todo(\"borrow book\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"[T][ ] borrow book\", todo.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ChuanXinNg"},"content":" public void constructor_invalidInput_fail() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ChuanXinNg"},"content":" Todo todo \u003d new Todo(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ChuanXinNg"},"content":" assertEquals(\"Description is EMPTY!!!\\n\", exception.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ChuanXinNg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ChuanXinNg"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ChuanXinNg"},"content":" public void getDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ChuanXinNg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ChuanXinNg"},"content":" Todo todo \u003d new Todo(\"borrow book\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ChuanXinNg"},"content":" assertNull(todo.getDate());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ChuanXinNg"},"content":" } catch (RooException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ChuanXinNg"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ChuanXinNg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ChuanXinNg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":42}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"clear","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"todo drink water","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"event book fair /from 29-08-2023 12:34 /to 30-08-2023 12:00","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"deadline study CS2013T /by 28-08-2023 12:44","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ChuanXinNg"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ChuanXinNg"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ChuanXinNg"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ChuanXinNg"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ChuanXinNg"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ChuanXinNg"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ChuanXinNg"},"content":"event 123456 /from 29-08-2023 13:56 /to 30-08-2023 00:00","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ChuanXinNg"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ChuanXinNg"},"content":"deadline return book /by 29-08-2023 12:44","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ChuanXinNg"},"content":"mark 5","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ChuanXinNg"},"content":"check 29-08-2023","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ChuanXinNg"},"content":"list","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ChuanXinNg"},"content":"end","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ChuanXinNg":18}},{"path":"text-ui-test/roo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChuanXinNg"},"content":"[T][x] drink water","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ChuanXinNg"},"content":"[E][ ] book fair from: 29 Aug 2023 12:34 PM to: 30 Aug 2023 12:00 PM","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ChuanXinNg"},"content":"[D][ ] study CS2013T by: 28 Aug 2023 12:44 PM","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ChuanXinNg"},"content":"[E][ ] 123456 from: 29 Aug 2023 01:56 PM to: 30 Aug 2023 12:00 AM","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ChuanXinNg"},"content":"[D][x] return book by: 29 Aug 2023 12:44 PM","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ChuanXinNg":5}},{"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":"ChuanXinNg"},"content":"javac -cp \"..\\src\\main\\java\" -Xlint:none -d ..\\bin ..\\src\\main\\java\\roo\\task\\*.java","lastModifiedDate":"2023-08-31"},{"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":"ChuanXinNg"},"content":"java -classpath \"..\\bin\" roo.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"ChuanXinNg":2,"-":19}}] diff --git a/ChuanXinNg_ip_master/commits.json b/ChuanXinNg_ip_master/commits.json index beebbd82..bf16358e 100644 --- a/ChuanXinNg_ip_master/commits.json +++ b/ChuanXinNg_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ChuanXinNg":[{"date":"2023-08-22","commitResults":[{"hash":"a3c38ff643778833be7ae376722bb2c6ba379df1","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":5}}},{"hash":"b4458ab8cf67e8f5b16062c58dd3d87bac07a37f","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":7}}},{"hash":"c52bfa92c03e67edcec9e046a7357ce2d82ea74e","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":11}}},{"hash":"de75c9b9db02d97b9c5bb69408fa905024bfebcd","isMergeCommit":false,"messageTitle":"Mark not done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":8}}},{"hash":"a53d7d24a212815193044f2f10e947daf85290e0","isMergeCommit":false,"messageTitle":"Mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":11}}},{"hash":"8593792468a241bbbdf1a677611abf624919eb03","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":9}}},{"hash":"8321ad60e544cb0543a80f988db11bfbecf4a756","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":34}}},{"hash":"fa39ccd8cd91fbb9a03bbb8ff077c4df2e2568a9","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":16}}},{"hash":"e6f0cbeb71dbdda2f27c398ab738ec4d7aff0a5e","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"bb5c367447db16f76eb326e6ae6a12d3f711275c","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"1ec27984e367bee3238a427b73ca19452274dd20","isMergeCommit":false,"messageTitle":"Use Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":92}}}]},{"date":"2023-08-28","commitResults":[{"hash":"1f42cc81f9cf968e9557c5af2dd3120e4e4f259c","isMergeCommit":false,"messageTitle":"load data when roo starts up","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":126,"deletions":34}}},{"hash":"8ebf306f66b118b50ec1c8df6e25c4fe23db3666","isMergeCommit":false,"messageTitle":"save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":21,"deletions":1}}},{"hash":"20e5abfa6537410816ea29191dae78c9734e705a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"7d174cff43b2e988556d13c962ac8676dcf30eb7","isMergeCommit":false,"messageTitle":"Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":152,"deletions":23}}},{"hash":"d304c8cebbcdca85da5964b3f1db56c9fb5031d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"52d3dffaf38b9adb2a75dc02f00d2e0943047519","isMergeCommit":false,"messageTitle":"improve dates and times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":30,"deletions":10}}}]},{"date":"2023-08-30","commitResults":[{"hash":"8649a555c3b2df2f3ac8434c62f0654663cc5fe6","isMergeCommit":false,"messageTitle":"Use more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":6},"java":{"insertions":342,"deletions":293}}},{"hash":"e8b9aa158f06b5dcedc1b7013e5435544eabb83d","isMergeCommit":false,"messageTitle":"Organize into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":8},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"f47e7d280cc9a40483a0dbe8649af5e69bab9cc8","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a7ed4a216241bf40523a03f8352ca595b123f20c","isMergeCommit":false,"messageTitle":"Use Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":0}}},{"hash":"84a2734bab267d2c9b5d2cca62e4e14d6d2cff37","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":243,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"b5d3cbb05c9f5dc3cdf953a004b091f899ea2f53","isMergeCommit":false,"messageTitle":"Done JavaDoc, Follow the Coding Standard, Find","messageBody":"","tags":["Level-9","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":8},"java":{"insertions":604,"deletions":300},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"ChuanXinNg":{"java":1200,"md":2,"fxml":0,"sh":0,"bat":2,"gradle":1,"txt":29}},"authorContributionVariance":{"ChuanXinNg":108019.234},"authorDisplayNameMap":{"ChuanXinNg":"CS2103T-W13-2 NG C.. XIN"}} +{"authorDailyContributionsMap":{"ChuanXinNg":[{"date":"2023-08-22","commitResults":[{"hash":"a3c38ff643778833be7ae376722bb2c6ba379df1","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":5}}},{"hash":"b4458ab8cf67e8f5b16062c58dd3d87bac07a37f","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":7}}},{"hash":"c52bfa92c03e67edcec9e046a7357ce2d82ea74e","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":11}}},{"hash":"de75c9b9db02d97b9c5bb69408fa905024bfebcd","isMergeCommit":false,"messageTitle":"Mark not done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":8}}},{"hash":"a53d7d24a212815193044f2f10e947daf85290e0","isMergeCommit":false,"messageTitle":"Mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":11}}},{"hash":"8593792468a241bbbdf1a677611abf624919eb03","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":9}}},{"hash":"8321ad60e544cb0543a80f988db11bfbecf4a756","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":34}}},{"hash":"fa39ccd8cd91fbb9a03bbb8ff077c4df2e2568a9","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":16}}},{"hash":"e6f0cbeb71dbdda2f27c398ab738ec4d7aff0a5e","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"bb5c367447db16f76eb326e6ae6a12d3f711275c","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"1ec27984e367bee3238a427b73ca19452274dd20","isMergeCommit":false,"messageTitle":"Use Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":92}}}]},{"date":"2023-08-28","commitResults":[{"hash":"1f42cc81f9cf968e9557c5af2dd3120e4e4f259c","isMergeCommit":false,"messageTitle":"load data when roo starts up","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":126,"deletions":34}}},{"hash":"8ebf306f66b118b50ec1c8df6e25c4fe23db3666","isMergeCommit":false,"messageTitle":"save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":21,"deletions":1}}},{"hash":"20e5abfa6537410816ea29191dae78c9734e705a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"7d174cff43b2e988556d13c962ac8676dcf30eb7","isMergeCommit":false,"messageTitle":"Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":152,"deletions":23}}},{"hash":"d304c8cebbcdca85da5964b3f1db56c9fb5031d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"52d3dffaf38b9adb2a75dc02f00d2e0943047519","isMergeCommit":false,"messageTitle":"improve dates and times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":30,"deletions":10}}}]},{"date":"2023-08-30","commitResults":[{"hash":"8649a555c3b2df2f3ac8434c62f0654663cc5fe6","isMergeCommit":false,"messageTitle":"Use more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":6},"java":{"insertions":342,"deletions":293}}},{"hash":"e8b9aa158f06b5dcedc1b7013e5435544eabb83d","isMergeCommit":false,"messageTitle":"Organize into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":8},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"f47e7d280cc9a40483a0dbe8649af5e69bab9cc8","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a7ed4a216241bf40523a03f8352ca595b123f20c","isMergeCommit":false,"messageTitle":"Use Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":0}}},{"hash":"84a2734bab267d2c9b5d2cca62e4e14d6d2cff37","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":243,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"b5d3cbb05c9f5dc3cdf953a004b091f899ea2f53","isMergeCommit":false,"messageTitle":"Done JavaDoc, Follow the Coding Standard, Find","messageBody":"","tags":["Level-9","A-JavaDoc"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":8},"java":{"insertions":604,"deletions":300},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"9aacb3f041e18cb1475006be2e46befd0c40dc4f","isMergeCommit":false,"messageTitle":"Coding Standard","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":4},"java":{"insertions":6,"deletions":3}}},{"hash":"30eb468395e4ecdd266e600b176aff9944e37b26","isMergeCommit":false,"messageTitle":"Coding Standard Switch Cases","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":97}}}]}]},"authorFileTypeContributionMap":{"ChuanXinNg":{"java":1203,"md":2,"fxml":0,"sh":0,"bat":2,"gradle":1,"txt":25}},"authorContributionVariance":{"ChuanXinNg":100819.92},"authorDisplayNameMap":{"ChuanXinNg":"CS2103T-W13-2 NG C.. XIN"}} diff --git a/Cleon2_ip_master/authorship.json b/Cleon2_ip_master/authorship.json index 20a28088..b8db158e 100644 --- a/Cleon2_ip_master/authorship.json +++ b/Cleon2_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Cleon2":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Cleon2":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"T | 0 | chicken rice | ","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"D | 0 | nasi lemak | 2023-09-22T09:00","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"E | 0 | rotisserie chicken | 2021-03-22T09:00--2023-04-23T12:00","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Cleon2":3}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" * Represents the main application class for Duke.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" private DukeList ItemList;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" private Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" private Ui ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" * Constructs a Duke instance with the given file path.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" * @param filePath The path to the data file.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" this.ItemList \u003d new DukeList(this.storage.load());","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" this.ItemList \u003d new DukeList();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" * The main method that initializes and runs the Duke application.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" * @param args Command line arguments.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" * Runs the Duke application.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" public void run() {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" // Initializing Scanner","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" c.execute(ItemList, ui, storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" } finally {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" ui.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Cleon2":66,"-":3}},{"path":"src/main/java/duke/commands/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" * Represents a command to add a task to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" private String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" private LocalDateTime till;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" private String type;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" * Constructs a command to add a ToDo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the ToDo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" public AddCommand(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" this.type \u003d \"todo\";","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" * Constructs a command to add a Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" public AddCommand(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" this.type \u003d \"deadline\";","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" this.till \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" * Constructs a command to add an Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" * @param from The starting time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" * @param to The ending time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" public AddCommand(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" this.type \u003d \"event\";","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" this.till \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" * Executes the command to add a task to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" switch (this.type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Cleon2"},"content":" task \u003d new ToDo(this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":" task \u003d new Deadline(this.description, this.till);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Cleon2"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Cleon2"},"content":" task \u003d new Event(this.description, this.from, this.till);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Cleon2"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Cleon2"},"content":" ui.acknowledgeAdd(tasks.getSize(), task);","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Cleon2"},"content":" storage.updateStorage(tasks.getArrayList());","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Cleon2"},"content":" * @return False, as this command is not an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Cleon2"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":89}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Represents an abstract command that can be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" * Executes the command.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" * @throws DukeException If there is an error executing the command.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" public abstract void execute(DukeList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * @return True if the command is an exit command, otherwise false.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":29}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Represents a command to delete a task from the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" * Constructs a command to delete a task at the specified index.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" * Executes the command to delete a task from the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" * @throws DukeException If the specified index is out of bounds.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" if (tasks.getSize() \u003c index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" throw new DukeException(\"The task you are trying to delete is out of bounds!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" ui.acknowledgeDelete(index, tasks.getTask(index - 1));","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" tasks.deleteTask(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" storage.updateStorage(tasks.getArrayList());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" * @return False, as this command is not an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Cleon2":51}},{"path":"src/main/java/duke/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":" * Represents a command to exit the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" * Executes the command to exit the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" ui.exit();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * @return True, as this command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":33}},{"path":"src/main/java/duke/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"public class FindCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" private String keyword;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" ArrayList\u003cTask\u003e filteredTasks \u003d tasks.filterByKeyword(this.keyword);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" ui.acknowledgeFind(filteredTasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" storage.updateStorage(tasks.getArrayList());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Cleon2":28}},{"path":"src/main/java/duke/commands/IncorrectCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Represents a command to handle incorrect or invalid user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"public class IncorrectCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" private String ErrMessage;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" * Constructs a command to handle incorrect input.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param ErrMessage The error message to be thrown.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" public IncorrectCommand(String ErrMessage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" this.ErrMessage \u003d ErrMessage;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" * Executes the command to handle incorrect input by throwing a DukeException.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" * @throws DukeException Always thrown with the error message provided during construction.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" throw new DukeException(this.ErrMessage);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" * @return False, as this command is not an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":45}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":" * Represents a command to list all tasks in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" * Executes the command to list all tasks in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" ui.showList(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" ui.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" * @return False, as this command is not an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":34}},{"path":"src/main/java/duke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Represents a command to mark or unmark a task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * Constructs a command to mark or unmark a task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" * @param index The index of the task to be marked or unmarked.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" * @param type The type of action: \"mark\" or \"unmark\".","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" public MarkCommand(int index, String type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" this.isDone \u003d type.equals(\"mark\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * Executes the command to mark or unmark a task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" * @throws DukeException If the specified index is out of bounds or the task is already marked/unmarked.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" if (tasks.getSize() \u003c index || tasks.getTask(index - 1).isDone() \u003d\u003d isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" throw new DukeException(\"The task you are trying to mark is either out of bound, \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" \"or has already been marked/unmarked\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" tasks.setTaskAsDone(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" ui.acknowledgeMark(index, tasks.getTask(index - 1));","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" tasks.setTaskAsUndone(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" ui.acknowledgeUnmark(index, tasks.getTask(index - 1));","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" storage.updateStorage(tasks.getArrayList());","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" * @return False, as this command is not an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":61}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":" * Represents a custom exception specific to the Duke application.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Constructs a DukeException with the specified error message.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" * @param message The error message to be associated with the exception.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" * Overrides the getMessage() method to prepend \"OOPS! \" to the error message.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" * @return The formatted error message.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" return \"OOPS! \" + super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Cleon2":26}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.commands.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" * Represents a parser to convert user input into executable commands.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" * Parses the user input and converts it into an executable command.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" * @return A Command object based on the parsed input.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" public static Command parse(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" String[] split \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" Command c \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" switch (split[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" case \"bye\":","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" c \u003d validateExit(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" case \"list\":","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" c \u003d validateList(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" c \u003d validateMark(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" c \u003d validateTodo(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" c \u003d validateDeadline(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" c \u003d validateEvent(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" case \"delete\":","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" c \u003d validateDelete(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" case \"find\":","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" c \u003d validateFind(split);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" c \u003d new IncorrectCommand(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" return c;","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs a Todo command.","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":" * @return A TodoCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" public static Command validateTodo(String[] split) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" if (split.length \u003d\u003d 1 || split[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid task.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Cleon2"},"content":" return new AddCommand(split[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs a Deadline command.","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Cleon2"},"content":" * @return A DeadlineCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Cleon2"},"content":" public static Command validateDeadline(String[] split) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Cleon2"},"content":" if (split.length \u003d\u003d 1 || split[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid task.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Cleon2"},"content":" if (!split[1].contains(\" /by \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please indicate a deadline using /by\");","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Cleon2"},"content":" String[] task \u003d split[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Cleon2"},"content":" if (task.length \u003c\u003d 1 || task[1].isBlank() || task[0].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid task and/or deadline.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Cleon2"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Cleon2"},"content":" return new AddCommand(task[0], LocalDateTime.parse(task[1], formatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Cleon2"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter the date \u0026 time in DD/MM/YY HHMM format\");","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs an Event command.","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Cleon2"},"content":" * @return An EventCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Cleon2"},"content":" public static Command validateEvent(String[] split) {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Cleon2"},"content":" if (!split[1].contains(\" /from \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please indicate a start datetime using /from.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Cleon2"},"content":" String[] task \u003d split[1].split(\" /from \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"Cleon2"},"content":" if (task.length \u003c\u003d 1 || task[1].isBlank() || task[0].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid task.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"Cleon2"},"content":" if (!task[1].contains(\" /to \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please indicate an end datetime using /to.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"Cleon2"},"content":" String[] to \u003d task[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"Cleon2"},"content":" if (to.length \u003c\u003d 1 || to[1].isBlank() || to[0].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter valid to \u0026 from dates\");","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"Cleon2"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"Cleon2"},"content":" LocalDateTime from \u003d LocalDateTime.parse(to[0], formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"Cleon2"},"content":" LocalDateTime till \u003d LocalDateTime.parse(to[1], formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"Cleon2"},"content":" if (from.isAfter(till) || from.isEqual(till)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please ensure that the start date is not equal to\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"Cleon2"},"content":" \" or later than the end date\");","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"Cleon2"},"content":" return new AddCommand(task[0], from, till);","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"Cleon2"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter the date \u0026 time in DD/MM/YY HHMM format\");","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs an Exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"Cleon2"},"content":" * @return An ExitCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"Cleon2"},"content":" private static Command validateFind(String[] split) {","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"Cleon2"},"content":" if (split.length \u003d\u003d 1 || split[1].isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid find command.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"Cleon2"},"content":" return new FindCommand(split[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"Cleon2"},"content":" private static Command validateExit(String[] split) {","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"Cleon2"},"content":" if (split.length !\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"The bye command should not have \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"Cleon2"},"content":" \"any additional words appended to it\");","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"Cleon2"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs a List command.","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"Cleon2"},"content":" * @return A ListCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"Cleon2"},"content":" public static Command validateList(String[] split) {","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"Cleon2"},"content":" if (split.length !\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"The list command should not have any \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"Cleon2"},"content":" \"additional words appended to it\");","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"Cleon2"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs a Mark command.","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"Cleon2"},"content":" * @return A MarkCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"Cleon2"},"content":" public static Command validateMark(String[] split) {","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"Cleon2"},"content":" if (split.length !\u003d 2 || split[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid mark command!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"Cleon2"},"content":" if (!Character.isDigit(split[1].charAt(0))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"The second argument must be a digit!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"Cleon2"},"content":" int index \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"Cleon2"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a number greater than 0!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"Cleon2"},"content":" return new MarkCommand(index, split[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs a Delete command.","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"Cleon2"},"content":" * @return A DeleteCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"Cleon2"},"content":" public static Command validateDelete(String[] split) {","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"Cleon2"},"content":" if (split.length !\u003d 2 || split[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":200,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid delete command!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"Cleon2"},"content":" if (!Character.isDigit(split[1].charAt(0))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":203,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"The second argument must be a digit!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":204,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"Cleon2"},"content":" int index \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"Cleon2"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a number greater than 0!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"Cleon2"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":211}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" * Represents the storage manager for saving and loading tasks to/from a file.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":"public class Storage {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" private File file;","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" * Constructs a Storage instance and initializes the file based on the given path.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * @param path The path to the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" public Storage(String path) {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" String[] splitted \u003d path.split(\"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" File directory \u003d new File(splitted[0]);","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" File savedData \u003d new File(path);","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" if (!savedData.exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" savedData.createNewFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" this.file \u003d savedData;","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" } catch (IOException err) {","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" System.out.println(err);","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" * Loads tasks from the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" * @return An ArrayList of Task objects loaded from the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" * @throws DukeException If an error occurs during reading or parsing the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" Scanner sc \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" ArrayList\u003cTask\u003e savedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" String current \u003d sc.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":" String[] splitted \u003d current.split(\" \\\\| \", 4);","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" switch (splitted[0]) {","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" case \"T\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" Task toDo \u003d new ToDo(splitted[2], splitted[1].equals(\"1\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" savedTasks.add(toDo);","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":" case \"D\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":" Task deadline \u003d new Deadline(splitted[2], formatInputDate(splitted[3]), splitted[1].equals(\"1\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":" savedTasks.add(deadline);","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"Cleon2"},"content":" case \"E\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"Cleon2"},"content":" String[] timeline \u003d splitted[3].split(\"--\");","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"Cleon2"},"content":" LocalDateTime from \u003d formatInputDate(timeline[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"Cleon2"},"content":" LocalDateTime to \u003d formatInputDate(timeline[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"Cleon2"},"content":" Task event \u003d new Event(splitted[2], from, to, splitted[1].equals(\"1\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"Cleon2"},"content":" savedTasks.add(event);","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"Cleon2"},"content":" default: {","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"Cleon2"},"content":" throw new DukeException(\"Error reading data from storage.\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"Cleon2"},"content":" + \"Creating a task list from scratch.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"Cleon2"},"content":" return savedTasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"Cleon2"},"content":" } catch (FileNotFoundException err) {","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"Cleon2"},"content":" System.out.println(err);","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"Cleon2"},"content":" return null;","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Cleon2"},"content":" * Updates the storage file with the given list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks to be saved.","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Cleon2"},"content":" public void updateStorage(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"Cleon2"},"content":" FileWriter writer \u003d new FileWriter(this.file);","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"Cleon2"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"Cleon2"},"content":" writer.write(task.toFile() + System.lineSeparator());","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"Cleon2"},"content":" writer.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"Cleon2"},"content":" } catch (IOException err) {","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"Cleon2"},"content":" System.out.println(err);","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Cleon2"},"content":" * Formats an input date string into a LocalDateTime object.","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Cleon2"},"content":" * @param date The input date string.","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Cleon2"},"content":" * @return A LocalDateTime object representing the formatted date.","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Cleon2"},"content":" public LocalDateTime formatInputDate(String date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"Cleon2"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ISO_LOCAL_DATE_TIME;","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"Cleon2"},"content":" LocalDateTime localDateTime \u003d LocalDateTime.parse(date, formatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"Cleon2"},"content":" return localDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":121,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Cleon2":121}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":" * Represents a task with a specific deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" * Constructs a Deadline task with the given description and deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" * Constructs a Deadline task with the given description, deadline, and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" public Deadline(String description, LocalDateTime by, boolean isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" * Converts the Deadline task to its string representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" * @return The string representation of the Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" return \"[D]\" + super.toString() + \" (by: \" + super.localDateTimeToString(by) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" * Converts the Deadline task to its file format representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" * @return The file format representation of the Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" public String toFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" return \"D\" + super.toFile() + this.by;","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Cleon2":52}},{"path":"src/main/java/duke/tasks/DukeList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import java.lang.reflect.Array;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Represents a tasklist","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"public class DukeList {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" private ArrayList\u003cTask\u003e dukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" public DukeList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" dukeList \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" public DukeList(ArrayList\u003cTask\u003e ItemList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" dukeList \u003d ItemList;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" * This method simply prints out an acknowledgemnt that a task has been added","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * @param newTask takes in a new task","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" public void add(Task newTask) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" this.dukeList.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" * This method deletes a task from the tasklist","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" * @param taskNum index of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" public void deleteTask(int taskNum) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" dukeList.remove(taskNum - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" public ArrayList\u003cTask\u003e filterByKeyword(String keyword) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" ArrayList\u003cTask\u003e filteredTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" for (Task task : dukeList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" String description \u003d task.getDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" if (description.contains(keyword)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" filteredTasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" return filteredTasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" * Sets task as done","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" * @param taskNum index of task","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" public void setTaskAsDone(int taskNum) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" Task chosenTask \u003d dukeList.get(taskNum - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" chosenTask.setAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" * Sets task as undone","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" * @param taskNum index of task","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" public void setTaskAsUndone(int taskNum) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Cleon2"},"content":" Task chosenTask \u003d dukeList.get(taskNum - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":" chosenTask.setAsUndone();","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Cleon2"},"content":" * returns size of list","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Cleon2"},"content":" * @return size of list","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Cleon2"},"content":" public int getSize() {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Cleon2"},"content":" return dukeList.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Cleon2"},"content":" public ArrayList\u003cTask\u003e getArrayList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Cleon2"},"content":" return this.dukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Cleon2"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Cleon2"},"content":" return dukeList.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":85}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":" * Represents a task that starts and ends at specific date and time.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" * Constructs an Event task with the given description, start time, and end time.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param from The start time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" * @param to The end time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * Constructs an Event task with the given description, start time, end time, and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" * @param from The start time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" * @param to The end time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" * Converts the Event task to its string representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" * @return The string representation of the Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" return \"[E]\" + super.toString() + \" (from: \" + super.localDateTimeToString(from) + \" to: \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" super.localDateTimeToString(to) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" * Converts the Event task to its file format representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" * @return The file format representation of the Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" public String toFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" return \"E\" + super.toFile() + this.from + \"--\" + this.to;","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Cleon2":59}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":" * Represents a single task with a description and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" private String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" * Constructs a Task instance with the given description and sets completion status to false.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" * Constructs a Task instance with the given description and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" * Returns the status icon of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" * @return The status icon (\"X\" if done, \" \" if not done).","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" * Converts the task to its string representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" * @return The string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" * Converts the task to its file format representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" * @return The file format representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" public String toFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" return \" | \" + (this.isDone ? 1 : 0) + \" | \" + this.description + \" | \";","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" public void setAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":" * Marks the task as undone.","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Cleon2"},"content":" public void setAsUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"Cleon2"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Cleon2"},"content":" * Converts a LocalDateTime object to a formatted string representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Cleon2"},"content":" * @param dateTime The LocalDateTime object to be converted.","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Cleon2"},"content":" * @return The formatted string representation of the date and time.","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Cleon2"},"content":" public String localDateTimeToString(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"Cleon2"},"content":" String dayOfMonth \u003d dateTime.getDayOfMonth() + getDayOfMonthSuffix(dateTime.getDayOfMonth());","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"Cleon2"},"content":" String month \u003d dateTime.getMonth().toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"Cleon2"},"content":" month \u003d month.substring(0, 1).toUpperCase() + month.substring(1).toLowerCase();","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Cleon2"},"content":" String year \u003d String.valueOf(dateTime.getYear());","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"Cleon2"},"content":" String hour \u003d dateTime.format(DateTimeFormatter.ofPattern(\"h\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"Cleon2"},"content":" String minute \u003d dateTime.format(DateTimeFormatter.ofPattern(\"mm\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"Cleon2"},"content":" String amPm \u003d dateTime.format(DateTimeFormatter.ofPattern(\"a\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"Cleon2"},"content":" return String.format(\"%s of %s %s, %s:%s%s\", dayOfMonth, month, year, hour, minute, amPm);","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Cleon2"},"content":" * Returns the suffix for the day of the month.","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Cleon2"},"content":" * @param n The day of the month.","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Cleon2"},"content":" * @return The suffix (\"st\", \"nd\", \"rd\", or \"th\").","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Cleon2"},"content":" public String getDayOfMonthSuffix(final int n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"Cleon2"},"content":" if (n \u003e\u003d 11 \u0026\u0026 n \u003c\u003d 13) {","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"Cleon2"},"content":" return \"th\";","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"Cleon2"},"content":" switch (n % 10) {","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"Cleon2"},"content":" case 1:","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"Cleon2"},"content":" return \"st\";","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"Cleon2"},"content":" case 2:","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"Cleon2"},"content":" return \"nd\";","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"Cleon2"},"content":" case 3:","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"Cleon2"},"content":" return \"rd\";","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"Cleon2"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"Cleon2"},"content":" return \"th\";","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Cleon2"},"content":" * Checks if the task is marked as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"Cleon2"},"content":" * @return True if the task is done, false otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"Cleon2"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"Cleon2"},"content":" return isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"Cleon2"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"Cleon2"},"content":" return description;","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Cleon2":127}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":" * Represents a to-do task.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Constructs a ToDo instance with the given description and sets completion status to false.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the to-do task.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" * Constructs a ToDo instance with the given description and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the to-do task.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" * @param isDone The completion status of the to-do task.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" * Converts the to-do task to its string representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" * @return The string representation of the to-do task.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" * Converts the to-do task to its file format representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" * @return The file format representation of the to-do task.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" public String toFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" return \"T\" + super.toFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Cleon2":45}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" private Scanner input;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" this.input \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" return this.input.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" public void showLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"_______________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" * This method prints out the initial greeting","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" //Introduction","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" \" Hello! I\u0027m Cleon\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" \" What can I do for you?\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" public void showList(DukeList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" int len \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" for (int i \u003d 0; i \u003c len; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" int num \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" Task currTask \u003d tasks.getTask(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" System.out.println(num + \". \" + currTask.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Issues loading past data. Creating a new tasklist from scratch\");","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" public void showError(String errMessage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" System.out.println(errMessage);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" public void acknowledgeAdd(int size, Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Added the following task to the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" System.out.println(size + \". \" + task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"You currently have \" + size + \" tasks in your list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" public void acknowledgeDelete(int index, Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" System.out.println(index + \". \" + task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":" public void acknowledgeFind(ArrayList\u003cTask\u003e filteredTasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Cleon2"},"content":" if (filteredTasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"No tasks with the given keyword can be found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Cleon2"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Cleon2"},"content":" int len \u003d filteredTasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Cleon2"},"content":" for (int i \u003d 0; i \u003c len; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Cleon2"},"content":" int num \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Cleon2"},"content":" Task currTask \u003d filteredTasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Cleon2"},"content":" System.out.println(num + \". \" + currTask.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Cleon2"},"content":" public void acknowledgeMark(int index, Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Cleon2"},"content":" public void acknowledgeUnmark(int index, Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Cleon2"},"content":" public void exit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":103}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.commands.IncorrectCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.commands.ListCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" void list_wrongInput_incorrectCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" Command com \u003d Parser.parse(\"list \");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" assertTrue(com instanceof IncorrectCommand);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" void list_correctInput_listCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" Command com \u003d Parser.parse(\"list\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" assertTrue(com instanceof ListCommand);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":27}},{"path":"src/test/java/duke/storage/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" void file_absentFile_createsNewFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" String path \u003d \"data/test.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" File file \u003d new File(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" assertFalse(file.exists());","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" Storage storage \u003d new Storage(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" assertTrue(file.exists());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" void file_absentFolder_createNewFolder() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" String path \u003d \"testdata/test.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" File folder \u003d new File(\"testdata\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" assertFalse(folder.isDirectory());","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" Storage storage \u003d new Storage(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" assertTrue(folder.exists());","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":30}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Cleon2":2}},{"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":"Cleon2"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-29"},{"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":{"Cleon2":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Cleon2":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Cleon2":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"T | 0 | chicken rice | ","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"D | 0 | nasi lemak | 2023-09-22T09:00","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"E | 0 | rotisserie chicken | 2021-03-22T09:00--2023-04-23T12:00","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Cleon2":3}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" * Represents the main application class for Duke.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" private DukeList ItemList;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" private Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" private Ui ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" * Constructs a Duke instance with the given file path.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" * @param filePath The path to the data file.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" this.ItemList \u003d new DukeList(this.storage.load());","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" this.ItemList \u003d new DukeList();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" * The main method that initializes and runs the Duke application.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" * @param args Command line arguments.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" * Runs the Duke application.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" public void run() {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" // Initializing Scanner","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" c.execute(ItemList, ui, storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" } finally {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" ui.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Cleon2":66,"-":3}},{"path":"src/main/java/duke/commands/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" * Represents a command to add a task to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" private String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" private LocalDateTime till;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" private String type;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" * Constructs a command to add a ToDo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the ToDo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" public AddCommand(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" this.type \u003d \"todo\";","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" * Constructs a command to add a Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" public AddCommand(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" this.type \u003d \"deadline\";","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" this.till \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" * Constructs a command to add an Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" * @param from The starting time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" * @param to The ending time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" public AddCommand(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" this.type \u003d \"event\";","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" this.till \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" * Executes the command to add a task to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" switch (this.type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Cleon2"},"content":" task \u003d new ToDo(this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":" task \u003d new Deadline(this.description, this.till);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Cleon2"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Cleon2"},"content":" task \u003d new Event(this.description, this.from, this.till);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Cleon2"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Cleon2"},"content":" ui.acknowledgeAdd(tasks.getSize(), task);","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Cleon2"},"content":" storage.updateStorage(tasks.getArrayList());","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Cleon2"},"content":" * @return False, as this command is not an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Cleon2"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":89}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Represents an abstract command that can be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" * Executes the command.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" * @throws DukeException If there is an error executing the command.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" public abstract void execute(DukeList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * @return True if the command is an exit command, otherwise false.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":29}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Represents a command to delete a task from the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" * Constructs a command to delete a task at the specified index.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" * Executes the command to delete a task from the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" * @throws DukeException If the specified index is out of bounds.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" if (tasks.getSize() \u003c index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" throw new DukeException(\"The task you are trying to delete is out of bounds!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" ui.acknowledgeDelete(index, tasks.getTask(index - 1));","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" tasks.deleteTask(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" storage.updateStorage(tasks.getArrayList());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" * @return False, as this command is not an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Cleon2":51}},{"path":"src/main/java/duke/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":" * Represents a command to exit the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" * Executes the command to exit the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" ui.exit();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * @return True, as this command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":33}},{"path":"src/main/java/duke/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"public class FindCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" private String keyword;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" ArrayList\u003cTask\u003e filteredTasks \u003d tasks.filterByKeyword(this.keyword);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" ui.acknowledgeFind(filteredTasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" storage.updateStorage(tasks.getArrayList());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Cleon2":28}},{"path":"src/main/java/duke/commands/IncorrectCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Represents a command to handle incorrect or invalid user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"public class IncorrectCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" private String ErrMessage;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" * Constructs a command to handle incorrect input.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param ErrMessage The error message to be thrown.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" public IncorrectCommand(String ErrMessage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" this.ErrMessage \u003d ErrMessage;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" * Executes the command to handle incorrect input by throwing a DukeException.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" * @throws DukeException Always thrown with the error message provided during construction.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" throw new DukeException(this.ErrMessage);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" * @return False, as this command is not an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":45}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":" * Represents a command to list all tasks in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" * Executes the command to list all tasks in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" ui.showList(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" ui.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" * @return False, as this command is not an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":34}},{"path":"src/main/java/duke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Represents a command to mark or unmark a task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * Constructs a command to mark or unmark a task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" * @param index The index of the task to be marked or unmarked.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" * @param type The type of action: \"mark\" or \"unmark\".","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" public MarkCommand(int index, String type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" this.isDone \u003d type.equals(\"mark\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * Executes the command to mark or unmark a task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" * @param ui The user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" * @param storage The storage manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" * @throws DukeException If the specified index is out of bounds or the task is already marked/unmarked.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" public void execute(DukeList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" if (tasks.getSize() \u003c index || tasks.getTask(index - 1).isDone() \u003d\u003d isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" throw new DukeException(\"The task you are trying to mark is either out of bound, \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" \"or has already been marked/unmarked\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" tasks.setTaskAsDone(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" ui.acknowledgeMark(index, tasks.getTask(index - 1));","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" tasks.setTaskAsUndone(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" ui.acknowledgeUnmark(index, tasks.getTask(index - 1));","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" storage.updateStorage(tasks.getArrayList());","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" * @return False, as this command is not an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":61}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":" * Represents a custom exception specific to the Duke application.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Constructs a DukeException with the specified error message.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" * @param message The error message to be associated with the exception.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" * Overrides the getMessage() method to prepend \"OOPS! \" to the error message.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" * @return The formatted error message.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" return \"OOPS! \" + super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Cleon2":26}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.commands.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" * Represents a parser to convert user input into executable commands.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"//Solution below inspired by Shishir Bychapur","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * Parses the user input and converts it into an executable command.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" * @return A Command object based on the parsed input.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" public static Command parse(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" String[] split \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" Command c \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" switch (split[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" case \"bye\":","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" c \u003d validateExit(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" case \"list\":","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" c \u003d validateList(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" c \u003d validateMark(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" c \u003d validateTodo(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" c \u003d validateDeadline(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" c \u003d validateEvent(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" case \"delete\":","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" c \u003d validateDelete(split);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" case \"find\":","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" c \u003d validateFind(split);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" c \u003d new IncorrectCommand(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" return c;","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs a Todo command.","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" * @return A TodoCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" public static Command validateTodo(String[] split) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" if (split.length \u003d\u003d 1 || split[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid task.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":" return new AddCommand(split[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs a Deadline command.","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Cleon2"},"content":" * @return A DeadlineCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Cleon2"},"content":" public static Command validateDeadline(String[] split) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Cleon2"},"content":" if (split.length \u003d\u003d 1 || split[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid task.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Cleon2"},"content":" if (!split[1].contains(\" /by \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please indicate a deadline using /by\");","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Cleon2"},"content":" String[] task \u003d split[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Cleon2"},"content":" if (task.length \u003c\u003d 1 || task[1].isBlank() || task[0].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid task and/or deadline.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Cleon2"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Cleon2"},"content":" return new AddCommand(task[0], LocalDateTime.parse(task[1], formatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Cleon2"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter the date \u0026 time in DD/MM/YY HHMM format\");","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs an Event command.","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Cleon2"},"content":" * @return An EventCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Cleon2"},"content":" public static Command validateEvent(String[] split) {","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"Cleon2"},"content":" if (!split[1].contains(\" /from \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please indicate a start datetime using /from.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Cleon2"},"content":" String[] task \u003d split[1].split(\" /from \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"Cleon2"},"content":" if (task.length \u003c\u003d 1 || task[1].isBlank() || task[0].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid task.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"Cleon2"},"content":" if (!task[1].contains(\" /to \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please indicate an end datetime using /to.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"Cleon2"},"content":" String[] to \u003d task[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"Cleon2"},"content":" if (to.length \u003c\u003d 1 || to[1].isBlank() || to[0].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter valid to \u0026 from dates\");","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"Cleon2"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"Cleon2"},"content":" LocalDateTime from \u003d LocalDateTime.parse(to[0], formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"Cleon2"},"content":" LocalDateTime till \u003d LocalDateTime.parse(to[1], formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"Cleon2"},"content":" if (from.isAfter(till) || from.isEqual(till)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please ensure that the start date is not equal to\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"Cleon2"},"content":" \" or later than the end date\");","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"Cleon2"},"content":" return new AddCommand(task[0], from, till);","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"Cleon2"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter the date \u0026 time in DD/MM/YY HHMM format\");","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs an Exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"Cleon2"},"content":" * @return An ExitCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"Cleon2"},"content":" private static Command validateFind(String[] split) {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"Cleon2"},"content":" if (split.length \u003d\u003d 1 || split[1].isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid find command.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"Cleon2"},"content":" return new FindCommand(split[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"Cleon2"},"content":" private static Command validateExit(String[] split) {","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"Cleon2"},"content":" if (split.length !\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"The bye command should not have \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"Cleon2"},"content":" \"any additional words appended to it\");","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"Cleon2"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs a List command.","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"Cleon2"},"content":" * @return A ListCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"Cleon2"},"content":" public static Command validateList(String[] split) {","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"Cleon2"},"content":" if (split.length !\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"The list command should not have any \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"Cleon2"},"content":" \"additional words appended to it\");","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"Cleon2"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs a Mark command.","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"Cleon2"},"content":" * @return A MarkCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"Cleon2"},"content":" public static Command validateMark(String[] split) {","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"Cleon2"},"content":" if (split.length !\u003d 2 || split[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid mark command!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"Cleon2"},"content":" if (!Character.isDigit(split[1].charAt(0))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"The second argument must be a digit!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"Cleon2"},"content":" int index \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"Cleon2"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a number greater than 0!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"Cleon2"},"content":" return new MarkCommand(index, split[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"Cleon2"},"content":" * Validates and constructs a Delete command.","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"Cleon2"},"content":" * @param split The user input split into parts.","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"Cleon2"},"content":" * @return A DeleteCommand object if input is valid, else an IncorrectCommand object.","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"Cleon2"},"content":" public static Command validateDelete(String[] split) {","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"Cleon2"},"content":" if (split.length !\u003d 2 || split[1].isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a valid delete command!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":203,"author":{"gitId":"Cleon2"},"content":" if (!Character.isDigit(split[1].charAt(0))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":204,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"The second argument must be a digit!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"Cleon2"},"content":" int index \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"Cleon2"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"Cleon2"},"content":" return new IncorrectCommand(\"Please enter a number greater than 0!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"Cleon2"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":212,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":212}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" * Represents the storage manager for saving and loading tasks to/from a file.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":"public class Storage {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" private File file;","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" * Constructs a Storage instance and initializes the file based on the given path.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * @param path The path to the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" public Storage(String path) {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" String[] splitted \u003d path.split(\"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" File directory \u003d new File(splitted[0]);","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" File savedData \u003d new File(path);","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" if (!savedData.exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" savedData.createNewFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" this.file \u003d savedData;","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" } catch (IOException err) {","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" System.out.println(err);","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" * Loads tasks from the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" * @return An ArrayList of Task objects loaded from the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" * @throws DukeException If an error occurs during reading or parsing the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" Scanner sc \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" ArrayList\u003cTask\u003e savedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" String current \u003d sc.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":" String[] splitted \u003d current.split(\" \\\\| \", 4);","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" switch (splitted[0]) {","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" case \"T\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" Task toDo \u003d new ToDo(splitted[2], splitted[1].equals(\"1\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" savedTasks.add(toDo);","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":" case \"D\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":" Task deadline \u003d new Deadline(splitted[2], formatInputDate(splitted[3]), splitted[1].equals(\"1\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":" savedTasks.add(deadline);","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"Cleon2"},"content":" case \"E\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"Cleon2"},"content":" String[] timeline \u003d splitted[3].split(\"--\");","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"Cleon2"},"content":" LocalDateTime from \u003d formatInputDate(timeline[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"Cleon2"},"content":" LocalDateTime to \u003d formatInputDate(timeline[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"Cleon2"},"content":" Task event \u003d new Event(splitted[2], from, to, splitted[1].equals(\"1\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"Cleon2"},"content":" savedTasks.add(event);","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"Cleon2"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"Cleon2"},"content":" default: {","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"Cleon2"},"content":" throw new DukeException(\"Error reading data from storage.\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"Cleon2"},"content":" + \"Creating a task list from scratch.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"Cleon2"},"content":" return savedTasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"Cleon2"},"content":" } catch (FileNotFoundException err) {","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"Cleon2"},"content":" System.out.println(err);","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"Cleon2"},"content":" return null;","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Cleon2"},"content":" * Updates the storage file with the given list of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Cleon2"},"content":" * @param tasks The list of tasks to be saved.","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Cleon2"},"content":" public void updateStorage(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"Cleon2"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"Cleon2"},"content":" FileWriter writer \u003d new FileWriter(this.file);","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"Cleon2"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"Cleon2"},"content":" writer.write(task.toFile() + System.lineSeparator());","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"Cleon2"},"content":" writer.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"Cleon2"},"content":" } catch (IOException err) {","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"Cleon2"},"content":" System.out.println(err);","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Cleon2"},"content":" * Formats an input date string into a LocalDateTime object.","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Cleon2"},"content":" * @param date The input date string.","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Cleon2"},"content":" * @return A LocalDateTime object representing the formatted date.","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Cleon2"},"content":" public LocalDateTime formatInputDate(String date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"Cleon2"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ISO_LOCAL_DATE_TIME;","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"Cleon2"},"content":" LocalDateTime localDateTime \u003d LocalDateTime.parse(date, formatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"Cleon2"},"content":" return localDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":121,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Cleon2":121}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":" * Represents a task with a specific deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" * Constructs a Deadline task with the given description and deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" * Constructs a Deadline task with the given description, deadline, and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" public Deadline(String description, LocalDateTime by, boolean isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" * Converts the Deadline task to its string representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" * @return The string representation of the Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" return \"[D]\" + super.toString() + \" (by: \" + super.localDateTimeToString(by) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" * Converts the Deadline task to its file format representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" * @return The file format representation of the Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" public String toFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" return \"D\" + super.toFile() + this.by;","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Cleon2":52}},{"path":"src/main/java/duke/tasks/DukeList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import java.lang.reflect.Array;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Represents a tasklist","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"public class DukeList {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" private ArrayList\u003cTask\u003e dukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" public DukeList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" dukeList \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" public DukeList(ArrayList\u003cTask\u003e ItemList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" dukeList \u003d ItemList;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" * This method simply prints out an acknowledgemnt that a task has been added","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * @param newTask takes in a new task","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" public void add(Task newTask) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" this.dukeList.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" * This method deletes a task from the tasklist","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" * @param taskNum index of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" public void deleteTask(int taskNum) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" dukeList.remove(taskNum - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" public ArrayList\u003cTask\u003e filterByKeyword(String keyword) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" ArrayList\u003cTask\u003e filteredTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" for (Task task : dukeList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" String description \u003d task.getDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" if (description.contains(keyword)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" filteredTasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" return filteredTasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" * Sets task as done","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" * @param taskNum index of task","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" public void setTaskAsDone(int taskNum) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" Task chosenTask \u003d dukeList.get(taskNum - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" chosenTask.setAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" * Sets task as undone","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" * @param taskNum index of task","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" public void setTaskAsUndone(int taskNum) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Cleon2"},"content":" Task chosenTask \u003d dukeList.get(taskNum - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":" chosenTask.setAsUndone();","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Cleon2"},"content":" * returns size of list","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Cleon2"},"content":" * @return size of list","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Cleon2"},"content":" public int getSize() {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Cleon2"},"content":" return dukeList.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Cleon2"},"content":" public ArrayList\u003cTask\u003e getArrayList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Cleon2"},"content":" return this.dukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Cleon2"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Cleon2"},"content":" return dukeList.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":85}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":" * Represents a task that starts and ends at specific date and time.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" * Constructs an Event task with the given description, start time, and end time.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" * @param from The start time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" * @param to The end time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * Constructs an Event task with the given description, start time, end time, and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" * @param from The start time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" * @param to The end time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" * Converts the Event task to its string representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" * @return The string representation of the Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" return \"[E]\" + super.toString() + \" (from: \" + super.localDateTimeToString(from) + \" to: \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" super.localDateTimeToString(to) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" * Converts the Event task to its file format representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" * @return The file format representation of the Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" public String toFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" return \"E\" + super.toFile() + this.from + \"--\" + this.to;","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Cleon2":59}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":" * Represents a single task with a description and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" private String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" * Constructs a Task instance with the given description and sets completion status to false.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" * Constructs a Task instance with the given description and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" * Returns the status icon of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" * @return The status icon (\"X\" if done, \" \" if not done).","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" * Converts the task to its string representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" * @return The string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" * Converts the task to its file format representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" * @return The file format representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" public String toFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" return \" | \" + (this.isDone ? 1 : 0) + \" | \" + this.description + \" | \";","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" public void setAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":" * Marks the task as undone.","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Cleon2"},"content":" public void setAsUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"Cleon2"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Cleon2"},"content":" * Converts a LocalDateTime object to a formatted string representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Cleon2"},"content":" * @param dateTime The LocalDateTime object to be converted.","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Cleon2"},"content":" * @return The formatted string representation of the date and time.","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Cleon2"},"content":" public String localDateTimeToString(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"Cleon2"},"content":" String dayOfMonth \u003d dateTime.getDayOfMonth() + getDayOfMonthSuffix(dateTime.getDayOfMonth());","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"Cleon2"},"content":" String month \u003d dateTime.getMonth().toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"Cleon2"},"content":" month \u003d month.substring(0, 1).toUpperCase() + month.substring(1).toLowerCase();","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Cleon2"},"content":" String year \u003d String.valueOf(dateTime.getYear());","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"Cleon2"},"content":" String hour \u003d dateTime.format(DateTimeFormatter.ofPattern(\"h\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"Cleon2"},"content":" String minute \u003d dateTime.format(DateTimeFormatter.ofPattern(\"mm\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"Cleon2"},"content":" String amPm \u003d dateTime.format(DateTimeFormatter.ofPattern(\"a\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"Cleon2"},"content":" return String.format(\"%s of %s %s, %s:%s%s\", dayOfMonth, month, year, hour, minute, amPm);","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Cleon2"},"content":" * Returns the suffix for the day of the month.","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Cleon2"},"content":" * @param n The day of the month.","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Cleon2"},"content":" * @return The suffix (\"st\", \"nd\", \"rd\", or \"th\").","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Cleon2"},"content":" public String getDayOfMonthSuffix(final int n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"Cleon2"},"content":" if (n \u003e\u003d 11 \u0026\u0026 n \u003c\u003d 13) {","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"Cleon2"},"content":" return \"th\";","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"Cleon2"},"content":" switch (n % 10) {","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"Cleon2"},"content":" case 1:","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"Cleon2"},"content":" return \"st\";","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"Cleon2"},"content":" case 2:","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"Cleon2"},"content":" return \"nd\";","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"Cleon2"},"content":" case 3:","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"Cleon2"},"content":" return \"rd\";","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"Cleon2"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"Cleon2"},"content":" return \"th\";","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Cleon2"},"content":" * Checks if the task is marked as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"Cleon2"},"content":" * @return True if the task is done, false otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"Cleon2"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"Cleon2"},"content":" return isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"Cleon2"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"Cleon2"},"content":" return description;","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Cleon2":127}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":" * Represents a to-do task.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":" * Constructs a ToDo instance with the given description and sets completion status to false.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the to-do task.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" * Constructs a ToDo instance with the given description and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" * @param description The description of the to-do task.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" * @param isDone The completion status of the to-do task.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" * Converts the to-do task to its string representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" * @return The string representation of the to-do task.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" * Converts the to-do task to its file format representation.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" * @return The file format representation of the to-do task.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" public String toFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" return \"T\" + super.toFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Cleon2":45}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":" private Scanner input;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" this.input \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" return this.input.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" public void showLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"_______________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" * This method prints out the initial greeting","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" //Introduction","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":" \" Hello! I\u0027m Cleon\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Cleon2"},"content":" \" What can I do for you?\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Cleon2"},"content":" public void showList(DukeList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Cleon2"},"content":" int len \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Cleon2"},"content":" for (int i \u003d 0; i \u003c len; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Cleon2"},"content":" int num \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Cleon2"},"content":" Task currTask \u003d tasks.getTask(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Cleon2"},"content":" System.out.println(num + \". \" + currTask.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Cleon2"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Issues loading past data. Creating a new tasklist from scratch\");","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Cleon2"},"content":" public void showError(String errMessage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Cleon2"},"content":" System.out.println(errMessage);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Cleon2"},"content":" public void acknowledgeAdd(int size, Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Added the following task to the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Cleon2"},"content":" System.out.println(size + \". \" + task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"You currently have \" + size + \" tasks in your list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Cleon2"},"content":" public void acknowledgeDelete(int index, Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Cleon2"},"content":" System.out.println(index + \". \" + task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Cleon2"},"content":" public void acknowledgeFind(ArrayList\u003cTask\u003e filteredTasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Cleon2"},"content":" if (filteredTasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"No tasks with the given keyword can be found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Cleon2"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Cleon2"},"content":" int len \u003d filteredTasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Cleon2"},"content":" for (int i \u003d 0; i \u003c len; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Cleon2"},"content":" int num \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Cleon2"},"content":" Task currTask \u003d filteredTasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Cleon2"},"content":" System.out.println(num + \". \" + currTask.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Cleon2"},"content":" public void acknowledgeMark(int index, Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Cleon2"},"content":" public void acknowledgeUnmark(int index, Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Cleon2"},"content":" public void exit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"Cleon2"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Cleon2"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":103}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"import duke.commands.IncorrectCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import duke.commands.ListCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"import duke.tasks.DukeList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" void list_wrongInput_incorrectCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" Command com \u003d Parser.parse(\"list \");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" assertTrue(com instanceof IncorrectCommand);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" void list_correctInput_listCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" Command com \u003d Parser.parse(\"list\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" assertTrue(com instanceof ListCommand);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":27}},{"path":"src/test/java/duke/storage/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"package duke.storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Cleon2"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Cleon2"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Cleon2"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Cleon2"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Cleon2"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Cleon2"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Cleon2"},"content":" void file_absentFile_createsNewFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Cleon2"},"content":" String path \u003d \"data/test.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Cleon2"},"content":" File file \u003d new File(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Cleon2"},"content":" assertFalse(file.exists());","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Cleon2"},"content":" Storage storage \u003d new Storage(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Cleon2"},"content":" assertTrue(file.exists());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Cleon2"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Cleon2"},"content":" void file_absentFolder_createNewFolder() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Cleon2"},"content":" String path \u003d \"testdata/test.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Cleon2"},"content":" File folder \u003d new File(\"testdata\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Cleon2"},"content":" assertFalse(folder.isDirectory());","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Cleon2"},"content":" Storage storage \u003d new Storage(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Cleon2"},"content":" assertTrue(folder.exists());","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Cleon2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Cleon2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Cleon2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Cleon2":30}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Cleon2"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Cleon2"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Cleon2":2}},{"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":"Cleon2"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-29"},{"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":{"Cleon2":1,"-":20}}] diff --git a/Cleon2_ip_master/commits.json b/Cleon2_ip_master/commits.json index 9b328225..3c2e8fe3 100644 --- a/Cleon2_ip_master/commits.json +++ b/Cleon2_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Cleon2":[{"date":"2023-08-22","commitResults":[{"hash":"5105c0ae7cb222754c0b819cf8b52f8ba9f150b7","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0and1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"30aa5f38e32c4fba078cdfa3ed4055312a08cb99","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-2","Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":5}}},{"hash":"2ee4a7447c7a7ac75f4f8415020b207cb4d34abe","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":4}}}]},{"date":"2023-08-23","commitResults":[{"hash":"1144e86ff2cc75c644183be8a06e6b0720c762c4","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":15}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b7b18c8242cca21db7e956f52ecb5820ca6d2377","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":164,"deletions":45}}},{"hash":"846c938fe86fd8e24c6f5c8efb97adad7b51efdc","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"sh":{"insertions":0,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"8af882e9cfa7aff2a7b45905bdd323a234bcb40c","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":237,"deletions":112}}},{"hash":"07b0655fabeeff43c9b0f772c3707049dc791789","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":151,"deletions":4}}},{"hash":"fdd2de4bacae2f7d97f3141f3fe64bf4b7b573f3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"7e1e4bd75ef27e40a8ce46eaa5ec1891202e00e4","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":87,"deletions":18}}},{"hash":"f13b5a0715e12201667215b1ecc8f7c5ec2ccd37","isMergeCommit":true,"messageTitle":"merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"0e7923e5eedb245cdca79047b596115b192e6a51","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":256,"deletions":232}}},{"hash":"9c3c5dd1d22e8150a4779a9dbbcb256dc25472aa","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"2d332ba88565d4bf40ed7a2a7851f8035e5b6368","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":11},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"881326cdb7baf26a354d6fa2f29112f69ced61b9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"3e292d29734d787340018b5fecf28527aaf64131","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/nus-cs2103-AY2324S1/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cc22fcc4982078b6a7834b35760586d3c55c809","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"311831833a48e26fefd47a4611afcc79bb5bcc48","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":632,"deletions":382}}}]},{"date":"2023-08-31","commitResults":[{"hash":"df4ea99369b0a8dfbdf9884d3e14666161697ec1","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":392,"deletions":51}}},{"hash":"462e8ae945029cb2d181111a9693bb3cfcaf111d","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"1ac6124a9a34f2b4612d04cc8276d1bdaee1cee3","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":76,"deletions":12}}},{"hash":"52edc9e8dc2a170225b1dc92a330ab1c1bb6f18b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"fca851c50cce5a1d782c4051a7b66564edfd2884","isMergeCommit":true,"messageTitle":"resolved conflict","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"47a737c9bade669a72bc5ff6da8ffabeea43ed3b","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"1892415d08eb850b65c4893c385005b4ccce89e6","isMergeCommit":true,"messageTitle":"Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Cleon2":{"java":1322,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":5}},"authorContributionVariance":{"Cleon2":97569.92},"authorDisplayNameMap":{"Cleon2":"CS2103T-F10-2 CLEO..XUAN"}} +{"authorDailyContributionsMap":{"Cleon2":[{"date":"2023-08-22","commitResults":[{"hash":"5105c0ae7cb222754c0b819cf8b52f8ba9f150b7","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0and1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"30aa5f38e32c4fba078cdfa3ed4055312a08cb99","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-2","Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":5}}},{"hash":"2ee4a7447c7a7ac75f4f8415020b207cb4d34abe","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":4}}}]},{"date":"2023-08-23","commitResults":[{"hash":"1144e86ff2cc75c644183be8a06e6b0720c762c4","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":15}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b7b18c8242cca21db7e956f52ecb5820ca6d2377","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":164,"deletions":45}}},{"hash":"846c938fe86fd8e24c6f5c8efb97adad7b51efdc","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"sh":{"insertions":0,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"8af882e9cfa7aff2a7b45905bdd323a234bcb40c","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":237,"deletions":112}}},{"hash":"07b0655fabeeff43c9b0f772c3707049dc791789","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":151,"deletions":4}}},{"hash":"fdd2de4bacae2f7d97f3141f3fe64bf4b7b573f3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"7e1e4bd75ef27e40a8ce46eaa5ec1891202e00e4","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":87,"deletions":18}}},{"hash":"f13b5a0715e12201667215b1ecc8f7c5ec2ccd37","isMergeCommit":true,"messageTitle":"merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"0e7923e5eedb245cdca79047b596115b192e6a51","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":256,"deletions":232}}},{"hash":"9c3c5dd1d22e8150a4779a9dbbcb256dc25472aa","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"2d332ba88565d4bf40ed7a2a7851f8035e5b6368","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":11},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"881326cdb7baf26a354d6fa2f29112f69ced61b9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"3e292d29734d787340018b5fecf28527aaf64131","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/nus-cs2103-AY2324S1/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cc22fcc4982078b6a7834b35760586d3c55c809","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"311831833a48e26fefd47a4611afcc79bb5bcc48","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":632,"deletions":382}}}]},{"date":"2023-08-31","commitResults":[{"hash":"df4ea99369b0a8dfbdf9884d3e14666161697ec1","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":392,"deletions":51}}},{"hash":"462e8ae945029cb2d181111a9693bb3cfcaf111d","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"1ac6124a9a34f2b4612d04cc8276d1bdaee1cee3","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":76,"deletions":12}}},{"hash":"52edc9e8dc2a170225b1dc92a330ab1c1bb6f18b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"fca851c50cce5a1d782c4051a7b66564edfd2884","isMergeCommit":true,"messageTitle":"resolved conflict","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"47a737c9bade669a72bc5ff6da8ffabeea43ed3b","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"1892415d08eb850b65c4893c385005b4ccce89e6","isMergeCommit":true,"messageTitle":"Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"06d40a9ba4c72dc4b72c61c250a55d2b1aebb1e0","isMergeCommit":false,"messageTitle":"added acknowledgements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"Cleon2":{"java":1323,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":5}},"authorContributionVariance":{"Cleon2":94185.336},"authorDisplayNameMap":{"Cleon2":"CS2103T-F10-2 CLEO..XUAN"}} diff --git a/Darren159_ip_master/authorship.json b/Darren159_ip_master/authorship.json index 0b21d107..e4b43a4b 100644 --- a/Darren159_ip_master/authorship.json +++ b/Darren159_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":" protected String by;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Darren159":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"import java.util.List;","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":" public enum CommandType {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":" LIST, DELETE, MARK, ADD, UNKNOWN, BYE","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" private static CommandType parseCommand(String userInput) {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" return CommandType.BYE;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" } else if (userInput.startsWith(\"list\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":" return CommandType.LIST;","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" return CommandType.DELETE;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" } else if (userInput.contains(\"mark\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" return CommandType.MARK;","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" } else if (userInput.startsWith(\"todo\") || userInput.startsWith(\"deadline\") || userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" return CommandType.ADD;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":" return CommandType.UNKNOWN;","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void main(String[] args){","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"Darren159"},"content":" String logo \u003d \" ___ _ ___ ________ __ ____ __________ ____ _ __\\n\"","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"Darren159"},"content":" + \" / | / | / / | / / __ \\\\ \\\\/ / / __ \\\\ /_ __/ __ \\\\/ __ \\\\/ | / /\\n\"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"Darren159"},"content":" + \" / /| | / |/ / |/ / / / /\\\\ /_____/ / / /_____/ / / /_/ / / / / |/ / \\n\"","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Darren159"},"content":" + \" / ___ |/ /| / /| / /_/ / / /_____/ /_/ /_____/ / / _, _/ /_/ / /| / \\n\"","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"Darren159"},"content":" + \"/_/ |_/_/ |_/_/ |_/\\\\____/ /_/ \\\\____/ /_/ /_/ |_|\\\\____/_/ |_/ \\n\";","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"Darren159"},"content":" String horizontalLine \u003d \"__________________________________________________________________________\\n\";","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"Darren159"},"content":" String byeMessage \u003d horizontalLine + \"Bye. Hope to see you again soon!\\n\" + horizontalLine;","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"Darren159"},"content":" Scanner myObj \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"Darren159"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"Darren159"},"content":" System.out.println(horizontalLine + logo + \"Hello! I\u0027m ANNOY-O-TRON!\\nWhat can I do for you?\\n\"","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"Darren159"},"content":" + horizontalLine);","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"Darren159"},"content":" CommandType command;","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"Darren159"},"content":" do {","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"Darren159"},"content":" String userInput \u003d myObj.nextLine();","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"Darren159"},"content":" command \u003d parseCommand(userInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"Darren159"},"content":" System.out.print(horizontalLine);","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"Darren159"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"Darren159"},"content":" switch (command) {","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"Darren159"},"content":" case LIST:","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"Darren159"},"content":" handleListCommand(list);","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"Darren159"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"Darren159"},"content":" case DELETE:","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"Darren159"},"content":" handleDeleteCommand(userInput, list);","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"Darren159"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"Darren159"},"content":" case MARK:","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"Darren159"},"content":" handleMarkCommand(userInput, list);","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"Darren159"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"Darren159"},"content":" case ADD:","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"Darren159"},"content":" handleAddTaskCommand(userInput, list);","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"Darren159"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"Darren159"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"Darren159"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"Darren159"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"Darren159"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"Darren159"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"Darren159"},"content":" } while (command !\u003d CommandType.BYE);","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"Darren159"},"content":" System.out.println(byeMessage);","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"Darren159"},"content":" private static void handleListCommand(List\u003cTask\u003e list) {","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":74,"author":{"gitId":"Darren159"},"content":" for (int i \u003d 1; i \u003c list.size() + 1; i++) {","lastModifiedDate":"2023-08-21"},{"lineNumber":75,"author":{"gitId":"Darren159"},"content":" System.out.println(i + \".\" + list.get(i - 1));","lastModifiedDate":"2023-08-21"},{"lineNumber":76,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":77,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"Darren159"},"content":" private static void handleDeleteCommand(String userInput, List\u003cTask\u003e list) {","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"Darren159"},"content":" int index \u003d getTaskIndex(userInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"Darren159"},"content":" if (isValidIndex(index, list.size())) {","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"Darren159"},"content":" Task currentTask \u003d list.remove(index - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + currentTask);","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"Darren159"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Invalid task index.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"Darren159"},"content":" private static void handleMarkCommand(String userInput, List\u003cTask\u003e list) {","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"Darren159"},"content":" int index \u003d getTaskIndex(userInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"Darren159"},"content":" if (isValidIndex(index, list.size())) {","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"Darren159"},"content":" Task currentTask \u003d list.get(index - 1);","lastModifiedDate":"2023-08-21"},{"lineNumber":93,"author":{"gitId":"Darren159"},"content":" if (userInput.contains(\"unmark\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":94,"author":{"gitId":"Darren159"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":95,"author":{"gitId":"Darren159"},"content":" currentTask.markUndone();","lastModifiedDate":"2023-08-21"},{"lineNumber":96,"author":{"gitId":"Darren159"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":97,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":98,"author":{"gitId":"Darren159"},"content":" currentTask.markDone();","lastModifiedDate":"2023-08-21"},{"lineNumber":99,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":100,"author":{"gitId":"Darren159"},"content":" System.out.println(currentTask);","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"Darren159"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":102,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Invalid task index.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"Darren159"},"content":" private static void handleAddTaskCommand(String userInput, List\u003cTask\u003e list) throws InvalidArgumentException, EmptyDescriptionException {","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"Darren159"},"content":" Task newTask \u003d getTask(userInput);","lastModifiedDate":"2023-08-21"},{"lineNumber":107,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + newTask);","lastModifiedDate":"2023-08-21"},{"lineNumber":108,"author":{"gitId":"Darren159"},"content":" list.add(newTask);","lastModifiedDate":"2023-08-21"},{"lineNumber":109,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":110,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"Darren159"},"content":" private static int getTaskIndex(String userInput) {","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"Darren159"},"content":" return userInput.charAt(userInput.length() - 1) - \u00270\u0027;","lastModifiedDate":"2023-08-22"},{"lineNumber":113,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":114,"author":{"gitId":"Darren159"},"content":" private static boolean isValidIndex(int index, int size) {","lastModifiedDate":"2023-08-22"},{"lineNumber":115,"author":{"gitId":"Darren159"},"content":" return index \u003e 0 \u0026\u0026 index \u003c\u003d size;","lastModifiedDate":"2023-08-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":117,"author":{"gitId":"Darren159"},"content":" private static Task getTask(String userInput) throws EmptyDescriptionException {","lastModifiedDate":"2023-08-22"},{"lineNumber":118,"author":{"gitId":"Darren159"},"content":" String afterSpace \u003d userInput.substring(userInput.indexOf(\u0027 \u0027) + 1).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":119,"author":{"gitId":"Darren159"},"content":" if (userInput.equals(\"todo\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"Darren159"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2023-08-22"},{"lineNumber":121,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":122,"author":{"gitId":"Darren159"},"content":" if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":123,"author":{"gitId":"Darren159"},"content":" return new Todo(afterSpace);","lastModifiedDate":"2023-08-21"},{"lineNumber":124,"author":{"gitId":"Darren159"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":125,"author":{"gitId":"Darren159"},"content":" int deadlineIndex \u003d afterSpace.indexOf(\"/by\");","lastModifiedDate":"2023-08-21"},{"lineNumber":126,"author":{"gitId":"Darren159"},"content":" String taskDeadline \u003d afterSpace.substring(deadlineIndex + 4).trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":127,"author":{"gitId":"Darren159"},"content":" String taskName \u003d afterSpace.substring(0, deadlineIndex).trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":128,"author":{"gitId":"Darren159"},"content":" return new Deadline(taskName, taskDeadline);","lastModifiedDate":"2023-08-21"},{"lineNumber":129,"author":{"gitId":"Darren159"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"Darren159"},"content":" int fromIndex \u003d afterSpace.indexOf(\"/from\");","lastModifiedDate":"2023-08-21"},{"lineNumber":131,"author":{"gitId":"Darren159"},"content":" int toIndex \u003d afterSpace.indexOf(\"/to\");","lastModifiedDate":"2023-08-21"},{"lineNumber":132,"author":{"gitId":"Darren159"},"content":" String taskFrom \u003d afterSpace.substring(fromIndex + 6, toIndex - 1).trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":133,"author":{"gitId":"Darren159"},"content":" String taskTo \u003d afterSpace.substring(toIndex + 4).trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":134,"author":{"gitId":"Darren159"},"content":" String taskName \u003d afterSpace.substring(0, fromIndex).trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":135,"author":{"gitId":"Darren159"},"content":" return new Event(taskName, taskFrom, taskTo);","lastModifiedDate":"2023-08-21"},{"lineNumber":136,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":137,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Darren159":134,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":" super(\"☹ OOPS!!! \" + errorMessage);","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Darren159":5}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"public class EmptyDescriptionException extends DukeException{","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":" public EmptyDescriptionException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":" super(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Darren159":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":" protected String from;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":" protected String to;","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Darren159":17}},{"path":"src/main/java/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"public class InvalidArgumentException extends DukeException{","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":" public InvalidArgumentException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":" super(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Darren159":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":" public void markDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"Darren159"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"Darren159"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Darren159":26}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Darren159":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"unmark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Darren159":9}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Darren159":2,"-":22}},{"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":"Darren159"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"Darren159"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Darren159"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Darren159"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":6,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":" ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Darren159"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Darren159"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Darren159"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"Darren159"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Darren159"},"content":" ui.showLine(); // show the divider line (\"_______\")","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Darren159"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Darren159"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Darren159"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Darren159"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"Darren159"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Darren159"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Darren159"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Darren159"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Darren159"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Darren159":39,"-":2}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import duke.command.AddCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" public enum CommandType {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" LIST, DELETE, MARK, UNMARK, ADD, UNKNOWN, BYE","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" public static Command parse(String userInput) throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":" CommandType commandType \u003d parseCommand(userInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":" switch (commandType) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Darren159"},"content":" case LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Darren159"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Darren159"},"content":" case DELETE:","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Darren159"},"content":" // Extract the index to delete","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Darren159"},"content":" int deleteIndex \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Darren159"},"content":" return new DeleteCommand(deleteIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Darren159"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Darren159"},"content":" // Extract the index to mark","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Darren159"},"content":" int markIndex \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Darren159"},"content":" return new MarkCommand(markIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Darren159"},"content":" case UNMARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Darren159"},"content":" // Extract the index to unmark","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Darren159"},"content":" int unmarkIndex \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Darren159"},"content":" return new UnmarkCommand(unmarkIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Darren159"},"content":" case ADD:","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Darren159"},"content":" if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Darren159"},"content":" String taskName \u003d userInput.substring(5).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Darren159"},"content":" return new AddCommand(new Todo(taskName));","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Darren159"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Darren159"},"content":" String trim \u003d userInput.substring(userInput.indexOf(\u0027 \u0027) + 1).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Darren159"},"content":" if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Darren159"},"content":" int deadlineIndex \u003d trim.indexOf(\"/by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Darren159"},"content":" String taskDeadline \u003d trim.substring(deadlineIndex + 4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Darren159"},"content":" String taskName \u003d trim.substring(0, deadlineIndex).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Darren159"},"content":" return new AddCommand(new Deadline(taskName, taskDeadline));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Darren159"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Darren159"},"content":" int fromIndex \u003d trim.indexOf(\"/from\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Darren159"},"content":" int toIndex \u003d trim.indexOf(\"/to\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Darren159"},"content":" String taskFrom \u003d trim.substring(fromIndex + 6, toIndex - 1).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Darren159"},"content":" String taskTo \u003d trim.substring(toIndex + 4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Darren159"},"content":" String taskName \u003d trim.substring(0, fromIndex).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Darren159"},"content":" return new AddCommand(new Event(taskName, taskFrom, taskTo));","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Darren159"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Darren159"},"content":" case BYE:","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Darren159"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Darren159"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Darren159"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Darren159"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Darren159"},"content":" private static CommandType parseCommand(String userInput) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Darren159"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Darren159"},"content":" return CommandType.BYE;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Darren159"},"content":" } else if (userInput.startsWith(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Darren159"},"content":" return CommandType.LIST;","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Darren159"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Darren159"},"content":" return CommandType.DELETE;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Darren159"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Darren159"},"content":" return CommandType.UNMARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Darren159"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Darren159"},"content":" return CommandType.MARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Darren159"},"content":" } else if (userInput.startsWith(\"todo\") || userInput.startsWith(\"deadline\") || userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Darren159"},"content":" return CommandType.ADD;","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Darren159"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Darren159"},"content":" return CommandType.UNKNOWN;","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":90}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" private final String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":" // Create data folder and file if they don\u0027t exist","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Darren159"},"content":" File folder \u003d file.getParentFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Darren159"},"content":" if (!folder.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Darren159"},"content":" folder.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Darren159"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Darren159"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Darren159"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Darren159"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Darren159"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Darren159"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Darren159"},"content":" public List\u003cTask\u003e load() throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Darren159"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Darren159"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Darren159"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Darren159"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Darren159"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Darren159"},"content":" Task task \u003d parseFromFile(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Darren159"},"content":" list.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Darren159"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Darren159"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Darren159"},"content":" return list;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Darren159"},"content":" public void save(TaskList list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Darren159"},"content":" try (FileWriter writer \u003d new FileWriter(filePath)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Darren159"},"content":" for (Task task : list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Darren159"},"content":" writer.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Darren159"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Darren159"},"content":" System.out.println(\"An error occurred while saving tasks to disk.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Darren159"},"content":" private static Task parseFromFile(String line) throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Darren159"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Darren159"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Darren159"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Darren159"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Darren159"},"content":" Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Darren159"},"content":" switch (type) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Darren159"},"content":" case \"T\":","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Darren159"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Darren159"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Darren159"},"content":" case \"D\":","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Darren159"},"content":" String deadline \u003d parts[3];","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Darren159"},"content":" task \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Darren159"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Darren159"},"content":" case \"E\":","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Darren159"},"content":" String eventTime \u003d parts[3];","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Darren159"},"content":" int toIndex \u003d eventTime.indexOf(\"to\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Darren159"},"content":" String from \u003d eventTime.substring(0, toIndex).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Darren159"},"content":" String to \u003d eventTime.substring(toIndex + 2).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Darren159"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Darren159"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Darren159"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Darren159"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Darren159"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"Darren159"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"Darren159"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":93}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":" public Task delete(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":" return this.tasks.remove(index - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Darren159"},"content":" public Task mark(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Darren159"},"content":" Task task \u003d this.tasks.get(index - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Darren159"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Darren159"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Darren159"},"content":" public Task unmark(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Darren159"},"content":" Task task \u003d this.tasks.get(index - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Darren159"},"content":" task.markUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Darren159"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Darren159"},"content":" public int getListSize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Darren159"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Darren159"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Darren159"},"content":" return this.tasks.iterator();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":41}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" private String horizontalLine \u003d \"__________________________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" String logo \u003d \" ___ _ ___ ________ __ ____ __________ ____ _ __\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" + \" / | / | / / | / / __ \\\\ \\\\/ / / __ \\\\ /_ __/ __ \\\\/ __ \\\\/ | / /\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" + \" / /| | / |/ / |/ / / / /\\\\ /_____/ / / /_____/ / / /_/ / / / / |/ / \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":" + \" / ___ |/ /| / /| / /_/ / / /_____/ /_/ /_____/ / / _, _/ /_/ / /| / \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" + \"/_/ |_/_/ |_/_/ |_/\\\\____/ /_/ \\\\____/ /_/ /_/ |_|\\\\____/_/ |_/ \\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" System.out.println(horizontalLine + logo + \"Hello! I\u0027m ANNOY-O-TRON!\\nWhat can I do for you?\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" public void showBye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" String byeMessage \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":" System.out.println(byeMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Darren159"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Darren159"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Darren159"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Error loading tasks from file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Darren159"},"content":" public void showError(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Darren159"},"content":" System.out.println(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Darren159"},"content":" public void showAddedTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Darren159"},"content":" public void showDeletedTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Darren159"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Darren159"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Darren159"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Darren159"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Darren159"},"content":" int index \u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Darren159"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Darren159"},"content":" System.out.println(index + \".\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Darren159"},"content":" index++;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Darren159"},"content":" public void showNumberOfTasks(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Darren159"},"content":" System.out.println(\"Now you have \" + taskList.getListSize() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Darren159"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Darren159"},"content":" Scanner myObj \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Darren159"},"content":" return myObj.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":59}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" ui.showAddedTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":20}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":12}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" Task task \u003d tasks.delete(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" ui.showDeletedTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" ui.showNumberOfTasks(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":22}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" public ExitCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" super();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":" ui.showBye();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":21}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":12}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" Task task \u003d tasks.mark(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":21}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" Task task \u003d tasks.unmark(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":21}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":" super(\"☹ OOPS!!! \" + errorMessage);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Darren159":7}},{"path":"src/main/java/duke/exception/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"public class EmptyDescriptionException extends DukeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":" public EmptyDescriptionException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":" super(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Darren159":7}},{"path":"src/main/java/duke/exception/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"public class InvalidArgumentException extends DukeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":" public InvalidArgumentException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":" super(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Darren159":7}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" this.deadline \u003d LocalDateTime.parse(deadline, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, h:mma\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.deadline.format(formatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Darren159"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Darren159"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Darren159"},"content":" return \"D\" + super.toFileString() + \" | \" + this.deadline.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Darren159":27}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"public class Event extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":" this.from \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" this.to \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(formatter) + \" to: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":" + this.to.format(formatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Darren159"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Darren159"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Darren159"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + this.description + \" | \" + this.from.format(formatter)","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Darren159"},"content":" + \" to \" + this.to.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Darren159":31}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" public void markDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"Darren159"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"Darren159"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Darren159"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Darren159"},"content":" return \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Darren159":33}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" return \"T\" + super.toFileString();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Darren159":17}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"import duke.command.AddCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" public void testParseListCommand() throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":" Command command \u003d Parser.parse(\"list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":" assertTrue(command instanceof ListCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Darren159"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Darren159"},"content":" public void testParseDeleteCommand() throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Darren159"},"content":" Command command \u003d Parser.parse(\"delete 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Darren159"},"content":" assertTrue(command instanceof DeleteCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Darren159"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Darren159"},"content":" public void testParseMarkCommand() throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Darren159"},"content":" Command command \u003d Parser.parse(\"mark 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Darren159"},"content":" assertTrue(command instanceof MarkCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Darren159"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Darren159"},"content":" public void testParseUnmarkCommand() throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Darren159"},"content":" Command command \u003d Parser.parse(\"unmark 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Darren159"},"content":" assertTrue(command instanceof UnmarkCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Darren159"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Darren159"},"content":" public void testParseAddCommand() throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Darren159"},"content":" Command command \u003d Parser.parse(\"todo Test\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Darren159"},"content":" assertTrue(command instanceof AddCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Darren159"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Darren159"},"content":" public void testParseExitCommand() throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Darren159"},"content":" Command command \u003d Parser.parse(\"bye\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Darren159"},"content":" assertTrue(command instanceof ExitCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Darren159"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Darren159"},"content":" public void testInvalidCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Darren159"},"content":" assertThrows(InvalidArgumentException.class, () -\u003e Parser.parse(\"invalid_command\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":59}},{"path":"src/test/java/duke/UiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":"public class UiTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" private final PrintStream standardOut \u003d System.out;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" private final ByteArrayOutputStream outputStreamCaptor \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" public void setUp() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" System.setOut(new PrintStream(outputStreamCaptor));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":" public void testShowWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Darren159"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Darren159"},"content":" ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Darren159"},"content":" String expected \u003d \"__________________________________________________________________________\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Darren159"},"content":" \" ___ _ ___ ________ __ ____ __________ ____ _ __\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Darren159"},"content":" + \" / | / | / / | / / __ \\\\ \\\\/ / / __ \\\\ /_ __/ __ \\\\/ __ \\\\/ | / /\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Darren159"},"content":" + \" / /| | / |/ / |/ / / / /\\\\ /_____/ / / /_____/ / / /_/ / / / / |/ / \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Darren159"},"content":" + \" / ___ |/ /| / /| / /_/ / / /_____/ /_/ /_____/ / / _, _/ /_/ / /| / \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Darren159"},"content":" + \"/_/ |_/_/ |_/_/ |_/\\\\____/ /_/ \\\\____/ /_/ /_/ |_|\\\\____/_/ |_/ \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Darren159"},"content":" + \"Hello! I\u0027m ANNOY-O-TRON!\\nWhat can I do for you?\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Darren159"},"content":" + \"__________________________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Darren159"},"content":" assertEquals(expected, outputStreamCaptor.toString().trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Darren159"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Darren159"},"content":" public void testShowBye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Darren159"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Darren159"},"content":" ui.showBye();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Darren159"},"content":" String expected \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Darren159"},"content":" assertEquals(expected, outputStreamCaptor.toString().trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Darren159"},"content":" @AfterEach","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Darren159"},"content":" public void tearDown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Darren159"},"content":" System.setOut(standardOut);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":48}},{"path":"src/test/java/duke/task/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"public class ToDoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":" public void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Darren159"},"content":" Todo todo \u003d new Todo(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Darren159"},"content":" String expected \u003d \"[T][ ] Sample Task\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Darren159"},"content":" assertEquals(expected, todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Darren159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Darren159"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Darren159"},"content":" public void testToFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Darren159"},"content":" Todo todo \u003d new Todo(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Darren159"},"content":" String expected \u003d \"T | 0 | Sample Task\";","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Darren159"},"content":" assertEquals(expected, todo.toFileString());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Darren159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Darren159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Darren159":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Darren159"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Darren159"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Darren159"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Darren159"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Darren159"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Darren159"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Darren159"},"content":"unmark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Darren159"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Darren159"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Darren159":9}},{"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":"Darren159"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"Darren159":1,"-":20}}] diff --git a/Darren159_ip_master/commits.json b/Darren159_ip_master/commits.json index 80b0a110..c969ea84 100644 --- a/Darren159_ip_master/commits.json +++ b/Darren159_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Darren159":[{"date":"2023-08-21","commitResults":[{"hash":"1b01fafe945a855f45c7509c80a16c059c6d0343","isMergeCommit":false,"messageTitle":"Rename chatbot and add greeting and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"4c9e6a0d765d2edc51e517b31c5c4ff1af33cb07","isMergeCommit":false,"messageTitle":"Add command echoing and exiting","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"b83e266af9766c397a9978e0e635dbf9aa204007","isMergeCommit":false,"messageTitle":"Add ability to store text entered by user and display them back to the user","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"1aaf7ead658f71048731347e8756601ea6f7acbf","isMergeCommit":false,"messageTitle":"Add ability to mark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":3}}},{"hash":"a067c57b4467c88851e57bfb3437ff99ea75fcab","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":5}}},{"hash":"d2ee370d23e8dbee31c2f19c7d0d3c950f710f67","isMergeCommit":false,"messageTitle":"Add Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}}]},{"date":"2023-08-22","commitResults":[{"hash":"735d4629254682164643aae5c3c71e39c6a72904","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":9}}},{"hash":"8f0983909b732ac8c61cfee877d40fc490a77846","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"6b3e49561a58a3e7c9e79d12c958e4c0fc8509d1","isMergeCommit":false,"messageTitle":"Use Enumerations","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":41}}}]}]},"authorFileTypeContributionMap":{"Darren159":{"java":216,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"Darren159":7564.0},"authorDisplayNameMap":{"Darren159":"CS2103T-T12-4 LOW ..RREN"}} +{"authorDailyContributionsMap":{"Darren159":[{"date":"2023-08-21","commitResults":[{"hash":"1b01fafe945a855f45c7509c80a16c059c6d0343","isMergeCommit":false,"messageTitle":"Rename chatbot and add greeting and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"4c9e6a0d765d2edc51e517b31c5c4ff1af33cb07","isMergeCommit":false,"messageTitle":"Add command echoing and exiting","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"b83e266af9766c397a9978e0e635dbf9aa204007","isMergeCommit":false,"messageTitle":"Add ability to store text entered by user and display them back to the user","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"1aaf7ead658f71048731347e8756601ea6f7acbf","isMergeCommit":false,"messageTitle":"Add ability to mark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":3}}},{"hash":"a067c57b4467c88851e57bfb3437ff99ea75fcab","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":5}}},{"hash":"d2ee370d23e8dbee31c2f19c7d0d3c950f710f67","isMergeCommit":false,"messageTitle":"Add Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}}]},{"date":"2023-08-22","commitResults":[{"hash":"735d4629254682164643aae5c3c71e39c6a72904","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":9}}},{"hash":"8f0983909b732ac8c61cfee877d40fc490a77846","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"6b3e49561a58a3e7c9e79d12c958e4c0fc8509d1","isMergeCommit":false,"messageTitle":"Use Enumerations","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":41}}}]},{"date":"2023-08-31","commitResults":[{"hash":"dad04a4ed73602684e0336391635e85c4a43a7f4","isMergeCommit":false,"messageTitle":"Add support for saving and loading tasks from hard disk","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":6}}}]},{"date":"2023-09-01","commitResults":[{"hash":"22a1825d49a869dfeb825a7ded17c17df7877bb1","isMergeCommit":false,"messageTitle":"Revert \"Add support for saving and loading tasks from hard disk\"","messageBody":"This reverts commit dad04a4ed73602684e0336391635e85c4a43a7f4.\n","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":107}}},{"hash":"1207298a6afa004ff67a0df307b3f76380650815","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Add support for saving and loading tasks from hard disk\"\"","messageBody":"This reverts commit 22a1825d49a869dfeb825a7ded17c17df7877bb1.\n","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":6}}},{"hash":"f056f2ddb7e48504480e791465c69e3a80fefeae","isMergeCommit":false,"messageTitle":"Add support for Java LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":14}}},{"hash":"b9be5648a04ab979233459abe610879fd7222325","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"82b1d64721102ce4de925b85a3b828163bfc380a","isMergeCommit":false,"messageTitle":"Make the code more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":369,"deletions":216}}},{"hash":"35ac67b7340a74147658d7f33c30f20f1cfad6f8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"ff2c257420b5f35f377b533bfc4d266e8750527e","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":12},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"f77065e52b655a8c183e0f74785a5062cd9dcb5a","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1789ab1e75b64a57ef1be5944b680d88c6b107b3","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1},"txt":{"insertions":0,"deletions":0},"java":{"insertions":90,"deletions":94}}},{"hash":"29d04b954f95356a2d78aa31011a78784bb100c8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"fce496651cd6f94531d31ca00fa553bff046ff73","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":0}}},{"hash":"cd3f34dde9ebc09a68342c47635caad3ba5fcf15","isMergeCommit":true,"messageTitle":"Merge branch \u0027bracnh-A-JUnit\u0027","messageBody":"","tags":["v0.1","A-Jar","A-JUnit"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Darren159":{"java":708,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":6,"txt":9}},"authorContributionVariance":{"Darren159":103827.04},"authorDisplayNameMap":{"Darren159":"CS2103T-T12-4 LOW ..RREN"}} diff --git a/DeltonCheng_ip_master/authorship.json b/DeltonCheng_ip_master/authorship.json index c7fa976a..645598e5 100644 --- a/DeltonCheng_ip_master/authorship.json +++ b/DeltonCheng_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DeltonCheng"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"DeltonCheng"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"DeltonCheng"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"DeltonCheng"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"DeltonCheng"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"DeltonCheng"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"DeltonCheng"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"DeltonCheng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"DeltonCheng"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"DeltonCheng"},"content":" public static class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"DeltonCheng"},"content":" public String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"DeltonCheng"},"content":" public boolean isComplete;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"DeltonCheng"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"DeltonCheng"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"DeltonCheng"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"DeltonCheng"},"content":" public String getMark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"DeltonCheng"},"content":" return (isComplete ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"DeltonCheng"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"DeltonCheng"},"content":" return \"[\" + getMark() + \"] \" + name;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"DeltonCheng"},"content":" public String taskToStringStore(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"DeltonCheng"},"content":" String isCompleteString \u003d (getMark() \u003d\u003d \"X\") ? \"X\" : \"O\";","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"DeltonCheng"},"content":" return isCompleteString + \" \" + task.name + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"DeltonCheng"},"content":" public static class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"DeltonCheng"},"content":" public Todo(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"DeltonCheng"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"DeltonCheng"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"DeltonCheng"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"DeltonCheng"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"DeltonCheng"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"DeltonCheng"},"content":" public String taskToStringStore(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"DeltonCheng"},"content":" return \"T \" + super.taskToStringStore(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"DeltonCheng"},"content":" public static class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"DeltonCheng"},"content":" public LocalDate date;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"DeltonCheng"},"content":" public Deadline(String name, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"DeltonCheng"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"DeltonCheng"},"content":" this.date \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"d MMM yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"DeltonCheng"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"DeltonCheng"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"DeltonCheng"},"content":" String dateString \u003d this.date.format(DateTimeFormatter.ofPattern(\"dd.MM.yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"DeltonCheng"},"content":" return \"[D]\" + super.toString() + \" (by: \" + dateString + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"DeltonCheng"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"DeltonCheng"},"content":" public String taskToStringStore(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"DeltonCheng"},"content":" String dateString \u003d this.date.format(DateTimeFormatter.ofPattern(\"dd.MM.yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"DeltonCheng"},"content":" return \"D\" + \" \" + super.taskToStringStore(task) + dateString;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"DeltonCheng"},"content":" public static class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"DeltonCheng"},"content":" public LocalDate dateFrom;","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"DeltonCheng"},"content":" public LocalDate dateTo;","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"DeltonCheng"},"content":" public Event(String name, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"DeltonCheng"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"DeltonCheng"},"content":" this.dateFrom \u003d LocalDate.parse(from, DateTimeFormatter.ofPattern(\"dd.MM.yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"DeltonCheng"},"content":" this.dateTo \u003d LocalDate.parse(to, DateTimeFormatter.ofPattern(\"dd.MM.yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"DeltonCheng"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"DeltonCheng"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"DeltonCheng"},"content":" String dateFromString \u003d this.dateFrom.format(DateTimeFormatter.ofPattern(\"dd.MM.yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"DeltonCheng"},"content":" String dateToString \u003d this.dateFrom.format(DateTimeFormatter.ofPattern(\"dd.MM.yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"DeltonCheng"},"content":" return \"[E]\" + super.toString() + \" (from: \" + dateFromString + \" to: \" + dateToString + \" )\";","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"DeltonCheng"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"DeltonCheng"},"content":" public String taskToStringStore(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"DeltonCheng"},"content":" String dateFromString \u003d this.dateFrom.format(DateTimeFormatter.ofPattern(\"dd-mm-yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"DeltonCheng"},"content":" String dateToString \u003d this.dateFrom.format(DateTimeFormatter.ofPattern(\"dd-mm-yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"DeltonCheng"},"content":" return \"E\" + \" \" + super.taskToStringStore(task) + dateFromString + \" \" + dateToString ;","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"DeltonCheng"},"content":" public static class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"DeltonCheng"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"DeltonCheng"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"DeltonCheng"},"content":" Task[] taskList \u003d new Task[100];","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"DeltonCheng"},"content":" ArrayList\u003cTask\u003e taskArrayList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"DeltonCheng"},"content":" String line \u003d \"~~*~~*~~*~~*~~*~~*~~*~~*~~*~~\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"DeltonCheng"},"content":" private static final String FILE_PATH_NAME \u003d \"./data/chadBot.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"DeltonCheng"},"content":" public void chadGreet() {","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Yo! This is CHADbot\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Need sum help?\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"DeltonCheng"},"content":" public void chadBye() {","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Cya l8r~\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":124,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"DeltonCheng"},"content":" public void chadOutput(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(input + \"\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"DeltonCheng"},"content":" public void chadAddList(Task input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"DeltonCheng"},"content":" if (input \u003d\u003d null) {","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"DeltonCheng"},"content":" throw new DukeException(\"What are you on about? I do not understand...\");","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"DeltonCheng"},"content":"// taskList[taskCount] \u003d input;","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"DeltonCheng"},"content":" taskArrayList.add(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(input.toString() + \" has been added to yo list!\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"DeltonCheng"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(e.getMessage() + \"\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"DeltonCheng"},"content":" public void chadRemoveList(int index){","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"DeltonCheng"},"content":" Task removed \u003d taskArrayList.remove(index - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Okay! I have removed this task :\\n\" + removed);","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"DeltonCheng"},"content":" if (taskArrayList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Your list is currently empty! Good job :)\");","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"DeltonCheng"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Your list is currently \" + taskArrayList.size() + \" long... Get back to work!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"DeltonCheng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Invalid task index! Try again!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"DeltonCheng"},"content":" public void chadListTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"DeltonCheng"},"content":" if (taskArrayList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Your task list is EMPTY!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"DeltonCheng"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Your outstanding tasks are...\");","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"DeltonCheng"},"content":" for (int i \u003d 0; i \u003c taskArrayList.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"DeltonCheng"},"content":"// System.out.println(\"Task \" + (i + 1) + \") \" + taskList[i].toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Task \" + (i + 1) + \") \" + taskArrayList.get(i)); //\u003c\u003c\u003c\u003c\u003c","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"\\n\" + \"Get to work NOW!\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"DeltonCheng"},"content":" public void chadMarkTask(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"DeltonCheng"},"content":"// taskList[index - 1].isComplete \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"DeltonCheng"},"content":" taskArrayList.get(index - 1).isComplete \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Good job! Task fulfilled!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"DeltonCheng"},"content":"// System.out.println(taskList[index - 1].name + \" [\" + taskList[index - 1].getMark() + \"]\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(taskArrayList.get(index - 1).name + \" [\" + taskArrayList.get(index - 1).getMark() + \"]\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":184,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":185,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"DeltonCheng"},"content":" public void chadUnmarkTask(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"DeltonCheng"},"content":"// taskList[index - 1].isComplete \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":189,"author":{"gitId":"DeltonCheng"},"content":" taskArrayList.get(index - 1).isComplete \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":191,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Boooo! Task is not done!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"DeltonCheng"},"content":"// System.out.println(taskList[index - 1].name + \" [\" + taskList[index - 1].getMark() + \"]\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":193,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(taskArrayList.get(index - 1).name + \" [\" + taskArrayList.get(index - 1).getMark() + \"]\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":194,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":196,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":197,"author":{"gitId":"DeltonCheng"},"content":" public void makeNewDirectory() {","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"DeltonCheng"},"content":" File newDir \u003d new File(\"./data\");","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"DeltonCheng"},"content":" if (newDir.mkdirs()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Data directory has been created successfully!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"DeltonCheng"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Data directory was not created! (There may already exists a data directory)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"DeltonCheng"},"content":" public void makeNewFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"DeltonCheng"},"content":" File newFile \u003d new File(FILE_PATH_NAME);","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"DeltonCheng"},"content":" if (newFile.createNewFile()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":210,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"I have created this file for you: \" + newFile.getName());","lastModifiedDate":"2023-08-31"},{"lineNumber":211,"author":{"gitId":"DeltonCheng"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"You already have the file... Stop wasting my time\");","lastModifiedDate":"2023-08-31"},{"lineNumber":213,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":214,"author":{"gitId":"DeltonCheng"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":215,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"An error has occurred when creating the file: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"DeltonCheng"},"content":" public void printFile() throws FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":220,"author":{"gitId":"DeltonCheng"},"content":" File chadFile \u003d new File(FILE_PATH_NAME);","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"DeltonCheng"},"content":" Scanner s \u003d new Scanner(chadFile);","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"DeltonCheng"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":224,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":225,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":227,"author":{"gitId":"DeltonCheng"},"content":" public void writeFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":229,"author":{"gitId":"DeltonCheng"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH_NAME);","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"DeltonCheng"},"content":" for (Task task : taskArrayList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"DeltonCheng"},"content":" fw.write(task.taskToStringStore(task) + System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"DeltonCheng"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"DeltonCheng"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":236,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"There was an error writing the file: \" + e);;","lastModifiedDate":"2023-08-31"},{"lineNumber":237,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":238,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":239,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":240,"author":{"gitId":"DeltonCheng"},"content":" public Task stringToTask(String data) {","lastModifiedDate":"2023-08-31"},{"lineNumber":241,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":242,"author":{"gitId":"DeltonCheng"},"content":" String[] parts \u003d data.split(\" \", 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":243,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":244,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":245,"author":{"gitId":"DeltonCheng"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":246,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":247,"author":{"gitId":"DeltonCheng"},"content":" boolean mark \u003d parts[1] \u003d\u003d \"X\";","lastModifiedDate":"2023-08-31"},{"lineNumber":248,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":249,"author":{"gitId":"DeltonCheng"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":250,"author":{"gitId":"DeltonCheng"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":251,"author":{"gitId":"DeltonCheng"},"content":" Todo t \u003d new Todo(parts[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":252,"author":{"gitId":"DeltonCheng"},"content":" t.isComplete \u003d mark;","lastModifiedDate":"2023-08-31"},{"lineNumber":253,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(t.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":254,"author":{"gitId":"DeltonCheng"},"content":" return t;","lastModifiedDate":"2023-08-31"},{"lineNumber":255,"author":{"gitId":"DeltonCheng"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":256,"author":{"gitId":"DeltonCheng"},"content":" Deadline d \u003d new Deadline(parts[2], parts[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":257,"author":{"gitId":"DeltonCheng"},"content":" d.isComplete \u003d mark;","lastModifiedDate":"2023-08-31"},{"lineNumber":258,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(d.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":259,"author":{"gitId":"DeltonCheng"},"content":" return d;","lastModifiedDate":"2023-08-31"},{"lineNumber":260,"author":{"gitId":"DeltonCheng"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":261,"author":{"gitId":"DeltonCheng"},"content":" Event e \u003d new Event(parts[2], parts[3], parts[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":262,"author":{"gitId":"DeltonCheng"},"content":" e.isComplete \u003d mark;","lastModifiedDate":"2023-08-31"},{"lineNumber":263,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":264,"author":{"gitId":"DeltonCheng"},"content":" return e;","lastModifiedDate":"2023-08-31"},{"lineNumber":265,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":266,"author":{"gitId":"DeltonCheng"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":267,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":268,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":269,"author":{"gitId":"DeltonCheng"},"content":" public void loadFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":270,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":271,"author":{"gitId":"DeltonCheng"},"content":" File chadFile \u003d new File(FILE_PATH_NAME);","lastModifiedDate":"2023-08-31"},{"lineNumber":272,"author":{"gitId":"DeltonCheng"},"content":" Scanner s \u003d new Scanner(chadFile);","lastModifiedDate":"2023-08-31"},{"lineNumber":273,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Here are the tasks from last time:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":274,"author":{"gitId":"DeltonCheng"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":275,"author":{"gitId":"DeltonCheng"},"content":" String nextTask \u003d s.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":276,"author":{"gitId":"DeltonCheng"},"content":" Task t \u003d stringToTask(nextTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":277,"author":{"gitId":"DeltonCheng"},"content":" if (t !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":278,"author":{"gitId":"DeltonCheng"},"content":" taskArrayList.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":279,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":280,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":281,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":282,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":283,"author":{"gitId":"DeltonCheng"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":284,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"File not found... Unable to load tasks\");","lastModifiedDate":"2023-08-31"},{"lineNumber":285,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":286,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":287,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":288,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":289,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":290,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":291,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":293,"author":{"gitId":"DeltonCheng"},"content":" Duke chad \u003d new Duke();","lastModifiedDate":"2023-08-23"},{"lineNumber":294,"author":{"gitId":"DeltonCheng"},"content":" chad.chadGreet();","lastModifiedDate":"2023-08-23"},{"lineNumber":295,"author":{"gitId":"DeltonCheng"},"content":" chad.makeNewDirectory();","lastModifiedDate":"2023-08-31"},{"lineNumber":296,"author":{"gitId":"DeltonCheng"},"content":" chad.makeNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":297,"author":{"gitId":"DeltonCheng"},"content":" chad.loadFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":298,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":299,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":300,"author":{"gitId":"DeltonCheng"},"content":" Scanner scanObj \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":301,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":302,"author":{"gitId":"DeltonCheng"},"content":" while(true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":303,"author":{"gitId":"DeltonCheng"},"content":" String input \u003d scanObj.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":304,"author":{"gitId":"DeltonCheng"},"content":" String[] inputArray \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":305,"author":{"gitId":"DeltonCheng"},"content":" if (inputArray[0].equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":306,"author":{"gitId":"DeltonCheng"},"content":" chad.chadBye();","lastModifiedDate":"2023-08-23"},{"lineNumber":307,"author":{"gitId":"DeltonCheng"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":308,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":309,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":310,"author":{"gitId":"DeltonCheng"},"content":" chad.chadListTask();","lastModifiedDate":"2023-08-23"},{"lineNumber":311,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":312,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":313,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":314,"author":{"gitId":"DeltonCheng"},"content":" Integer index \u003d Integer.valueOf(inputArray[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":315,"author":{"gitId":"DeltonCheng"},"content":" chad.chadMarkTask(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":316,"author":{"gitId":"DeltonCheng"},"content":" chad.writeFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":317,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":318,"author":{"gitId":"DeltonCheng"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":319,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"The task index is invalid! Try again!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":320,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":321,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":322,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":323,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":324,"author":{"gitId":"DeltonCheng"},"content":" Integer index \u003d Integer.valueOf(inputArray[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":325,"author":{"gitId":"DeltonCheng"},"content":" chad.chadUnmarkTask(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":326,"author":{"gitId":"DeltonCheng"},"content":" chad.writeFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":327,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":328,"author":{"gitId":"DeltonCheng"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":329,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"The task index is invalid! Try again!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":330,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":331,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":332,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":333,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":334,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":335,"author":{"gitId":"DeltonCheng"},"content":" if (inputArray.length \u003d\u003d 1 || inputArray[1].isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":336,"author":{"gitId":"DeltonCheng"},"content":" throw new DukeException(\"Hey! You forgot what you needed to do?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":337,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":338,"author":{"gitId":"DeltonCheng"},"content":" chad.chadAddList(new Todo(inputArray[1]));","lastModifiedDate":"2023-08-23"},{"lineNumber":339,"author":{"gitId":"DeltonCheng"},"content":" chad.writeFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":340,"author":{"gitId":"DeltonCheng"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":341,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(e.getMessage() + \"\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":342,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":343,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":344,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":345,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":346,"author":{"gitId":"DeltonCheng"},"content":" if (inputArray.length \u003c 2 || inputArray[1].isEmpty()){","lastModifiedDate":"2023-08-23"},{"lineNumber":347,"author":{"gitId":"DeltonCheng"},"content":" throw new DukeException(\"Hey! You forgot what you needed to do?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":348,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":349,"author":{"gitId":"DeltonCheng"},"content":" String[] details \u003d inputArray[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":350,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":351,"author":{"gitId":"DeltonCheng"},"content":" if (details.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":352,"author":{"gitId":"DeltonCheng"},"content":" throw new DukeException(\"Umm you forgot the deadline! Remember to use /by before the deadline!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":353,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":354,"author":{"gitId":"DeltonCheng"},"content":" chad.chadAddList(new Deadline(details[0], details[1]));","lastModifiedDate":"2023-08-23"},{"lineNumber":355,"author":{"gitId":"DeltonCheng"},"content":" chad.writeFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":356,"author":{"gitId":"DeltonCheng"},"content":" } catch (DukeException e){","lastModifiedDate":"2023-08-23"},{"lineNumber":357,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(e.getMessage() + \"\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":358,"author":{"gitId":"DeltonCheng"},"content":" } catch (DateTimeParseException e){","lastModifiedDate":"2023-08-31"},{"lineNumber":359,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Make sure the date format is: d MMM yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":360,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":361,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":362,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":363,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":364,"author":{"gitId":"DeltonCheng"},"content":" if (inputArray.length \u003c 2 || inputArray[1].isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":365,"author":{"gitId":"DeltonCheng"},"content":" throw new DukeException(\"Hey! You forgot what you needed to do?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":366,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":367,"author":{"gitId":"DeltonCheng"},"content":" String[] details \u003d inputArray[1].split(\" /from \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":368,"author":{"gitId":"DeltonCheng"},"content":" if (details.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":369,"author":{"gitId":"DeltonCheng"},"content":" throw new DukeException(\"Hey you are missing the start date! Remember to use /from before the deadline!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":370,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":371,"author":{"gitId":"DeltonCheng"},"content":" String[] timings \u003d details[1].split(\" /to \", 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":372,"author":{"gitId":"DeltonCheng"},"content":" if (timings.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":373,"author":{"gitId":"DeltonCheng"},"content":" throw new DukeException(\"The end date is missing! Do better! Use /to!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":374,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":375,"author":{"gitId":"DeltonCheng"},"content":" chad.chadAddList(new Event(details[0], timings[0], timings[1]));","lastModifiedDate":"2023-08-23"},{"lineNumber":376,"author":{"gitId":"DeltonCheng"},"content":" chad.writeFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":377,"author":{"gitId":"DeltonCheng"},"content":" } catch(DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":378,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(e.getMessage() + \"\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":379,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":380,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":381,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":382,"author":{"gitId":"DeltonCheng"},"content":" Integer index \u003d Integer.valueOf(inputArray[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":383,"author":{"gitId":"DeltonCheng"},"content":" chad.chadRemoveList(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":384,"author":{"gitId":"DeltonCheng"},"content":" chad.writeFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":385,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":386,"author":{"gitId":"DeltonCheng"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":387,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"The task index is invalid! Try again!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":388,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":389,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":390,"author":{"gitId":"DeltonCheng"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":391,"author":{"gitId":"DeltonCheng"},"content":" chad.chadOutput(\"Hmm? You are not making sense!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":392,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":393,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":394,"author":{"gitId":"DeltonCheng"},"content":" scanObj.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":395,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"DeltonCheng":392,"-":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DeltonCheng"},"content":"bye","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"DeltonCheng":1}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DeltonCheng"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"DeltonCheng"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"DeltonCheng"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"DeltonCheng"},"content":" public LocalDate date;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"DeltonCheng"},"content":" public Deadline(String name, String by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"DeltonCheng"},"content":" super(name);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"DeltonCheng"},"content":" this.date \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"d MMM yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"DeltonCheng"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"DeltonCheng"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"DeltonCheng"},"content":" String dateString \u003d this.date.format(DateTimeFormatter.ofPattern(\"dd.MM.yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"DeltonCheng"},"content":" return \"[D]\" + super.toString() + \" (by: \" + dateString + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"DeltonCheng"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"DeltonCheng"},"content":" public String taskToStringStore(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"DeltonCheng"},"content":" String dateString \u003d this.date.format(DateTimeFormatter.ofPattern(\"d MMM yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"DeltonCheng"},"content":" return \"D-\" + super.taskToStringStore(task) + dateString;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"DeltonCheng"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"DeltonCheng":24}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"DeltonCheng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"DeltonCheng"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"DeltonCheng"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"DeltonCheng"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"DeltonCheng"},"content":" private TaskList tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"DeltonCheng"},"content":" ArrayList\u003cTask\u003e taskArrayList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"DeltonCheng"},"content":" private Parser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"DeltonCheng"},"content":" private Duke() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"DeltonCheng"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"DeltonCheng"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"DeltonCheng"},"content":" this.tasklist \u003d new TaskList(taskArrayList);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"DeltonCheng"},"content":" this.parser \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"DeltonCheng"},"content":" public static class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"DeltonCheng"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"DeltonCheng"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"DeltonCheng"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"DeltonCheng"},"content":" ui.chadGreet();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"DeltonCheng"},"content":" storage.makeNewDirectory();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"DeltonCheng"},"content":" storage.makeNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"DeltonCheng"},"content":" storage.loadFile(taskArrayList);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"DeltonCheng"},"content":" parser \u003d new Parser(this, taskArrayList);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"DeltonCheng"},"content":" Scanner scanObj \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"DeltonCheng"},"content":" boolean check \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"DeltonCheng"},"content":" while (check) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"DeltonCheng"},"content":" String input \u003d scanObj.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"DeltonCheng"},"content":" String[] inputArray \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"DeltonCheng"},"content":" check \u003d parser.inputParse(inputArray);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"DeltonCheng"},"content":" scanObj.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"DeltonCheng"},"content":" public static void main (String[]args){","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"DeltonCheng"},"content":" Duke chad \u003d new Duke();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"DeltonCheng"},"content":" chad.run();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"DeltonCheng":50,"-":3}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DeltonCheng"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"DeltonCheng"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"DeltonCheng"},"content":"public class Event extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"DeltonCheng"},"content":" public LocalDate dateFrom;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"DeltonCheng"},"content":" public LocalDate dateTo;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"DeltonCheng"},"content":" public Event(String name, String from, String to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"DeltonCheng"},"content":" super(name);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"DeltonCheng"},"content":" this.dateFrom \u003d LocalDate.parse(from, DateTimeFormatter.ofPattern(\"d MMM yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"DeltonCheng"},"content":" this.dateTo \u003d LocalDate.parse(to, DateTimeFormatter.ofPattern(\"d MMM yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"DeltonCheng"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"DeltonCheng"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"DeltonCheng"},"content":" String dateFromString \u003d this.dateFrom.format(DateTimeFormatter.ofPattern(\"dd.MMM.yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"DeltonCheng"},"content":" String dateToString \u003d this.dateFrom.format(DateTimeFormatter.ofPattern(\"dd.MMM.yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"DeltonCheng"},"content":" return \"[E]\" + super.toString() + \" (from: \" + dateFromString + \" to: \" + dateToString + \" )\";","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"DeltonCheng"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"DeltonCheng"},"content":" public String taskToStringStore(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"DeltonCheng"},"content":" String dateFromString \u003d this.dateFrom.format(DateTimeFormatter.ofPattern(\"d MMM yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"DeltonCheng"},"content":" String dateToString \u003d this.dateFrom.format(DateTimeFormatter.ofPattern(\"d MMM yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"DeltonCheng"},"content":" return \"E-\" + super.taskToStringStore(task) + dateFromString + \"-\" + dateToString ;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"DeltonCheng"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"DeltonCheng":29}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DeltonCheng"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"DeltonCheng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"DeltonCheng"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"DeltonCheng"},"content":" private Duke chad;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"DeltonCheng"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"DeltonCheng"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"DeltonCheng"},"content":" private TaskList tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"DeltonCheng"},"content":" public Parser(Duke chad, ArrayList\u003cTask\u003e taskArrayList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"DeltonCheng"},"content":" this.chad \u003d chad;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"DeltonCheng"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"DeltonCheng"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"DeltonCheng"},"content":" this.tasklist \u003d new TaskList(taskArrayList);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"DeltonCheng"},"content":" public boolean inputParse(String[] inputArray) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"DeltonCheng"},"content":" if (inputArray[0].equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"DeltonCheng"},"content":" ui.chadBye();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"DeltonCheng"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"DeltonCheng"},"content":" tasklist.chadListTask();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"DeltonCheng"},"content":" Integer index \u003d Integer.valueOf(inputArray[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"DeltonCheng"},"content":" tasklist.chadMarkTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"DeltonCheng"},"content":" ui.chadMarkTaskOutput(chad.taskArrayList.get(index - 1).name,","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"DeltonCheng"},"content":" chad.taskArrayList.get(index - 1).getMark());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"DeltonCheng"},"content":" storage.writeFile(chad.taskArrayList);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"DeltonCheng"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"The task index is invalid! Try again!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"DeltonCheng"},"content":" Integer index \u003d Integer.valueOf(inputArray[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"DeltonCheng"},"content":" tasklist.chadUnmarkTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"DeltonCheng"},"content":" ui.chadUnmarkTaskOutput(chad.taskArrayList.get(index - 1).name,","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"DeltonCheng"},"content":" chad.taskArrayList.get(index - 1).getMark());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"DeltonCheng"},"content":" storage.writeFile(chad.taskArrayList);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"DeltonCheng"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"The task index is invalid! Try again!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"DeltonCheng"},"content":" if (inputArray.length \u003d\u003d 1 || inputArray[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"DeltonCheng"},"content":" throw new Duke.DukeException(\"Hey! You forgot what you needed to do?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"DeltonCheng"},"content":" Todo newTodo \u003d new Todo(inputArray[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"DeltonCheng"},"content":" tasklist.chadAddList(newTodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"DeltonCheng"},"content":" ui.chadAddListOutput(newTodo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"DeltonCheng"},"content":" storage.writeFile(chad.taskArrayList);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"DeltonCheng"},"content":" } catch (Duke.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(e.getMessage() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"DeltonCheng"},"content":" if (inputArray.length \u003c 2 || inputArray[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"DeltonCheng"},"content":" throw new Duke.DukeException(\"Hey! You forgot what you needed to do?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"DeltonCheng"},"content":" String[] details \u003d inputArray[1].split(\" /by \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"DeltonCheng"},"content":" if (details.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"DeltonCheng"},"content":" throw new Duke.DukeException(\"Umm you forgot the deadline! Remember to use /by before the deadline!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"DeltonCheng"},"content":" Deadline newDeadline \u003d new Deadline(details[0], details[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"DeltonCheng"},"content":" tasklist.chadAddList(newDeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"DeltonCheng"},"content":" ui.chadAddListOutput(newDeadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"DeltonCheng"},"content":" storage.writeFile(chad.taskArrayList);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"DeltonCheng"},"content":" } catch (Duke.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(e.getMessage() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"DeltonCheng"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Make sure the date format is: d MMM yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"DeltonCheng"},"content":" if (inputArray.length \u003c 2 || inputArray[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"DeltonCheng"},"content":" throw new Duke.DukeException(\"Hey! You forgot what you needed to do?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"DeltonCheng"},"content":" String[] details \u003d inputArray[1].split(\" /from \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"DeltonCheng"},"content":" if (details.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"DeltonCheng"},"content":" throw new Duke.DukeException(\"Hey you are missing the start date! Remember to use /from before the deadline!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"DeltonCheng"},"content":" String[] timings \u003d details[1].split(\" /to \", 0);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"DeltonCheng"},"content":" if (timings.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"DeltonCheng"},"content":" throw new Duke.DukeException(\"The end date is missing! Do better! Use /to!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(timings[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(timings[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"DeltonCheng"},"content":" Event newEvent \u003d new Event(details[0], timings[0], timings[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"DeltonCheng"},"content":" tasklist.chadAddList(newEvent);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"DeltonCheng"},"content":" ui.chadAddListOutput(newEvent.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"DeltonCheng"},"content":" storage.writeFile(chad.taskArrayList);","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"DeltonCheng"},"content":" } catch (Duke.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(e.getMessage() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"DeltonCheng"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Make sure the date format is: d MMM yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"DeltonCheng"},"content":" } else if (inputArray[0].equals(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"DeltonCheng"},"content":" Integer index \u003d Integer.valueOf(inputArray[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"DeltonCheng"},"content":" String name \u003d tasklist.chadRemoveList(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"DeltonCheng"},"content":" ui.chadRemoveOutput(name, chad.taskArrayList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"DeltonCheng"},"content":" storage.writeFile(chad.taskArrayList);","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"DeltonCheng"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"The task index is invalid! Try again!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"DeltonCheng"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"DeltonCheng"},"content":" ui.chadOutput(\"Hmm? You are not making sense!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"DeltonCheng"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"DeltonCheng"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"DeltonCheng":131}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DeltonCheng"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"DeltonCheng"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"DeltonCheng"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"DeltonCheng"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"DeltonCheng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"DeltonCheng"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"DeltonCheng"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"DeltonCheng"},"content":" private static final String FILE_PATH_NAME \u003d \"./data/chadBot.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"DeltonCheng"},"content":" public void makeNewDirectory() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"DeltonCheng"},"content":" File newDir \u003d new File(\"./data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"DeltonCheng"},"content":" if (newDir.mkdirs()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Data directory has been created successfully!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"DeltonCheng"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Data directory was not created! (There may already exists a data directory)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"DeltonCheng"},"content":" public void makeNewFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"DeltonCheng"},"content":" File newFile \u003d new File(FILE_PATH_NAME);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"DeltonCheng"},"content":" if (newFile.createNewFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"I have created this file for you: \" + newFile.getName());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"DeltonCheng"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"You already have the file... Stop wasting my time\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"DeltonCheng"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"An error has occurred when creating the file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"DeltonCheng"},"content":" public void printFile() throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"DeltonCheng"},"content":" File chadFile \u003d new File(FILE_PATH_NAME);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"DeltonCheng"},"content":" Scanner s \u003d new Scanner(chadFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"DeltonCheng"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"DeltonCheng"},"content":" public void writeFile(ArrayList\u003cTask\u003e t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"DeltonCheng"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH_NAME);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"DeltonCheng"},"content":" for (Task task : t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"DeltonCheng"},"content":" fw.write(task.taskToStringStore(task) + System.lineSeparator());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"DeltonCheng"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"DeltonCheng"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"There was an error writing the file: \" + e);;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"DeltonCheng"},"content":" public Task stringToTask(String data) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"DeltonCheng"},"content":" String[] parts \u003d data.split(\"-\", 0);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"DeltonCheng"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"DeltonCheng"},"content":" String marked \u003d parts[1].toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"DeltonCheng"},"content":" boolean mark \u003d marked.equals(\"X\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"DeltonCheng"},"content":" switch (type) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"DeltonCheng"},"content":" case \"T\":","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"DeltonCheng"},"content":" Todo t \u003d new Todo(parts[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"DeltonCheng"},"content":" t.isComplete \u003d mark;","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"DeltonCheng"},"content":" return t;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"DeltonCheng"},"content":" case \"D\":","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"DeltonCheng"},"content":" Deadline d \u003d new Deadline(parts[2], parts[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"DeltonCheng"},"content":" d.isComplete \u003d mark;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(d.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"DeltonCheng"},"content":" return d;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"DeltonCheng"},"content":" case \"E\":","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"DeltonCheng"},"content":" Event e \u003d new Event(parts[2], parts[3], parts[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"DeltonCheng"},"content":" e.isComplete \u003d mark;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"DeltonCheng"},"content":" return e;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"DeltonCheng"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"DeltonCheng"},"content":" public void loadFile(ArrayList\u003cTask\u003e task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"DeltonCheng"},"content":" File chadFile \u003d new File(FILE_PATH_NAME);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"DeltonCheng"},"content":" Scanner s \u003d new Scanner(chadFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Here are the tasks from last time:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"DeltonCheng"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"DeltonCheng"},"content":" String nextTask \u003d s.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"DeltonCheng"},"content":" Task t \u003d stringToTask(nextTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"DeltonCheng"},"content":" if (t !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"DeltonCheng"},"content":" task.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"DeltonCheng"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"File not found... Unable to load tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"DeltonCheng"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"DeltonCheng":104}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DeltonCheng"},"content":"public class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"DeltonCheng"},"content":" public String name;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"DeltonCheng"},"content":" public boolean isComplete;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"DeltonCheng"},"content":" public Task(String name) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"DeltonCheng"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"DeltonCheng"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"DeltonCheng"},"content":" public String getMark() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"DeltonCheng"},"content":" return (isComplete ? \"X\" : \" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"DeltonCheng"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"DeltonCheng"},"content":" return \"[\" + getMark() + \"] \" + name;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"DeltonCheng"},"content":" public String taskToStringStore(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"DeltonCheng"},"content":" String isCompleteString \u003d (getMark() \u003d\u003d \"X\") ? \"X\" : \"O\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"DeltonCheng"},"content":" return isCompleteString + \"-\" + task.name + \"-\";","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"DeltonCheng"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"DeltonCheng":23}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DeltonCheng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"DeltonCheng"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"DeltonCheng"},"content":" private ArrayList\u003cTask\u003e taskArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"DeltonCheng"},"content":" String line \u003d \"~~*~~*~~*~~*~~*~~*~~*~~*~~*~~\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"DeltonCheng"},"content":" public TaskList(ArrayList\u003cTask\u003e taskArrayList){","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"DeltonCheng"},"content":" this.taskArrayList \u003d taskArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"DeltonCheng"},"content":" public void chadAddList(Task input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"DeltonCheng"},"content":" taskArrayList.add(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"DeltonCheng"},"content":" public String chadRemoveList(int index){","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"DeltonCheng"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"DeltonCheng"},"content":" Task removed \u003d taskArrayList.remove(index - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"DeltonCheng"},"content":" return removed.name;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"DeltonCheng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Invalid task index! Try again!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"DeltonCheng"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"DeltonCheng"},"content":" public void chadListTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"DeltonCheng"},"content":" if (taskArrayList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Your task list is EMPTY!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"DeltonCheng"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Your outstanding tasks are...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"DeltonCheng"},"content":" for (int i \u003d 0; i \u003c taskArrayList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Task \" + (i + 1) + \") \" + taskArrayList.get(i)); //\u003c\u003c\u003c\u003c\u003c","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"\\n\" + \"Get to work NOW!\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"DeltonCheng"},"content":" public void chadMarkTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"DeltonCheng"},"content":" taskArrayList.get(index - 1).isComplete \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"DeltonCheng"},"content":" public void chadUnmarkTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"DeltonCheng"},"content":" taskArrayList.get(index - 1).isComplete \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"DeltonCheng"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"DeltonCheng":49}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DeltonCheng"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"DeltonCheng"},"content":" public Todo(String name) {","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"DeltonCheng"},"content":" super(name);","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"DeltonCheng"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"DeltonCheng"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"DeltonCheng"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"DeltonCheng"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"DeltonCheng"},"content":" public String taskToStringStore(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"DeltonCheng"},"content":" return \"T-\" + super.taskToStringStore(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"DeltonCheng"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"DeltonCheng":15}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DeltonCheng"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"DeltonCheng"},"content":" String line \u003d \"~~*~~*~~*~~*~~*~~*~~*~~*~~*~~\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"DeltonCheng"},"content":" public void chadGreet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Yo! This is CHADbot\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Need sum help?\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"DeltonCheng"},"content":" public void chadBye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Cya l8r~\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"DeltonCheng"},"content":" public void chadOutput(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(input + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"DeltonCheng"},"content":" public void chadAddListOutput(String input){","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(input + \" has been added to yo list!\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"DeltonCheng"},"content":" public void chadExceptionOutput(String input){","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(input + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"DeltonCheng"},"content":" public void chadRemoveOutput(String input, int size){","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Okay! I have removed this task :\\n\" + input);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"DeltonCheng"},"content":" if (size \u003d\u003d 0){","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Your list is currently empty! Good job :)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"DeltonCheng"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Your list is currently \" + size + \" long... Get back to work!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"DeltonCheng"},"content":" public void chadMarkTaskOutput(String task, String mark){","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Good job! Task fulfilled!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(task + \" [\" + mark + \"]\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"DeltonCheng"},"content":" public void chadUnmarkTaskOutput(String task, String mark){","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(\"Boooo! Task is not done!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(task + \" [\" + mark + \"]\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"DeltonCheng"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"DeltonCheng"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"DeltonCheng"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"DeltonCheng"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"DeltonCheng":58}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DeltonCheng"},"content":"bye","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"DeltonCheng":1}}] diff --git a/DeltonCheng_ip_master/commits.json b/DeltonCheng_ip_master/commits.json index a840b375..a5099715 100644 --- a/DeltonCheng_ip_master/commits.json +++ b/DeltonCheng_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"DeltonCheng":[{"date":"2023-08-23","commitResults":[{"hash":"1e1e8b43d4549fb988b26d667e3b5aba4251362d","isMergeCommit":false,"messageTitle":"test 1 commit level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"dee5842fc15a7e275b9dd851c6261f1fba85cf0f","isMergeCommit":false,"messageTitle":"Level-1 Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":7}}},{"hash":"85aa774d1907edb91cdfdff4b2e9204aa7d0ba9a","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}},{"hash":"2d0291e796a98d4bd7d31c9c6c7f92e5655a2f66","isMergeCommit":false,"messageTitle":"Level-3 Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"70a9652abd152fd72cc3c1839971fdeb48410b47","isMergeCommit":false,"messageTitle":"Level-4 ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":8}}},{"hash":"6e080d31275a931e825c4b501bccab46eacf0f21","isMergeCommit":false,"messageTitle":"Level-5 Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":17}}},{"hash":"964e950a549a02631fec763c267cda27d66911a8","isMergeCommit":false,"messageTitle":"Level-6 Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":8}}}]},{"date":"2023-08-26","commitResults":[{"hash":"914e8120622c5fa4de941defd13343e1c3a9eb90","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"2c95477043b864d84a64b175e4fb3d69830da7be","isMergeCommit":false,"messageTitle":"Level-7 Save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":10}}},{"hash":"2a4c9e4a37a001bf22a9912f1404c9a3944bde15","isMergeCommit":false,"messageTitle":"Level-8 Date and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}}]}]},"authorFileTypeContributionMap":{"DeltonCheng":{"java":392,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":1}},"authorContributionVariance":{"DeltonCheng":9915.961},"authorDisplayNameMap":{"DeltonCheng":"CS2103T-W11-3 DELT.. ZHI"}} +{"authorDailyContributionsMap":{"DeltonCheng":[{"date":"2023-08-23","commitResults":[{"hash":"1e1e8b43d4549fb988b26d667e3b5aba4251362d","isMergeCommit":false,"messageTitle":"test 1 commit level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"dee5842fc15a7e275b9dd851c6261f1fba85cf0f","isMergeCommit":false,"messageTitle":"Level-1 Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":7}}},{"hash":"85aa774d1907edb91cdfdff4b2e9204aa7d0ba9a","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}},{"hash":"2d0291e796a98d4bd7d31c9c6c7f92e5655a2f66","isMergeCommit":false,"messageTitle":"Level-3 Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"70a9652abd152fd72cc3c1839971fdeb48410b47","isMergeCommit":false,"messageTitle":"Level-4 ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":8}}},{"hash":"6e080d31275a931e825c4b501bccab46eacf0f21","isMergeCommit":false,"messageTitle":"Level-5 Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":17}}},{"hash":"964e950a549a02631fec763c267cda27d66911a8","isMergeCommit":false,"messageTitle":"Level-6 Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":8}}}]},{"date":"2023-08-26","commitResults":[{"hash":"914e8120622c5fa4de941defd13343e1c3a9eb90","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"2c95477043b864d84a64b175e4fb3d69830da7be","isMergeCommit":false,"messageTitle":"Level-7 Save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":10}}},{"hash":"2a4c9e4a37a001bf22a9912f1404c9a3944bde15","isMergeCommit":false,"messageTitle":"Level-8 Date and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}}]},{"date":"2023-09-01","commitResults":[{"hash":"063a6e60ecf698e71b6e25b684b2d2c8347d5352","isMergeCommit":false,"messageTitle":"A-More OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":469,"deletions":371}}},{"hash":"06e79bc7f429711c578606a87ec6116a5d1790a5","isMergeCommit":false,"messageTitle":"A-More OOP - some cleaning","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":9}}}]}]},"authorFileTypeContributionMap":{"DeltonCheng":{"java":483,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":1}},"authorContributionVariance":{"DeltonCheng":50136.51},"authorDisplayNameMap":{"DeltonCheng":"CS2103T-W11-3 DELT.. ZHI"}} diff --git a/Gabriel4357_ip_master/authorship.json b/Gabriel4357_ip_master/authorship.json index 86360361..1d69df6a 100644 --- a/Gabriel4357_ip_master/authorship.json +++ b/Gabriel4357_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Gabriel4357":1,"-":41}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":" * A Task which has a description and a deadline.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":" * The deadline is of type LocalDateTime and is used to specify when the Task is due.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" * Has a tag D.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" * Constructs a Deadline with description and deadline.","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" * @param deadline The date and time when the task is due.","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" this.tag \u003d Tag.D;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" * Changes the format to be more readable.","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" * The initial format of LocalDateTime is YYYY-MM-DDTHH:MM:SS.","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" * This is turned into Month Day Year, Time, which increases","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" * its readability.","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" * @param deadline The date and time when the task is due.","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" * @return Newly formatted LocalDateTime.","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" public String changeFormat(LocalDateTime deadline) {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" return deadline.getMonth().toString() + \" \" + deadline.getDayOfMonth() + \" \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":" deadline.getYear() + \", \" + deadline.toLocalTime();","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" * @inheritDoc","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" public String toString(){","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" return String.format(\"%s (by: %s)\", description, changeFormat(deadline));","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gabriel4357":50}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":" * The Personal Assistant that keeps a todo list for the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":" * Users can input multiple commands to use this personal assistant.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" * Different tasks can be input and stored into the list. This includes","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" * Todos, Deadlines and Events. Tasks can be marked and unmarked to","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" * indicate completion of such tasks.","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" private Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" private UI ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" private Parser parser;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" ui \u003d new UI(\"Alfred\");","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" Storage.preloadFromFile(tasks);","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" public void run() {","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" ui.welcomeMessage();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" String command \u003d ui.readCommand();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" parser.parse(command, ui, tasks, storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(e.message);","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":" Duke duke \u003d new Duke(\"src/main/java/duke/data/duke.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":" duke.run();","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":54,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Gabriel4357":54,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":" protected String message;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":" public DukeException(String error){","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":" this.message \u003d error;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" return this.message;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gabriel4357":17}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":" * A Task which has a description, when it starts and when it ends.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":" * The start and end is of type LocalDateTime and is used to specify when the Task begins and finishes.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" * Has a tag E.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" * Constructs an Event with description, start and end.","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" * @param start The date and time when the event starts.","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" * @param end The date and time when the event ends.","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end){","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" this.tag \u003d Tag.E;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" * Changes the format to be more readable.","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" * The initial format of LocalDateTime is YYYY-MM-DDTHH:MM:SS.","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" * This is turned into Month Day Year, Time, which increases","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" * its readability.","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" * @param date The date and time to format.","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" * @return Newly formatted LocalDateTime.","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" public String changeFormat(LocalDateTime date){","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":" return date.getMonth().toString() + \" \" + date.getDayOfMonth() + \" \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" date.getYear() + \", \" + date.toLocalTime();","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" * @inheritDoc","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" public String toString(){","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" return String.format(\"%s (from: %s to: %s)\", description, changeFormat(start),","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":" changeFormat(end));","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gabriel4357":53}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" public static void parse(String text, UI ui, TaskList list, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" if (text.length() \u003e 3 \u0026\u0026 text.substring(0, 4).equals(\"list\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" if (list.get(i) \u003d\u003d null) {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"%d. [%s] [%s] %s\", i + 1, list.get(i).tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" list.get(i).getStatusIcon(), list.get(i)));","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" storage.appendToFile(text + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" int numToUnmark \u003d Integer.parseInt(splitText[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToUnmark).markAsIncomplete();","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Alright! I\u0027ll uncheck this task for you: \");","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", list.get(numToUnmark).tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToUnmark).getStatusIcon(), list.get(numToUnmark)));","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" storage.appendToFile(text + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" int numToMark \u003d Integer.parseInt(splitText[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToMark).markAsComplete();","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Alright! I\u0027ll check this task as complete for you: \");","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", list.get(numToMark).tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToMark).getStatusIcon(), list.get(numToMark)));","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.equals(\"bye\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Goodbye. Hope to be of service again soon!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"Gabriel4357"},"content":" String description \u003d text.substring(4);","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Gabriel4357"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise, sir. \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"Gabriel4357"},"content":" \"But the description of todo cannot be empty\");","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"Gabriel4357"},"content":" storage.appendToFile( text + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"Gabriel4357"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"Gabriel4357"},"content":" Todo todo \u003d new Todo(description.trim());","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"Gabriel4357"},"content":" list.add(todo);","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Noted Sir. I\u0027ve added this task to your list: \");","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", todo.tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"Gabriel4357"},"content":" todo.getStatusIcon(), todo.toString()));","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"As of now, you have %d tasks on the agenda.\",","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"Gabriel4357"},"content":" list.size()));","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\"/\", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"Gabriel4357"},"content":" String description \u003d splitText[0].substring(8);","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"Gabriel4357"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise, sir. \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"Gabriel4357"},"content":" \"But the description and deadline cannot be empty\");","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"Gabriel4357"},"content":" String deadlineText \u003d splitText[1].substring(3);","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"Gabriel4357"},"content":" try{","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(deadlineText);","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"Gabriel4357"},"content":" Deadline dl \u003d new Deadline(description.trim(), deadline);","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"Gabriel4357"},"content":" list.add(dl);","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Noted Sir. I\u0027ve added this task to your list: \");","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", dl.tag, dl.getStatusIcon(),","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"Gabriel4357"},"content":" dl.toString()));","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"As of now, you have %d tasks on the agenda.\",","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"Gabriel4357"},"content":" list.size()));","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"Gabriel4357"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"Invalid Date Format: should be YYYY-MM-DDTHH:MM:SS. \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"Gabriel4357"},"content":" \"Example: 2023-12-12T06:30:00\");","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"Gabriel4357"},"content":" } try {","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"Gabriel4357"},"content":" storage.appendToFile( text + \"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"Gabriel4357"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"event\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":115,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":116,"author":{"gitId":"Gabriel4357"},"content":" String description \u003d splitText[0].substring(5);","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"Gabriel4357"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise, sir. \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"Gabriel4357"},"content":" \"But the description, start and end cannot be empty\");","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"Gabriel4357"},"content":" String startText \u003d splitText[1].trim().substring(5);","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"Gabriel4357"},"content":" String endText \u003d splitText[2].trim().substring(3);","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startText);","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endText);","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"Gabriel4357"},"content":" Event event \u003d new Event(description.trim(), start, end);","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"Gabriel4357"},"content":" list.add(event);","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Noted Sir. I\u0027ve added this task to your list: \");","lastModifiedDate":"2023-08-29"},{"lineNumber":133,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", event.tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":134,"author":{"gitId":"Gabriel4357"},"content":" event.getStatusIcon(),","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"Gabriel4357"},"content":" event.toString()));","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"As of now, you have %d tasks on the agenda.\",","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"Gabriel4357"},"content":" list.size()));","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"Gabriel4357"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"Invalid Date Format: should be YYYY-MM-DDTHH:MM:SS. \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":141,"author":{"gitId":"Gabriel4357"},"content":" \"Example: 2023-12-12T06:30:00\");","lastModifiedDate":"2023-08-28"},{"lineNumber":142,"author":{"gitId":"Gabriel4357"},"content":" } try {","lastModifiedDate":"2023-08-29"},{"lineNumber":143,"author":{"gitId":"Gabriel4357"},"content":" storage.appendToFile( text + \"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":144,"author":{"gitId":"Gabriel4357"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":145,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":146,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":147,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":148,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":149,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":150,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":151,"author":{"gitId":"Gabriel4357"},"content":" storage.appendToFile( text + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":152,"author":{"gitId":"Gabriel4357"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":154,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":155,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"Gabriel4357"},"content":" int numToDelete \u003d Integer.parseInt(splitText[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":157,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":158,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":159,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Alright Sir, I have removed this task from the list for you.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":160,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", list.get(numToDelete).tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":161,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToDelete).getStatusIcon(), list.get(numToDelete).toString()));","lastModifiedDate":"2023-08-28"},{"lineNumber":162,"author":{"gitId":"Gabriel4357"},"content":" list.remove(numToDelete);","lastModifiedDate":"2023-08-28"},{"lineNumber":163,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"Now you have %d tasks left.\", list.size()));","lastModifiedDate":"2023-08-29"},{"lineNumber":164,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"find\")){","lastModifiedDate":"2023-08-29"},{"lineNumber":165,"author":{"gitId":"Gabriel4357"},"content":" String search \u003d text.substring(5);","lastModifiedDate":"2023-08-29"},{"lineNumber":166,"author":{"gitId":"Gabriel4357"},"content":" if (search.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":167,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise, sir. \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":168,"author":{"gitId":"Gabriel4357"},"content":" \"But the description of todo cannot be empty\");","lastModifiedDate":"2023-08-29"},{"lineNumber":169,"author":{"gitId":"Gabriel4357"},"content":" } else if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-29"},{"lineNumber":170,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise, sir.\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":171,"author":{"gitId":"Gabriel4357"},"content":" \"But your list is empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":172,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":173,"author":{"gitId":"Gabriel4357"},"content":" boolean hasSearch \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":174,"author":{"gitId":"Gabriel4357"},"content":" boolean isFirst \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":175,"author":{"gitId":"Gabriel4357"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-29"},{"lineNumber":176,"author":{"gitId":"Gabriel4357"},"content":" if (list.get(i).toString().contains(search)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":177,"author":{"gitId":"Gabriel4357"},"content":" hasSearch \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":178,"author":{"gitId":"Gabriel4357"},"content":" if (hasSearch \u003d\u003d true \u0026\u0026 isFirst \u003d\u003d true) {","lastModifiedDate":"2023-08-29"},{"lineNumber":179,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-29"},{"lineNumber":180,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-29"},{"lineNumber":181,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", list.get(i).tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":182,"author":{"gitId":"Gabriel4357"},"content":" list.get(i).getStatusIcon(), list.get(i).toString()));","lastModifiedDate":"2023-08-29"},{"lineNumber":183,"author":{"gitId":"Gabriel4357"},"content":" isFirst \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":184,"author":{"gitId":"Gabriel4357"},"content":" } else if (hasSearch \u003d\u003d true \u0026\u0026 isFirst \u003d\u003d false) {","lastModifiedDate":"2023-08-29"},{"lineNumber":185,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", list.get(i).tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":186,"author":{"gitId":"Gabriel4357"},"content":" list.get(i).getStatusIcon(), list.get(i).toString()));","lastModifiedDate":"2023-08-29"},{"lineNumber":187,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":188,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":189,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":190,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":191,"author":{"gitId":"Gabriel4357"},"content":" if (hasSearch \u003d\u003d false) {","lastModifiedDate":"2023-08-29"},{"lineNumber":192,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise sir.\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":193,"author":{"gitId":"Gabriel4357"},"content":" \"But \" + search + \" cannot be found in your list.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":194,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":195,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-29"},{"lineNumber":196,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":197,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":198,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":199,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise, sir. But I do not understand what you mean.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":200,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":201,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":202,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":203,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":204,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":205,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Gabriel4357":205}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":"public class Storage {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" private static String filePath;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" public Storage(String filePath){","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" Storage.filePath \u003d filePath;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" public static void appendToFile(String textToAppend) throws IOException {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" FileWriter fw \u003d new FileWriter(Storage.filePath, true); // create a FileWriter in append mode","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" fw.write(textToAppend);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" public static void preloadFromFile(TaskList list) {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" File f \u003d new File(\"src/main/java/duke/data/duke.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" Scanner fileScanner \u003d new Scanner(f);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" String text \u003d fileScanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" if (text.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" int numToUnmark \u003d Integer.parseInt(splitText[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToUnmark).markAsIncomplete();","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" continue;","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" int numToMark \u003d Integer.parseInt(splitText[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToMark).markAsComplete();","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" continue;","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" String description \u003d text.substring(4);","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":" continue;","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":" Todo todo \u003d new Todo(description.trim());","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" list.add(todo);","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\"/\", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" String description \u003d splitText[0].substring(8);","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" String deadlineText \u003d splitText[1].substring(3);","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(deadlineText);","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":" Deadline dl \u003d new Deadline(description.trim(), deadline);","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":" list.add(dl);","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"event\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\"/\", 3);","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Gabriel4357"},"content":" String description \u003d splitText[0].substring(5);","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Gabriel4357"},"content":" String startText \u003d splitText[1].trim().substring(5);","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Gabriel4357"},"content":" String endText \u003d splitText[2].trim().substring(3);","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startText);","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endText);","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"Gabriel4357"},"content":" Event event \u003d new Event(description.trim(), start, end);","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"Gabriel4357"},"content":" list.add(event);","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"Gabriel4357"},"content":" int numToDelete \u003d Integer.parseInt(splitText[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"Gabriel4357"},"content":" list.remove(numToDelete);","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"Gabriel4357"},"content":" continue;","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"Gabriel4357"},"content":" } catch(FileNotFoundException e){","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(\"File not found!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Gabriel4357":75}},{"path":"src/main/java/duke/Tag.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"public enum Tag {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":" T,D,E;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gabriel4357":5}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":" * Represents the items that need to be completed by the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":" protected Tag tag;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" protected boolean isCompleted;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" * Constructs a Task with a short description of the task at hand.","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" * It starts of with it not being completed as how it should be.","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" * @param description A name/short summary of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" * Returns the status of a task.","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" * If X is returned, the task is completed.","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" * If it is empty, the task is incomplete.","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" * @return The icon to indicate if the task is complete or not.","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" return (isCompleted? \"X\" : \" \");","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" * Marks the task as complete.","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" * Toggles the isCompleted field to true.","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" public void markAsComplete() {","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" * Marks the task as incomplete.","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" * Toggles the isCompleted field to false.","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" public void markAsIncomplete() {","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":" * @inheritDoc","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"Gabriel4357"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"Gabriel4357"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"Gabriel4357"},"content":" return description;","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Gabriel4357":58}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.sql.Array;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":" * A list containing items of type Task.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" * Tasks include Todo, Deadline and Event.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" * Helps to add,remove and contain tasks.","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":"public class TaskList extends ArrayList\u003cTask\u003e {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Gabriel4357":13}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":" * A Task which has only a description.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":" * Has a tag T.","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" * Constructs a Todo with description.","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" this.tag \u003d Tag.T;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" public String toString(){","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" return this.description;","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gabriel4357":25}},{"path":"src/main/java/duke/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":" * This class is in charge of the user interface.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":" * It is in charge responding to the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":"public class UI {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" private static String name;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" * Constructs a UI which has a name.","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" * @param name The name of the assistant.","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" public UI(String name){","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" UI.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" * Prints a long line.","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" * This acts as a separator between commands typed in by the user","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" * and responses from the assistant bot.","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" public static void printline() {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" * Prints a welcome message.","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" * This is the first message the user will receive upon","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" * using the program.","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" public void welcomeMessage() {","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(String.format(\"Hello I\u0027m %s, your personal assistant.\", UI.name));","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(\"What can I do for you today, sir?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":" printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" * Reads the input from the user and saves it as a string.","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" * @return The command keyed in by the user that will be passed","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" * into the parser.","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":" Scanner scanIn \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":" String text \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":" return text;","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"Gabriel4357"},"content":" * Sends a message to the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"Gabriel4357"},"content":" * Based on the parameter, a message will be","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"Gabriel4357"},"content":" * sent to the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"Gabriel4357"},"content":" * @param message The message that it to be sent to the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"Gabriel4357"},"content":" public void sendMessage(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Gabriel4357":66}},{"path":"src/main/java/duke/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"todo dance","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"todo eat","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"todo sleep","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"todo sleeping","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"mark 4","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"todo abc","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Gabriel4357":6}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" public void wrongDateDeadLine() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" Parser.parse(\"deadline dance /by 12-12-2001-T0800\", new UI(\"Alfred\"), new TaskList(),","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" new Storage(\"src/main/java/duke/data/duke.txt\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\"Invalid Date Format: should be YYYY-MM-DDTHH:MM:SS. \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" \"Example: 2023-12-12T06:30:00\", e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" public void correctDateDeadLine() throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" Parser.parse(\"deadline dance /by 2001-12-12T09:00:00\", new UI(\"Alfred\"), tasks ,","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" new Storage(\"src/main/java/duke/data/duke.txt\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\"dance (by: DECEMBER 12 2001, 09:00)\", tasks.get(tasks.size() - 1).toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" public void wrongCommand() {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" String wrongCommand \u003d \"jhfjd\";","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" Parser.parse(wrongCommand, new UI(\"John\"), new TaskList(),","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" new Storage(\"src/main/java/duke/data/duke.txt\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" } catch (DukeException e){","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\"I apologise, sir. But I do not understand what you mean.\", e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":" public void addEmptyTodoDescription(){","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" Parser.parse(\"todo\", new UI(\"John\"), new TaskList(),","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" new Storage(\"src/main/java/duke/data/duke.txt\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" } catch (DukeException e){","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\"I apologise, sir. \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" \"But the description of todo cannot be empty\", e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":" public void addEmptyDeadLineDescription() {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"Gabriel4357"},"content":" Parser.parse(\"deadline\", new UI(\"John\"), new TaskList(),","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"Gabriel4357"},"content":" new Storage(\"src/main/java/duke/data/duke.txt\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"Gabriel4357"},"content":" } catch (DukeException e){","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\"I apologise, sir. \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"Gabriel4357"},"content":" \"But the description and deadline cannot be empty\", e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Gabriel4357":62}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" public void adderTest() {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" TaskList taskListTest \u003d new TaskList();","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" Todo todo \u003d new Todo(\"CS2103T homework\");","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime date \u003d LocalDateTime.parse(\"2023-12-12T12:00\");","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime start \u003d LocalDateTime.parse(\"2024-01-01T12:00\");","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime end \u003d LocalDateTime.parse(\"2024-01-01T14:00\");","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" Deadline deadline \u003d new Deadline(\"CS2100 Quiz\", date);","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" Event event \u003d new Event(\"CS2101 Presentation\", start, end );","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" taskListTest.add(todo);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" taskListTest.add(deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" taskListTest.add(event);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(taskListTest.get(0), todo);","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(taskListTest.get(1), deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(taskListTest.get(2), event);","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" public void deleteTest() {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" TaskList taskListTest \u003d new TaskList();","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" Todo todo \u003d new Todo(\"CS2103T homework\");","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" taskListTest.add(todo);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(true, taskListTest.contains(todo));","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" taskListTest.remove(todo);","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(false, taskListTest.contains(todo));","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Gabriel4357":37}},{"path":"src/test/java/duke/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"public class TaskTest {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" public void markAsCompleteTest(){","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" Todo todo \u003d new Todo(\"Math homework\");","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" todo.markAsComplete();","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\"X\", todo.getStatusIcon());","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" public void markAsIncompleteTest(){","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" Todo todo \u003d new Todo(\"Science homework\");","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" todo.markAsComplete();","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" todo.markAsIncomplete();","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\" \", todo.getStatusIcon());","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Gabriel4357":23}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"todo borrow book ","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"list ","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"mark 1 ","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"mark 2 ","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"unmark 1 ","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"unmark 2 ","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":"mark 3","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":"list ","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gabriel4357":10}},{"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":"Gabriel4357"},"content":"if ! javac -cp ../src/main/java/duke -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2023-08-22"},{"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":"Gabriel4357"},"content":"java -classpath ../bin duke/Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-22"},{"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":{"Gabriel4357":2,"-":36}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Gabriel4357":1,"-":41}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":" * A Task which has a description and a deadline.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":" * The deadline is of type LocalDateTime and is used to specify when the Task is due.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" * Has a tag D.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" * Constructs a Deadline with description and deadline.","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" * @param deadline The date and time when the task is due.","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" this.tag \u003d Tag.D;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" * Changes the format to be more readable.","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" * The initial format of LocalDateTime is YYYY-MM-DDTHH:MM:SS.","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" * This is turned into Month Day Year, Time, which increases","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" * its readability.","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" * @param deadline The date and time when the task is due.","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" * @return Newly formatted LocalDateTime.","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" public String changeFormat(LocalDateTime deadline) {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" return deadline.getMonth().toString() + \" \" + deadline.getDayOfMonth() + \" \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":" deadline.getYear() + \", \" + deadline.toLocalTime();","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" * @inheritDoc","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" public String toString(){","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" return String.format(\"%s (by: %s)\", description, changeFormat(deadline));","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gabriel4357":50}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":" * The Personal Assistant that keeps a todo list for the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":" * Users can input multiple commands to use this personal assistant.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" * Different tasks can be input and stored into the list. This includes","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" * Todos, Deadlines and Events. Tasks can be marked and unmarked to","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" * indicate completion of such tasks.","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" private Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" private UI ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" private Parser parser;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" ui \u003d new UI(\"Alfred\");","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" Storage.preloadFromFile(tasks);","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" public void run() {","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" ui.welcomeMessage();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" String command \u003d ui.readCommand();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" if (parser.parse(command, ui, tasks, storage) \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" };","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(e.message);","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":" Duke duke \u003d new Duke(\"src/main/java/duke/data/duke.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":" duke.run();","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":56,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Gabriel4357":56,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":" protected String message;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":" public DukeException(String error){","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":" this.message \u003d error;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" return this.message;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gabriel4357":17}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":" * A Task which has a description, when it starts and when it ends.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":" * The start and end is of type LocalDateTime and is used to specify when the Task begins and finishes.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" * Has a tag E.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" * Constructs an Event with description, start and end.","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" * @param start The date and time when the event starts.","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" * @param end The date and time when the event ends.","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end){","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" this.tag \u003d Tag.E;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" * Changes the format to be more readable.","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" * The initial format of LocalDateTime is YYYY-MM-DDTHH:MM:SS.","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" * This is turned into Month Day Year, Time, which increases","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" * its readability.","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" * @param date The date and time to format.","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" * @return Newly formatted LocalDateTime.","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" public String changeFormat(LocalDateTime date){","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":" return date.getMonth().toString() + \" \" + date.getDayOfMonth() + \" \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" date.getYear() + \", \" + date.toLocalTime();","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" * @inheritDoc","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" public String toString(){","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" return String.format(\"%s (from: %s to: %s)\", description, changeFormat(start),","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":" changeFormat(end));","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gabriel4357":53}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" public static int parse(String text, UI ui, TaskList list, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" if (text.length() \u003e 3 \u0026\u0026 text.substring(0, 4).equals(\"list\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" if (list.get(i) \u003d\u003d null) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"%d. [%s] [%s] %s\", i + 1, list.get(i).tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" list.get(i).getStatusIcon(), list.get(i)));","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" storage.appendToFile(text + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" int numToUnmark \u003d Integer.parseInt(splitText[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToUnmark).markAsIncomplete();","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Alright! I\u0027ll uncheck this task for you: \");","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", list.get(numToUnmark).tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToUnmark).getStatusIcon(), list.get(numToUnmark)));","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" storage.appendToFile(text + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" int numToMark \u003d Integer.parseInt(splitText[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToMark).markAsComplete();","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Alright! I\u0027ll check this task as complete for you: \");","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", list.get(numToMark).tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToMark).getStatusIcon(), list.get(numToMark)));","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.equals(\"bye\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Goodbye. Hope to be of service again soon!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"Gabriel4357"},"content":" return -1;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"Gabriel4357"},"content":" String description \u003d text.substring(4);","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"Gabriel4357"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise, sir. \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"Gabriel4357"},"content":" \"But the description of todo cannot be empty\");","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"Gabriel4357"},"content":" storage.appendToFile(text + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"Gabriel4357"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"Gabriel4357"},"content":" Todo todo \u003d new Todo(description.trim());","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"Gabriel4357"},"content":" list.add(todo);","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Noted Sir. I\u0027ve added this task to your list: \");","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", todo.tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"Gabriel4357"},"content":" todo.getStatusIcon(), todo.toString()));","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"As of now, you have %d tasks on the agenda.\",","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"Gabriel4357"},"content":" list.size()));","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\"/\", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"Gabriel4357"},"content":" String description \u003d splitText[0].substring(8);","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"Gabriel4357"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise, sir. \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"Gabriel4357"},"content":" \"But the description and deadline cannot be empty\");","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"Gabriel4357"},"content":" String deadlineText \u003d splitText[1].substring(3);","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(deadlineText);","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"Gabriel4357"},"content":" Deadline dl \u003d new Deadline(description.trim(), deadline);","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"Gabriel4357"},"content":" list.add(dl);","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Noted Sir. I\u0027ve added this task to your list: \");","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", dl.tag, dl.getStatusIcon(),","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"Gabriel4357"},"content":" dl.toString()));","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"As of now, you have %d tasks on the agenda.\",","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"Gabriel4357"},"content":" list.size()));","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"Gabriel4357"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"Invalid Date Format: should be YYYY-MM-DDTHH:MM:SS. \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"Gabriel4357"},"content":" \"Example: 2023-12-12T06:30:00\");","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"Gabriel4357"},"content":" storage.appendToFile(text + \"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"Gabriel4357"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"event\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"Gabriel4357"},"content":" String description \u003d splitText[0].substring(5);","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"Gabriel4357"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise, sir. \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"Gabriel4357"},"content":" \"But the description, start and end cannot be empty\");","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"Gabriel4357"},"content":" String startText \u003d splitText[1].trim().substring(5);","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"Gabriel4357"},"content":" String endText \u003d splitText[2].trim().substring(3);","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startText);","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endText);","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"Gabriel4357"},"content":" Event event \u003d new Event(description.trim(), start, end);","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"Gabriel4357"},"content":" list.add(event);","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Noted Sir. I\u0027ve added this task to your list: \");","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", event.tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":138,"author":{"gitId":"Gabriel4357"},"content":" event.getStatusIcon(),","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"Gabriel4357"},"content":" event.toString()));","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"As of now, you have %d tasks on the agenda.\",","lastModifiedDate":"2023-08-29"},{"lineNumber":141,"author":{"gitId":"Gabriel4357"},"content":" list.size()));","lastModifiedDate":"2023-08-28"},{"lineNumber":142,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":143,"author":{"gitId":"Gabriel4357"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":144,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"Invalid Date Format: should be YYYY-MM-DDTHH:MM:SS. \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":145,"author":{"gitId":"Gabriel4357"},"content":" \"Example: 2023-12-12T06:30:00\");","lastModifiedDate":"2023-08-28"},{"lineNumber":146,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"Gabriel4357"},"content":" storage.appendToFile(text + \"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":149,"author":{"gitId":"Gabriel4357"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":150,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":151,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":152,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":154,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":155,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"Gabriel4357"},"content":" storage.appendToFile(text + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":157,"author":{"gitId":"Gabriel4357"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":158,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":159,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":160,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":161,"author":{"gitId":"Gabriel4357"},"content":" int numToDelete \u003d Integer.parseInt(splitText[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":162,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":163,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":164,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Alright Sir, I have removed this task from the list for you.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":165,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", list.get(numToDelete).tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":166,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToDelete).getStatusIcon(), list.get(numToDelete).toString()));","lastModifiedDate":"2023-08-28"},{"lineNumber":167,"author":{"gitId":"Gabriel4357"},"content":" list.remove(numToDelete);","lastModifiedDate":"2023-08-28"},{"lineNumber":168,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"Now you have %d tasks left.\", list.size()));","lastModifiedDate":"2023-08-29"},{"lineNumber":169,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"find\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":170,"author":{"gitId":"Gabriel4357"},"content":" String search \u003d text.substring(5);","lastModifiedDate":"2023-08-29"},{"lineNumber":171,"author":{"gitId":"Gabriel4357"},"content":" if (search.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":172,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise, sir. \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":173,"author":{"gitId":"Gabriel4357"},"content":" \"But the description of todo cannot be empty\");","lastModifiedDate":"2023-08-29"},{"lineNumber":174,"author":{"gitId":"Gabriel4357"},"content":" } else if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-29"},{"lineNumber":175,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise, sir.\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":176,"author":{"gitId":"Gabriel4357"},"content":" \"But your list is empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":177,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":178,"author":{"gitId":"Gabriel4357"},"content":" boolean hasSearch \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":179,"author":{"gitId":"Gabriel4357"},"content":" boolean isFirst \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":180,"author":{"gitId":"Gabriel4357"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-29"},{"lineNumber":181,"author":{"gitId":"Gabriel4357"},"content":" if (list.get(i).toString().contains(search)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":182,"author":{"gitId":"Gabriel4357"},"content":" hasSearch \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":183,"author":{"gitId":"Gabriel4357"},"content":" if (hasSearch \u003d\u003d true \u0026\u0026 isFirst \u003d\u003d true) {","lastModifiedDate":"2023-08-29"},{"lineNumber":184,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-29"},{"lineNumber":185,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-29"},{"lineNumber":186,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", list.get(i).tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":187,"author":{"gitId":"Gabriel4357"},"content":" list.get(i).getStatusIcon(), list.get(i).toString()));","lastModifiedDate":"2023-08-29"},{"lineNumber":188,"author":{"gitId":"Gabriel4357"},"content":" isFirst \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":189,"author":{"gitId":"Gabriel4357"},"content":" } else if (hasSearch \u003d\u003d true \u0026\u0026 isFirst \u003d\u003d false) {","lastModifiedDate":"2023-08-29"},{"lineNumber":190,"author":{"gitId":"Gabriel4357"},"content":" ui.sendMessage(String.format(\"\\t [%s] [%s] %s\", list.get(i).tag,","lastModifiedDate":"2023-08-29"},{"lineNumber":191,"author":{"gitId":"Gabriel4357"},"content":" list.get(i).getStatusIcon(), list.get(i).toString()));","lastModifiedDate":"2023-08-29"},{"lineNumber":192,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":193,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":194,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":195,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":196,"author":{"gitId":"Gabriel4357"},"content":" if (hasSearch \u003d\u003d false) {","lastModifiedDate":"2023-08-29"},{"lineNumber":197,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise sir.\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":198,"author":{"gitId":"Gabriel4357"},"content":" \"But \" + search + \" cannot be found in your list.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":199,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":200,"author":{"gitId":"Gabriel4357"},"content":" ui.printline();","lastModifiedDate":"2023-08-29"},{"lineNumber":201,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":202,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":203,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":204,"author":{"gitId":"Gabriel4357"},"content":" throw new DukeException(\"I apologise, sir. But I do not understand what you mean.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":205,"author":{"gitId":"Gabriel4357"},"content":" } return 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":207,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":208,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":209,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":210,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Gabriel4357":210}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":"public class Storage {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" private static String filePath;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" public Storage(String filePath){","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" Storage.filePath \u003d filePath;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" public static void appendToFile(String textToAppend) throws IOException {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" FileWriter fw \u003d new FileWriter(Storage.filePath, true); // create a FileWriter in append mode","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" fw.write(textToAppend);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" public static void preloadFromFile(TaskList list) {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" File f \u003d new File(\"src/main/java/duke/data/duke.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" Scanner fileScanner \u003d new Scanner(f);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" String text \u003d fileScanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" if (text.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" int numToUnmark \u003d Integer.parseInt(splitText[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToUnmark).markAsIncomplete();","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" continue;","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" int numToMark \u003d Integer.parseInt(splitText[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" list.get(numToMark).markAsComplete();","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" continue;","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" String description \u003d text.substring(4);","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":" continue;","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":" Todo todo \u003d new Todo(description.trim());","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" list.add(todo);","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\"/\", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" String description \u003d splitText[0].substring(8);","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" String deadlineText \u003d splitText[1].substring(3);","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(deadlineText);","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":" Deadline dl \u003d new Deadline(description.trim(), deadline);","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":" list.add(dl);","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"event\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\"/\", 3);","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Gabriel4357"},"content":" String description \u003d splitText[0].substring(5);","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Gabriel4357"},"content":" String startText \u003d splitText[1].trim().substring(5);","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Gabriel4357"},"content":" String endText \u003d splitText[2].trim().substring(3);","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startText);","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endText);","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"Gabriel4357"},"content":" Event event \u003d new Event(description.trim(), start, end);","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"Gabriel4357"},"content":" list.add(event);","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Gabriel4357"},"content":" } else if (text.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"Gabriel4357"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"Gabriel4357"},"content":" int numToDelete \u003d Integer.parseInt(splitText[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"Gabriel4357"},"content":" list.remove(numToDelete);","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"Gabriel4357"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"Gabriel4357"},"content":" continue;","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"Gabriel4357"},"content":" } catch(FileNotFoundException e){","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(\"File not found!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Gabriel4357":75}},{"path":"src/main/java/duke/Tag.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"public enum Tag {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":" T,D,E;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gabriel4357":5}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":" * Represents the items that need to be completed by the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":" protected Tag tag;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" protected boolean isCompleted;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" * Constructs a Task with a short description of the task at hand.","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" * It starts of with it not being completed as how it should be.","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" * @param description A name/short summary of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" * Returns the status of a task.","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" * If X is returned, the task is completed.","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" * If it is empty, the task is incomplete.","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" * @return The icon to indicate if the task is complete or not.","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" return (isCompleted? \"X\" : \" \");","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" * Marks the task as complete.","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" * Toggles the isCompleted field to true.","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" public void markAsComplete() {","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" * Marks the task as incomplete.","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" * Toggles the isCompleted field to false.","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" public void markAsIncomplete() {","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":" * @inheritDoc","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"Gabriel4357"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"Gabriel4357"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"Gabriel4357"},"content":" return description;","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Gabriel4357":58}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.sql.Array;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":" * A list containing items of type Task.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" * Tasks include Todo, Deadline and Event.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" * Helps to add,remove and contain tasks.","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":"public class TaskList extends ArrayList\u003cTask\u003e {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Gabriel4357":13}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":" * A Task which has only a description.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":" * Has a tag T.","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" * Constructs a Todo with description.","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" this.tag \u003d Tag.T;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" public String toString(){","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" return this.description;","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gabriel4357":25}},{"path":"src/main/java/duke/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":" * This class is in charge of the user interface.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":" * It is in charge responding to the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":"public class UI {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" private static String name;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" * Constructs a UI which has a name.","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" * @param name The name of the assistant.","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" public UI(String name){","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" UI.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" * Prints a long line.","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" * This acts as a separator between commands typed in by the user","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" * and responses from the assistant bot.","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" public static void printline() {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" * Prints a welcome message.","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" * This is the first message the user will receive upon","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" * using the program.","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" public void welcomeMessage() {","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(String.format(\"Hello I\u0027m %s, your personal assistant.\", UI.name));","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(\"What can I do for you today, sir?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":" printline();","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" * Reads the input from the user and saves it as a string.","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" * @return The command keyed in by the user that will be passed","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" * into the parser.","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":" Scanner scanIn \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":" String text \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":" return text;","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Gabriel4357"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"Gabriel4357"},"content":" * Sends a message to the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"Gabriel4357"},"content":" * Based on the parameter, a message will be","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"Gabriel4357"},"content":" * sent to the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"Gabriel4357"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"Gabriel4357"},"content":" * @param message The message that it to be sent to the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"Gabriel4357"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"Gabriel4357"},"content":" public void sendMessage(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"Gabriel4357"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Gabriel4357":66}},{"path":"src/main/java/duke/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"todo dance","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"todo eat","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"todo sleep","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"todo sleeping","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"mark 4","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"todo abc","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Gabriel4357":6}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" public void wrongDateDeadLine() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" Parser.parse(\"deadline dance /by 12-12-2001-T0800\", new UI(\"Alfred\"), new TaskList(),","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" new Storage(\"src/main/java/duke/data/duke.txt\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\"Invalid Date Format: should be YYYY-MM-DDTHH:MM:SS. \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" \"Example: 2023-12-12T06:30:00\", e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" public void correctDateDeadLine() throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" Parser.parse(\"deadline dance /by 2001-12-12T09:00:00\", new UI(\"Alfred\"), tasks ,","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" new Storage(\"src/main/java/duke/data/duke.txt\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\"dance (by: DECEMBER 12 2001, 09:00)\", tasks.get(tasks.size() - 1).toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" public void wrongCommand() {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" String wrongCommand \u003d \"jhfjd\";","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" Parser.parse(wrongCommand, new UI(\"John\"), new TaskList(),","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" new Storage(\"src/main/java/duke/data/duke.txt\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" } catch (DukeException e){","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\"I apologise, sir. But I do not understand what you mean.\", e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"Gabriel4357"},"content":" public void addEmptyTodoDescription(){","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Gabriel4357"},"content":" Parser.parse(\"todo\", new UI(\"John\"), new TaskList(),","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Gabriel4357"},"content":" new Storage(\"src/main/java/duke/data/duke.txt\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Gabriel4357"},"content":" } catch (DukeException e){","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\"I apologise, sir. \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"Gabriel4357"},"content":" \"But the description of todo cannot be empty\", e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"Gabriel4357"},"content":" public void addEmptyDeadLineDescription() {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"Gabriel4357"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"Gabriel4357"},"content":" Parser.parse(\"deadline\", new UI(\"John\"), new TaskList(),","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"Gabriel4357"},"content":" new Storage(\"src/main/java/duke/data/duke.txt\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"Gabriel4357"},"content":" } catch (DukeException e){","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\"I apologise, sir. \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"Gabriel4357"},"content":" \"But the description and deadline cannot be empty\", e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Gabriel4357":62}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" public void adderTest() {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" TaskList taskListTest \u003d new TaskList();","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":" Todo todo \u003d new Todo(\"CS2103T homework\");","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime date \u003d LocalDateTime.parse(\"2023-12-12T12:00\");","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime start \u003d LocalDateTime.parse(\"2024-01-01T12:00\");","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" LocalDateTime end \u003d LocalDateTime.parse(\"2024-01-01T14:00\");","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" Deadline deadline \u003d new Deadline(\"CS2100 Quiz\", date);","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" Event event \u003d new Event(\"CS2101 Presentation\", start, end );","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" taskListTest.add(todo);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" taskListTest.add(deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":" taskListTest.add(event);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(taskListTest.get(0), todo);","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(taskListTest.get(1), deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(taskListTest.get(2), event);","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Gabriel4357"},"content":" public void deleteTest() {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Gabriel4357"},"content":" TaskList taskListTest \u003d new TaskList();","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"Gabriel4357"},"content":" Todo todo \u003d new Todo(\"CS2103T homework\");","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Gabriel4357"},"content":" taskListTest.add(todo);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(true, taskListTest.contains(todo));","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Gabriel4357"},"content":" taskListTest.remove(todo);","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(false, taskListTest.contains(todo));","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Gabriel4357":37}},{"path":"src/test/java/duke/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"public class TaskTest {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":" public void markAsCompleteTest(){","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Gabriel4357"},"content":" Todo todo \u003d new Todo(\"Math homework\");","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Gabriel4357"},"content":" todo.markAsComplete();","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\"X\", todo.getStatusIcon());","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Gabriel4357"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Gabriel4357"},"content":" @Test","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Gabriel4357"},"content":" public void markAsIncompleteTest(){","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Gabriel4357"},"content":" Todo todo \u003d new Todo(\"Science homework\");","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Gabriel4357"},"content":" todo.markAsComplete();","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Gabriel4357"},"content":" todo.markAsIncomplete();","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Gabriel4357"},"content":" assertEquals(\" \", todo.getStatusIcon());","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Gabriel4357"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Gabriel4357"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Gabriel4357":23}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Gabriel4357"},"content":"todo borrow book ","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gabriel4357"},"content":"list ","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gabriel4357"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gabriel4357"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gabriel4357"},"content":"mark 1 ","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Gabriel4357"},"content":"mark 2 ","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Gabriel4357"},"content":"unmark 1 ","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gabriel4357"},"content":"unmark 2 ","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gabriel4357"},"content":"mark 3","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Gabriel4357"},"content":"list ","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gabriel4357":10}},{"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":"Gabriel4357"},"content":"if ! javac -cp ../src/main/java/duke -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2023-08-22"},{"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":"Gabriel4357"},"content":"java -classpath ../bin duke/Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-22"},{"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":{"Gabriel4357":2,"-":36}}] diff --git a/Gabriel4357_ip_master/commits.json b/Gabriel4357_ip_master/commits.json index d28fcac8..4cddf921 100644 --- a/Gabriel4357_ip_master/commits.json +++ b/Gabriel4357_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Gabriel4357":[{"date":"2023-08-21","commitResults":[{"hash":"b46faf6e0d755b86dd1468d59ce8534ae83c6f42","isMergeCommit":false,"messageTitle":"changed name, and removed tag","messageBody":"","tags":["v0.1"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"f7403e4cde07bc0e34fa6b7edb057458767223e4","isMergeCommit":false,"messageTitle":"implement initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"f8f088e950953d45d101db5a259b55daa6c575be","isMergeCommit":false,"messageTitle":"improved skeletal version","messageBody":"","tags":["v1.0"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":3}}},{"hash":"beabc39662a0bc7c5a6c2177fbe6ebeff615f72d","isMergeCommit":false,"messageTitle":"customisation added","messageBody":"","tags":["v1.1"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"a3b4904f67c9ff976d555edb04eed39ea30ec697","isMergeCommit":false,"messageTitle":"use of formatted string","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"93625133452617cad66e0a2e1ad013df91c0ee8e","isMergeCommit":false,"messageTitle":"added an array and counter variable","messageBody":"","tags":["v2.0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":3}}},{"hash":"d8284cbba7af305b5297574b34a82298ee95432b","isMergeCommit":false,"messageTitle":"added useful methods","messageBody":"","tags":["v2.1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"e6a8d71cd3035d446176631c7c50d6900319729f","isMergeCommit":false,"messageTitle":"logic added","messageBody":"","tags":["v2.2","Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}},{"hash":"6732150c3fc208aec23ff144fbbc869c2f7ea677","isMergeCommit":false,"messageTitle":"added task class","messageBody":"","tags":["v3.0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"c50af9222b7e3c541d6540c7b11bbea901541ca2","isMergeCommit":false,"messageTitle":"duke package created","messageBody":"","tags":["v3.1"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"340a2408bbdc6db37f18b937abe6a7ee34062423","isMergeCommit":false,"messageTitle":"task class updated","messageBody":"","tags":["v3.2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"7c7d1cbe6cdc842525485a3d87226da84b8f7eb4","isMergeCommit":false,"messageTitle":"updated logic in duke","messageBody":"","tags":["v3.3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":32}}},{"hash":"a0d875fe607ccae2f1c23dea5c4141b1f5b41ae7","isMergeCommit":false,"messageTitle":"logic of mark and unmark added","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":3}}}]},{"date":"2023-08-22","commitResults":[{"hash":"74fa5e8841222c42ad21f872fc8186455805239e","isMergeCommit":false,"messageTitle":"new types of tasks added","messageBody":"","tags":["v4.0"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":0}}},{"hash":"346c8825e71896cc1e0feec9a6ac1dc4abaf96ad","isMergeCommit":false,"messageTitle":"logic of duke revamped","messageBody":"","tags":["v4.1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":14}}},{"hash":"8ba05dc972faa0f5171a394648d35bc186a9339a","isMergeCommit":false,"messageTitle":"todo logic ready","messageBody":"","tags":["v4.2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":14}}},{"hash":"8c518d1a6349ed95a727ee4b36981299afa4e698","isMergeCommit":false,"messageTitle":"deadline logic ready","messageBody":"","tags":["v4.3"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"238ac4abc741b1ecccf3930553b45927c2a7b372","isMergeCommit":false,"messageTitle":"event logic working","messageBody":"","tags":["v4.4"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":3}}},{"hash":"adaf0c87a46e4f272db2d5b9384eb927fb563981","isMergeCommit":false,"messageTitle":"tests set up","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"1826abb1452cd13a99957e2c5430c4c73e78ffc1","isMergeCommit":false,"messageTitle":"UI Test done","messageBody":"","tags":["v5.0","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":14,"deletions":8},"sh":{"insertions":1,"deletions":1}}},{"hash":"59499079b7d2861801dbce68c6b2ea72452f4ca5","isMergeCommit":false,"messageTitle":"clean up logic","messageBody":"","tags":["v5.1"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":105}}},{"hash":"21750337ed2e81907cc4712d683fdf4e890b63be","isMergeCommit":false,"messageTitle":"use arraylist now, and finish delete","messageBody":"","tags":["v6.0"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":16}}}]},{"date":"2023-08-23","commitResults":[{"hash":"ec5172a9c433e4f547752f92ad2a9c1eeccf133f","isMergeCommit":false,"messageTitle":"both errors added","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":15}}},{"hash":"8b0464c8bb104205e5ed1e40b4e0b3d1fde0df21","isMergeCommit":true,"messageTitle":"delete added","messageBody":"","tags":["v-6.1"],"fileTypesAndContributionMap":{}},{"hash":"ab93c40d7c0a5868a3768fd744fb2b92a1d30d5e","isMergeCommit":false,"messageTitle":"bugs fixed","messageBody":"","tags":["v6.2","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":34}}},{"hash":"15b523510fbaa2e98fb1e18fffb98a11b8edb123","isMergeCommit":false,"messageTitle":"final changes","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}}]},{"date":"2023-08-27","commitResults":[{"hash":"0a36aabbb47eca0cd0fb47798fa8ca635b73d3c8","isMergeCommit":false,"messageTitle":"Refactor the method name to printline()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":20}}}]},{"date":"2023-08-28","commitResults":[{"hash":"c70f969abb7577191a0e5936182c78352d0c5890","isMergeCommit":false,"messageTitle":"Use a file to track past data.","messageBody":"Cannot save a list of items.\n\nCan store past data is needed as a to-do application.\n\nLet\u0027s,\n*create a file that commands will be written to\n* read from that file and calls the commands at the start of each run\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":115,"deletions":30}}},{"hash":"14e527c106c86ba4c28f1d0d103c56239cd40631","isMergeCommit":false,"messageTitle":"Align code to match coding style","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":7}}},{"hash":"05f7b6c06f079e473112b312628c2a71838bb500","isMergeCommit":true,"messageTitle":"Fix merge conflict","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"6ede75c9da00fbde07f4a7c639a217d7cfd7e862","isMergeCommit":false,"messageTitle":"Introduce LocalTimeDate into the application","messageBody":"Event and Deadline class uses Strings as their parameters.\n\nUsing actual times will be more accurate to a todo application.\n\nLet\u0027s\n*change the strings into LocalTimeDates\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":44,"deletions":19}}},{"hash":"fc193cc33b264db66ed1e696182542947a5b6df8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"* branch-Level-8:\n Introduce LocalTimeDate into the application\n","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"e0f719e496f4c1d5597d9d22860516c62f753bdc","isMergeCommit":false,"messageTitle":"Remove counter","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":24}}},{"hash":"c7534cf69d2fad227e00aa8d46d09c48db643758","isMergeCommit":false,"messageTitle":"Change code to include even more OOP than before.","messageBody":"Let\u0027s\n*add ui, storage, parser, and tasklist as a means of abstraction\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":322,"deletions":238}}},{"hash":"d3dae88ba98032efb40f45967eb924158e955a52","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"* branch-A-MoreOOP:\n Change code to include even more OOP than before.\n Remove counter\n","fileTypesAndContributionMap":{}},{"hash":"70fa4e81c96cd868e5f49f596d17433642bac400","isMergeCommit":false,"messageTitle":"Touch up code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":13}}},{"hash":"43b20e8dc9398068bd4234b1d61d36b1cea9cf65","isMergeCommit":false,"messageTitle":"Add package \u0027duke\u0027","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"0d9f8f372b2003f2793e4b8a40bccb775edf0870","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"* branch-A-Packages:\n Add package \u0027duke\u0027\n","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"3be3950613ba6718edda97f66cd895ec16c57aae","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027","messageBody":"* commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027:\n Bump gradle and lib version\n Add Gradle support\n","fileTypesAndContributionMap":{}},{"hash":"e4c3245b328d01bb6b8dff455b0ae77a2378677d","isMergeCommit":false,"messageTitle":"Add Gradle to the working project.","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":1},"java":{"insertions":0,"deletions":1}}},{"hash":"06ea9ba06fb5902e8d4d36cc757906846ad3d81b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle-\u0027","messageBody":"* branch-A-Gradle-:\n Add Gradle to the working project.\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"96c4b597fd5e21b78510020dc58a9fb10800020c","isMergeCommit":false,"messageTitle":"Add more OOP into code.","messageBody":"UI does not handle all interactions with user.\n\nAbstracted out Parser sending messages to user and leaving it to\nUI to send the responses.\n\nLet\u0027s,\n*add a method sendMessage() in UI to handle the sending\nof messages to user.\n","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":29}}},{"hash":"21853fb0790925d1a1cddb015fd68526250028dd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"* branch-A-MoreOOP:\n Add more OOP into code.\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"06f0c9c18dcf2eb54e4a75966e7b48fb17e9a85f","isMergeCommit":false,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":66,"deletions":13}}},{"hash":"b87f0429315ba46a415668df0fe79ff911165a14","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"No testings done to test the methods and classes\n\nHaving automated test cases makes it easier to spot\nbugs when the code changes.\n\nLet\u0027s,\n*add JUnit tests: ParserTest,\nTaskTest and TaskListTest\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":5},"java":{"insertions":72,"deletions":2}}},{"hash":"bdcbe472b2395fa865041129ae1bac0bfeb2e2fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"* branch-A-JUnit:\n Add JUnit Tests\n Fix merge conflict\n","tags":["A-JUnit-"],"fileTypesAndContributionMap":{}},{"hash":"08966b24ad3e2ca204a94cfa91ff096692bfcece","isMergeCommit":false,"messageTitle":"Package the app as a Jar file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"59a8dcc5b0df54c6c44bfc2e044d0be48b6e77f3","isMergeCommit":false,"messageTitle":"Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":147,"deletions":9}}},{"hash":"afb25d1eba3a90888bce92a4cfe8b216f28fd5b9","isMergeCommit":false,"messageTitle":"Fix code to coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":10}}},{"hash":"7909aaadc4819aea998f3d0db42bdd1173d3226a","isMergeCommit":false,"messageTitle":"Add a find command","messageBody":"Not possible to find a few tasks that contains\na particular string\n\nFind command makes it easier\nto find particular tasks\n","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":40,"deletions":0}}},{"hash":"e6dc0de4d3664bcca2a11aab917592ec3ec50487","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Jar\u0027","messageBody":"* branch-A-Jar:\n Package the app as a Jar file\n","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"1a82cf415544c7bb4e94afc0de6428578e34ce12","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"* branch-A-JavaDoc:\n Add JavaDocs\n","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"6aea1b9e03c84a6aefdcce4869514f37e98684e6","isMergeCommit":true,"messageTitle":"Merge conflict fixed","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"bd419950a7408d19fa862970a3703a8f69548d1c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"* branch-Level-9:\n Add a find command\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Gabriel4357":{"java":743,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":1,"txt":16}},"authorContributionVariance":{"Gabriel4357":66191.414},"authorDisplayNameMap":{"Gabriel4357":"CS2103T-T13-3 GABR.. HAO"}} +{"authorDailyContributionsMap":{"Gabriel4357":[{"date":"2023-08-21","commitResults":[{"hash":"b46faf6e0d755b86dd1468d59ce8534ae83c6f42","isMergeCommit":false,"messageTitle":"changed name, and removed tag","messageBody":"","tags":["v0.1"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"f7403e4cde07bc0e34fa6b7edb057458767223e4","isMergeCommit":false,"messageTitle":"implement initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"f8f088e950953d45d101db5a259b55daa6c575be","isMergeCommit":false,"messageTitle":"improved skeletal version","messageBody":"","tags":["v1.0"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":3}}},{"hash":"beabc39662a0bc7c5a6c2177fbe6ebeff615f72d","isMergeCommit":false,"messageTitle":"customisation added","messageBody":"","tags":["v1.1"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"a3b4904f67c9ff976d555edb04eed39ea30ec697","isMergeCommit":false,"messageTitle":"use of formatted string","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"93625133452617cad66e0a2e1ad013df91c0ee8e","isMergeCommit":false,"messageTitle":"added an array and counter variable","messageBody":"","tags":["v2.0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":3}}},{"hash":"d8284cbba7af305b5297574b34a82298ee95432b","isMergeCommit":false,"messageTitle":"added useful methods","messageBody":"","tags":["v2.1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"e6a8d71cd3035d446176631c7c50d6900319729f","isMergeCommit":false,"messageTitle":"logic added","messageBody":"","tags":["v2.2","Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}},{"hash":"6732150c3fc208aec23ff144fbbc869c2f7ea677","isMergeCommit":false,"messageTitle":"added task class","messageBody":"","tags":["v3.0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"c50af9222b7e3c541d6540c7b11bbea901541ca2","isMergeCommit":false,"messageTitle":"duke package created","messageBody":"","tags":["v3.1"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"340a2408bbdc6db37f18b937abe6a7ee34062423","isMergeCommit":false,"messageTitle":"task class updated","messageBody":"","tags":["v3.2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"7c7d1cbe6cdc842525485a3d87226da84b8f7eb4","isMergeCommit":false,"messageTitle":"updated logic in duke","messageBody":"","tags":["v3.3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":32}}},{"hash":"a0d875fe607ccae2f1c23dea5c4141b1f5b41ae7","isMergeCommit":false,"messageTitle":"logic of mark and unmark added","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":3}}}]},{"date":"2023-08-22","commitResults":[{"hash":"74fa5e8841222c42ad21f872fc8186455805239e","isMergeCommit":false,"messageTitle":"new types of tasks added","messageBody":"","tags":["v4.0"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":0}}},{"hash":"346c8825e71896cc1e0feec9a6ac1dc4abaf96ad","isMergeCommit":false,"messageTitle":"logic of duke revamped","messageBody":"","tags":["v4.1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":14}}},{"hash":"8ba05dc972faa0f5171a394648d35bc186a9339a","isMergeCommit":false,"messageTitle":"todo logic ready","messageBody":"","tags":["v4.2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":14}}},{"hash":"8c518d1a6349ed95a727ee4b36981299afa4e698","isMergeCommit":false,"messageTitle":"deadline logic ready","messageBody":"","tags":["v4.3"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"238ac4abc741b1ecccf3930553b45927c2a7b372","isMergeCommit":false,"messageTitle":"event logic working","messageBody":"","tags":["v4.4"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":3}}},{"hash":"adaf0c87a46e4f272db2d5b9384eb927fb563981","isMergeCommit":false,"messageTitle":"tests set up","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"1826abb1452cd13a99957e2c5430c4c73e78ffc1","isMergeCommit":false,"messageTitle":"UI Test done","messageBody":"","tags":["v5.0","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":14,"deletions":8},"sh":{"insertions":1,"deletions":1}}},{"hash":"59499079b7d2861801dbce68c6b2ea72452f4ca5","isMergeCommit":false,"messageTitle":"clean up logic","messageBody":"","tags":["v5.1"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":105}}},{"hash":"21750337ed2e81907cc4712d683fdf4e890b63be","isMergeCommit":false,"messageTitle":"use arraylist now, and finish delete","messageBody":"","tags":["v6.0"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":16}}}]},{"date":"2023-08-23","commitResults":[{"hash":"ec5172a9c433e4f547752f92ad2a9c1eeccf133f","isMergeCommit":false,"messageTitle":"both errors added","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":15}}},{"hash":"8b0464c8bb104205e5ed1e40b4e0b3d1fde0df21","isMergeCommit":true,"messageTitle":"delete added","messageBody":"","tags":["v-6.1"],"fileTypesAndContributionMap":{}},{"hash":"ab93c40d7c0a5868a3768fd744fb2b92a1d30d5e","isMergeCommit":false,"messageTitle":"bugs fixed","messageBody":"","tags":["v6.2","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":34}}},{"hash":"15b523510fbaa2e98fb1e18fffb98a11b8edb123","isMergeCommit":false,"messageTitle":"final changes","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}}]},{"date":"2023-08-27","commitResults":[{"hash":"0a36aabbb47eca0cd0fb47798fa8ca635b73d3c8","isMergeCommit":false,"messageTitle":"Refactor the method name to printline()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":20}}}]},{"date":"2023-08-28","commitResults":[{"hash":"c70f969abb7577191a0e5936182c78352d0c5890","isMergeCommit":false,"messageTitle":"Use a file to track past data.","messageBody":"Cannot save a list of items.\n\nCan store past data is needed as a to-do application.\n\nLet\u0027s,\n*create a file that commands will be written to\n* read from that file and calls the commands at the start of each run\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":115,"deletions":30}}},{"hash":"14e527c106c86ba4c28f1d0d103c56239cd40631","isMergeCommit":false,"messageTitle":"Align code to match coding style","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":7}}},{"hash":"05f7b6c06f079e473112b312628c2a71838bb500","isMergeCommit":true,"messageTitle":"Fix merge conflict","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"6ede75c9da00fbde07f4a7c639a217d7cfd7e862","isMergeCommit":false,"messageTitle":"Introduce LocalTimeDate into the application","messageBody":"Event and Deadline class uses Strings as their parameters.\n\nUsing actual times will be more accurate to a todo application.\n\nLet\u0027s\n*change the strings into LocalTimeDates\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":44,"deletions":19}}},{"hash":"fc193cc33b264db66ed1e696182542947a5b6df8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"* branch-Level-8:\n Introduce LocalTimeDate into the application\n","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"e0f719e496f4c1d5597d9d22860516c62f753bdc","isMergeCommit":false,"messageTitle":"Remove counter","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":24}}},{"hash":"c7534cf69d2fad227e00aa8d46d09c48db643758","isMergeCommit":false,"messageTitle":"Change code to include even more OOP than before.","messageBody":"Let\u0027s\n*add ui, storage, parser, and tasklist as a means of abstraction\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":322,"deletions":238}}},{"hash":"d3dae88ba98032efb40f45967eb924158e955a52","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"* branch-A-MoreOOP:\n Change code to include even more OOP than before.\n Remove counter\n","fileTypesAndContributionMap":{}},{"hash":"70fa4e81c96cd868e5f49f596d17433642bac400","isMergeCommit":false,"messageTitle":"Touch up code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":13}}},{"hash":"43b20e8dc9398068bd4234b1d61d36b1cea9cf65","isMergeCommit":false,"messageTitle":"Add package \u0027duke\u0027","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"0d9f8f372b2003f2793e4b8a40bccb775edf0870","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"* branch-A-Packages:\n Add package \u0027duke\u0027\n","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"3be3950613ba6718edda97f66cd895ec16c57aae","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027","messageBody":"* commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027:\n Bump gradle and lib version\n Add Gradle support\n","fileTypesAndContributionMap":{}},{"hash":"e4c3245b328d01bb6b8dff455b0ae77a2378677d","isMergeCommit":false,"messageTitle":"Add Gradle to the working project.","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":1},"java":{"insertions":0,"deletions":1}}},{"hash":"06ea9ba06fb5902e8d4d36cc757906846ad3d81b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle-\u0027","messageBody":"* branch-A-Gradle-:\n Add Gradle to the working project.\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"96c4b597fd5e21b78510020dc58a9fb10800020c","isMergeCommit":false,"messageTitle":"Add more OOP into code.","messageBody":"UI does not handle all interactions with user.\n\nAbstracted out Parser sending messages to user and leaving it to\nUI to send the responses.\n\nLet\u0027s,\n*add a method sendMessage() in UI to handle the sending\nof messages to user.\n","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":29}}},{"hash":"21853fb0790925d1a1cddb015fd68526250028dd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"* branch-A-MoreOOP:\n Add more OOP into code.\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"06f0c9c18dcf2eb54e4a75966e7b48fb17e9a85f","isMergeCommit":false,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":66,"deletions":13}}},{"hash":"b87f0429315ba46a415668df0fe79ff911165a14","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"No testings done to test the methods and classes\n\nHaving automated test cases makes it easier to spot\nbugs when the code changes.\n\nLet\u0027s,\n*add JUnit tests: ParserTest,\nTaskTest and TaskListTest\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":5},"java":{"insertions":72,"deletions":2}}},{"hash":"bdcbe472b2395fa865041129ae1bac0bfeb2e2fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"* branch-A-JUnit:\n Add JUnit Tests\n Fix merge conflict\n","tags":["A-JUnit-"],"fileTypesAndContributionMap":{}},{"hash":"08966b24ad3e2ca204a94cfa91ff096692bfcece","isMergeCommit":false,"messageTitle":"Package the app as a Jar file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"59a8dcc5b0df54c6c44bfc2e044d0be48b6e77f3","isMergeCommit":false,"messageTitle":"Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":147,"deletions":9}}},{"hash":"afb25d1eba3a90888bce92a4cfe8b216f28fd5b9","isMergeCommit":false,"messageTitle":"Fix code to coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":10}}},{"hash":"7909aaadc4819aea998f3d0db42bdd1173d3226a","isMergeCommit":false,"messageTitle":"Add a find command","messageBody":"Not possible to find a few tasks that contains\na particular string\n\nFind command makes it easier\nto find particular tasks\n","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":40,"deletions":0}}},{"hash":"e6dc0de4d3664bcca2a11aab917592ec3ec50487","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Jar\u0027","messageBody":"* branch-A-Jar:\n Package the app as a Jar file\n","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"1a82cf415544c7bb4e94afc0de6428578e34ce12","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"* branch-A-JavaDoc:\n Add JavaDocs\n","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"6aea1b9e03c84a6aefdcce4869514f37e98684e6","isMergeCommit":true,"messageTitle":"Merge conflict fixed","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"bd419950a7408d19fa862970a3703a8f69548d1c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"* branch-Level-9:\n Add a find command\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"f379128e54c19c18c561660a55ebcce1bb5a25d7","isMergeCommit":false,"messageTitle":"Fix bug on not quitting on \u0027bye\u0027 command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":165,"deletions":158}}}]}]},"authorFileTypeContributionMap":{"Gabriel4357":{"java":750,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":1,"txt":16}},"authorContributionVariance":{"Gabriel4357":58349.895},"authorDisplayNameMap":{"Gabriel4357":"CS2103T-T13-3 GABR.. HAO"}} diff --git a/GlendaChong_ip_master/commits.json b/GlendaChong_ip_master/commits.json index bd15df77..c8770a44 100644 --- a/GlendaChong_ip_master/commits.json +++ b/GlendaChong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"GlendaChong":[{"date":"2023-08-21","commitResults":[{"hash":"c184e0da8f22a86760914e54e40443e97b1dd24b","isMergeCommit":false,"messageTitle":"Rename chatbot, greet user, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"ea66a184d6bc767f24be6ad61f063ed2deedb80e","isMergeCommit":false,"messageTitle":"Echo commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":9}}},{"hash":"a7a22c676000321f8c792b07c1a0288b72c4f7f3","isMergeCommit":false,"messageTitle":"Add and display tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":8}}}]},{"date":"2023-08-22","commitResults":[{"hash":"f5fe0526277534677302406d7ecc608af0da1099","isMergeCommit":false,"messageTitle":"Added mark task as done or undone feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":7}}},{"hash":"8f1f02d59fde38532f3271eddd65710b0889e76a","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":42}}},{"hash":"04cfa911e6ef5095fd19d014a1d0252d66cdec1b","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":56,"deletions":0},"java":{"insertions":15,"deletions":15}}},{"hash":"70125559ea89c78e8c01420fa60e4fda03734699","isMergeCommit":false,"messageTitle":"Added error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":28}}},{"hash":"e3d908d1ce59c91eab32e8ab9120e2246e9ea9df","isMergeCommit":false,"messageTitle":"Edited tasks to use ArrayList\u003c\u003e","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":15}}}]},{"date":"2023-08-23","commitResults":[{"hash":"e6835a8b1601b8cc0fcb7aba6a5a08494758554b","isMergeCommit":false,"messageTitle":"Added delete task function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":16}}}]},{"date":"2023-08-29","commitResults":[{"hash":"168e8903bf8a19c4efa50553b903b590b75a3891","isMergeCommit":false,"messageTitle":"Add save tasks to hard disk functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":34}}},{"hash":"8ed4f8290b100e6617acbef6be9889e4db056a11","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"85478892525a5ba0312b9ed069e90a48532d279a","isMergeCommit":false,"messageTitle":"Add date and time functionality for deadline tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":32,"deletions":9}}},{"hash":"3cf10fe81ea3776e46f238c0e9d60b5f6e919203","isMergeCommit":false,"messageTitle":"Update automated text-ui testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":23,"deletions":6},"java":{"insertions":2,"deletions":4}}},{"hash":"3ebc255e281e4d9f77a33f1576284e6c4640bcee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"e5288cb7f2a3bc2aa998b70be604412153ad5578","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","tags":["A-OOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":443,"deletions":195}}},{"hash":"b71c5586d7ab89bdd5c2963f7ac761c3498d6a59","isMergeCommit":false,"messageTitle":"Organise classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":7}}},{"hash":"f9d740de4eed2471c943ca700086905cca062c9b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"df98977baef7298becb5c97853cc5f2711b05354","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"476c057d5d3a16facabe977732ea55bf7328c391","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":334,"deletions":5}}},{"hash":"04d2df8f562e5259a2d1ee76283e5b35d6fb67ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"bbcdc3f37968477e888529f6d4eebe52a79b6bee","isMergeCommit":false,"messageTitle":"Edit build.gradle file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"83a3f6bc4f95ef595bc7391893e245d0c530aa78","isMergeCommit":false,"messageTitle":"Create a JAR file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"txt":{"insertions":1,"deletions":1}}},{"hash":"c56933853654fef5e7d240812011f7a5e6e53d1e","isMergeCommit":false,"messageTitle":"Add Javadocs to all current classes and methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":281,"deletions":6}}},{"hash":"7c4841cbdbb7777244d5390585c6e6858a8f15db","isMergeCommit":false,"messageTitle":"Follow coding standard and refactor code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":101}}},{"hash":"15333ba22f85496f5a3c742f7b80ac8d9712068a","isMergeCommit":false,"messageTitle":"Add find tasks by keyword search functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":69,"deletions":6}}},{"hash":"949bdc6048e90812c1a985ba01b40af98f1bbdeb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"5e6d25243c8c8fcc1739f1925428ee684010a0f3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"b5116454fba718e711b25fdaacc1f137b32977ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"a6aad2e7a53d324c161e989fa938e3a6331fc23e","isMergeCommit":false,"messageTitle":"Fix event task displays in saved file and chatbot","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":32,"deletions":8}}}]}]},"authorFileTypeContributionMap":{"GlendaChong":{"java":1336,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":77}},"authorContributionVariance":{"GlendaChong":58534.332},"authorDisplayNameMap":{"GlendaChong":"CS2103T-T17-2 GLEN..TING"}} +{"authorDailyContributionsMap":{"GlendaChong":[{"date":"2023-08-21","commitResults":[{"hash":"c184e0da8f22a86760914e54e40443e97b1dd24b","isMergeCommit":false,"messageTitle":"Rename chatbot, greet user, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"ea66a184d6bc767f24be6ad61f063ed2deedb80e","isMergeCommit":false,"messageTitle":"Echo commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":9}}},{"hash":"a7a22c676000321f8c792b07c1a0288b72c4f7f3","isMergeCommit":false,"messageTitle":"Add and display tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":8}}}]},{"date":"2023-08-22","commitResults":[{"hash":"f5fe0526277534677302406d7ecc608af0da1099","isMergeCommit":false,"messageTitle":"Added mark task as done or undone feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":7}}},{"hash":"8f1f02d59fde38532f3271eddd65710b0889e76a","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":42}}},{"hash":"04cfa911e6ef5095fd19d014a1d0252d66cdec1b","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":56,"deletions":0},"java":{"insertions":15,"deletions":15}}},{"hash":"70125559ea89c78e8c01420fa60e4fda03734699","isMergeCommit":false,"messageTitle":"Added error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":28}}},{"hash":"e3d908d1ce59c91eab32e8ab9120e2246e9ea9df","isMergeCommit":false,"messageTitle":"Edited tasks to use ArrayList\u003c\u003e","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":15}}}]},{"date":"2023-08-23","commitResults":[{"hash":"e6835a8b1601b8cc0fcb7aba6a5a08494758554b","isMergeCommit":false,"messageTitle":"Added delete task function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":16}}}]},{"date":"2023-08-29","commitResults":[{"hash":"168e8903bf8a19c4efa50553b903b590b75a3891","isMergeCommit":false,"messageTitle":"Add save tasks to hard disk functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":34}}},{"hash":"8ed4f8290b100e6617acbef6be9889e4db056a11","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"85478892525a5ba0312b9ed069e90a48532d279a","isMergeCommit":false,"messageTitle":"Add date and time functionality for deadline tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":32,"deletions":9}}},{"hash":"3cf10fe81ea3776e46f238c0e9d60b5f6e919203","isMergeCommit":false,"messageTitle":"Update automated text-ui testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":23,"deletions":6},"java":{"insertions":2,"deletions":4}}},{"hash":"3ebc255e281e4d9f77a33f1576284e6c4640bcee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"e5288cb7f2a3bc2aa998b70be604412153ad5578","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","tags":["A-OOP","A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":443,"deletions":195}}},{"hash":"b71c5586d7ab89bdd5c2963f7ac761c3498d6a59","isMergeCommit":false,"messageTitle":"Organise classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":7}}},{"hash":"f9d740de4eed2471c943ca700086905cca062c9b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"df98977baef7298becb5c97853cc5f2711b05354","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"476c057d5d3a16facabe977732ea55bf7328c391","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":334,"deletions":5}}},{"hash":"04d2df8f562e5259a2d1ee76283e5b35d6fb67ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"bbcdc3f37968477e888529f6d4eebe52a79b6bee","isMergeCommit":false,"messageTitle":"Edit build.gradle file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"83a3f6bc4f95ef595bc7391893e245d0c530aa78","isMergeCommit":false,"messageTitle":"Create a JAR file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"txt":{"insertions":1,"deletions":1}}},{"hash":"c56933853654fef5e7d240812011f7a5e6e53d1e","isMergeCommit":false,"messageTitle":"Add Javadocs to all current classes and methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":281,"deletions":6}}},{"hash":"7c4841cbdbb7777244d5390585c6e6858a8f15db","isMergeCommit":false,"messageTitle":"Follow coding standard and refactor code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":101}}},{"hash":"15333ba22f85496f5a3c742f7b80ac8d9712068a","isMergeCommit":false,"messageTitle":"Add find tasks by keyword search functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":69,"deletions":6}}},{"hash":"949bdc6048e90812c1a985ba01b40af98f1bbdeb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"5e6d25243c8c8fcc1739f1925428ee684010a0f3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"b5116454fba718e711b25fdaacc1f137b32977ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"a6aad2e7a53d324c161e989fa938e3a6331fc23e","isMergeCommit":false,"messageTitle":"Fix event task displays in saved file and chatbot","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":32,"deletions":8}}}]}]},"authorFileTypeContributionMap":{"GlendaChong":{"java":1336,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":77}},"authorContributionVariance":{"GlendaChong":58534.332},"authorDisplayNameMap":{"GlendaChong":"CS2103T-T17-2 GLEN..TING"}} diff --git a/Goh-Li-Ting_ip_master/authorship.json b/Goh-Li-Ting_ip_master/authorship.json index 892e742b..ad9768ec 100644 --- a/Goh-Li-Ting_ip_master/authorship.json +++ b/Goh-Li-Ting_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/ChatBuddy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"public class ChatBuddy {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" // store a list of tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" private static ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" private static final String DIRECTORY_PATH \u003d \"./data\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" private static final String FILE_PATH \u003d \"./data/chat_buddy.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" * Add task to list array.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param task The task to add into the list of tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" private static void addTask(Task task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" // add task to list","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" list.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" // display message","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(String.format(\" Now you have %d tasks in the list.\", list.size()));","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":" * Add a todo task into the task list.","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param userInput The input provided by the user that starts with \"todo\".","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Goh-Li-Ting"},"content":" * @throws ChatBuddyException","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Goh-Li-Ting"},"content":" private static void addToDo(String userInput) throws ChatBuddyException {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Goh-Li-Ting"},"content":" if (userInput.trim().length() \u003c\u003d 4) {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Goh-Li-Ting"},"content":" // no description given","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Goh-Li-Ting"},"content":" // trim userInput to get rid of potential whitespace at the back of the user input","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Goh-Li-Ting"},"content":" String taskDescription \u003d userInput.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Goh-Li-Ting"},"content":" ToDo todo \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Goh-Li-Ting"},"content":" addTask(todo);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Goh-Li-Ting"},"content":" * Add a deadline task into the task list.","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param userInput The input provided by the user that starts with \"deadline\".","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Goh-Li-Ting"},"content":" * The userInput should include /by.","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Goh-Li-Ting"},"content":" * @throws ChatBuddyException","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"Goh-Li-Ting"},"content":" private static void addDeadline(String userInput) throws ChatBuddyException {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Goh-Li-Ting"},"content":" int byCommandIndex \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Goh-Li-Ting"},"content":" if (byCommandIndex \u003d\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Goh-Li-Ting"},"content":" // check if /by is in the input","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Deadlines need to include \\\"/by\\\" followed by the deadline.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (byCommandIndex - 1 \u003c 9) {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"Goh-Li-Ting"},"content":" // no description given","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Goh-Li-Ting"},"content":" String taskDescription \u003d userInput.substring(9, byCommandIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Goh-Li-Ting"},"content":" if (byCommandIndex + 4 \u003e\u003d userInput.length()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"The deadline cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"Goh-Li-Ting"},"content":" String by \u003d userInput.substring(byCommandIndex + 4);","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"Goh-Li-Ting"},"content":" if (by.trim().equals(\"\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"The deadline cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"Goh-Li-Ting"},"content":" Deadline deadline \u003d new Deadline(taskDescription, by);","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"Goh-Li-Ting"},"content":" addTask(deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"Goh-Li-Ting"},"content":" * Add an event task into the task list.","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param userInput The input provided by the user that starts with \"event\".","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"Goh-Li-Ting"},"content":" * The userInput should include /from and /to.","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"Goh-Li-Ting"},"content":" * @throws ChatBuddyException","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"Goh-Li-Ting"},"content":" private static void addEvent(String userInput) throws ChatBuddyException {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"Goh-Li-Ting"},"content":" int fromIndex \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"Goh-Li-Ting"},"content":" if (fromIndex \u003d\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"Goh-Li-Ting"},"content":" // check if /by is in the input","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Events need to include \\\"/from\\\" followed by the start date/time.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (fromIndex - 1 \u003c 6) {","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"Goh-Li-Ting"},"content":" // no description given","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"Goh-Li-Ting"},"content":" int toIndex \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"Goh-Li-Ting"},"content":" if (toIndex \u003d\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"Goh-Li-Ting"},"content":" // check if /by is in the input","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Events need to include \\\"/to\\\" followed by the end date/time.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"Goh-Li-Ting"},"content":" String taskDescription \u003d userInput.substring(6, fromIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"Goh-Li-Ting"},"content":" String from \u003d userInput.substring(fromIndex + 6, toIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"Goh-Li-Ting"},"content":" if (from.trim().equals(\"\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"The start date/time of an event cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"Goh-Li-Ting"},"content":" if (toIndex + 4 \u003e\u003d userInput.length()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"The end date/time of an event cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"Goh-Li-Ting"},"content":" String to \u003d userInput.substring(toIndex + 4);","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"Goh-Li-Ting"},"content":" if (to.trim().equals(\"\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"The end date/time of an event cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"Goh-Li-Ting"},"content":" Event event \u003d new Event(taskDescription, from, to);","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"Goh-Li-Ting"},"content":" addTask(event);","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to delete a task from the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param userInput The input provided by the user.","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"Goh-Li-Ting"},"content":" * @throws ChatBuddyException if the task number inputted by the user is not a valid task number.","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"Goh-Li-Ting"},"content":" private static void deleteTask(String userInput) throws ChatBuddyException {","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"Goh-Li-Ting"},"content":" String indexString \u003d userInput.substring(7);","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"Goh-Li-Ting"},"content":" int taskIndex \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"Goh-Li-Ting"},"content":" if (taskIndex \u003e\u003d list.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Please input a valid task number. There are only \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"Goh-Li-Ting"},"content":" list.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task \u003d list.remove(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(String.format(\" Now you have %d tasks in the list.\", list.size()));","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"Goh-Li-Ting"},"content":" /** Displays the list of tasks. */","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"Goh-Li-Ting"},"content":" private static void printTaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"Goh-Li-Ting"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task \u003d taskList.get(i);","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(String.format(\" %1s.%2s\", i + 1, task));","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"Goh-Li-Ting"},"content":" /** Displays a horizontal line. */","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"Goh-Li-Ting"},"content":" private static void printHorizontalLine() {","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"Goh-Li-Ting"},"content":" String horizontalLine \u003d \" ____________________________________________________________\";","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"Goh-Li-Ting"},"content":" * Loads data from file into task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"Goh-Li-Ting"},"content":" * @throws IOException if there\u0027s an error creating a directory or file,","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"Goh-Li-Ting"},"content":" * or if file does not exist when trying to read from it","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"Goh-Li-Ting"},"content":" * @throws ChatBuddyException if file data is not in the correct format","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"Goh-Li-Ting"},"content":" private static void loadData() throws IOException, ChatBuddyException {","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"Goh-Li-Ting"},"content":" // load file from hard disk","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"Goh-Li-Ting"},"content":" File directory \u003d new File(DIRECTORY_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"Goh-Li-Ting"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"Goh-Li-Ting"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"Goh-Li-Ting"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"Goh-Li-Ting"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"Goh-Li-Ting"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"Goh-Li-Ting"},"content":" // load data from file","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"Goh-Li-Ting"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"Goh-Li-Ting"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"Goh-Li-Ting"},"content":" // populate task array","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"Goh-Li-Ting"},"content":" parseTaskFromFile(fileScanner.nextLine());","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"Goh-Li-Ting"},"content":" * Parses task from data from the file and adds the task into the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param taskData The task data string to parse","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"Goh-Li-Ting"},"content":" * @throws ChatBuddyException if file data is not in the correct format","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"Goh-Li-Ting"},"content":" private static void parseTaskFromFile(String taskData) throws ChatBuddyException {","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"Goh-Li-Ting"},"content":" String[] arr \u003d taskData.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"Goh-Li-Ting"},"content":" String taskType \u003d arr[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"Goh-Li-Ting"},"content":" boolean isCompleted \u003d arr[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"Goh-Li-Ting"},"content":" String taskDescription \u003d arr[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"Goh-Li-Ting"},"content":" // create task object","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"Goh-Li-Ting"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"Goh-Li-Ting"},"content":" task \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"Goh-Li-Ting"},"content":" String by \u003d arr[3];","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"Goh-Li-Ting"},"content":" task \u003d new Deadline(taskDescription, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":200,"author":{"gitId":"Goh-Li-Ting"},"content":" String from \u003d arr[3];","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"Goh-Li-Ting"},"content":" String to \u003d arr[4];","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"Goh-Li-Ting"},"content":" task \u003d new Event(taskDescription, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":203,"author":{"gitId":"Goh-Li-Ting"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":204,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Error parsing data from file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"Goh-Li-Ting"},"content":" // update completion status","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"Goh-Li-Ting"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"Goh-Li-Ting"},"content":" task.markAsDone(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":212,"author":{"gitId":"Goh-Li-Ting"},"content":" // add task to list","lastModifiedDate":"2023-08-30"},{"lineNumber":213,"author":{"gitId":"Goh-Li-Ting"},"content":" list.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":214,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":215,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":216,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":217,"author":{"gitId":"Goh-Li-Ting"},"content":" * Saves the task into the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":218,"author":{"gitId":"Goh-Li-Ting"},"content":" * The file will be overwritten.","lastModifiedDate":"2023-08-30"},{"lineNumber":219,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":220,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param taskList The list of task to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":221,"author":{"gitId":"Goh-Li-Ting"},"content":" * @throws IOException if there is an error writing into the file","lastModifiedDate":"2023-08-30"},{"lineNumber":222,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":223,"author":{"gitId":"Goh-Li-Ting"},"content":" private static void saveTasksToFile(ArrayList\u003cTask\u003e taskList) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":224,"author":{"gitId":"Goh-Li-Ting"},"content":" // iterate through the taskList and add each task to the file","lastModifiedDate":"2023-08-30"},{"lineNumber":225,"author":{"gitId":"Goh-Li-Ting"},"content":" FileWriter fileWriter \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":226,"author":{"gitId":"Goh-Li-Ting"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":227,"author":{"gitId":"Goh-Li-Ting"},"content":" fileWriter.write(task.getInformationForSaving() + System.lineSeparator());","lastModifiedDate":"2023-08-30"},{"lineNumber":228,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":229,"author":{"gitId":"Goh-Li-Ting"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":230,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":231,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":232,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":233,"author":{"gitId":"Goh-Li-Ting"},"content":" * Prints out tasks that have a due date / from date within one week","lastModifiedDate":"2023-08-30"},{"lineNumber":234,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":235,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param taskList The list of possible tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":236,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":237,"author":{"gitId":"Goh-Li-Ting"},"content":" private static void getOneWeekOfTasks(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":238,"author":{"gitId":"Goh-Li-Ting"},"content":" ArrayList\u003cTask\u003e tasksWithinAWeek \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":239,"author":{"gitId":"Goh-Li-Ting"},"content":" for (Task task: taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":240,"author":{"gitId":"Goh-Li-Ting"},"content":" if (task.isWithinAWeek()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":241,"author":{"gitId":"Goh-Li-Ting"},"content":" tasksWithinAWeek.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":242,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":243,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":244,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":245,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":246,"author":{"gitId":"Goh-Li-Ting"},"content":" if (tasksWithinAWeek.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":247,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" There are no deadlines due and no events that starts within the week.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":248,"author":{"gitId":"Goh-Li-Ting"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":249,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Here are the deadlines and events that are due or starts within the week.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":250,"author":{"gitId":"Goh-Li-Ting"},"content":" printTaskList(tasksWithinAWeek);","lastModifiedDate":"2023-08-30"},{"lineNumber":251,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":252,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":253,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":254,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":255,"author":{"gitId":"Goh-Li-Ting"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":256,"author":{"gitId":"Goh-Li-Ting"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":257,"author":{"gitId":"Goh-Li-Ting"},"content":" loadData();","lastModifiedDate":"2023-08-30"},{"lineNumber":258,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":259,"author":{"gitId":"Goh-Li-Ting"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":260,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":261,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":262,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Hello! I\u0027m Chat Buddy!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":263,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":264,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":265,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":266,"author":{"gitId":"Goh-Li-Ting"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":267,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":268,"author":{"gitId":"Goh-Li-Ting"},"content":" while (!userInput.equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":269,"author":{"gitId":"Goh-Li-Ting"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":270,"author":{"gitId":"Goh-Li-Ting"},"content":" if (userInput.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":271,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":272,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":273,"author":{"gitId":"Goh-Li-Ting"},"content":" printTaskList(list);","lastModifiedDate":"2023-08-30"},{"lineNumber":274,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":275,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (userInput.matches(\"mark [1-9][0-9]*\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":276,"author":{"gitId":"Goh-Li-Ting"},"content":" String indexString \u003d userInput.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":277,"author":{"gitId":"Goh-Li-Ting"},"content":" int taskIndex \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":278,"author":{"gitId":"Goh-Li-Ting"},"content":" if (taskIndex \u003e\u003d list.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":279,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Please input a valid task number. There are only \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":280,"author":{"gitId":"Goh-Li-Ting"},"content":" list.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":281,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":282,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task \u003d list.get(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":283,"author":{"gitId":"Goh-Li-Ting"},"content":" task.markAsDone(true);","lastModifiedDate":"2023-08-30"},{"lineNumber":284,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (userInput.matches(\"unmark [1-9][0-9]*\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"Goh-Li-Ting"},"content":" String indexString \u003d userInput.substring(7);","lastModifiedDate":"2023-08-24"},{"lineNumber":286,"author":{"gitId":"Goh-Li-Ting"},"content":" int taskIndex \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":287,"author":{"gitId":"Goh-Li-Ting"},"content":" if (taskIndex \u003e\u003d list.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":288,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Please input a valid task number. There are only \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":289,"author":{"gitId":"Goh-Li-Ting"},"content":" list.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":290,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":291,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task \u003d list.get(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":292,"author":{"gitId":"Goh-Li-Ting"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":293,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":294,"author":{"gitId":"Goh-Li-Ting"},"content":" addToDo(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":295,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":296,"author":{"gitId":"Goh-Li-Ting"},"content":" addDeadline(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":297,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":298,"author":{"gitId":"Goh-Li-Ting"},"content":" addEvent(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":299,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (userInput.matches(\"delete [1-9][0-9]*\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":300,"author":{"gitId":"Goh-Li-Ting"},"content":" deleteTask(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":301,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (userInput.equals(\"week\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":302,"author":{"gitId":"Goh-Li-Ting"},"content":" getOneWeekOfTasks(list);","lastModifiedDate":"2023-08-30"},{"lineNumber":303,"author":{"gitId":"Goh-Li-Ting"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":304,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":305,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":306,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (ChatBuddyException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":307,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":308,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" \" + e.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":309,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":310,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":311,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":312,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Error parsing date/datetime string: \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":313,"author":{"gitId":"Goh-Li-Ting"},"content":" \"Please input dates for deadlines in the format dd/MM/yyyy and \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":314,"author":{"gitId":"Goh-Li-Ting"},"content":" \"date time for events in the format dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":315,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":316,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":317,"author":{"gitId":"Goh-Li-Ting"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":318,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":319,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":320,"author":{"gitId":"Goh-Li-Ting"},"content":" saveTasksToFile(list);","lastModifiedDate":"2023-08-30"},{"lineNumber":321,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":322,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":323,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":324,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":325,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (ChatBuddyException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":326,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":327,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" \" + e.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":328,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":329,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":330,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":331,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Error loading data: \" + e);","lastModifiedDate":"2023-08-30"},{"lineNumber":332,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":333,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":334,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":335,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Error parsing date/datetime string: \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":336,"author":{"gitId":"Goh-Li-Ting"},"content":" \"Please input dates for deadlines in the format dd/MM/yyyy and \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":337,"author":{"gitId":"Goh-Li-Ting"},"content":" \"date time for events in the format dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":338,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":339,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":340,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":341,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Goh-Li-Ting":341}},{"path":"src/main/java/ChatBuddyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"public class ChatBuddyException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":" * Constructor to create a ChatBuddyException.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param description A description of the error.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":" public ChatBuddyException(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to get the string description of the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return the string description of the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" return \"☹ OOPS!!! \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Goh-Li-Ting":20}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":" private static final DateTimeFormatter DATE_INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" private static final DateTimeFormatter DATE_OUTPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" * Constructor to create a Deadline object.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param description The task description.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param by The deadline of the task in the format dd/MM/yyyy.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" this.by \u003d LocalDate.parse(by, DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns a boolean representing whether the task is due within a week.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return true if the deadline is due within a week, false otherwise","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" public boolean isWithinAWeek() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":" return this.by.isBefore(LocalDate.now().plus(1, ChronoUnit.WEEKS));","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to get the string representation of the deadline task.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return The string representation of the deadline task.","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Goh-Li-Ting"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Goh-Li-Ting"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DATE_OUTPUT_FORMATTER) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns deadline task information in format for saving.","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Goh-Li-Ting"},"content":" * Format is D | [1 if completed, 0 if not completed] | [task description] | [by]","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return Deadline task information in format for saving","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Goh-Li-Ting"},"content":" public String getInformationForSaving() {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Goh-Li-Ting"},"content":" return \"D | \" + super.getInformationForSaving() + \" | \" + this.by.format(DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Goh-Li-Ting":53}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" private static final DateTimeFormatter DATETIME_INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" private static final DateTimeFormatter DATETIME_OUTPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" * Constructor to create an Event object.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param description The task description.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param from The task\u0027s start date/time in the format dd/MM/yyyy HHmm.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param to The task\u0027s end date/time in the format.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" this.from \u003d LocalDateTime.parse(from, DATETIME_INPUT_FORMATTER);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" this.to \u003d LocalDateTime.parse(to, DATETIME_INPUT_FORMATTER);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns a boolean representing whether the event starts within a week.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return true if the event starts within a week, false otherwise","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" public boolean isWithinAWeek() {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":" return this.from.isBefore(LocalDateTime.now().plus(1, ChronoUnit.WEEKS));","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to get the string representation of the event task.","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return The string representation of the event task.","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Goh-Li-Ting"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Goh-Li-Ting"},"content":" return String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Goh-Li-Ting"},"content":" \"[E]%1s (from: %2s to: %3s)\",","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Goh-Li-Ting"},"content":" super.toString(),","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Goh-Li-Ting"},"content":" this.from.format(DATETIME_OUTPUT_FORMATTER),","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Goh-Li-Ting"},"content":" this.to.format(DATETIME_OUTPUT_FORMATTER)","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Goh-Li-Ting"},"content":" );","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns deadline task information in format for saving.","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Goh-Li-Ting"},"content":" * Format is E | [1 if completed, 0 if not completed] | [task description] | [from] | [to]","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return Deadline task information in format for saving","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Goh-Li-Ting"},"content":" public String getInformationForSaving() {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Goh-Li-Ting"},"content":" return String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Goh-Li-Ting"},"content":" \"E | %1s | %2s | %3s\",","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Goh-Li-Ting"},"content":" super.getInformationForSaving(),","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Goh-Li-Ting"},"content":" this.from.format(DATETIME_INPUT_FORMATTER),","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Goh-Li-Ting"},"content":" this.to.format(DATETIME_INPUT_FORMATTER));","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Goh-Li-Ting":66}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":" * Constructor to create a Task object.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param description The task description.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" /** Displays a horizontal line. */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" private static void printHorizontalLine() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" String horizontalLine \u003d \" ____________________________________________________________\";","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" /** Method to mark task as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param shouldPrint True to print, false to not print","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" public void markAsDone(boolean shouldPrint) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" if (shouldPrint) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" \" + this);","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Goh-Li-Ting"},"content":" /** Method to mark task as not done. */","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Goh-Li-Ting"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Goh-Li-Ting"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" \" + this);","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Goh-Li-Ting"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to get the status icon of the task based on whether the task is done.","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return The status icon of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns X if task is done,","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Goh-Li-Ting"},"content":" * else returns an empty space.","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Goh-Li-Ting"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Goh-Li-Ting"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns a boolean representing whether the task is due or an event starts within a week.","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return true if task is due / starts within a week, false otherwise","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Goh-Li-Ting"},"content":" public boolean isWithinAWeek() {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Goh-Li-Ting"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to get the string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return The string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"Goh-Li-Ting"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"Goh-Li-Ting"},"content":" return String.format(\"[%1s] %2s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns task information in format for saving.","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Goh-Li-Ting"},"content":" * Format is [1 if completed, 0 if not completed] | [task description]","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return Task information in format for saving","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Goh-Li-Ting"},"content":" public String getInformationForSaving() {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Goh-Li-Ting"},"content":" return String.format(\"%1s | %2s\", this.isDone ? \"1\" : \"0\", this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Goh-Li-Ting":85}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":" * Constructor to create a ToDo object.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param description The task description.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to get the string representation of the todo task.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return The string representation of the todo task.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns todo task information in format for saving.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" * Format is T | [1 if completed, 0 if not completed] | [task description]","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return Todo task information in format for saving","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" public String getInformationForSaving() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":" return \"T | \" + super.getInformationForSaving();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Goh-Li-Ting":32}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"todo buy groceries","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"deadline do homework /by 02/09/2023","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"event birthday party /from 03/09/2023 1400 /to 03/09/2023 1700","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"deadline make CCA poster /by 30/08/2023","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"todo buy hand soap","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"unmark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"delete 3","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Goh-Li-Ting":11}},{"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":"Goh-Li-Ting"},"content":"java -classpath ..\\bin ChatBuddy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"-":20,"Goh-Li-Ting":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":"Goh-Li-Ting"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":" mainClass.set(\"chatbuddy.ChatBuddy\")","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"Goh-Li-Ting":2}},{"path":"src/main/java/chatbuddy/ChatBuddy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"public class ChatBuddy {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" public ChatBuddy(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (ChatBuddyException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":" isExit \u003d command.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (ChatBuddyException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Goh-Li-Ting"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Goh-Li-Ting"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Goh-Li-Ting"},"content":" new ChatBuddy(\"data/tasks.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Goh-Li-Ting":46}},{"path":"src/main/java/chatbuddy/ChatBuddyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"public class ChatBuddyException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":" * Constructor to create a ChatBuddyException.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param description A description of the error.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" public ChatBuddyException(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to get the string description of the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return the string description of the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" return \"☹ OOPS!!! \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" public String getMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" return toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Goh-Li-Ting":27}},{"path":"src/main/java/chatbuddy/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" public int getSize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" return tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" private void checkValidTaskNumber(int taskNum) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" if (taskNum \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Please input a valid task number. There are only \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":" public Task deleteTask(int taskNum) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" // check for valid task number","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":" checkValidTaskNumber(taskNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Goh-Li-Ting"},"content":" // delete task from list","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Goh-Li-Ting"},"content":" int taskIndex \u003d taskNum - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task \u003d tasks.remove(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Goh-Li-Ting"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Goh-Li-Ting"},"content":" public Task markTaskAsDone(int taskNum) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Goh-Li-Ting"},"content":" // check for valid task number","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Goh-Li-Ting"},"content":" checkValidTaskNumber(taskNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Goh-Li-Ting"},"content":" // mark task as done","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Goh-Li-Ting"},"content":" int taskIndex \u003d taskNum - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task \u003d tasks.get(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Goh-Li-Ting"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Goh-Li-Ting"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Goh-Li-Ting"},"content":" public Task markTaskAsNotDone(int taskNum) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Goh-Li-Ting"},"content":" // check for valid task number","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Goh-Li-Ting"},"content":" checkValidTaskNumber(taskNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Goh-Li-Ting"},"content":" // mark task as done","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Goh-Li-Ting"},"content":" int taskIndex \u003d taskNum - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task \u003d tasks.get(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Goh-Li-Ting"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Goh-Li-Ting"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Goh-Li-Ting"},"content":" public ArrayList\u003cString\u003e getTaskStringsToSave() {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Goh-Li-Ting"},"content":" ArrayList\u003cString\u003e taskStrings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Goh-Li-Ting"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Goh-Li-Ting"},"content":" String taskString \u003d task.getInformationForSaving();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Goh-Li-Ting"},"content":" taskStrings.add(taskString);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Goh-Li-Ting"},"content":" return taskStrings;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Goh-Li-Ting"},"content":" public ArrayList\u003cString\u003e getTaskStringsToPrint() {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Goh-Li-Ting"},"content":" ArrayList\u003cString\u003e taskStrings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Goh-Li-Ting"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Goh-Li-Ting"},"content":" taskStrings.add(task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Goh-Li-Ting"},"content":" return taskStrings;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":80}},{"path":"src/main/java/chatbuddy/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ChatBuddyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws ChatBuddyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":14}},{"path":"src/main/java/chatbuddy/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ChatBuddyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" public static final String COMMAND_WORD \u003d \"deadline\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" private String taskDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" private LocalDate by;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" public DeadlineCommand(String taskDescription, LocalDate by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" Deadline deadline \u003d new Deadline(taskDescription, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" tasks.addTask(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showTaskAddition(deadline, tasks.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":27}},{"path":"src/main/java/chatbuddy/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ChatBuddyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" private int taskNum;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" public DeleteCommand(int taskNum) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" this.taskNum \u003d taskNum;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task \u003d tasks.deleteTask(taskNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showTaskDeletion(task, tasks.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":22}},{"path":"src/main/java/chatbuddy/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ChatBuddyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" public static final String COMMAND_WORD \u003d \"event\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" private String taskDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" public EventCommand(String taskDescription, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" Event event \u003d new Event(taskDescription, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" tasks.addTask(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showTaskAddition(event, tasks.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":29}},{"path":"src/main/java/chatbuddy/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ChatBuddyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" public static final String COMMAND_WORD \u003d \"bye\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":22}},{"path":"src/main/java/chatbuddy/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" ArrayList\u003cString\u003e taskStrings \u003d tasks.getTaskStringsToPrint();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showTaskList(taskStrings, \"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":18}},{"path":"src/main/java/chatbuddy/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ChatBuddyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" private int taskNum;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" public MarkCommand(int taskNum) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" this.taskNum \u003d taskNum;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task \u003d tasks.markTaskAsDone(taskNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showMarkTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":23}},{"path":"src/main/java/chatbuddy/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ChatBuddyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" public static final String COMMAND_WORD \u003d \"todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" private String taskDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" public TodoCommand(String taskDescription) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" ToDo todo \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" tasks.addTask(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showTaskAddition(todo, tasks.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":24}},{"path":"src/main/java/chatbuddy/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ChatBuddyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" private int taskNum;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" public UnmarkCommand(int taskNum) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" this.taskNum \u003d taskNum;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task \u003d tasks.markTaskAsNotDone(taskNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" ui.showUnmarkTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":23}},{"path":"src/main/java/chatbuddy/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ChatBuddyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.command.DeadlineCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.command.DeleteCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.command.EventCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.command.ExitCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.command.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.command.MarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.command.TodoCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.command.UnmarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" private static final DateTimeFormatter FORMATTER_INPUT_DEADLINE \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" private static final DateTimeFormatter FORMATTER_INPUT_EVENT \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" public static Command parse(String commandString) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" String[] commandArray \u003d commandString.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":" String command \u003d commandArray[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" String args \u003d commandArray.length \u003e 1 ? commandArray[1] : \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Goh-Li-Ting"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Goh-Li-Ting"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Goh-Li-Ting"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Goh-Li-Ting"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Goh-Li-Ting"},"content":" case TodoCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Goh-Li-Ting"},"content":" return prepareAddTodo(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Goh-Li-Ting"},"content":" case DeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Goh-Li-Ting"},"content":" return prepareAddDeadline(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Goh-Li-Ting"},"content":" case EventCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Goh-Li-Ting"},"content":" return prepareAddEvent(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Goh-Li-Ting"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Goh-Li-Ting"},"content":" return prepareDelete(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Goh-Li-Ting"},"content":" case MarkCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Goh-Li-Ting"},"content":" return prepareMark(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Goh-Li-Ting"},"content":" case UnmarkCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Goh-Li-Ting"},"content":" return prepareUnmark(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Goh-Li-Ting"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Goh-Li-Ting"},"content":" public static TodoCommand prepareAddTodo(String args) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Goh-Li-Ting"},"content":" if (args.trim().equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Goh-Li-Ting"},"content":" return new TodoCommand(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Goh-Li-Ting"},"content":" private static DeadlineCommand prepareAddDeadline(String args) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Goh-Li-Ting"},"content":" String[] arr \u003d args.split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Goh-Li-Ting"},"content":" String taskDescription \u003d arr[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Goh-Li-Ting"},"content":" // check validity of arguments","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Goh-Li-Ting"},"content":" if (taskDescription.equals(\"\") || arr.length \u003d\u003d 1 || arr[1].trim().equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Please input deadlines in the format \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Goh-Li-Ting"},"content":" \"\u0027deadline [task description] /by [deadline in dd/MM/yyyy]\u0027.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Goh-Li-Ting"},"content":" \"The task description and deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Goh-Li-Ting"},"content":" // parse deadline string to LocalDate object","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Goh-Li-Ting"},"content":" LocalDate date \u003d parseDate(arr[1].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Goh-Li-Ting"},"content":" return new DeadlineCommand(taskDescription, date);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Goh-Li-Ting"},"content":" private static EventCommand prepareAddEvent(String args) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Goh-Li-Ting"},"content":" // check validity of arguments","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"Goh-Li-Ting"},"content":" String[] arr \u003d args.split(\" /from \");","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Goh-Li-Ting"},"content":" String taskDescription \u003d arr[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"Goh-Li-Ting"},"content":" if (taskDescription.equals(\"\") || arr.length \u003d\u003d 1 || arr[1].trim().equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Please input events in the format \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Goh-Li-Ting"},"content":" \"\u0027event [task description] /from [dd/MM/yyyy HHmm] /to [dd/MM/yyyy HHmm]\u0027.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Goh-Li-Ting"},"content":" \"The task description, from datetime and to datetime cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"Goh-Li-Ting"},"content":" String[] dateTimeArgs \u003d arr[1].trim().split(\" /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"Goh-Li-Ting"},"content":" if (dateTimeArgs[0].trim().equals(\"\") || dateTimeArgs.length \u003d\u003d 1 || dateTimeArgs[1].trim().equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Please input events in the format \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"Goh-Li-Ting"},"content":" \"\u0027event [task description] /from [dd/MM/yyyy HHmm] /to [dd/MM/yyyy HHmm]\u0027.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"Goh-Li-Ting"},"content":" \"The task description, from datetime and to datetime cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"Goh-Li-Ting"},"content":" // parse date time arguments to LocalDateTime object","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"Goh-Li-Ting"},"content":" LocalDateTime from \u003d parseDateTime(dateTimeArgs[0].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"Goh-Li-Ting"},"content":" LocalDateTime to \u003d parseDateTime(dateTimeArgs[1].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"Goh-Li-Ting"},"content":" return new EventCommand(taskDescription, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"Goh-Li-Ting"},"content":" private static DeleteCommand prepareDelete(String args) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Goh-Li-Ting"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"Goh-Li-Ting"},"content":" int taskNum \u003d Integer.parseInt(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"Goh-Li-Ting"},"content":" return new DeleteCommand(taskNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Please input a valid task number in digits (e.g. 1).\");","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"Goh-Li-Ting"},"content":" private static MarkCommand prepareMark(String args) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"Goh-Li-Ting"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"Goh-Li-Ting"},"content":" int taskNum \u003d Integer.parseInt(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"Goh-Li-Ting"},"content":" return new MarkCommand(taskNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Please input a valid task number in digits (e.g. 1).\");","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"Goh-Li-Ting"},"content":" private static UnmarkCommand prepareUnmark(String args) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"Goh-Li-Ting"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"Goh-Li-Ting"},"content":" int taskNum \u003d Integer.parseInt(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"Goh-Li-Ting"},"content":" return new UnmarkCommand(taskNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Please input a valid task number in digits (e.g. 1).\");","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"Goh-Li-Ting"},"content":" private static LocalDate parseDate(String dateString) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"Goh-Li-Ting"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"Goh-Li-Ting"},"content":" LocalDate date \u003d LocalDate.parse(dateString, FORMATTER_INPUT_DEADLINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"Goh-Li-Ting"},"content":" return date;","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Please input the deadline date in the format dd/MM/yyyy.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"Goh-Li-Ting"},"content":" private static LocalDateTime parseDateTime(String dateTimeString) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"Goh-Li-Ting"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"Goh-Li-Ting"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(dateTimeString, FORMATTER_INPUT_EVENT);","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"Goh-Li-Ting"},"content":" return dateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Please input the datetime in the format dd/MM/yyyy HHmm.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"Goh-Li-Ting"},"content":" public static Task parseToTask(String taskString) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"Goh-Li-Ting"},"content":" String[] taskData \u003d taskString.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"Goh-Li-Ting"},"content":" String taskType \u003d taskData[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"Goh-Li-Ting"},"content":" boolean isCompleted \u003d taskData[1].equals(\"1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"Goh-Li-Ting"},"content":" String taskDescription \u003d taskData[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"Goh-Li-Ting"},"content":" // create task object","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"Goh-Li-Ting"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"Goh-Li-Ting"},"content":" task \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"Goh-Li-Ting"},"content":" LocalDate by \u003d parseDate(taskData[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"Goh-Li-Ting"},"content":" task \u003d new Deadline(taskDescription, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"Goh-Li-Ting"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"Goh-Li-Ting"},"content":" LocalDateTime from \u003d parseDateTime(taskData[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"Goh-Li-Ting"},"content":" LocalDateTime to \u003d parseDateTime(taskData[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"Goh-Li-Ting"},"content":" task \u003d new Event(taskDescription, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"Goh-Li-Ting"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Error parsing data from file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"Goh-Li-Ting"},"content":" // update completion status","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"Goh-Li-Ting"},"content":" if (isCompleted) {","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"Goh-Li-Ting"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"Goh-Li-Ting"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":182}},{"path":"src/main/java/chatbuddy/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.ChatBuddyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" public ArrayList\u003cTask\u003e load() throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" // load file from hard disk","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" File parentDirectory \u003d file.getParentFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":" // check for existence of parentDirectory and file","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" if (!parentDirectory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" parentDirectory.mkdir();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Error creating data file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Goh-Li-Ting"},"content":" // load data from file","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Goh-Li-Ting"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Goh-Li-Ting"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Goh-Li-Ting"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Goh-Li-Ting"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Goh-Li-Ting"},"content":" // populate task array","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Goh-Li-Ting"},"content":" Task task \u003d Parser.parseToTask(fileScanner.nextLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Goh-Li-Ting"},"content":" taskList.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Data file not found.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Goh-Li-Ting"},"content":" return taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Goh-Li-Ting"},"content":" public void save(TaskList tasks) throws ChatBuddyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Goh-Li-Ting"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Goh-Li-Ting"},"content":" FileWriter fileWriter \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Goh-Li-Ting"},"content":" ArrayList\u003cString\u003e taskStrings \u003d tasks.getTaskStringsToSave();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Goh-Li-Ting"},"content":" for (String taskString : taskStrings) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Goh-Li-Ting"},"content":" fileWriter.write(taskString + System.lineSeparator());","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Goh-Li-Ting"},"content":" fileWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Goh-Li-Ting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Goh-Li-Ting"},"content":" throw new ChatBuddyException(\"Error saving data into file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":69}},{"path":"src/main/java/chatbuddy/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" private static final DateTimeFormatter FORMATTER_DATE_INPUT \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" private static final DateTimeFormatter FORMATTER_DATE_OUTPUT \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" * Constructor to create a chatbuddy.task.Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param description The task description.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param by The deadline of the task in the format dd/MM/yyyy.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns a boolean representing whether the task is due within a week.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return true if the deadline is due within a week, false otherwise","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" public boolean isWithinAWeek() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":" return by.isBefore(LocalDate.now().plus(1, ChronoUnit.WEEKS));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to get the string representation of the deadline task.","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return The string representation of the deadline task.","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Goh-Li-Ting"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Goh-Li-Ting"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(FORMATTER_DATE_OUTPUT) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns deadline task information in format for saving.","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Goh-Li-Ting"},"content":" * Format is D | [1 if completed, 0 if not completed] | [task description] | [by]","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return chatbuddy.task.Deadline task information in format for saving","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Goh-Li-Ting"},"content":" public String getInformationForSaving() {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Goh-Li-Ting"},"content":" return \"D | \" + super.getInformationForSaving() + \" | \" + by.format(FORMATTER_DATE_INPUT);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Goh-Li-Ting":55}},{"path":"src/main/java/chatbuddy/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" private static final DateTimeFormatter FORMATTER_DATETIME_INPUT \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" private static final DateTimeFormatter FORMATTER_DATETIME_OUTPUT \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" * Constructor to create an chatbuddy.task.Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param description The task description.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param from The task\u0027s start date/time in the format dd/MM/yyyy HHmm.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param to The task\u0027s end date/time in the format.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns a boolean representing whether the event starts within a week.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return true if the event starts within a week, false otherwise","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":" public boolean isWithinAWeek() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Goh-Li-Ting"},"content":" return from.isBefore(LocalDateTime.now().plus(1, ChronoUnit.WEEKS));","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to get the string representation of the event task.","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return The string representation of the event task.","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Goh-Li-Ting"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Goh-Li-Ting"},"content":" return String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Goh-Li-Ting"},"content":" \"[E]%1s (from: %2s to: %3s)\",","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Goh-Li-Ting"},"content":" super.toString(),","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Goh-Li-Ting"},"content":" from.format(FORMATTER_DATETIME_OUTPUT),","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Goh-Li-Ting"},"content":" to.format(FORMATTER_DATETIME_OUTPUT)","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Goh-Li-Ting"},"content":" );","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns deadline task information in format for saving.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Goh-Li-Ting"},"content":" * Format is E | [1 if completed, 0 if not completed] | [task description] | [from] | [to]","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return chatbuddy.task.Deadline task information in format for saving","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Goh-Li-Ting"},"content":" public String getInformationForSaving() {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Goh-Li-Ting"},"content":" return String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Goh-Li-Ting"},"content":" \"E | %1s | %2s | %3s\",","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Goh-Li-Ting"},"content":" super.getInformationForSaving(),","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Goh-Li-Ting"},"content":" from.format(FORMATTER_DATETIME_INPUT),","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Goh-Li-Ting"},"content":" to.format(FORMATTER_DATETIME_INPUT));","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Goh-Li-Ting":67}},{"path":"src/main/java/chatbuddy/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":" * Constructor to create a Task object.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param description The task description.","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" /** Method to mark task as done. */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" public void markAsDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" isDone \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" /** Method to mark task as not done. */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to get the status icon of the task based on whether the task is done.","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return The status icon of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns X if task is done,","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":" * else returns an empty space.","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Goh-Li-Ting"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns a boolean representing whether the task is due or an event starts within a week.","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return true if task is due / starts within a week, false otherwise","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Goh-Li-Ting"},"content":" public boolean isWithinAWeek() {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Goh-Li-Ting"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to get the string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return The string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Goh-Li-Ting"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Goh-Li-Ting"},"content":" return String.format(\"[%1s] %2s\", getStatusIcon(), description);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns task information in format for saving.","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Goh-Li-Ting"},"content":" * Format is [1 if completed, 0 if not completed] | [task description]","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return Task information in format for saving","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Goh-Li-Ting"},"content":" public String getInformationForSaving() {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Goh-Li-Ting"},"content":" return String.format(\"%1s | %2s\", isDone ? \"1\" : \"0\", description);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Goh-Li-Ting":66}},{"path":"src/main/java/chatbuddy/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":" * Constructor to create a chatbuddy.task.ToDo object.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":" * @param description The task description.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":" * Method to get the string representation of the todo task.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return The string representation of the todo task.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" * Returns todo task information in format for saving.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":" * Format is T | [1 if completed, 0 if not completed] | [task description]","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" * @return Todo task information in format for saving","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" public String getInformationForSaving() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":" return \"T | \" + super.getInformationForSaving();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Goh-Li-Ting":34}},{"path":"src/main/java/chatbuddy/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"package chatbuddy.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"import chatbuddy.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":" private final String DIVIDER \u003d \" ____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Goh-Li-Ting"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Goh-Li-Ting"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Goh-Li-Ting"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(this.DIVIDER);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Goh-Li-Ting"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Goh-Li-Ting"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Hello! I\u0027m Chat Buddy!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Goh-Li-Ting"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Goh-Li-Ting"},"content":" public void showExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Goh-Li-Ting"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" \" + errorMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Goh-Li-Ting"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Goh-Li-Ting"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Goh-Li-Ting"},"content":" public void showTaskList(ArrayList\u003cString\u003e taskStrings, String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" \" + message);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Goh-Li-Ting"},"content":" for (int i \u003d 0; i \u003c taskStrings.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Goh-Li-Ting"},"content":" String taskString \u003d taskStrings.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(String.format(\" %1s.%2s\", i + 1, taskString));","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Goh-Li-Ting"},"content":" public void showTaskAddition(Task task, int totalNumOfTasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(String.format(\" Now you have %d tasks in the list.\", totalNumOfTasks));","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Goh-Li-Ting"},"content":" public void showTaskDeletion(Task task, int totalNumOfTasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(String.format(\" Now you have %d tasks in the list.\", totalNumOfTasks));","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Goh-Li-Ting"},"content":" public void showMarkTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Goh-Li-Ting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Goh-Li-Ting"},"content":" public void showUnmarkTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Goh-Li-Ting"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Goh-Li-Ting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Goh-Li-Ting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Goh-Li-Ting":68}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Goh-Li-Ting"},"content":"todo buy groceries","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Goh-Li-Ting"},"content":"deadline do homework /by 02/09/2023","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Goh-Li-Ting"},"content":"event birthday party /from 03/09/2023 1400 /to 03/09/2023 1700","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Goh-Li-Ting"},"content":"deadline make CCA poster /by 30/08/2023","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Goh-Li-Ting"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Goh-Li-Ting"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Goh-Li-Ting"},"content":"todo buy hand soap","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Goh-Li-Ting"},"content":"unmark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Goh-Li-Ting"},"content":"delete 3","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Goh-Li-Ting"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Goh-Li-Ting"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Goh-Li-Ting":11}},{"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":"Goh-Li-Ting"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\chatbuddy\\*.java","lastModifiedDate":"2023-09-01"},{"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":"Goh-Li-Ting"},"content":"java -classpath ..\\bin chatbuddy.ChatBuddy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"-":19,"Goh-Li-Ting":2}}] diff --git a/Goh-Li-Ting_ip_master/commits.json b/Goh-Li-Ting_ip_master/commits.json index fca86349..7039ed49 100644 --- a/Goh-Li-Ting_ip_master/commits.json +++ b/Goh-Li-Ting_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Goh-Li-Ting":[{"date":"2023-08-23","commitResults":[{"hash":"51a9ed294f76d758b0492c4d5ec3e7650cbd0d14","isMergeCommit":false,"messageTitle":"Add greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":10}}},{"hash":"77c936ed3640f5aa2db09fecdd866d532cff02ce","isMergeCommit":false,"messageTitle":"Add ability to echo commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":4}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0b86517ee7e89a8ada0b606b7574db2efb185232","isMergeCommit":false,"messageTitle":"Add ability to add tasks to list and display list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":3}}},{"hash":"b00566faedc7693f45ac7a5ef049f0ae53ff46df","isMergeCommit":false,"messageTitle":"Add ability to mark as done and not done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":5}}},{"hash":"ba315951960c89ae8cdb02f5462ea4b3646fa87f","isMergeCommit":false,"messageTitle":"Add todo, event and deadline tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":151,"deletions":10}}},{"hash":"ee740f323639a6968328bfccde17f76a7a7cf6cf","isMergeCommit":false,"messageTitle":"Add text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"081d2c122284616b24658d732740a16f5c081f8a","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":22}}},{"hash":"a2b11215bdddd8c8622e6edebee9531891ca1803","isMergeCommit":false,"messageTitle":"Add ability to delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":36,"deletions":20}}}]},{"date":"2023-08-30","commitResults":[{"hash":"9353d334cb242b0128314c02295f5225bbbd26d3","isMergeCommit":false,"messageTitle":"Add ability to save tasks and retrieve saved tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":180,"deletions":54}}},{"hash":"cfdaac379a8317ffc633fa695eb596d9c61e92fd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"1ac6ce15befa330090524025a462e23ea41d24a6","isMergeCommit":false,"messageTitle":"Add datetime format to deadline and event","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":47,"deletions":13}}},{"hash":"1fb50d4433782137bb153df3b25bbff0bfb48822","isMergeCommit":false,"messageTitle":"Add ability to get deadlines/events within a week","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":12}}},{"hash":"21e28b28becb0b6ccb4e4a9a4cce53b857efc3d0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Goh-Li-Ting":{"java":597,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":11}},"authorContributionVariance":{"Goh-Li-Ting":24220.133},"authorDisplayNameMap":{"Goh-Li-Ting":"CS2103T-T14-1 GOH ..TING"}} +{"authorDailyContributionsMap":{"Goh-Li-Ting":[{"date":"2023-08-23","commitResults":[{"hash":"51a9ed294f76d758b0492c4d5ec3e7650cbd0d14","isMergeCommit":false,"messageTitle":"Add greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":10}}},{"hash":"77c936ed3640f5aa2db09fecdd866d532cff02ce","isMergeCommit":false,"messageTitle":"Add ability to echo commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":4}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0b86517ee7e89a8ada0b606b7574db2efb185232","isMergeCommit":false,"messageTitle":"Add ability to add tasks to list and display list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":3}}},{"hash":"b00566faedc7693f45ac7a5ef049f0ae53ff46df","isMergeCommit":false,"messageTitle":"Add ability to mark as done and not done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":5}}},{"hash":"ba315951960c89ae8cdb02f5462ea4b3646fa87f","isMergeCommit":false,"messageTitle":"Add todo, event and deadline tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":151,"deletions":10}}},{"hash":"ee740f323639a6968328bfccde17f76a7a7cf6cf","isMergeCommit":false,"messageTitle":"Add text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"081d2c122284616b24658d732740a16f5c081f8a","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":22}}},{"hash":"a2b11215bdddd8c8622e6edebee9531891ca1803","isMergeCommit":false,"messageTitle":"Add ability to delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":36,"deletions":20}}}]},{"date":"2023-08-30","commitResults":[{"hash":"9353d334cb242b0128314c02295f5225bbbd26d3","isMergeCommit":false,"messageTitle":"Add ability to save tasks and retrieve saved tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":180,"deletions":54}}},{"hash":"cfdaac379a8317ffc633fa695eb596d9c61e92fd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"1ac6ce15befa330090524025a462e23ea41d24a6","isMergeCommit":false,"messageTitle":"Add datetime format to deadline and event","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":47,"deletions":13}}},{"hash":"1fb50d4433782137bb153df3b25bbff0bfb48822","isMergeCommit":false,"messageTitle":"Add ability to get deadlines/events within a week","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":12}}},{"hash":"21e28b28becb0b6ccb4e4a9a4cce53b857efc3d0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"33c6a28dd68c80ec55f573ffbceaea0e71561034","isMergeCommit":false,"messageTitle":"Abstract out classes for OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":559,"deletions":377}}},{"hash":"0956f91098f1964af81dbba01d173e9214c608db","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"d387888547c12caa70f02cbe767846d15bce888b","isMergeCommit":false,"messageTitle":"Organise classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":6},"bat":{"insertions":2,"deletions":2}}},{"hash":"ab3ac453fc505436939bc4cde431dd5f879936f8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"ea87dd115ebb669ca515c29d51cf2832d661fec4","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6cd9a63857f98c1420c92344906df9a74c4b4228","isMergeCommit":false,"messageTitle":"Set up gradle to run ChatBuddy using gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"a5a12e6faf5f32644f9e69bc7efd2743578f47a5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Goh-Li-Ting":{"java":896,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":2,"txt":11}},"authorContributionVariance":{"Goh-Li-Ting":84373.92},"authorDisplayNameMap":{"Goh-Li-Ting":"CS2103T-T14-1 GOH ..TING"}} diff --git a/Heran9_ip_master/authorship.json b/Heran9_ip_master/authorship.json index e8f7c074..0f454469 100644 --- a/Heran9_ip_master/authorship.json +++ b/Heran9_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":"Heran9"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter:5.8.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" mainClass.set(\"moss.Moss\")","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" archiveBaseName \u003d \"moss.Moss\"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Heran9":5,"-":40}},{"path":"data/Moss.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"T | | Buy groceries","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":1}},{"path":"src/main/java/Moss/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" public LocalDate date;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" * Constructs a Moss.Deadline object with the given description and deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" * @param date The deadline for the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" public Deadline(String description, LocalDate date) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" public String toString(String x) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" return \"D | \" + super.toString() + \" | \" + date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" return \"D | \" + super.toString() + \" | \" + date + \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Heran9":31}},{"path":"src/main/java/Moss/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" public LocalDate fromDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":" public LocalDate toDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" * Constructs an Moss.Event object with the given description, start time, and end time.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" * @param fromDate The start time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" * @param toDate The end time of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" public Event(String description, LocalDate fromDate, LocalDate toDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" public String toString(String x) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" return \"E | \" + super.toString() + \" | \" + fromDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \" | \" + toDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" return \"E | \" + super.toString() + \" | \" + fromDate + \" | \" + toDate + \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Heran9":32}},{"path":"src/main/java/Moss/Moss.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":" * Moss.Moss is a simple task management application that allows users to add, list, mark, unmark, and delete tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"public class Moss {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" static ArrayList\u003cTask\u003e things \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" private UI ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" * The main method that initializes the application and handles user input.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" * @param args Command-line arguments (not used in this application).","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" public static void main(String[] args) throws MossException {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" things \u003d (ArrayList\u003cTask\u003e) storage.loadTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"Failed to load tasks\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" UI ui \u003d new UI();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" ui.greeting();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" String message \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" // Process user input until \"bye\" is entered","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" while (!message.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" TaskList taskList\u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" Parser parser \u003d new Parser(message, things, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" parser.execute(message, things, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" message \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" // Farewell message","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" ui.bye();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Heran9":43}},{"path":"src/main/java/Moss/MossException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"public class MossException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":" public MossException(String error) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":" super(error);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Heran9":7}},{"path":"src/main/java/Moss/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":" private String command;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":" private ArrayList\u003cTask\u003e things;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" public Parser(String command, ArrayList\u003cTask\u003e things, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" this.things \u003d things;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" public void execute(String message, ArrayList\u003cTask\u003e things, Storage storage) throws MossException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" TaskList.command(message, things, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Heran9":19}},{"path":"src/main/java/Moss/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" private final String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" public Storage() throws MossException{","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" this.filePath \u003d \"./data/Moss.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" Files.createDirectories(Path.of(this.filePath).getParent());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" Files.createFile(Path.of(this.filePath));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"Could not create\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" public List\u003cTask\u003e loadTasks() throws MossException{","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" if (file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" String[] tokens \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" String type \u003d tokens[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" boolean marked \u003d Objects.equals(tokens[1], \"X\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" String description \u003d tokens[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":" String by \u003d tokens[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":" LocalDate date \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":" task \u003d new Deadline(description, date);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Heran9"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Heran9"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Heran9"},"content":" String from \u003d tokens[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Heran9"},"content":" LocalDate fromDate \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Heran9"},"content":" String to \u003d tokens[4];","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Heran9"},"content":" LocalDate toDate \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Heran9"},"content":" task \u003d new Event(description, fromDate, toDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Heran9"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Heran9"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"invalid task type\");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Heran9"},"content":" if (marked){","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Heran9"},"content":" task.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Heran9"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Heran9"},"content":" reader.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Heran9"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"error loading\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Heran9"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Heran9"},"content":" public void saveTasks(List\u003cTask\u003e tasks) throws MossException {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Heran9"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Heran9"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath));","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Heran9"},"content":" List\u003cString\u003e data \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Heran9"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Heran9"},"content":" data.add(task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Heran9"},"content":" Files.write(Path.of(filePath), data);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Heran9"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Heran9"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"Saving error\");","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Heran9"},"content":"// Example usage","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Heran9":92}},{"path":"src/main/java/Moss/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":" * Represents a task with a description and completion status.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":" public String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" public boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" * Constructs a Moss.Task object with the given description and sets its completion status to false.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" * Gets a status icon representing the completion status of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" * @return An \"X\" if the task is done, otherwise a space.","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" * Marks the task as done and prints a confirmation message.","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" System.out.println(this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":" * Marks the task as not done and prints a confirmation message.","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Heran9"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Heran9"},"content":" System.out.println(this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"Heran9"},"content":" * Returns a string representation of the task, including its completion status and description.","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Heran9"},"content":" * @return The formatted string.","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Heran9"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"Heran9"},"content":" return getStatusIcon() + \" | \" + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Heran9"},"content":" public String toString(String x) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Heran9"},"content":" return getStatusIcon() + \" | \" + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Heran9":67}},{"path":"src/main/java/Moss/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" public static void command(String message, ArrayList\u003cTask\u003e things, Storage storage) throws MossException{","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":" if (message.equals(\"list\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" // List all tasks","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" for (int i \u003d 0; i \u003c things.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" System.out.println(i+1 + \".\" + things.get(i).toString(\"x\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" else if (message.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" // Mark a task as done","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" String indexSubstring \u003d message.substring(5);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" int index \u003d Integer.parseInt(indexSubstring) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" things.get(index).markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(things);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" else if (message.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" // Mark a task as undone","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" String indexSubstring \u003d message.substring(7);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" int index \u003d Integer.parseInt(indexSubstring) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" things.get(index).markUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(things);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" else if (message.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" // Delete a task","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" String indexSubstring \u003d message.substring(7);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" int index \u003d Integer.parseInt(indexSubstring) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" Task temp \u003d things.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" System.out.println(temp.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Now you have \" + things.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(things);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" else {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":" // Process other commands using the command method","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":" if (message.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":" // check if the command is valid otherwise throw errors","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":" if (message.length() \u003c\u003d 5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Heran9"},"content":" ToDo task \u003d new ToDo(message.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Heran9"},"content":" things.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(things);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Heran9"},"content":" // Add a deadline task","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Heran9"},"content":" else if (message.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Heran9"},"content":" // Find the position of \"/by\" in the input","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Heran9"},"content":" if (message.length() \u003c\u003d 9) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Heran9"},"content":" int byIndex \u003d message.indexOf(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Heran9"},"content":" // Extract the substring after \"/by\"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Heran9"},"content":" String deadlineInfo \u003d message.substring(byIndex + 4).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Heran9"},"content":" // Split the deadlineInfo by space to get individual parts","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Heran9"},"content":" String[] parts \u003d deadlineInfo.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Heran9"},"content":" // The day is the last part of the parts array","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Heran9"},"content":" String day \u003d parts[parts.length - 1];","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Heran9"},"content":" LocalDate date \u003d LocalDate.parse(day);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Heran9"},"content":" // Extract the substring before \"/by\"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Heran9"},"content":" String taskDescription \u003d message.substring(9, byIndex).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Heran9"},"content":" Deadline task \u003d new Deadline(taskDescription, date);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Heran9"},"content":" things.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(things);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Heran9"},"content":" // Add an event task","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Heran9"},"content":" else if (message.startsWith(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Heran9"},"content":" if (message.length() \u003c\u003d 6) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Heran9"},"content":" int byIndex \u003d message.indexOf(\"/from\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Heran9"},"content":" int fromIndex \u003d message.indexOf(\"/from\");","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Heran9"},"content":" int toIndex \u003d message.indexOf(\"/to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Heran9"},"content":" // Extract the substring between \"/from\" and \"/to\" and behind \"to\"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Heran9"},"content":" String from \u003d message.substring(fromIndex + 5, toIndex).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Heran9"},"content":" LocalDate fromDate \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Heran9"},"content":" String to \u003d message.substring(toIndex + 3).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Heran9"},"content":" LocalDate toDate \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Heran9"},"content":" String taskDescription \u003d message.substring(6, byIndex).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Heran9"},"content":" Event task \u003d new Event(taskDescription, fromDate, toDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Heran9"},"content":" things.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(things);","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Heran9"},"content":" // check if the command is valid otherwise throw errors","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Heran9"},"content":" else {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Heran9"},"content":" // Invalid command","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Heran9"},"content":" // Provide feedback about the added task","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \");","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Heran9"},"content":" System.out.println(things.get(things.size() - 1).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Now you have \" + things.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Heran9":115}},{"path":"src/main/java/Moss/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import moss.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":" * Constructs a Moss.ToDo object with the given description.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":" * @param description The description of the to-do task.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" return \"T | \" + super.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" public String toString(String x) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" return \"T | \" + super.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Heran9":24}},{"path":"src/main/java/Moss/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"public class UI {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":" public void greeting(){","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":" String greet \u003d \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":" + \"Hello! I\u0027m Moss \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":" + \"What can I do for you? \\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" + \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":" System.out.println(greet);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" public void bye(){","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" public void welcome(){","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Welcome to Moss.Moss! How can I help you today?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Heran9":24}},{"path":"src/test/java/moss/MossTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss; //same package as the class being tested","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"public class MossTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":" public void dummyTest(){","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" public void anotherDummyTest(){","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" assertEquals(4, 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":17}},{"path":"src/test/java/moss/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import moss.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" public void testLoadAndSaveTasks() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" // Create sample tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" tasks.add(new ToDo(\"Buy groceries\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" tasks.add(new Deadline(\"Finish homework\", LocalDate.parse(\"2023-09-15\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" tasks.add(new Event(\"Party\", LocalDate.parse(\"2023-09-20\"), LocalDate.parse(\"2023-09-22\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" tasks.get(0).markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" // Create a storage instance","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" // Save tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" // Load tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" List\u003cTask\u003e loadedTasks \u003d storage.loadTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" // Check if tasks are loaded correctly","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" assertEquals(3, loadedTasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" assertEquals(\"Buy groceries\", loadedTasks.get(0).description);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" assertTrue(loadedTasks.get(0).isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" assertEquals(\"Finish homework\", loadedTasks.get(1).description);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" assertFalse(loadedTasks.get(1).isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" assertEquals(LocalDate.parse(\"2023-09-15\"), ((Deadline) loadedTasks.get(1)).date);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":" assertEquals(\"Party\", loadedTasks.get(2).description);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" assertFalse(loadedTasks.get(2).isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":" assertEquals(LocalDate.parse(\"2023-09-20\"), ((Event) loadedTasks.get(2)).fromDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":" assertEquals(LocalDate.parse(\"2023-09-22\"), ((Event) loadedTasks.get(2)).toDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":49}},{"path":"src/test/java/moss/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" public void setUp() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" public void testCommand_AddToDo() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" TaskList.command(\"todo Buy groceries\", tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" assertEquals(1, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" assertTrue(tasks.get(0) instanceof ToDo);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" public void testCommand_AddDeadline() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" TaskList.command(\"deadline Finish homework /by 2023-09-15\", tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" assertEquals(1, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" assertTrue(tasks.get(0) instanceof Deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" assertEquals(LocalDate.parse(\"2023-09-14\"), ((Deadline) tasks.get(0)).date);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" public void testCommand_AddEvent() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" TaskList.command(\"event Party /from 2023-09-20 /to 2023-09-22\", tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" assertEquals(1, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":" assertTrue(tasks.get(0) instanceof Event);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":" assertEquals(LocalDate.parse(\"2023-09-21\"), ((Event) tasks.get(0)).fromDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" assertEquals(LocalDate.parse(\"2023-09-22\"), ((Event) tasks.get(0)).toDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":" public void testCommand_MarkTaskDone() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Heran9"},"content":" Task task \u003d new ToDo(\"Buy groceries\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Heran9"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Heran9"},"content":" TaskList.command(\"mark 1\", tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Heran9"},"content":" assertTrue(task.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Heran9"},"content":" public void testCommand_MarkTaskUndone() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Heran9"},"content":" Task task \u003d new ToDo(\"Buy groceries\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Heran9"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Heran9"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Heran9"},"content":" TaskList.command(\"unmark 1\", tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Heran9"},"content":" assertFalse(task.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Heran9"},"content":" public void testCommand_DeleteTask() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Heran9"},"content":" Task task \u003d new ToDo(\"Buy groceries\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Heran9"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Heran9"},"content":" TaskList.command(\"delete 1\", tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Heran9"},"content":" assertEquals(0, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Heran9"},"content":" // Add more tests for other cases, error conditions, etc.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":76}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"todo learn coding","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"event zoom lecture /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"todo get haircut","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":"event zoom lecture /from Tue 4pm /to 6pm","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":"deadline group project /by 2023.8.29","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":"mark 5","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Heran9":13}},{"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":"Heran9"},"content":"java -classpath ..\\bin Moss \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"Heran9":1,"-":20}}] +[{"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":"Heran9"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter:5.8.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" mainClass.set(\"moss.Moss\")","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" archiveBaseName \u003d \"moss\"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" archiveFileName \u003d \u0027moss.jar\u0027","lastModifiedDate":"2023-09-01"},{"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":"Heran9"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Heran9":6,"-":40}},{"path":"data/Moss.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"T | | Buy groceries","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"T | | coffee","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":3}},{"path":"src/main/java/Moss/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":" * Represents a task with a specific deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" * The deadline date for the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" private LocalDate date;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" * Constructs a new Deadline object with the given description and deadline date.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" * @param date The deadline date for the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" public Deadline(String description, LocalDate date) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" /** Returns the deadline for the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" * @return The deadline for the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" public LocalDate getDate() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" return date;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" * Returns a string representation of the Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" * @param x A placeholder parameter to differentiate this method signature.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" * @return A formatted string containing task type, description, and deadline date.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" public String toString(String x) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":" return \"D | \" + super.toString() + \" | \" + date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Heran9"},"content":" * Returns a string representation of the Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Heran9"},"content":" * @return A string containing task type, description, and unformatted deadline date.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Heran9"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Heran9"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Heran9"},"content":" return \"D | \" + super.toString() + \" | \" + date;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":57}},{"path":"src/main/java/Moss/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":" * Represents an event task with a specific start time and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" * The start date of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" private LocalDate fromDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" * The end date of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" private LocalDate toDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" * Constructs a new Event object with the given description, start date, and end date.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" * @param fromDate The start date of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" * @param toDate The end date of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" public Event(String description, LocalDate fromDate, LocalDate toDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" * Returns the start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" * @return The start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" public LocalDate getFromDate() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":" return fromDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":" * Returns the end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":" * @return The end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Heran9"},"content":" public LocalDate getToDate() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Heran9"},"content":" return toDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Heran9"},"content":" * Returns a string representation of the Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Heran9"},"content":" * @param x A placeholder parameter to differentiate this method signature.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Heran9"},"content":" * @return A formatted string containing event type, description, start date, and end date.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Heran9"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Heran9"},"content":" public String toString(String x) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Heran9"},"content":" return \"E | \" + super.toString() + \" | \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Heran9"},"content":" fromDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \" | \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Heran9"},"content":" toDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Heran9"},"content":" * Returns a string representation of the Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Heran9"},"content":" * @return A string containing event type, description, unformatted start date, and unformatted end date.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Heran9"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"Heran9"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"Heran9"},"content":" return \"E | \" + super.toString() + \" | \" + fromDate + \" | \" + toDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":76}},{"path":"src/main/java/Moss/Moss.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":" * Moss is a simple task management application that allows users to add, list, mark, unmark, and delete tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"public class Moss {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" * The list of tasks managed by the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" static ArrayList\u003cTask\u003e things \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" * The main method that initializes the application and handles user input.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" * @param args Command-line arguments (not used in this application).","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue with loading tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" public static void main(String[] args) throws MossException {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" things \u003d (ArrayList\u003cTask\u003e) storage.loadTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"Failed to load tasks\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" UI ui \u003d new UI();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" ui.greeting();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" String message \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" // Process user input until \"bye\" is entered","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" while (!message.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" Parser parser \u003d new Parser(message, things, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" parser.execute(message, things, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" message \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":" // Farewell message","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" ui.bye();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":47}},{"path":"src/main/java/Moss/MossException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"public class MossException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":" public MossException(String error) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":" super(error);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Heran9":7}},{"path":"src/main/java/Moss/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":" * The Parser class is responsible for parsing and executing user commands for task management.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":" private String command;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" private ArrayList\u003cTask\u003e things;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" * Constructs a Parser object with the specified parameters.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" * @param command The user command to be parsed and executed.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" * @param things The list of tasks to be managed.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" * @param storage The storage object for saving and loading tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" public Parser(String command, ArrayList\u003cTask\u003e things, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" this.things \u003d things;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" * Executes the parsed user command by delegating to the TaskList class.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" * @param message The user command to be executed.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" * @param things The list of tasks to be managed.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" * @param storage The storage object for saving and loading tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue with task management.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" public void execute(String message, ArrayList\u003cTask\u003e things, Storage storage) throws MossException {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" TaskList.command(message, things, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":39}},{"path":"src/main/java/Moss/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" * The Storage class handles the loading and saving of tasks to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" private final String FILE_PATH;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" * Constructs a Storage object with the default file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue creating the file or directory.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" public Storage() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" this.FILE_PATH \u003d \"./data/Moss.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" Files.createDirectories(Path.of(this.FILE_PATH).getParent());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" Files.createFile(Path.of(this.FILE_PATH));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"Could not create file or directory\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" * Loads tasks from the file and returns a list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" * @return A list of tasks loaded from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue reading the file or parsing tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" public List\u003cTask\u003e loadTasks() throws MossException {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":" if (file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Heran9"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Heran9"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Heran9"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Heran9"},"content":" String[] tokens \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Heran9"},"content":" String type \u003d tokens[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Heran9"},"content":" boolean marked \u003d Objects.equals(tokens[1], \"X\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Heran9"},"content":" String description \u003d tokens[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Heran9"},"content":" Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Heran9"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Heran9"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Heran9"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Heran9"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Heran9"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Heran9"},"content":" String by \u003d tokens[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Heran9"},"content":" LocalDate date \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Heran9"},"content":" task \u003d new Deadline(description, date);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Heran9"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Heran9"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Heran9"},"content":" String from \u003d tokens[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Heran9"},"content":" LocalDate fromDate \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Heran9"},"content":" String to \u003d tokens[4];","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Heran9"},"content":" LocalDate toDate \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Heran9"},"content":" task \u003d new Event(description, fromDate, toDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Heran9"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Heran9"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"Invalid task type\");","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Heran9"},"content":" if (marked) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Heran9"},"content":" task.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Heran9"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Heran9"},"content":" reader.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Heran9"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"Error loading tasks from file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Heran9"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"Heran9"},"content":" * Saves a list of tasks to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Heran9"},"content":" * @param tasks The list of tasks to be saved.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue writing to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"Heran9"},"content":" public void saveTasks(List\u003cTask\u003e tasks) throws MossException {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Heran9"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Heran9"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(FILE_PATH));","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"Heran9"},"content":" List\u003cString\u003e data \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Heran9"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Heran9"},"content":" data.add(task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Heran9"},"content":" Files.write(Path.of(FILE_PATH), data);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"Heran9"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Heran9"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"Error saving tasks to file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"Heran9"},"content":"// Example usage","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Heran9":113}},{"path":"src/main/java/Moss/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":" * Represents a task with a description and completion status.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" private boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" * Constructs a Moss.Task object with the given description and sets its completion status to false.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" * Gets the completion status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" * @return True if the task is done, otherwise false.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" public boolean isDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" return isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" * Gets the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" * @return The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" return description;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":" * Gets a status icon representing the completion status of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":" * @return An \"X\" if the task is done, otherwise a space.","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Heran9"},"content":" * Marks the task as done and prints a confirmation message.","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Heran9"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Heran9"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Heran9"},"content":" System.out.println(this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"Heran9"},"content":" * Marks the task as not done and prints a confirmation message.","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"Heran9"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Heran9"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"Heran9"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"Heran9"},"content":" System.out.println(this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"Heran9"},"content":" * Returns a string representation of the task, including its completion status and description.","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"Heran9"},"content":" * @return The formatted string.","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"Heran9"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"Heran9"},"content":" return getStatusIcon() + \" | \" + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Heran9"},"content":" public String toString(String x) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Heran9"},"content":" return getStatusIcon() + \" | \" + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Heran9":85}},{"path":"src/main/java/Moss/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":" * The TaskList class handles processing and executing user commands related to task management.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" * Processes and executes user commands related to task management.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" * @param message The user command to be processed.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" * @param things The list of tasks being managed.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" * @param storage The storage object for saving tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue with processing commands or managing tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" public static void command(String message, ArrayList\u003cTask\u003e things, Storage storage) throws MossException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" if (message.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" // List all tasks","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" for (int i \u003d 0; i \u003c things.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" System.out.println(i + 1 + \".\" + things.get(i).toString(\"x\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" } else if (message.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" // Mark a task as done","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" String indexSubstring \u003d message.substring(5);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" int index \u003d Integer.parseInt(indexSubstring) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" things.get(index).markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(things);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" } else if (message.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" // Mark a task as undone","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" String indexSubstring \u003d message.substring(7);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" int index \u003d Integer.parseInt(indexSubstring) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" things.get(index).markUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(things);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" } else if (message.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":" // Delete a task","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":" String indexSubstring \u003d message.substring(7);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" int index \u003d Integer.parseInt(indexSubstring) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":" Task temp \u003d things.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":" System.out.println(temp.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Now you have \" + things.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(things);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Heran9"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Heran9"},"content":" // Process other commands using the command method","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Heran9"},"content":" if (message.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Heran9"},"content":" // check if the command is valid otherwise throw errors","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Heran9"},"content":" if (message.length() \u003c\u003d 5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Heran9"},"content":" ToDo task \u003d new ToDo(message.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Heran9"},"content":" things.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(things);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Heran9"},"content":" // Provide feedback about the added task","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Heran9"},"content":" System.out.println(things.get(things.size() - 1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Now you have \" + things.size() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Heran9"},"content":" // Add a deadline task","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Heran9"},"content":" else if (message.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Heran9"},"content":" // Find the position of \"/by\" in the input","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Heran9"},"content":" if (message.length() \u003c\u003d 9) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Heran9"},"content":" int byIndex \u003d message.indexOf(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Heran9"},"content":" // Extract the substring after \"/by\"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Heran9"},"content":" String deadlineInfo \u003d message.substring(byIndex + 4).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Heran9"},"content":" // Split the deadlineInfo by space to get individual parts","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Heran9"},"content":" String[] parts \u003d deadlineInfo.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Heran9"},"content":" // The day is the last part of the parts array","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Heran9"},"content":" String day \u003d parts[parts.length - 1];","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Heran9"},"content":" LocalDate date \u003d LocalDate.parse(day);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Heran9"},"content":" // Extract the substring before \"/by\"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Heran9"},"content":" String taskDescription \u003d message.substring(9, byIndex).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Heran9"},"content":" Deadline task \u003d new Deadline(taskDescription, date);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Heran9"},"content":" things.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(things);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Heran9"},"content":" // Provide feedback about the added task","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"Heran9"},"content":" System.out.println(things.get(things.size() - 1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Now you have \" + things.size() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Heran9"},"content":" // Add an event task","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Heran9"},"content":" else if (message.startsWith(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Heran9"},"content":" if (message.length() \u003c\u003d 6) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Heran9"},"content":" int byIndex \u003d message.indexOf(\"/from\");","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Heran9"},"content":" int fromIndex \u003d message.indexOf(\"/from\");","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Heran9"},"content":" int toIndex \u003d message.indexOf(\"/to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Heran9"},"content":" // Extract the substring between \"/from\" and \"/to\" and behind \"to\"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Heran9"},"content":" String from \u003d message.substring(fromIndex + 5, toIndex).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Heran9"},"content":" LocalDate fromDate \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Heran9"},"content":" String to \u003d message.substring(toIndex + 3).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Heran9"},"content":" LocalDate toDate \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Heran9"},"content":" String taskDescription \u003d message.substring(6, byIndex).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"Heran9"},"content":" Event task \u003d new Event(taskDescription, fromDate, toDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"Heran9"},"content":" things.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(things);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"Heran9"},"content":" // Provide feedback about the added task","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \");","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"Heran9"},"content":" System.out.println(things.get(things.size() - 1).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Now you have \" + things.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"Heran9"},"content":" else if (message.startsWith(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"Heran9"},"content":" String taskDescription \u003d message.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"Heran9"},"content":" int count \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Here are the matching tasks in your list: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"Heran9"},"content":" for (int i \u003d 0; i \u003c things.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"Heran9"},"content":" if (things.get(i).description.contains(taskDescription)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"Heran9"},"content":" count++;","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"Heran9"},"content":" System.out.println(count + \". \" + things.get(i).toString(\"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"Heran9"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"Heran9"},"content":" System.out.println(\"There is no matching task.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"Heran9"},"content":" // check if the command is valid otherwise throw errors","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"Heran9"},"content":" else {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"Heran9"},"content":" // Invalid command","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"Heran9"},"content":" throw new MossException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Heran9":151}},{"path":"src/main/java/Moss/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":" * Represents a to-do task that can be managed in the task management application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":" * Constructs a new ToDo object with the given description.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" * @param description The description of the to-do task.","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" * Returns a string representation of the ToDo object.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" * @return A string containing task type and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" return \"T | \" + super.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" * Returns a string representation of the ToDo object.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" * @param x A placeholder parameter to differentiate this method signature.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" * @return A string containing task type and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" public String toString(String x) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" return \"T | \" + super.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":38}},{"path":"src/main/java/Moss/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":" * The UI class handles user interface interactions and provides messages for the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"public class UI {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":" * Displays a greeting message when the application starts.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" public void greeting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" String greet \u003d \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" + \"Hello! I\u0027m Moss \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" + \"What can I do for you? \\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" + \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" System.out.println(greet);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" * Displays a farewell message when the application is about to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" public void bye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" * Displays a welcome message when the application is launched.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" public void welcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" System.out.println(\"Welcome to Moss.Moss! How can I help you today?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":37}},{"path":"src/test/java/moss/MossTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss; //same package as the class being tested","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"public class MossTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":" public void dummyTest(){","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" public void anotherDummyTest(){","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" assertEquals(4, 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":17}},{"path":"src/test/java/moss/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import moss.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" * The StorageTest class contains unit tests for the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" * Tests the loading and saving of tasks using the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue with loading or saving tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" public void testLoadAndSaveTasks() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" // Create sample tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" tasks.add(new ToDo(\"Buy groceries\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" tasks.add(new Deadline(\"Finish homework\", LocalDate.parse(\"2023-09-15\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" tasks.add(new Event(\"Party\", LocalDate.parse(\"2023-09-20\"), LocalDate.parse(\"2023-09-22\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" tasks.get(0).markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" // Create a storage instance","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" // Save tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":" // Load tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" List\u003cTask\u003e loadedTasks \u003d storage.loadTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":" // Check if tasks are loaded correctly","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" assertEquals(3, loadedTasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":" assertTrue(loadedTasks.get(0).isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":" assertEquals(\"Finish homework\", loadedTasks.get(1).getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Heran9"},"content":" assertFalse(loadedTasks.get(1).isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Heran9"},"content":" assertEquals(LocalDate.parse(\"2023-09-15\"), ((Deadline) loadedTasks.get(1)).getDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Heran9"},"content":" assertEquals(\"Party\", loadedTasks.get(2).getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Heran9"},"content":" assertFalse(loadedTasks.get(2).isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Heran9"},"content":" assertEquals(LocalDate.parse(\"2023-09-20\"), ((Event) loadedTasks.get(2)).getFromDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Heran9"},"content":" assertEquals(LocalDate.parse(\"2023-09-22\"), ((Event) loadedTasks.get(2)).getToDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":58}},{"path":"src/test/java/moss/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"package moss;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":" * The TaskListTest class contains unit tests for the TaskList class.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Heran9"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Heran9"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Heran9"},"content":" * Sets up the test environment before each test method is executed.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue with setting up the environment.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Heran9"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Heran9"},"content":" public void setUp() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Heran9"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Heran9"},"content":" storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Heran9"},"content":" * Tests the \u0027command\u0027 method for adding a to-do task.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue with task management.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Heran9"},"content":" public void testCommand_AddToDo() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Heran9"},"content":" TaskList.command(\"todo Buy groceries\", tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Heran9"},"content":" assertEquals(1, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Heran9"},"content":" assertTrue(tasks.get(0) instanceof ToDo);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Heran9"},"content":" * Tests the \u0027command\u0027 method for adding a deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue with task management.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Heran9"},"content":" public void testCommand_AddDeadline() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Heran9"},"content":" TaskList.command(\"deadline Finish homework /by 2023-09-15\", tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Heran9"},"content":" assertEquals(1, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Heran9"},"content":" assertTrue(tasks.get(0) instanceof Deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Heran9"},"content":" assertEquals(LocalDate.parse(\"2023-09-14\"), ((Deadline) tasks.get(0)).getDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Heran9"},"content":" * Tests the \u0027command\u0027 method for adding an event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue with task management.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Heran9"},"content":" public void testCommand_AddEvent() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Heran9"},"content":" TaskList.command(\"event Party /from 2023-09-20 /to 2023-09-22\", tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Heran9"},"content":" assertEquals(1, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Heran9"},"content":" assertTrue(tasks.get(0) instanceof Event);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Heran9"},"content":" assertEquals(LocalDate.parse(\"2023-09-21\"), ((Event) tasks.get(0)).getFromDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Heran9"},"content":" assertEquals(LocalDate.parse(\"2023-09-22\"), ((Event) tasks.get(0)).getToDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Heran9"},"content":" * Tests the \u0027command\u0027 method for marking a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue with task management.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Heran9"},"content":" public void testCommand_MarkTaskDone() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Heran9"},"content":" Task task \u003d new ToDo(\"Buy groceries\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Heran9"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Heran9"},"content":" TaskList.command(\"mark 1\", tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Heran9"},"content":" assertTrue(task.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Heran9"},"content":" * Tests the \u0027command\u0027 method for marking a task as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue with task management.","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"Heran9"},"content":" public void testCommand_MarkTaskUndone() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Heran9"},"content":" Task task \u003d new ToDo(\"Buy groceries\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"Heran9"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"Heran9"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Heran9"},"content":" TaskList.command(\"unmark 1\", tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Heran9"},"content":" assertFalse(task.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"Heran9"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"Heran9"},"content":" * Tests the \u0027command\u0027 method for deleting a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"Heran9"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"Heran9"},"content":" * @throws MossException If there\u0027s an issue with task management.","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"Heran9"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"Heran9"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"Heran9"},"content":" public void testCommand_DeleteTask() throws MossException {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"Heran9"},"content":" Task task \u003d new ToDo(\"Buy groceries\");","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"Heran9"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"Heran9"},"content":" TaskList.command(\"delete 1\", tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"Heran9"},"content":" assertEquals(0, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"Heran9"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"Heran9"},"content":" // Add more tests for other cases, error conditions, etc.","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"Heran9"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"Heran9"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Heran9":114}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Heran9"},"content":"todo learn coding","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Heran9"},"content":"event zoom lecture /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Heran9"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Heran9"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Heran9"},"content":"todo get haircut","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Heran9"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Heran9"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Heran9"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Heran9"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Heran9"},"content":"event zoom lecture /from Tue 4pm /to 6pm","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Heran9"},"content":"deadline group project /by 2023.8.29","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Heran9"},"content":"mark 5","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Heran9"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Heran9":13}},{"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":"Heran9"},"content":"java -classpath ..\\bin Moss \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"Heran9":1,"-":20}}] diff --git a/Heran9_ip_master/commits.json b/Heran9_ip_master/commits.json index fa4cfbf8..cc18a67d 100644 --- a/Heran9_ip_master/commits.json +++ b/Heran9_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Heran9":[{"date":"2023-08-24","commitResults":[{"hash":"def15047cbfd90dcf8973cbd5fe6511fc1328213","isMergeCommit":false,"messageTitle":"add Moss.java, remove Duke.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"902371b5c96c0f21a2687209d40bfc8e01c7bc60","isMergeCommit":false,"messageTitle":"add echo, make it a parrot","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":4}}},{"hash":"19798a3508fba4addc1fabb7f9d6d6e318a0f662","isMergeCommit":false,"messageTitle":"add Add, List make it a little notebook","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"e8a08b43fe6ebbcf9db0269cad471d66f084bc16","isMergeCommit":false,"messageTitle":"add Task class, change the message type String to Task, make it can be marked or unmarked.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":3}}},{"hash":"0761fcd2b9cccc4a8a212d2b314cbd261b64cb9c","isMergeCommit":false,"messageTitle":"add different tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":2}}},{"hash":"5e4925d31264fde3c4b5d990649986ce476c86c9","isMergeCommit":false,"messageTitle":"automate test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":1,"deletions":1},"bat":{"insertions":1,"deletions":1}}},{"hash":"282985301c285a0d630545db88c7b38870c1d766","isMergeCommit":false,"messageTitle":"add exception handler","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":36}}},{"hash":"ccf4acba1bba98d50fde197f5a9cdd951453c9e8","isMergeCommit":false,"messageTitle":"add command delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"d2cd25148fc61821e136c2ec0dc347f657bc0957","isMergeCommit":false,"messageTitle":"add more javadocs","messageBody":"","tags":["Level-6(modified)"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":2}}},{"hash":"e5856b6e9031cba9c19cf3b92057f77730e27085","isMergeCommit":false,"messageTitle":"removed emoji, there are some errors happened when using emoji in the string sentence at the automate test stage, dk why this happens","messageBody":"","tags":["Level-6(modified-1)"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":5}}}]},{"date":"2023-08-31","commitResults":[{"hash":"6672936fd519c410ea2f854b0493ff5ab6191a8d","isMergeCommit":false,"messageTitle":"read and write file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":106,"deletions":6}}},{"hash":"4c37f51963ee1f798c706ac39e9b3bbdef4c7380","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"59d739509f057b1ee4b47ae430a77552baf42933","isMergeCommit":false,"messageTitle":"add datetime","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5},"java":{"insertions":36,"deletions":17}}},{"hash":"9663f19f6e970b457ab2867e8fa568c016bec468","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6a5046e6cf7686e76c199f768458670c20438ba5","isMergeCommit":false,"messageTitle":"make it more oop","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":4},"java":{"insertions":183,"deletions":147}}},{"hash":"b2b231f9b716834a6e795308f456ac5064e3a5cf","isMergeCommit":false,"messageTitle":"put all in a package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}},{"hash":"da886a161f447e4776505d50fe0f2d6b9d4868b3","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"1eb4e85842bf9b43e562803770812b49997a00c9","isMergeCommit":false,"messageTitle":"Junit test","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":2},"txt":{"insertions":1,"deletions":4},"java":{"insertions":175,"deletions":23}}}]}]},"authorFileTypeContributionMap":{"Heran9":{"java":596,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":5,"txt":14}},"authorContributionVariance":{"Heran9":28596.648},"authorDisplayNameMap":{"Heran9":"CS2103T-F10-4 LANG..ERAN"}} +{"authorDailyContributionsMap":{"Heran9":[{"date":"2023-08-24","commitResults":[{"hash":"def15047cbfd90dcf8973cbd5fe6511fc1328213","isMergeCommit":false,"messageTitle":"add Moss.java, remove Duke.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"902371b5c96c0f21a2687209d40bfc8e01c7bc60","isMergeCommit":false,"messageTitle":"add echo, make it a parrot","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":4}}},{"hash":"19798a3508fba4addc1fabb7f9d6d6e318a0f662","isMergeCommit":false,"messageTitle":"add Add, List make it a little notebook","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"e8a08b43fe6ebbcf9db0269cad471d66f084bc16","isMergeCommit":false,"messageTitle":"add Task class, change the message type String to Task, make it can be marked or unmarked.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":3}}},{"hash":"0761fcd2b9cccc4a8a212d2b314cbd261b64cb9c","isMergeCommit":false,"messageTitle":"add different tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":2}}},{"hash":"5e4925d31264fde3c4b5d990649986ce476c86c9","isMergeCommit":false,"messageTitle":"automate test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":1,"deletions":1},"bat":{"insertions":1,"deletions":1}}},{"hash":"282985301c285a0d630545db88c7b38870c1d766","isMergeCommit":false,"messageTitle":"add exception handler","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":36}}},{"hash":"ccf4acba1bba98d50fde197f5a9cdd951453c9e8","isMergeCommit":false,"messageTitle":"add command delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"d2cd25148fc61821e136c2ec0dc347f657bc0957","isMergeCommit":false,"messageTitle":"add more javadocs","messageBody":"","tags":["Level-6(modified)"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":2}}},{"hash":"e5856b6e9031cba9c19cf3b92057f77730e27085","isMergeCommit":false,"messageTitle":"removed emoji, there are some errors happened when using emoji in the string sentence at the automate test stage, dk why this happens","messageBody":"","tags":["Level-6(modified-1)"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":5}}}]},{"date":"2023-08-31","commitResults":[{"hash":"6672936fd519c410ea2f854b0493ff5ab6191a8d","isMergeCommit":false,"messageTitle":"read and write file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":106,"deletions":6}}},{"hash":"4c37f51963ee1f798c706ac39e9b3bbdef4c7380","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"59d739509f057b1ee4b47ae430a77552baf42933","isMergeCommit":false,"messageTitle":"add datetime","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5},"java":{"insertions":36,"deletions":17}}},{"hash":"9663f19f6e970b457ab2867e8fa568c016bec468","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6a5046e6cf7686e76c199f768458670c20438ba5","isMergeCommit":false,"messageTitle":"make it more oop","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":4},"java":{"insertions":183,"deletions":147}}},{"hash":"b2b231f9b716834a6e795308f456ac5064e3a5cf","isMergeCommit":false,"messageTitle":"put all in a package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}},{"hash":"da886a161f447e4776505d50fe0f2d6b9d4868b3","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"1eb4e85842bf9b43e562803770812b49997a00c9","isMergeCommit":false,"messageTitle":"Junit test","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":2},"txt":{"insertions":1,"deletions":4},"java":{"insertions":175,"deletions":23}}},{"hash":"784fafce3e2f692a7cd921542ec42596f3c98a5d","isMergeCommit":false,"messageTitle":"create a jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"94205b01c4037b152a2b616f53012f6d06aec0f2","isMergeCommit":false,"messageTitle":"add javadocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":210,"deletions":42}}},{"hash":"3eb84d7f4ed860c699b75e14a49d34c6c8d5919d","isMergeCommit":false,"messageTitle":"fit Java coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":93,"deletions":49}}},{"hash":"ef0ba879bda3a899759c9fc53f949e1c9be60cb7","isMergeCommit":false,"messageTitle":"add find tasks","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":37,"deletions":8}}},{"hash":"04e1ef0225f0ec366c13381adef6cfc9a457901e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"51f4dd82d1c9202729968e2e851796fb35ee1e7d","isMergeCommit":true,"messageTitle":"deal with the conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a8bc15ec526e8f00dac3b83f2cb0acc0db06144b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Heran9":{"java":839,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":6,"txt":16}},"authorContributionVariance":{"Heran9":48795.49},"authorDisplayNameMap":{"Heran9":"CS2103T-F10-4 LANG..ERAN"}} diff --git a/HollaG_ip_master/authorship.json b/HollaG_ip_master/authorship.json index 7f8da15f..36b98894 100644 --- a/HollaG_ip_master/authorship.json +++ b/HollaG_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HollaG"},"content":"public enum Commands {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":" BYE,","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":" LIST,","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":" MARK,","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":" UNMARK,","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":" DELETE,","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" TODO,","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":" DEADLINE,","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":" EVENT;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":" public static boolean contains(String test) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"HollaG"},"content":" for (Commands c : Commands.values()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"HollaG"},"content":" if (c.name().equals(test)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"HollaG"},"content":" return true;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"HollaG"},"content":" return false;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":22}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HollaG"},"content":"import Tasks.DeadlineTask;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"import Tasks.EventTask;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":"import Tasks.TodoTask;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":" private static final String SEPARATOR_LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":" private static TaskList listContainer \u003d new TaskList();","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"HollaG"},"content":" private static String NAME_EMPTY \u003d \"\\uD83D\\uDE21 Your item name cannot be empty!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"HollaG"},"content":" private static String UNKNOWN_COMMAND \u003d \"\\uD83D\\uDE21 This command is not something I can handle!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"HollaG"},"content":" private static String DEADLINE_EMPTY \u003d \"\\uD83D\\uDE21 Missing deadline!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"HollaG"},"content":" private static String FROM_EMPTY \u003d \"\\uD83D\\uDE21 Missing from!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"HollaG"},"content":" private static String TO_EMPTY \u003d \"\\uD83D\\uDE21 Missing to!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"HollaG"},"content":" private static String TIME_FORMAT_ERROR \u003d \"\\uD83D\\uDE21 Time format invalid!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"HollaG"},"content":"// String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"HollaG"},"content":"// + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"HollaG"},"content":"// + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"HollaG"},"content":"// + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"HollaG"},"content":"// + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"HollaG"},"content":"// System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"HollaG"},"content":" System.out.println(SEPARATOR_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"HollaG"},"content":" String entranceMsg \u003d \"Hello! I\u0027m Elon Musk.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"HollaG"},"content":" \"What can I do for you?\";","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"HollaG"},"content":" System.out.println(entranceMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"HollaG"},"content":" System.out.println(SEPARATOR_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"HollaG"},"content":" String inputString \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"HollaG"},"content":" Scanner keyboard \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"HollaG"},"content":" loop:","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"HollaG"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"HollaG"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"HollaG"},"content":" inputString \u003d keyboard.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"HollaG"},"content":" String inputCommandString \u003d (inputString.split(\" \")[0].toUpperCase());","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"HollaG"},"content":" if (!Commands.contains(inputCommandString)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"HollaG"},"content":" throw new DukeException(UNKNOWN_COMMAND);","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"HollaG"},"content":" Commands inputCommand \u003d Commands.valueOf(inputCommandString);","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"HollaG"},"content":" System.out.println(SEPARATOR_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"HollaG"},"content":" switch (inputCommand) {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"HollaG"},"content":" case BYE:","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"HollaG"},"content":" break loop;","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"HollaG"},"content":" case LIST: {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"HollaG"},"content":" System.out.println(listContainer.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"HollaG"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"HollaG"},"content":" case MARK: {","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"HollaG"},"content":" int index \u003d Integer.parseInt(inputString.split(\" \")[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"HollaG"},"content":" listContainer.markAsDone(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"HollaG"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"HollaG"},"content":" case UNMARK: {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"HollaG"},"content":" int index \u003d Integer.parseInt(inputString.split(\" \")[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"HollaG"},"content":" listContainer.markAsUnDone(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"HollaG"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"HollaG"},"content":" case DELETE: {","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"HollaG"},"content":" int index \u003d Integer.parseInt(inputString.split(\" \")[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"HollaG"},"content":" listContainer.removeFromList(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"HollaG"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"HollaG"},"content":" case TODO: {","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"HollaG"},"content":" // add a todo","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"HollaG"},"content":" String itemName \u003d inputString.replace(\"todo \", \"\");","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"HollaG"},"content":" if (itemName.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"HollaG"},"content":" // no item name","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"HollaG"},"content":" throw new DukeException(NAME_EMPTY);","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"HollaG"},"content":" TodoTask todoTask \u003d new TodoTask(itemName);","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"HollaG"},"content":" listContainer.addToList(todoTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"HollaG"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"HollaG"},"content":" case DEADLINE: {","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"HollaG"},"content":" // format of entry: \"deadline return book /by Sunday\"","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"HollaG"},"content":" String itemName \u003d inputString.replace(\"deadline \", \"\").split(\"/by \")[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"HollaG"},"content":" if (itemName.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"HollaG"},"content":" // no item name","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"HollaG"},"content":" throw new DukeException(NAME_EMPTY);","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"HollaG"},"content":" String[] inputArgs \u003d inputString.replace(\"deadline \", \"\").split(\"/by \");","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"HollaG"},"content":" if (inputArgs.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"HollaG"},"content":" // missing deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"HollaG"},"content":" throw new DukeException(DEADLINE_EMPTY);","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"HollaG"},"content":" String deadline \u003d inputArgs[1];","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"HollaG"},"content":" if (deadline.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"HollaG"},"content":" // no item name","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"HollaG"},"content":" throw new DukeException(DEADLINE_EMPTY);","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"HollaG"},"content":" DeadlineTask deadlineTask \u003d new DeadlineTask(itemName, deadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"HollaG"},"content":" listContainer.addToList(deadlineTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"HollaG"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"HollaG"},"content":" case EVENT: {","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"HollaG"},"content":" String inputArgs \u003d inputString.replace(\"event \", \"\");","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"HollaG"},"content":" // sample format: event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"HollaG"},"content":" // get the name","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"HollaG"},"content":" String itemName \u003d inputArgs.split(\"/from \")[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"HollaG"},"content":" if (itemName.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"HollaG"},"content":" // no item name","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"HollaG"},"content":" throw new DukeException(NAME_EMPTY);","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"HollaG"},"content":" // get the \u0027from...to\u0027","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"HollaG"},"content":" // @see https://stackoverflow.com/questions/4662215/how-to-extract-a-substring-using-regex","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"HollaG"},"content":" Pattern patternFrom \u003d Pattern.compile(\"(/from )(.*?)( /to)\");","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"HollaG"},"content":" Matcher matcherFrom \u003d patternFrom.matcher(inputArgs);","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"HollaG"},"content":" String from \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"HollaG"},"content":" if (matcherFrom.find()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"HollaG"},"content":" // yes, formatted correctly","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"HollaG"},"content":" from \u003d matcherFrom.group(2);","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"HollaG"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"HollaG"},"content":"// System.out.println(\"ERROR: no pattern found\");","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"HollaG"},"content":" throw new DukeException(TIME_FORMAT_ERROR);","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"HollaG"},"content":" // get the to...","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"HollaG"},"content":" String to \u003d inputArgs.split(\"/to \")[1];","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"HollaG"},"content":" if (to.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"HollaG"},"content":" throw new DukeException(TO_EMPTY);","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"HollaG"},"content":" EventTask eventTask \u003d new EventTask(itemName, from, to);","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"HollaG"},"content":" listContainer.addToList(eventTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"HollaG"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"HollaG"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"HollaG"},"content":" throw new DukeException(UNKNOWN_COMMAND);","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"HollaG"},"content":" System.out.println(SEPARATOR_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"HollaG"},"content":"// System.out.println(inputString);","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"HollaG"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"HollaG"},"content":" System.out.println(e.printError());","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"HollaG"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"HollaG"},"content":" System.out.println(\"some other exception \" + e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"HollaG"},"content":" String exitMsg \u003d \"Bye! Hope to see you again soon.\";","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"HollaG"},"content":" System.out.println(exitMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"HollaG"},"content":" System.out.println(SEPARATOR_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"HollaG":175,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HollaG"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":" DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" public String printError() {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":" return getMessage();","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":12}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HollaG"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":" * Stores the list of items that the user has.","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":" private ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":" * Adds an item to the list.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"HollaG"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"HollaG"},"content":" * @param task The user\u0027s task","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"HollaG"},"content":" public void addToList(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"HollaG"},"content":" list.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"HollaG"},"content":" System.out.println(\"\\uD83D\\uDE0A I\u0027ve added a new task: \" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"HollaG"},"content":" System.out.println(\"Now you have \" + getSize() + \" tasks!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"HollaG"},"content":" * Removes an item from the list.","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"HollaG"},"content":" * Indexes start from 1, not zero","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"HollaG"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"HollaG"},"content":" * @param index the index of the task to remove.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"HollaG"},"content":" public void removeFromList(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"HollaG"},"content":" Task task \u003d list.get(index - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"HollaG"},"content":" list.remove(index - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"HollaG"},"content":" System.out.println(\"\\uD83D\\uDE0A I\u0027ve removed this task: \" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"HollaG"},"content":"// list.removeIf(item -\u003e item.getItemName().equals(name));","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"HollaG"},"content":" * Marks a specific task in the list as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"HollaG"},"content":" * Indexes start from 1, not 0","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"HollaG"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"HollaG"},"content":" * @param index","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"HollaG"},"content":" public void markAsDone(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"HollaG"},"content":" list.get(index - 1).setDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"HollaG"},"content":" * Marks a specific task in the list as undone.","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"HollaG"},"content":" * Indexes start from 1, not 0","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"HollaG"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"HollaG"},"content":" * @param index","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"HollaG"},"content":" public void markAsUnDone(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"HollaG"},"content":" list.get(index - 1).setUnDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"HollaG"},"content":" public int getSize() {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"HollaG"},"content":" return this.list.size();","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"HollaG"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"HollaG"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"HollaG"},"content":" StringBuilder resultMsg \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"HollaG"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"HollaG"},"content":" resultMsg.append(i + 1).append(\". \").append(list.get(i).toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"HollaG"},"content":" resultMsg.append(\"\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"HollaG"},"content":" return resultMsg.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":74}},{"path":"src/main/java/Tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HollaG"},"content":"package Tasks;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":" private String deadline \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":" public DeadlineTask(String itemName, String deadline) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":" super(itemName);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.deadline + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":14}},{"path":"src/main/java/Tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HollaG"},"content":"package Tasks;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":" private String from \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":" private String to \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":" public EventTask(String itemName, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" super(itemName);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"HollaG"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"HollaG"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":16}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HollaG"},"content":"package Tasks;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":" private String itemName;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" public Task(String itemName) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":" this.itemName \u003d itemName;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"HollaG"},"content":" // If the object is compared with itself then return true","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"HollaG"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"HollaG"},"content":" return true;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"HollaG"},"content":" /* Check if o is an instance of Complex or not","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"HollaG"},"content":" \"null instanceof [type]\" also returns false */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"HollaG"},"content":" if (!(o instanceof Task)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"HollaG"},"content":" return false;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"HollaG"},"content":" Task otherListItem \u003d (Task) o;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"HollaG"},"content":" return otherListItem.itemName.equals(this.itemName);","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"HollaG"},"content":" public String getItemName() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"HollaG"},"content":" return itemName;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"HollaG"},"content":" * Marks the item as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"HollaG"},"content":" public void setDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"HollaG"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"HollaG"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n \" + this.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"HollaG"},"content":" * Marks the item as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"HollaG"},"content":" public void setUnDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"HollaG"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"HollaG"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as undone: \\n \" + this.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"HollaG"},"content":" * Gets an icon to represent the state of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"HollaG"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"HollaG"},"content":" * @return a stringified icon","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"HollaG"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"HollaG"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"HollaG"},"content":" * Gets the task name.","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"HollaG"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"HollaG"},"content":" * @return the task name","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"HollaG"},"content":" public String getName() {","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"HollaG"},"content":" return this.itemName;","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"HollaG"},"content":" * Prints the task, formatted","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"HollaG"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"HollaG"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"HollaG"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.itemName;","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":76}},{"path":"src/main/java/Tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HollaG"},"content":"package Tasks;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":" public TodoTask(String itemName) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":" super(itemName);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"HollaG"},"content":"todo live happy","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"todo live happier","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":"deadline submit chatbot /by Thursday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":"event go to CS2103T lecture /from Friday 4pm /to Friday 6pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":"delete 3","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":12}},{"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":"HollaG"},"content":"if exist .\\text-ui-test\\ACTUAL.TXT del .\\text-ui-test\\ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":"HollaG"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin .\\src\\main\\java\\*.java .\\src\\main\\java\\Tasks\\*.java","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"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":19,"author":{"gitId":"HollaG"},"content":"java -classpath ..\\bin Duke \u003c .\\text-ui-test\\input.txt \u003e .\\text-ui-test\\ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"HollaG"},"content":"FC .\\text-ui-test\\ACTUAL.TXT .\\text-ui-test\\EXPECTED.TXT","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":5,"-":17}}] +[{"path":"src/main/java/Duke/Exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package Duke.Exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":" public String printError() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":" return getMessage();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":11,"-":3}},{"path":"src/main/java/Duke/Tasks/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package Duke.Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":"public enum Commands {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":" BYE,","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":" LIST,","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":" MARK,","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" UNMARK,","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":" DELETE,","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":" TODO,","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":" DEADLINE,","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":" EVENT;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"HollaG"},"content":" public static boolean contains(String test) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"HollaG"},"content":" for (Commands c : Commands.values()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"HollaG"},"content":" if (c.name().equals(test)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"HollaG"},"content":" return true;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"HollaG"},"content":" return false;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":22,"-":2}},{"path":"src/main/java/Duke/Tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package Duke.Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" private LocalDateTime deadlineDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public DeadlineTask(String itemName, LocalDateTime deadlineDateTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":" super(itemName);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":" this.deadlineDateTime \u003d deadlineDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public String getTaskType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return \"D\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public String encodeTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return super.encodeTask() + \" | \" + deadlineDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"HollaG"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"HollaG"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.deadlineDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":7,"-":22}},{"path":"src/main/java/Duke/Tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package Duke.Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" private String from \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":" private String to \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":" private LocalDateTime fromDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":" private LocalDateTime toDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"HollaG"},"content":" public EventTask(String itemName, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"HollaG"},"content":" super(itemName);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"HollaG"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"HollaG"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public EventTask(String itemName, LocalDateTime fromDateTime, LocalDateTime toDateTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" super(itemName);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" this.fromDateTime \u003d fromDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" this.toDateTime \u003d toDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public String getTaskType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return \"E\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public String encodeTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return super.encodeTask() + \" | \" + this.fromDateTime + \" | \" + this.toDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"HollaG"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"HollaG"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return \"[E]\" + super.toString() +","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \" (from: \" + this.fromDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\")) +","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \" to: \" + this.toDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":14,"-":28}},{"path":"src/main/java/Duke/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package Duke.Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public abstract class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":" private String itemName;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" public Task(String itemName) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":" this.itemName \u003d itemName;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"HollaG"},"content":" // If the object is compared with itself then return true","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"HollaG"},"content":" if (o \u003d\u003d this) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"HollaG"},"content":" return true;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /* Check if o is an instance of Task or not","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"HollaG"},"content":" \"null instanceof [type]\" also returns false */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"HollaG"},"content":" if (!(o instanceof Task)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"HollaG"},"content":" return false;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"HollaG"},"content":" Task otherListItem \u003d (Task) o;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return otherListItem.itemName.equals(this.itemName) \u0026\u0026 otherListItem.isDone \u003d\u003d this.isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"HollaG"},"content":" public String getItemName() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"HollaG"},"content":" return itemName;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"HollaG"},"content":" * Marks the item as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public boolean setDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"HollaG"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"HollaG"},"content":" * Marks the item as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean setUnDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"HollaG"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"HollaG"},"content":" * Gets an icon to represent the state of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"HollaG"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"HollaG"},"content":" * @return a stringified icon","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"HollaG"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"HollaG"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"HollaG"},"content":" * Gets the task name.","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"HollaG"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"HollaG"},"content":" * @return the task name","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"HollaG"},"content":" public String getName() {","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"HollaG"},"content":" return this.itemName;","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Gets the task type as a single character.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * T \u003d Todo","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * D \u003d Deadline","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * E \u003d Event","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @return encoded character","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public abstract String getTaskType();","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Encodes the task into a formatted string to be stored in a database","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String encodeTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this.getTaskType() + \" | \" + (this.isDone ? \"1\" : \"0\") + \" | \" + this.itemName;","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"HollaG"},"content":" * Prints the task, formatted","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"HollaG"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"HollaG"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"HollaG"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.itemName;","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":68,"-":26}},{"path":"src/main/java/Duke/Tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package Duke.Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":" * Stores the list of items that the user has.","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":" private ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":" this.list \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"HollaG"},"content":" * Adds an item to the list.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"HollaG"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"HollaG"},"content":" * @param task The user\u0027s task","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void addToList(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"HollaG"},"content":" list.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"HollaG"},"content":" * Removes an item from the list.","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"HollaG"},"content":" * Indexes start from 1, not zero","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"HollaG"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"HollaG"},"content":" * @param index the index of the task to remove.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @return the task that was removed","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public Task removeFromList(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"HollaG"},"content":" Task task \u003d list.get(index - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"HollaG"},"content":" list.remove(index - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"HollaG"},"content":" * Marks a specific task in the list as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"HollaG"},"content":" * Indexes start from 1, not 0","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"HollaG"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"HollaG"},"content":" * @param index","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @return the task that was modified","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Task markAsDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Task task \u003d list.get(index - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" task.setDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"HollaG"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"HollaG"},"content":" * Marks a specific task in the list as undone.","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"HollaG"},"content":" * Indexes start from 1, not 0","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"HollaG"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"HollaG"},"content":" * @param index","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @return the task that was modified","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"HollaG"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public Task markAsUnDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Task task \u003d list.get(index - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":" task.setUnDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"HollaG"},"content":" public int getSize() {","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"HollaG"},"content":" return this.list.size();","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Encodes the current Duke.Tasks in a string, each task separated by a newline.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @return","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public String serialize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"-"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c this.list.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" stringBuilder.append(this.list.get(i).encodeTask());","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" stringBuilder.append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"HollaG"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"HollaG"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"HollaG"},"content":" StringBuilder resultMsg \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"HollaG"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"HollaG"},"content":" resultMsg.append(i + 1).append(\". \").append(list.get(i).toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"HollaG"},"content":" resultMsg.append(\"\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"HollaG"},"content":" return resultMsg.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":62,"-":35}},{"path":"src/main/java/Duke/Tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package Duke.Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":" public TodoTask(String itemName) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":" super(itemName);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public String getTaskType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":" return \"T\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"HollaG"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"HollaG"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"HollaG"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"HollaG"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"HollaG"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":12,"-":6}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"HollaG"},"content":"todo live happy","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"HollaG"},"content":"todo live happier","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"HollaG"},"content":"deadline submit chatbot /by Thursday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"HollaG"},"content":"event go to CS2103T lecture /from Friday 4pm /to Friday 6pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"HollaG"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"HollaG"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"HollaG"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"HollaG"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"HollaG"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"HollaG"},"content":"delete 3","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"HollaG"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"HollaG":12}},{"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":"HollaG"},"content":"if exist .\\text-ui-test\\ACTUAL.TXT del .\\text-ui-test\\ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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 .\\src\\main\\java\\Duke.Tasks\\*.java","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"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":19,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke.Duke \u003c .\\text-ui-test\\input.txt \u003e .\\text-ui-test\\ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"HollaG"},"content":"FC .\\text-ui-test\\ACTUAL.TXT .\\text-ui-test\\EXPECTED.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"HollaG"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"HollaG":4,"-":19}}] diff --git a/HollaG_ip_master/commits.json b/HollaG_ip_master/commits.json index a28f283b..a4f93bf4 100644 --- a/HollaG_ip_master/commits.json +++ b/HollaG_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"HollaG":[{"date":"2023-08-23","commitResults":[{"hash":"c5956f76a26182900487522678124b72664e78bd","isMergeCommit":false,"messageTitle":"incr: lvl-0","messageBody":"","tags":["lvl0","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":6}}},{"hash":"ca86f3c9b00c1b09183c910aad4239c3464569a3","isMergeCommit":false,"messageTitle":"incr: lvl1 - echo","messageBody":"","tags":["lvl1","Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"bed54173eb217b958f28a6484eae1a9eb51de68c","isMergeCommit":false,"messageTitle":"incr: lvl2 - add, list","messageBody":"","tags":["lvl2","Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":1}}},{"hash":"2a626fcf571996398fb26595b3f66c0ecdacebb4","isMergeCommit":false,"messageTitle":"struct: refactor item to be its own class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":4}}},{"hash":"095be5d7e1f2bbada2ba988f231db9c41348ec41","isMergeCommit":false,"messageTitle":"incr: lvl-3, refactor to Task, minor changes to make it more understandable","messageBody":"","tags":["lvl3","Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":11}}},{"hash":"f084e4518d0ce338616cc43ba9280624a5123f2f","isMergeCommit":false,"messageTitle":"incr: lvl4 - add inheritance for tasks and more task types","messageBody":"","tags":["lvl4","Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":120,"deletions":7}}},{"hash":"b5a3c66d91c103d97613e36da7f8f8e0bda607d9","isMergeCommit":false,"messageTitle":"addn: text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":5,"deletions":2},"bat":{"insertions":5,"deletions":4}}},{"hash":"5454762d1a5bcbf7552e11f9b6e6c9cec8fd1e20","isMergeCommit":false,"messageTitle":"incr: lvl 5 - error handling","messageBody":"","tags":["lvl5","Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":30}}},{"hash":"60da458ac2d049d18235fe98923dc39b90ed3c06","isMergeCommit":false,"messageTitle":"incr: lvl6","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":15,"deletions":4}}},{"hash":"144c32b1f80000eec94e34b70fd9e73f1e05f082","isMergeCommit":false,"messageTitle":"addn: edited tests","messageBody":"","tags":["lvl6","Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}},{"hash":"4f75af8457384ab330bdc9c4665f8abe9ff04aeb","isMergeCommit":false,"messageTitle":"addn: enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":84}}}]}]},"authorFileTypeContributionMap":{"HollaG":{"java":402,"md":0,"fxml":0,"sh":0,"bat":5,"gradle":0,"txt":12}},"authorContributionVariance":{"HollaG":71800.15},"authorDisplayNameMap":{"HollaG":"CS2103T-T11-3 SOH ..RCUS"}} +{"authorDailyContributionsMap":{"HollaG":[{"date":"2023-08-23","commitResults":[{"hash":"c5956f76a26182900487522678124b72664e78bd","isMergeCommit":false,"messageTitle":"incr: lvl-0","messageBody":"","tags":["lvl0","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":6}}},{"hash":"ca86f3c9b00c1b09183c910aad4239c3464569a3","isMergeCommit":false,"messageTitle":"incr: lvl1 - echo","messageBody":"","tags":["lvl1","Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"bed54173eb217b958f28a6484eae1a9eb51de68c","isMergeCommit":false,"messageTitle":"incr: lvl2 - add, list","messageBody":"","tags":["lvl2","Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":1}}},{"hash":"2a626fcf571996398fb26595b3f66c0ecdacebb4","isMergeCommit":false,"messageTitle":"struct: refactor item to be its own class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":4}}},{"hash":"095be5d7e1f2bbada2ba988f231db9c41348ec41","isMergeCommit":false,"messageTitle":"incr: lvl-3, refactor to Task, minor changes to make it more understandable","messageBody":"","tags":["lvl3","Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":11}}},{"hash":"f084e4518d0ce338616cc43ba9280624a5123f2f","isMergeCommit":false,"messageTitle":"incr: lvl4 - add inheritance for tasks and more task types","messageBody":"","tags":["lvl4","Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":120,"deletions":7}}},{"hash":"b5a3c66d91c103d97613e36da7f8f8e0bda607d9","isMergeCommit":false,"messageTitle":"addn: text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":5,"deletions":2},"bat":{"insertions":5,"deletions":4}}},{"hash":"5454762d1a5bcbf7552e11f9b6e6c9cec8fd1e20","isMergeCommit":false,"messageTitle":"incr: lvl 5 - error handling","messageBody":"","tags":["lvl5","Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":30}}},{"hash":"60da458ac2d049d18235fe98923dc39b90ed3c06","isMergeCommit":false,"messageTitle":"incr: lvl6","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":15,"deletions":4}}},{"hash":"144c32b1f80000eec94e34b70fd9e73f1e05f082","isMergeCommit":false,"messageTitle":"addn: edited tests","messageBody":"","tags":["lvl6","Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}},{"hash":"4f75af8457384ab330bdc9c4665f8abe9ff04aeb","isMergeCommit":false,"messageTitle":"addn: enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":84}}}]},{"date":"2023-09-01","commitResults":[{"hash":"34725eef1a3ec737305f1f9db122761bc499650e","isMergeCommit":false,"messageTitle":"wip: upload to cloud","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":93,"deletions":16},"bat":{"insertions":1,"deletions":0}}},{"hash":"7c57b2541525d61bdecfd03410c28e2a6e98ed02","isMergeCommit":true,"messageTitle":"Merge pull request #1 from HollaG/branch-Level-7","messageBody":"Branch level 7","fileTypesAndContributionMap":{}},{"hash":"1aae9e9047aee5057e9f7f8f73ef0edaa77f3fd6","isMergeCommit":true,"messageTitle":"Merge pull request #2 from HollaG/branch-Level-7","messageBody":"fix: correctly handle missing file","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"7192466b6f586d08c51d2c06f40b755f11af845d","isMergeCommit":true,"messageTitle":"Merge pull request #3 from HollaG/branch-Level-8","messageBody":"Branch level 8","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"c56944c34adcd2e29c20ce7dbb04bca7cb3b4719","isMergeCommit":true,"messageTitle":"Merge pull request #4 from HollaG/A-MoreOOP","messageBody":"A-MoreOOP","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"4e653a2ed6cb06fe65d20d92ca1e98fa6721915c","isMergeCommit":true,"messageTitle":"Merge pull request #5 from HollaG/A-Packages","messageBody":"A-Packages","tags":["A-Packages","1c651c9"],"fileTypesAndContributionMap":{}},{"hash":"d8aff199bfff3400af1f5d7c583747ef0c0686c8","isMergeCommit":true,"messageTitle":"Merge pull request #6 from HollaG/master","messageBody":"Bring Gradle up to date","fileTypesAndContributionMap":{}},{"hash":"1c651c983bd09e9ab3ae93cb5df7ff4deaee21b1","isMergeCommit":true,"messageTitle":"Merge pull request #7 from HollaG/add-gradle-support","messageBody":"Add gradle support","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"6b7483142449f62c35b1263d59c899b26c4251d9","isMergeCommit":true,"messageTitle":"Merge pull request #8 from HollaG/A-JUnit","messageBody":"incr: A-JUnit","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"f86dececf942cd58d231d31da72dcd95d5a9108e","isMergeCommit":true,"messageTitle":"Merge pull request #9 from HollaG/A-Jar","messageBody":"fix: change save file location","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"HollaG":{"java":196,"md":0,"fxml":0,"sh":0,"bat":4,"gradle":0,"txt":12}},"authorContributionVariance":{"HollaG":32246.508},"authorDisplayNameMap":{"HollaG":"CS2103T-T11-3 SOH ..RCUS"}} diff --git a/J-hta-n_ip_master/authorship.json b/J-hta-n_ip_master/authorship.json index 5081b474..19d6852a 100644 --- a/J-hta-n_ip_master/authorship.json +++ b/J-hta-n_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Ekud.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"import extensions.EkudException;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"import extensions.EkudInvalidCommandException;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":"import extensions.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":"public class Ekud {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" // Basic UI \u0026 messages for the chatbot to print to console","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" private static final String HORIZONTAL_LINE \u003d \"-~-~-~-~-~-~-~-~--~-~-~-~-~-~-~-~-\";","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":" private static final String INTRO \u003d \"Hello there! I\u0027m Ekud. :)\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":" \"What can I do for you? :O\";","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":" private static final String OUTRO \u003d \"Goodbye, have a nice day! :p\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":" // TaskList object to store and manipulate all of user\u0027s tasks, as well as","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":" // handle invalid inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":" private static TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":" * Prints a message formatted in between 2 horizontal lines for the user.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":" * @param message Text to be printed.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"J-hta-n"},"content":" public static void echo(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"J-hta-n"},"content":" System.out.println(String.format(\"%s\\n%s\\n%s\",","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"J-hta-n"},"content":" HORIZONTAL_LINE,","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"J-hta-n"},"content":" message,","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"J-hta-n"},"content":" HORIZONTAL_LINE));","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"J-hta-n"},"content":" * Represents a fixed set of input command strings which can be assigned to the","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"J-hta-n"},"content":" * Command variable.","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"J-hta-n"},"content":" public static enum Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"J-hta-n"},"content":" SHOWTASKS(\"list\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"J-hta-n"},"content":" MARKTASKASDONE(\"mark\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"J-hta-n"},"content":" MARKTASKASNOTDONE(\"unmark\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"J-hta-n"},"content":" ADDTODO(\"todo\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"J-hta-n"},"content":" ADDDEADLINE(\"deadline\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"J-hta-n"},"content":" ADDEVENT(\"event\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"J-hta-n"},"content":" DELETETASK(\"delete\");","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"J-hta-n"},"content":" private String command;","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"J-hta-n"},"content":" private Command(String command) {","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"J-hta-n"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"J-hta-n"},"content":" public static Command getCommand(String userInput) {","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"J-hta-n"},"content":" for (Command command : Command.values()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"J-hta-n"},"content":" if (command.command.equals(userInput)) return command;","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"J-hta-n"},"content":" return null;","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"J-hta-n"},"content":" * Core function for instructing the TaskList object to execute commands and handle","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"J-hta-n"},"content":" * invalid inputs, for which EkudExceptions would be thrown by TaskList.","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"J-hta-n"},"content":" * @param command Input command by the user.","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"J-hta-n"},"content":" * @param userArgs Args for the command supplied by the user.","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudException Either invalid commands or illegal arguments for the commands.","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"J-hta-n"},"content":" public static void handleCommand(Command command, String userArgs) throws EkudException {","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"J-hta-n"},"content":" if (command \u003d\u003d null) {","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"J-hta-n"},"content":" throw new EkudInvalidCommandException(\"Command not found :(\");","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"J-hta-n"},"content":" switch (command) {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"J-hta-n"},"content":" case SHOWTASKS:","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"J-hta-n"},"content":" taskList.showTasks();","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"J-hta-n"},"content":" case MARKTASKASDONE:","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"J-hta-n"},"content":" taskList.markTaskAsDone(userArgs);","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"J-hta-n"},"content":" case MARKTASKASNOTDONE:","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"J-hta-n"},"content":" taskList.markTaskAsNotDone(userArgs);","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"J-hta-n"},"content":" case ADDTODO:","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"J-hta-n"},"content":" taskList.addToDo(userArgs);","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"J-hta-n"},"content":" case ADDDEADLINE:","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"J-hta-n"},"content":" taskList.addDeadline(userArgs);","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"J-hta-n"},"content":" case ADDEVENT:","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"J-hta-n"},"content":" taskList.addEvent(userArgs);","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"J-hta-n"},"content":" case DELETETASK:","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"J-hta-n"},"content":" taskList.deleteTask(userArgs);","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"J-hta-n"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"J-hta-n"},"content":" throw new EkudInvalidCommandException(\"Command not found :(\");","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"J-hta-n"},"content":" // Main chatbot program","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"J-hta-n"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"J-hta-n"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"J-hta-n"},"content":" Ekud.echo(INTRO);","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"J-hta-n"},"content":" // Process user input","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"J-hta-n"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"J-hta-n"},"content":" int firstSpace \u003d userInput.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"J-hta-n"},"content":" String inputCommand \u003d firstSpace \u003d\u003d -1 ? userInput : userInput.substring(0, firstSpace);","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"J-hta-n"},"content":" // Main chatbot functionality","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"J-hta-n"},"content":" while (!inputCommand.equals(\"end\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":95,"author":{"gitId":"J-hta-n"},"content":" Command command \u003d Command.getCommand(inputCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"J-hta-n"},"content":" String userArgs \u003d firstSpace \u003d\u003d -1 ? \"\": userInput.substring(firstSpace + 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"J-hta-n"},"content":" Ekud.handleCommand(command, userArgs); // throws EkudException for invalid inputs","lastModifiedDate":"2023-08-26"},{"lineNumber":99,"author":{"gitId":"J-hta-n"},"content":" } catch(EkudException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"J-hta-n"},"content":" Ekud.echo(e.toString()); // catch and print out EkudException message","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"J-hta-n"},"content":" // Process next line of user input","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"J-hta-n"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"J-hta-n"},"content":" firstSpace \u003d userInput.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"J-hta-n"},"content":" inputCommand \u003d firstSpace \u003d\u003d -1 ? userInput : userInput.substring(0, firstSpace);","lastModifiedDate":"2023-08-26"},{"lineNumber":106,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"J-hta-n"},"content":" Ekud.echo(OUTRO);","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"J-hta-n"},"content":" scanner.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"J-hta-n":110}},{"path":"src/main/java/extensions/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":" * Represents a task with a deadline.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" String day;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" public Deadline(String description, String day) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":" this.day \u003d day;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":" return String.format(\"[D][%c] %s (by: %s)\",","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":" this.getDoneStatus(),","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":" this.description,","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":" this.day);","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":18}},{"path":"src/main/java/extensions/EkudException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":" * Represents an exception thrown by the Ekud chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"public class EkudException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" public EkudException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":9}},{"path":"src/main/java/extensions/EkudIllegalArgException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":" * Represents illegal arguments by the user after giving a command to the chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"public class EkudIllegalArgException extends EkudException {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" public EkudIllegalArgException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":9}},{"path":"src/main/java/extensions/EkudInvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":" * Represents invalid commands by the user to the chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"public class EkudInvalidCommandException extends EkudException {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" public EkudInvalidCommandException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":9}},{"path":"src/main/java/extensions/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":" * Represents a task with starting and ending dates/times.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":" return String.format(\"[E][%c] %s (from: %s, to: %s)\",","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":" this.getDoneStatus(),","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":" this.description,","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":" this.from,","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"J-hta-n"},"content":" this.to);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":22}},{"path":"src/main/java/extensions/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":" * Represents a task input by the user.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":" public char getDoneStatus() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"J-hta-n"},"content":" return isDone ? \u0027X\u0027: \u0027 \u0027;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"J-hta-n"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"J-hta-n"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"J-hta-n"},"content":" return String.format(\"[%c] %s\",","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"J-hta-n"},"content":" this.getDoneStatus(),","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"J-hta-n"},"content":" this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":27}},{"path":"src/main/java/extensions/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" * TaskList handles task modifications and invalid user inputs for","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" * modifying tasks, and is a key component of the Ekud chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":" // Same Horizontal Line as Ekud so TaskList can print outputs in a similar UI style","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":" private final String HORIZONTAL_LINE \u003d \"-~-~-~-~-~-~-~-~--~-~-~-~-~-~-~-~-\";","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":" // Actual list storing the tasks","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":" // Constructor for TaskList","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":" public TaskList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"J-hta-n"},"content":" * Allows TaskList to print output in a similar UI style as Ekud with the","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"J-hta-n"},"content":" * same echo() method.","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"J-hta-n"},"content":" * @param message Output text in between 2 horizontal lines.","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"J-hta-n"},"content":" public void echo(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"J-hta-n"},"content":" System.out.println(String.format(\"%s\\n%s\\n%s\",","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"J-hta-n"},"content":" HORIZONTAL_LINE,","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"J-hta-n"},"content":" message,","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"J-hta-n"},"content":" HORIZONTAL_LINE));","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"J-hta-n"},"content":" * Prints this TaskList to the console.","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"J-hta-n"},"content":" public void showTasks() {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"J-hta-n"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"J-hta-n"},"content":" System.out.println(\"Here is your to-do list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"J-hta-n"},"content":" int len \u003d tasks.size();","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"J-hta-n"},"content":" for (int i \u003d 0; i \u003c len; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"J-hta-n"},"content":" System.out.println(String.format(\"%d. %s\", i + 1, tasks.get(i).toString()));","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"J-hta-n"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"J-hta-n"},"content":" * Marks a specific task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"J-hta-n"},"content":" * @param userArg Index number of task supplied by user.","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudIllegalArgException Illegal arg for index number.","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"J-hta-n"},"content":" public void markTaskAsDone(String userArg) throws EkudIllegalArgException {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"J-hta-n"},"content":" int index \u003d Integer.valueOf(userArg) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"J-hta-n"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"J-hta-n"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"J-hta-n"},"content":" this.echo(\"The following task is marked done, sheeesh:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"J-hta-n"},"content":" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"J-hta-n"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Please input a valid index number :o\");","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"J-hta-n"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Task index number is out of bounds :/\");","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"J-hta-n"},"content":" * Marks a specific task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"J-hta-n"},"content":" * @param userArg Index number of task supplied by user.","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudIllegalArgException Illegal arg for index number.","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"J-hta-n"},"content":" public void markTaskAsNotDone(String userArg) throws EkudIllegalArgException {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"J-hta-n"},"content":" int index \u003d Integer.valueOf(userArg) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"J-hta-n"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"J-hta-n"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"J-hta-n"},"content":" this.echo(\"The following task is marked as not done yet:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"J-hta-n"},"content":" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"J-hta-n"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Please input a valid index number :o\");","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"J-hta-n"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Task index number is out of bounds :/\");","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"J-hta-n"},"content":" * Adds a task to this TaskList before printing a confirmation message,","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"J-hta-n"},"content":" * to be used internally.","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"J-hta-n"},"content":" * @param task Task object to be added.","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"J-hta-n"},"content":" private void addTask(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"J-hta-n"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"J-hta-n"},"content":" this.echo(String.format(","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"J-hta-n"},"content":" \"Got it! I\u0027ve added this task:\\n%s\\nNow you have %d task(s) in the list.\",","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"J-hta-n"},"content":" task.toString(),","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"J-hta-n"},"content":" tasks.size()));","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"J-hta-n"},"content":" * Adds a to-do task to this TaskList.","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"J-hta-n"},"content":" * @param description Description of to-do task by user.","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudIllegalArgException Illegal arg for to-do task.","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"J-hta-n"},"content":" public void addToDo(String description) throws EkudIllegalArgException {","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"J-hta-n"},"content":" if (description.isBlank()) { // isBlank() checks if string is all whitespace","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Todo task shouldn\u0027t be empty :(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"J-hta-n"},"content":" addTask(new ToDo(description));","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"J-hta-n"},"content":" * Adds a deadline task to this TaskList.","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"J-hta-n"},"content":" * @param userArgs Args supplied by user for adding deadline task.","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudIllegalArgException Illegal arg(s) for deadline task.","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"J-hta-n"},"content":" public void addDeadline(String userArgs) throws EkudIllegalArgException {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"J-hta-n"},"content":" String[] deadlineArgs \u003d userArgs.split(\" /by \");","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"J-hta-n"},"content":" String description \u003d deadlineArgs[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"J-hta-n"},"content":" String day \u003d deadlineArgs[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"J-hta-n"},"content":" if (description.isBlank() || day.isBlank()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Description/day shouldn\u0027t be empty :(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"J-hta-n"},"content":" addTask(new Deadline(description, day));","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"J-hta-n"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Deadline formatted wrongly, \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"J-hta-n"},"content":" \"ensure \u0027deadline \u003cdescription\u003e /by \u003cday\u003e\u0027 is followed\");","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"J-hta-n"},"content":" * Adds an event task to this TaskList.","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"J-hta-n"},"content":" * @param userArgs Args supplied by user for adding event task.","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudIllegalArgException Illegal arg(s) for event task.","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"J-hta-n"},"content":" public void addEvent(String userArgs) throws EkudIllegalArgException {","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"J-hta-n"},"content":" String[] eventArgs \u003d userArgs.split(\" /from \");","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"J-hta-n"},"content":" String[] timings \u003d eventArgs[1].split(\" /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"J-hta-n"},"content":" String description \u003d eventArgs[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"J-hta-n"},"content":" String from \u003d timings[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"J-hta-n"},"content":" String to \u003d timings[1];","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"J-hta-n"},"content":" if (description.isBlank() || from.isBlank() || to.isBlank()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Description/start/end shouldn\u0027t be empty :(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"J-hta-n"},"content":" addTask(new Event(description, from, to));","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"J-hta-n"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Event formatted wrongly, \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"J-hta-n"},"content":" \"ensure \u0027event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\u0027 is followed\");","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"J-hta-n"},"content":" * Deletes a task from this TaskList and prints a confirmation message.","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"J-hta-n"},"content":" * @param userArg Index number of task to be deleted as supplied by user.","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudIllegalArgException Illegal arg for index number.","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"J-hta-n"},"content":" public void deleteTask(String userArg) throws EkudIllegalArgException {","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"J-hta-n"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"You cannot delete from an empty task list :/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"J-hta-n"},"content":" int index \u003d Integer.valueOf(userArg) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"J-hta-n"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"J-hta-n"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"J-hta-n"},"content":" this.echo(String.format(","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"J-hta-n"},"content":" \"Alright, this task has been removed:\\n%s\\nNow you have %d task(s) in the list.\",","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"J-hta-n"},"content":" task.toString(),","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"J-hta-n"},"content":" tasks.size()));","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"J-hta-n"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Please input a valid index number :o\");","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"J-hta-n"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Task index number is out of bounds :/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":163}},{"path":"src/main/java/extensions/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":" * Represents a task with no additional attributes.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":" return String.format(\"[T][%c] %s\",","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":" this.getDoneStatus(),","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":" this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":15}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"hi","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":"todo get groceries","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":"todo go for a run","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"deadline finish quiz /by Saturday","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":"deadline quiz 2 by Saturday","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":"event meeting /from Sat 1pm /to Sat 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":"event meeting from Sat 1pm to Sat 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":"event dinner /from Fri 6pm /to8pm","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":"event dinner /from Fri 6pm /to 8pm","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":"mark 5","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":"mark 6","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":"mark 0","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":"unmark 6","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"J-hta-n"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"J-hta-n"},"content":"delete 0","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"J-hta-n"},"content":"delete 1","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"J-hta-n"},"content":"delete 5","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"J-hta-n"},"content":"delete 3","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"J-hta-n"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"J-hta-n"},"content":"mark2","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"J-hta-n"},"content":"mark w","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"J-hta-n"},"content":"end","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":27}},{"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":"J-hta-n"},"content":"java -classpath ../bin Ekud \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"-":37,"J-hta-n":1}}] +[{"path":"src/main/data/savedTasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"T | X | hi","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"T | | bye","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":"D | | wow | 23 Aug 2023 6:30 PM","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":"D | | finish this | 23 Aug 2023 6:30 PM","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"E | X | meeting | 23 Aug 2023 7:00 PM | 23 Aug 2023 9:00 PM","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":"E | | company dinner | 03 Oct 2023 5:30 PM | 03 Oct 2023 10:15 PM","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"J-hta-n":6}},{"path":"src/main/java/Ekud.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"import extensions.EkudException;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"import extensions.EkudIOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":"import extensions.EkudInvalidCommandException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":"import extensions.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":"public class Ekud {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":" // Basic UI \u0026 messages for the chatbot to print to console","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":" private static final String HORIZONTAL_LINE \u003d \"-~-~-~-~-~-~-~-~--~-~-~-~-~-~-~-~-\";","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":" private static final String INTRO \u003d \"Hello there! I\u0027m Ekud. :)\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":" \"What can I do for you? :O\";","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":" private static final String OUTRO \u003d \"Goodbye, have a nice day! :p\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":" // TaskList object to store and manipulate all of user\u0027s tasks, as well as","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":" // handle invalid inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":" private static TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":" * Prints a message formatted in between 2 horizontal lines for the user.","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"J-hta-n"},"content":" * @param message Text to be printed.","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"J-hta-n"},"content":" public static void echo(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"J-hta-n"},"content":" System.out.println(String.format(\"%s\\n%s\\n%s\",","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"J-hta-n"},"content":" HORIZONTAL_LINE,","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"J-hta-n"},"content":" message,","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"J-hta-n"},"content":" HORIZONTAL_LINE));","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"J-hta-n"},"content":" * Represents a fixed set of input command strings which can be assigned to the","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"J-hta-n"},"content":" * Command variable.","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"J-hta-n"},"content":" public static enum Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"J-hta-n"},"content":" SHOWTASKS(\"list\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"J-hta-n"},"content":" MARKTASKASDONE(\"mark\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"J-hta-n"},"content":" MARKTASKASNOTDONE(\"unmark\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"J-hta-n"},"content":" ADDTODO(\"todo\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"J-hta-n"},"content":" ADDDEADLINE(\"deadline\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"J-hta-n"},"content":" ADDEVENT(\"event\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"J-hta-n"},"content":" DELETETASK(\"delete\");","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"J-hta-n"},"content":" private String command;","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"J-hta-n"},"content":" private Command(String command) {","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"J-hta-n"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"J-hta-n"},"content":" public static Command getCommand(String userInput) {","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"J-hta-n"},"content":" for (Command command : Command.values()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"J-hta-n"},"content":" if (command.command.equals(userInput)) return command;","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"J-hta-n"},"content":" return null;","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"J-hta-n"},"content":" * Core function for instructing the TaskList object to execute commands and handle","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"J-hta-n"},"content":" * invalid inputs, for which EkudExceptions would be thrown by TaskList.","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"J-hta-n"},"content":" * @param command Input command by the user.","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"J-hta-n"},"content":" * @param userArgs Args for the command supplied by the user.","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudException Either invalid commands or illegal arguments for the commands.","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"J-hta-n"},"content":" public static void handleCommand(Command command, String userArgs) throws EkudException {","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"J-hta-n"},"content":" if (command \u003d\u003d null) {","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"J-hta-n"},"content":" throw new EkudInvalidCommandException(\"Command not found :(\");","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"J-hta-n"},"content":" switch (command) {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"J-hta-n"},"content":" case SHOWTASKS:","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"J-hta-n"},"content":" taskList.showTasks();","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"J-hta-n"},"content":" case MARKTASKASDONE:","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"J-hta-n"},"content":" taskList.markTaskAsDone(userArgs);","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"J-hta-n"},"content":" case MARKTASKASNOTDONE:","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"J-hta-n"},"content":" taskList.markTaskAsNotDone(userArgs);","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"J-hta-n"},"content":" case ADDTODO:","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"J-hta-n"},"content":" taskList.addToDo(userArgs);","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"J-hta-n"},"content":" case ADDDEADLINE:","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"J-hta-n"},"content":" taskList.addDeadline(userArgs);","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"J-hta-n"},"content":" case ADDEVENT:","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"J-hta-n"},"content":" taskList.addEvent(userArgs);","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"J-hta-n"},"content":" case DELETETASK:","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"J-hta-n"},"content":" taskList.deleteTask(userArgs);","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"J-hta-n"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"J-hta-n"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"J-hta-n"},"content":" throw new EkudInvalidCommandException(\"Command not found :(\");","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"J-hta-n"},"content":" // Main chatbot program","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"J-hta-n"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"J-hta-n"},"content":" // Load up saved tasks","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"J-hta-n"},"content":" taskList.loadData();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"J-hta-n"},"content":" } catch (EkudException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"J-hta-n"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"J-hta-n"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"J-hta-n"},"content":" Ekud.echo(INTRO);","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"J-hta-n"},"content":" // Process user input","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"J-hta-n"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"J-hta-n"},"content":" int firstSpace \u003d userInput.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"J-hta-n"},"content":" String inputCommand \u003d firstSpace \u003d\u003d -1 ? userInput : userInput.substring(0, firstSpace);","lastModifiedDate":"2023-08-26"},{"lineNumber":101,"author":{"gitId":"J-hta-n"},"content":" // Main chatbot functionality","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"J-hta-n"},"content":" while (!inputCommand.equals(\"end\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":103,"author":{"gitId":"J-hta-n"},"content":" Command command \u003d Command.getCommand(inputCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":104,"author":{"gitId":"J-hta-n"},"content":" String userArgs \u003d firstSpace \u003d\u003d -1 ? \"\": userInput.substring(firstSpace + 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"J-hta-n"},"content":" Ekud.handleCommand(command, userArgs); // throws EkudException for invalid inputs","lastModifiedDate":"2023-08-26"},{"lineNumber":107,"author":{"gitId":"J-hta-n"},"content":" } catch(EkudException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"J-hta-n"},"content":" Ekud.echo(e.toString()); // catch and print out EkudException message","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"J-hta-n"},"content":" // Process next line of user input","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"J-hta-n"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"J-hta-n"},"content":" firstSpace \u003d userInput.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"J-hta-n"},"content":" inputCommand \u003d firstSpace \u003d\u003d -1 ? userInput : userInput.substring(0, firstSpace);","lastModifiedDate":"2023-08-26"},{"lineNumber":114,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"J-hta-n"},"content":" // Updated saved tasks before exiting the program","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"J-hta-n"},"content":" System.out.println(\"Saving tasks...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"J-hta-n"},"content":" taskList.saveData();","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"J-hta-n"},"content":" } catch (EkudIOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"J-hta-n"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"J-hta-n"},"content":" Ekud.echo(OUTRO);","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"J-hta-n"},"content":" scanner.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":125,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"J-hta-n":125}},{"path":"src/main/java/extensions/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" * Represents a task with a deadline.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":" LocalDateTime dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":" public Deadline(String description, LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":" public String getDateTimeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":" return this.dateTime.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mm a\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"J-hta-n"},"content":" public String getSaveFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"J-hta-n"},"content":" return String.format(\"D | %c | %s | %s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"J-hta-n"},"content":" this.getDoneSymbol(),","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"J-hta-n"},"content":" this.description,","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"J-hta-n"},"content":" this.getDateTimeFormat());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"J-hta-n"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"J-hta-n"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"J-hta-n"},"content":" return String.format(\"[D][%c] %s (by: %s)\",","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"J-hta-n"},"content":" this.getDoneSymbol(),","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"J-hta-n"},"content":" this.description,","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"J-hta-n"},"content":" this.getDateTimeFormat());","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":32}},{"path":"src/main/java/extensions/EkudException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":" * Represents an exception thrown by the Ekud chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"public class EkudException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" public EkudException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":9}},{"path":"src/main/java/extensions/EkudIOException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" * Represents an error reading or writing to the saved tasks file.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":"public class EkudIOException extends EkudException {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" public EkudIOException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"J-hta-n":10}},{"path":"src/main/java/extensions/EkudIllegalArgException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":" * Represents illegal arguments by the user after giving a command to the chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"public class EkudIllegalArgException extends EkudException {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" public EkudIllegalArgException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":9}},{"path":"src/main/java/extensions/EkudInvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":" * Represents invalid commands by the user to the chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"public class EkudInvalidCommandException extends EkudException {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" public EkudInvalidCommandException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":9}},{"path":"src/main/java/extensions/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" * Represents a task with starting and ending dates/times.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":" LocalDateTime fromDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":" LocalDateTime toDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":" public Event(String description, LocalDateTime fromDateTime, LocalDateTime toDateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":" this.fromDateTime \u003d fromDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":" this.toDateTime \u003d toDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":" public String getDateTimeFormat(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mm a\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"J-hta-n"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"J-hta-n"},"content":" public String getSaveFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"J-hta-n"},"content":" return String.format(\"E | %c | %s | %s | %s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"J-hta-n"},"content":" this.getDoneSymbol(),","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"J-hta-n"},"content":" this.description,","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"J-hta-n"},"content":" this.getDateTimeFormat(this.fromDateTime),","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"J-hta-n"},"content":" this.getDateTimeFormat(this.toDateTime));","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"J-hta-n"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"J-hta-n"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"J-hta-n"},"content":" return String.format(\"[E][%c] %s (from: %s, to: %s)\",","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"J-hta-n"},"content":" this.getDoneSymbol(),","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"J-hta-n"},"content":" this.description,","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"J-hta-n"},"content":" this.getDateTimeFormat(this.fromDateTime),","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"J-hta-n"},"content":" this.getDateTimeFormat(this.toDateTime));","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":37}},{"path":"src/main/java/extensions/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":" * Represents a task created by the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":" public char getDoneSymbol() { return isDone ? \u0027X\u0027: \u0027 \u0027; }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"J-hta-n"},"content":" abstract public String getSaveFormat();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":21}},{"path":"src/main/java/extensions/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":" * TaskList handles task modifications and invalid user inputs for","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":" * modifying tasks, and is a key component of the Ekud chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":" // Same Horizontal Line as Ekud so TaskList can print outputs in a similar UI style","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":" private final String HORIZONTAL_LINE \u003d \"-~-~-~-~-~-~-~-~--~-~-~-~-~-~-~-~-\";","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"J-hta-n"},"content":" // Actual list storing the tasks","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"J-hta-n"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"J-hta-n"},"content":" // Relative path to file with saved tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"J-hta-n"},"content":" private static final String PATH \u003d \"src/main/data/savedTasks.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"J-hta-n"},"content":" // Constructor for TaskList","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"J-hta-n"},"content":" public TaskList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"J-hta-n"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"J-hta-n"},"content":" * Allows TaskList to print output in a similar UI style as Ekud with the","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"J-hta-n"},"content":" * same echo() method.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"J-hta-n"},"content":" * @param message Output text in between 2 horizontal lines.","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"J-hta-n"},"content":" public void echo(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"J-hta-n"},"content":" System.out.println(String.format(\"%s\\n%s\\n%s\",","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"J-hta-n"},"content":" HORIZONTAL_LINE,","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"J-hta-n"},"content":" message,","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"J-hta-n"},"content":" HORIZONTAL_LINE));","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"J-hta-n"},"content":" * Prints this TaskList to the console.","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"J-hta-n"},"content":" public void showTasks() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"J-hta-n"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"J-hta-n"},"content":" System.out.println(\"Here is your to-do list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"J-hta-n"},"content":" int len \u003d tasks.size();","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"J-hta-n"},"content":" for (int i \u003d 0; i \u003c len; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"J-hta-n"},"content":" System.out.println(String.format(\"%d. %s\", i + 1, tasks.get(i).toString()));","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"J-hta-n"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"J-hta-n"},"content":" * Marks a specific task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"J-hta-n"},"content":" * @param userArg Index number of task supplied by user.","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudIllegalArgException Illegal arg for index number.","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"J-hta-n"},"content":" public void markTaskAsDone(String userArg) throws EkudIllegalArgException {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"J-hta-n"},"content":" int index \u003d Integer.valueOf(userArg) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"J-hta-n"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"J-hta-n"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"J-hta-n"},"content":" this.echo(\"The following task is marked done, sheeesh:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"J-hta-n"},"content":" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"J-hta-n"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Please input a valid index number :o\");","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"J-hta-n"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Task index number is out of bounds :/\");","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"J-hta-n"},"content":" * Marks a specific task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"J-hta-n"},"content":" * @param userArg Index number of task supplied by user.","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudIllegalArgException Illegal arg for index number.","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"J-hta-n"},"content":" public void markTaskAsNotDone(String userArg) throws EkudIllegalArgException {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"J-hta-n"},"content":" int index \u003d Integer.valueOf(userArg) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"J-hta-n"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"J-hta-n"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"J-hta-n"},"content":" this.echo(\"The following task is marked as not done yet:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"J-hta-n"},"content":" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"J-hta-n"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Please input a valid index number :o\");","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"J-hta-n"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Task index number is out of bounds :/\");","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"J-hta-n"},"content":" * Prints a confirmation message for the user after adding a task.","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"J-hta-n"},"content":" * @param task","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"J-hta-n"},"content":" private void showTaskAdded(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"J-hta-n"},"content":" this.echo(String.format(","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"J-hta-n"},"content":" \"Got it! I\u0027ve added this task:\\n%s\\nNow you have %d task(s) in the list.\",","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"J-hta-n"},"content":" task.toString(),","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"J-hta-n"},"content":" tasks.size()));","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"J-hta-n"},"content":" * Adds a to-do task to this TaskList.","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"J-hta-n"},"content":" * @param description Description of to-do task by user.","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudIllegalArgException Illegal arg for to-do task.","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"J-hta-n"},"content":" public void addToDo(String description) throws EkudIllegalArgException {","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"J-hta-n"},"content":" if (description.isBlank()) { // isBlank() checks if string is all whitespace","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Todo task shouldn\u0027t be empty :(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"J-hta-n"},"content":" ToDo newToDo \u003d new ToDo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"J-hta-n"},"content":" this.tasks.add(newToDo);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"J-hta-n"},"content":" this.showTaskAdded(newToDo);","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"J-hta-n"},"content":" * Adds a deadline task to this TaskList.","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"J-hta-n"},"content":" * @param userArgs Args supplied by user for adding deadline task.","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudIllegalArgException Illegal arg(s) for deadline task.","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"J-hta-n"},"content":" public void addDeadline(String userArgs) throws EkudIllegalArgException {","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"J-hta-n"},"content":" String[] deadlineArgs \u003d userArgs.split(\" /by \");","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"J-hta-n"},"content":" String description \u003d deadlineArgs[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"J-hta-n"},"content":" if (deadlineArgs[1].isBlank() || description.isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Description/deadline shouldn\u0027t be empty :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"J-hta-n"},"content":" LocalDateTime dateTime \u003d this.parseDateTime(deadlineArgs[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"J-hta-n"},"content":" Deadline newDeadline \u003d new Deadline(description, dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"J-hta-n"},"content":" this.tasks.add(newDeadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"J-hta-n"},"content":" this.showTaskAdded(newDeadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"J-hta-n"},"content":" } catch(IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Deadline formatted wrongly\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"J-hta-n"},"content":" \"-\u003e Ensure \u0027deadline \u003cdescription\u003e /by \u003cdd-mm-yyyy\u003e OR \u003cdd-MM-yyyy hhmm\u003e\u0027 is followed\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"J-hta-n"},"content":" + \"-\u003e For example: deadline finish quiz /by 03-10-2023 1830\");","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"J-hta-n"},"content":" * Parses the user\u0027s input date and time into a LocalDateTime object.","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"J-hta-n"},"content":" * @param inputDateTime","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"J-hta-n"},"content":" * @return","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"J-hta-n"},"content":" public LocalDateTime parseDateTime(String inputDateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"J-hta-n"},"content":" String[] splitDateTime \u003d inputDateTime.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"J-hta-n"},"content":" String time \u003d splitDateTime.length \u003d\u003d 2 ? splitDateTime[1] : \"2359\";","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"J-hta-n"},"content":" String date \u003d splitDateTime[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"J-hta-n"},"content":" return LocalDateTime.parse(","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"J-hta-n"},"content":" date + \" \" + time, DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"J-hta-n"},"content":" * Parses a date and time from the saved tasks file into a LocalDateTime object.","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"J-hta-n"},"content":" * @param savedDateTime","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"J-hta-n"},"content":" * @return","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"J-hta-n"},"content":" public LocalDateTime parseSavedDateTime(String savedDateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"J-hta-n"},"content":" return LocalDateTime.parse(savedDateTime, DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mm a\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"J-hta-n"},"content":" * Adds an event task to this TaskList.","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"J-hta-n"},"content":" * @param userArgs Args supplied by user for adding event task.","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudIllegalArgException Illegal arg(s) for event task.","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"J-hta-n"},"content":" public void addEvent(String userArgs) throws EkudIllegalArgException {","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"J-hta-n"},"content":" String[] eventArgs \u003d userArgs.split(\" /from \");","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"J-hta-n"},"content":" String[] timings \u003d eventArgs[1].split(\" /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"J-hta-n"},"content":" String description \u003d eventArgs[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"J-hta-n"},"content":" if (description.isBlank() || timings[0].isBlank() || timings[1].isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Description/start/end shouldn\u0027t be empty :(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"J-hta-n"},"content":" LocalDateTime fromDateTime \u003d this.parseDateTime(timings[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"J-hta-n"},"content":" LocalDateTime toDateTime \u003d this.parseDateTime(timings[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"J-hta-n"},"content":" Event newEvent \u003d new Event(description, fromDateTime, toDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"J-hta-n"},"content":" this.tasks.add(newEvent);","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"J-hta-n"},"content":" this.showTaskAdded(newEvent);","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"J-hta-n"},"content":" } catch(IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Event formatted wrongly\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"J-hta-n"},"content":" \"-\u003e Ensure \u0027event \u003cdescription\u003e /from \u003cdd-MM-yyyy hhmm\u003e /to \u003cdd-MM-yyyy hhmm\u003e\u0027 is followed\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"J-hta-n"},"content":" + \"-\u003e For example: event company dinner /from 03-10-2023 1730 /to 03-10-2023 2215\");","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"J-hta-n"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"J-hta-n"},"content":" * Deletes a task from this TaskList and prints a confirmation message.","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"J-hta-n"},"content":" * @param userArg Index number of task to be deleted as supplied by user.","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"J-hta-n"},"content":" * @throws EkudIllegalArgException Illegal arg for index number.","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"J-hta-n"},"content":" public void deleteTask(String userArg) throws EkudIllegalArgException {","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"J-hta-n"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"You cannot delete from an empty task list :/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"J-hta-n"},"content":" int index \u003d Integer.valueOf(userArg) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"J-hta-n"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"J-hta-n"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"J-hta-n"},"content":" this.echo(String.format(","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"J-hta-n"},"content":" \"Alright, this task has been removed:\\n%s\\nNow you have %d task(s) in the list.\",","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"J-hta-n"},"content":" task.toString(),","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"J-hta-n"},"content":" tasks.size()));","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"J-hta-n"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Please input a valid index number :o\");","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"J-hta-n"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIllegalArgException(\"Task index number is out of bounds :/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"J-hta-n"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"J-hta-n"},"content":" public void loadData() throws EkudIOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"J-hta-n"},"content":" File savedTasks \u003d new File(PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"J-hta-n"},"content":" if (!savedTasks.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"J-hta-n"},"content":" System.out.println(\"Creating task file...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"J-hta-n"},"content":" savedTasks.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"J-hta-n"},"content":" System.out.println(\"Task file created successfully\");","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"J-hta-n"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":210,"author":{"gitId":"J-hta-n"},"content":" System.out.println(\"Loading up saved tasks...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":211,"author":{"gitId":"J-hta-n"},"content":" Scanner scanner \u003d new Scanner(savedTasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"J-hta-n"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":213,"author":{"gitId":"J-hta-n"},"content":" // Saved tasks format eg:","lastModifiedDate":"2023-08-31"},{"lineNumber":214,"author":{"gitId":"J-hta-n"},"content":" // T | 0 | task1","lastModifiedDate":"2023-08-31"},{"lineNumber":215,"author":{"gitId":"J-hta-n"},"content":" // D | 1 | task2 | 1st Sep","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"J-hta-n"},"content":" // E | 0 | task 3 | 1st Sep 2pm | 3rd Sep 2pm","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"J-hta-n"},"content":" String[] taskDetails \u003d scanner.nextLine().split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"J-hta-n"},"content":" String taskType \u003d taskDetails[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"J-hta-n"},"content":" boolean isDone \u003d taskDetails[1].equals(\"X\");","lastModifiedDate":"2023-08-31"},{"lineNumber":220,"author":{"gitId":"J-hta-n"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"J-hta-n"},"content":" this.tasks.add(new ToDo(taskDetails[2]));","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"J-hta-n"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"J-hta-n"},"content":" LocalDateTime dateTime \u003d this.parseSavedDateTime(taskDetails[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":224,"author":{"gitId":"J-hta-n"},"content":" this.tasks.add(new Deadline(taskDetails[2], dateTime));","lastModifiedDate":"2023-08-31"},{"lineNumber":225,"author":{"gitId":"J-hta-n"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"J-hta-n"},"content":" LocalDateTime fromDateTime \u003d this.parseSavedDateTime(taskDetails[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":227,"author":{"gitId":"J-hta-n"},"content":" LocalDateTime toDateTime \u003d this.parseSavedDateTime(taskDetails[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"J-hta-n"},"content":" this.tasks.add(new Event(taskDetails[2], fromDateTime, toDateTime));","lastModifiedDate":"2023-08-31"},{"lineNumber":229,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"J-hta-n"},"content":" if (isDone) this.tasks.get(tasks.size() - 1).markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"J-hta-n"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"J-hta-n"},"content":" System.out.println(\"No saved tasks found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"J-hta-n"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"J-hta-n"},"content":" System.out.println(\"Saved tasks loaded successfully\");","lastModifiedDate":"2023-08-31"},{"lineNumber":236,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":237,"author":{"gitId":"J-hta-n"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":238,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIOException(\"Error with creating task file: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":239,"author":{"gitId":"J-hta-n"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":240,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIOException(\"Error with parsing saved tasks file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":241,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":242,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":243,"author":{"gitId":"J-hta-n"},"content":" public void saveData() throws EkudIOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":244,"author":{"gitId":"J-hta-n"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":245,"author":{"gitId":"J-hta-n"},"content":" FileWriter fw \u003d new FileWriter(PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":246,"author":{"gitId":"J-hta-n"},"content":" int len \u003d tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":247,"author":{"gitId":"J-hta-n"},"content":" for (int i \u003d 0; i \u003c len; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":248,"author":{"gitId":"J-hta-n"},"content":" fw.write(tasks.get(i).getSaveFormat() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":249,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":250,"author":{"gitId":"J-hta-n"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":251,"author":{"gitId":"J-hta-n"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":252,"author":{"gitId":"J-hta-n"},"content":" throw new EkudIOException(\"Error with saving tasks\");","lastModifiedDate":"2023-08-31"},{"lineNumber":253,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":254,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":255,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":255}},{"path":"src/main/java/extensions/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"package extensions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":" * Represents a task with no additional attributes.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":" public String getSaveFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":" return String.format(\"T | %c | %s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":" this.getDoneSymbol(),","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":" this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":" return String.format(\"[T][%c] %s\",","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":" this.getDoneSymbol(),","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"J-hta-n"},"content":" this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"J-hta-n"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"J-hta-n"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"J-hta-n"},"content":"hi","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"J-hta-n"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"J-hta-n"},"content":"todo get groceries","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"J-hta-n"},"content":"todo go for a run","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"J-hta-n"},"content":"deadline finish quiz /by Saturday","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"J-hta-n"},"content":"deadline quiz 2 by Saturday","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"J-hta-n"},"content":"event meeting /from Sat 1pm /to Sat 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"J-hta-n"},"content":"event meeting from Sat 1pm to Sat 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"J-hta-n"},"content":"event dinner /from Fri 6pm /to8pm","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"J-hta-n"},"content":"event dinner /from Fri 6pm /to 8pm","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"J-hta-n"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"J-hta-n"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"J-hta-n"},"content":"mark 5","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"J-hta-n"},"content":"mark 6","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"J-hta-n"},"content":"mark 0","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"J-hta-n"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"J-hta-n"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"J-hta-n"},"content":"unmark 6","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"J-hta-n"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"J-hta-n"},"content":"delete 0","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"J-hta-n"},"content":"delete 1","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"J-hta-n"},"content":"delete 5","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"J-hta-n"},"content":"delete 3","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"J-hta-n"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"J-hta-n"},"content":"mark2","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"J-hta-n"},"content":"mark w","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"J-hta-n"},"content":"end","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"J-hta-n":27}},{"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":"J-hta-n"},"content":"java -classpath ../bin Ekud \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"-":37,"J-hta-n":1}}] diff --git a/J-hta-n_ip_master/commits.json b/J-hta-n_ip_master/commits.json index 856753ab..9a5a3ada 100644 --- a/J-hta-n_ip_master/commits.json +++ b/J-hta-n_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"J-hta-n":[{"date":"2023-08-22","commitResults":[{"hash":"71353a6433598784541c08f0d4e5638641b8e1c0","isMergeCommit":false,"messageTitle":"Add initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2023-08-23","commitResults":[{"hash":"2540b5c6d70af3986109a26b73612e2acba7c399","isMergeCommit":false,"messageTitle":"Add echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":11}}},{"hash":"2ac2e306eb38013a80f2a6d79f2f3e12d5c57ac3","isMergeCommit":false,"messageTitle":"Change echo to user text list functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"f707a8c18a595f6cc95e790f161e4ad885a0fcdf","isMergeCommit":false,"messageTitle":"Add mark as done functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":15}}},{"hash":"da7710d658e4701cb3e138ebb2461f5a73d73403","isMergeCommit":false,"messageTitle":"Add support for different task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":10}}},{"hash":"43bdb07344ce209a131a68ddf4440343544b9b69","isMergeCommit":false,"messageTitle":"Add test case (text UI testing)","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"e643b0989fba41c1e14604cac162a0e462a14b04","isMergeCommit":false,"messageTitle":"Refactor design and add exception handling for invalid inputs","messageBody":"Made TaskList an object to handle task modifications and handling of illegal arguments for modifying the TaskList with the EkudIllegalArgException, while EkudInvalidCommandException is handled from the main chatbot program itself\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":229,"deletions":78}}}]},{"date":"2023-08-24","commitResults":[{"hash":"43b4a06006be62644b5143602e999216d495aabd","isMergeCommit":false,"messageTitle":"Add delete functionality for task list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}},{"hash":"01179a7f56c9e8103b8a271d8663dc779be5ab13","isMergeCommit":false,"messageTitle":"Update test case","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":19,"deletions":2}}},{"hash":"159ceda04586550f035a4d82dc79daba83fd210e","isMergeCommit":false,"messageTitle":"Refactor code to handle all invalid inputs in TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":74}}},{"hash":"c75451e45f744243843f6b9f6c5c51094ca9879f","isMergeCommit":false,"messageTitle":"Touchup on documentation","messageBody":"Also tried using enum for commands, but not done since invalid commands are already handled with the generic EkudInvalidCommandException mesage\n","tags":["Level-6.1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":13}}},{"hash":"7a4d4e325a3838568e7dff6db6441d85a6ce1bc5","isMergeCommit":false,"messageTitle":"Minor refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}}]},{"date":"2023-08-26","commitResults":[{"hash":"650339c8e55764ce1b5408b1cd582605bcbbbb6d","isMergeCommit":false,"messageTitle":"Add enum for commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":15}}},{"hash":"e12a927f6052b66080fe47a798f9b1e587600b7f","isMergeCommit":false,"messageTitle":"Trivial modifications","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"0bff793cd475f2afea20812b1d982ae9eae75769","isMergeCommit":false,"messageTitle":"Change constant naming","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":8}}}]}]},"authorFileTypeContributionMap":{"J-hta-n":{"java":382,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":27}},"authorContributionVariance":{"J-hta-n":25446.248},"authorDisplayNameMap":{"J-hta-n":"CS2103T-F11-3 TAN .. HAO"}} +{"authorDailyContributionsMap":{"J-hta-n":[{"date":"2023-08-22","commitResults":[{"hash":"71353a6433598784541c08f0d4e5638641b8e1c0","isMergeCommit":false,"messageTitle":"Add initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2023-08-23","commitResults":[{"hash":"2540b5c6d70af3986109a26b73612e2acba7c399","isMergeCommit":false,"messageTitle":"Add echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":11}}},{"hash":"2ac2e306eb38013a80f2a6d79f2f3e12d5c57ac3","isMergeCommit":false,"messageTitle":"Change echo to user text list functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"f707a8c18a595f6cc95e790f161e4ad885a0fcdf","isMergeCommit":false,"messageTitle":"Add mark as done functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":15}}},{"hash":"da7710d658e4701cb3e138ebb2461f5a73d73403","isMergeCommit":false,"messageTitle":"Add support for different task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":10}}},{"hash":"43bdb07344ce209a131a68ddf4440343544b9b69","isMergeCommit":false,"messageTitle":"Add test case (text UI testing)","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"e643b0989fba41c1e14604cac162a0e462a14b04","isMergeCommit":false,"messageTitle":"Refactor design and add exception handling for invalid inputs","messageBody":"Made TaskList an object to handle task modifications and handling of illegal arguments for modifying the TaskList with the EkudIllegalArgException, while EkudInvalidCommandException is handled from the main chatbot program itself\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":229,"deletions":78}}}]},{"date":"2023-08-24","commitResults":[{"hash":"43b4a06006be62644b5143602e999216d495aabd","isMergeCommit":false,"messageTitle":"Add delete functionality for task list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}},{"hash":"01179a7f56c9e8103b8a271d8663dc779be5ab13","isMergeCommit":false,"messageTitle":"Update test case","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":19,"deletions":2}}},{"hash":"159ceda04586550f035a4d82dc79daba83fd210e","isMergeCommit":false,"messageTitle":"Refactor code to handle all invalid inputs in TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":74}}},{"hash":"c75451e45f744243843f6b9f6c5c51094ca9879f","isMergeCommit":false,"messageTitle":"Touchup on documentation","messageBody":"Also tried using enum for commands, but not done since invalid commands are already handled with the generic EkudInvalidCommandException mesage\n","tags":["Level-6.1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":13}}},{"hash":"7a4d4e325a3838568e7dff6db6441d85a6ce1bc5","isMergeCommit":false,"messageTitle":"Minor refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}}]},{"date":"2023-08-26","commitResults":[{"hash":"650339c8e55764ce1b5408b1cd582605bcbbbb6d","isMergeCommit":false,"messageTitle":"Add enum for commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":15}}},{"hash":"e12a927f6052b66080fe47a798f9b1e587600b7f","isMergeCommit":false,"messageTitle":"Trivial modifications","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"0bff793cd475f2afea20812b1d982ae9eae75769","isMergeCommit":false,"messageTitle":"Change constant naming","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":8}}}]},{"date":"2023-08-31","commitResults":[{"hash":"9afcd6d8d0f933357da6a14c8f45d9c23e88dcea","isMergeCommit":false,"messageTitle":"Add functionality of saving tasks in hard disk","messageBody":"Everytime a user quits the program, the tasks are saved and loaded up for the next session.\n\nExceptions with reading or writing of data is also handled to inform the user of the error.\n","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":148,"deletions":45}}},{"hash":"16d4efa83e3f0399cf287a0f891be34a6e3beeac","isMergeCommit":false,"messageTitle":"Add formatting for date and times (in deadlines and events)","messageBody":"Program now requires users to input a valid dateTime format for parsing. A similar parsing process is used\n\nwhen reading from the saved task list file.\n","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":74,"deletions":31}}}]},{"date":"2023-09-01","commitResults":[{"hash":"6e50ca4c80a8023bef1ad4e7bdd27a6a2c10fa3a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Adds saving of tasks functionality to the program","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d184183c76daba9904587f55a80198550fc06d7b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 Adds support for dateTime objects in the program","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"J-hta-n":{"java":528,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":33}},"authorContributionVariance":{"J-hta-n":24584.646},"authorDisplayNameMap":{"J-hta-n":"CS2103T-F11-3 TAN .. HAO"}} diff --git a/JeremyYong128_ip_master/authorship.json b/JeremyYong128_ip_master/authorship.json index 9c2cefd6..c03d2328 100644 --- a/JeremyYong128_ip_master/authorship.json +++ b/JeremyYong128_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"JeremyYong128":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"JeremyYong128":1}},{"path":"src/main/java/duke/DateManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":"public class DateManager {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" private final static String DATE_FORMAT \u003d \"dd-MM-yyyy\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" private final static String TIME_FORMAT \u003d \"HHmm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" private final static String DATETIME_OUTPUT_FORMAT \u003d \"d MMMM yyyy h:mma\";","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" private final static String DATETIME_STORAGE_FORMAT \u003d \"ddMMyyyy HHmm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" private final static String STORAGE_DATE_FORMAT \u003d \"ddMMyyyy\";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" // Parse the date and time strings into a dateTime object","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" public static LocalDateTime parseDateString(String dateString, String timeString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" LocalDate date \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" LocalTime time \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" date \u003d LocalDate.parse(dateString, DateTimeFormatter.ofPattern(DATE_FORMAT));","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" time \u003d LocalTime.parse(timeString, DateTimeFormatter.ofPattern(TIME_FORMAT));","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" dateTime \u003d LocalDateTime.of(date, time);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Error in parsing date string: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" return dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" // Parse the date and time strings from storage into a dateTime object","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" public static LocalDateTime parseStorageDateString(String dateString, String timeString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" LocalDate date \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" LocalTime time \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" date \u003d LocalDate.parse(dateString, DateTimeFormatter.ofPattern(STORAGE_DATE_FORMAT));","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" time \u003d LocalTime.parse(timeString, DateTimeFormatter.ofPattern(TIME_FORMAT));","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" dateTime \u003d LocalDateTime.of(date, time);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Error in parsing date string: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":" return dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" // Return String representation of a dateTime in the chatbot","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":" public static String dateTimeToString(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(DATETIME_OUTPUT_FORMAT));","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"JeremyYong128"},"content":" // Return String representation of a dateTime in the storage","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"JeremyYong128"},"content":" public static String dateTimeToStringStorage(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"JeremyYong128"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(DATETIME_STORAGE_FORMAT));","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":58}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" private String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for duke.Deadline","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" public Deadline(String name, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for duke.Deadline with done status","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" public Deadline(String name, String by, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for duke.Deadline with date and time","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" public Deadline(String name, LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" super(name);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for duke.Deadline with date and time and done status","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" public Deadline(String name, LocalDateTime dateTime, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" // Gets string representation of the duke.Deadline","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" if (by \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" return \"[D]\" + super.toString() + \" (by: \" + DateManager.dateTimeToString(dateTime) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" // Gets string representation of the duke.Deadline for hard disk","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" public String toStringStorage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":" String nameField \u003d this.getName();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":" String isDoneField \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" String deadlineField \u003d by \u003d\u003d null ? DateManager.dateTimeToStringStorage(this.dateTime) : by;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":" return \"D|\" + isDoneField + \"|\" + nameField + \"|\" + deadlineField;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" // Gets the date that the duke.Deadline is due by","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" public String getBy() {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":" return this.by;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":54}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" private Tasklist tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" private Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" tasks \u003d new Tasklist(storage.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" public void start() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" Ui.greet();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" String currStr \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" while (!currStr.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" Parser.parseResponse(currStr, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" currStr \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" Ui.goodbye();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" storage.updateTasks(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" new Duke(\"data/list.txt\").start();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"JeremyYong128":30,"-":3}},{"path":"src/main/java/duke/EmptyTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"public class EmptyTodoException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":" // Gets string representation of exception","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" return \"Description of Todo cannot be empty.\";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":8}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":" private String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":" private String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for duke.Event","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" public Event(String name, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for duke.Event with done status","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" public Event(String name, String from, String to, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" // Get string representation of the duke.Event","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" // Gets string representation of the duke.Todo for hard disk","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" public String toStringStorage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" String nameField \u003d this.getName();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" String isDoneField \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" String fromField \u003d this.from;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" String toField \u003d this.to;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" return \"E|\" + isDoneField + \"|\" + nameField + \"|\" + fromField + \"|\" + toField;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" // Gets the start of the duke.Event","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" public String getFrom() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":" return this.from;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" // Gets the end of the duke.Event","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" public String getTo() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" return this.to;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":44}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" // Parses the response given by the user","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" public static void parseResponse(String s, Tasklist tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" if (s.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" Ui.listTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" String[] splitStr \u003d s.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" if (splitStr.length \u003d\u003d 2 \u0026\u0026 (splitStr[0].equals(\"mark\") || splitStr[0].equals(\"unmark\"))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" int itemNumber \u003d Integer.parseInt(splitStr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" if (splitStr[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" tasks.markDone(itemNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" Ui.informTaskDone(tasks.getTask(itemNumber - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" tasks.markUndone(itemNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" Ui.informTaskUndone(tasks.getTask(itemNumber - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" throw new WrongInputException();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" } else if (splitStr.length \u003d\u003d 2 \u0026\u0026 splitStr[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" if (tasks.getSize() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"No items already, what you want to delete?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" int itemNumber \u003d Integer.parseInt(splitStr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" Ui.informTaskDeleted(tasks.getTask(itemNumber - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" tasks.deleteItem(itemNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" Ui.informListSize(tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":" throw new WrongInputException();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" } else if (splitStr[0].equals(\"todo\") || splitStr[0].equals(\"deadline\") || splitStr[0].equals(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" Task addedTask \u003d new Task(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" switch (splitStr[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":" String[] todoSplit \u003d s.split(\"todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":" if (todoSplit.length \u003c\u003d 1 || todoSplit[1].trim().equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" throw new EmptyTodoException();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" addedTask \u003d new Todo(todoSplit[1].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" String splitStr1 \u003d s.split(\"deadline \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":" String[] splitStr2 \u003d splitStr1.split(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"JeremyYong128"},"content":" String[] splitStr3 \u003d splitStr2[1].split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"JeremyYong128"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"JeremyYong128"},"content":" if (splitStr3.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"JeremyYong128"},"content":" dateTime \u003d DateManager.parseDateString(splitStr3[0], splitStr3[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"JeremyYong128"},"content":" addedTask \u003d dateTime \u003d\u003d null ? new Deadline(splitStr2[0], splitStr2[1])","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"JeremyYong128"},"content":" : new Deadline(splitStr2[0], dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"JeremyYong128"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"JeremyYong128"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"JeremyYong128"},"content":" String eSplitStr1 \u003d s.split(\"event \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"JeremyYong128"},"content":" String[] eSplitStr2 \u003d eSplitStr1.split(\" /\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"JeremyYong128"},"content":" addedTask \u003d new Event(eSplitStr2[0], eSplitStr2[1].substring(5), eSplitStr2[2].substring(3));","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"JeremyYong128"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"JeremyYong128"},"content":" tasks.addTask(addedTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"JeremyYong128"},"content":" Ui.informTaskAdded(addedTask, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"JeremyYong128"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"JeremyYong128"},"content":" throw new WrongInputException();","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"JeremyYong128"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Error: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":77}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" private final String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" private final File hardDiskFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for storage","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" this.hardDiskFile \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" private void createFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" File parentDir \u003d hardDiskFile.getParentFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" parentDir.mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" hardDiskFile.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Error when creating new file: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" // Returns an ArrayList of all tasks in the storage","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" createFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" try (BufferedReader br \u003d new BufferedReader(new FileReader(filePath))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" String[] parts \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" continue;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":" String identifier \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" boolean done \u003d parts[1] \u003d\u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" String name \u003d parts[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"JeremyYong128"},"content":" if (identifier.equals(\"T\") \u0026\u0026 parts.length \u003d\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"JeremyYong128"},"content":" tasks.add(new Todo(name, done));","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"JeremyYong128"},"content":" } else if (identifier.equals(\"D\") \u0026\u0026 parts.length \u003d\u003d 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"JeremyYong128"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"JeremyYong128"},"content":" String[] dSplitStr \u003d parts[3].split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"JeremyYong128"},"content":" if (dSplitStr.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"JeremyYong128"},"content":" dateTime \u003d DateManager.parseStorageDateString(dSplitStr[0], dSplitStr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"JeremyYong128"},"content":" tasks.add(dateTime \u003d\u003d null ? new Deadline(name, parts[3], done)","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"JeremyYong128"},"content":" : new Deadline(name, dateTime, done));","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"JeremyYong128"},"content":" } else if (identifier.equals(\"E\") \u0026\u0026 parts.length \u003d\u003d 5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"JeremyYong128"},"content":" tasks.add(new Event(name, parts[3], parts[4], done));","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"JeremyYong128"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Error when reading tasks: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"JeremyYong128"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"JeremyYong128"},"content":" // Updates the storage with the new task list","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"JeremyYong128"},"content":" public void updateTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"JeremyYong128"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"JeremyYong128"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"JeremyYong128"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"JeremyYong128"},"content":" Todo todo \u003d (Todo) task;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"JeremyYong128"},"content":" writer.write(todo.toStringStorage());","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"JeremyYong128"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"JeremyYong128"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"JeremyYong128"},"content":" writer.write(deadline.toStringStorage());","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"JeremyYong128"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"JeremyYong128"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"JeremyYong128"},"content":" writer.write(event.toStringStorage());","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"JeremyYong128"},"content":" writer.newLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"JeremyYong128"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Error when updating tasks: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":93}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":" private String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":" private boolean done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for duke.Task","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for duke.Task with done status","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" public Task(String name, boolean done) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" // Checks if the task is done.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" return done;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" // Gets string representation of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" String checkbox \u003d done ? \"[X] \" : \"[ ] \";","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" return checkbox + name;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" // Marks task as done","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" done \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" // Marks task as undone","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" // Gets name of duke.Task","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" public String getName() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" return this.name;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":43}},{"path":"src/main/java/duke/Tasklist.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"public class Tasklist {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for the Tasklist","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" public Tasklist(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" // Gets the ArrayList of tasks","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" // Gets the size of the task list","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" // Gets the task at a particular index in the task list","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" public Task getTask(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" return tasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" // Gets the string representation of a particular item in the task list","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" public String getItemString(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" return tasks.get(i).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" // Marks an item as done","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" public void markDone(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" tasks.get(i).markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" // Marks an item as undone","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" public void markUndone(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" tasks.get(i).markUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" // Delete an item in the task list","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":" public void deleteItem(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":" tasks.remove(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" // Adds a task to the task list","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":52}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for duke.Todo","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":" public Todo(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for duke.Todo with done status","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" public Todo(String name, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" // Gets string representation of the duke.Todo","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" // Gets string representation of the duke.Todo for hard disk","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" public String toStringStorage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" String nameField \u003d this.getName();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" String isDoneField \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" return \"T|\" + isDoneField + \"|\" + nameField;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":25}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":" // Greets the user","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":" public static void greet() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"I\u0027m Jermbot. What you want?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" // Says goodbye to the user","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" public static void goodbye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Good riddance.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" // Lists out each task in the task list","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" public static void listTasks(Tasklist tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" System.out.print(i + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" System.out.print(\". \" + tasks.getItemString(i) + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" // Notifies the user that a task has been marked as done","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" public static void informTaskDone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Ok good job lor you finished this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" // Notifies the user that a task has been marked as undone","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" public static void informTaskUndone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Wah why you never do this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" // Notifies the user that a task has been deleted","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" public static void informTaskDeleted(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Ok slacker I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" // Notifies the user that a task has been added","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" public static void informTaskAdded(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" System.out.printf(\"Haha now you have this task to do:\\n %s\\nIn total you have %d things to do.\\n\", task, size);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":" // Informs the user about the number of tasks are on the list","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" public static void informListSize(int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list. Happy anot.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":49}},{"path":"src/main/java/duke/WrongInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"public class WrongInputException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":" // Gets string representation of exception","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" return \"Wrong input format.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":8}},{"path":"src/test/java/duke/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"public class TaskTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" public void toStringTest(){","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" Task unmarkedTask \u003d new Todo(\"Clean\", true);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" Task markedTask \u003d new Todo(\"Cook\", false);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" assertEquals(\"[T][X] Clean\", unmarkedTask.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" assertEquals(\"[T][ ] Cook\", markedTask.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":14}},{"path":"src/test/java/duke/TasklistTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":"public class TasklistTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" public void taskListTest(){","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" Tasklist tasks \u003d new Tasklist(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" Task task \u003d new Todo(\"Cook\", true);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" Task obtainedTask \u003d tasks.getTask(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" assertTrue(obtainedTask.isDone());","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" assertEquals(\"Cook\", obtainedTask.getName());","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"todo sleep","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"deadline wake up /by today","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"event cook dinner /from 3pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":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":"JeremyYong128"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"-":20,"JeremyYong128":1}},{"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":"JeremyYong128"},"content":"java -classpath ../bin JermBot \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":{"-":37,"JeremyYong128":1}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"JeremyYong128":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"JeremyYong128":1}},{"path":"src/main/java/duke/DateManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":"public class DateManager {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" private final static String DATE_FORMAT \u003d \"dd-MM-yyyy\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" private final static String TIME_FORMAT \u003d \"HHmm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" private final static String DATETIME_OUTPUT_FORMAT \u003d \"d MMMM yyyy h:mma\";","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" private final static String DATETIME_STORAGE_FORMAT \u003d \"ddMMyyyy HHmm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" private final static String STORAGE_DATE_FORMAT \u003d \"ddMMyyyy\";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" * Parses the date and time strings into a dateTime object.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" * @param dateString String representing the date.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" * @param timeString String representing the time.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" * @return A dateTime object with the specified date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" public static LocalDateTime parseDateString(String dateString, String timeString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" LocalDate date \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" LocalTime time \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" date \u003d LocalDate.parse(dateString, DateTimeFormatter.ofPattern(DATE_FORMAT));","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" time \u003d LocalTime.parse(timeString, DateTimeFormatter.ofPattern(TIME_FORMAT));","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" dateTime \u003d LocalDateTime.of(date, time);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Error in parsing date string: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" return dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" * Parses the date and time strings from storage into a dateTime object.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" * @param dateString String representing the date.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" * @param timeString String representing the time.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" * @return A dateTime object with the specified date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":" public static LocalDateTime parseStorageDateString(String dateString, String timeString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" LocalDate date \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":" LocalTime time \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" date \u003d LocalDate.parse(dateString, DateTimeFormatter.ofPattern(STORAGE_DATE_FORMAT));","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":" time \u003d LocalTime.parse(timeString, DateTimeFormatter.ofPattern(TIME_FORMAT));","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"JeremyYong128"},"content":" dateTime \u003d LocalDateTime.of(date, time);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"JeremyYong128"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Error in parsing date string: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"JeremyYong128"},"content":" return dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"JeremyYong128"},"content":" * Returns the String representation of a dateTime object in the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"JeremyYong128"},"content":" * @param dateTime The dateTime object to be converted into a String.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"JeremyYong128"},"content":" * @return A String representing the dateTime object.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"JeremyYong128"},"content":" public static String dateTimeToString(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"JeremyYong128"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(DATETIME_OUTPUT_FORMAT));","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"JeremyYong128"},"content":" * Returns the String representation of a dateTime object in the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"JeremyYong128"},"content":" * @param dateTime The dateTime object to be converted into a String.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"JeremyYong128"},"content":" * @return A String representing the dateTime object in the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"JeremyYong128"},"content":" public static String dateTimeToStringStorage(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"JeremyYong128"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(DATETIME_STORAGE_FORMAT));","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":79}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" private String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Deadline, if it is not supplied with a dateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" * @param name Description of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" * @param by Description of when the Deadline is due.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" public Deadline(String name, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Deadline, if it is not supplied with a dateTime but its","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" * done status is specified.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" * @param name Description of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" * @param by Description of when the Deadline is due.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" * @param isDone Boolean representing whether the task is done.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" public Deadline(String name, String by, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Deadline if it is supplied with a dateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" * @param name Description of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":" * @param dateTime dateTime object representing when the Deadline is due.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" // Constructor for duke.Deadline with date and time","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" public Deadline(String name, LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" super(name);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Deadline if it is supplied with a dateTime and done status.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" * @param name Description of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":" * @param dateTime dateTime object representing when the Deadline is due.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" * @param isDone Boolean representing whether the task is done.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":" public Deadline(String name, LocalDateTime dateTime, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"JeremyYong128"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"JeremyYong128"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"JeremyYong128"},"content":" * Gets the String representation of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"JeremyYong128"},"content":" * @return String representation of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"JeremyYong128"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"JeremyYong128"},"content":" if (by \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"JeremyYong128"},"content":" return \"[D]\" + super.toString() + \" (by: \" + DateManager.dateTimeToString(dateTime) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"JeremyYong128"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"JeremyYong128"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"JeremyYong128"},"content":" * Gets the String representation of the Deadline in the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"JeremyYong128"},"content":" * @return String representation of the Deadline in the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"JeremyYong128"},"content":" public String toStringStorage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"JeremyYong128"},"content":" String nameField \u003d this.getName();","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"JeremyYong128"},"content":" String isDoneField \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"JeremyYong128"},"content":" String deadlineField \u003d by \u003d\u003d null ? DateManager.dateTimeToStringStorage(this.dateTime) : by;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"JeremyYong128"},"content":" return \"D|\" + isDoneField + \"|\" + nameField + \"|\" + deadlineField;","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":81}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" private Tasklist tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" private Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Duke.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" * @param filePath Path of file that will be used as storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" tasks \u003d new Tasklist(storage.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" * Starts the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" public void start() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" Ui.greet();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" String currStr \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" while (!currStr.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" Parser.parseResponse(currStr, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" currStr \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" Ui.goodbye();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" storage.updateTasks(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" new Duke(\"data/list.txt\").start();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"JeremyYong128":38,"-":3}},{"path":"src/main/java/duke/EmptyTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"public class EmptyTodoException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":" * Gets the String representation of the Exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" * @return String representation of the Exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" return \"Description of Todo cannot be empty.\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":12}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":" private String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":" private String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" * @param name Description of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" * @param from Starting time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" * @param to Ending time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" public Event(String name, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Event if a done status is supplied.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" * @param name Description of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" * @param from Starting time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" * @param to Ending time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" * @param isDone Boolean representing whether the Event is done.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" public Event(String name, String from, String to, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" * Gets the String representation of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":" * @return String representation of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":" * Gets the String representation of the Event in the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" * @return String representation of the Event in the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" public String toStringStorage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":" String nameField \u003d this.getName();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" String isDoneField \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" String fromField \u003d this.from;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":" String toField \u003d this.to;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"JeremyYong128"},"content":" return \"E|\" + isDoneField + \"|\" + nameField + \"|\" + fromField + \"|\" + toField;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":55}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import java.lang.reflect.Array;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" * Parses the response given by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" * @param s The response of the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" * @param tasks The current Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" public static void parseResponse(String s, Tasklist tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" if (s.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" Ui.listTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" String[] splitStr \u003d s.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" if (splitStr.length \u003d\u003d 2 \u0026\u0026 (splitStr[0].equals(\"mark\") || splitStr[0].equals(\"unmark\"))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" int itemNumber \u003d Integer.parseInt(splitStr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" if (splitStr[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" tasks.markDone(itemNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" Ui.informTaskDone(tasks.getTask(itemNumber - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" tasks.markUndone(itemNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" Ui.informTaskUndone(tasks.getTask(itemNumber - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" throw new WrongInputException();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" } else if (splitStr.length \u003d\u003d 2 \u0026\u0026 splitStr[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" if (tasks.getSize() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"No items already, what you want to delete?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" int itemNumber \u003d Integer.parseInt(splitStr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" Ui.informTaskDeleted(tasks.getTask(itemNumber - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" tasks.deleteItem(itemNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" Ui.informListSize(tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":" throw new WrongInputException();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":" } else if (splitStr[0].equals(\"todo\") || splitStr[0].equals(\"deadline\") || splitStr[0].equals(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" Task addedTask \u003d new Task(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":" switch (splitStr[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" String[] todoSplit \u003d s.split(\"todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":" if (todoSplit.length \u003c\u003d 1 || todoSplit[1].trim().equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"JeremyYong128"},"content":" throw new EmptyTodoException();","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"JeremyYong128"},"content":" addedTask \u003d new Todo(todoSplit[1].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"JeremyYong128"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"JeremyYong128"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"JeremyYong128"},"content":" String splitStr1 \u003d s.split(\"deadline \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"JeremyYong128"},"content":" String[] splitStr2 \u003d splitStr1.split(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"JeremyYong128"},"content":" String[] splitStr3 \u003d splitStr2[1].split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"JeremyYong128"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"JeremyYong128"},"content":" if (splitStr3.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"JeremyYong128"},"content":" dateTime \u003d DateManager.parseDateString(splitStr3[0], splitStr3[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"JeremyYong128"},"content":" addedTask \u003d dateTime \u003d\u003d null ? new Deadline(splitStr2[0], splitStr2[1])","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"JeremyYong128"},"content":" : new Deadline(splitStr2[0], dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"JeremyYong128"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"JeremyYong128"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"JeremyYong128"},"content":" String eSplitStr1 \u003d s.split(\"event \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"JeremyYong128"},"content":" String[] eSplitStr2 \u003d eSplitStr1.split(\" /\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"JeremyYong128"},"content":" addedTask \u003d new Event(eSplitStr2[0], eSplitStr2[1].substring(5), eSplitStr2[2].substring(3));","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"JeremyYong128"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"JeremyYong128"},"content":" tasks.addTask(addedTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"JeremyYong128"},"content":" Ui.informTaskAdded(addedTask, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"JeremyYong128"},"content":" } else if (splitStr[0].equals(\"find\") \u0026\u0026 splitStr.length \u003e 1 \u0026\u0026 !splitStr[1].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"JeremyYong128"},"content":" String subString \u003d s.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"JeremyYong128"},"content":" ArrayList\u003cTask\u003e filteredList \u003d tasks.filterBySubstring(subString);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"JeremyYong128"},"content":" Tasklist newTasklist \u003d new Tasklist(filteredList);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"JeremyYong128"},"content":" Ui.listTasks(newTasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"JeremyYong128"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"JeremyYong128"},"content":" throw new WrongInputException();","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"JeremyYong128"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Error: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":89}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" private final String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" private final File hardDiskFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" * @param filePath Path of file that will be used as storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" this.hardDiskFile \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" private void createFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" File parentDir \u003d hardDiskFile.getParentFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" parentDir.mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" hardDiskFile.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Error when creating new file: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" * Returns an Arraylist of all tasks in the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" * @return Arraylist of tasks in the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":" createFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" try (BufferedReader br \u003d new BufferedReader(new FileReader(filePath))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" String[] parts \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"JeremyYong128"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"JeremyYong128"},"content":" continue;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"JeremyYong128"},"content":" String identifier \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"JeremyYong128"},"content":" boolean done \u003d parts[1] \u003d\u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"JeremyYong128"},"content":" String name \u003d parts[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"JeremyYong128"},"content":" if (identifier.equals(\"T\") \u0026\u0026 parts.length \u003d\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"JeremyYong128"},"content":" tasks.add(new Todo(name, done));","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"JeremyYong128"},"content":" } else if (identifier.equals(\"D\") \u0026\u0026 parts.length \u003d\u003d 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"JeremyYong128"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"JeremyYong128"},"content":" String[] dSplitStr \u003d parts[3].split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"JeremyYong128"},"content":" if (dSplitStr.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"JeremyYong128"},"content":" dateTime \u003d DateManager.parseStorageDateString(dSplitStr[0], dSplitStr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"JeremyYong128"},"content":" tasks.add(dateTime \u003d\u003d null ? new Deadline(name, parts[3], done)","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"JeremyYong128"},"content":" : new Deadline(name, dateTime, done));","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"JeremyYong128"},"content":" } else if (identifier.equals(\"E\") \u0026\u0026 parts.length \u003d\u003d 5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"JeremyYong128"},"content":" tasks.add(new Event(name, parts[3], parts[4], done));","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"JeremyYong128"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Error when reading tasks: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"JeremyYong128"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"JeremyYong128"},"content":" * Updates the storage with the new Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"JeremyYong128"},"content":" * @param tasks The updated Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"JeremyYong128"},"content":" public void updateTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"JeremyYong128"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"JeremyYong128"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"JeremyYong128"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"JeremyYong128"},"content":" Todo todo \u003d (Todo) task;","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"JeremyYong128"},"content":" writer.write(todo.toStringStorage());","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"JeremyYong128"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"JeremyYong128"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"JeremyYong128"},"content":" writer.write(deadline.toStringStorage());","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"JeremyYong128"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"JeremyYong128"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"JeremyYong128"},"content":" writer.write(event.toStringStorage());","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"JeremyYong128"},"content":" writer.newLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"JeremyYong128"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Error when updating tasks: \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":105}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":" private String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" * @param name Description of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Task if it is supplied with a done status.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" * @param name Description of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" * @param isDone Boolean representing whether the task is done.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" public Task(String name, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" * Checks if the task is done.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" * @return Boolean representing whether the task is done.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" return isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":" * Gets the String representation of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" * @return String representation of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" String checkbox \u003d isDone ? \"[X] \" : \"[ ] \";","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" return checkbox + name;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":" * Marks Task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" isDone \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"JeremyYong128"},"content":" * Marks task as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"JeremyYong128"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"JeremyYong128"},"content":" isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"JeremyYong128"},"content":" * Gets the name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"JeremyYong128"},"content":" * @return Name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"JeremyYong128"},"content":" public String getName() {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"JeremyYong128"},"content":" return this.name;","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":68}},{"path":"src/main/java/duke/Tasklist.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"public class Tasklist {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Tasklist","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" * @param tasks Arraylist of tasks to put in the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" public Tasklist(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" * Returns an Arraylist representing the Tasks in the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" * @return Arraylist of Tasks in the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" * Returns the size of the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" * @return Size of the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" * Gets the task at a particular index in the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" * @param i The index of the Task in the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" * @return The Task at that index in the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" public Task getTask(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" return tasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" * Gets the String representation of the Task at a particular index in the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":" * @param i The index of the Task in the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" * @return The String representation of the Task at that index in the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" public String getItemString(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" return tasks.get(i).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"JeremyYong128"},"content":" * Marks an item in the Tasklist as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"JeremyYong128"},"content":" * @param i Index of the item to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"JeremyYong128"},"content":" public void markDone(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"JeremyYong128"},"content":" tasks.get(i).markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"JeremyYong128"},"content":" * Marks an item in the Tasklist as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"JeremyYong128"},"content":" * @param i Index of the item to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"JeremyYong128"},"content":" public void markUndone(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"JeremyYong128"},"content":" tasks.get(i).markUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"JeremyYong128"},"content":" * Delete an item in the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"JeremyYong128"},"content":" * @param i Index of the item to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"JeremyYong128"},"content":" public void deleteItem(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"JeremyYong128"},"content":" tasks.remove(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"JeremyYong128"},"content":" * Adds a Task to the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"JeremyYong128"},"content":" * @param task Task to be added to the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"JeremyYong128"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"JeremyYong128"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"JeremyYong128"},"content":" * Filters tasks by name.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"JeremyYong128"},"content":" * @param s Substring which must be present in the Task name.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"JeremyYong128"},"content":" * @return An Arraylist containing tasks whose names match the substring provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"JeremyYong128"},"content":" public ArrayList\u003cTask\u003e filterBySubstring(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"JeremyYong128"},"content":" ArrayList\u003cTask\u003e filteredTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"JeremyYong128"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"JeremyYong128"},"content":" String taskName \u003d task.getName().toLowerCase();","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"JeremyYong128"},"content":" s \u003d s.toLowerCase();","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"JeremyYong128"},"content":" if (taskName.contains(s)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"JeremyYong128"},"content":" filteredTasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"JeremyYong128"},"content":" return filteredTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":109}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" * @param name Description of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" public Todo(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" * Constructor for Todo if a done status is supplied.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" * @param name Description of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" * @param isDone Boolean representing whether the Todo is done.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" public Todo(String name, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" * Gets String representation of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" * @return String representation of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" * Gets String representation of the Todo in the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" * @return String representation of the Todo in the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":" public String toStringStorage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" String nameField \u003d this.getName();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":" String isDoneField \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" return \"T|\" + isDoneField + \"|\" + nameField;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":42}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":" * Greets the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" public static void greet() {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"I\u0027m Jermbot. What you want?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" * Says goodbye to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" public static void goodbye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Good riddance.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":" * Lists out each task in the Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"JeremyYong128"},"content":" * @param tasks The Tasklist to be listed out.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"JeremyYong128"},"content":" public static void listTasks(Tasklist tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"JeremyYong128"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"JeremyYong128"},"content":" System.out.print(i + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"JeremyYong128"},"content":" System.out.print(\". \" + tasks.getItemString(i) + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"JeremyYong128"},"content":" * Notifies the user that the task has been marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"JeremyYong128"},"content":" * @param task The task that is marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"JeremyYong128"},"content":" public static void informTaskDone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Ok good job lor you finished this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"JeremyYong128"},"content":" * Notifies the user that the task has been marked as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"JeremyYong128"},"content":" * @param task The task that is marked as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"JeremyYong128"},"content":" public static void informTaskUndone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Wah why you never do this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"JeremyYong128"},"content":" * Notifies the user that the task has been deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"JeremyYong128"},"content":" * @param task The task that is deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"JeremyYong128"},"content":" public static void informTaskDeleted(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Ok slacker I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"JeremyYong128"},"content":" * Notifies the user that the task has been added.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"JeremyYong128"},"content":" * @param task The task that is added.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"JeremyYong128"},"content":" public static void informTaskAdded(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"JeremyYong128"},"content":" System.out.printf(\"Haha now you have this task to do:\\n %s\\nIn total you have %d things to do.\\n\", task, size);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"JeremyYong128"},"content":" * Informs the user of the number of tasks on the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"JeremyYong128"},"content":" * @param size The size of the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"JeremyYong128"},"content":" public static void informListSize(int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"JeremyYong128"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list. Happy anot.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":77}},{"path":"src/main/java/duke/WrongInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"public class WrongInputException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":" * Gets String representation of the Exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" * @return String representation of the Exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" return \"Wrong input format. Can type properly anot?\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":12}},{"path":"src/test/java/duke/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"public class TaskTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":" public void toStringTest(){","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":" Task unmarkedTask \u003d new Todo(\"Clean\", true);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":" Task markedTask \u003d new Todo(\"Cook\", false);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" assertEquals(\"[T][X] Clean\", unmarkedTask.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" assertEquals(\"[T][ ] Cook\", markedTask.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":14}},{"path":"src/test/java/duke/TasklistTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"JeremyYong128"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"JeremyYong128"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"JeremyYong128"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"JeremyYong128"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"JeremyYong128"},"content":"public class TasklistTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"JeremyYong128"},"content":" public void taskListTest(){","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"JeremyYong128"},"content":" Tasklist tasks \u003d new Tasklist(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"JeremyYong128"},"content":" Task task \u003d new Todo(\"Cook\", true);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"JeremyYong128"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"JeremyYong128"},"content":" Task obtainedTask \u003d tasks.getTask(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"JeremyYong128"},"content":" assertTrue(obtainedTask.isDone());","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"JeremyYong128"},"content":" assertEquals(\"Cook\", obtainedTask.getName());","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"JeremyYong128"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"JeremyYong128"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"JeremyYong128":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"JeremyYong128"},"content":"todo sleep","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"JeremyYong128"},"content":"deadline wake up /by today","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"JeremyYong128"},"content":"event cook dinner /from 3pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JeremyYong128"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JeremyYong128":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":"JeremyYong128"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"-":20,"JeremyYong128":1}},{"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":"JeremyYong128"},"content":"java -classpath ../bin JermBot \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":{"-":37,"JeremyYong128":1}}] diff --git a/JeremyYong128_ip_master/commits.json b/JeremyYong128_ip_master/commits.json index 9d766236..0b70baee 100644 --- a/JeremyYong128_ip_master/commits.json +++ b/JeremyYong128_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"JeremyYong128":[{"date":"2023-08-24","commitResults":[{"hash":"56cb8b8d76779172e10520b5ea8e37e3bf0e25cb","isMergeCommit":false,"messageTitle":"Increment: Level-0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"68ba3fae8ce309506b24fdac849c0766bd163f17","isMergeCommit":false,"messageTitle":"Increment: Level-1","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"be50c4972b9c360b58dd4ab17f82094b22795627","isMergeCommit":false,"messageTitle":"Increment: Level-2","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":4}}},{"hash":"d47d499a429f903af697fc7047d9e1759bb1a34a","isMergeCommit":false,"messageTitle":"Increment: Level-3","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":5}}},{"hash":"bce00342d690875f9489ca9547b518600e6ac14f","isMergeCommit":false,"messageTitle":"Increment: Level-4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":13}}},{"hash":"76fc6c9468bdd885d1dd0ea3fce144afeaa5303f","isMergeCommit":false,"messageTitle":"Increment: A-TextUiTesting","messageBody":"","tags":["Level-5","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":59,"deletions":40},"sh":{"insertions":1,"deletions":1}}},{"hash":"693ca049e5f69d80917272095ed41efdd7cbf3c1","isMergeCommit":false,"messageTitle":"Increment: A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"a2c916d48a7169da8aa92fe7ea8f2d8e3a6ba7f2","isMergeCommit":false,"messageTitle":"Increment: Level-5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"4f6285b1fb654c6d9ceb29b91943e54e3e6ec0da","isMergeCommit":false,"messageTitle":"Increment: Level-6","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":11}}}]},{"date":"2023-08-31","commitResults":[{"hash":"b603106098200b6c1cca02857c06e23537e2b46b","isMergeCommit":false,"messageTitle":"Increment: Level-7","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":158,"deletions":24}}},{"hash":"37c7d60ea7b6d4ea5800ce5f6072e737fe556723","isMergeCommit":false,"messageTitle":"Increment: Level-8","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":219,"deletions":112}}},{"hash":"346652acdc56e893498a4b28e4cbd759299aec96","isMergeCommit":false,"messageTitle":"Increment: A-MoreOOP","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":194,"deletions":96}}},{"hash":"d3af56f5eed491dc816f6046d713de033ae89e83","isMergeCommit":false,"messageTitle":"Increment: A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":26},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"c9c5d131fc47dd89b25fdbf7b43ec99595a51a05","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into branch-Level-7","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"4022c39ff4f2b03f773fd9373b3658d1ffde8060","isMergeCommit":false,"messageTitle":"Increment: A-Gradle","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"5d5a88abd0ce428471faab19c68afc29b23ff9ef","isMergeCommit":false,"messageTitle":"Increment: A-JUnit","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":1},"java":{"insertions":35,"deletions":2}}},{"hash":"805cbdf87134a2d9e6a2dc4a9d608a2dc642894d","isMergeCommit":false,"messageTitle":"Increment: A-Jar","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"JeremyYong128":{"java":574,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":1,"txt":4}},"authorContributionVariance":{"JeremyYong128":60983.21},"authorDisplayNameMap":{"JeremyYong128":"CS2103T-W12-3 JERE..MING"}} +{"authorDailyContributionsMap":{"JeremyYong128":[{"date":"2023-08-24","commitResults":[{"hash":"56cb8b8d76779172e10520b5ea8e37e3bf0e25cb","isMergeCommit":false,"messageTitle":"Increment: Level-0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"68ba3fae8ce309506b24fdac849c0766bd163f17","isMergeCommit":false,"messageTitle":"Increment: Level-1","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"be50c4972b9c360b58dd4ab17f82094b22795627","isMergeCommit":false,"messageTitle":"Increment: Level-2","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":4}}},{"hash":"d47d499a429f903af697fc7047d9e1759bb1a34a","isMergeCommit":false,"messageTitle":"Increment: Level-3","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":5}}},{"hash":"bce00342d690875f9489ca9547b518600e6ac14f","isMergeCommit":false,"messageTitle":"Increment: Level-4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":13}}},{"hash":"76fc6c9468bdd885d1dd0ea3fce144afeaa5303f","isMergeCommit":false,"messageTitle":"Increment: A-TextUiTesting","messageBody":"","tags":["Level-5","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":59,"deletions":40},"sh":{"insertions":1,"deletions":1}}},{"hash":"693ca049e5f69d80917272095ed41efdd7cbf3c1","isMergeCommit":false,"messageTitle":"Increment: A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"a2c916d48a7169da8aa92fe7ea8f2d8e3a6ba7f2","isMergeCommit":false,"messageTitle":"Increment: Level-5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"4f6285b1fb654c6d9ceb29b91943e54e3e6ec0da","isMergeCommit":false,"messageTitle":"Increment: Level-6","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":11}}}]},{"date":"2023-08-31","commitResults":[{"hash":"b603106098200b6c1cca02857c06e23537e2b46b","isMergeCommit":false,"messageTitle":"Increment: Level-7","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":158,"deletions":24}}},{"hash":"37c7d60ea7b6d4ea5800ce5f6072e737fe556723","isMergeCommit":false,"messageTitle":"Increment: Level-8","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":219,"deletions":112}}},{"hash":"346652acdc56e893498a4b28e4cbd759299aec96","isMergeCommit":false,"messageTitle":"Increment: A-MoreOOP","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":194,"deletions":96}}},{"hash":"d3af56f5eed491dc816f6046d713de033ae89e83","isMergeCommit":false,"messageTitle":"Increment: A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":26},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"c9c5d131fc47dd89b25fdbf7b43ec99595a51a05","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into branch-Level-7","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"4022c39ff4f2b03f773fd9373b3658d1ffde8060","isMergeCommit":false,"messageTitle":"Increment: A-Gradle","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"5d5a88abd0ce428471faab19c68afc29b23ff9ef","isMergeCommit":false,"messageTitle":"Increment: A-JUnit","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":1},"java":{"insertions":35,"deletions":2}}},{"hash":"805cbdf87134a2d9e6a2dc4a9d608a2dc642894d","isMergeCommit":false,"messageTitle":"Increment: A-Jar","messageBody":"","tags":["Level-9","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"66bc7e655acfeba8c7e0866e5cd77b6be4adf402","isMergeCommit":false,"messageTitle":"Increment: A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":268,"deletions":69}}},{"hash":"62296c47542552ebb5956e91539d9d25dec7786c","isMergeCommit":false,"messageTitle":"Ensure code complies with coding standards.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":23}}},{"hash":"8be69e70c3b76bce54062e639b30a249720f56df","isMergeCommit":false,"messageTitle":"Add feature to find tasks containing a substring.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":24}}},{"hash":"e438d7ce7ef3ba166901d679e11cc91ae78f5a0b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54ef8b8d7cc4c6076526ec2e8ca33b0e6ab45728","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"JeremyYong128":{"java":800,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":1,"txt":4}},"authorContributionVariance":{"JeremyYong128":65340.773},"authorDisplayNameMap":{"JeremyYong128":"CS2103T-W12-3 JERE..MING"}} diff --git a/JizhuoChen_ip_master/authorship.json b/JizhuoChen_ip_master/authorship.json index 4480d96d..79c94d82 100644 --- a/JizhuoChen_ip_master/authorship.json +++ b/JizhuoChen_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"JizhuoChen":1,"-":41}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"import duke.Taskmanager;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":" private Ui ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" public Duke() {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" public void run(String filePath) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" this.ui.sayhi();","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.manageTasks(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" this.ui.saybye();","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" new Duke().run(\"Data\");","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"JizhuoChen":16,"-":4}},{"path":"src/main/java/duke/Addlist.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class Addlist {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":" private int counter \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" private String[] storage \u003d new String[100];","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" public void addnlist() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" Scanner sn \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" String input \u003d sn.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" listing();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" this.storage[this.counter] \u003d input;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" counter +\u003d 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" input \u003d sn.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" private void listing() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" for (int i \u003d 1; i \u003c\u003d counter; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(i + \". \" + storage[i - 1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":28}},{"path":"src/main/java/duke/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"public class DateTime {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd\");","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HHmm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" LocalDate ld;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" LocalTime lt;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" public DateTime(String dt) {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" String[] splt \u003d dt.split(\" \");","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" if (splt.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" this.ld \u003d LocalDate.parse(splt[0], dateFormatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" } else if (splt.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" this.ld \u003d LocalDate.parse(splt[0], dateFormatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" this.lt \u003d LocalTime.parse(splt[1], timeFormatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" throw new DateTimeParseException(","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" \"Sorry I cannot recognise your date and time! Please follow the format: yyyy/M/d HHmm\", dt, 0);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" public String getFormattedDate() {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" return this.ld.format(DateTimeFormatter.ofPattern(\"MM-d-yyyy\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" public String getFormattedTime() {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" if (this.lt !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":" return this.lt.format(DateTimeFormatter.ofPattern(\"HH:mm\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"JizhuoChen"},"content":" public String toString(){","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"JizhuoChen"},"content":" return getFormattedDate() + ((this.lt \u003d\u003d null) ? \"\" : \" \" + getFormattedTime());","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"JizhuoChen":41}},{"path":"src/main/java/duke/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import duke.DateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" protected String date;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":" protected DateTime dt;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" public Deadlines(String description, String date) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" this.dt \u003d new DateTime(date);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" public String getSavingFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" return \"[D] | [\" + getStatusIcon() + \"] | \" + description + \" | \" + date;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" return \"[D][\" + getStatusIcon() + \"] \" + description + \" (by: \" + dt + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":25}},{"path":"src/main/java/duke/Echoplex.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class Echoplex {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":" public void echo() {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" Scanner sn \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":" String input \u003d sn.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" while(!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" input \u003d sn.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":14}},{"path":"src/main/java/duke/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import duke.DateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class Events extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" protected String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":" protected String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" protected DateTime dtStart;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" protected DateTime dtEnd;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" public Events(String description, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" this.dtStart \u003d new DateTime(start);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" this.dtEnd \u003d new DateTime(end);","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" public String getSavingFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" return \"[E] | [\" + getStatusIcon() + \"] | \" + description + \" | \" + start + \" | \" + end;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" return \"[E][\" + getStatusIcon() + \"] \" + description + \" (from: \" + dtStart + \", to: \" + dtEnd + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":30}},{"path":"src/main/java/duke/Keywords.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"public enum Keywords {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"JizhuoChen":5}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import duke.Deadlines;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"import duke.Events;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"public abstract class Parser {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" public static void parseInput(String[] splt, String keyword) {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" switch (keyword) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" case \"list\":","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.list();","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" case \"delete\":","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.removeTask(Integer.parseInt(splt[1]));","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" case \"mark\":","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.mark(Integer.parseInt(splt[1]));","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.unmark(Integer.parseInt(splt[1]));","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" switch (keyword) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" case \"todo\": {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":" for (int i \u003d 1; i \u003c splt.length; ++i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":" description \u003d description + splt[i] + \" \";","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.addTask(new ToDos(description));","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"JizhuoChen"},"content":" case \"deadline\": {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"JizhuoChen"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"JizhuoChen"},"content":" if (i \u003d\u003d splt.length) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"JizhuoChen"},"content":" String temp \u003d splt[i];","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"JizhuoChen"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"JizhuoChen"},"content":" while (!temp.equals(\"/by\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"JizhuoChen"},"content":" description \u003d description + temp + \" \";","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"JizhuoChen"},"content":" temp \u003d splt[i];","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"JizhuoChen"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"JizhuoChen"},"content":" String time \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"JizhuoChen"},"content":" while (i \u003c splt.length) {","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"JizhuoChen"},"content":" time \u003d time + splt[i] + \" \";","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"JizhuoChen"},"content":" if (time.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The time/date of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.addTask(new Deadlines(description, time));","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"JizhuoChen"},"content":" case \"event\": {","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"JizhuoChen"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"JizhuoChen"},"content":" if (i \u003d\u003d splt.length) {","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"JizhuoChen"},"content":" String temp \u003d splt[i];","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"JizhuoChen"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"JizhuoChen"},"content":" while (!temp.equals(\"/from\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"JizhuoChen"},"content":" description \u003d description + temp + \" \";","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"JizhuoChen"},"content":" temp \u003d splt[i];","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"JizhuoChen"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"JizhuoChen"},"content":" String start \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"JizhuoChen"},"content":" if (i \u003d\u003d splt.length) {","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The starting time of an event cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"JizhuoChen"},"content":" temp \u003d splt[i];","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"JizhuoChen"},"content":" while (!temp.equals(\"/to\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"JizhuoChen"},"content":" start \u003d start + temp + \" \";","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"JizhuoChen"},"content":" temp \u003d splt[i];","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"JizhuoChen"},"content":" if (start.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The starting time of an event cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"JizhuoChen"},"content":" String end \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"JizhuoChen"},"content":" while (i \u003c splt.length) {","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"JizhuoChen"},"content":" end \u003d end + splt[i] + \" \";","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"JizhuoChen"},"content":" if (end.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The ending time of an event cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.addTask(new Events(description, start, end));","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"JizhuoChen"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"JizhuoChen"},"content":" } catch (IllegalArgumentException | DateTimeParseException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(e.getMessage() + \"\\nTry again: \");","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"JizhuoChen":114}},{"path":"src/main/java/duke/Scripts.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"public class Scripts {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":" String greeting \u003d \"Hello! I\u0027m LimBay.\\nWhat can I do for you?\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":" String bye \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" public Scripts() {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" public void sayhi() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" public void saybye() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(bye);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"JizhuoChen":17}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import java.io.*;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":" protected String fileName \u003d \"userData.txt\";","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" protected File file;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" this.file \u003d new File(filePath, fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" //Making a new dir if the specified one does not exit","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" if (!file.getParentFile().exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" public void write(String inputs) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file))) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" writer.write(inputs);","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" public String read(String key) {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" String line;","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":" if (line.contains(key)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":" return line;","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Keyword not found, please try again!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" return \"ERROR_KeyNotFound\";","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":" return \"ERROR_Exception\";","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"JizhuoChen":40}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" public void setDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" public void setNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" public String getTaskType() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" return \"[ ]\";","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" return getTaskType() + \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" public String getSavingFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":" return getTaskType() + \" [\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":37}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class TaskList {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":" protected ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" protected int counter \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" public void mark(int i) { //need handling","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" tasks.get(i-1).setDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n \" + tasks.get(i-1).toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" public void unmark(int i) { //need handling","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" tasks.get(i-1).setNotDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n \" + tasks.get(i-1).toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" public void list() {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" if (counter \u003d\u003d 0) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"There is no task in your list yet.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" for (int i \u003d 1; i \u003c\u003d counter; i++) {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(i + \".\" + tasks.get(i - 1).toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" counter +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":" saveTask(t);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + t + \"\\nNow you have \" + counter + \" tasks in the list.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":" public void removeTask(int index) {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"JizhuoChen"},"content":" String temp \u003d tasks.get(index-1).toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"JizhuoChen"},"content":" tasks.remove(index-1);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"JizhuoChen"},"content":" counter -\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + temp + \"\\nNow you have \" + counter + \" tasks in the list.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"JizhuoChen"},"content":" public void saveTask(Task t) {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.storage.write(t.getSavingFormat());","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"JizhuoChen"},"content":" public void readTask(String key) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"JizhuoChen"},"content":" if (Taskmanager.storage \u003d\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"There is no previously saved task!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"JizhuoChen"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(Taskmanager.storage.read(key));","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"JizhuoChen":55}},{"path":"src/main/java/duke/Taskmanager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"import duke.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":"public abstract class Taskmanager {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" protected static TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" protected static Storage storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" public static void manageTasks(String filePath) {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" Scanner sn \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" String input \u003d sn.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" String[] splt \u003d input.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" String keyword \u003d splt[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" while (!keyword.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" Parser.parseInput(splt,keyword);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" input \u003d sn.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" splt \u003d input.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" keyword \u003d splt[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" public static void mark(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":" tasks.mark(i);","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" public static void unmark(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":" tasks.unmark(i);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":" public static void list() {","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":" tasks.list();","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"JizhuoChen"},"content":" public static void addTask(Task t) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"JizhuoChen"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"JizhuoChen"},"content":" public static void removeTask(int index) {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"JizhuoChen"},"content":" tasks.removeTask(index);","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"JizhuoChen"},"content":" public static void readTask(String key) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"JizhuoChen"},"content":" tasks.readTask(key);","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":51}},{"path":"src/main/java/duke/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import duke.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class ToDos extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" public ToDos(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" public String getSavingFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" return \"[T] | [\" + getStatusIcon() + \"] | \" + description;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" return \"[T][\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":19}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"public class Ui {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":" public void sayhi() {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Hello! I\u0027m LimBay.\\nWhat can I do for you?\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" public void saybye() {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"JizhuoChen":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"todo play games","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"deadline watch Tv /by","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"deadline /by 2222/11/11 2100","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"deadline watch TV /by 2222/11/11 2100","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":"event","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"event sleep /from /to 2222/11/11 2100","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":"event sleep /from 2222/11/11 2100 /to","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":"event /from 2222/11/11 2100 /to 2222/11/11 2100","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":"event sleep /from 2222/11/11 2100 /to 2222/11/11 2100","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":"unmark 2","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":"delete 1","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":"delete 1","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":"w","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":"deadline play /by 2222/11/11","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":"deadline play /by 1111/1/11","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":"deadline play /by 1111/11/11 1111","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":"event die /from 9999/09/11 /to 99999/09/11","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":"event die /from 9999/09/11 /to 9999/09/11 1100","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":"list","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":28}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"JizhuoChen":2,"-":41}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"import duke.Taskmanager;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":" private Ui ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" public Duke() {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" public void run(String filePath) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" this.ui.sayhi();","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.manageTasks(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" this.ui.saybye();","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" new Duke().run(\"Data\");","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"JizhuoChen":16,"-":4}},{"path":"src/main/java/duke/Addlist.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class Addlist {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":" private int counter \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" private String[] storage \u003d new String[100];","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" public void addlist() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" Scanner sn \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" String input \u003d sn.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" listing();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" this.storage[this.counter] \u003d input;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" counter +\u003d 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" input \u003d sn.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" private void listing() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" for (int i \u003d 1; i \u003c\u003d counter; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(i + \". \" + storage[i - 1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":28}},{"path":"src/main/java/duke/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"public class DateTime {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd\");","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HHmm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" LocalDate ld;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" LocalTime lt;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" public DateTime(String dt) {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" String[] splt \u003d dt.split(\" \");","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" if (splt.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" this.ld \u003d LocalDate.parse(splt[0], dateFormatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" } else if (splt.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" this.ld \u003d LocalDate.parse(splt[0], dateFormatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" this.lt \u003d LocalTime.parse(splt[1], timeFormatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" throw new DateTimeParseException(","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" \"Sorry I cannot recognise your date and time! Please follow the format: yyyy/M/d HHmm\", dt, 0);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" public String getFormattedDate() {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" return this.ld.format(DateTimeFormatter.ofPattern(\"MM-d-yyyy\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" public String getFormattedTime() {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" if (this.lt !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":" return this.lt.format(DateTimeFormatter.ofPattern(\"HH:mm\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"JizhuoChen"},"content":" public String toString(){","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"JizhuoChen"},"content":" return getFormattedDate() + ((this.lt \u003d\u003d null) ? \"\" : \" \" + getFormattedTime());","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"JizhuoChen":41}},{"path":"src/main/java/duke/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import duke.DateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" protected String date;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":" protected DateTime dt;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" public Deadlines(String description, String date) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" this.dt \u003d new DateTime(date);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" public String getSavingFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" return \"[D] | [\" + getStatusIcon() + \"] | \" + description + \" | \" + date;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" return \"[D][\" + getStatusIcon() + \"] \" + description + \" (by: \" + dt + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":25}},{"path":"src/main/java/duke/Echoplex.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class Echoplex {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":" public void echo() {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" Scanner sn \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":" String input \u003d sn.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" while(!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" input \u003d sn.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":14}},{"path":"src/main/java/duke/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import duke.DateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class Events extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" protected String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":" protected String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" protected DateTime dtStart;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" protected DateTime dtEnd;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" public Events(String description, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" this.dtStart \u003d new DateTime(start);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" this.dtEnd \u003d new DateTime(end);","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" public String getSavingFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" return \"[E] | [\" + getStatusIcon() + \"] | \" + description + \" | \" + start + \" | \" + end;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" return \"[E][\" + getStatusIcon() + \"] \" + description + \" (from: \" + dtStart + \", to: \" + dtEnd + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":30}},{"path":"src/main/java/duke/Keywords.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"public enum Keywords {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"JizhuoChen":5}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import duke.Deadlines;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"import duke.Events;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"public abstract class Parser {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" public static void parseInput(String[] splt, String keyword) {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" switch (keyword) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" case \"list\":","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.list();","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" case \"delete\":","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.removeTask(Integer.parseInt(splt[1]));","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" case \"mark\":","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.mark(Integer.parseInt(splt[1]));","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.unmark(Integer.parseInt(splt[1]));","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" switch (keyword) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" case \"todo\": {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":" for (int i \u003d 1; i \u003c splt.length; ++i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":" description \u003d description + splt[i] + \" \";","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.addTask(new ToDos(description));","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"JizhuoChen"},"content":" case \"deadline\": {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"JizhuoChen"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"JizhuoChen"},"content":" if (i \u003d\u003d splt.length) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"JizhuoChen"},"content":" String temp \u003d splt[i];","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"JizhuoChen"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"JizhuoChen"},"content":" while (!temp.equals(\"/by\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"JizhuoChen"},"content":" description \u003d description + temp + \" \";","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"JizhuoChen"},"content":" temp \u003d splt[i];","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"JizhuoChen"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"JizhuoChen"},"content":" String time \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"JizhuoChen"},"content":" while (i \u003c splt.length) {","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"JizhuoChen"},"content":" time \u003d time + splt[i] + \" \";","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"JizhuoChen"},"content":" if (time.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The time/date of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.addTask(new Deadlines(description, time));","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"JizhuoChen"},"content":" case \"event\": {","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"JizhuoChen"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"JizhuoChen"},"content":" if (i \u003d\u003d splt.length) {","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"JizhuoChen"},"content":" String temp \u003d splt[i];","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"JizhuoChen"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"JizhuoChen"},"content":" while (!temp.equals(\"/from\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"JizhuoChen"},"content":" description \u003d description + temp + \" \";","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"JizhuoChen"},"content":" temp \u003d splt[i];","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"JizhuoChen"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"JizhuoChen"},"content":" String start \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"JizhuoChen"},"content":" if (i \u003d\u003d splt.length) {","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The starting time of an event cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"JizhuoChen"},"content":" temp \u003d splt[i];","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"JizhuoChen"},"content":" while (!temp.equals(\"/to\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"JizhuoChen"},"content":" start \u003d start + temp + \" \";","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"JizhuoChen"},"content":" temp \u003d splt[i];","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"JizhuoChen"},"content":" if (start.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The starting time of an event cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"JizhuoChen"},"content":" String end \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"JizhuoChen"},"content":" while (i \u003c splt.length) {","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"JizhuoChen"},"content":" end \u003d end + splt[i] + \" \";","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"JizhuoChen"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"JizhuoChen"},"content":" if (end.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! The ending time of an event cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.addTask(new Events(description, start, end));","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"JizhuoChen"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"JizhuoChen"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"JizhuoChen"},"content":" throw new IllegalArgumentException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"JizhuoChen"},"content":" } catch (IllegalArgumentException | DateTimeParseException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(e.getMessage() + \"\\nTry again: \");","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"JizhuoChen":114}},{"path":"src/main/java/duke/Scripts.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"public class Scripts {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":" String greeting \u003d \"Hello! I\u0027m LimBay.\\nWhat can I do for you?\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":" String bye \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" public Scripts() {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" public void sayhi() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" public void saybye() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(bye);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"JizhuoChen":17}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import java.io.*;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":" protected String fileName \u003d \"userData.txt\";","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" protected File file;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" this.file \u003d new File(filePath, fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" //Making a new dir if the specified one does not exit","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" if (!file.getParentFile().exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" public void write(String inputs) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file))) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" writer.write(inputs);","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" public String read(String key) {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" String line;","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":" if (line.contains(key)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":" return line;","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Keyword not found, please try again!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" return \"ERROR_KeyNotFound\";","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":" return \"ERROR_Exception\";","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"JizhuoChen":40}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" public void setDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" public void setNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" public String getTaskType() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" return \"[ ]\";","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" return getTaskType() + \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" public String getSavingFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":" return getTaskType() + \" [\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":37}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class TaskList {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":" protected ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" protected int counter \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" public void mark(int i) { //need handling","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" tasks.get(i-1).setDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n \" + tasks.get(i-1).toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" public void unmark(int i) { //need handling","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" tasks.get(i-1).setNotDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n \" + tasks.get(i-1).toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" public void list() {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" if (counter \u003d\u003d 0) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"There is no task in your list yet.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" for (int i \u003d 1; i \u003c\u003d counter; i++) {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(i + \".\" + tasks.get(i - 1).toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" counter +\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":" saveTask(t);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + t + \"\\nNow you have \" + counter + \" tasks in the list.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":" public void removeTask(int index) {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"JizhuoChen"},"content":" String temp \u003d tasks.get(index-1).toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"JizhuoChen"},"content":" tasks.remove(index-1);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"JizhuoChen"},"content":" counter -\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + temp + \"\\nNow you have \" + counter + \" tasks in the list.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"JizhuoChen"},"content":" public void saveTask(Task t) {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"JizhuoChen"},"content":" Taskmanager.storage.write(t.getSavingFormat());","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"JizhuoChen"},"content":" public void readTask(String key) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"JizhuoChen"},"content":" if (Taskmanager.storage \u003d\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"There is no previously saved task!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"JizhuoChen"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(Taskmanager.storage.read(key));","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"JizhuoChen":55}},{"path":"src/main/java/duke/Taskmanager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"import duke.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":"public abstract class Taskmanager {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" protected static TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" protected static Storage storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" public static void manageTasks(String filePath) {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" Scanner sn \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" String input \u003d sn.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" String[] splt \u003d input.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" String keyword \u003d splt[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" while (!keyword.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" Parser.parseInput(splt,keyword);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" input \u003d sn.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" splt \u003d input.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" keyword \u003d splt[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" public static void mark(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":" tasks.mark(i);","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" public static void unmark(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":" tasks.unmark(i);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":" public static void list() {","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":" tasks.list();","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"JizhuoChen"},"content":" public static void addTask(Task t) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"JizhuoChen"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"JizhuoChen"},"content":" public static void removeTask(int index) {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"JizhuoChen"},"content":" tasks.removeTask(index);","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"JizhuoChen"},"content":" public static void readTask(String key) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"JizhuoChen"},"content":" tasks.readTask(key);","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":51}},{"path":"src/main/java/duke/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import duke.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"public class ToDos extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" public ToDos(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" public String getSavingFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" return \"[T] | [\" + getStatusIcon() + \"] | \" + description;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" return \"[T][\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":19}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"public class Ui {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":" public void sayhi() {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Hello! I\u0027m LimBay.\\nWhat can I do for you?\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" public void saybye() {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"JizhuoChen":12}},{"path":"src/test/java/duke/DateTimeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"public class DateTimeTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" public void testConstructor_WithOnlyDate() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" DateTime dateTime \u003d new DateTime(\"2023/09/01\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" assertEquals(\"09-1-2023\", dateTime.getFormattedDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" assertEquals(null, dateTime.getFormattedTime());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" public void testConstructor_WithDateAndTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" DateTime dateTime \u003d new DateTime(\"2023/09/01 1630\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" assertEquals(\"09-1-2023\", dateTime.getFormattedDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" assertEquals(\"16:30\", dateTime.getFormattedTime());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" public void testConstructor_WithInvalidFormat_ShouldThrowException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" assertThrows(DateTimeParseException.class, () -\u003e new DateTime(\"2023.09.01\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" assertThrows(DateTimeParseException.class, () -\u003e new DateTime(\"01/09/2023\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" assertThrows(DateTimeParseException.class, () -\u003e new DateTime(\"2023/09/01 2500\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":" assertThrows(DateTimeParseException.class, () -\u003e new DateTime(\"2023/09/01 1630 1830\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":" public void testToString_WithOnlyDate() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" DateTime dateTime \u003d new DateTime(\"2023/09/01\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":" assertEquals(\"09-1-2023\", dateTime.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"JizhuoChen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"JizhuoChen"},"content":" public void testToString_WithDateAndTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"JizhuoChen"},"content":" DateTime dateTime \u003d new DateTime(\"2023/09/01 1630\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"JizhuoChen"},"content":" assertEquals(\"09-1-2023 16:30\", dateTime.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"JizhuoChen":43}},{"path":"src/test/java/duke/DeadlinesTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":"public class DeadlinesTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":" private Deadlines deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":" public void setUp() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" deadline \u003d new Deadlines(\"Finish homework\", \"2023/09/01 1600\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":" public void testGetSavingFormat_NotCompleted() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" String expected \u003d \"[D] | [ ] | Finish homework | 2023/09/01 1600\";","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" assertEquals(expected, deadline.getSavingFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" public void testToString_NotCompleted() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" // Assuming DateTime\u0027s toString outputs the string in the format: \"2023-09-01 16:00\"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" String expected \u003d \"[D][ ] Finish homework (by: 09-1-2023 16:00)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" assertEquals(expected, deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"JizhuoChen":28}},{"path":"src/test/java/duke/EventsTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":"public class EventsTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":" private Events event;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":" public void setUp() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":" event \u003d new Events(\"Meeting\", \"2023/09/01 1400\", \"2023/09/01 1500\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":" public void testEventCreation() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":" assertEquals(\"[E][ ] Meeting (from: 09-1-2023 14:00, to: 09-1-2023 15:00)\", event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":" public void testGetSavingFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":" assertEquals(\"[E] | [ ] | Meeting | 2023/09/01 1400 | 2023/09/01 1500\", event.getSavingFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"JizhuoChen"},"content":" public void testEventCreationWithInvalidStartDate() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"JizhuoChen"},"content":" assertThrows(DateTimeParseException.class, () -\u003e new Events(\"Meeting\", \"2023-09-01\", \"2023/09/01 1500\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"JizhuoChen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"JizhuoChen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"JizhuoChen"},"content":" public void testEventCreationWithInvalidEndDate() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"JizhuoChen"},"content":" assertThrows(DateTimeParseException.class, () -\u003e new Events(\"Meeting\", \"2023/09/01 1400\", \"2023-09-01\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"JizhuoChen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"JizhuoChen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"JizhuoChen":37}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"JizhuoChen"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"JizhuoChen"},"content":"todo play games","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"JizhuoChen"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"JizhuoChen"},"content":"deadline watch Tv /by","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"JizhuoChen"},"content":"deadline /by 2222/11/11 2100","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"JizhuoChen"},"content":"deadline watch TV /by 2222/11/11 2100","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"JizhuoChen"},"content":"event","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"JizhuoChen"},"content":"event sleep /from /to 2222/11/11 2100","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"JizhuoChen"},"content":"event sleep /from 2222/11/11 2100 /to","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"JizhuoChen"},"content":"event /from 2222/11/11 2100 /to 2222/11/11 2100","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"JizhuoChen"},"content":"event sleep /from 2222/11/11 2100 /to 2222/11/11 2100","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"JizhuoChen"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"JizhuoChen"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"JizhuoChen"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"JizhuoChen"},"content":"unmark 2","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"JizhuoChen"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"JizhuoChen"},"content":"delete 1","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"JizhuoChen"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"JizhuoChen"},"content":"delete 1","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"JizhuoChen"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"JizhuoChen"},"content":"w","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"JizhuoChen"},"content":"deadline play /by 2222/11/11","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"JizhuoChen"},"content":"deadline play /by 1111/1/11","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"JizhuoChen"},"content":"deadline play /by 1111/11/11 1111","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"JizhuoChen"},"content":"event die /from 9999/09/11 /to 99999/09/11","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"JizhuoChen"},"content":"event die /from 9999/09/11 /to 9999/09/11 1100","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"JizhuoChen"},"content":"list","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"JizhuoChen"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"JizhuoChen":28}}] diff --git a/JizhuoChen_ip_master/commits.json b/JizhuoChen_ip_master/commits.json index d53b89fd..79c17f3f 100644 --- a/JizhuoChen_ip_master/commits.json +++ b/JizhuoChen_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"JizhuoChen":[{"date":"2023-08-23","commitResults":[{"hash":"344bdc117711fe38097c369c63f4d4698e29374f","isMergeCommit":false,"messageTitle":"level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"d4bd1c7894c68966a55a5025302d914902397ebc","isMergeCommit":false,"messageTitle":"level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"a2282f98dec91826b89516525c705010c8c4325a","isMergeCommit":false,"messageTitle":"level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":7}}},{"hash":"06d358e603c14c3227a890d3143b1c3793f5e3fd","isMergeCommit":false,"messageTitle":"level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":4}}},{"hash":"0403c5df4b9a889668f602993a206d56eae3ae7d","isMergeCommit":false,"messageTitle":"level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":7}}},{"hash":"f5d8b33a1d16e419f384d6739d1e0475b420bfe8","isMergeCommit":false,"messageTitle":"level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":36}}},{"hash":"fe64afaf8af7f61e5dd829e4f687385ee8030a39","isMergeCommit":false,"messageTitle":"a-textuitesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0}}},{"hash":"8edf5b7e830e912359e3ae01b7b20bad8f7228ae","isMergeCommit":false,"messageTitle":"level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":18,"deletions":7}}}]},{"date":"2023-08-28","commitResults":[{"hash":"0cc6adbfa4c2fe3b2ddb4105334388c5844da0ea","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":102,"deletions":88}}}]},{"date":"2023-08-29","commitResults":[{"hash":"59efe17e05460a143561858f8fab16f0ac695142","isMergeCommit":false,"messageTitle":"level-7 save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":2}}},{"hash":"95f04b699574bca2bf2656c1e37e70a9430046f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"1984330c9462891b8913c10ec3d7bccdb033dbc9","isMergeCommit":false,"messageTitle":"level-8 datetime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":8},"java":{"insertions":54,"deletions":8}}},{"hash":"e50a31603d9f872cbba0863980bff2476082596d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"ca9639c1ba21bcbbb7d16f4db0f5b63a289bb60e","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":208,"deletions":159}}},{"hash":"babc58e665520936d42424a62187408473082921","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"cd06255512001133ac31b7a4aea49d1e2281a0f1","isMergeCommit":false,"messageTitle":"put all classes into a package named duke","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":5}}}]},{"date":"2023-08-30","commitResults":[{"hash":"ba4810a3479187725dcde3cdc259a6dc65080534","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"790388e9daca158e60a60c679bbaa3c90ff4eca9","isMergeCommit":false,"messageTitle":"A-gradle setups","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"JizhuoChen":{"java":504,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":28}},"authorContributionVariance":{"JizhuoChen":32697.906},"authorDisplayNameMap":{"JizhuoChen":"CS2103T-W11-4 CHEN..ZHUO"}} +{"authorDailyContributionsMap":{"JizhuoChen":[{"date":"2023-08-23","commitResults":[{"hash":"344bdc117711fe38097c369c63f4d4698e29374f","isMergeCommit":false,"messageTitle":"level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"d4bd1c7894c68966a55a5025302d914902397ebc","isMergeCommit":false,"messageTitle":"level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"a2282f98dec91826b89516525c705010c8c4325a","isMergeCommit":false,"messageTitle":"level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":7}}},{"hash":"06d358e603c14c3227a890d3143b1c3793f5e3fd","isMergeCommit":false,"messageTitle":"level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":4}}},{"hash":"0403c5df4b9a889668f602993a206d56eae3ae7d","isMergeCommit":false,"messageTitle":"level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":7}}},{"hash":"f5d8b33a1d16e419f384d6739d1e0475b420bfe8","isMergeCommit":false,"messageTitle":"level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":36}}},{"hash":"fe64afaf8af7f61e5dd829e4f687385ee8030a39","isMergeCommit":false,"messageTitle":"a-textuitesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0}}},{"hash":"8edf5b7e830e912359e3ae01b7b20bad8f7228ae","isMergeCommit":false,"messageTitle":"level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":18,"deletions":7}}}]},{"date":"2023-08-28","commitResults":[{"hash":"0cc6adbfa4c2fe3b2ddb4105334388c5844da0ea","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":102,"deletions":88}}}]},{"date":"2023-08-29","commitResults":[{"hash":"59efe17e05460a143561858f8fab16f0ac695142","isMergeCommit":false,"messageTitle":"level-7 save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":2}}},{"hash":"95f04b699574bca2bf2656c1e37e70a9430046f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"1984330c9462891b8913c10ec3d7bccdb033dbc9","isMergeCommit":false,"messageTitle":"level-8 datetime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":8},"java":{"insertions":54,"deletions":8}}},{"hash":"e50a31603d9f872cbba0863980bff2476082596d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"ca9639c1ba21bcbbb7d16f4db0f5b63a289bb60e","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":208,"deletions":159}}},{"hash":"babc58e665520936d42424a62187408473082921","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"cd06255512001133ac31b7a4aea49d1e2281a0f1","isMergeCommit":false,"messageTitle":"put all classes into a package named duke","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":5}}}]},{"date":"2023-08-30","commitResults":[{"hash":"ba4810a3479187725dcde3cdc259a6dc65080534","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"790388e9daca158e60a60c679bbaa3c90ff4eca9","isMergeCommit":false,"messageTitle":"A-gradle setups","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"8727b7631b4c6dbec1357ab919f88cb4c03f1f4e","isMergeCommit":false,"messageTitle":"added junit tests for 3 classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":207,"deletions":99}}},{"hash":"9cc50122618d51fc954d460ba27f5090974a05e2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"e177846b9328fa6c2fd2b539c8613e7554896ae8","isMergeCommit":false,"messageTitle":"create jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"JizhuoChen":{"java":612,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":28}},"authorContributionVariance":{"JizhuoChen":31921.258},"authorDisplayNameMap":{"JizhuoChen":"CS2103T-W11-4 CHEN..ZHUO"}} diff --git a/Kailash201_ip_master/authorship.json b/Kailash201_ip_master/authorship.json index 6b48d5f1..463a7087 100644 --- a/Kailash201_ip_master/authorship.json +++ b/Kailash201_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Kailash201":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Kailash201":1,"-":41}},{"path":"src/main/java/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"public class ByeCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" return \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":22}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"abstract public class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" abstract public void execute(TaskList tasks , DataFile dF);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Kailash201":13}},{"path":"src/main/java/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import duke.CustomDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"public class DeadlineCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" private final ArrayList\u003cString\u003e texts;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" private int size;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" public DeadlineCommand(ArrayList\u003cString\u003e texts) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" this.texts \u003d texts;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks , DataFile dF) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" CustomDate cD \u003d new CustomDate();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" Task dl \u003d new Deadline(texts.get(0), cD.strToDateTime(texts.get(1)));","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" tasks.addTask(dl);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" task \u003d dl;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" dF.writeToFile(dl);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + task +","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + size + \" tasks in the list.\";","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":42}},{"path":"src/main/java/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" private int size \u003d -1;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) throws DukeException{","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" if (tasks.isTaskListEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"List is already empty, nothing to catch\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" Task task \u003d tasks.remTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + task +","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" dF.deleteTaskFromFile(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" return \"Noted. I\u0027ve removed this task:\\n\" + task +","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + size + \" tasks in the list.\";","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":42}},{"path":"src/main/java/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import duke.CustomDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"public class EventCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" private final ArrayList\u003cString\u003e texts;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" private int size;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" public EventCommand(ArrayList\u003cString\u003e texts) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" this.texts \u003d texts;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks , DataFile dF) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" CustomDate cD \u003d new CustomDate();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" Task event \u003d new Event(texts.get(0),","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" cD.strToDateTime(texts.get(1)), cD.strToDateTime(texts.get(2)));","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" tasks.addTask(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" task \u003d event;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" dF.writeToFile(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + task +","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + size + \" tasks in the list.\";","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":43}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" System.out.println(i + 1 + \".\" + tasks.getTask(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" return \"Here are the tasks in your list:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":20}},{"path":"src/main/java/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) throws DukeException{","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" if (tasks.isTaskListEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"List is empty, nothing to mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" task.taskCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" dF.editFileAtLineN(index, \u00271\u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" return \"Nice! I\u0027ve marked this task as done:\\n\" + task;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":38}},{"path":"src/main/java/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"public class TodoCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" private final ArrayList\u003cString\u003e texts;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" private int size;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" public TodoCommand(ArrayList\u003cString\u003e texts) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" this.texts \u003d texts;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" Task todo \u003d new Todo(texts.get(0));","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" tasks.addTask(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" task \u003d todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" dF.writeToFile(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + task +","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + size + \" tasks in the list.\";","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":39}},{"path":"src/main/java/commands/UnmarkComment.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"public class UnmarkComment extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" public UnmarkComment(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) throws DukeException{","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" if (tasks.isTaskListEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"List is empty, nothing to unmark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" Task selTask \u003d tasks.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" selTask.taskNotCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" task \u003d selTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" dF.editFileAtLineN(index, \u00270\u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n\" + task;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":38}},{"path":"src/main/java/duke/CustomDate.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import parser.Parser;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"public class CustomDate {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" public LocalDateTime strToDateTime(String text) {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" Parser p \u003d new Parser();","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d p.splitter(text, \"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e yearNTime \u003d p.splitter(texts.get(2), \" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" String year \u003d addZeroFront(yearNTime.get(0));","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" String mon \u003d addZeroFront(texts.get(1));","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" String day \u003d addZeroFront(texts.get(0));","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" String time \u003d formatTime(yearNTime.get(1));","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" LocalDateTime d1 \u003d LocalDateTime.parse(year + \"-\" + mon + \"-\" + day + \"T\" + time);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" return d1;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" public String addZeroFront(String text) {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" return text.length() \u003d\u003d 1 ? 0 + text : text;","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" public String formatTime(String str) {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" return str.substring(0, 2) + \":\" + str.substring(2, 4);","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Kailash201":30}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import commands.Command;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"import java.io.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" private final DataFile dF;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" private TaskList tL;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" public Duke(String filePath, String fileName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" dF \u003d new DataFile(filePath, fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" tL \u003d new TaskList(dF.fileToObjects());","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" tL \u003d new TaskList(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" String filePath \u003d \"./data/\";","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" String fileName \u003d \"trying.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" new Duke(filePath, fileName).run();","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" public void run() {","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" ui.welcomeMsg();","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" boolean run \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" while (run) {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" String command \u003d ui.readCommand();","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" Command c \u003d new Parser().getCommand(command);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" c.execute(tL, dF);","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" run \u003d !c.isExit();","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Kailash201":47,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"public class DukeException extends RuntimeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" public DukeException(String errMes) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":" super(errMes);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Kailash201":8}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package parser;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import commands.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import duke.Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" private String type \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" private enum command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" bye(\"bye\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" list(\"list\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" mark(\"mark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" unmark(\"unmark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" deadline(\"deadline\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" event(\"event\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" todo(\"todo\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" delete(\"delete\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" private final String command;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" command(String command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" return command;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" public Parser(){","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" public Parser(String type) {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" public Command getCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.bye.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" } else if (input.equals(command.list.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.unmark.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" int selected \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" return new UnmarkComment(selected);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.mark.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" int selected \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" return new MarkCommand(selected);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.deadline.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.deadline.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(8) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Kailash201"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Deadline does not contain /by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"D\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d parser.convertTaskInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Kailash201"},"content":" return new DeadlineCommand(texts);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.event.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.event.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(5) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Kailash201"},"content":" if (!input.contains(\"to\") || !input.contains(\"from\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Event does not contain to or from\");","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"E\");","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d parser.convertTaskInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Kailash201"},"content":" return new EventCommand(texts);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.todo.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.todo.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(4) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"T\");","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d parser.convertTaskInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Kailash201"},"content":" return new TodoCommand(texts);","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.delete.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Kailash201"},"content":" int selected \u003d Integer.parseInt(input.substring(input.indexOf(\"delete\") + 7)) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Kailash201"},"content":" return new DeleteCommand(selected);","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Kailash201"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Kailash201"},"content":" public ArrayList\u003cString\u003e convertTaskInput(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"Kailash201"},"content":" switch (type) {","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"Kailash201"},"content":" case \"E\": {","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"Kailash201"},"content":" if (input.indexOf(\"/by\") - 1 \u003c 6) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Your Event name is blank\");","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Kailash201"},"content":" String desc \u003d input.substring(6, input.indexOf(\"/from\") - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"Kailash201"},"content":" if (desc.isBlank() || desc.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Your Event name is blank\");","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Kailash201"},"content":" texts.add(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"Kailash201"},"content":" String from \u003d input.substring(input.indexOf(\"/from\") + 6, input.indexOf(\"/to\") - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"Kailash201"},"content":" texts.add((from));","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"Kailash201"},"content":" String to \u003d input.substring(input.indexOf(\"/to\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"Kailash201"},"content":" texts.add(to);","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"Kailash201"},"content":" case \"D\": {","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"Kailash201"},"content":" if (input.indexOf(\"/by\") - 1 \u003c 9) {","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Your Deadline name is blank\");","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"Kailash201"},"content":" String desc \u003d input.substring(9, input.indexOf(\"/by\") - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"Kailash201"},"content":" if (desc.isBlank() || desc.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Your Deadline name is blank\");","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"Kailash201"},"content":" texts.add(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"Kailash201"},"content":" String by \u003d input.substring(input.indexOf(\"/by\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"Kailash201"},"content":" texts.add(by);","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"Kailash201"},"content":" case \"T\": {","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"Kailash201"},"content":" String desc \u003d input.substring(input.indexOf(\"todo\") + 5);","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"Kailash201"},"content":" if (desc.isBlank() || desc.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Your Todo name is blank\");","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"Kailash201"},"content":" texts.add(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"Kailash201"},"content":" return texts;","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":147,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"Kailash201"},"content":" public ArrayList\u003cString\u003e splitter(String text, String cutOff) {","lastModifiedDate":"2023-08-28"},{"lineNumber":149,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e res \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":150,"author":{"gitId":"Kailash201"},"content":" String resStrAftCutting \u003d text;","lastModifiedDate":"2023-08-28"},{"lineNumber":151,"author":{"gitId":"Kailash201"},"content":" while (resStrAftCutting.contains(cutOff)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":152,"author":{"gitId":"Kailash201"},"content":" String sub \u003d resStrAftCutting.substring(0, resStrAftCutting.indexOf(cutOff));","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"Kailash201"},"content":" res.add(sub);","lastModifiedDate":"2023-08-28"},{"lineNumber":154,"author":{"gitId":"Kailash201"},"content":" resStrAftCutting \u003d resStrAftCutting.substring(resStrAftCutting.indexOf(cutOff) + 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":155,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"Kailash201"},"content":" res.add(resStrAftCutting);","lastModifiedDate":"2023-08-28"},{"lineNumber":157,"author":{"gitId":"Kailash201"},"content":" return res;","lastModifiedDate":"2023-08-28"},{"lineNumber":158,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":159,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Kailash201":160}},{"path":"src/main/java/storage/DataFile.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.io.*;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"import tasks.Todo;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"import tasks.Event;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"public class DataFile {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" private final String filePath;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" private final String fileName;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" private final File file;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" public DataFile(String filePath, String fileName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" this.fileName \u003d fileName;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" File directory \u003d new File(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" File localFile \u003d new File(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" if (!directory.exists() ) {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" file \u003d new File(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" } else if (!localFile.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" file \u003d new File(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" file \u003d localFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" public void writeToFile(Task task) throws IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" FileWriter fW \u003d new FileWriter(file, true);","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" String div \u003d \"*|,\";","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" StringBuilder custom \u003d new StringBuilder();","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" Todo td \u003d (Todo) task;","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" custom.append(\"T\").append(div).append(td.getDesc()).append(div)","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" .append(td.getStatus().equals(\"X\") ? 1 : 0)","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" .append(System.lineSeparator());","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" Deadline dl \u003d (Deadline) task;","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" custom.append(\"D\").append(div).append(dl.getDesc()).append(div).append(dl.getBy()).append(div)","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" .append(dl.getStatus().equals(\"X\") ? 1 : 0)","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" .append(System.lineSeparator());","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":" Event eve \u003d (Event) task;","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" custom.append(\"E\").append(div).append(eve.getDesc()).append(div)","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":" .append(eve.getFrom()).append(div).append(eve.getTo()).append(div)","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"Kailash201"},"content":" .append(eve.getStatus().equals(\"X\") ? 1 : 0)","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"Kailash201"},"content":" .append(System.lineSeparator());;","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"Kailash201"},"content":" fW.write(custom.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"Kailash201"},"content":" fW.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"Kailash201"},"content":" // n starts from 0","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"Kailash201"},"content":" public void editFileAtLineN(int n, char newChar) throws IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"Kailash201"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"Kailash201"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"Kailash201"},"content":" StringBuilder oldContent \u003d new StringBuilder();","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"Kailash201"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"Kailash201"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"Kailash201"},"content":" if (i \u003d\u003d n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"Kailash201"},"content":" StringBuilder sB \u003d new StringBuilder(line);","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"Kailash201"},"content":" sB.setCharAt(line.length() - 1, newChar);","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"Kailash201"},"content":" line \u003d sB.toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"Kailash201"},"content":" oldContent.append(line).append(System.lineSeparator());","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"Kailash201"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"Kailash201"},"content":" i++;","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"Kailash201"},"content":" FileWriter fW \u003d new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"Kailash201"},"content":" fW.write(oldContent.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"Kailash201"},"content":" fW.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"Kailash201"},"content":" public void deleteTaskFromFile(int n) throws IOException{","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"Kailash201"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"Kailash201"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"Kailash201"},"content":" StringBuilder oldContent \u003d new StringBuilder();","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"Kailash201"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"Kailash201"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"Kailash201"},"content":" if (i !\u003d n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"Kailash201"},"content":" oldContent.append(line).append(System.lineSeparator());","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"Kailash201"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"Kailash201"},"content":" i++;","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"Kailash201"},"content":" FileWriter fW \u003d new FileWriter(file);","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"Kailash201"},"content":" fW.write(oldContent.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"Kailash201"},"content":" fW.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"Kailash201"},"content":" public ArrayList\u003cTask\u003e fileToObjects() throws IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"Kailash201"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"Kailash201"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"Kailash201"},"content":" String div \u003d \"*|,\";","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"Kailash201"},"content":" Task task \u003d new Task(\"empty\");","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"Kailash201"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"Kailash201"},"content":" if (line.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"Kailash201"},"content":" String desc \u003d line.substring(div.length() + 1, line.lastIndexOf(div));","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"Kailash201"},"content":" task \u003d new Todo(desc);","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"Kailash201"},"content":" } else if (line.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"Kailash201"},"content":" String sub \u003d line.substring(div.length() + 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"Kailash201"},"content":" String desc \u003d sub.substring(0, sub.indexOf(div));","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"Kailash201"},"content":" int firstLine \u003d sub.indexOf(div) + div.length();","lastModifiedDate":"2023-08-29"},{"lineNumber":121,"author":{"gitId":"Kailash201"},"content":" String by \u003d sub.substring(firstLine, sub.indexOf(div, firstLine));","lastModifiedDate":"2023-08-29"},{"lineNumber":122,"author":{"gitId":"Kailash201"},"content":" task \u003d new Deadline(desc, LocalDateTime.parse(by));","lastModifiedDate":"2023-08-29"},{"lineNumber":123,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":124,"author":{"gitId":"Kailash201"},"content":" } else if (line.charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":125,"author":{"gitId":"Kailash201"},"content":" String sub \u003d line.substring(div.length() + 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"Kailash201"},"content":" String desc \u003d sub.substring(0, sub.indexOf(div));","lastModifiedDate":"2023-08-29"},{"lineNumber":127,"author":{"gitId":"Kailash201"},"content":" int firstLine \u003d sub.indexOf(div) + div.length();","lastModifiedDate":"2023-08-29"},{"lineNumber":128,"author":{"gitId":"Kailash201"},"content":" String from \u003d sub.substring(firstLine, sub.indexOf(div, firstLine));","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"Kailash201"},"content":" int secLine \u003d sub.indexOf(div, firstLine) + div.length();","lastModifiedDate":"2023-08-29"},{"lineNumber":130,"author":{"gitId":"Kailash201"},"content":" String to \u003d sub.substring(secLine, sub.indexOf(div, secLine));","lastModifiedDate":"2023-08-29"},{"lineNumber":131,"author":{"gitId":"Kailash201"},"content":" task \u003d new Event(desc, LocalDateTime.parse(from), LocalDateTime.parse(to));","lastModifiedDate":"2023-08-29"},{"lineNumber":132,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":133,"author":{"gitId":"Kailash201"},"content":" // check if task is completed","lastModifiedDate":"2023-08-29"},{"lineNumber":134,"author":{"gitId":"Kailash201"},"content":" if (line.charAt(line.length() - 1) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":135,"author":{"gitId":"Kailash201"},"content":" task.taskCompleted();","lastModifiedDate":"2023-08-29"},{"lineNumber":136,"author":{"gitId":"Kailash201"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"Kailash201"},"content":" task.taskNotCompleted();","lastModifiedDate":"2023-08-29"},{"lineNumber":138,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":139,"author":{"gitId":"Kailash201"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":140,"author":{"gitId":"Kailash201"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":141,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":142,"author":{"gitId":"Kailash201"},"content":" return tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":143,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":144,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":145,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Kailash201":145}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" public Deadline(String desc, LocalDateTime by) {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" return by;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" return \"[D]\" + super.toString() + \" (by: \"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\")) + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":24}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" public Event(String desc, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" return from;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" return to;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" return \"[E]\" + super.toString() + \" (from: \"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\")) + \" \"","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" + \"- \" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\")) + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":31}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":" private final String desc;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" private boolean isCompleted;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" public Task(String desc) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" public void taskCompleted() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" public void taskNotCompleted() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" return isCompleted ? \"X\" : \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" public String getDesc() {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" return desc;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" return \"[\" + getStatus() + \"]\" + \" \" + this.desc;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":32}},{"path":"src/main/java/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"public class TaskList {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks){","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" public Task remTask(int n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" return tasks.remove(n);","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" public boolean isTaskListEmpty() {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" return tasks.isEmpty();","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" public Task getTask (int n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" return tasks.get(n);","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" public int getSize() {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" return tasks.size();","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Kailash201":33}},{"path":"src/main/java/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" public Todo(String desc) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":13}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"public class Ui {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" public void welcomeMsg() {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Hello! I\u0027m Red\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Kailash201":16}},{"path":"src/test/java/Storage/DataFileTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"public class DataFileTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" public void writeToFile_writeDeadline_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" DataFile dF \u003d new DataFile(\"src/test/data\", \"existing.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" Task task \u003d new Deadline(\"Study\", LocalDateTime.parse(\"2019-04-04T03:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" dF.writeToFile(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" BufferedReader br \u003d new BufferedReader(new FileReader(\"src/test/data/existing.txt\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" String line \u003d br.readLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"D*|,Study*|,2019-04-04T03:00*|,0\",line);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" public void deleteTaskFromFile_remDeadline_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" DataFile dF \u003d new DataFile(\"src/test/data\", \"tmp_del_task.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" Task task \u003d new Deadline(\"Study\", LocalDateTime.parse(\"2019-04-04T03:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" dF.writeToFile(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" dF.deleteTaskFromFile(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" BufferedReader br \u003d new BufferedReader(new FileReader(\"src/test/data/tmp_del_task.txt\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" String line \u003d br.readLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" assertNull(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":46}},{"path":"src/test/java/duke/CustomDateTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"public class CustomDateTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" public void strToDateTime_checkDate_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"2019-04-04T02:00\",","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" new CustomDate().strToDateTime(\"4/4/2019 0200\").toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":14}},{"path":"src/test/java/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" public void convertTaskInput_deadlineCommand_success() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" assertEqualsConvertTaskInput(\"deadline Do notes /by 2/2/2019 2222\");","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" public void convertTaskInput_missingNameDeadlineCommand_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" String input \u003d \"deadline /by 2/2/2019 2222\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" new Parser(\"D\").convertTaskInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Your Deadline name is blank\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" public void getCommand_invalidCommandNotEmpty_throwDukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" assertEquals(\" \", new Parser().getCommand(\"sdfsfsdf\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Invalid command\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" public void getCommand_invalidCommandTodo_throwDukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" assertEquals(\" \", new Parser().getCommand(\"todooo\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Invalid command\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" public void getCommand_invalidCommandDl_throwDukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" assertEquals(\" \", new Parser().getCommand(\"deadlinesad\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Invalid command\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":" public void getCommand_invalidCommandEvent_throwDukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Kailash201"},"content":" assertEquals(\" \", new Parser().getCommand(\"eventsdf\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Invalid command\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Kailash201"},"content":" public void getCommand_invalidCommandEmpty_throwDukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Kailash201"},"content":" assertEquals(\" \", new Parser().getCommand(\"\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Invalid command\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Kailash201"},"content":"/*","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Kailash201"},"content":"Helper methods","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Kailash201"},"content":" // deadline eat /by 2/2/2019 2222","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Kailash201"},"content":" public void assertEqualsConvertTaskInput(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d new Parser(\"D\").convertTaskInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Do notes\", texts.get(0));","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"2/2/2019 2222\", texts.get(1));","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":88}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":11}},{"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":"Kailash201"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-29"},{"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":{"Kailash201":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Kailash201":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Kailash201":1,"-":41}},{"path":"src/main/java/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" * Represents a type of command that can be read by the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" * Executes the bye command.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" * @param dF The file to be edited on.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" * Returns true as this is an exit command.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" * @return True.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" * Returns the string representation of bye command.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" * @return String representation of bye command.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" return \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":38}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" * Represents a command that can be read by the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"abstract public class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" * Abstract method to implemented.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" * @param dF The file to be edited on.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" abstract public void execute(TaskList tasks , DataFile dF);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" * Returns a boolean depending the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" * Default is false.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" * @return False, as that is the default.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Kailash201":26}},{"path":"src/main/java/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import duke.CustomDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" * Represents a type of command that can be read by the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" private final ArrayList\u003cString\u003e texts;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" private int size;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" * DeadlineCommand constructor that takes in an ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" * @param texts ArrayList of texts needed for deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" public DeadlineCommand(ArrayList\u003cString\u003e texts) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" this.texts \u003d texts;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" * Executes the deadline command.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" * @param dF The file to be edited on.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks , DataFile dF) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" CustomDate cD \u003d new CustomDate();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" Task dL \u003d new Deadline(texts.get(0), cD.strToDateTime(texts.get(1)));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" tasks.addTask(dL);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" task \u003d dL;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" dF.writeToFile(dL);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" * Returns the string representation of deadline command.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" * @return String representation of deadline command.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + task","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" + \"\\nNow you have \" + size + \" tasks in the list.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":57}},{"path":"src/main/java/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" * Represents a type of command that can be read by the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" private int size \u003d -1;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" * DeleteCommand constructor that takes in an int.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" * @param index Index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" * Executes the delete command.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" * @param dF The file to be edited on.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" if (tasks.isTaskListEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"List is already empty, nothing to catch\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" Task task \u003d tasks.remTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + task","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" + \"\\nNow you have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" dF.deleteTaskFromFile(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" * Returns the string representation of delete command.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" * @return String representation of delete command.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" return \"Noted. I\u0027ve removed this task:\\n\" + task","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":" + \"\\nNow you have \" + size + \" tasks in the list.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":59}},{"path":"src/main/java/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import duke.CustomDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" * Represents a type of command that can be read by the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" private final ArrayList\u003cString\u003e texts;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" private int size;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" * EventCommand constructor that takes in an ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" * @param texts ArrayList of texts needed for event.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" public EventCommand(ArrayList\u003cString\u003e texts) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" this.texts \u003d texts;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" * Executes the event command.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" * @param dF The file to be edited on.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks , DataFile dF) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" CustomDate cD \u003d new CustomDate();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" Task event \u003d new Event(texts.get(0),","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" cD.strToDateTime(texts.get(1)), cD.strToDateTime(texts.get(2)));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" tasks.addTask(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" task \u003d event;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" dF.writeToFile(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" * Returns the string representation of event command.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" * @return String representation of event command.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + task","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":" + \"\\nNow you have \" + size + \" tasks in the list.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":59}},{"path":"src/main/java/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"public class FindCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" private final String keyWord;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" public FindCommand(String keyWord) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" this.keyWord \u003d keyWord;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" if (tasks.getTask(i).getDesc().contains(keyWord)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" System.out.println(i + 1 + \".\" + tasks.getTask(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" return \"Here are the matching tasks from you list:\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Kailash201":27}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" * Represents a type of command that can be read by the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" * Executes the list command.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" * @param dF The file to be edited on.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" System.out.println(i + 1 + \".\" + tasks.getTask(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" * Returns the string representation of list command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" * @return String representation of list command.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" return \"Here are the tasks in your list:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":32}},{"path":"src/main/java/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" * Represents a type of command that can be read by the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" * MarkCommand constructor that takes in an int.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" * @param index Index of the task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" * Executes the mark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" * @param dF The file to be edited on.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) throws DukeException{","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" if (tasks.isTaskListEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"List is empty, nothing to mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" task.taskCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" dF.editFileAtLineN(index, \u00271\u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" * Returns the string representation of mark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" * @return String representation of mark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" return \"Nice! I\u0027ve marked this task as done:\\n\" + task;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":55}},{"path":"src/main/java/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" * Represents a type of command that can be read by the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" private final ArrayList\u003cString\u003e texts;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" private int size;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" * TodoCommand constructor that takes in an ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" * @param texts ArrayList of texts needed for todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" public TodoCommand(ArrayList\u003cString\u003e texts) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" this.texts \u003d texts;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" * Executes the todo command.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" * @param dF The file to be edited on.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" Task todo \u003d new Todo(texts.get(0));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" tasks.addTask(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" task \u003d todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" dF.writeToFile(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" * Returns the string representation of todo command.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" * @return String representation of todo command.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + task","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" + \"\\nNow you have \" + size + \" tasks in the list.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":56}},{"path":"src/main/java/commands/UnmarkComment.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" * Represents a type of command that can be read by the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"public class UnmarkComment extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" * DeleteCommand constructor that takes in an int.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" * @param index Index of the task to be unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" public UnmarkComment(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" * Executes the unmark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" * @param dF The file to be edited on.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" public void execute(TaskList tasks, DataFile dF) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" if (tasks.isTaskListEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"List is empty, nothing to unmark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" Task selTask \u003d tasks.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" selTask.taskNotCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" task \u003d selTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" System.out.println(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" dF.editFileAtLineN(index, \u00270\u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" * Returns the string representation of unmark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" * @return String representation of unmark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n\" + task;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":55}},{"path":"src/main/java/duke/CustomDate.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import parser.Parser;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" * Converts the string input of date into date and time objects.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"public class CustomDate {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" * Returns the LocaleDateTime from a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" * @param text Date, time in string.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" * @return LocaleDateTime from the string.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" public LocalDateTime strToDateTime(String text) {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" Parser p \u003d new Parser();","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d p.splitter(text, \"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e yearNTime \u003d p.splitter(texts.get(2), \" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" String year \u003d addZeroFront(yearNTime.get(0));","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" String mon \u003d addZeroFront(texts.get(1));","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" String day \u003d addZeroFront(texts.get(0));","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" String time \u003d formatTime(yearNTime.get(1));","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" LocalDateTime dOne \u003d LocalDateTime.parse(year + \"-\" + mon + \"-\" + day + \"T\" + time);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" return dOne;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" * Add zero to the front of a string that is 1 in length.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" * @param text Text to be edited.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" * @return Text with a zero in front.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" public String addZeroFront(String text) {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" return text.length() \u003d\u003d 1 ? 0 + text : text;","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" * Returns formatted time string.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" * @param str Time in string.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" * @return Formatted time string.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" public String formatTime(String str) {","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" return str.substring(0, 2) + \":\" + str.substring(2, 4);","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Kailash201":48}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import commands.Command;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"import java.io.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" * The programme that runs the Duke chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" private final DataFile dataFile;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" * Duke constructor that takes a String, String and initialises","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" * class variables.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" * @param filePath Name of the path.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" * @param fileName Name of the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" public Duke(String filePath, String fileName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" dataFile \u003d new DataFile(filePath, fileName);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" taskList \u003d new TaskList(dataFile.fileToObjects());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" taskList \u003d new TaskList(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" * The main method.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" * @param args Unused.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" String filePath \u003d \"./data/\";","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" String fileName \u003d \"trying.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" new Duke(filePath, fileName).run();","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" * The run logic of the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" public void run() {","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" ui.welcomeMsg();","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" boolean run \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" while (run) {","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":" String command \u003d ui.readCommand();","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" Command c \u003d new Parser().getCommand(command);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":" c.execute(taskList, dataFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Kailash201"},"content":" run \u003d !c.isExit();","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Kailash201":63,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package duke;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" * Exceptions that are unique to the duke programme.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"public class DukeException extends RuntimeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" * DukeException constructor that takes in a String.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" * @param errMes Duke\u0027s error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" public DukeException(String errMes) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" super(errMes);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Kailash201":16}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package parser;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import commands.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" * This class handles all string manipulation needed","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" * to read user inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" private String type \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" private enum command {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" bye(\"bye\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" list(\"list\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" mark(\"mark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" unmark(\"unmark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" deadline(\"deadline\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" event(\"event\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" todo(\"todo\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" delete(\"delete\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" find(\"find\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" private final String command;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" command(String command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" return command;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" * Parser empty constructor.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" public Parser(){","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" * Parser constructor that takes in a String.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" * @param type The type of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" public Parser(String type) {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" * Returns the intended command after reading the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" * @param input Input from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" * @return The intended command.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":" * @throws DukeException If user typed invalid commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":" public Command getCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.bye.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Kailash201"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Kailash201"},"content":" } else if (input.equals(command.list.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Kailash201"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.unmark.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Kailash201"},"content":" int selected \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Kailash201"},"content":" return new UnmarkComment(selected);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.mark.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Kailash201"},"content":" int selected \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Kailash201"},"content":" return new MarkCommand(selected);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.deadline.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.deadline.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(8) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Kailash201"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Deadline does not contain /by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"D\");","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d parser.convertTaskInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Kailash201"},"content":" return new DeadlineCommand(texts);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.event.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.event.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(5) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Kailash201"},"content":" if (!input.contains(\"to\") || !input.contains(\"from\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Event does not contain to or from\");","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"E\");","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d parser.convertTaskInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Kailash201"},"content":" return new EventCommand(texts);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.todo.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.todo.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(4) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"T\");","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d parser.convertTaskInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Kailash201"},"content":" return new TodoCommand(texts);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.delete.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Kailash201"},"content":" int selected \u003d Integer.parseInt(input.substring(input.indexOf(\"delete\") + 7)) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Kailash201"},"content":" return new DeleteCommand(selected);","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Kailash201"},"content":" } else if (input.contains(command.find.toString())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.find.toString())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"find cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(4) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"P\");","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d parser.convertTaskInput(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"Kailash201"},"content":" return new FindCommand(texts.get(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"Kailash201"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"Kailash201"},"content":" * Converts the user input of different type of tasks into ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Kailash201"},"content":" * @param input User input of the tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"Kailash201"},"content":" * @return Required data of task from the user input in ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"Kailash201"},"content":" * @throws DukeException If user typed invalid tasks commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"Kailash201"},"content":" public ArrayList\u003cString\u003e convertTaskInput(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"Kailash201"},"content":" switch (type) {","lastModifiedDate":"2023-08-27"},{"lineNumber":140,"author":{"gitId":"Kailash201"},"content":" case \"E\": {","lastModifiedDate":"2023-08-27"},{"lineNumber":141,"author":{"gitId":"Kailash201"},"content":" if (input.indexOf(\"/by\") - 1 \u003c 6) {","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Your Event name is blank\");","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"Kailash201"},"content":" String desc \u003d input.substring(6, input.indexOf(\"/from\") - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"Kailash201"},"content":" if (desc.isBlank() || desc.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Your Event name is blank\");","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"Kailash201"},"content":" texts.add(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":149,"author":{"gitId":"Kailash201"},"content":" String from \u003d input.substring(input.indexOf(\"/from\") + 6, input.indexOf(\"/to\") - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":150,"author":{"gitId":"Kailash201"},"content":" texts.add((from));","lastModifiedDate":"2023-08-27"},{"lineNumber":151,"author":{"gitId":"Kailash201"},"content":" String to \u003d input.substring(input.indexOf(\"/to\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":152,"author":{"gitId":"Kailash201"},"content":" texts.add(to);","lastModifiedDate":"2023-08-27"},{"lineNumber":153,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":154,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":155,"author":{"gitId":"Kailash201"},"content":" case \"D\": {","lastModifiedDate":"2023-08-27"},{"lineNumber":156,"author":{"gitId":"Kailash201"},"content":" if (input.indexOf(\"/by\") - 1 \u003c 9) {","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Your Deadline name is blank\");","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"Kailash201"},"content":" String desc \u003d input.substring(9, input.indexOf(\"/by\") - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":160,"author":{"gitId":"Kailash201"},"content":" if (desc.isBlank() || desc.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Your Deadline name is blank\");","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"Kailash201"},"content":" texts.add(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":164,"author":{"gitId":"Kailash201"},"content":" String by \u003d input.substring(input.indexOf(\"/by\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":165,"author":{"gitId":"Kailash201"},"content":" texts.add(by);","lastModifiedDate":"2023-08-27"},{"lineNumber":166,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":167,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":168,"author":{"gitId":"Kailash201"},"content":" case \"T\": {","lastModifiedDate":"2023-08-27"},{"lineNumber":169,"author":{"gitId":"Kailash201"},"content":" String desc \u003d input.substring(input.indexOf(\"todo\") + 5);","lastModifiedDate":"2023-08-27"},{"lineNumber":170,"author":{"gitId":"Kailash201"},"content":" if (desc.isBlank() || desc.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Your Todo name is blank\");","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"Kailash201"},"content":" texts.add(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":174,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":175,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":176,"author":{"gitId":"Kailash201"},"content":" case \"P\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"Kailash201"},"content":" String keyWord \u003d splitter(input, \" \").get(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"Kailash201"},"content":" texts.add(keyWord);","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":182,"author":{"gitId":"Kailash201"},"content":" return texts;","lastModifiedDate":"2023-08-27"},{"lineNumber":183,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":184,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"Kailash201"},"content":" * Separating words from a string that has a divider between it and store the words in","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"Kailash201"},"content":" * ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"Kailash201"},"content":" * @param text The text to split.","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"Kailash201"},"content":" * @param cutOff The divider to cut the string.","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"Kailash201"},"content":" * @return Separated words stored in ArrayList from a string that was merged with a divider.","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"Kailash201"},"content":" public ArrayList\u003cString\u003e splitter(String text, String cutOff) {","lastModifiedDate":"2023-08-28"},{"lineNumber":193,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e res \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":194,"author":{"gitId":"Kailash201"},"content":" String resStrAftCutting \u003d text;","lastModifiedDate":"2023-08-28"},{"lineNumber":195,"author":{"gitId":"Kailash201"},"content":" while (resStrAftCutting.contains(cutOff)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":196,"author":{"gitId":"Kailash201"},"content":" String sub \u003d resStrAftCutting.substring(0, resStrAftCutting.indexOf(cutOff));","lastModifiedDate":"2023-08-28"},{"lineNumber":197,"author":{"gitId":"Kailash201"},"content":" res.add(sub);","lastModifiedDate":"2023-08-28"},{"lineNumber":198,"author":{"gitId":"Kailash201"},"content":" resStrAftCutting \u003d resStrAftCutting.substring(resStrAftCutting.indexOf(cutOff) + 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":199,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":200,"author":{"gitId":"Kailash201"},"content":" res.add(resStrAftCutting);","lastModifiedDate":"2023-08-28"},{"lineNumber":201,"author":{"gitId":"Kailash201"},"content":" return res;","lastModifiedDate":"2023-08-28"},{"lineNumber":202,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":203,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Kailash201":204}},{"path":"src/main/java/storage/DataFile.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.io.*;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"import tasks.Todo;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"import tasks.Event;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" * Handles all the manipulation of the file that is stored","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" * locally.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"public class DataFile {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" private final String filePath;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" private final String fileName;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" private final File file;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" * DateFile constructor that takes in String, String.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" * @param filePath Name of the path.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" * @param fileName Name of the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" public DataFile(String filePath, String fileName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" this.fileName \u003d fileName;","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" File directory \u003d new File(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" File localFile \u003d new File(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" if (!directory.exists() ) {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" file \u003d new File(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" } else if (!localFile.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" file \u003d new File(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" file \u003d localFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" * Writes data into file.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" * @param task The task that is being written into the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" * @throws IOException If any file issues exists.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" public void writeToFile(Task task) throws IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":" FileWriter fW \u003d new FileWriter(file, true);","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" String div \u003d \"*|,\";","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":" StringBuilder custom \u003d new StringBuilder();","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"Kailash201"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"Kailash201"},"content":" Todo td \u003d (Todo) task;","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"Kailash201"},"content":" custom.append(\"T\").append(div).append(td.getDesc()).append(div)","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"Kailash201"},"content":" .append(td.getStatus().equals(\"X\") ? 1 : 0)","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"Kailash201"},"content":" .append(System.lineSeparator());","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"Kailash201"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"Kailash201"},"content":" Deadline dl \u003d (Deadline) task;","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"Kailash201"},"content":" custom.append(\"D\").append(div).append(dl.getDesc()).append(div).append(dl.getBy()).append(div)","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"Kailash201"},"content":" .append(dl.getStatus().equals(\"X\") ? 1 : 0)","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"Kailash201"},"content":" .append(System.lineSeparator());","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"Kailash201"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"Kailash201"},"content":" Event eve \u003d (Event) task;","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"Kailash201"},"content":" custom.append(\"E\").append(div).append(eve.getDesc()).append(div)","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"Kailash201"},"content":" .append(eve.getFrom()).append(div).append(eve.getTo()).append(div)","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"Kailash201"},"content":" .append(eve.getStatus().equals(\"X\") ? 1 : 0)","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"Kailash201"},"content":" .append(System.lineSeparator());;","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"Kailash201"},"content":" fW.write(custom.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"Kailash201"},"content":" fW.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Kailash201"},"content":" * Edit the marks or unmarks of a task in the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Kailash201"},"content":" * @param n The line to be edited.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Kailash201"},"content":" * @param newChar The mark to be replaced.","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Kailash201"},"content":" * @throws IOException If any file issues exists.","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Kailash201"},"content":" public void editFileAtLineN(int n, char newChar) throws IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"Kailash201"},"content":" // n starts from 0","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Kailash201"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"Kailash201"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"Kailash201"},"content":" StringBuilder oldContent \u003d new StringBuilder();","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"Kailash201"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"Kailash201"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"Kailash201"},"content":" if (i \u003d\u003d n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"Kailash201"},"content":" StringBuilder sB \u003d new StringBuilder(line);","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"Kailash201"},"content":" sB.setCharAt(line.length() - 1, newChar);","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"Kailash201"},"content":" line \u003d sB.toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"Kailash201"},"content":" oldContent.append(line).append(System.lineSeparator());","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"Kailash201"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"Kailash201"},"content":" i++;","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"Kailash201"},"content":" FileWriter fW \u003d new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"Kailash201"},"content":" fW.write(oldContent.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"Kailash201"},"content":" fW.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"Kailash201"},"content":" ","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"Kailash201"},"content":" * Deletes a task from the file at line n.","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Kailash201"},"content":" * @param n The line to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"Kailash201"},"content":" * @throws IOException If any file issues exists.","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"Kailash201"},"content":" public void deleteTaskFromFile(int n) throws IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"Kailash201"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"Kailash201"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"Kailash201"},"content":" StringBuilder oldContent \u003d new StringBuilder();","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"Kailash201"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"Kailash201"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"Kailash201"},"content":" if (i !\u003d n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"Kailash201"},"content":" oldContent.append(line).append(System.lineSeparator());","lastModifiedDate":"2023-08-29"},{"lineNumber":121,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":122,"author":{"gitId":"Kailash201"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":123,"author":{"gitId":"Kailash201"},"content":" i++;","lastModifiedDate":"2023-08-29"},{"lineNumber":124,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":125,"author":{"gitId":"Kailash201"},"content":" FileWriter fW \u003d new FileWriter(file);","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"Kailash201"},"content":" fW.write(oldContent.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":127,"author":{"gitId":"Kailash201"},"content":" fW.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":128,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":130,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"Kailash201"},"content":" * Read the data from the file and convert it to list of Tasks object.","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"Kailash201"},"content":" * @return List of Tasks in ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Kailash201"},"content":" * @throws IOException If any file issues exists.","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"Kailash201"},"content":" public ArrayList\u003cTask\u003e fileToObjects() throws IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":136,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"Kailash201"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-29"},{"lineNumber":138,"author":{"gitId":"Kailash201"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":139,"author":{"gitId":"Kailash201"},"content":" String div \u003d \"*|,\";","lastModifiedDate":"2023-08-29"},{"lineNumber":140,"author":{"gitId":"Kailash201"},"content":" Task task \u003d new Task(\"empty\");","lastModifiedDate":"2023-08-29"},{"lineNumber":141,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":142,"author":{"gitId":"Kailash201"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":143,"author":{"gitId":"Kailash201"},"content":" if (line.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":144,"author":{"gitId":"Kailash201"},"content":" String desc \u003d line.substring(div.length() + 1, line.lastIndexOf(div));","lastModifiedDate":"2023-08-29"},{"lineNumber":145,"author":{"gitId":"Kailash201"},"content":" task \u003d new Todo(desc);","lastModifiedDate":"2023-08-29"},{"lineNumber":146,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":147,"author":{"gitId":"Kailash201"},"content":" } else if (line.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":148,"author":{"gitId":"Kailash201"},"content":" String sub \u003d line.substring(div.length() + 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":149,"author":{"gitId":"Kailash201"},"content":" String desc \u003d sub.substring(0, sub.indexOf(div));","lastModifiedDate":"2023-08-29"},{"lineNumber":150,"author":{"gitId":"Kailash201"},"content":" int firstLine \u003d sub.indexOf(div) + div.length();","lastModifiedDate":"2023-08-29"},{"lineNumber":151,"author":{"gitId":"Kailash201"},"content":" String by \u003d sub.substring(firstLine, sub.indexOf(div, firstLine));","lastModifiedDate":"2023-08-29"},{"lineNumber":152,"author":{"gitId":"Kailash201"},"content":" task \u003d new Deadline(desc, LocalDateTime.parse(by));","lastModifiedDate":"2023-08-29"},{"lineNumber":153,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":154,"author":{"gitId":"Kailash201"},"content":" } else if (line.charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":155,"author":{"gitId":"Kailash201"},"content":" String sub \u003d line.substring(div.length() + 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":156,"author":{"gitId":"Kailash201"},"content":" String desc \u003d sub.substring(0, sub.indexOf(div));","lastModifiedDate":"2023-08-29"},{"lineNumber":157,"author":{"gitId":"Kailash201"},"content":" int firstLine \u003d sub.indexOf(div) + div.length();","lastModifiedDate":"2023-08-29"},{"lineNumber":158,"author":{"gitId":"Kailash201"},"content":" String from \u003d sub.substring(firstLine, sub.indexOf(div, firstLine));","lastModifiedDate":"2023-08-29"},{"lineNumber":159,"author":{"gitId":"Kailash201"},"content":" int secLine \u003d sub.indexOf(div, firstLine) + div.length();","lastModifiedDate":"2023-08-29"},{"lineNumber":160,"author":{"gitId":"Kailash201"},"content":" String to \u003d sub.substring(secLine, sub.indexOf(div, secLine));","lastModifiedDate":"2023-08-29"},{"lineNumber":161,"author":{"gitId":"Kailash201"},"content":" task \u003d new Event(desc, LocalDateTime.parse(from), LocalDateTime.parse(to));","lastModifiedDate":"2023-08-29"},{"lineNumber":162,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":163,"author":{"gitId":"Kailash201"},"content":" // check if task is completed","lastModifiedDate":"2023-08-29"},{"lineNumber":164,"author":{"gitId":"Kailash201"},"content":" if (line.charAt(line.length() - 1) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":165,"author":{"gitId":"Kailash201"},"content":" task.taskCompleted();","lastModifiedDate":"2023-08-29"},{"lineNumber":166,"author":{"gitId":"Kailash201"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":167,"author":{"gitId":"Kailash201"},"content":" task.taskNotCompleted();","lastModifiedDate":"2023-08-29"},{"lineNumber":168,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":169,"author":{"gitId":"Kailash201"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":170,"author":{"gitId":"Kailash201"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":171,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":172,"author":{"gitId":"Kailash201"},"content":" return tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":173,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":174,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":175,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Kailash201":175}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" * Represents a deadline task that can be tracked in","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" * the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" * Deadline constructor that takes in a String and LocalDateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" * @param desc Description of the deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" * @param by The due date of the deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" public Deadline(String desc, LocalDateTime by) {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" * Returns The date and time of the deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" * @return The date and time of the deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" return by;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" * Returns The string representation of Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" * @return String representation of deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" return \"[D]\" + super.toString() + \" (by: \"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\")) + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":41}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" * Represents an event task that can be tracked in","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" * the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" * Event constructor that takes in String, LocalDateTime, LocalDateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" * @param desc Description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" * @param from The starting date and time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" * @param to The ending date and time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" public Event(String desc, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" * Returns the starting date and time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" * @return Starting date and time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" return from;","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" * Returns the ending date and time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" * @return ending date and time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" return to;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" * Returns the string representation of an event.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" * @return The string representation of an event.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" return \"[E]\" + super.toString() + \" (from: \"","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\")) + \" \"","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" + \"- \" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\")) + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":53}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":" * Represents a task object that will be used to keep track in","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" * the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" private final String desc;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" private boolean isCompleted;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" * Constructor for Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" * @param desc Description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" public Task(String desc) {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" * Marks the task completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" public void taskCompleted() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" * Marks the task not completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" public void taskNotCompleted() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" * Returns the marked status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" * @return Marked status.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" return isCompleted ? \"X\" : \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" * Returns the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" * @return Task\u0027s description.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" public String getDesc() {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" return desc;","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" * Returns the string representation of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" * @return String representation of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":" return \"[\" + getStatus() + \"]\" + \" \" + this.desc;","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":59}},{"path":"src/main/java/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":" * Represents a list of Tasks object.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"public class TaskList {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" * TaskList constructor that takes in an ArrayList\u003cTask\u003e.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" * @param tasks Arraylist of tasks object.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks){","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" * Removes a task from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" * @param n Index position of the task in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" * @return The removed task.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" public Task remTask(int n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" return tasks.remove(n);","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" * Adds a task into the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" * @param task The task that is being added.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" *Checks if the list is empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" * @return True if the list is empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" public boolean isTaskListEmpty() {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" return tasks.isEmpty();","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" * Gets a task from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" * @param n Index position of the wanted task in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" * @return The wanted task.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" public Task getTask (int n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" return tasks.get(n);","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" * Returns the size of the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" * @return List\u0027s size.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" public int getSize() {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":" return tasks.size();","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Kailash201":61}},{"path":"src/main/java/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":" * Represents a todo task that can be tracked in","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" * the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" * Todo Constructor that takes in a String.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" * @param desc Description of the todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" public Todo(String desc) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" * Returns the string representation of a todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" * @return The string representation of a todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":25}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":" * The programme that interacts with the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"public class Ui {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" * Returns the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" * @return User input.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" * Displays welcome message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" public void welcomeMsg() {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Hello! I\u0027m Red\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Kailash201":26}},{"path":"src/test/java/Storage/DataFileTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import storage.DataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"public class DataFileTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" public void writeToFile_writeDeadline_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" DataFile dF \u003d new DataFile(\"src/test/data\", \"existing.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" Task task \u003d new Deadline(\"Study\", LocalDateTime.parse(\"2019-04-04T03:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" dF.writeToFile(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" BufferedReader br \u003d new BufferedReader(new FileReader(\"src/test/data/existing.txt\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" String line \u003d br.readLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"D*|,Study*|,2019-04-04T03:00*|,0\",line);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" public void deleteTaskFromFile_remDeadline_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" DataFile dF \u003d new DataFile(\"src/test/data\", \"tmp_del_task.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" Task task \u003d new Deadline(\"Study\", LocalDateTime.parse(\"2019-04-04T03:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" dF.writeToFile(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" dF.deleteTaskFromFile(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" BufferedReader br \u003d new BufferedReader(new FileReader(\"src/test/data/tmp_del_task.txt\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" String line \u003d br.readLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" assertNull(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":46}},{"path":"src/test/java/duke/CustomDateTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"public class CustomDateTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" public void strToDateTime_checkDate_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"2019-04-04T02:00\",","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" new CustomDate().strToDateTime(\"4/4/2019 0200\").toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":14}},{"path":"src/test/java/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"package parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" public void convertTaskInput_deadlineCommand_success() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" assertEqualsConvertTaskInput(\"deadline Do notes /by 2/2/2019 2222\");","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" public void convertTaskInput_missingNameDeadlineCommand_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" String input \u003d \"deadline /by 2/2/2019 2222\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" new Parser(\"D\").convertTaskInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Your Deadline name is blank\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" public void getCommand_invalidCommandNotEmpty_throwDukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" assertEquals(\" \", new Parser().getCommand(\"sdfsfsdf\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Invalid command\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" public void getCommand_invalidCommandTodo_throwDukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" assertEquals(\" \", new Parser().getCommand(\"todooo\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Invalid command\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" public void getCommand_invalidCommandDl_throwDukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" assertEquals(\" \", new Parser().getCommand(\"deadlinesad\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Invalid command\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":" public void getCommand_invalidCommandEvent_throwDukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Kailash201"},"content":" assertEquals(\" \", new Parser().getCommand(\"eventsdf\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Invalid command\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Kailash201"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Kailash201"},"content":" public void getCommand_invalidCommandEmpty_throwDukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Kailash201"},"content":" assertEquals(\" \", new Parser().getCommand(\"\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Kailash201"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Invalid command\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Kailash201"},"content":"/*","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Kailash201"},"content":"Helper methods","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Kailash201"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Kailash201"},"content":" // deadline eat /by 2/2/2019 2222","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Kailash201"},"content":" public void assertEqualsConvertTaskInput(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d new Parser(\"D\").convertTaskInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"Do notes\", texts.get(0));","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Kailash201"},"content":" assertEquals(\"2/2/2019 2222\", texts.get(1));","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kailash201":88}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":11}},{"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":"Kailash201"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-29"},{"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":{"Kailash201":1,"-":20}}] diff --git a/Kailash201_ip_master/commits.json b/Kailash201_ip_master/commits.json index a935bc55..660bd300 100644 --- a/Kailash201_ip_master/commits.json +++ b/Kailash201_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Kailash201":[{"date":"2023-08-23","commitResults":[{"hash":"7b424ebbc5d8d1ec2a3de3c8e8b7bd4676ec34ad","isMergeCommit":false,"messageTitle":"Duke.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"1c76f23245e4597c2e3b0977527a326b7b53d540","isMergeCommit":false,"messageTitle":"Duke.java","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"901b651448a5e83dd0f81db04cdbb954d305b2b5","isMergeCommit":false,"messageTitle":"Duke.java","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":4}}},{"hash":"7b57d8603f9c8924dfed773f91c63ffac36ac74e","isMergeCommit":false,"messageTitle":"Duke.java, Task.java","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":3}}},{"hash":"3bf37c767e2f9bca8bbb7fc7e00808fc5d7cb900","isMergeCommit":false,"messageTitle":"add new classes and edit duke","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":5}}},{"hash":"95851a4f85b5afe4e8b7386dcb85200c35713f2e","isMergeCommit":false,"messageTitle":"test files","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"e143220a66f516361bf809f60e89d83fb2fe65be","isMergeCommit":false,"messageTitle":"add dukception","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":65}}},{"hash":"0969c7865e52d8d45f106021721dc8e39f31bb6a","isMergeCommit":false,"messageTitle":"lvl6 and added delete to testcases","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":21,"deletions":15}}},{"hash":"08fd2b79afb0c575a9ed8f94a4d39926751db7ed","isMergeCommit":false,"messageTitle":"added enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":11}}}]},{"date":"2023-08-27","commitResults":[{"hash":"a8f588f9f6e5bedbc646124624961eba3f7b2b3b","isMergeCommit":false,"messageTitle":"Add save function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":214,"deletions":18}}}]},{"date":"2023-08-28","commitResults":[{"hash":"ef671b07e53b4886cba3b4b68e4f274faca41913","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"a7833704056593486224a90ce93e83fbff392383","isMergeCommit":false,"messageTitle":"Add date-time function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":19}}},{"hash":"6c8e4c5af00bd8ac359addc990434b49afe78b80","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"ea5f16076e90e9241766b9ceedc225b056bbdcac","isMergeCommit":false,"messageTitle":"Add more OOP classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":372,"deletions":280}}},{"hash":"d89d47294fc3ea43f845aa93ce3d328c9bb0824f","isMergeCommit":false,"messageTitle":"Edit oop classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":25}}},{"hash":"11218d8a6436635e2f316214e49da4917b01da3b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"ae315dbca871d3bd91fc5aa4d9cf1e6e6c100f7e","isMergeCommit":false,"messageTitle":"Add classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":14},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"faae4b631f0c83db3dc63f83a89c58122bcdf3ad","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"ed81e87cd9cb63045ad6e3bc15978406922bfc53","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7588c7d87f9e371368282756059750314132b911","isMergeCommit":false,"messageTitle":"Add gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"5231e64820c54a71e765ff3e7ddf0a80b793077b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"21d456c1da182ddedb3fb4834edc9b372bc97530","isMergeCommit":false,"messageTitle":"Add 1 text directory file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"e9d939013c7d4ce9b91878fdd13e610138ca8a78","isMergeCommit":false,"messageTitle":"More OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":469,"deletions":168}}},{"hash":"88c990682a1497afb75076d0bf4b14e9f3ed9c89","isMergeCommit":false,"messageTitle":"Add JUnit for 3 classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":37}}},{"hash":"befa8671342c21ec5aef3e643e286f1748f3fecb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["v0.1","A-Jar","A-JUnit"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Kailash201":{"java":984,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":11}},"authorContributionVariance":{"Kailash201":70866.2},"authorDisplayNameMap":{"Kailash201":"CS2103T-T10-3 KAIL..LVAM"}} +{"authorDailyContributionsMap":{"Kailash201":[{"date":"2023-08-23","commitResults":[{"hash":"7b424ebbc5d8d1ec2a3de3c8e8b7bd4676ec34ad","isMergeCommit":false,"messageTitle":"Duke.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"1c76f23245e4597c2e3b0977527a326b7b53d540","isMergeCommit":false,"messageTitle":"Duke.java","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"901b651448a5e83dd0f81db04cdbb954d305b2b5","isMergeCommit":false,"messageTitle":"Duke.java","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":4}}},{"hash":"7b57d8603f9c8924dfed773f91c63ffac36ac74e","isMergeCommit":false,"messageTitle":"Duke.java, Task.java","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":3}}},{"hash":"3bf37c767e2f9bca8bbb7fc7e00808fc5d7cb900","isMergeCommit":false,"messageTitle":"add new classes and edit duke","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":5}}},{"hash":"95851a4f85b5afe4e8b7386dcb85200c35713f2e","isMergeCommit":false,"messageTitle":"test files","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"e143220a66f516361bf809f60e89d83fb2fe65be","isMergeCommit":false,"messageTitle":"add dukception","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":65}}},{"hash":"0969c7865e52d8d45f106021721dc8e39f31bb6a","isMergeCommit":false,"messageTitle":"lvl6 and added delete to testcases","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":21,"deletions":15}}},{"hash":"08fd2b79afb0c575a9ed8f94a4d39926751db7ed","isMergeCommit":false,"messageTitle":"added enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":11}}}]},{"date":"2023-08-27","commitResults":[{"hash":"a8f588f9f6e5bedbc646124624961eba3f7b2b3b","isMergeCommit":false,"messageTitle":"Add save function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":214,"deletions":18}}}]},{"date":"2023-08-28","commitResults":[{"hash":"ef671b07e53b4886cba3b4b68e4f274faca41913","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"a7833704056593486224a90ce93e83fbff392383","isMergeCommit":false,"messageTitle":"Add date-time function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":19}}},{"hash":"6c8e4c5af00bd8ac359addc990434b49afe78b80","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"ea5f16076e90e9241766b9ceedc225b056bbdcac","isMergeCommit":false,"messageTitle":"Add more OOP classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":372,"deletions":280}}},{"hash":"d89d47294fc3ea43f845aa93ce3d328c9bb0824f","isMergeCommit":false,"messageTitle":"Edit oop classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":25}}},{"hash":"11218d8a6436635e2f316214e49da4917b01da3b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"ae315dbca871d3bd91fc5aa4d9cf1e6e6c100f7e","isMergeCommit":false,"messageTitle":"Add classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":14},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"faae4b631f0c83db3dc63f83a89c58122bcdf3ad","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"ed81e87cd9cb63045ad6e3bc15978406922bfc53","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7588c7d87f9e371368282756059750314132b911","isMergeCommit":false,"messageTitle":"Add gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"5231e64820c54a71e765ff3e7ddf0a80b793077b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"21d456c1da182ddedb3fb4834edc9b372bc97530","isMergeCommit":false,"messageTitle":"Add 1 text directory file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"e9d939013c7d4ce9b91878fdd13e610138ca8a78","isMergeCommit":false,"messageTitle":"More OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":469,"deletions":168}}},{"hash":"88c990682a1497afb75076d0bf4b14e9f3ed9c89","isMergeCommit":false,"messageTitle":"Add JUnit for 3 classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":37}}},{"hash":"befa8671342c21ec5aef3e643e286f1748f3fecb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["v0.1","A-Jar","A-JUnit"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"3f8eb86c808d303c3a74a84f36060dc01913ba29","isMergeCommit":false,"messageTitle":"Add find function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":3}}},{"hash":"6577545a1cac60d4f7fb330bc016fd6b7b94e733","isMergeCommit":false,"messageTitle":"Add Java docs for methods/classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":355,"deletions":6}}},{"hash":"a1aba8891c32494d90aee46c488bc314270c7f46","isMergeCommit":false,"messageTitle":"Fix coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":40}}},{"hash":"a04b1df3086cacc8793a3aa2d89278d3a1615e18","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"94f770362b14a130d3ffeea45f88156a56ef5753","isMergeCommit":true,"messageTitle":"Fix merge conflict","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"349ebf1f6467a4e28f1303529c96af2d562f188a","isMergeCommit":true,"messageTitle":"Fix merge conflict","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Kailash201":{"java":1383,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":11}},"authorContributionVariance":{"Kailash201":72621.9},"authorDisplayNameMap":{"Kailash201":"CS2103T-T10-3 KAIL..LVAM"}} diff --git a/Kb-Tay_ip_master/authorship.json b/Kb-Tay_ip_master/authorship.json index 915ed25a..0ee441f9 100644 --- a/Kb-Tay_ip_master/authorship.json +++ b/Kb-Tay_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Kb-Tay":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Kb-Tay":2,"-":41}},{"path":"src/main/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"D | 0 | return book | June 6th","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"E | 1 | project meeting | Aug 6th 2pm-4pm","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"T | 0 | join sports club","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"D | 0 | eat dinner | Aug 30 2023 6.00PM","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"T | 0 | eat meat","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kb-Tay":5}},{"path":"src/main/java/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":" * command.Command that adds a task to the task.Task List.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" /** Type of task to add */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" private String taskType;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" /** The other information required to instantiate a task.Task */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" private String[] args;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new Add command.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" * @param taskType Type of task to add.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" * @param args Additional information required for different tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" public AddCommand(String taskType, String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" this.args \u003d args;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" public void execute(TaskList tasks, Ui ui, Storage store) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" String action \u003d tasks.addTask(taskType, args);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" ui.respondUser(action);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" };","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":35}},{"path":"src/main/java/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" * command.Command to end the Chat Bot. Saves user input into file.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" public void execute(TaskList tasks, Ui ui, Storage store) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" store.writeFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" ui.showWritingError();","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" };","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":24}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" * Stores information of the action to be executed.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" * Executes the command given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" * @param tasks task.Task list storing user task.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" * @param ui The duke.Ui handling user interactions.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" * @param store The store that handles file operations.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage store) throws DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" * Returns if Chat bot should continue after commands.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" * @return Boolean value representing if Chat Bot should end.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":28}},{"path":"src/main/java/command/EditCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" * command.Command to edit a task in the task.Task List.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" /** The changes to the task */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" private String editType;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" /** The task to be changed */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" private int ind;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new Edit command.Command. Can mark, unmark task as done or","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" * delete a task.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" * @param editType The edit command.","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" * @param ind The task to be changed.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" public EditCommand(String editType, int ind) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" this.editType \u003d editType;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" this.ind \u003d ind;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" public void execute(TaskList tasks, Ui ui, Storage store) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" String action \u003d tasks.editTask(editType, ind);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" ui.respondUser(action);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" };","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":37}},{"path":"src/main/java/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":" * command.Command to List all the task in duke.TaskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" public void execute(TaskList tasks, Ui ui, Storage store) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" ui.respondUser(\"Here are the tasks in your list:\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" tasks.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" };","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":19}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":" * ip Project duke.Duke Chat bot","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * @author Aaron Tay","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" * @since 2023-08-24","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"import command.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"import exception.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" /**Reads and writes task data into file*/","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" /**List of tasks input by user or loaded from file*/","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" /**Handles user interactions*/","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a duke.Duke object with the specified file path.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" * @param filePath The path where the ChatBot loads data from.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" * Controls the flow of events of the ChatBot. When active, ChatBot will get user input","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" * and execute the given commands.","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" ui.startBot();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" while(!isExit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" String fullCommand \u003d ui.getUserInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":" } finally {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":" ui.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Kb-Tay"},"content":" ui.endBot();","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Kb-Tay"},"content":" * The main entry point for the duke.Duke ChatBot application.","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Kb-Tay"},"content":" * Initialise an instance of duke.Duke with the specified file path","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Kb-Tay"},"content":" * and starts the duke.Duke application.","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Kb-Tay"},"content":" * @param args command.Command-line arguments provided when running the application (not used).","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Kb-Tay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Kb-Tay"},"content":" new Duke(\"./src/main/data/duke.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Kb-Tay":70,"-":2}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import command.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import exception.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import exception.InvalidCommandException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import exception.InvalidIndexException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" * Parses user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" public static final Pattern BASIC_COMMAND \u003d Pattern.compile(\"(?\u003ccommand\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" public static final String isoDatePattern \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{2}:\\\\d{2}\";","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" public static final Pattern DEADLINE_FORMAT \u003d Pattern.compile(","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" \"(?\u003cdeadline\u003e[^\\\"]+) /by (\" + isoDatePattern + \")\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" public static final Pattern EVENT_FORMAT \u003d Pattern.compile(","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" \"(?\u003cdeadline\u003e[^\\\"]+) /from (\" + isoDatePattern + \")\"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" + \" /to (\" + isoDatePattern + \")\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" * Parses user input and returns a command.Command. The command.Command can then be executed","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" * to respond to the user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" * @return A command.Command to be executed.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" * @throws DukeException If user input is invalid, Duke exception will be thrown.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" public static Command parse(String input) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" final Matcher matcher \u003d BASIC_COMMAND.matcher(input.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" if(!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Invalid command.Command\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" final String command \u003d matcher.group(\"command\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" final String argument \u003d matcher.group(\"arguments\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" final boolean validIndex \u003d argument.matches(\"-?\\\\d+\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" switch(command) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" case \"bye\":","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" case \"list\":","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":" if (validIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":" return new EditCommand(\"mark\", Integer.parseInt(argument));","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Please input an integer to identify task\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Kb-Tay"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Kb-Tay"},"content":" if (validIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Kb-Tay"},"content":" return new EditCommand(\"unmark\", Integer.parseInt(argument));","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Please input an integer to identify task\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Kb-Tay"},"content":" case \"delete\":","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Kb-Tay"},"content":" if (validIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Kb-Tay"},"content":" return new EditCommand(\"delete\", Integer.parseInt(argument));","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Please input an integer to identify task\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Kb-Tay"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Kb-Tay"},"content":" if (argument.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"ToDo description cannot be empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Kb-Tay"},"content":" return new AddCommand(\"todo\", new String[]{argument});","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Kb-Tay"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Kb-Tay"},"content":" Matcher deadlineFormat \u003d DEADLINE_FORMAT.matcher(argument);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Kb-Tay"},"content":" if (argument.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Deadline description cannot be empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Kb-Tay"},"content":" if (deadlineFormat.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Kb-Tay"},"content":" String desc \u003d deadlineFormat.group(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Kb-Tay"},"content":" LocalDateTime d \u003d parseDateTime(deadlineFormat.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Kb-Tay"},"content":" String byDate \u003d reformatDateTime(d);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Kb-Tay"},"content":" return new AddCommand(\"deadline\", new String[]{desc, byDate});","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Invalid deadline command. \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Kb-Tay"},"content":" \"Please include /by date in this format: yyyy-mm-dd HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"Kb-Tay"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Kb-Tay"},"content":" Matcher eventFormat \u003d EVENT_FORMAT.matcher(argument);","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Kb-Tay"},"content":" if (argument.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Event description cannot be empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Kb-Tay"},"content":" if (eventFormat.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Kb-Tay"},"content":" String desc \u003d eventFormat.group(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Kb-Tay"},"content":" LocalDateTime from \u003d parseDateTime(eventFormat.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Kb-Tay"},"content":" LocalDateTime to \u003d parseDateTime(eventFormat.group(3));","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Kb-Tay"},"content":" if (from.isAfter(to)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"/from date should be before /to date given\");","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Kb-Tay"},"content":" String fromDate \u003d reformatDateTime(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"Kb-Tay"},"content":" String toDate \u003d reformatDateTime(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"Kb-Tay"},"content":" return new AddCommand(\"event\", new String[]{desc, fromDate, toDate});","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Invalid event command. \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"Kb-Tay"},"content":" \"Please include /from and /to dates in this format: yyyy-mm-dd HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"Kb-Tay"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Unknown/Invalid command given\");","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"Kb-Tay"},"content":" * Return the string representing the dateTime input in MMM d yyyy h.mma format.","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"Kb-Tay"},"content":" * @param input The dateTime string input from the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"Kb-Tay"},"content":" * @return The string of the formatted DateTime input.","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"Kb-Tay"},"content":" public static String reformatDateTime(LocalDateTime input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"Kb-Tay"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h.mma\", Locale.ENGLISH);","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"Kb-Tay"},"content":" return input.format(formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"Kb-Tay"},"content":" public static LocalDateTime parseDateTime(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"Kb-Tay"},"content":" String[] dateTime \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"Kb-Tay"},"content":" String dateTimeFormat \u003d dateTime[0] + \"T\" + dateTime[1] + \":00\";","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"Kb-Tay"},"content":" return LocalDateTime.parse(dateTimeFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":148}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import task.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import task.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import task.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" * Loads and saves data into files.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" public final String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a duke.Storage that loads and saves ChatBot data into files","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" * @param filePath The file path to read and write from.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" * Saves data input from user into file. User input when using","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" * Chat Bot will be written into the file specified.","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" * @param tasks The task.Task List to be written into file.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" * @throws IOException If an I/O error occurs while writing to the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" public void writeFile(TaskList tasks) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" fw.write(tasks.toFileString());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" * Loads data from the previously saved file. Previous user input written in the file","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" * will be processed so user can view and make changes to the data using the Chat Bot.","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" * @return task.Task List that was saved by user.","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" * @throws IOException If an I/O error occurs while reading the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":" public ArrayList\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":" if (f.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Kb-Tay"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Kb-Tay"},"content":" addFileTask(taskList, s.nextLine());","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Kb-Tay"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Kb-Tay"},"content":" return taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Kb-Tay"},"content":" * Process text from the file to be used by Chat Bot. Process data stored in the","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Kb-Tay"},"content":" * txt file and adds the respective tasks to the duke.TaskList object.","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Kb-Tay"},"content":" * @param taskList The array list of task stored by files.","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Kb-Tay"},"content":" * @param input The text input from the file being read.","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Kb-Tay"},"content":" private void addFileTask(ArrayList\u003cTask\u003e taskList, String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Kb-Tay"},"content":" String[] task \u003d input.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Kb-Tay"},"content":" String taskName \u003d task[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Kb-Tay"},"content":" String isMarked \u003d task[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Kb-Tay"},"content":" String taskDesc \u003d task[2].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Kb-Tay"},"content":" switch (taskName) {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Kb-Tay"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Kb-Tay"},"content":" if (isMarked.equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new ToDo(taskDesc, true));","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new ToDo(taskDesc));","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Kb-Tay"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Kb-Tay"},"content":" String taskDate \u003d task[3].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Kb-Tay"},"content":" if (isMarked.equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new Deadline(taskDesc, true, taskDate));","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new Deadline(taskDesc, taskDate));","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Kb-Tay"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Kb-Tay"},"content":" String[] taskEvent \u003d task[3].split(\"-\");","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Kb-Tay"},"content":" if (isMarked.equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new Event(taskDesc, true, taskEvent[0].trim(), taskEvent[1].trim()));","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new Event(taskDesc, taskEvent[0].trim(), taskEvent[1].trim()));","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":110}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import exception.InvalidIndexException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import task.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" * Contains the list of tasks. The tasks stored from the file loaded","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" * and from inputs given by user.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a duke.TaskList with a empty task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a duke.TaskList with data load from the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" * @param taskList The task list stored in the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" String tasks \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" tasks +\u003d (i + 1) + \".\" + taskList.get(i).toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" if (i \u003c taskList.size() - 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" tasks +\u003d \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" * Returns a string of tasks to be written into the file. Formats the data stored in duke.TaskList","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" * to be written into file.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":" * @return The string representing duke.TaskList to be written into file.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":" String tasks \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":" tasks +\u003d taskList.get(i).fileString();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Kb-Tay"},"content":" if (i \u003c taskList.size() - 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Kb-Tay"},"content":" tasks +\u003d \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Kb-Tay"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Kb-Tay"},"content":" * Adds a new task into duke.TaskList. The task can either be a task.ToDo,","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Kb-Tay"},"content":" * task.Deadline or task.Event.","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Kb-Tay"},"content":" * @param taskType The type of task to add.","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Kb-Tay"},"content":" * @param args Additional information for task to be instantiated.","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Kb-Tay"},"content":" * @return A string description of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Kb-Tay"},"content":" public String addTask(String taskType, String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Kb-Tay"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Kb-Tay"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new ToDo(args[0]));","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Kb-Tay"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new Deadline(args[0], args[1]));","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Kb-Tay"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new Event(args[0], args[1], args[2]));","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Kb-Tay"},"content":" return \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Kb-Tay"},"content":" taskList.get(taskList.size() - 1).toString() +","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Kb-Tay"},"content":" \"\\nNow you have \" + (taskList.size()) + \" tasks in the list.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"Kb-Tay"},"content":" * Edits a task in the duke.TaskList. task.Task can be marked, unmarked as done or deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Kb-Tay"},"content":" * @param taskType The type of edits to be made.","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Kb-Tay"},"content":" * @param ind The task to edit.","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Kb-Tay"},"content":" * @return The string description of the edit being made.","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Kb-Tay"},"content":" public String editTask(String taskType, int ind) throws InvalidIndexException {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Kb-Tay"},"content":" if (!isValidIndex(ind)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"Kb-Tay"},"content":" String editDesc \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Kb-Tay"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"Kb-Tay"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"Kb-Tay"},"content":" taskList.get(ind - 1).markTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"Kb-Tay"},"content":" editDesc +\u003d \"Nice! I\u0027ve marked this task as done:\\n\" + taskList.get(ind - 1).toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"Kb-Tay"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"Kb-Tay"},"content":" taskList.get(ind - 1).unmarkTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"Kb-Tay"},"content":" editDesc +\u003d \"OK, I\u0027ve marked this task as not done yet:\\n\" + taskList.get(ind - 1).toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"Kb-Tay"},"content":" case \"delete\":","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"Kb-Tay"},"content":" editDesc +\u003d \"Noted. I\u0027ve removed this task:\\n\" + taskList.get(ind - 1).toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"Kb-Tay"},"content":" taskList.remove(ind - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"Kb-Tay"},"content":" editDesc +\u003d \"\\nNow you have \" + taskList.size() + \" tasks in the list.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"Kb-Tay"},"content":" return editDesc;","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"Kb-Tay"},"content":" public boolean isValidIndex(int ind) {","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"Kb-Tay"},"content":" if (ind \u003c\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"Kb-Tay"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"Kb-Tay"},"content":" if (ind \u003e taskList.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"Kb-Tay"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"Kb-Tay"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":139}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import exception.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" * Handles user interaction with Chat Bot.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" private static final String NAME \u003d \"Obi-wan Kenobi\";","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" private static final String DIVIDER \u003d \"_____________________________________\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" private final Scanner in;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" private final PrintStream out;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a duke.Ui object. duke.Ui object will handle user input and prints","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" * information to the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" this.in \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" this.out \u003d System.out;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" * Generates and prints welcome message when Chat Bot is started.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" public void startBot() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" System.out.println(\"Hello There! I am \" + NAME);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" * Generates and prints closing message when Chat Bot is stopped.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" public void endBot() {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" System.out.println(\"Bye. May the force be with you!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" * Prints the response to the user\u0027s request. Prints a description of the","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":" * action being executed by the user\u0027s command.","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" * @param response The description of the command executed.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":" public void respondUser(String response) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" out.println(response);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":" * Gets user\u0027s input with a Scanner object.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Kb-Tay"},"content":" public String getUserInput() {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Kb-Tay"},"content":" return in.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Kb-Tay"},"content":" * Prints the error messages to the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Kb-Tay"},"content":" * @param e If user inputs invalid commands to the Chat Bot.","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Kb-Tay"},"content":" public void showErrorMessage(DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Kb-Tay"},"content":" out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Kb-Tay"},"content":" * Prints a divider between each user\u0027s commands.","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Kb-Tay"},"content":" public void showLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Kb-Tay"},"content":" out.println(DIVIDER);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Kb-Tay"},"content":" * Prints error message when file path is not found.","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Kb-Tay"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Kb-Tay"},"content":" out.println(\"Invalid file path given\");","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Kb-Tay"},"content":" * Print error message when writing to file.","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Kb-Tay"},"content":" public void showWritingError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Kb-Tay"},"content":" out.println(\"Unable to write to file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":90}},{"path":"src/main/java/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package exception;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * A custom exception class to represent the exception thrown by the duke.Duke Chatbot.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new duke.Duke Exception with a specified error message.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" * @param message The error message.","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" DukeException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" super(message);","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Kb-Tay":16}},{"path":"src/main/java/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package exception;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * Custom Exception class that extends exception.DukeException. It is thrown when the user input command to","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" * the chatbot is invalid.","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" * Constructs new exception.InvalidCommandException with specified error messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" * @param message The message of the invalid command given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":17}},{"path":"src/main/java/exception/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package exception;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * Custom Exception class that extends exception.DukeException. It is thrown when the user input references an","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" * invalid index in the task.Task List.","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"public class InvalidIndexException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" * Constructs new exception.InvalidIndexException with specified error messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" public InvalidIndexException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" super(\"Index given out of task list range!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":16}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * A deadline class extends the task class. A deadline task represents a task that has to be","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" * completed by a certain date.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" protected String by;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a deadline task with specified name","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" * @param description The name of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" * @param by The date the task needs to be completed.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" public Deadline(String description, boolean isDone, String by) {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" * Returns the description of the deadline task with the specified date that task needs to be completed.","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" * @return The string description of the deadline.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" return \"D\" + super.fileString() + \" | \" + this.by;","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Kb-Tay":40}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * An event class extends the task class. It represents a task with that needs to be completed within","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" * a certain time period.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" protected String from;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" protected String to;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new task.Event with the specified time period and description.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" * @param description The name of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" * @param from The start date of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" * @param to The end date of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" public Event(String description, boolean isDone, String from, String to) {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" * Returns the description of the task with the specified time period.","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" * @return A string description of the event.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" return \"E\" + super.fileString() + \" | \" + this.from + \"-\" + this.to;","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Kb-Tay":46}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * The task.Task Class is an abstract class that serves as a base class for various types of task the user can create.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":" protected String name;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new task.Task with the specified name. By default,","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" * the task is marked as not done.","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" * @param name The name of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" public Task(String name){","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" public Task(String name, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" * Returns a string representing if the task is marked as done or not.","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" * @return The string message if task is done.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" return (this.isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" public void markTask(){","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" * Returns the string description of the current task. Description includes if task is done and the task name.","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":" return this.getStatusIcon() + \" \" + this.name;","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Kb-Tay"},"content":" * Returns string of task to store in file. Description includes","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Kb-Tay"},"content":" * task type, date, if task is done and the task name.","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Kb-Tay"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"Kb-Tay"},"content":" String done \u003d isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"Kb-Tay"},"content":" return \" | \" + done + \" | \" + this.name;","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Kb-Tay":64}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * A task.ToDo class extends the task class. A Todo task is a task without a specified date to be completed.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new Todo task.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" * @param description The name of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" * Returns a description of the Todo task.","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" * @return A string description of the task.ToDo.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" return \"T\" + super.fileString();","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Kb-Tay":35}},{"path":"src/test/java/seedu/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package seedu.duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import exception.InvalidCommandException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" public void parse_InvalidEditCommandIndex_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" InvalidCommandException test \u003d assertThrows(InvalidCommandException.class, () -\u003e Parser.parse(\"mark hi\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" assertEquals(\"Please input an integer to identify task\", test.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" public void parse_InvalidTaskCommand_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" assertThrows(InvalidCommandException.class, () -\u003e","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" Parser.parse(\"deadline \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" assertThrows(InvalidCommandException.class, () -\u003e","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" Parser.parse(\"deadline /\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" assertThrows(InvalidCommandException.class, () -\u003e","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" Parser.parse(\"deadline /by 2022-05-12 24:10\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" assertThrows(InvalidCommandException.class, () -\u003e","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" Parser.parse(\"event /from 2022-5-12 23:00 /to \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" public void testDateTimeReformat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" assertEquals(\"Jan 1 2023 11.35PM\",","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" Parser.reformatDateTime(","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" Parser.parseDateTime(\"2023-01-01 23:35\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" public void parse_InvalidEventDate_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" InvalidCommandException thrown \u003d assertThrows(InvalidCommandException.class, () -\u003e","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" Parser.parse(\"event party /from 2022-01-01 23:00 /to 2021-01-01 23:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" assertEquals(\"/from date should be before /to date given\", thrown.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kb-Tay":48}},{"path":"src/test/java/seedu/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package seedu.duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import exception.InvalidIndexException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"import task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"import task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"import task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" public void editTask_InvalidIndex_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" ArrayList\u003cTask\u003e taskLists \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" taskLists.add(new ToDo(\"return book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" TaskList tasks \u003d new TaskList(taskLists);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" assertThrows(InvalidIndexException.class, () -\u003e tasks.editTask(\"mark\", -1));","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" assertThrows(InvalidIndexException.class, () -\u003e tasks.editTask(\"mark\", 100));","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" public void testFileStringFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" ArrayList\u003cTask\u003e taskLists \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" ToDo task1 \u003d new ToDo(\"return book\");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" task1.markTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" taskLists.add(task1);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" taskLists.add(new Deadline(\"buy supplies\", \"Jan 5 23 7.30PM\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" taskLists.add(new Event(\"host party\", \"Jan 5 23 7.30PM\", \"Jan 6 23 1.00AM\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" TaskList tasks \u003d new TaskList(taskLists);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" assertEquals(\"T | 1 | return book\\n\" + \"D | 0 | buy supplies | Jan 5 23 7.30PM\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":" + \"E | 0 | host party | Jan 5 23 7.30PM-Jan 6 23 1.00AM\", tasks.toFileString());","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kb-Tay":43}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Kb-Tay":6}},{"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":"Kb-Tay"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"Kb-Tay":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Kb-Tay":2,"-":22}},{"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":"Kb-Tay"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"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":"Kb-Tay"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Kb-Tay":5,"-":43}},{"path":"src/main/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"D | 0 | return book | June 6th","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"E | 1 | project meeting | Aug 6th 2pm-4pm","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"T | 0 | join sports club","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"D | 0 | eat dinner | Aug 30 2023 6.00PM","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"T | 0 | eat meat","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kb-Tay":5}},{"path":"src/main/java/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" * Command that adds a task to the task.Task List.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" /** Type of task to add */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" private final String taskType;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" /** The other information required to instantiate a task.Task */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" private final String[] args;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new Add command.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" * @param taskType Type of task to add.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" * @param args Additional information required for different tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" public AddCommand(String taskType, String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" this.args \u003d args;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" public void execute(TaskList tasks, Ui ui, Storage store) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" String action \u003d tasks.addTask(taskType, args);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" ui.respondUser(action);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":37}},{"path":"src/main/java/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" * Command to end the Chat Bot. Saves user input into file.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" public void execute(TaskList tasks, Ui ui, Storage store) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" store.writeFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" ui.showWritingError();","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":26}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" * Stores information of the action to be executed.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" * Executes the command given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" * @param tasks task.Task list storing user task.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" * @param ui The duke.Ui handling user interactions.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" * @param store The store that handles file operations.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage store) throws DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" * Returns if Chat bot should continue after commands.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" * @return Boolean value representing if Chat Bot should end.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":29}},{"path":"src/main/java/command/EditCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" * Command to edit a task in the task.Task List.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" /** The changes to the task */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" private final String editType;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" /** The task to be changed */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" private final int ind;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new Edit command.Command. Can mark, unmark task as done or","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" * delete a task.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" * @param editType The edit command.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" * @param ind The task to be changed.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" public EditCommand(String editType, int ind) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" this.editType \u003d editType;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" this.ind \u003d ind;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" public void execute(TaskList tasks, Ui ui, Storage store) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" String action \u003d tasks.editTask(editType, ind);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" ui.respondUser(action);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":38}},{"path":"src/main/java/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" * Command to find task matching keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" private final String keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" public void execute(TaskList tasks, Ui ui, Storage store) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" String input \u003d keyword.toLowerCase();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" String action \u003d tasks.findMatchingTasks(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" if (action.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" ui.respondUser(\"No task matching keyword found!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" ui.respondUser(\"Here are the matching tasks in your list:\\n\" + action);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Kb-Tay":34}},{"path":"src/main/java/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" * Command to List all the task in duke.TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" public void execute(TaskList tasks, Ui ui, Storage store) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" ui.respondUser(\"Here are the tasks in your list:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" + tasks.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":21}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":" * ip Project duke.Duke Chat bot","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * @author Aaron Tay","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" * @since 2023-08-24","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"import command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"import exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" * Duke class instantiates a new Chat Bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" /** Reads and writes task data into file */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" /** List of tasks input by user or loaded from file */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" /** Handles user interactions */","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a duke.Duke object with the specified file path.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" * @param filePath The path where the ChatBot loads data from.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" * Controls the flow of events of the ChatBot. When active, ChatBot will get user input","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" * and execute the given commands.","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" ui.startBot();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":" String fullCommand \u003d ui.getUserInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Kb-Tay"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Kb-Tay"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Kb-Tay"},"content":" } finally {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Kb-Tay"},"content":" ui.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Kb-Tay"},"content":" ui.endBot();","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Kb-Tay"},"content":" * The main entry point for the duke.Duke ChatBot application.","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Kb-Tay"},"content":" * Initialise an instance of duke.Duke with the specified file path","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Kb-Tay"},"content":" * and starts the duke.Duke application.","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Kb-Tay"},"content":" * @param args command.Command-line arguments provided when running the application (not used).","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Kb-Tay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Kb-Tay"},"content":" new Duke(\"./src/main/data/duke.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Kb-Tay":75,"-":2}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"import command.AddCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"import command.ByeCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"import command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"import command.EditCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":"import command.FindCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":"import command.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":"import exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"import exception.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" * Parses user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" public static final Pattern BASIC_COMMAND \u003d Pattern.compile(\"(?\u003ccommand\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" public static final String DATE_PATTERN \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{2}:\\\\d{2}\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" public static final Pattern DEADLINE_FORMAT \u003d Pattern.compile(","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" \"(?\u003cdeadline\u003e[^\\\"]+) /by (\" + DATE_PATTERN + \")\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" public static final Pattern EVENT_FORMAT \u003d Pattern.compile(","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" \"(?\u003cdeadline\u003e[^\\\"]+) /from (\" + DATE_PATTERN + \")\"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" + \" /to (\" + DATE_PATTERN + \")\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" * Parses user input and returns a command.Command. The command.Command can then be executed","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" * to respond to the user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" * @return A command.Command to be executed.","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" * @throws DukeException If user input is invalid, Duke exception will be thrown.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" public static Command parse(String input) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" final Matcher matcher \u003d BASIC_COMMAND.matcher(input.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Invalid command.Command\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" final String command \u003d matcher.group(\"command\");","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" final String argument \u003d matcher.group(\"arguments\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" final boolean validIndex \u003d argument.matches(\"-?\\\\d+\");","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" switch(command) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":" case \"bye\":","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":" case \"list\":","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Kb-Tay"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Kb-Tay"},"content":" if (validIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Kb-Tay"},"content":" return new EditCommand(\"mark\", Integer.parseInt(argument));","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Please input an integer to identify task\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Kb-Tay"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Kb-Tay"},"content":" if (validIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Kb-Tay"},"content":" return new EditCommand(\"unmark\", Integer.parseInt(argument));","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Please input an integer to identify task\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Kb-Tay"},"content":" case \"delete\":","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Kb-Tay"},"content":" if (validIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Kb-Tay"},"content":" return new EditCommand(\"delete\", Integer.parseInt(argument));","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Please input an integer to identify task\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Kb-Tay"},"content":" case \"find\":","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Kb-Tay"},"content":" if (argument.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Please enter keyword to find task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Kb-Tay"},"content":" return new FindCommand(argument);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Kb-Tay"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Kb-Tay"},"content":" if (argument.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"ToDo description cannot be empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Kb-Tay"},"content":" return new AddCommand(\"todo\", new String[]{argument});","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"Kb-Tay"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Kb-Tay"},"content":" Matcher deadlineFormat \u003d DEADLINE_FORMAT.matcher(argument);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Kb-Tay"},"content":" if (argument.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Deadline description cannot be empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"Kb-Tay"},"content":" if (deadlineFormat.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Kb-Tay"},"content":" String desc \u003d deadlineFormat.group(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Kb-Tay"},"content":" LocalDateTime d \u003d parseDateTime(deadlineFormat.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Kb-Tay"},"content":" String byDate \u003d reformatDateTime(d);","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"Kb-Tay"},"content":" return new AddCommand(\"deadline\", new String[]{desc, byDate});","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Invalid deadline command. \"","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"Kb-Tay"},"content":" + \"Please include /by date in this format: yyyy-mm-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"Kb-Tay"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"Kb-Tay"},"content":" Matcher eventFormat \u003d EVENT_FORMAT.matcher(argument);","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"Kb-Tay"},"content":" if (argument.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Event description cannot be empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"Kb-Tay"},"content":" if (eventFormat.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"Kb-Tay"},"content":" String desc \u003d eventFormat.group(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"Kb-Tay"},"content":" LocalDateTime from \u003d parseDateTime(eventFormat.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"Kb-Tay"},"content":" LocalDateTime to \u003d parseDateTime(eventFormat.group(3));","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"Kb-Tay"},"content":" if (from.isAfter(to)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"/from date should be before /to date given\");","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"Kb-Tay"},"content":" String fromDate \u003d reformatDateTime(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"Kb-Tay"},"content":" String toDate \u003d reformatDateTime(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"Kb-Tay"},"content":" return new AddCommand(\"event\", new String[]{desc, fromDate, toDate});","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Invalid event command. \"","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Kb-Tay"},"content":" + \"Please include /from and /to dates in this format: yyyy-mm-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"Kb-Tay"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidCommandException(\"Unknown/Invalid command given\");","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"Kb-Tay"},"content":" * Return the string representing the dateTime input in MMM d yyyy h.mma format.","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"Kb-Tay"},"content":" * @param input The dateTime string input from the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"Kb-Tay"},"content":" * @return The string of the formatted DateTime input.","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"Kb-Tay"},"content":" public static String reformatDateTime(LocalDateTime input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"Kb-Tay"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h.mma\", Locale.ENGLISH);","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"Kb-Tay"},"content":" return input.format(formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"Kb-Tay"},"content":" * Returns a LocalDateTime given by the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"Kb-Tay"},"content":" * Formats user input to be parsed as a LocalDateTime object.","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"Kb-Tay"},"content":" * @param input The user date input.","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"Kb-Tay"},"content":" * @return The LocaleDateTime object.","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"Kb-Tay"},"content":" public static LocalDateTime parseDateTime(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"Kb-Tay"},"content":" String[] dateTime \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"Kb-Tay"},"content":" String dateTimeFormat \u003d dateTime[0] + \"T\" + dateTime[1] + \":00\";","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"Kb-Tay"},"content":" return LocalDateTime.parse(dateTimeFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":165}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"import task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" * Loads and saves data into files.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" public final String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a duke.Storage that loads and saves ChatBot data into files","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" * @param filePath The file path to read and write from.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" * Saves data input from user into file. User input when using","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" * Chat Bot will be written into the file specified.","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" * @param tasks The task.Task List to be written into file.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" * @throws IOException If an I/O error occurs while writing to the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" public void writeFile(TaskList tasks) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" fw.write(tasks.toFileString());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" * Loads data from the previously saved file. Previous user input written in the file","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" * will be processed so user can view and make changes to the data using the Chat Bot.","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" * @return task.Task List that was saved by user.","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" * @throws IOException If an I/O error occurs while reading the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":" public ArrayList\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":" if (f.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Kb-Tay"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Kb-Tay"},"content":" addFileTask(taskList, s.nextLine());","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Kb-Tay"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Kb-Tay"},"content":" return taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Kb-Tay"},"content":" * Process text from the file to be used by Chat Bot. Process data stored in the","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Kb-Tay"},"content":" * txt file and adds the respective tasks to the duke.TaskList object.","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Kb-Tay"},"content":" * @param taskList The array list of task stored by files.","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Kb-Tay"},"content":" * @param input The text input from the file being read.","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Kb-Tay"},"content":" private void addFileTask(ArrayList\u003cTask\u003e taskList, String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Kb-Tay"},"content":" String[] task \u003d input.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Kb-Tay"},"content":" String taskName \u003d task[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Kb-Tay"},"content":" String isMarked \u003d task[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Kb-Tay"},"content":" String taskDesc \u003d task[2].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Kb-Tay"},"content":" switch (taskName) {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Kb-Tay"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Kb-Tay"},"content":" if (isMarked.equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new ToDo(taskDesc, true));","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new ToDo(taskDesc));","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Kb-Tay"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Kb-Tay"},"content":" String taskDate \u003d task[3].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Kb-Tay"},"content":" if (isMarked.equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new Deadline(taskDesc, true, taskDate));","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new Deadline(taskDesc, taskDate));","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Kb-Tay"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Kb-Tay"},"content":" String[] taskEvent \u003d task[3].split(\"-\");","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Kb-Tay"},"content":" if (isMarked.equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new Event(taskDesc, true, taskEvent[0].trim(), taskEvent[1].trim()));","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"Kb-Tay"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new Event(taskDesc, taskEvent[0].trim(), taskEvent[1].trim()));","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"Kb-Tay"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":112}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"import exception.InvalidIndexException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"import task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" * Contains the list of tasks. The tasks stored from the file loaded","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" * and from inputs given by user.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a duke.TaskList with a empty task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a duke.TaskList with data load from the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" * @param taskList The task list stored in the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" String tasks \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" tasks +\u003d (i + 1) + \".\" + taskList.get(i).toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" if (i \u003c taskList.size() - 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":" tasks +\u003d \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":" * Returns a string of tasks to be written into the file. Formats the data stored in duke.TaskList","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" * to be written into file.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":" * @return The string representing duke.TaskList to be written into file.","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":" String tasks \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Kb-Tay"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Kb-Tay"},"content":" tasks +\u003d taskList.get(i).fileString();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Kb-Tay"},"content":" if (i \u003c taskList.size() - 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Kb-Tay"},"content":" tasks +\u003d \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Kb-Tay"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Kb-Tay"},"content":" * Adds a new task into duke.TaskList. The task can either be a task.ToDo,","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Kb-Tay"},"content":" * task.Deadline or task.Event.","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Kb-Tay"},"content":" * @param taskType The type of task to add.","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Kb-Tay"},"content":" * @param args Additional information for task to be instantiated.","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Kb-Tay"},"content":" * @return A string description of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Kb-Tay"},"content":" public String addTask(String taskType, String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Kb-Tay"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Kb-Tay"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new ToDo(args[0]));","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Kb-Tay"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new Deadline(args[0], args[1]));","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Kb-Tay"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Kb-Tay"},"content":" taskList.add(new Event(args[0], args[1], args[2]));","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Kb-Tay"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Kb-Tay"},"content":" return \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Kb-Tay"},"content":" + taskList.get(taskList.size() - 1).toString()","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Kb-Tay"},"content":" + \"\\nNow you have \" + (taskList.size()) + \" tasks in the list.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Kb-Tay"},"content":" * Edits a task in the duke.TaskList. task.Task can be marked, unmarked as done or deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Kb-Tay"},"content":" * @param taskType The type of edits to be made.","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"Kb-Tay"},"content":" * @param ind The task to edit.","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Kb-Tay"},"content":" * @return The string description of the edit being made.","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"Kb-Tay"},"content":" public String editTask(String taskType, int ind) throws InvalidIndexException {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Kb-Tay"},"content":" if (!isValidIndex(ind)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Kb-Tay"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"Kb-Tay"},"content":" String editDesc \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"Kb-Tay"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"Kb-Tay"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"Kb-Tay"},"content":" taskList.get(ind - 1).markTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"Kb-Tay"},"content":" editDesc +\u003d \"Nice! I\u0027ve marked this task as done:\\n\" + taskList.get(ind - 1).toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"Kb-Tay"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"Kb-Tay"},"content":" taskList.get(ind - 1).unmarkTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"Kb-Tay"},"content":" editDesc +\u003d \"OK, I\u0027ve marked this task as not done yet:\\n\" + taskList.get(ind - 1).toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"Kb-Tay"},"content":" case \"delete\":","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"Kb-Tay"},"content":" editDesc +\u003d \"Noted. I\u0027ve removed this task:\\n\" + taskList.get(ind - 1).toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"Kb-Tay"},"content":" taskList.remove(ind - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"Kb-Tay"},"content":" editDesc +\u003d \"\\nNow you have \" + taskList.size() + \" tasks in the list.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"Kb-Tay"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"Kb-Tay"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"Kb-Tay"},"content":" return editDesc;","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"Kb-Tay"},"content":" * Checks if the index given is out of taskList range.","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"Kb-Tay"},"content":" * @param ind The input index.","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"Kb-Tay"},"content":" * @return If the index is within range.","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"Kb-Tay"},"content":" public boolean isValidIndex(int ind) {","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"Kb-Tay"},"content":" if (ind \u003c\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"Kb-Tay"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"Kb-Tay"},"content":" if (ind \u003e taskList.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"Kb-Tay"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"Kb-Tay"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"Kb-Tay"},"content":" * Returns string of tasks matching user\u0027s search. Finds list of task description","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"Kb-Tay"},"content":" * matching user\u0027s input keyword. Returns empty string if no matching task found.","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"Kb-Tay"},"content":" * @param keyword The user input keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"Kb-Tay"},"content":" * @return The string of tasks description matching keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"Kb-Tay"},"content":" public String findMatchingTasks(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"Kb-Tay"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"Kb-Tay"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"Kb-Tay"},"content":" String desc \u003d taskList.get(i).getName().toLowerCase();","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"Kb-Tay"},"content":" if (desc.contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"Kb-Tay"},"content":" matchingTasks.add(taskList.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"Kb-Tay"},"content":" String action \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"Kb-Tay"},"content":" for (int i \u003d 0; i \u003c matchingTasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"Kb-Tay"},"content":" action +\u003d (i + 1) + \".\" + matchingTasks.get(i).toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"Kb-Tay"},"content":" if (i \u003c matchingTasks.size() - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"Kb-Tay"},"content":" action +\u003d \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"Kb-Tay"},"content":" return action;","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":181}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" * Handles user interaction with Chat Bot.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" private static final String NAME \u003d \"Obi-wan Kenobi\";","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" private static final String DIVIDER \u003d \"_____________________________________\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" private final Scanner in;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" private final PrintStream out;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a duke.Ui object. duke.Ui object will handle user input and prints","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" * information to the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" this.in \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" this.out \u003d System.out;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" * Generates and prints welcome message when Chat Bot is started.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" public void startBot() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" System.out.println(\"Hello There! I am \" + NAME);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" * Generates and prints closing message when Chat Bot is stopped.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" public void endBot() {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" System.out.println(\"Bye. May the force be with you!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" * Prints the response to the user\u0027s request. Prints a description of the","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":" * action being executed by the user\u0027s command.","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" * @param response The description of the command executed.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":" public void respondUser(String response) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" out.println(response);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":" * Gets user\u0027s input with a Scanner object.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Kb-Tay"},"content":" public String getUserInput() {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Kb-Tay"},"content":" return in.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Kb-Tay"},"content":" * Prints the error messages to the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Kb-Tay"},"content":" * @param e If user inputs invalid commands to the Chat Bot.","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Kb-Tay"},"content":" public void showErrorMessage(DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Kb-Tay"},"content":" out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Kb-Tay"},"content":" * Prints a divider between each user\u0027s commands.","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Kb-Tay"},"content":" public void showLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Kb-Tay"},"content":" out.println(DIVIDER);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Kb-Tay"},"content":" * Prints error message when file path is not found.","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Kb-Tay"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Kb-Tay"},"content":" out.println(\"Invalid file path given\");","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Kb-Tay"},"content":" * Print error message when writing to file.","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Kb-Tay"},"content":" public void showWritingError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Kb-Tay"},"content":" out.println(\"Unable to write to file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":90}},{"path":"src/main/java/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package exception;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * A custom exception class to represent the exception thrown by the duke.Duke Chatbot.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new duke.Duke Exception with a specified error message.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" * @param message The error message.","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" DukeException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" super(message);","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Kb-Tay":16}},{"path":"src/main/java/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package exception;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * Custom Exception class that extends exception.DukeException. It is thrown when the user input command to","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" * the chatbot is invalid.","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" * Constructs new exception.InvalidCommandException with specified error messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" * @param message The message of the invalid command given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":17}},{"path":"src/main/java/exception/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package exception;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * Custom Exception class that extends exception.DukeException. It is thrown when the user input references an","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" * invalid index in the task.Task List.","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"public class InvalidIndexException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" * Constructs new exception.InvalidIndexException with specified error messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" public InvalidIndexException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" super(\"Index given out of task list range!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Kb-Tay":16}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * A deadline class extends the task class. A deadline task represents a task that has to be","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" * completed by a certain date.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" protected String by;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a deadline task with specified name.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" * @param description The name of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" * @param by The date the task needs to be completed.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a deadline task with specified name.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" * Deadline constructed can be marked as completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" * @param description The name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" * @param isDone If task is completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" * @param by The date the task needs to be completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" public Deadline(String description, boolean isDone, String by) {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" * Returns the description of the deadline task with the specified date that task needs to be completed.","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" * @return The string description of the deadline.","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" return \"D\" + super.fileString() + \" | \" + this.by;","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Kb-Tay":48}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * An event class extends the task class. It represents a task with that needs to be completed within","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" * a certain time period.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" protected String from;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" protected String to;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new task.Event with the specified time period and description.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" * @param description The name of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" * @param from The start date of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" * @param to The end date of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new Event with the specified time period and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" * Event constructed can be marked as completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" * @param description The name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" * @param isDone If task is completed","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" * @param from The start date of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" * @param to The end date of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" public Event(String description, boolean isDone, String from, String to) {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":" * Returns the description of the task with the specified time period.","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" * @return A string description of the event.","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":" return \"E\" + super.fileString() + \" | \" + this.from + \"-\" + this.to;","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Kb-Tay":55}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * The task.Task Class is an abstract class that serves as a base class for various types of task the user can create.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":" protected String name;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new task.Task with the specified name. By default,","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" * the task is marked as not done.","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" * @param name The name of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new task.Task with the specified name.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" * Task constructed can be marked as completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" * @param name The name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" * @param isDone If task is completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" public Task(String name, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" public String getName() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" return this.name;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" * Returns a string representing if the task is marked as done or not.","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" * @return The string message if task is done.","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" return (this.isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":" public void markTask() {","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"Kb-Tay"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Kb-Tay"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Kb-Tay"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-08-20"},{"lineNumber":57,"author":{"gitId":"Kb-Tay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":58,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":59,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"Kb-Tay"},"content":" * Returns the string description of the current task. Description includes if task is done and the task name.","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Kb-Tay"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"Kb-Tay"},"content":" return this.getStatusIcon() + \" \" + this.name;","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Kb-Tay"},"content":" * Returns string of task to store in file. Description includes","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Kb-Tay"},"content":" * task type, date, if task is done and the task name.","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Kb-Tay"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"Kb-Tay"},"content":" String done \u003d isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"Kb-Tay"},"content":" return \" | \" + done + \" | \" + this.name;","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Kb-Tay":76}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":" * A task.ToDo class extends the task class. A Todo task is a task without a specified date to be completed.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new Todo task.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":" * @param description The name of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" * Constructs a new Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" * Todo constructed can be completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" * @param description The name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" * @param isDone If task is completed","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" * Returns a description of the Todo task.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" * @return A string description of the task.ToDo.","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" public String fileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" return \"T\" + super.fileString();","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Kb-Tay":42}},{"path":"src/test/java/seedu/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package seedu.duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"import exception.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":" public void parse_invalidEditCommandIndex_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":" InvalidCommandException test \u003d assertThrows(InvalidCommandException.class, () -\u003e Parser.parse(\"mark hi\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":" assertEquals(\"Please input an integer to identify task\", test.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" public void parse_invalidTaskCommand_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" assertThrows(InvalidCommandException.class, () -\u003e","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" Parser.parse(\"deadline \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" assertThrows(InvalidCommandException.class, () -\u003e","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":" Parser.parse(\"deadline /\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" assertThrows(InvalidCommandException.class, () -\u003e","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":" Parser.parse(\"deadline /by 2022-05-12 24:10\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" assertThrows(InvalidCommandException.class, () -\u003e","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" Parser.parse(\"event /from 2022-5-12 23:00 /to \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" public void testDateTimeReformat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" assertEquals(\"Jan 1 2023 11.35PM\",","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" Parser.reformatDateTime(","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" Parser.parseDateTime(\"2023-01-01 23:35\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" public void parse_invalidEventDate_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":" InvalidCommandException thrown \u003d assertThrows(InvalidCommandException.class, () -\u003e","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Kb-Tay"},"content":" Parser.parse(\"event party /from 2022-01-01 23:00 /to 2021-01-01 23:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Kb-Tay"},"content":" assertEquals(\"/from date should be before /to date given\", thrown.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kb-Tay":49}},{"path":"src/test/java/seedu/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"package seedu.duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Kb-Tay"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Kb-Tay"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Kb-Tay"},"content":"import exception.InvalidIndexException;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Kb-Tay"},"content":"import task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Kb-Tay"},"content":"import task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Kb-Tay"},"content":"import task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Kb-Tay"},"content":"import task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Kb-Tay"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Kb-Tay"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Kb-Tay"},"content":" public void editTask_invalidIndex_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Kb-Tay"},"content":" ArrayList\u003cTask\u003e taskLists \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Kb-Tay"},"content":" taskLists.add(new ToDo(\"return book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Kb-Tay"},"content":" TaskList tasks \u003d new TaskList(taskLists);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Kb-Tay"},"content":" assertThrows(InvalidIndexException.class, () -\u003e tasks.editTask(\"mark\", -1));","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Kb-Tay"},"content":" assertThrows(InvalidIndexException.class, () -\u003e tasks.editTask(\"mark\", 100));","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Kb-Tay"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Kb-Tay"},"content":" public void testFileStringFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Kb-Tay"},"content":" ArrayList\u003cTask\u003e taskLists \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Kb-Tay"},"content":" ToDo task1 \u003d new ToDo(\"return book\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Kb-Tay"},"content":" task1.markTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Kb-Tay"},"content":" taskLists.add(task1);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Kb-Tay"},"content":" taskLists.add(new Deadline(\"buy supplies\", \"Jan 5 23 7.30PM\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Kb-Tay"},"content":" taskLists.add(new Event(\"host party\", \"Jan 5 23 7.30PM\", \"Jan 6 23 1.00AM\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Kb-Tay"},"content":" TaskList tasks \u003d new TaskList(taskLists);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Kb-Tay"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Kb-Tay"},"content":" assertEquals(\"T | 1 | return book\\n\" + \"D | 0 | buy supplies | Jan 5 23 7.30PM\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Kb-Tay"},"content":" + \"E | 0 | host party | Jan 5 23 7.30PM-Jan 6 23 1.00AM\", tasks.toFileString());","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Kb-Tay"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Kb-Tay"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Kb-Tay":44}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Kb-Tay"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Kb-Tay"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Kb-Tay"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Kb-Tay"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Kb-Tay"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Kb-Tay"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Kb-Tay":6}},{"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":"Kb-Tay"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"Kb-Tay":1,"-":20}}] diff --git a/Kb-Tay_ip_master/commits.json b/Kb-Tay_ip_master/commits.json index 8c655caf..11bf8894 100644 --- a/Kb-Tay_ip_master/commits.json +++ b/Kb-Tay_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Kb-Tay":[{"date":"2023-08-20","commitResults":[{"hash":"ff6bab316cec99c3636f11e7a8ca7ad03cf44e47","isMergeCommit":false,"messageTitle":"Renaming chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"8169de03a3100de43bec063c3e1a47243a6423ed","isMergeCommit":false,"messageTitle":"Add echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"3470757ed176d8d152de2b5809173149e85bd7f6","isMergeCommit":false,"messageTitle":"Add tasklist","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"319d9ef8ced4fd7c934fcb3c2bef19d229f44d7f","isMergeCommit":false,"messageTitle":"Add Task Class, mark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":11}}}]},{"date":"2023-08-21","commitResults":[{"hash":"5f343d062c891a7896c11d8f3b9361240b1114dd","isMergeCommit":false,"messageTitle":"Added tasks subclasses","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":13}}},{"hash":"3ea48d41fdbc127903cd8ac62313cfa1f383193e","isMergeCommit":false,"messageTitle":"Add Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":4,"deletions":4}}},{"hash":"c7d1cdaf67617bbe72379aea60faea7f4f83414e","isMergeCommit":false,"messageTitle":"Error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":31}}}]},{"date":"2023-08-22","commitResults":[{"hash":"30ae6852f44607436ff7eb531487c11c8c88c729","isMergeCommit":false,"messageTitle":"Add delete function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":18}}}]},{"date":"2023-08-24","commitResults":[{"hash":"1b9a8da969f84f3eba25a8db67b929d988488f40","isMergeCommit":false,"messageTitle":"Add javadocs. Update error handling","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":198,"deletions":30}}}]},{"date":"2023-08-28","commitResults":[{"hash":"50a16df1e26d7a8ffa6ca74f5daefece4b05b5a3","isMergeCommit":false,"messageTitle":"Add functionality to read and write tasks into txt file.","messageBody":"The program does not currently save the user input after program is stopped.\n\nTo save user input, add functions to read previously stored task list from txt file. Also add function to write new task list into the txt file.\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":165,"deletions":51}}},{"hash":"c9c488f7c376ccfa1687cad4ea41eb26eb7f815c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"3883e0848558e5f31283b18ab3635d765b0dd23e","isMergeCommit":false,"messageTitle":"Update chatbot to recognise DateTime inputs.","messageBody":"The addTask function accepted any string as a DateTime field previously.\n\nAdd validation and formatting of DateTime inputs.\n","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":3}}},{"hash":"9a6653060bfafa5a1023116918f29422ff7624a0","isMergeCommit":false,"messageTitle":"Clean up addTask function. Add javadocs for functions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":20,"deletions":15}}},{"hash":"1c875128f885a1c98a17012c407553f3a46c4a7b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"a23208e822b3dbacdd9a036d028289f4380d7d43","isMergeCommit":false,"messageTitle":"Update code to follow OOP principles.","messageBody":"Code was previously cluster in the main class and could make improvements in encapsulation.\n\nMultiple classes created to encapsulate user interactions, reading and writing files, understanding user input and the task list.\n\nThis cleans up and improves code quality.\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":654,"deletions":265}}},{"hash":"fca7278b963eba3ec196407ad9be7ae469dbba88","isMergeCommit":false,"messageTitle":"Update javadocs and clean up code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":171,"deletions":247}}},{"hash":"95a48a9c320913ce2401f2bfa3349e5ca45b7706","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"8d7c9a6c5fceeba35ebab3a0102f40c51ecac565","isMergeCommit":false,"messageTitle":"Update classes into separate packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":131,"deletions":84},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-31","commitResults":[{"hash":"3648ccc812764c7fdd226c5b38d52ef7124d6aab","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"748e9f36386cb724fa0ec0e2ef30dfc19abfa882","isMergeCommit":false,"messageTitle":"Add Junit testing for Parse and TaskList class.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":167,"deletions":20}}},{"hash":"aa325b708c9d1e73d3467c06ac78dba993369f5d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Junit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"f44f52456503168439f7de24312ce37fbe309537","isMergeCommit":false,"messageTitle":"Update error message and build.gradle file.","messageBody":"","tags":["v0.1","A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Kb-Tay":{"java":1025,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":11}},"authorContributionVariance":{"Kb-Tay":153712.83},"authorDisplayNameMap":{"Kb-Tay":"CS2103T-F12-1 AARO..BOON"}} +{"authorDailyContributionsMap":{"Kb-Tay":[{"date":"2023-08-20","commitResults":[{"hash":"ff6bab316cec99c3636f11e7a8ca7ad03cf44e47","isMergeCommit":false,"messageTitle":"Renaming chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"8169de03a3100de43bec063c3e1a47243a6423ed","isMergeCommit":false,"messageTitle":"Add echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"3470757ed176d8d152de2b5809173149e85bd7f6","isMergeCommit":false,"messageTitle":"Add tasklist","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"319d9ef8ced4fd7c934fcb3c2bef19d229f44d7f","isMergeCommit":false,"messageTitle":"Add Task Class, mark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":11}}}]},{"date":"2023-08-21","commitResults":[{"hash":"5f343d062c891a7896c11d8f3b9361240b1114dd","isMergeCommit":false,"messageTitle":"Added tasks subclasses","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":13}}},{"hash":"3ea48d41fdbc127903cd8ac62313cfa1f383193e","isMergeCommit":false,"messageTitle":"Add Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":4,"deletions":4}}},{"hash":"c7d1cdaf67617bbe72379aea60faea7f4f83414e","isMergeCommit":false,"messageTitle":"Error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":31}}}]},{"date":"2023-08-22","commitResults":[{"hash":"30ae6852f44607436ff7eb531487c11c8c88c729","isMergeCommit":false,"messageTitle":"Add delete function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":18}}}]},{"date":"2023-08-24","commitResults":[{"hash":"1b9a8da969f84f3eba25a8db67b929d988488f40","isMergeCommit":false,"messageTitle":"Add javadocs. Update error handling","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":198,"deletions":30}}}]},{"date":"2023-08-28","commitResults":[{"hash":"50a16df1e26d7a8ffa6ca74f5daefece4b05b5a3","isMergeCommit":false,"messageTitle":"Add functionality to read and write tasks into txt file.","messageBody":"The program does not currently save the user input after program is stopped.\n\nTo save user input, add functions to read previously stored task list from txt file. Also add function to write new task list into the txt file.\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":165,"deletions":51}}},{"hash":"c9c488f7c376ccfa1687cad4ea41eb26eb7f815c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"3883e0848558e5f31283b18ab3635d765b0dd23e","isMergeCommit":false,"messageTitle":"Update chatbot to recognise DateTime inputs.","messageBody":"The addTask function accepted any string as a DateTime field previously.\n\nAdd validation and formatting of DateTime inputs.\n","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":3}}},{"hash":"9a6653060bfafa5a1023116918f29422ff7624a0","isMergeCommit":false,"messageTitle":"Clean up addTask function. Add javadocs for functions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":20,"deletions":15}}},{"hash":"1c875128f885a1c98a17012c407553f3a46c4a7b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"a23208e822b3dbacdd9a036d028289f4380d7d43","isMergeCommit":false,"messageTitle":"Update code to follow OOP principles.","messageBody":"Code was previously cluster in the main class and could make improvements in encapsulation.\n\nMultiple classes created to encapsulate user interactions, reading and writing files, understanding user input and the task list.\n\nThis cleans up and improves code quality.\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":654,"deletions":265}}},{"hash":"fca7278b963eba3ec196407ad9be7ae469dbba88","isMergeCommit":false,"messageTitle":"Update javadocs and clean up code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":171,"deletions":247}}},{"hash":"95a48a9c320913ce2401f2bfa3349e5ca45b7706","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"8d7c9a6c5fceeba35ebab3a0102f40c51ecac565","isMergeCommit":false,"messageTitle":"Update classes into separate packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":131,"deletions":84},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-31","commitResults":[{"hash":"3648ccc812764c7fdd226c5b38d52ef7124d6aab","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"748e9f36386cb724fa0ec0e2ef30dfc19abfa882","isMergeCommit":false,"messageTitle":"Add Junit testing for Parse and TaskList class.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":167,"deletions":20}}},{"hash":"aa325b708c9d1e73d3467c06ac78dba993369f5d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Junit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"f44f52456503168439f7de24312ce37fbe309537","isMergeCommit":false,"messageTitle":"Update error message and build.gradle file.","messageBody":"","tags":["v0.1","A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"fc83787d2720c3362e6cc486e162c7aa5f3a785a","isMergeCommit":false,"messageTitle":"Update javadocs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"6e8ea7dca9fce5bc4584b965e27b5c9c1c717b40","isMergeCommit":false,"messageTitle":"Add find command to search tasks.","messageBody":"User unable to filter task based on description.\n\nAdd a new user command find for user to filter tasks by inputing keyword matching task description.\n","fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":0}}},{"hash":"8b12715d41d358eb5a46c4d8209df10c5b4b78d1","isMergeCommit":false,"messageTitle":"Update style for main and test files","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":86,"deletions":61}}},{"hash":"db22438301afbaf1293a47e5676501b96fbbede7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027 into branch-A-Javadoc.","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e62198cca5932d4122d32e38fdb74992bb01c855","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027 into branch-A-Javadoc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"89310600ef2cdd468c1d0506d8b6f40e571f8f20","isMergeCommit":false,"messageTitle":"Clean up code and update code style","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":26}}},{"hash":"351adde6e2ebc7ccbfb8e6f7ab0892e707135655","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Javadoc\u0027","messageBody":"","tags":["Level-9","A-Javadoc","A-CodingStandard"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Kb-Tay":{"java":1171,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":5,"txt":11}},"authorContributionVariance":{"Kb-Tay":144658.84},"authorDisplayNameMap":{"Kb-Tay":"CS2103T-F12-1 AARO..BOON"}} diff --git a/Ken-Lai_ip_master/authorship.json b/Ken-Lai_ip_master/authorship.json index bff734e4..2eca7b86 100644 --- a/Ken-Lai_ip_master/authorship.json +++ b/Ken-Lai_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":" protected String by;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Ken-Lai"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Ken-Lai"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Ken-Lai"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.by);","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Ken-Lai"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Ken-Lai":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":" private static final String SEPARATION_LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":" private static final String INDENTATION \u003d \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Ken-Lai"},"content":" private static final String GREETING_TEXT \u003d \"Hello, I\u0027m Tasket\\n\" + INDENTATION + \"What can I do for you?\";","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Ken-Lai"},"content":" private static final String GOODBYE_TEXT \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Ken-Lai"},"content":" private static String prompt \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Ken-Lai"},"content":" private static final ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Ken-Lai"},"content":" public static void showSeparationLine() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + SEPARATION_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Ken-Lai"},"content":" public static void showGreetingText() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + GREETING_TEXT);","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Ken-Lai"},"content":" public static void showGoodbyeText() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + GOODBYE_TEXT);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Ken-Lai"},"content":" public static void showErrorText(String msg) {","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + \"OOPS!!! \" + msg);","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"Ken-Lai"},"content":" public static void showLists() {","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"Ken-Lai"},"content":" for (int i \u003d 1; i \u003c\u003d list.size(); i++) {","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"Ken-Lai"},"content":" System.out.printf(\"%s%d. %s\\n\", INDENTATION, i, list.get(i - 1).toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"Ken-Lai"},"content":" public static void identifyTaskType(String type, String prompt) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"Ken-Lai"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"Ken-Lai"},"content":" switch (type) {","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"Ken-Lai"},"content":" case \"todo\":","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"Ken-Lai"},"content":" task \u003d createToDoTask(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"Ken-Lai"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"Ken-Lai"},"content":" task \u003d createDeadlineTask(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"Ken-Lai"},"content":" case \"event\":","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"Ken-Lai"},"content":" task \u003d createEventTask(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"Ken-Lai"},"content":" list.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + \"Got it, I\u0027ve added this task:\\n\" + INDENTATION + task.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"Ken-Lai"},"content":" System.out.printf(INDENTATION + \"Now you have %d tasks in the list\\n\", list.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"Ken-Lai"},"content":" public static Task createToDoTask(String prompt) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"Ken-Lai"},"content":" String[] descriptions \u003d prompt.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"Ken-Lai"},"content":" if (descriptions.length !\u003d 2 || descriptions[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The description of todo cannot be empty\");","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"Ken-Lai"},"content":" return new ToDo(descriptions[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"Ken-Lai"},"content":" public static Task createDeadlineTask(String prompt) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"Ken-Lai"},"content":" String[] descriptions \u003d prompt.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"Ken-Lai"},"content":" if (descriptions.length !\u003d 2 || descriptions[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The description of deadline cannot be empty\");","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"Ken-Lai"},"content":" String[] desSplit \u003d descriptions[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"Ken-Lai"},"content":" if (desSplit.length !\u003d 2 || desSplit[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The deadline cannot be empty\");","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"Ken-Lai"},"content":" return new Deadline(desSplit[0], desSplit[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"Ken-Lai"},"content":" public static Task createEventTask(String prompt) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"Ken-Lai"},"content":" String[] descriptions \u003d prompt.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":89,"author":{"gitId":"Ken-Lai"},"content":" if (descriptions.length !\u003d 2 || descriptions[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The description of event cannot be empty\");","lastModifiedDate":"2023-08-25"},{"lineNumber":91,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"Ken-Lai"},"content":" String[] desSplit \u003d descriptions[1].split(\" /from \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":94,"author":{"gitId":"Ken-Lai"},"content":" if (desSplit.length !\u003d 2 || desSplit[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":95,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The start time cannot be empty\");","lastModifiedDate":"2023-08-25"},{"lineNumber":96,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":97,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"Ken-Lai"},"content":" String[] eventLength \u003d desSplit[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"Ken-Lai"},"content":" if (eventLength.length !\u003d 2 || eventLength[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":100,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The end time cannot be empty\");","lastModifiedDate":"2023-08-25"},{"lineNumber":101,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":102,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":103,"author":{"gitId":"Ken-Lai"},"content":" return new Event(desSplit[0], eventLength[0], eventLength[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":104,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":105,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":106,"author":{"gitId":"Ken-Lai"},"content":" public static void deleteTask(String prompt) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":107,"author":{"gitId":"Ken-Lai"},"content":" String[] descriptions \u003d prompt.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":108,"author":{"gitId":"Ken-Lai"},"content":" if (descriptions.length !\u003d 2 || descriptions[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":109,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The task index cannot be empty\");","lastModifiedDate":"2023-08-25"},{"lineNumber":110,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":111,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":112,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":113,"author":{"gitId":"Ken-Lai"},"content":" Task selectedTask \u003d list.remove(Integer.parseInt(descriptions[1]) - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":114,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":115,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"Ken-Lai"},"content":" + INDENTATION + \" \" + selectedTask.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":117,"author":{"gitId":"Ken-Lai"},"content":" System.out.printf(INDENTATION + \"Now you have %d tasks in the list\\n\", list.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":118,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":119,"author":{"gitId":"Ken-Lai"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":120,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The task index must be a number\");","lastModifiedDate":"2023-08-25"},{"lineNumber":121,"author":{"gitId":"Ken-Lai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":122,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The task index exceeds the size of list\");","lastModifiedDate":"2023-08-25"},{"lineNumber":123,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":124,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":125,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":126,"author":{"gitId":"Ken-Lai"},"content":" public static void markTaskDone(String prompt) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":127,"author":{"gitId":"Ken-Lai"},"content":" String[] descriptions \u003d prompt.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":128,"author":{"gitId":"Ken-Lai"},"content":" if (descriptions.length !\u003d 2 || descriptions[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":129,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The task index cannot be empty\");","lastModifiedDate":"2023-08-25"},{"lineNumber":130,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":131,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":132,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":133,"author":{"gitId":"Ken-Lai"},"content":" Task selectedTask \u003d list.get(Integer.parseInt(descriptions[1]) - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":134,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":135,"author":{"gitId":"Ken-Lai"},"content":" selectedTask.markAsDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":136,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":137,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":138,"author":{"gitId":"Ken-Lai"},"content":" + INDENTATION + \" \" + selectedTask.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":139,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":140,"author":{"gitId":"Ken-Lai"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":141,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The task index must be a number\");","lastModifiedDate":"2023-08-25"},{"lineNumber":142,"author":{"gitId":"Ken-Lai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":143,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The task index exceeds the size of list\");","lastModifiedDate":"2023-08-25"},{"lineNumber":144,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":145,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":146,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":147,"author":{"gitId":"Ken-Lai"},"content":" public static void markTaskUndone(String text) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":148,"author":{"gitId":"Ken-Lai"},"content":" String[] descriptions \u003d prompt.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":149,"author":{"gitId":"Ken-Lai"},"content":" if (descriptions.length !\u003d 2 || descriptions[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":150,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The task index cannot be empty\");","lastModifiedDate":"2023-08-25"},{"lineNumber":151,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":152,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":153,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":154,"author":{"gitId":"Ken-Lai"},"content":" Task selectedTask \u003d list.get(Integer.parseInt(descriptions[1]) - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":155,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":156,"author":{"gitId":"Ken-Lai"},"content":" selectedTask.markAsUndone();","lastModifiedDate":"2023-08-25"},{"lineNumber":157,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":158,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + \"Ok. I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":159,"author":{"gitId":"Ken-Lai"},"content":" + INDENTATION + \" \" + selectedTask.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":160,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":161,"author":{"gitId":"Ken-Lai"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":162,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The task index must be a number\");","lastModifiedDate":"2023-08-25"},{"lineNumber":163,"author":{"gitId":"Ken-Lai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":164,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"The task index exceeds the size of list\");","lastModifiedDate":"2023-08-25"},{"lineNumber":165,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":166,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"Ken-Lai"},"content":" public static void parseInput(String prompt) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":169,"author":{"gitId":"Ken-Lai"},"content":" String action \u003d prompt.split(\" \", 2)[0];","lastModifiedDate":"2023-08-25"},{"lineNumber":170,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":171,"author":{"gitId":"Ken-Lai"},"content":" switch (action) {","lastModifiedDate":"2023-08-25"},{"lineNumber":172,"author":{"gitId":"Ken-Lai"},"content":" case \"todo\":","lastModifiedDate":"2023-08-25"},{"lineNumber":173,"author":{"gitId":"Ken-Lai"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-25"},{"lineNumber":174,"author":{"gitId":"Ken-Lai"},"content":" case \"event\":","lastModifiedDate":"2023-08-25"},{"lineNumber":175,"author":{"gitId":"Ken-Lai"},"content":" identifyTaskType(action, prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":176,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":177,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":178,"author":{"gitId":"Ken-Lai"},"content":" case \"delete\":","lastModifiedDate":"2023-08-25"},{"lineNumber":179,"author":{"gitId":"Ken-Lai"},"content":" deleteTask(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":180,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":181,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":182,"author":{"gitId":"Ken-Lai"},"content":" case \"mark\":","lastModifiedDate":"2023-08-25"},{"lineNumber":183,"author":{"gitId":"Ken-Lai"},"content":" markTaskDone(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":184,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":185,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":186,"author":{"gitId":"Ken-Lai"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-25"},{"lineNumber":187,"author":{"gitId":"Ken-Lai"},"content":" markTaskUndone(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":188,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":189,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":190,"author":{"gitId":"Ken-Lai"},"content":" case \"list\":","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"Ken-Lai"},"content":" showLists();","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"Ken-Lai"},"content":" case \"bye\":","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"Ken-Lai"},"content":" showGoodbyeText();","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"Ken-Lai"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"Ken-Lai"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what it means :(\");","lastModifiedDate":"2023-08-25"},{"lineNumber":200,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":204,"author":{"gitId":"Ken-Lai"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"Ken-Lai"},"content":" showGreetingText();","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"Ken-Lai"},"content":" while (!prompt.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":210,"author":{"gitId":"Ken-Lai"},"content":" System.out.println();","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"Ken-Lai"},"content":" prompt \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"Ken-Lai"},"content":" parseInput(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":215,"author":{"gitId":"Ken-Lai"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-25"},{"lineNumber":216,"author":{"gitId":"Ken-Lai"},"content":" showErrorText(exception.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":217,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":218,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"Ken-Lai"},"content":" sc.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Ken-Lai":218,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":" public DukeException (String message) {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":" super(message);","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Ken-Lai":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":" protected String from;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":" protected String to;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Ken-Lai"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Ken-Lai"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Ken-Lai"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Ken-Lai"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Ken-Lai"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),this.from, this.to);","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"Ken-Lai"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Ken-Lai":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"public class Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":" protected String description;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Ken-Lai"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Ken-Lai"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Ken-Lai"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"Ken-Lai"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"Ken-Lai"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"Ken-Lai"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"Ken-Lai"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"Ken-Lai"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"Ken-Lai"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"Ken-Lai"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), description);","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"Ken-Lai"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Ken-Lai":26}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Ken-Lai"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Ken-Lai"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Ken-Lai"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Ken-Lai"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Ken-Lai":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"todo read book","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":"todo join sports club","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":"todo borrow book","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Ken-Lai"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Ken-Lai"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Ken-Lai"},"content":"bye","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Ken-Lai":9}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":" protected String by;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Ken-Lai"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Ken-Lai"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Ken-Lai"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.by);","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Ken-Lai"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Ken-Lai"},"content":" public String exportSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Ken-Lai"},"content":" return String.format(\"D | %s | %s\", super.exportSaveFormat(), this.by);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Ken-Lai"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Ken-Lai":18}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"Ken-Lai"},"content":" private static final String SEPARATION_LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Ken-Lai"},"content":" private static final String INDENTATION \u003d \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Ken-Lai"},"content":" private static final String TEXT_GREETING \u003d \"Hello, I\u0027m Tasket\\n\" + INDENTATION + \"What can I do for you?\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Ken-Lai"},"content":" private static final String TEXT_GOODBYE \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Ken-Lai"},"content":" private static final String PATH_FOLDER \u003d \"./data\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Ken-Lai"},"content":" private static final String PATH_FILE \u003d PATH_FOLDER + \"/tasks.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Ken-Lai"},"content":" private static String prompt \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Ken-Lai"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Ken-Lai"},"content":" private static File dataFile \u003d new File(PATH_FILE);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Ken-Lai"},"content":" private static File dataFolder \u003d new File(PATH_FOLDER);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Ken-Lai"},"content":" public static void showSeparationLine() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + SEPARATION_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Ken-Lai"},"content":" public static void showGreetingText() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + TEXT_GREETING);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Ken-Lai"},"content":" public static void showGoodbyeText() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + TEXT_GOODBYE);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Ken-Lai"},"content":" public static void showErrorText(String msg) {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + \"OOPS!!! \" + msg);","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"Ken-Lai"},"content":" public static void showLists() {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"Ken-Lai"},"content":" for (int i \u003d 1; i \u003c\u003d tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Ken-Lai"},"content":" System.out.printf(\"%s%d. %s\\n\", INDENTATION, i, tasks.get(i - 1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"Ken-Lai"},"content":" public static void identifyTaskType(String type, String prompt) throws TasketException {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Ken-Lai"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"Ken-Lai"},"content":" switch (type) {","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"Ken-Lai"},"content":" case \"todo\":","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"Ken-Lai"},"content":" task \u003d createToDoTask(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"Ken-Lai"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"Ken-Lai"},"content":" task \u003d createDeadlineTask(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"Ken-Lai"},"content":" case \"event\":","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"Ken-Lai"},"content":" task \u003d createEventTask(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"Ken-Lai"},"content":" FileWriter fw \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Ken-Lai"},"content":" fw \u003d new FileWriter(dataFile, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Ken-Lai"},"content":" fw.write(task.exportSaveFormat() + System.lineSeparator());","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Ken-Lai"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + \"Got it, I\u0027ve added this task:\" + System.lineSeparator()","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Ken-Lai"},"content":" + INDENTATION + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Ken-Lai"},"content":" System.out.printf(INDENTATION + \"Now you have %d tasks in the list\\n\", tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"Ken-Lai"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"IO Error\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Ken-Lai"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Ken-Lai"},"content":" if (fw !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Ken-Lai"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Ken-Lai"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"IO Error\");","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"Ken-Lai"},"content":" public static Task createToDoTask(String prompt) throws TasketException {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"Ken-Lai"},"content":" String[] descriptions \u003d prompt.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"Ken-Lai"},"content":" if (descriptions.length !\u003d 2 || descriptions[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The description of todo cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":95,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":96,"author":{"gitId":"Ken-Lai"},"content":" return new ToDo(descriptions[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":97,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"Ken-Lai"},"content":" public static Task createDeadlineTask(String prompt) throws TasketException {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"Ken-Lai"},"content":" String[] descriptions \u003d prompt.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":101,"author":{"gitId":"Ken-Lai"},"content":" if (descriptions.length !\u003d 2 || descriptions[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":102,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The description of deadline cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":104,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":105,"author":{"gitId":"Ken-Lai"},"content":" String[] desSplit \u003d descriptions[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":106,"author":{"gitId":"Ken-Lai"},"content":" if (desSplit.length !\u003d 2 || desSplit[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":107,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The deadline cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":110,"author":{"gitId":"Ken-Lai"},"content":" return new Deadline(desSplit[0], desSplit[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":111,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"Ken-Lai"},"content":" public static Task createEventTask(String prompt) throws TasketException {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"Ken-Lai"},"content":" String[] descriptions \u003d prompt.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":115,"author":{"gitId":"Ken-Lai"},"content":" if (descriptions.length !\u003d 2 || descriptions[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The description of event cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":118,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":119,"author":{"gitId":"Ken-Lai"},"content":" String[] desSplit \u003d descriptions[1].split(\" /from \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":120,"author":{"gitId":"Ken-Lai"},"content":" if (desSplit.length !\u003d 2 || desSplit[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":121,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The start time cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":123,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":124,"author":{"gitId":"Ken-Lai"},"content":" String[] eventLength \u003d desSplit[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":125,"author":{"gitId":"Ken-Lai"},"content":" if (eventLength.length !\u003d 2 || eventLength[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":126,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The end time cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":128,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":129,"author":{"gitId":"Ken-Lai"},"content":" return new Event(desSplit[0], eventLength[0], eventLength[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":130,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":131,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":132,"author":{"gitId":"Ken-Lai"},"content":" public static void deleteTask(String prompt) throws TasketException {","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Ken-Lai"},"content":" String[] descriptions \u003d prompt.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":134,"author":{"gitId":"Ken-Lai"},"content":" if (descriptions.length !\u003d 2 || descriptions[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":135,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The task index cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":137,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":138,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":139,"author":{"gitId":"Ken-Lai"},"content":" Task selectedTask \u003d tasks.remove(Integer.parseInt(descriptions[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"Ken-Lai"},"content":" rewriteSaveFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":142,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":143,"author":{"gitId":"Ken-Lai"},"content":" + INDENTATION + \" \" + selectedTask.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":144,"author":{"gitId":"Ken-Lai"},"content":" System.out.printf(INDENTATION + \"Now you have %d tasks in the list\\n\", tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":146,"author":{"gitId":"Ken-Lai"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":147,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The task index must be a number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"Ken-Lai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":149,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The task index exceeds the size of list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":151,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":152,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":153,"author":{"gitId":"Ken-Lai"},"content":" public static void markTaskDone(String prompt) throws TasketException {","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"Ken-Lai"},"content":" String[] descriptions \u003d prompt.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":155,"author":{"gitId":"Ken-Lai"},"content":" if (descriptions.length !\u003d 2 || descriptions[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":156,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The task index cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":158,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":159,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":160,"author":{"gitId":"Ken-Lai"},"content":" Task selectedTask \u003d tasks.get(Integer.parseInt(descriptions[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":162,"author":{"gitId":"Ken-Lai"},"content":" if (selectedTask.getStatusIcon().equals(\" \")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"Ken-Lai"},"content":" selectedTask.markAsDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":164,"author":{"gitId":"Ken-Lai"},"content":" rewriteSaveFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":167,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":168,"author":{"gitId":"Ken-Lai"},"content":" + INDENTATION + \" \" + selectedTask.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":169,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":170,"author":{"gitId":"Ken-Lai"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":171,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The task index must be a number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"Ken-Lai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":173,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The task index exceeds the size of list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":175,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":176,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":177,"author":{"gitId":"Ken-Lai"},"content":" public static void markTaskUndone(String text) throws TasketException {","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"Ken-Lai"},"content":" String[] descriptions \u003d prompt.split(\" \", 2);","lastModifiedDate":"2023-08-25"},{"lineNumber":179,"author":{"gitId":"Ken-Lai"},"content":" if (descriptions.length !\u003d 2 || descriptions[1].replaceAll(\" \", \"\").isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":180,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The task index cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":182,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":183,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":184,"author":{"gitId":"Ken-Lai"},"content":" Task selectedTask \u003d tasks.get(Integer.parseInt(descriptions[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":186,"author":{"gitId":"Ken-Lai"},"content":" if (selectedTask.getStatusIcon().equals(\"X\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"Ken-Lai"},"content":" selectedTask.markAsUndone();","lastModifiedDate":"2023-08-25"},{"lineNumber":188,"author":{"gitId":"Ken-Lai"},"content":" rewriteSaveFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":191,"author":{"gitId":"Ken-Lai"},"content":" System.out.println(INDENTATION + \"Ok. I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":192,"author":{"gitId":"Ken-Lai"},"content":" + INDENTATION + \" \" + selectedTask.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":193,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":194,"author":{"gitId":"Ken-Lai"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":195,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The task index must be a number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"Ken-Lai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":197,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"The task index exceeds the size of list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":199,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"Ken-Lai"},"content":" public static void rewriteSaveFile() throws TasketException {","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"Ken-Lai"},"content":" FileWriter fw \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"Ken-Lai"},"content":" fw \u003d new FileWriter(dataFile, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"Ken-Lai"},"content":" fw.write(\"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"Ken-Lai"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"Ken-Lai"},"content":" fw.append(task.exportSaveFormat()).append(System.lineSeparator());","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"Ken-Lai"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"IO Error\");","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"Ken-Lai"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"Ken-Lai"},"content":" if (fw !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"Ken-Lai"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"Ken-Lai"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"IO Error\");","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"Ken-Lai"},"content":" public static void retrieveSavedTasks() throws TasketException {","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"Ken-Lai"},"content":" Scanner sc \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"Ken-Lai"},"content":" sc \u003d new Scanner(dataFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"Ken-Lai"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"Ken-Lai"},"content":" parseLine(sc.nextLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"Ken-Lai"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"File not found\");","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"Ken-Lai"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"Ken-Lai"},"content":" if (sc !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"Ken-Lai"},"content":" sc.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"Ken-Lai"},"content":" public static void parseLine(String savedTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"Ken-Lai"},"content":" String[] taskElements \u003d savedTask.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"Ken-Lai"},"content":" Task generatedTask \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"Ken-Lai"},"content":" switch (taskElements[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":246,"author":{"gitId":"Ken-Lai"},"content":" case \"T\":","lastModifiedDate":"2023-09-01"},{"lineNumber":247,"author":{"gitId":"Ken-Lai"},"content":" if (taskElements.length !\u003d 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"Invalid task format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"Ken-Lai"},"content":" generatedTask \u003d new ToDo(taskElements[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"Ken-Lai"},"content":" case \"D\":","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"Ken-Lai"},"content":" if (taskElements.length !\u003d 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"Invalid task format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":256,"author":{"gitId":"Ken-Lai"},"content":" generatedTask \u003d new Deadline(taskElements[2], taskElements[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"Ken-Lai"},"content":" case \"E\":","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"Ken-Lai"},"content":" if (taskElements.length !\u003d 5) {","lastModifiedDate":"2023-09-01"},{"lineNumber":260,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"Invalid task format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"Ken-Lai"},"content":" generatedTask \u003d new Event(taskElements[2], taskElements[3], taskElements[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":263,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":264,"author":{"gitId":"Ken-Lai"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"Invalid task type\");","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"Ken-Lai"},"content":" if (taskElements[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"Ken-Lai"},"content":" generatedTask.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":270,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":272,"author":{"gitId":"Ken-Lai"},"content":" tasks.add(generatedTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":273,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":274,"author":{"gitId":"Ken-Lai"},"content":" } catch (TasketException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":275,"author":{"gitId":"Ken-Lai"},"content":" showErrorText(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":276,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":278,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":279,"author":{"gitId":"Ken-Lai"},"content":" public static void parseInput(String prompt) throws TasketException {","lastModifiedDate":"2023-09-01"},{"lineNumber":280,"author":{"gitId":"Ken-Lai"},"content":" String action \u003d prompt.split(\" \", 2)[0];","lastModifiedDate":"2023-08-25"},{"lineNumber":281,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":282,"author":{"gitId":"Ken-Lai"},"content":" switch (action) {","lastModifiedDate":"2023-08-25"},{"lineNumber":283,"author":{"gitId":"Ken-Lai"},"content":" case \"todo\":","lastModifiedDate":"2023-08-25"},{"lineNumber":284,"author":{"gitId":"Ken-Lai"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-25"},{"lineNumber":285,"author":{"gitId":"Ken-Lai"},"content":" case \"event\":","lastModifiedDate":"2023-08-25"},{"lineNumber":286,"author":{"gitId":"Ken-Lai"},"content":" identifyTaskType(action, prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":287,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":288,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":289,"author":{"gitId":"Ken-Lai"},"content":" case \"delete\":","lastModifiedDate":"2023-08-25"},{"lineNumber":290,"author":{"gitId":"Ken-Lai"},"content":" deleteTask(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":291,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":292,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":293,"author":{"gitId":"Ken-Lai"},"content":" case \"mark\":","lastModifiedDate":"2023-08-25"},{"lineNumber":294,"author":{"gitId":"Ken-Lai"},"content":" markTaskDone(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":295,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":296,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":297,"author":{"gitId":"Ken-Lai"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-25"},{"lineNumber":298,"author":{"gitId":"Ken-Lai"},"content":" markTaskUndone(prompt);","lastModifiedDate":"2023-08-25"},{"lineNumber":299,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":300,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":301,"author":{"gitId":"Ken-Lai"},"content":" case \"list\":","lastModifiedDate":"2023-08-24"},{"lineNumber":302,"author":{"gitId":"Ken-Lai"},"content":" showLists();","lastModifiedDate":"2023-08-24"},{"lineNumber":303,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":304,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":305,"author":{"gitId":"Ken-Lai"},"content":" case \"bye\":","lastModifiedDate":"2023-08-24"},{"lineNumber":306,"author":{"gitId":"Ken-Lai"},"content":" showGoodbyeText();","lastModifiedDate":"2023-08-24"},{"lineNumber":307,"author":{"gitId":"Ken-Lai"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":308,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":309,"author":{"gitId":"Ken-Lai"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":310,"author":{"gitId":"Ken-Lai"},"content":" throw new TasketException(\"I\u0027m sorry, but I don\u0027t know what it means :(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":311,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":312,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":313,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":314,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":315,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":316,"author":{"gitId":"Ken-Lai"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":317,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":318,"author":{"gitId":"Ken-Lai"},"content":" dataFolder.mkdir();","lastModifiedDate":"2023-09-01"},{"lineNumber":319,"author":{"gitId":"Ken-Lai"},"content":" dataFile.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":320,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":321,"author":{"gitId":"Ken-Lai"},"content":" retrieveSavedTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":322,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":323,"author":{"gitId":"Ken-Lai"},"content":" showGreetingText();","lastModifiedDate":"2023-08-24"},{"lineNumber":324,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":325,"author":{"gitId":"Ken-Lai"},"content":" while (!prompt.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":326,"author":{"gitId":"Ken-Lai"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":327,"author":{"gitId":"Ken-Lai"},"content":" System.out.println();","lastModifiedDate":"2023-08-24"},{"lineNumber":328,"author":{"gitId":"Ken-Lai"},"content":" prompt \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":329,"author":{"gitId":"Ken-Lai"},"content":" showSeparationLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":330,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":331,"author":{"gitId":"Ken-Lai"},"content":" parseInput(prompt.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":332,"author":{"gitId":"Ken-Lai"},"content":" } catch (TasketException exception) {","lastModifiedDate":"2023-09-01"},{"lineNumber":333,"author":{"gitId":"Ken-Lai"},"content":" showErrorText(exception.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":334,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":335,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":336,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":337,"author":{"gitId":"Ken-Lai"},"content":" } catch (IOException exception) {","lastModifiedDate":"2023-09-01"},{"lineNumber":338,"author":{"gitId":"Ken-Lai"},"content":" showErrorText(\"IO Error\");","lastModifiedDate":"2023-09-01"},{"lineNumber":339,"author":{"gitId":"Ken-Lai"},"content":" } catch (TasketException exception) {","lastModifiedDate":"2023-09-01"},{"lineNumber":340,"author":{"gitId":"Ken-Lai"},"content":" showErrorText(exception.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":341,"author":{"gitId":"Ken-Lai"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":342,"author":{"gitId":"Ken-Lai"},"content":" sc.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":343,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":344,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":346,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Ken-Lai":341,"-":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":" protected String from;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":" protected String to;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Ken-Lai"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Ken-Lai"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Ken-Lai"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Ken-Lai"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Ken-Lai"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),this.from, this.to);","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Ken-Lai"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Ken-Lai"},"content":" public String exportSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Ken-Lai"},"content":" return String.format(\"E | %s | %s | %s\", super.exportSaveFormat(), this.from, this.to);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Ken-Lai"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Ken-Lai":20}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"public class Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":" protected String description;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Ken-Lai"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Ken-Lai"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Ken-Lai"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"Ken-Lai"},"content":" public String getSaveStatusIcon() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Ken-Lai"},"content":" return (isDone ? \"1\" : \"0\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Ken-Lai"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"Ken-Lai"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"Ken-Lai"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"Ken-Lai"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"Ken-Lai"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"Ken-Lai"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"Ken-Lai"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), this.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Ken-Lai"},"content":" public String exportSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Ken-Lai"},"content":" return String.format(\"%s | %s\", getSaveStatusIcon(), this.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"Ken-Lai"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Ken-Lai":34}},{"path":"src/main/java/TasketException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"public class TasketException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":" public TasketException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":" super(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Ken-Lai":6}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Ken-Lai"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Ken-Lai"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Ken-Lai"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Ken-Lai"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Ken-Lai"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Ken-Lai"},"content":" public String exportSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Ken-Lai"},"content":" return String.format(\"T | %s\", super.exportSaveFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Ken-Lai"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Ken-Lai"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Ken-Lai":16}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ken-Lai"},"content":"todo read book","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Ken-Lai"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Ken-Lai"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Ken-Lai"},"content":"todo join sports club","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Ken-Lai"},"content":"todo borrow book","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Ken-Lai"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Ken-Lai"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Ken-Lai"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Ken-Lai"},"content":"bye","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Ken-Lai":9}}] diff --git a/Ken-Lai_ip_master/commits.json b/Ken-Lai_ip_master/commits.json index 4534de93..a42f295b 100644 --- a/Ken-Lai_ip_master/commits.json +++ b/Ken-Lai_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Ken-Lai":[{"date":"2023-08-24","commitResults":[{"hash":"9aad85b7f338672bf2c0914c173d8cbb914caf27","isMergeCommit":false,"messageTitle":"Change chatbot name and implement an initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"d956743dcb81f1942378938f40df8ee2d39b5945","isMergeCommit":false,"messageTitle":"Echoes command from user and exits when bye is entered","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":6}}},{"hash":"d1d19878f118fd98a570415ca2ef9edfa3074e56","isMergeCommit":false,"messageTitle":"Add ability to store text entered by user and display them back when requested","messageBody":"","tags":["Level-2","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":6}}}]},{"date":"2023-08-25","commitResults":[{"hash":"5ff735025e81a18810fe9434fc2a634755cc8673","isMergeCommit":false,"messageTitle":"Add a Task class to represent tasks","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"4cd4528a30d7e6c32aa42b08e2f5481fa9d70bbc","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done or undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":9}}},{"hash":"2c4d757d6b2b81870bca682890d52dfb7938b8b7","isMergeCommit":false,"messageTitle":"Implement ToDo, Event and Deadline to support multiple task types","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"f71bcb6e48a0842a7af2801d814ddecfbd18fcd9","isMergeCommit":false,"messageTitle":"Add support to tracking three types of tasks: Todo, Deadline and Event","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":5}}},{"hash":"7b87055d6f0520f9415fcb062ffeb497f707d418","isMergeCommit":false,"messageTitle":"Semi-automate testing of text UIs with I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"dfa49fa97d09bfee3bf1ad775c54b4e5e04cbe91","isMergeCommit":false,"messageTitle":"Add DukeException to handle errors specific to Duke","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"e430edfc9a078e871e3ef1f7cbedf52191b74ffa","isMergeCommit":false,"messageTitle":"Implement ability to handle invalid inputs entered by user","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":46}}},{"hash":"3e5b7c9af0de5679f9ea430a4819db45c5483a87","isMergeCommit":false,"messageTitle":"Add support to delete task from the list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"Ken-Lai":{"java":289,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"Ken-Lai":14101.1875},"authorDisplayNameMap":{"Ken-Lai":"CS2103T-T12-2 LAI ..HONG"}} +{"authorDailyContributionsMap":{"Ken-Lai":[{"date":"2023-08-24","commitResults":[{"hash":"9aad85b7f338672bf2c0914c173d8cbb914caf27","isMergeCommit":false,"messageTitle":"Change chatbot name and implement an initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"d956743dcb81f1942378938f40df8ee2d39b5945","isMergeCommit":false,"messageTitle":"Echoes command from user and exits when bye is entered","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":6}}},{"hash":"d1d19878f118fd98a570415ca2ef9edfa3074e56","isMergeCommit":false,"messageTitle":"Add ability to store text entered by user and display them back when requested","messageBody":"","tags":["Level-2","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":6}}}]},{"date":"2023-08-25","commitResults":[{"hash":"5ff735025e81a18810fe9434fc2a634755cc8673","isMergeCommit":false,"messageTitle":"Add a Task class to represent tasks","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"4cd4528a30d7e6c32aa42b08e2f5481fa9d70bbc","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done or undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":9}}},{"hash":"2c4d757d6b2b81870bca682890d52dfb7938b8b7","isMergeCommit":false,"messageTitle":"Implement ToDo, Event and Deadline to support multiple task types","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"f71bcb6e48a0842a7af2801d814ddecfbd18fcd9","isMergeCommit":false,"messageTitle":"Add support to tracking three types of tasks: Todo, Deadline and Event","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":5}}},{"hash":"7b87055d6f0520f9415fcb062ffeb497f707d418","isMergeCommit":false,"messageTitle":"Semi-automate testing of text UIs with I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"dfa49fa97d09bfee3bf1ad775c54b4e5e04cbe91","isMergeCommit":false,"messageTitle":"Add DukeException to handle errors specific to Duke","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"e430edfc9a078e871e3ef1f7cbedf52191b74ffa","isMergeCommit":false,"messageTitle":"Implement ability to handle invalid inputs entered by user","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":46}}},{"hash":"3e5b7c9af0de5679f9ea430a4819db45c5483a87","isMergeCommit":false,"messageTitle":"Add support to delete task from the list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":6}}}]},{"date":"2023-09-01","commitResults":[{"hash":"1802304633a4c0c2867f9f92d82ebabc0702f6a8","isMergeCommit":false,"messageTitle":"Add ability to save and retrieve tasks from hard drive","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":205,"deletions":58}}},{"hash":"372726b40044cfd7c0d5d5c36587f165397a97d4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Ken-Lai":{"java":435,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"Ken-Lai":11574.487},"authorDisplayNameMap":{"Ken-Lai":"CS2103T-T12-2 LAI ..HONG"}} diff --git a/KumChaiYin_ip_master/authorship.json b/KumChaiYin_ip_master/authorship.json index 4e8623e0..2a4ee01b 100644 --- a/KumChaiYin_ip_master/authorship.json +++ b/KumChaiYin_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"T | 1 | read book","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"E | 0 | project meeting | Mon 2pm-4pm","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"KumChaiYin":2}},{"path":"src/main/java/aichan/ActionType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"public enum ActionType {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":" MARK(\"mark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":" TODO(\"todo\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" DEADLINE(\"deadline\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" EVENT(\"event\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" BYE(\"bye\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" private final String action;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" ActionType(String action) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" this.action \u003d action;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" public String toString(){","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" return this.action;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":21}},{"path":"src/main/java/aichan/AiChan.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"public class AiChan {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" public AiChan(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" } catch (AiChanException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" } catch (AiChanException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":" ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"KumChaiYin"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"KumChaiYin"},"content":" new AiChan(\"data/tasks.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"KumChaiYin"},"content":" /*","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"KumChaiYin"},"content":" String line \u003d \"_______________________________________________________________________\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"KumChaiYin"},"content":" String greet \u003d \"Hiya! I\u0027m Ai-chan~\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"KumChaiYin"},"content":" \"Hey there, dear viewer, what\u0027s on your mind?\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"KumChaiYin"},"content":" \"Is there anything I can do to sprinkle some magic into your day?\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"KumChaiYin"},"content":" String bye \u003d \"Ta-da! It\u0027s time to go~ Keep smiling till we reunite!\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"KumChaiYin"},"content":" Scanner scn \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"KumChaiYin"},"content":" ArrayList\u003cTask\u003e arrTask \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(line + greet + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"KumChaiYin"},"content":" while (true) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d arrTask.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"KumChaiYin"},"content":" try{","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"KumChaiYin"},"content":" String command \u003d scn.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"KumChaiYin"},"content":" if (command.equals(ActionType.BYE.toString())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(line + bye + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"KumChaiYin"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.equals(ActionType.LIST.toString())){","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"KumChaiYin"},"content":" System.out.print(line + \"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"KumChaiYin"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"KumChaiYin"},"content":" for (Task t : arrTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(i + \".\" + t.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"KumChaiYin"},"content":" i++;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.startsWith(ActionType.MARK.toString())){","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"KumChaiYin"},"content":" if (command.length() \u003c 6) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"KumChaiYin"},"content":" // get the number behind \"mark \"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"KumChaiYin"},"content":" int taskId \u003d Integer.parseInt(command.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"KumChaiYin"},"content":" if(taskId \u003c 1 || taskId \u003e size) throw new AiChanException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d arrTask.get(taskId - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"KumChaiYin"},"content":" t.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(line + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"KumChaiYin"},"content":" + t.toString() + \"\\n\" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.startsWith(ActionType.UNMARK.toString())){","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"KumChaiYin"},"content":" if (command.length() \u003c 8) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"KumChaiYin"},"content":" // get the number behind \"unmark \"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"KumChaiYin"},"content":" int taskId \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"KumChaiYin"},"content":" if(taskId \u003c 1 || taskId \u003e size) throw new AiChanException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d arrTask.get(taskId - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"KumChaiYin"},"content":" t.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(line + \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"KumChaiYin"},"content":" + t.toString() + \"\\n\" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.startsWith(ActionType.TODO.toString())){","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"KumChaiYin"},"content":" if (command.length() \u003c 6) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"oops~ The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.charAt(4) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please leave a space behind \u0027todo\u0027\");","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d new ToDo(command.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"KumChaiYin"},"content":" arrTask.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(String.format(\"%sGot it. I\u0027ve added this task:\\n %s\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"KumChaiYin"},"content":" \"Now you have %d tasks in the list\\n%s\", line, t, size + 1, line));","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.startsWith(ActionType.DEADLINE.toString())){","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"KumChaiYin"},"content":" if (command.length() \u003c 10) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"oops~ The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.charAt(8) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please leave a space behind \u0027deadline\u0027\");","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"KumChaiYin"},"content":" // split the substring behind \"deadline \" into two","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d command.substring(9).split(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"KumChaiYin"},"content":" if(arr.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Behind description, please provide the deadline after \u0027 /by \u0027\");","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d new Deadline(arr);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"KumChaiYin"},"content":" arrTask.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(String.format(\"%sGot it. I\u0027ve added this task:\\n %s\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"KumChaiYin"},"content":" \"Now you have %d tasks in the list\\n%s\", line, t, size + 1, line));","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.startsWith(ActionType.EVENT.toString())){","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"KumChaiYin"},"content":" if (command.length() \u003c 7) {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"oops~ The description of a event cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.charAt(5) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please leave a space behind \u0027event\u0027\");","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"KumChaiYin"},"content":" // split the substring behind \"event \" into three elements","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d command.substring(6).split(\" /from | /to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"KumChaiYin"},"content":" if(arr.length \u003c 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Behind description, \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"KumChaiYin"},"content":" \"please provide \\nthe respective date/time after \u0027 /from \u0027 and \u0027 /to \u0027\");","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d new Event(arr);","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"KumChaiYin"},"content":" arrTask.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(String.format(\"%sGot it. I\u0027ve added this task:\\n %s\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"KumChaiYin"},"content":" \"Now you have %d tasks in the list\\n%s\", line, t, size + 1, line));","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.startsWith(ActionType.DELETE.toString())){","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"KumChaiYin"},"content":" if (command.length() \u003c 8) {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"KumChaiYin"},"content":" // get the number behind \"mark \"","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"KumChaiYin"},"content":" int taskId \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"KumChaiYin"},"content":" if(taskId \u003c 1 || taskId \u003e size) throw new AiChanException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d arrTask.remove(taskId - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(String.format(\"%sNoted. I\u0027ve removed this task:\\n %s\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"KumChaiYin"},"content":" \"Now you have %d tasks in the list\\n%s\", line, t, size - 1, line));","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"KumChaiYin"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"oops~ I\u0027m so sorry, but I don\u0027t know what that means :\u0027(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"KumChaiYin"},"content":" } catch(AiChanException err) {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(line + err.getMessage() + \"\\n\" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"KumChaiYin"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":151}},{"path":"src/main/java/aichan/AiChanException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"public class AiChanException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":" public AiChanException(String errorMsg) {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":6}},{"path":"src/main/java/aichan/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.ActionType;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.AddDeadlineCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.AddEventCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.AddToDoCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.DeleteCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.ListCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.MarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.UnmarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" public static Command parse(String input) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" // command is user\u0027s input","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" // put the if-else logic to call different constructor (subclass)","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" if (input \u003d\u003d null ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please enter command, thanks!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" String inputs[] \u003d input.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" if (inputs[0].equals(ActionType.BYE.toString())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.LIST.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.MARK.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" return new MarkCommand(strToNum(checkLen(inputs)));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.UNMARK.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" return new UnmarkCommand(strToNum(checkLen(inputs)));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.TODO.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" return new AddToDoCommand(checkLen(inputs));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.DEADLINE.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" return new AddDeadlineCommand(checkLen(inputs));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.EVENT.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"KumChaiYin"},"content":" return new AddEventCommand(checkLen(inputs));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.DELETE.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"KumChaiYin"},"content":" return new DeleteCommand(strToNum(checkLen(inputs)));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"KumChaiYin"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"oops~ I\u0027m so sorry, but I don\u0027t know what that means :\u0027(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"KumChaiYin"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"KumChaiYin"},"content":" public static String checkLen(String[] inputs) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"KumChaiYin"},"content":" if (inputs.length \u003d\u003d 1 || inputs[1].length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"oops~ The description of a \" + inputs[0] + \" cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"KumChaiYin"},"content":" return inputs[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"KumChaiYin"},"content":" public static int strToNum(String intStr) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"KumChaiYin"},"content":" return Integer.parseInt(intStr);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"KumChaiYin"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please provide a task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"KumChaiYin"},"content":"/*","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"KumChaiYin"},"content":"if (inputs[0].equals(ActionType.BYE.toString())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"KumChaiYin"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.LIST.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"KumChaiYin"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.MARK.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"KumChaiYin"},"content":" if (command.length() \u003c 6) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"KumChaiYin"},"content":" // get the number behind \"mark \"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"KumChaiYin"},"content":" int taskId \u003d Integer.parseInt(command.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"KumChaiYin"},"content":" return new MarkCommand(taskId);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.UNMARK.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"KumChaiYin"},"content":" if (command.length() \u003c 8) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"KumChaiYin"},"content":" int taskId \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"KumChaiYin"},"content":" return new UnmarkCommand(taskId);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.TODO.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"KumChaiYin"},"content":" if (command.length() \u003c 6) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"oops~ The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.charAt(4) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please leave a space behind \u0027todo\u0027\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d new ToDo(command.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"KumChaiYin"},"content":" return new AddCommand(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.DEADLINE.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"KumChaiYin"},"content":" if (command.length() \u003c 10) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"oops~ The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.charAt(8) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please leave a space behind \u0027deadline\u0027\");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"KumChaiYin"},"content":" // split the substring behind \"deadline \" into two","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d command.substring(9).split(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"KumChaiYin"},"content":" if(arr.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Behind description, please provide the deadline after \u0027 /by \u0027\");","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d new Deadline(arr);","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"KumChaiYin"},"content":" return new AddCommand(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.EVENT.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"KumChaiYin"},"content":" if (command.length() \u003c 7) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"oops~ The description of a event cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"KumChaiYin"},"content":" } else if (command.charAt(5) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please leave a space behind \u0027event\u0027\");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"KumChaiYin"},"content":" // split the substring behind \"event \" into three elements","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d command.substring(6).split(\" /from | /to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"KumChaiYin"},"content":" if(arr.length \u003c 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Behind description, \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"KumChaiYin"},"content":" \"please provide \\nthe respective date/time after \u0027 /from \u0027 and \u0027 /to \u0027\");","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d new Event(arr);","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"KumChaiYin"},"content":" return new AddCommand(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.DELETE.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"KumChaiYin"},"content":" if (command.length() \u003c 8) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"KumChaiYin"},"content":" // get the number behind \"delete\"","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"KumChaiYin"},"content":" int taskId \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"KumChaiYin"},"content":" return new DeleteCommand(taskId);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"KumChaiYin"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"oops~ I\u0027m so sorry, but I don\u0027t know what that means :\u0027(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"KumChaiYin"},"content":" */","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"KumChaiYin":123}},{"path":"src/main/java/aichan/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" private final String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" public void save(TaskList tasks) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" FileWriter filewriter \u003d new FileWriter(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" File directory \u003d file.getParentFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" if (directory !\u003d null \u0026\u0026 !directory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" directory.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" for (Task task : tasks.getTasks()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" String line \u003d task.toFileLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" if (line !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" filewriter.write(line + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":" filewriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Error saving the tasks into the file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"KumChaiYin"},"content":" public ArrayList\u003cTask\u003e load() throws AiChanException{","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"KumChaiYin"},"content":" ArrayList\u003cTask\u003e arrTask \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"KumChaiYin"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"KumChaiYin"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"KumChaiYin"},"content":" return arrTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"KumChaiYin"},"content":" Scanner scn \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"KumChaiYin"},"content":" while (scn.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"KumChaiYin"},"content":" String line \u003d scn.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"KumChaiYin"},"content":" if (line.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"KumChaiYin"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"KumChaiYin"},"content":" Task task \u003d Task.stringToTask(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"KumChaiYin"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"KumChaiYin"},"content":" arrTask.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"KumChaiYin"},"content":" scn.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"KumChaiYin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Error loading tasks from file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"KumChaiYin"},"content":" return arrTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":65}},{"path":"src/main/java/aichan/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":" private ArrayList\u003cTask\u003e arrTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" this.arrTask \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" public TaskList(ArrayList\u003cTask\u003e arrTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" this.arrTask \u003d arrTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" arrTask.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" return arrTask.remove(index -1);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" return arrTask.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" return arrTask.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":" return this.arrTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":35}},{"path":"src/main/java/aichan/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":" public Ui(){","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" public void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(\"_______________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" String greet \u003d \"Hiya! I\u0027m Ai-chan~\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" \"Hey there, dear viewer, what\u0027s on your mind?\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" \"Is there anything I can do to sprinkle some magic into your day?\";","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" this.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(greet);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" this.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" public void showError(String errMsg) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(errMsg);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" public void showMessage(String msg) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":31}},{"path":"src/main/java/aichan/command/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" public AddDeadlineCommand(String str) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d str.split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" if(arr.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Behind description, please provide the deadline after \u0027 /by \u0027\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" this.task \u003d new Deadline(arr);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(String.format(\"Got it. I\u0027ve added this task:\\n %s\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" \"Now you have %d tasks in the list\", task, size));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"KumChaiYin":33}},{"path":"src/main/java/aichan/command/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" public AddEventCommand(String str) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d str.split(\" /from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" if(arr.length \u003c 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Behind description, \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" \"please provide \\nthe respective date/time after \u0027 /from \u0027 and \u0027 /to \u0027\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" this.task \u003d new Event(arr);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(String.format(\"Got it. I\u0027ve added this task:\\n %s\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" \"Now you have %d tasks in the list\", task, size));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"KumChaiYin":33}},{"path":"src/main/java/aichan/command/AddToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"public class AddToDoCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" public AddToDoCommand(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" this.task \u003d new ToDo(str);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(String.format(\"Got it. I\u0027ve added this task:\\n %s\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" \"Now you have %d tasks in the list\", task, size));","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"KumChaiYin":28}},{"path":"src/main/java/aichan/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"public class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" // control the main logic","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" // add/delete task + ui shows words","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":17}},{"path":"src/main/java/aichan/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" private int taskId;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" public DeleteCommand(int taskId) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" this.taskId \u003d taskId;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" // control the main logic","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" // add/delete task, show words","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" if (taskId \u003c 1 || taskId \u003e size) throw new AiChanException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" Task task \u003d tasks.deleteTask(taskId);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(String.format(\"Noted. I\u0027ve removed this task:\\n %s\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" \"Now you have %d tasks in the list\", task, size - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":29}},{"path":"src/main/java/aichan/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"public class ExitCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" // no interaction with tasks","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(\"Ta-da! It\u0027s time to go~ Keep smiling till we reunite!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":17}},{"path":"src/main/java/aichan/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" for (int i \u003d 1; i \u003c\u003d size; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(i + \".\" + tasks.getTask(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":22}},{"path":"src/main/java/aichan/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" private int taskId;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" public MarkCommand(int taskId) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" this.taskId \u003d taskId;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" if (taskId \u003c 1 || taskId \u003e size) throw new AiChanException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" Task task \u003d tasks.getTask(taskId);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(\"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":28}},{"path":"src/main/java/aichan/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"public class UnmarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" private int taskId;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" public UnmarkCommand(int taskId) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" this.taskId \u003d taskId;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" if (taskId \u003c 1 || taskId \u003e size) throw new AiChanException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" Task task \u003d tasks.getTask(taskId);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(\"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":28}},{"path":"src/main/java/aichan/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":" private String dueDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":" public Deadline(String[] strs) {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":" // first is taskName, second element is dueDate","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":" super(strs[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" this.dueDate \u003d strs[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.dueDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" public String toFileLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" return String.format(\"D | %s | %s\", super.toFileLine(), this.dueDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":20}},{"path":"src/main/java/aichan/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":" private String start;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":" private String end;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":" public Event(String[] strs) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":" // inside this array has 3 elements","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" // first is taskName, second element is start, third element is end time","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" super(strs[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" this.start \u003d strs[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" this.end \u003d strs[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.start, this.end);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" public String toFileLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" return String.format(\"E | %s | %s-%s\", super.toFileLine(), this.start, this.end);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":23}},{"path":"src/main/java/aichan/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"public class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":" private String taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":" private boolean done;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" public Task(String taskName) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" public static Task stringToTask(String str) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" char type \u003d str.charAt(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" boolean isMark \u003d (str.charAt(4) \u003d\u003d \u00271\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" if (str.length() \u003c 8) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"incorrect format in the file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" String description \u003d str.substring(8);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" if (type \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d new ToDo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" if (isMark) t.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" return t;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" } else if (type \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d description.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d new Deadline(arr);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" if (isMark) t.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" return t;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" } else if (type \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d description.split(\" \\\\| |-\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d new Event(arr);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":" if (isMark) t.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" return t;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"KumChaiYin"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"KumChaiYin"},"content":" public void mark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"KumChaiYin"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"KumChaiYin"},"content":" public void unmark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"KumChaiYin"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"KumChaiYin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"KumChaiYin"},"content":" String status \u003d this.done? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"KumChaiYin"},"content":" return status + \" \" + this.taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"KumChaiYin"},"content":" public String toFileLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"KumChaiYin"},"content":" int zeroOrOne \u003d this.done? 1: 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"KumChaiYin"},"content":" return zeroOrOne + \" | \" + this.taskName;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":58}},{"path":"src/main/java/aichan/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":" public ToDo(String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":" super(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" public String toFileLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" return String.format(\"T | %s\", super.toFileLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"blah","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"KumChaiYin":12}},{"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":"KumChaiYin"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\aichan\\*.java","lastModifiedDate":"2023-08-31"},{"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":"KumChaiYin"},"content":"java -classpath ..\\bin AiChan \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"KumChaiYin":2,"-":19}},{"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":"KumChaiYin"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/aichan/*.java","lastModifiedDate":"2023-08-31"},{"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":"KumChaiYin"},"content":"java -classpath ../bin AiChan \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":{"KumChaiYin":2,"-":36}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" mainClass.set(\"aichan.AiChan\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":" archiveBaseName \u003d \"aichan\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"KumChaiYin"},"content":" archiveVersion \u003d \"v0.1\"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"KumChaiYin":3,"-":40}},{"path":"src/main/java/aichan/ActionType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"public enum ActionType {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":" MARK(\"mark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":" TODO(\"todo\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" DEADLINE(\"deadline\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" EVENT(\"event\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" BYE(\"bye\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" private final String action;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" ActionType(String action) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" this.action \u003d action;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" public String toString(){","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" return this.action;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":21}},{"path":"src/main/java/aichan/AiChan.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"public class AiChan {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" public AiChan(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" } catch (AiChanException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" } catch (AiChanException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":" ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"KumChaiYin"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"KumChaiYin"},"content":" // System.out.println(\"hello world\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"KumChaiYin"},"content":" new AiChan(\"data/tasks.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":44}},{"path":"src/main/java/aichan/AiChanException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"public class AiChanException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":" public AiChanException(String errorMsg) {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":6}},{"path":"src/main/java/aichan/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.ActionType;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.AddDeadlineCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.AddEventCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.AddToDoCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.DeleteCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.ListCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.MarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":"import aichan.command.UnmarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" public static Command parse(String input) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" // command is user\u0027s input","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" // put the if-else logic to call different constructor (subclass)","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" if (input \u003d\u003d null ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please enter command, thanks!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" String inputs[] \u003d input.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" if (inputs[0].equals(ActionType.BYE.toString())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.LIST.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.MARK.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" return new MarkCommand(strToNum(checkLen(inputs)));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.UNMARK.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" return new UnmarkCommand(strToNum(checkLen(inputs)));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.TODO.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" return new AddToDoCommand(checkLen(inputs));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.DEADLINE.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" return new AddDeadlineCommand(checkLen(inputs));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.EVENT.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"KumChaiYin"},"content":" return new AddEventCommand(checkLen(inputs));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"KumChaiYin"},"content":" } else if (inputs[0].equals(ActionType.DELETE.toString())){","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"KumChaiYin"},"content":" return new DeleteCommand(strToNum(checkLen(inputs)));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"KumChaiYin"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"oops~ I\u0027m so sorry, but I don\u0027t know what that means :\u0027(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"KumChaiYin"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"KumChaiYin"},"content":" public static String checkLen(String[] inputs) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"KumChaiYin"},"content":" if (inputs.length \u003d\u003d 1 || inputs[1].length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"oops~ The description of a \" + inputs[0] + \" cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"KumChaiYin"},"content":" return inputs[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"KumChaiYin"},"content":" public static int strToNum(String intStr) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"KumChaiYin"},"content":" return Integer.parseInt(intStr);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"KumChaiYin"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please provide a task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"KumChaiYin":59}},{"path":"src/main/java/aichan/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" private final String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" public void save(TaskList tasks) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" FileWriter filewriter \u003d new FileWriter(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" File directory \u003d file.getParentFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" if (directory !\u003d null \u0026\u0026 !directory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" directory.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" for (Task task : tasks.getTasks()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" String line \u003d task.toFileLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" if (line !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" filewriter.write(line + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":" filewriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Error saving the tasks into the file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"KumChaiYin"},"content":" public ArrayList\u003cTask\u003e load() throws AiChanException{","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"KumChaiYin"},"content":" ArrayList\u003cTask\u003e arrTask \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"KumChaiYin"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"KumChaiYin"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"KumChaiYin"},"content":" return arrTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"KumChaiYin"},"content":" Scanner scn \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"KumChaiYin"},"content":" while (scn.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"KumChaiYin"},"content":" String line \u003d scn.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"KumChaiYin"},"content":" if (line.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"KumChaiYin"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"KumChaiYin"},"content":" Task task \u003d Task.stringToTask(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"KumChaiYin"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"KumChaiYin"},"content":" arrTask.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"KumChaiYin"},"content":" scn.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"KumChaiYin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Error loading tasks from file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"KumChaiYin"},"content":" return arrTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":65}},{"path":"src/main/java/aichan/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":" private ArrayList\u003cTask\u003e arrTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" this.arrTask \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" public TaskList(ArrayList\u003cTask\u003e arrTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" this.arrTask \u003d arrTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" arrTask.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" return arrTask.remove(index -1);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" return arrTask.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" return arrTask.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":" return this.arrTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":35}},{"path":"src/main/java/aichan/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":" public Ui(){","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" public void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(\"_______________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" String greet \u003d \"Hiya! I\u0027m Ai-chan~\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" \"Hey there, dear viewer, what\u0027s on your mind?\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" \"Is there anything I can do to sprinkle some magic into your day?\";","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" this.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(greet);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" this.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" public void showError(String errMsg) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(errMsg);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" public void showMessage(String msg) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":31}},{"path":"src/main/java/aichan/command/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" public AddDeadlineCommand(String str) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d str.split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" if(arr.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Behind description, please provide the deadline after \u0027 /by \u0027\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" this.task \u003d new Deadline(arr);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(String.format(\"Got it. I\u0027ve added this task:\\n %s\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" \"Now you have %d tasks in the list\", task, size));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"KumChaiYin":33}},{"path":"src/main/java/aichan/command/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" public AddEventCommand(String str) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d str.split(\" /from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" if(arr.length \u003c 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Behind description, \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" \"please provide \\nthe respective date/time after \u0027 /from \u0027 and \u0027 /to \u0027\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" this.task \u003d new Event(arr);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(String.format(\"Got it. I\u0027ve added this task:\\n %s\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" \"Now you have %d tasks in the list\", task, size));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"KumChaiYin":33}},{"path":"src/main/java/aichan/command/AddToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"public class AddToDoCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" public AddToDoCommand(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" this.task \u003d new ToDo(str);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(String.format(\"Got it. I\u0027ve added this task:\\n %s\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" \"Now you have %d tasks in the list\", task, size));","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"KumChaiYin":28}},{"path":"src/main/java/aichan/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"public class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" // control the main logic","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" // add/delete task + ui shows words","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":17}},{"path":"src/main/java/aichan/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" private int taskId;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" public DeleteCommand(int taskId) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" this.taskId \u003d taskId;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" // control the main logic","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" // add/delete task, show words","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" if (taskId \u003c 1 || taskId \u003e size) throw new AiChanException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" Task task \u003d tasks.deleteTask(taskId);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(String.format(\"Noted. I\u0027ve removed this task:\\n %s\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" \"Now you have %d tasks in the list\", task, size - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":29}},{"path":"src/main/java/aichan/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"public class ExitCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" // no interaction with tasks","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(\"Ta-da! It\u0027s time to go~ Keep smiling till we reunite!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":17}},{"path":"src/main/java/aichan/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" for (int i \u003d 1; i \u003c\u003d size; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(i + \".\" + tasks.getTask(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":22}},{"path":"src/main/java/aichan/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" private int taskId;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" public MarkCommand(int taskId) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" this.taskId \u003d taskId;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" if (taskId \u003c 1 || taskId \u003e size) throw new AiChanException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" Task task \u003d tasks.getTask(taskId);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(\"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":28}},{"path":"src/main/java/aichan/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import aichan.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"public class UnmarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" private int taskId;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" public UnmarkCommand(int taskId) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" this.taskId \u003d taskId;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" int size \u003d tasks.getSize();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" if (taskId \u003c 1 || taskId \u003e size) throw new AiChanException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" Task task \u003d tasks.getTask(taskId);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" ui.showMessage(\"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" public boolean isExit(){","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":28}},{"path":"src/main/java/aichan/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" // private String dueDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" private LocalDateTime dueDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" public Deadline(String[] strs) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" // first is taskName, second element is dueDate","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" super(strs[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" // assume that strs[1] follow the format 25/12/2019 1800","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" this.dueDate \u003d LocalDateTime.parse(strs[1], formatter); // 2019-12-25T18:00","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please enter the date and time with this format: 25/12/2019 1800\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"); // Dec 25 2019 1800","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" // System.out.println(this.dueDate.format(formatter2));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.dueDate.format(formatter2));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":" public String toFileLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":" return String.format(\"D | %s | %s\", super.toFileLine(), this.dueDate.format(formatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":37}},{"path":"src/main/java/aichan/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" public Event(String[] strs) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" // inside this array has 3 elements","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" // first is taskName, second element is start, third element is end time","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" super(strs[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" // assume that strs[1] follow the format 25/12/2019 1800","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" this.start \u003d LocalDateTime.parse(strs[1], formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" this.end \u003d LocalDateTime.parse(strs[2], formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"Please enter the date and time with this format: 25/12/2019 1800\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"); // Dec 25 2019 1800","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" return String.format(\"[E]%s (from: %s to: %s)\",","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" super.toString(), this.start.format(formatter2), this.end.format(formatter2));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":" public String toFileLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"KumChaiYin"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"KumChaiYin"},"content":" return String.format(\"E | %s | %s - %s\",","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"KumChaiYin"},"content":" super.toFileLine(), this.start.format(formatter), this.end.format(formatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":40}},{"path":"src/main/java/aichan/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"public class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":" private String taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":" private boolean done;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" public Task(String taskName) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" public static Task stringToTask(String str) throws AiChanException {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" char type \u003d str.charAt(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" boolean isMark \u003d (str.charAt(4) \u003d\u003d \u00271\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" if (str.length() \u003c 8) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" throw new AiChanException(\"incorrect format in the file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" String description \u003d str.substring(8);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" if (type \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d new ToDo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" if (isMark) t.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" return t;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" } else if (type \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d description.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d new Deadline(arr);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" if (isMark) t.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" return t;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" } else if (type \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d description.split(\" \\\\| | - \");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" Task t \u003d new Event(arr);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":" if (isMark) t.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" return t;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"KumChaiYin"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"KumChaiYin"},"content":" public void mark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"KumChaiYin"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"KumChaiYin"},"content":" public void unmark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"KumChaiYin"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"KumChaiYin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"KumChaiYin"},"content":" String status \u003d this.done? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"KumChaiYin"},"content":" return status + \" \" + this.taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"KumChaiYin"},"content":" public String toFileLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"KumChaiYin"},"content":" int zeroOrOne \u003d this.done? 1: 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"KumChaiYin"},"content":" return zeroOrOne + \" | \" + this.taskName;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":58}},{"path":"src/main/java/aichan/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":" public ToDo(String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":" super(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" public String toFileLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" return String.format(\"T | %s\", super.toFileLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"KumChaiYin":17}},{"path":"src/test/java/aichan/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" public void testGetSize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" ToDo todo1 \u003d new ToDo(\"return book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" ToDo todo2 \u003d new ToDo(\"buy milk\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" tasks.addTask(todo1);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" tasks.addTask(todo2);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" assertEquals(2, tasks.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" public void testGetTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":" ToDo todo1 \u003d new ToDo(\"return book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" ToDo todo2 \u003d new ToDo(\"buy milk\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" tasks.addTask(todo1);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" tasks.addTask(todo2);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" assertEquals(todo2, tasks.getTask(2));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"KumChaiYin":28}},{"path":"src/test/java/aichan/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"package aichan.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"import aichan.AiChanException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"import aichan.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"public class EventTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":" public void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d {\"meeting\", \"13/12/2019 1200\", \"13/12/2019 1400\"};","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":" String result;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"KumChaiYin"},"content":" Event event \u003d new Event(arr);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"KumChaiYin"},"content":" result \u003d event.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"KumChaiYin"},"content":" } catch (AiChanException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"KumChaiYin"},"content":" result \u003d e.getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"KumChaiYin"},"content":" assertEquals(\"[E][ ] meeting (from: Dec 13 2019 1200 to: Dec 13 2019 1400)\", result);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"KumChaiYin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"KumChaiYin"},"content":" public void testToFileLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"KumChaiYin"},"content":" String[] arr \u003d {\"meeting\", \"13/12/2019 1200\", \"13/12/2019 1400\"};","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"KumChaiYin"},"content":" String result;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"KumChaiYin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"KumChaiYin"},"content":" Event event \u003d new Event(arr);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"KumChaiYin"},"content":" result \u003d event.toFileLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"KumChaiYin"},"content":" } catch (AiChanException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"KumChaiYin"},"content":" result \u003d e.getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"KumChaiYin"},"content":" assertEquals(\"E | 0 | meeting | 13/12/2019 1200 - 13/12/2019 1400\", result);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"KumChaiYin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"KumChaiYin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"KumChaiYin":35}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"KumChaiYin"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"KumChaiYin"},"content":"deadline return book /by 18/10/2023 1800","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"KumChaiYin"},"content":"event project meeting /from 15/9/2023 0900 /to 15/9/2023 1100","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"KumChaiYin"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"KumChaiYin"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"KumChaiYin"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"KumChaiYin"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"KumChaiYin"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"KumChaiYin"},"content":"blah","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"KumChaiYin"},"content":"delete 3","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"KumChaiYin"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"KumChaiYin"},"content":"delete 1","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"KumChaiYin"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"KumChaiYin":14}},{"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":"KumChaiYin"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\aichan\\*.java ..\\src\\main\\java\\aichan\\command\\*.java ..\\src\\main\\java\\aichan\\task\\*.java","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"KumChaiYin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"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":19,"author":{"gitId":"KumChaiYin"},"content":"java -classpath ..\\bin AiChan \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"KumChaiYin":3,"-":19}},{"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":"KumChaiYin"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/aichan/*.java","lastModifiedDate":"2023-08-31"},{"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":"KumChaiYin"},"content":"java -classpath ../bin AiChan \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":{"KumChaiYin":2,"-":36}}] diff --git a/KumChaiYin_ip_master/commits.json b/KumChaiYin_ip_master/commits.json index ca4138c5..c98caff9 100644 --- a/KumChaiYin_ip_master/commits.json +++ b/KumChaiYin_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"KumChaiYin":[{"date":"2023-08-22","commitResults":[{"hash":"8184735d84e3da696cf174c2b39bf16f301ea152","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"dc1178fa83bd86a15c3b29a889fc445ee54c5109","isMergeCommit":false,"messageTitle":"lvl1 echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"656d21d0ca20c9bdf96f30e78615fe5d3c179e85","isMergeCommit":false,"messageTitle":"lvl2 Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"a96c2d58f19d631c566d79581facf77e46d08a24","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":8}}}]},{"date":"2023-08-24","commitResults":[{"hash":"cd947809f6a67424ea4dd29e366f3fe9f35cd480","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":2}}},{"hash":"8eefb131928a37b8b7e9dd36b3fb0eaa93480327","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":4,"deletions":16},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"ef6dd5ea87f3cb07e1482f52108430ec2128651a","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":43}}},{"hash":"996cfaab044af4bd1a849a80e598f93dc0d64efa","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":30}}},{"hash":"55567e2bc50439e25b5457bb6ef92f66cfb62450","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":9}}},{"hash":"591ab9d3344baab74add00c94908db6049167206","isMergeCommit":false,"messageTitle":"update testing","messageBody":"","tags":["update-testing"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"5b8e0b108da0401fc614e1674db6e708462cb6e7","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":277,"deletions":0}}},{"hash":"2d6fdb8eac8f3726e1eafbead24ea87cc1f5b9ec","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":571,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"a409b0413c6b9c657ab0fd7668a3220f3437044a","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["branch-lvl7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":294,"deletions":551}}},{"hash":"a53cd9de733dc08bbf30771eecf1bd6228682f70","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 no fast-forward merge branch-Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"KumChaiYin":{"java":785,"md":0,"fxml":0,"sh":2,"bat":2,"gradle":0,"txt":14}},"authorContributionVariance":{"KumChaiYin":83628.99},"authorDisplayNameMap":{"KumChaiYin":"CS2103T-W16-3 KUM .. YIN"}} +{"authorDailyContributionsMap":{"KumChaiYin":[{"date":"2023-08-22","commitResults":[{"hash":"8184735d84e3da696cf174c2b39bf16f301ea152","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"dc1178fa83bd86a15c3b29a889fc445ee54c5109","isMergeCommit":false,"messageTitle":"lvl1 echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"656d21d0ca20c9bdf96f30e78615fe5d3c179e85","isMergeCommit":false,"messageTitle":"lvl2 Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"a96c2d58f19d631c566d79581facf77e46d08a24","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":8}}}]},{"date":"2023-08-24","commitResults":[{"hash":"cd947809f6a67424ea4dd29e366f3fe9f35cd480","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":2}}},{"hash":"8eefb131928a37b8b7e9dd36b3fb0eaa93480327","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":4,"deletions":16},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"ef6dd5ea87f3cb07e1482f52108430ec2128651a","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":43}}},{"hash":"996cfaab044af4bd1a849a80e598f93dc0d64efa","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":30}}},{"hash":"55567e2bc50439e25b5457bb6ef92f66cfb62450","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":9}}},{"hash":"591ab9d3344baab74add00c94908db6049167206","isMergeCommit":false,"messageTitle":"update testing","messageBody":"","tags":["update-testing"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"5b8e0b108da0401fc614e1674db6e708462cb6e7","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":277,"deletions":0}}},{"hash":"2d6fdb8eac8f3726e1eafbead24ea87cc1f5b9ec","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":571,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"a409b0413c6b9c657ab0fd7668a3220f3437044a","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["branch-lvl7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":294,"deletions":551}}},{"hash":"a53cd9de733dc08bbf30771eecf1bd6228682f70","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 no fast-forward merge branch-Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"8c4c9340c8a328da881dfe08e11139fbe7d8dccc","isMergeCommit":false,"messageTitle":"branch lvl8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":51,"deletions":188},"bat":{"insertions":2,"deletions":1}}},{"hash":"1b7cb993a2ba3a7a0b69eff6755f0cb35f2b67ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"7462a79920dbfdab511a6759d84e36df8450faf2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 merge add-gradle-support.","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"06cf98edb9744362eb0ae15fbcf769ce70e3b10b","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":0}}},{"hash":"3d6925e34d0a26d5a098240a1780ce3dde746324","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"KumChaiYin":{"java":711,"md":0,"fxml":0,"sh":2,"bat":3,"gradle":3,"txt":14}},"authorContributionVariance":{"KumChaiYin":119844.25},"authorDisplayNameMap":{"KumChaiYin":"CS2103T-W16-3 KUM .. YIN"}} diff --git a/Leb14_ip_master/authorship.json b/Leb14_ip_master/authorship.json index 7435b69c..f3840092 100644 --- a/Leb14_ip_master/authorship.json +++ b/Leb14_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/TaskList.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"T | 0 | add","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"D | 0 | sleep | 31 Aug 2023 4:00AM","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"T | 0 | add","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"T | 0 | add","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"T | 1 | sleep","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"E | 0 | sleep | 23 Aug 2023 6:00PM | 23 Aug 2023 6:00PM","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"T | 0 | add","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"T | 0 | sleep","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"D | 0 | sleep | 23 Aug 2023 8:00PM","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"T | 0 | add","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":10}},{"path":"src/main/java/Comm/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import TaskManager.Deadlines;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class AddDeadlineCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String dueDateStr;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public AddDeadlineCommand(String userInput, String dueDateStr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.dueDateStr \u003d dueDateStr;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList task, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" Deadlines newdeadlines \u003d new Deadlines(userInput, dueDateStr);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" if (newdeadlines.isValid()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" task.add(newdeadlines);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" FileHandler.writeTasksToFile(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" ui.addedDeadlines(newdeadlines);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":29}},{"path":"src/main/java/Comm/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import TaskManager.Events;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class AddEventCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String to;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" private String from;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public AddEventCommand(String userInput, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList task, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" Events newEvent \u003d new Events(userInput, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" if (newEvent.isValid()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" task.add(newEvent);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" FileHandler.writeTasksToFile(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" ui.addedEvent(newEvent);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":38}},{"path":"src/main/java/Comm/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import TaskManager.ToDos;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class AddTodoCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" public AddTodoCommand(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" ToDos newtodo \u003d new ToDos(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" if (newtodo.isValid()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" t.add(newtodo);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" f.writeTasksToFile(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" ui.addedTodo(newtodo);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":27}},{"path":"src/main/java/Comm/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"public class ByeCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" public ByeCommand(){","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" ui.bye();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":19}},{"path":"src/main/java/Comm/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" public abstract void execute(TaskList t, Ui ui, FileHandler f);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":15}},{"path":"src/main/java/Comm/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import TaskManager.Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public DeleteCommand(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" int index \u003d Integer.parseInt(userInput.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" Tasks deleted \u003d t.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" t.remove(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" FileHandler.writeTasksToFile(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" ui.delete(deleted);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" ui.IOOBExceptionMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":31}},{"path":"src/main/java/Comm/EmptyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class EmptyCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" public EmptyCommand(){","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" ui.empty();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":20}},{"path":"src/main/java/Comm/ErrorCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class ErrorCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" public ErrorCommand(){","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":20}},{"path":"src/main/java/Comm/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" public ListCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" ui.List();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":20}},{"path":"src/main/java/Comm/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import TaskManager.Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public MarkCommand(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" int index \u003d Integer.parseInt(userInput.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" t.get(index - 1).markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" FileHandler.writeTasksToFile(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" ui.mark(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" ui.IOOBExceptionMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":30}},{"path":"src/main/java/Comm/MiscCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class MiscCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" public MiscCommand(){","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" ui.misc();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":20}},{"path":"src/main/java/Comm/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class UnmarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public UnmarkCommand(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" int index \u003d Integer.parseInt(userInput.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" t.get(index - 1).markNotDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" FileHandler.writeTasksToFile(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" ui.unmark(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" ui.IOOBExceptionMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":30}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"import Parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import Comm.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private FileHandler fileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" private TaskList task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" this.fileHandler \u003d new FileHandler(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" this.task \u003d new TaskList(FileHandler.readTasksFromFile());","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" this.ui \u003d new Ui(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" c.execute(task, ui, fileHandler);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" new Duke(\"data/TaskList.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":33,"-":4}},{"path":"src/main/java/Parser/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class DateTime {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" private DateTimeFormatter inputFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private DateTimeFormatter outputFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public DateTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.inputFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" this.outputFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mma\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" public String formatDateTime(String dateTimeStr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(dateTimeStr, inputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" return dateTime.format(outputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" return \"Invalid format\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":24}},{"path":"src/main/java/Parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Comm.ListCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import Comm.AddDeadlineCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"import Comm.AddEventCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"import Comm.AddTodoCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"import Comm.ByeCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"import Comm.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"import Comm.DeleteCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"import Comm.EmptyCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"import Comm.ErrorCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"import Comm.MarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"import Comm.MiscCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"import Comm.UnmarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" public static Command parse (String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" if (str.isEmpty()) { //empty command","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" return new EmptyCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" } else if (str.startsWith(\"todo\")) { //todo command","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" String[] split \u003d str.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" return new AddTodoCommand(str.substring(split[0].length()).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Hey! I think you forget to enter the todo description or leave a space after the command!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" return new ErrorCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":" } else if (str.startsWith(\"deadline\")) { // deadline command","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" String[] split \u003d str.split(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" if (str.equals(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please enter the task description or leave a space after the command!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":" } else if (split.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please provide a deadline for your task in this format dd/MM/yyyy HHmm!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":" DateTime dateTime \u003d new DateTime();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" String formattedDate \u003d dateTime.formatDateTime(split[1].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" String taskDesc \u003d split[0].trim().substring(8).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":" if (formattedDate.equals(\"Invalid format\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please provide a deadline for your task in this format dd/MM/yyyy HHmm!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":" return new AddDeadlineCommand(taskDesc, formattedDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Leb14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Leb14"},"content":" return new ErrorCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Leb14"},"content":" } else if (str.startsWith(\"event\")) { // event command","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Leb14"},"content":" if (str.equals(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please enter the event description or leave a space after the command!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Leb14"},"content":" String[] split_1 \u003d str.split(\"/from\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Leb14"},"content":" if (split_1.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please provide a time range for your event in this format /from dd/MM/yyyy HHmm /to HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Leb14"},"content":" String[] split_2 \u003d split_1[1].split(\"/to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Leb14"},"content":" if (split_2.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please provide an end time for your event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Leb14"},"content":" DateTime dateTime \u003d new DateTime();","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Leb14"},"content":" String formattedStartTime \u003d dateTime.formatDateTime(split_2[0].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Leb14"},"content":" String formattedEndTime \u003d dateTime.formatDateTime(split_2[1].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Leb14"},"content":" String taskDesc \u003d split_1[0].trim().substring(5).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Leb14"},"content":" if (formattedStartTime.equals(\"Invalid format\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please provide a time range for your event in this format /from dd/MM/yyyy HHmm /to dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Leb14"},"content":" if (formattedEndTime.equals(\"Invalid format\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please provide an end time for your event in this format dd/MM/yyyy HHmm!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Leb14"},"content":" return new AddEventCommand(taskDesc, formattedStartTime, formattedEndTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Leb14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Leb14"},"content":" return new ErrorCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Leb14"},"content":" } else if (str.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Leb14"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Leb14"},"content":" } else if (str.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"Leb14"},"content":" return new DeleteCommand(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"Leb14"},"content":" } else if (str.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"Leb14"},"content":" return new MarkCommand(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"Leb14"},"content":" } else if (str.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"Leb14"},"content":" return new UnmarkCommand(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"Leb14"},"content":" } else if (str.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"Leb14"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"Leb14"},"content":" return new MiscCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":138}},{"path":"src/main/java/Storage/FileHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"import TaskManager.Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"import TaskManager.Events;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"import TaskManager.ToDos;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"import TaskManager.Deadlines;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"public class FileHandler {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" private static String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" public FileHandler(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" public static ArrayList\u003cTasks\u003e readTasksFromFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" ArrayList\u003cTasks\u003e task \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" String folderPath \u003d \"data\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" Files.createDirectories(Paths.get(folderPath));","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Failed to create the directory: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" if (!Files.exists(path)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" Files.createFile(path);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Failed to create the file: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" FileReader reader \u003d new FileReader(\"data/TaskList.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" Scanner scanner \u003d new Scanner(reader);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" boolean contentCheck \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":" if (!contentCheck) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" } else if (line.startsWith(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":" String[] split \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":" if (split.length \u003e 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" throw new IndexOutOfBoundsException(\"There is an error in your Todos content format!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":" } if (split.length \u003c 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Leb14"},"content":" throw new IndexOutOfBoundsException(\"There is missing info for your Todos content in the file!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Leb14"},"content":" ToDos newtodo \u003d new ToDos(split[2], split[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Leb14"},"content":" task.add(newtodo);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Leb14"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Leb14"},"content":" contentCheck \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Leb14"},"content":" } else if (line.startsWith(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Leb14"},"content":" String[] split \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Leb14"},"content":" if (split.length \u003e 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Leb14"},"content":" throw new IndexOutOfBoundsException(\"There is an error in your Deadlines content format!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Leb14"},"content":" } if (split.length \u003c 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Leb14"},"content":" throw new IndexOutOfBoundsException(\"There is missing info for your Deadlines content in the file!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Leb14"},"content":" Deadlines newdeadline \u003d new Deadlines(split[1], split[2], split[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Leb14"},"content":" task.add(newdeadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Leb14"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Leb14"},"content":" contentCheck \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Leb14"},"content":" } else if (line.startsWith(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Leb14"},"content":" String[] split \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Leb14"},"content":" if (split.length \u003e 5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Leb14"},"content":" throw new IndexOutOfBoundsException(\"There is an error in your Events content format!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Leb14"},"content":" } if (split.length \u003c 5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Leb14"},"content":" throw new IndexOutOfBoundsException(\"There is missing info for your Events content in the file!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Leb14"},"content":" Events newevent \u003d new Events(split[1], split[2], split[3], split[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Leb14"},"content":" task.add(newevent);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Leb14"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Leb14"},"content":" reader.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Leb14"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Leb14"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Leb14"},"content":" public static void writeTasksToFile(TaskList task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Leb14"},"content":" FileWriter writer \u003d new FileWriter(\"data/TaskList.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Leb14"},"content":" for (Tasks t : task.getTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Leb14"},"content":" writer.write(t.toFileString() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Leb14"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Leb14"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":112}},{"path":"src/main/java/Storage/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import TaskManager.Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":" private ArrayList\u003cTasks\u003e task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" public TaskList(ArrayList\u003cTasks\u003e task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public void add(Tasks t) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" task.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" return task.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" return task.isEmpty();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" public void remove(int i) {task.remove(i);}","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" public ArrayList\u003cTasks\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" public Tasks get(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" return task.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":34}},{"path":"src/main/java/TaskManager/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"public class Deadlines extends Tasks {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" private String taskDesc;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String dueDateStr;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" private LocalDateTime dueDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public Deadlines(String userInput, String dueDateStr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" this.dueDateStr \u003d dueDateStr;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" this.dueDate \u003d LocalDateTime.parse(dueDateStr, DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mma\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" public Deadlines(String completion, String taskDesc, String duedate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" if (completion.equals(\"1\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d taskDesc.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" this.dueDateStr \u003d duedate.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" this.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d taskDesc.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" this.dueDateStr \u003d duedate.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Hey! There is an invalid todo task in the task list!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" public boolean isValid() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" return taskDesc !\u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":" String x;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":" if (this.status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" x \u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" x \u003d \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":" String str1 \u003d String.format(\"%s\", x);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" return \"D | \" + str1 + \" | \" + this.taskDesc + \" | \" + this.dueDateStr;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":" String x;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":" if (this.status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" x \u003d \"X\";","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Leb14"},"content":" x \u003d \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Leb14"},"content":" String str1 \u003d String.format(\"[%s] \", x);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Leb14"},"content":" String str2 \u003d String.format(\" (by: %s)\", this.dueDateStr);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Leb14"},"content":" return \"[D]\" + str1 + this.taskDesc + str2 ;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":62}},{"path":"src/main/java/TaskManager/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"public class Events extends Tasks {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":" private String taskDesc;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" private String from;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String to;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" private LocalDateTime fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" private LocalDateTime toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public Events(String userInput, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" public Events(String completion, String taskDesc, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" if (completion.equals(\"1\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d taskDesc.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" this.from \u003d from.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" this.to \u003d to.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" this.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d taskDesc.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" this.from \u003d from.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" this.to \u003d to.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Hey! There is an invalid todo task in the task list!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" public boolean isValid() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" return taskDesc !\u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" String x;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" if (this.status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" x \u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":" x \u003d \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" String str1 \u003d String.format(\"%s\", x);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" return \"E | \" + str1 + \" | \" + this.taskDesc + \" | \" + this.from + \" | \" + this.to;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":" String x;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Leb14"},"content":" if (this.status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Leb14"},"content":" x \u003d \"X\";","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Leb14"},"content":" x \u003d \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Leb14"},"content":" String str1 \u003d String.format(\"[%s] \", x);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Leb14"},"content":" String str2 \u003d String.format(\" (from: %s to: %s)\", this.from, this.to);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Leb14"},"content":" return \"[E]\" + str1 + this.taskDesc + str2;","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":65}},{"path":"src/main/java/TaskManager/Tasks.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"public abstract class Tasks {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":" boolean status;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":" static int count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":" public abstract String toFileString();","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" public Tasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public void markDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.status \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" public void markNotDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":18}},{"path":"src/main/java/TaskManager/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"public class ToDos extends Tasks {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":" private String taskDesc;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":" public ToDos(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" public ToDos(String taskDesc, String completion) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" if (completion.equals(\"1\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d taskDesc.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" this.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d taskDesc.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Hey! There is an invalid todo task in the task list!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" public boolean isValid() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" return taskDesc !\u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" String x;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" if (this.status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" x \u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" x \u003d \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" String str1 \u003d String.format(\"%s\", x);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" return \"T | \" + str1 + \" | \" + this.taskDesc;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" String x;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" if (this.status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" x \u003d \"X\";","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":" x \u003d \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":" String str1 \u003d String.format(\"[%s] \", x);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" return \"[T]\" + str1 + this.taskDesc;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":51}},{"path":"src/main/java/Ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import TaskManager.Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import TaskManager.Events;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"import TaskManager.ToDos;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"import TaskManager.Deadlines;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" private final String name \u003d \"Yours\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" private String word;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" public Ui(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" if (taskList.size() \u003c 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" this.word \u003d \"task\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" this.word \u003d \"tasks\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" String logo \u003d \"____ ____ ________ ___ ___ __________ _____\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" + \"\\\\ \\\\ / / | ____ | | | | | | _____ | / ____|\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" + \" \\\\ \\\\/ / | | | | | | | | | |___| | | (___\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" + \" \\\\ / | | | | | | | | | ______| \\\\ ___ \\\\\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" + \" | | | | | | | | | | | \\\\ \\\\ | |\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" + \" | | | |____| | | | | | | | \\\\ \\\\ ____) |\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" + \" |____| |________| \\\\_________/ |__| \\\\__\\\\ |_____/\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" String name \u003d \"Yours\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Hello! I\u0027m \" + name);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" System.out.println(\"____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" return command;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" public void addedTodo(ToDos newTodo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Help you added a new to-do.\\n \" + newTodo.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" System.out.println(\" Now you have \" + taskList.size() + String.format(\" %s in the list.\", word));","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" public void addedDeadlines(Deadlines newDeadLine) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Help you added a new deadline.\\n \" + newDeadLine.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Leb14"},"content":" System.out.println(\" Now you have \" + taskList.size() + String.format(\" %s in the list.\", word));","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Leb14"},"content":" public void addedEvent(Events newEvent) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Help you added a new deadline.\\n \" + newEvent.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Leb14"},"content":" System.out.println(\" Now you have \" + taskList.size() + String.format(\" %s in the list.\", word));","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Leb14"},"content":" public void List() {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Here are the tasks in your list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Leb14"},"content":" for (int i \u003d 0 ; i \u003c taskList.size(); i ++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Leb14"},"content":" int j \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + j + \". \" + taskList.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Leb14"},"content":" public void delete(Tasks deleted) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Helped you deleted this task\\n \" + deleted.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Leb14"},"content":" System.out.println(\" Now you have \" + taskList.size() + String.format(\" %s in the list.\", word));","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Leb14"},"content":" public void mark(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Well done! I\u0027ve marked this task as done :\");","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + taskList.get(index - 1).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Leb14"},"content":" public void unmark(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Alright, I\u0027ve marked this task as not done yet\");","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + taskList.get(index - 1).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Leb14"},"content":" public void bye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Leb14"},"content":" public void empty() {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Please enter something!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Leb14"},"content":" public void misc() {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": I don\u0027t really understand what you mean.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Leb14"},"content":" public void IOOBExceptionMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Please enter the correct task\u0027s index number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":119}},{"path":"text-ui-test/data/TaskList.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"T | 0 | add","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":1}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"blah","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"what","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"list","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"todo","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"todo borrow book","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"deadline","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"deadline return book","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"event","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"event project meeting","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"list","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":"mark 2","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"mark 3","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":"unmark 3","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":"list","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"delete 2","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":"list","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":"bye","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":22}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter:5.8.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter:5.8.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter:5.8.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"-":42,"Leb14":7}},{"path":"data/TaskList.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"T | 0 | TestTodo","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"D | 0 | TestDeadline | 23 Aug 2023 6:00pm","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"E | 0 | TestEvent | 23 Aug 2023 6:00pm | 23 Aug 2023 6:00pm","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Leb14":3}},{"path":"src/main/java/Comm/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import TaskManager.Deadlines;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class AddDeadlineCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String dueDateStr;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public AddDeadlineCommand(String userInput, String dueDateStr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.dueDateStr \u003d dueDateStr;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList task, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" Deadlines newdeadlines \u003d new Deadlines(userInput, dueDateStr);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" if (newdeadlines.isValid()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" task.add(newdeadlines);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" FileHandler.writeTasksToFile(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" ui.addedDeadlines(newdeadlines);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":29}},{"path":"src/main/java/Comm/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import TaskManager.Events;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class AddEventCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String to;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" private String from;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public AddEventCommand(String userInput, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList task, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" Events newEvent \u003d new Events(userInput, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" if (newEvent.isValid()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" task.add(newEvent);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" FileHandler.writeTasksToFile(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" ui.addedEvent(newEvent);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":38}},{"path":"src/main/java/Comm/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import TaskManager.ToDos;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class AddTodoCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" public AddTodoCommand(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" ToDos newtodo \u003d new ToDos(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" if (newtodo.isValid()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" t.add(newtodo);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" f.writeTasksToFile(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" ui.addedTodo(newtodo);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":27}},{"path":"src/main/java/Comm/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"public class ByeCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" public ByeCommand(){","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" ui.bye();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":19}},{"path":"src/main/java/Comm/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" public abstract void execute(TaskList t, Ui ui, FileHandler f);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":15}},{"path":"src/main/java/Comm/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import TaskManager.Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public DeleteCommand(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" int index \u003d Integer.parseInt(userInput.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" Tasks deleted \u003d t.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" t.remove(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" FileHandler.writeTasksToFile(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" ui.delete(deleted);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" ui.IOOBExceptionMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":31}},{"path":"src/main/java/Comm/EmptyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class EmptyCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" public EmptyCommand(){","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" ui.empty();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":20}},{"path":"src/main/java/Comm/ErrorCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class ErrorCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" public ErrorCommand(){","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":20}},{"path":"src/main/java/Comm/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" public ListCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" ui.List();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":20}},{"path":"src/main/java/Comm/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import TaskManager.Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public MarkCommand(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" int index \u003d Integer.parseInt(userInput.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" t.get(index - 1).markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" FileHandler.writeTasksToFile(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" ui.mark(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" ui.IOOBExceptionMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":30}},{"path":"src/main/java/Comm/MiscCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class MiscCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" public MiscCommand(){","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" ui.misc();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":20}},{"path":"src/main/java/Comm/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Comm;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class UnmarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public UnmarkCommand(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" public void execute(TaskList t, Ui ui, FileHandler f) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" int index \u003d Integer.parseInt(userInput.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" t.get(index - 1).markNotDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" FileHandler.writeTasksToFile(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" ui.unmark(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" ui.IOOBExceptionMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":30}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"import Parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import Storage.FileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import Comm.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private FileHandler fileHandler;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" private TaskList task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" this.fileHandler \u003d new FileHandler(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" this.task \u003d new TaskList(FileHandler.readTasksFromFile());","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" this.ui \u003d new Ui(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" c.execute(task, ui, fileHandler);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" new Duke(\"data/TaskList.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":33,"-":4}},{"path":"src/main/java/Parser/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class DateTime {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" private DateTimeFormatter inputFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private DateTimeFormatter outputFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public DateTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.inputFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" this.outputFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mma\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" public String formatDateTime(String dateTimeStr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(dateTimeStr, inputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" return dateTime.format(outputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" return \"Invalid format\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":24}},{"path":"src/main/java/Parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Comm.ListCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import Comm.AddDeadlineCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"import Comm.AddEventCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"import Comm.AddTodoCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"import Comm.ByeCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"import Comm.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"import Comm.DeleteCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"import Comm.EmptyCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"import Comm.ErrorCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"import Comm.MarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"import Comm.MiscCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"import Comm.UnmarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" public static Command parse (String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" if (str.isEmpty()) { //empty command","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" return new EmptyCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" } else if (str.startsWith(\"todo\")) { //todo command","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" String[] split \u003d str.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" return new AddTodoCommand(str.substring(split[0].length()).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Hey! I think you forget to enter the todo description or leave a space after the command!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" return new ErrorCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":" } else if (str.startsWith(\"deadline\")) { // deadline command","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" String[] split \u003d str.split(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" if (str.equals(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please enter the task description or leave a space after the command!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":" } else if (split.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please provide a deadline for your task in this format dd/MM/yyyy HHmm!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":" DateTime dateTime \u003d new DateTime();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" String formattedDate \u003d dateTime.formatDateTime(split[1].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" String taskDesc \u003d split[0].trim().substring(8).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":" if (formattedDate.equals(\"Invalid format\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please provide a deadline for your task in this format dd/MM/yyyy HHmm!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":" return new AddDeadlineCommand(taskDesc, formattedDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Leb14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Leb14"},"content":" return new ErrorCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Leb14"},"content":" } else if (str.startsWith(\"event\")) { // event command","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Leb14"},"content":" if (str.equals(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please enter the event description or leave a space after the command!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Leb14"},"content":" String[] split_1 \u003d str.split(\"/from\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Leb14"},"content":" if (split_1.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please provide a time range for your event in this format /from dd/MM/yyyy HHmm /to HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Leb14"},"content":" String[] split_2 \u003d split_1[1].split(\"/to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Leb14"},"content":" if (split_2.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please provide an end time for your event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Leb14"},"content":" DateTime dateTime \u003d new DateTime();","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Leb14"},"content":" String formattedStartTime \u003d dateTime.formatDateTime(split_2[0].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Leb14"},"content":" String formattedEndTime \u003d dateTime.formatDateTime(split_2[1].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Leb14"},"content":" String taskDesc \u003d split_1[0].trim().substring(5).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Leb14"},"content":" if (formattedStartTime.equals(\"Invalid format\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please provide a time range for your event in this format /from dd/MM/yyyy HHmm /to dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Leb14"},"content":" if (formattedEndTime.equals(\"Invalid format\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Leb14"},"content":" throw new IllegalArgumentException(\"Hey! Please provide an end time for your event in this format dd/MM/yyyy HHmm!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Leb14"},"content":" return new AddEventCommand(taskDesc, formattedStartTime, formattedEndTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Leb14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Leb14"},"content":" return new ErrorCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Leb14"},"content":" } else if (str.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Leb14"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Leb14"},"content":" } else if (str.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"Leb14"},"content":" return new DeleteCommand(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"Leb14"},"content":" } else if (str.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"Leb14"},"content":" return new MarkCommand(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"Leb14"},"content":" } else if (str.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"Leb14"},"content":" return new UnmarkCommand(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"Leb14"},"content":" } else if (str.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"Leb14"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"Leb14"},"content":" return new MiscCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":138}},{"path":"src/main/java/Storage/FileHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"import TaskManager.Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"import TaskManager.Events;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"import TaskManager.ToDos;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"import TaskManager.Deadlines;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":"public class FileHandler {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" private static String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" public FileHandler(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" public static ArrayList\u003cTasks\u003e readTasksFromFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" ArrayList\u003cTasks\u003e task \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" String folderPath \u003d \"data\";","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" Files.createDirectories(Paths.get(folderPath));","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Failed to create the directory: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" if (!Files.exists(path)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" Files.createFile(path);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Failed to create the file: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" FileReader reader \u003d new FileReader(\"data/TaskList.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" Scanner scanner \u003d new Scanner(reader);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":" boolean contentCheck \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" if (!contentCheck) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":" } else if (line.startsWith(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":" String[] split \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" if (split.length \u003e 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":" throw new IndexOutOfBoundsException(\"There is an error in your Todos content format!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Leb14"},"content":" } if (split.length \u003c 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Leb14"},"content":" throw new IndexOutOfBoundsException(\"There is missing info for your Todos content in the file!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Leb14"},"content":" ToDos newtodo \u003d new ToDos(split[2], split[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Leb14"},"content":" task.add(newtodo);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Leb14"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Leb14"},"content":" contentCheck \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Leb14"},"content":" } else if (line.startsWith(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Leb14"},"content":" String[] split \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Leb14"},"content":" if (split.length \u003e 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Leb14"},"content":" throw new IndexOutOfBoundsException(\"There is an error in your Deadlines content format!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Leb14"},"content":" } if (split.length \u003c 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Leb14"},"content":" throw new IndexOutOfBoundsException(\"There is missing info for your Deadlines content in the file!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Leb14"},"content":" Deadlines newdeadline \u003d new Deadlines(split[1], split[2], split[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Leb14"},"content":" task.add(newdeadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Leb14"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Leb14"},"content":" contentCheck \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Leb14"},"content":" } else if (line.startsWith(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Leb14"},"content":" String[] split \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Leb14"},"content":" if (split.length \u003e 5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Leb14"},"content":" throw new IndexOutOfBoundsException(\"There is an error in your Events content format!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Leb14"},"content":" } if (split.length \u003c 5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Leb14"},"content":" throw new IndexOutOfBoundsException(\"There is missing info for your Events content in the file!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Leb14"},"content":" Events newevent \u003d new Events(split[1], split[2], split[3], split[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Leb14"},"content":" task.add(newevent);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Leb14"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Leb14"},"content":" reader.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Leb14"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Leb14"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Leb14"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Leb14"},"content":" public static void writeTasksToFile(TaskList task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Leb14"},"content":" FileWriter writer \u003d new FileWriter(\"data/TaskList.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Leb14"},"content":" for (Tasks t : task.getTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Leb14"},"content":" writer.write(t.toFileString() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Leb14"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Leb14"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":113}},{"path":"src/main/java/Storage/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import TaskManager.Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":" private ArrayList\u003cTasks\u003e task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" public TaskList(ArrayList\u003cTasks\u003e task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public void add(Tasks t) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" task.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" return task.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" return task.isEmpty();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" public void remove(int i) {task.remove(i);}","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" public ArrayList\u003cTasks\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" public Tasks get(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" return task.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" public boolean taskListEqual(TaskList other) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" if (task.size() !\u003d other.task.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":" for (int i \u003d 0; i \u003c task.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" if (!task.get(i).equals(other.task.get(i))) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":48}},{"path":"src/main/java/TaskManager/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"public class Deadlines extends Tasks {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String taskDesc;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" private String dueDateStr;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" private LocalDateTime dueDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" public Deadlines(String userInput, String dueDateStr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" this.dueDateStr \u003d dueDateStr;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" this.dueDate \u003d LocalDateTime.parse(dueDateStr, DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mma\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" public Deadlines(String completion, String taskDesc, String duedate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" if (completion.equals(\"1\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d taskDesc.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" this.dueDateStr \u003d duedate.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" this.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d taskDesc.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" this.dueDateStr \u003d duedate.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Hey! There is an invalid todo task in the task list!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" public boolean isValid() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" return taskDesc !\u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":" String x;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" if (this.status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" x \u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" x \u003d \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" String str1 \u003d String.format(\"%s\", x);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":" return \"D | \" + str1 + \" | \" + this.taskDesc + \" | \" + this.dueDateStr;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":" String x;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" if (this.status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":" x \u003d \"X\";","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Leb14"},"content":" x \u003d \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Leb14"},"content":" String str1 \u003d String.format(\"[%s] \", x);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Leb14"},"content":" String str2 \u003d String.format(\" (by: %s)\", this.dueDateStr);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Leb14"},"content":" return \"[D]\" + str1 + this.taskDesc + str2 ;","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Leb14"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Leb14"},"content":" if (this \u003d\u003d o) return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Leb14"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Leb14"},"content":" Deadlines deadlines \u003d (Deadlines) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Leb14"},"content":" if (!taskDesc.equals(deadlines.taskDesc)) return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Leb14"},"content":" return dueDateStr.equals(deadlines.dueDateStr);","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":74}},{"path":"src/main/java/TaskManager/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"public class Events extends Tasks {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":" private String taskDesc;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" private String from;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" private String to;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" private LocalDateTime fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" private LocalDateTime toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" public Events(String userInput, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" public Events(String completion, String taskDesc, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" if (completion.equals(\"1\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d taskDesc.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" this.from \u003d from.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" this.to \u003d to.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" this.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d taskDesc.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" this.from \u003d from.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" this.to \u003d to.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Hey! There is an invalid todo task in the task list!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" public boolean isValid() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" return taskDesc !\u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" String x;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" if (this.status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" x \u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":" x \u003d \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" String str1 \u003d String.format(\"%s\", x);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" return \"E | \" + str1 + \" | \" + this.taskDesc + \" | \" + this.from + \" | \" + this.to;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":" String x;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Leb14"},"content":" if (this.status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Leb14"},"content":" x \u003d \"X\";","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Leb14"},"content":" x \u003d \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Leb14"},"content":" String str1 \u003d String.format(\"[%s] \", x);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Leb14"},"content":" String str2 \u003d String.format(\" (from: %s to: %s)\", this.from, this.to);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Leb14"},"content":" return \"[E]\" + str1 + this.taskDesc + str2;","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Leb14"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Leb14"},"content":" if (this \u003d\u003d o) return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Leb14"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Leb14"},"content":" Events events \u003d (Events) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Leb14"},"content":" if (!taskDesc.equals(events.taskDesc)) return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Leb14"},"content":" if (!from.equals(events.from)) return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Leb14"},"content":" return to.equals(events.to);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":79}},{"path":"src/main/java/TaskManager/Tasks.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"public abstract class Tasks {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":" boolean status;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":" static int count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":" public abstract String toFileString();","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" public Tasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" public void markDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" this.status \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" public void markNotDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":24}},{"path":"src/main/java/TaskManager/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"public class ToDos extends Tasks {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":" private String taskDesc;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":" public ToDos(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" public ToDos(String taskDesc, String completion) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" if (completion.equals(\"1\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d taskDesc.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" this.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d taskDesc.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Hey! There is an invalid todo task in the task list!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" this.taskDesc \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" public boolean isValid() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" return taskDesc !\u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" String x;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" if (this.status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" x \u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" x \u003d \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" String str1 \u003d String.format(\"%s\", x);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" return \"T | \" + str1 + \" | \" + this.taskDesc;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" String x;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" if (this.status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" x \u003d \"X\";","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":" x \u003d \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":" String str1 \u003d String.format(\"[%s] \", x);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" return \"[T]\" + str1 + this.taskDesc;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" if (this \u003d\u003d o) return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Leb14"},"content":" ToDos toDos \u003d (ToDos) o;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Leb14"},"content":" return taskDesc.equals(toDos.taskDesc);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":61}},{"path":"src/main/java/Ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Storage.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import TaskManager.Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import TaskManager.Events;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"import TaskManager.ToDos;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"import TaskManager.Deadlines;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" private final String name \u003d \"Yours\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" private String word;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" public Ui(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" if (taskList.size() \u003c 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" this.word \u003d \"task\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" this.word \u003d \"tasks\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" String logo \u003d \"____ ____ ________ ___ ___ __________ _____\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" + \"\\\\ \\\\ / / | ____ | | | | | | _____ | / ____|\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" + \" \\\\ \\\\/ / | | | | | | | | | |___| | | (___\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" + \" \\\\ / | | | | | | | | | ______| \\\\ ___ \\\\\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" + \" | | | | | | | | | | | \\\\ \\\\ | |\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" + \" | | | |____| | | | | | | | \\\\ \\\\ ____) |\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" + \" |____| |________| \\\\_________/ |__| \\\\__\\\\ |_____/\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" String name \u003d \"Yours\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Hello! I\u0027m \" + name);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" System.out.println(\"____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" return command;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":" public void addedTodo(ToDos newTodo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Help you added a new to-do.\\n \" + newTodo.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" System.out.println(\" Now you have \" + taskList.size() + String.format(\" %s in the list.\", word));","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" public void addedDeadlines(Deadlines newDeadLine) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Help you added a new deadline.\\n \" + newDeadLine.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Leb14"},"content":" System.out.println(\" Now you have \" + taskList.size() + String.format(\" %s in the list.\", word));","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Leb14"},"content":" public void addedEvent(Events newEvent) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Help you added a new deadline.\\n \" + newEvent.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Leb14"},"content":" System.out.println(\" Now you have \" + taskList.size() + String.format(\" %s in the list.\", word));","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Leb14"},"content":" public void List() {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Here are the tasks in your list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Leb14"},"content":" for (int i \u003d 0 ; i \u003c taskList.size(); i ++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Leb14"},"content":" int j \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + j + \". \" + taskList.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Leb14"},"content":" public void delete(Tasks deleted) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Helped you deleted this task\\n \" + deleted.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Leb14"},"content":" System.out.println(\" Now you have \" + taskList.size() + String.format(\" %s in the list.\", word));","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Leb14"},"content":" public void mark(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Well done! I\u0027ve marked this task as done :\");","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + taskList.get(index - 1).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Leb14"},"content":" public void unmark(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Alright, I\u0027ve marked this task as not done yet\");","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + taskList.get(index - 1).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Leb14"},"content":" public void bye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Leb14"},"content":" public void empty() {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": Please enter something!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Leb14"},"content":" public void misc() {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Leb14"},"content":" System.out.println(\" \" + name + \": I don\u0027t really understand what you mean.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Leb14"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Leb14"},"content":" public void IOOBExceptionMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"Leb14"},"content":" System.out.println(\"Please enter the correct task\u0027s index number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":119}},{"path":"src/test/java/Storage/FileHandlerTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Parser.DateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import TaskManager.Deadlines;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import TaskManager.Events;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"import TaskManager.Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"import TaskManager.ToDos;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"class FileHandlerTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" void testReadAndWriteTasks() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" // Create a temporary test file with known contents","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" Path tempFile \u003d Files.createTempFile(\"testFile\", \".txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" FileHandler fileHandler \u003d new FileHandler(tempFile.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" ArrayList\u003cTasks\u003e tasksToWrite \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" TaskList tasks \u003d new TaskList(tasksToWrite);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" DateTime dateTime \u003d new DateTime();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" String formattedDate \u003d dateTime.formatDateTime(\"23/08/2023 1800\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" ToDos newtodo \u003d new ToDos(\"TestTodo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" Deadlines newdeadline \u003d new Deadlines(\"TestDeadline\", formattedDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" Events newevent \u003d new Events(\"TestEvent\", formattedDate, formattedDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" tasks.add(newtodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":" tasks.add(newdeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" tasks.add(newevent);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" // Write the tasks to the test file","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" fileHandler.writeTasksToFile(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" // Read tasks from the test file","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":" ArrayList\u003cTasks\u003e tasksRead \u003d fileHandler.readTasksFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":" TaskList taskRead \u003d new TaskList(tasksRead);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":" // Perform assertions to compare the tasksToWrite and tasksRead","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" // Since you\u0027ve added a new ToDos task to tasksToWrite, make sure it\u0027s the same as tasksRead","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" assertTrue(tasks.taskListEqual(taskRead));","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":" // Delete the temporary test file","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":" Files.deleteIfExists(tempFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Leb14":54}},{"path":"src/test/java/Storage/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Parser.DateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import TaskManager.Deadlines;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import TaskManager.Events;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"import TaskManager.Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"import TaskManager.ToDos;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" void testTaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" ArrayList\u003cTasks\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" ArrayList\u003cTasks\u003e taskList1 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" ArrayList\u003cTasks\u003e taskList2 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" ArrayList\u003cTasks\u003e taskList3 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" ArrayList\u003cTasks\u003e taskList4 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" ArrayList\u003cTasks\u003e taskList5 \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" TaskList tasks1 \u003d new TaskList(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" TaskList tasks2 \u003d new TaskList(taskList1);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" TaskList tasks3 \u003d new TaskList(taskList2);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" TaskList tasks4 \u003d new TaskList(taskList3);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" TaskList tasks5 \u003d new TaskList(taskList4);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" TaskList tasks6 \u003d new TaskList(taskList5);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":" DateTime dateTime \u003d new DateTime();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":" String formattedDate \u003d dateTime.formatDateTime(\"23/08/2023 1800\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":" String formattedDate1 \u003d dateTime.formatDateTime(\"23/08/2023 1830\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" String formattedDate2 \u003d dateTime.formatDateTime(\"23/08/2024 1800\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":" ToDos newtodo \u003d new ToDos(\"TestTodo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Leb14"},"content":" ToDos newtodo1 \u003d new ToDos(\"TestTodo1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Leb14"},"content":" Deadlines newdeadline \u003d new Deadlines(\"TestDeadline\", formattedDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Leb14"},"content":" Deadlines newdeadline1 \u003d new Deadlines(\"TestDeadline\", formattedDate1);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Leb14"},"content":" Events newevent \u003d new Events(\"TestEvent\", formattedDate, formattedDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Leb14"},"content":" Events newevent1 \u003d new Events(\"TestEvent\", formattedDate, formattedDate1);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Leb14"},"content":" //add tasks to tasks1","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Leb14"},"content":" tasks1.add(newtodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Leb14"},"content":" tasks1.add(newdeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Leb14"},"content":" tasks1.add(newevent);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Leb14"},"content":" //add tasks to tasks2","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Leb14"},"content":" tasks2.add(newtodo1);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Leb14"},"content":" tasks2.add(newdeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Leb14"},"content":" tasks2.add(newevent);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Leb14"},"content":" //add tasks to tasks3","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Leb14"},"content":" tasks3.add(newtodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Leb14"},"content":" tasks3.add(newdeadline1);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Leb14"},"content":" tasks3.add(newevent);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Leb14"},"content":" //add tasks to tasks4","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Leb14"},"content":" tasks4.add(newtodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Leb14"},"content":" tasks4.add(newdeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Leb14"},"content":" tasks4.add(newevent1);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Leb14"},"content":" //add tasks to tasks5","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Leb14"},"content":" tasks5.add(newtodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Leb14"},"content":" tasks5.add(newdeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Leb14"},"content":" tasks5.add(newevent);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Leb14"},"content":" //leave tasks6 empty","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Leb14"},"content":" assertTrue(tasks1.taskListEqual(tasks1));","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Leb14"},"content":" assertFalse(tasks1.taskListEqual(tasks2));","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Leb14"},"content":" assertFalse(tasks1.taskListEqual(tasks3));","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Leb14"},"content":" assertFalse(tasks1.taskListEqual(tasks4));","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Leb14"},"content":" assertTrue(tasks1.taskListEqual(tasks5));","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Leb14"},"content":" assertFalse(tasks1.taskListEqual(tasks6));","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Leb14":82}},{"path":"src/test/java/TaskManager/DeadlinesTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package TaskManager;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import Parser.DateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"class DeadlinesTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" void testEvents() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" DateTime dateTime \u003d new DateTime();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" String formattedDate \u003d dateTime.formatDateTime(\"23/08/2023 1800\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" String formattedDate1 \u003d dateTime.formatDateTime(\"23/08/2023 1801\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" String formattedDate2 \u003d dateTime.formatDateTime(\"23/09/2023 1800\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" Deadlines newdeadline \u003d new Deadlines(\"TestEvent\", formattedDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" Deadlines newdeadline1 \u003d new Deadlines(\"TestEvent\", formattedDate1);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" Deadlines newdeadline2 \u003d new Deadlines(\"TestEvent\", formattedDate2);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" Deadlines newdeadline3 \u003d new Deadlines(\"TestEvent3\", formattedDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" Deadlines newdeadline4 \u003d new Deadlines(\"TestEvent\", formattedDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" assertTrue(newdeadline.equals(newdeadline));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" assertFalse(newdeadline.equals(newdeadline1));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" assertFalse(newdeadline.equals(newdeadline2));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":" assertFalse(newdeadline.equals(newdeadline3));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" assertTrue(newdeadline.equals(newdeadline4));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Leb14":37}},{"path":"src/test/java/TaskManager/EventsTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package TaskManager;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"import Parser.DateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"class EventsTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" void testEvents() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":" DateTime dateTime \u003d new DateTime();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" String formattedDate \u003d dateTime.formatDateTime(\"23/08/2023 1800\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" String formattedDate1 \u003d dateTime.formatDateTime(\"23/08/2023 1801\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" String formattedDate2 \u003d dateTime.formatDateTime(\"23/09/2023 1800\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" Events newevent \u003d new Events(\"TestEvent\", formattedDate, formattedDate1);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" Events newevent1 \u003d new Events(\"TestEvent1\", formattedDate, formattedDate1);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" Events newevent2 \u003d new Events(\"TestEvent\", formattedDate, formattedDate2);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":" Events newevent3 \u003d new Events(\"TestEvent\", formattedDate1, formattedDate1);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" Events newevent4 \u003d new Events(\"TestEvent\", formattedDate, formattedDate1);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" assertTrue(newevent.equals(newevent));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" assertFalse(newevent.equals(newevent1));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" assertFalse(newevent.equals(newevent2));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":" assertFalse(newevent.equals(newevent3));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" assertTrue(newevent.equals(newevent4));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Leb14":33}},{"path":"src/test/java/TaskManager/ToDosTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"package TaskManager;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"class ToDosTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":" void testToDos() throws IllegalArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":" ToDos newtodo \u003d new ToDos(\"TestTodo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":" ToDos newtodo1 \u003d new ToDos(\"TestTodo1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":" ToDos newtodo2 \u003d new ToDos(\"TestTodo2\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":" ToDos newtodo3 \u003d new ToDos(\"TestTodo3\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":" ToDos newtodo4 \u003d new ToDos(\"TestTodo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":" ToDos newtodo5 \u003d new ToDos(\"TestTodo5\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":" ToDos newtodo6 \u003d new ToDos(\"TestTodo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":" assertTrue(newtodo.equals(newtodo));","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":" assertFalse(newtodo.equals(newtodo1));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Leb14"},"content":" assertFalse(newtodo.equals(newtodo2));","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Leb14"},"content":" assertFalse(newtodo.equals(newtodo3));","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Leb14"},"content":" assertTrue(newtodo.equals(newtodo4));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Leb14"},"content":" assertFalse(newtodo.equals(newtodo5));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Leb14"},"content":" assertTrue(newtodo.equals(newtodo6));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Leb14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Leb14"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Leb14":31}},{"path":"text-ui-test/data/TaskList.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"T | 0 | add","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":1}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Leb14"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Leb14"},"content":"blah","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Leb14"},"content":"what","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Leb14"},"content":"list","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Leb14"},"content":"todo","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Leb14"},"content":"todo borrow book","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Leb14"},"content":"deadline","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Leb14"},"content":"deadline return book","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Leb14"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Leb14"},"content":"event","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Leb14"},"content":"event project meeting","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Leb14"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Leb14"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Leb14"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Leb14"},"content":"list","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Leb14"},"content":"mark 2","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Leb14"},"content":"mark 3","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Leb14"},"content":"unmark 3","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Leb14"},"content":"list","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Leb14"},"content":"delete 2","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Leb14"},"content":"list","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Leb14"},"content":"bye","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Leb14":22}}] diff --git a/Leb14_ip_master/commits.json b/Leb14_ip_master/commits.json index f496d1bf..168a55da 100644 --- a/Leb14_ip_master/commits.json +++ b/Leb14_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Leb14":[{"date":"2023-08-23","commitResults":[{"hash":"df306c174739a081d9dda53d195bc94f902eb138","isMergeCommit":false,"messageTitle":"Level - 0","messageBody":"Level - 0 increment\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"b1c09ef70da2ad43c697da3552b8a2e6a9af4dbb","isMergeCommit":false,"messageTitle":"Level - 1","messageBody":"Level - 1 increment\n","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":2}}},{"hash":"ba8f9fdb9f44e249623288717643fe58d1aff3e0","isMergeCommit":false,"messageTitle":"Revert \"Level - 1\"","messageBody":"This reverts commit b1c09ef70da2ad43c697da3552b8a2e6a9af4dbb.\n","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":25}}},{"hash":"75fd0b03c4c1ff3d598a336136d5c004250779be","isMergeCommit":false,"messageTitle":"Level - 1","messageBody":"Level - 1 increment\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"06e88a1b3e441cc3a06cbc622a14e222298ca248","isMergeCommit":false,"messageTitle":"Level - 3","messageBody":"Level 3 increment\n","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":3}}},{"hash":"13f955413cdbcb795149ce46d63b50f481aa5c27","isMergeCommit":false,"messageTitle":"Revert \"Level - 3\"","messageBody":"This reverts commit 06e88a1b3e441cc3a06cbc622a14e222298ca248.\n","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":62}}},{"hash":"88f206847442eefc27776c4cfd8823675a640f3e","isMergeCommit":false,"messageTitle":"Level - 2","messageBody":"Level - 2 increment\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":3}}},{"hash":"06522ffad910f84b2a895f4ca5d5e289c3082756","isMergeCommit":false,"messageTitle":"Level - 3","messageBody":"Level - 3 increment\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"6a97adb72e2be78733f701ab199ba2699e186557","isMergeCommit":false,"messageTitle":"Level - 4","messageBody":"Level 4 increment\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":33}}},{"hash":"4b287ffdc4e618a8a9376c9d6716498b4e76e094","isMergeCommit":false,"messageTitle":"A - TextUiTesting","messageBody":"A - TextUiTesting\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-25","commitResults":[{"hash":"be60e345522e90bd478e01553ba9880f3bed36f6","isMergeCommit":false,"messageTitle":"Level - 5","messageBody":"Level 5 increment\n","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":106,"deletions":35}}},{"hash":"271dfd2ffd088c443cf317c28a137813f1350073","isMergeCommit":false,"messageTitle":"Level - 6","messageBody":"Level 6 increment\n","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":12,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"80db0ba35d6e51b2341afe4de19dbece99dc98b7","isMergeCommit":false,"messageTitle":"Level - 7","messageBody":"Level - 7 increment\n","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":2},"java":{"insertions":218,"deletions":12}}},{"hash":"d42bed5f0f9615ea1992cb8682378c779e91e5a6","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Leb14/branch-level-7","messageBody":"Level - 7","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"d50641a963e561b9684037ad1a5647d8efa58c24","isMergeCommit":false,"messageTitle":"Level - 8","messageBody":"Level 8 increment\n","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":64,"deletions":10}}},{"hash":"3ca80dea5d53b47b7757ce0a25a837b7f0a090a1","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Leb14/branch-level-8","messageBody":"Level - 8","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"9f0cadd832d316939767e2c2a40e308e6bd06e18","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"A MoreOOP increment\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":9},"java":{"insertions":552,"deletions":204}}},{"hash":"80a512c993c7814970891bc966c46519e9ce0945","isMergeCommit":true,"messageTitle":"Merge pull request #3 from Leb14/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}},{"hash":"1429e73a21f780404ab3e8140af919a1ca46ca4b","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #3 from Leb14/add-gradle-support\"","messageBody":"This reverts commit 80a512c993c7814970891bc966c46519e9ce0945, reversing\nchanges made to 9f0cadd832d316939767e2c2a40e308e6bd06e18.\n","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":42},"sh":{"insertions":0,"deletions":0}}},{"hash":"ae31ae6cdd6c822918b47ad533a935c688196ed6","isMergeCommit":false,"messageTitle":"A-packages","messageBody":"A packages increment\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":927,"deletions":1}}},{"hash":"401731fd3b163805c6c7ef3653c90d2cd0a58d83","isMergeCommit":false,"messageTitle":"Revert \"A-packages\"","messageBody":"This reverts commit ae31ae6cdd6c822918b47ad533a935c688196ed6.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":1,"deletions":927}}},{"hash":"de6046304635c0b88b590f86978760580b109df7","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"A-Packages increment\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":99,"deletions":5}}},{"hash":"dd21484746ae78104e97da0ee43e9e0d3b3ecf57","isMergeCommit":true,"messageTitle":"Merge pull request #4 from Leb14/master","messageBody":"add gradle support","fileTypesAndContributionMap":{}},{"hash":"5722b6782addd2dbb82f7a8751c42640a9bef839","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #4 from Leb14/master\"","messageBody":"This reverts commit dd21484746ae78104e97da0ee43e9e0d3b3ecf57, reversing\nchanges made to ed6d4d25bd4e34461919ffe785a6f10f4c087552.\n","fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0},"txt":{"insertions":0,"deletions":33},"java":{"insertions":6,"deletions":955},"sh":{"insertions":0,"deletions":0}}},{"hash":"5c822510e0c6685130c0dea9cf65d188caaecee9","isMergeCommit":true,"messageTitle":"Merge pull request #5 from Leb14/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}},{"hash":"e7c2e2da9e5f02afc8049104acf84bef066ca7f9","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #5 from Leb14/add-gradle-support\"","messageBody":"This reverts commit 5c822510e0c6685130c0dea9cf65d188caaecee9, reversing\nchanges made to de6046304635c0b88b590f86978760580b109df7.\n","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":42},"txt":{"insertions":33,"deletions":0},"java":{"insertions":955,"deletions":6},"sh":{"insertions":0,"deletions":0}}},{"hash":"9512f1ec764faaf7f9fa760d06eda3f53fa06445","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #4 from Leb14/master\"","messageBody":"This reverts commit dd21484746ae78104e97da0ee43e9e0d3b3ecf57, reversing\nchanges made to ed6d4d25bd4e34461919ffe785a6f10f4c087552.\n","fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0},"txt":{"insertions":0,"deletions":33},"java":{"insertions":6,"deletions":955},"sh":{"insertions":0,"deletions":0}}},{"hash":"e325a1d307b0f6f91bda7cfc21c8baa417dcfac4","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #5 from Leb14/add-gradle-support\"","messageBody":"This reverts commit 5c822510e0c6685130c0dea9cf65d188caaecee9, reversing\nchanges made to de6046304635c0b88b590f86978760580b109df7.\n","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":42},"txt":{"insertions":33,"deletions":0},"java":{"insertions":955,"deletions":6},"sh":{"insertions":0,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"2952ba69b2f117497cc776f90927b62b45ef7620","isMergeCommit":false,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"Leb14":{"java":955,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":33}},"authorContributionVariance":{"Leb14":3007672.0},"authorDisplayNameMap":{"Leb14":"CS2103T-W12-2 CHEN.. HAO"}} +{"authorDailyContributionsMap":{"Leb14":[{"date":"2023-08-23","commitResults":[{"hash":"df306c174739a081d9dda53d195bc94f902eb138","isMergeCommit":false,"messageTitle":"Level - 0","messageBody":"Level - 0 increment\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"b1c09ef70da2ad43c697da3552b8a2e6a9af4dbb","isMergeCommit":false,"messageTitle":"Level - 1","messageBody":"Level - 1 increment\n","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":2}}},{"hash":"ba8f9fdb9f44e249623288717643fe58d1aff3e0","isMergeCommit":false,"messageTitle":"Revert \"Level - 1\"","messageBody":"This reverts commit b1c09ef70da2ad43c697da3552b8a2e6a9af4dbb.\n","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":25}}},{"hash":"75fd0b03c4c1ff3d598a336136d5c004250779be","isMergeCommit":false,"messageTitle":"Level - 1","messageBody":"Level - 1 increment\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"06e88a1b3e441cc3a06cbc622a14e222298ca248","isMergeCommit":false,"messageTitle":"Level - 3","messageBody":"Level 3 increment\n","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":3}}},{"hash":"13f955413cdbcb795149ce46d63b50f481aa5c27","isMergeCommit":false,"messageTitle":"Revert \"Level - 3\"","messageBody":"This reverts commit 06e88a1b3e441cc3a06cbc622a14e222298ca248.\n","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":62}}},{"hash":"88f206847442eefc27776c4cfd8823675a640f3e","isMergeCommit":false,"messageTitle":"Level - 2","messageBody":"Level - 2 increment\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":3}}},{"hash":"06522ffad910f84b2a895f4ca5d5e289c3082756","isMergeCommit":false,"messageTitle":"Level - 3","messageBody":"Level - 3 increment\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"6a97adb72e2be78733f701ab199ba2699e186557","isMergeCommit":false,"messageTitle":"Level - 4","messageBody":"Level 4 increment\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":33}}},{"hash":"4b287ffdc4e618a8a9376c9d6716498b4e76e094","isMergeCommit":false,"messageTitle":"A - TextUiTesting","messageBody":"A - TextUiTesting\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-25","commitResults":[{"hash":"be60e345522e90bd478e01553ba9880f3bed36f6","isMergeCommit":false,"messageTitle":"Level - 5","messageBody":"Level 5 increment\n","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":106,"deletions":35}}},{"hash":"271dfd2ffd088c443cf317c28a137813f1350073","isMergeCommit":false,"messageTitle":"Level - 6","messageBody":"Level 6 increment\n","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":12,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"80db0ba35d6e51b2341afe4de19dbece99dc98b7","isMergeCommit":false,"messageTitle":"Level - 7","messageBody":"Level - 7 increment\n","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":2},"java":{"insertions":218,"deletions":12}}},{"hash":"d42bed5f0f9615ea1992cb8682378c779e91e5a6","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Leb14/branch-level-7","messageBody":"Level - 7","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"d50641a963e561b9684037ad1a5647d8efa58c24","isMergeCommit":false,"messageTitle":"Level - 8","messageBody":"Level 8 increment\n","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":64,"deletions":10}}},{"hash":"3ca80dea5d53b47b7757ce0a25a837b7f0a090a1","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Leb14/branch-level-8","messageBody":"Level - 8","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"9f0cadd832d316939767e2c2a40e308e6bd06e18","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"A MoreOOP increment\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":9},"java":{"insertions":552,"deletions":204}}},{"hash":"80a512c993c7814970891bc966c46519e9ce0945","isMergeCommit":true,"messageTitle":"Merge pull request #3 from Leb14/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}},{"hash":"1429e73a21f780404ab3e8140af919a1ca46ca4b","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #3 from Leb14/add-gradle-support\"","messageBody":"This reverts commit 80a512c993c7814970891bc966c46519e9ce0945, reversing\nchanges made to 9f0cadd832d316939767e2c2a40e308e6bd06e18.\n","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":42},"sh":{"insertions":0,"deletions":0}}},{"hash":"ae31ae6cdd6c822918b47ad533a935c688196ed6","isMergeCommit":false,"messageTitle":"A-packages","messageBody":"A packages increment\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":927,"deletions":1}}},{"hash":"401731fd3b163805c6c7ef3653c90d2cd0a58d83","isMergeCommit":false,"messageTitle":"Revert \"A-packages\"","messageBody":"This reverts commit ae31ae6cdd6c822918b47ad533a935c688196ed6.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":1,"deletions":927}}},{"hash":"de6046304635c0b88b590f86978760580b109df7","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"A-Packages increment\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":99,"deletions":5}}},{"hash":"dd21484746ae78104e97da0ee43e9e0d3b3ecf57","isMergeCommit":true,"messageTitle":"Merge pull request #4 from Leb14/master","messageBody":"add gradle support","fileTypesAndContributionMap":{}},{"hash":"5722b6782addd2dbb82f7a8751c42640a9bef839","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #4 from Leb14/master\"","messageBody":"This reverts commit dd21484746ae78104e97da0ee43e9e0d3b3ecf57, reversing\nchanges made to ed6d4d25bd4e34461919ffe785a6f10f4c087552.\n","fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0},"txt":{"insertions":0,"deletions":33},"java":{"insertions":6,"deletions":955},"sh":{"insertions":0,"deletions":0}}},{"hash":"5c822510e0c6685130c0dea9cf65d188caaecee9","isMergeCommit":true,"messageTitle":"Merge pull request #5 from Leb14/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}},{"hash":"e7c2e2da9e5f02afc8049104acf84bef066ca7f9","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #5 from Leb14/add-gradle-support\"","messageBody":"This reverts commit 5c822510e0c6685130c0dea9cf65d188caaecee9, reversing\nchanges made to de6046304635c0b88b590f86978760580b109df7.\n","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":42},"txt":{"insertions":33,"deletions":0},"java":{"insertions":955,"deletions":6},"sh":{"insertions":0,"deletions":0}}},{"hash":"9512f1ec764faaf7f9fa760d06eda3f53fa06445","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #4 from Leb14/master\"","messageBody":"This reverts commit dd21484746ae78104e97da0ee43e9e0d3b3ecf57, reversing\nchanges made to ed6d4d25bd4e34461919ffe785a6f10f4c087552.\n","fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0},"txt":{"insertions":0,"deletions":33},"java":{"insertions":6,"deletions":955},"sh":{"insertions":0,"deletions":0}}},{"hash":"e325a1d307b0f6f91bda7cfc21c8baa417dcfac4","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #5 from Leb14/add-gradle-support\"","messageBody":"This reverts commit 5c822510e0c6685130c0dea9cf65d188caaecee9, reversing\nchanges made to de6046304635c0b88b590f86978760580b109df7.\n","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":42},"txt":{"insertions":33,"deletions":0},"java":{"insertions":955,"deletions":6},"sh":{"insertions":0,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"2952ba69b2f117497cc776f90927b62b45ef7620","isMergeCommit":false,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0}}},{"hash":"e2a9b455ecc5b1355d260cafee7d493dec125fba","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"A-Junit increment\n","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":7,"deletions":0},"txt":{"insertions":3,"deletions":10},"java":{"insertions":294,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"Leb14":{"java":1249,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":7,"txt":26}},"authorContributionVariance":{"Leb14":2993498.8},"authorDisplayNameMap":{"Leb14":"CS2103T-W12-2 CHEN.. HAO"}} diff --git a/LimJH2002_ip_master/authorship.json b/LimJH2002_ip_master/authorship.json index 511781b3..743a50ea 100644 --- a/LimJH2002_ip_master/authorship.json +++ b/LimJH2002_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" mainClass.set(\"simon.Simon\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" archiveBaseName \u003d \"simon\"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"LimJH2002":2,"-":40}},{"path":"src/main/java/simon/Simon.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import simon.command.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"public class Simon {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" protected static final String SPACE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" protected static final String NSPACE \u003d \"\\n____________________________________________________________\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" protected static final String SPACEN \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" public Simon(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":"// ui.showMessage(\"I\u0027ve loaded your tasks from the last time you used me!\" + NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" } catch (SimonException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" Scanner scan \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" // Start Program","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" String inData \u003d scan.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" Parser.Command command \u003d Parser.parseCommand(inData.split(\" \")[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" switch (command) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" case LIST:","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":" ui.listTasks(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" case TODO:","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" case EVENT:","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":" Task newTask \u003d Parser.parseAddTask(inData, command);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":" ui.showAddedTask(newTask, tasks.getTaskCount());","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":" case UNMARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"LimJH2002"},"content":" Task unmarkedTask \u003d tasks.markTask(inData, false);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"LimJH2002"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"LimJH2002"},"content":" ui.showMarkedTask(false, unmarkedTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"LimJH2002"},"content":" case MARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"LimJH2002"},"content":" Task markedTask \u003d tasks.markTask(inData, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"LimJH2002"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"LimJH2002"},"content":" ui.showMarkedTask(true, markedTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"LimJH2002"},"content":" case DELETE:","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"LimJH2002"},"content":" Task deletedTask \u003d tasks.deleteTask(inData);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"LimJH2002"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"LimJH2002"},"content":" ui.showDeletedTask(deletedTask, tasks.getTaskCount());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"LimJH2002"},"content":" case BYE:","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"LimJH2002"},"content":" ui.showGoodbye();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"LimJH2002"},"content":" return;","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"LimJH2002"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"LimJH2002"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"LimJH2002"},"content":" ui.showUnknownCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"LimJH2002"},"content":" } catch (SimonException se) {","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"LimJH2002"},"content":" ui.showError(se.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"LimJH2002"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"LimJH2002"},"content":" new Simon(\"data/simon.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"LimJH2002":84}},{"path":"src/main/java/simon/SimonAscii.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"public class SimonAscii {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":" private static final String name \u003d","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":" \" _______. __ .___ ___. ______ .__ __. \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":" \" / || | | \\\\/ | / __ \\\\ | \\\\ | | \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":" \" | (----`| | | \\\\ / | | | | | | \\\\| | \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":" \" \\\\ \\\\ | | | |\\\\/| | | | | | | . ` | \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":" \".----) | | | | | | | | `--\u0027 | | |\\\\ | \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":" \"|_______/ |__| |__| |__| \\\\______/ |__| \\\\__| \\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" public static String toStr() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" return name;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"LimJH2002":14}},{"path":"src/main/java/simon/SimonException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"public class SimonException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":" public SimonException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"LimJH2002":7}},{"path":"src/main/java/simon/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.task.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" private final String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" public ArrayList\u003cTask\u003e load() throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" ArrayList\u003cTask\u003e loadedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" // Ensure data directory exists","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" File dir \u003d new File(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" dir.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" // Ensure simon.txt file exists","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"An error occurred while creating the data file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":" String[] parts \u003d data.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" switch (parts[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" ToDo todo \u003d new ToDo(parts[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"LimJH2002"},"content":" todo.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"LimJH2002"},"content":" loadedTasks.add(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"LimJH2002"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"LimJH2002"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"LimJH2002"},"content":" Deadline deadline \u003d new Deadline(parts[2], endDateTime.format(formatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"LimJH2002"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"LimJH2002"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"LimJH2002"},"content":" loadedTasks.add(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"LimJH2002"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"LimJH2002"},"content":" String startDateTimeStr \u003d parts[3];","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"LimJH2002"},"content":" String endDateTimeStr \u003d parts[4];","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"LimJH2002"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(startDateTimeStr, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"LimJH2002"},"content":" LocalDateTime endDateTime2 \u003d LocalDateTime.parse(endDateTimeStr, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"LimJH2002"},"content":" Event event \u003d new Event(parts[2], startDateTime.format(formatter), endDateTime2.format(formatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"LimJH2002"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"LimJH2002"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"LimJH2002"},"content":" loadedTasks.add(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"LimJH2002"},"content":" scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"LimJH2002"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"Data file not found. Starting with an empty task list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"LimJH2002"},"content":" } catch (SimonException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"LimJH2002"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"LimJH2002"},"content":" return loadedTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"LimJH2002"},"content":" public void save(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"LimJH2002"},"content":" PrintWriter writer \u003d new PrintWriter(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"LimJH2002"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"LimJH2002"},"content":" if (task instanceof ToDo) {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"LimJH2002"},"content":" writer.println(\"T | \" + (task.isDone ? \"1\" : \"0\") + \" | \" + task.taskName);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"LimJH2002"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"LimJH2002"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"LimJH2002"},"content":" writer.println(\"D | \" + (task.isDone ? \"1\" : \"0\") + \" | \" + task.taskName + \" | \" + deadline.endDateTime.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"LimJH2002"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"LimJH2002"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"LimJH2002"},"content":" writer.println(\"E | \" + (task.isDone ? \"1\" : \"0\") + \" | \" + task.taskName + \" | \" + event.startDateTime.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\")) + \" | \" + event.endDateTime.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"LimJH2002"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"LimJH2002"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"LimJH2002"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"LimJH2002":108}},{"path":"src/main/java/simon/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" public Task markTask(String inData, boolean markAsDone) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" int index \u003d parseIndex(inData);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" validateIndex(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" if (markAsDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" tasks.get(index).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" tasks.get(index).markAsUndone();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" public Task deleteTask(String inData) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" int index \u003d parseIndex(inData);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" validateIndex(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":" private int parseIndex(String inData) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" String[] split \u003d inData.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" return Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"LimJH2002"},"content":" private void validateIndex(int index) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"LimJH2002"},"content":" if (this.tasks.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"There are no tasks to modify.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"LimJH2002"},"content":" if (index \u003c 0 || index \u003e\u003d this.tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"Invalid task number. Choose a number between 1 and \" + tasks.size() + \".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"LimJH2002"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"LimJH2002"},"content":" return this.tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"LimJH2002"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"LimJH2002"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"LimJH2002"},"content":" public ArrayList\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"LimJH2002"},"content":" return new ArrayList\u003c\u003e(this.tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"LimJH2002":75}},{"path":"src/main/java/simon/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" System.out.println(Simon.SPACEN + SimonAscii.toStr());","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"Hello! I\u0027m Simon\\nWhat can I do for you?\\n\" + Simon.SPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" public void showGoodbye() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"Bye. Hope to see you again soon!\" + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"Data file not found. Starting with an empty task list.\" + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" System.out.println(message + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" public void showAddedTask(Task task, int count) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" System.out.println(Simon.SPACEN + \"Got it. I\u0027ve added this task:\\n\" + \" \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" task + String.format(\"\\nNow you have %d %s in the list.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" count, count \u003e 1 ? \"tasks\" : \"task\") + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" public void showDeletedTask(Task task, int count) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + task + String.format(\"\\nNow you have %d %s in the list.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" count, count \u003e 1 ? \"tasks\" : \"task\") + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" public void showMarkedTask(boolean marked, Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" if (marked) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n \" + task + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n \" + task + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" public void showUnknownCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\" + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":" public void listTasks(TaskList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" for (int i \u003d 0; i \u003c tasks.getTaskCount(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":" System.out.println(Simon.SPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"LimJH2002"},"content":" public String readInput(Scanner scanner) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"LimJH2002"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"LimJH2002":59}},{"path":"src/main/java/simon/command/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import simon.SimonException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import simon.task.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" public enum Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" TODO, DEADLINE, EVENT, LIST, MARK, UNMARK, DELETE, BYE, UNKNOWN","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" public static Command parseCommand(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" return Parser.Command.valueOf(input.toUpperCase());","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" return Parser.Command.UNKNOWN;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" public static Task parseAddTask(String inData, Command commandType) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" case TODO:","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" String description \u003d inData.split(\"todo \").length \u003e 1 ? inData.split(\"todo \")[1] : \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" if (description.trim().isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" String[] deadlineParts \u003d inData.split(\"deadline \");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" if (deadlineParts.length \u003c\u003d 1 || !inData.contains(\" /by \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The format for deadline is incorrect. Expected format: \u0027deadline [task description] /by [dd/mm/yyyy HHmm]\u0027. Time(HHmm) is optional.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" String nameDeadline \u003d deadlineParts.length \u003e 1 ? deadlineParts[1].split(\"/by \")[0] : \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" if (nameDeadline.trim().isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":" String endDate \u003d deadlineParts[1].split(\" /by \").length \u003e 1 ? deadlineParts[1].split(\" /by \")[1] : \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" if (endDate.trim().isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The deadline date cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" task \u003d new Deadline(nameDeadline, endDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" case EVENT:","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":" String[] eventParts \u003d inData.split(\"event \");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" if (eventParts.length \u003c\u003d 1 || !inData.contains(\"/from \") || !inData.contains(\"/to \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The format for event is incorrect. Expected format: \u0027event [event description] /from [dd/mm/yyyy HHmm] /to [dd/mm/yyyy HHmm]\u0027. The time(HHmm) is optional.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"LimJH2002"},"content":" String[] fromToParts \u003d eventParts[1].split(\"/from \");","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"LimJH2002"},"content":" if (fromToParts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The format for event is missing \u0027from\u0027 information.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"LimJH2002"},"content":" String eventName \u003d fromToParts[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"LimJH2002"},"content":" if (eventName.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"LimJH2002"},"content":" String[] toParts \u003d fromToParts[1].split(\"/to \");","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"LimJH2002"},"content":" if (toParts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The format for event is missing \u0027to\u0027 information.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"LimJH2002"},"content":" String startDate \u003d toParts[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"LimJH2002"},"content":" String endDateEvent \u003d toParts[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"LimJH2002"},"content":" task \u003d new Event(eventName, startDate, endDateEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"LimJH2002"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"LimJH2002"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"LimJH2002":83}},{"path":"src/main/java/simon/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import simon.SimonException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" public final LocalDateTime endDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" private static final DateTimeFormatter INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy[ HHmm]\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" private static final DateTimeFormatter OUTPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, h:mm a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" public Deadline(String taskName, String endDate) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" super(taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" // If no time specified, append \" 0000\"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" if (!endDate.contains(\" \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" endDate +\u003d \" 0000\";","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" this.endDateTime \u003d LocalDateTime.parse(endDate, INPUT_FORMATTER);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"The date and time format is incorrect. Expected format: d/M/yyyy [HHmm].\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" return \" [D]\" + (super.isDone ? \"[X] \" : \"[ ] \") + super.toString() + \" (by: \" + endDateTime.format(OUTPUT_FORMATTER) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"LimJH2002":32}},{"path":"src/main/java/simon/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import simon.SimonException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" public LocalDateTime startDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" public LocalDateTime endDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" private static final DateTimeFormatter INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy[ HHmm]\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" private static final DateTimeFormatter OUTPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, h:mm a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" public Event(String taskName, String startDate, String endDate) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" super(taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" // If no time specified, append \" 0000\"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" if (!startDate.contains(\" \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" startDate +\u003d \" 0000\";","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" if (!endDate.contains(\" \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" endDate +\u003d \" 0000\";","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" this.startDateTime \u003d LocalDateTime.parse(startDate, INPUT_FORMATTER);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" this.endDateTime \u003d LocalDateTime.parse(endDate, INPUT_FORMATTER);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" // Validate that endDateTime is after startDateTime","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" if (!endDateTime.isAfter(startDateTime)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"The end time should be after the start time.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"The date and time format is incorrect. Expected format: d/M/yyyy [HHmm].\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":" return \" [E]\" + (super.isDone ? \"[X] \" : \"[ ] \") + super.toString() +","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" \" (from: \" + startDateTime.format(OUTPUT_FORMATTER) +","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" \" to: \" + endDateTime.format(OUTPUT_FORMATTER) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"LimJH2002":47}},{"path":"src/main/java/simon/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":" public String taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":" public boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":" public Task(String taskName) {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" return this.taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"LimJH2002":24}},{"path":"src/main/java/simon/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":" public ToDo(String taskName) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":" super(taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" return \" [T]\" + (super.isDone ? \"[X] \" : \"[ ] \") + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"LimJH2002":12}},{"path":"src/test/java/simon/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import simon.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" public void testMarkTask_validIndex() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Sample Task\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" Task markedTask \u003d tasks.markTask(\"mark 1\", true);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" assertTrue(markedTask.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" public void testMarkTask_invalidIndex() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" assertThrows(SimonException.class, () -\u003e tasks.markTask(\"100\", true));","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LimJH2002":23}},{"path":"src/test/java/simon/command/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.SimonException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" public void testParseAddTask_validToDoInput() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" String input \u003d \"todo Sample Task\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" Task task \u003d Parser.parseAddTask(input, Parser.Command.TODO);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" assertEquals(\"Sample Task\", task.taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" public void testParseAddTask_invalidInput() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" String input \u003d \"todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" assertThrows(SimonException.class, () -\u003e Parser.parseAddTask(input, Parser.Command.TODO));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LimJH2002":22}},{"path":"text-ui-test/data/simon.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"T | 1 | This is a very long description just to test Simon\u0027s ability to handle long inputs without breaking or malfunctioning in any way","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"T | 1 | This is a very long description just to test Simon\u0027s ability to handle long inputs without breaking or malfunctioning in any way","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"T | 0 | This is a very long description just to test Simon\u0027s ability to handle long inputs without breaking or malfunctioning in any way","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"T | 0 | This is a very long description just to test Simon\u0027s ability to handle long inputs without breaking or malfunctioning in any way","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"T | 0 | This is a very long description just to test Simon\u0027s ability to handle long inputs without breaking or malfunctioning in any way","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"LimJH2002":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"unknowncommand","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"mark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"unmark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":"delete 5","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":"deadline submit report","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":"event team lunch /from Tue 12pm","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":"delete abc","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":"todo This is a very long description just to test Simon\u0027s ability to handle long inputs without breaking or malfunctioning in any way","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":"unmark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":"deadline /by next Monday","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":"event team dinner /from Wed 8pm","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":"mark xyz","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":"unmark abc","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":"unmark 10","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":"mark 10","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":"deadline /by","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":"event /from Thu 9am /to 11am","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"LimJH2002":28}},{"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":"LimJH2002"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/simon/*/*.java","lastModifiedDate":"2023-08-30"},{"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":"LimJH2002"},"content":"java -classpath ../bin Simon \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"LimJH2002":2,"-":36}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":"// mainClassName \u003d \u0027simon.Simon.Main\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" mainClass.set(\"simon.Simon\")","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" archiveFileName \u003d \u0027simon.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" archiveBaseName \u003d \"simon\"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"LimJH2002":4,"-":40}},{"path":"data/testSaveFile.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"T | 0 | Test Task","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LimJH2002":1}},{"path":"src/main/java/simon/Simon.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.command.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":" * The main class for the {@code Simon} application.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":" * It handles the primary loop of the application and interacts with the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":"public class Simon {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" /** List of tasks maintained by the {@code Simon} application. */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" /** Storage handler for saving and loading tasks from a file. */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" /** UI handler for displaying messages and prompts to the user. */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" /** Horizontal line for UI formatting. */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" protected static final String SPACE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" /** Horizontal line with newline prefix for UI formatting. */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" protected static final String NSPACE \u003d \"\\n____________________________________________________________\";","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" /** Horizontal line with newline suffix for UI formatting. */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" protected static final String SPACEN \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" * Constructs a new {@code Simon} application instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" * @param filePath Path to the file where tasks will be saved and loaded from.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" public Simon(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" } catch (SimonException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":" * Starts and runs the main loop of the {@code Simon} application.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":" * Continues to prompt the user for commands until the \u0027bye\u0027 command is given.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" Scanner scan \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"LimJH2002"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"LimJH2002"},"content":" String inData \u003d scan.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"LimJH2002"},"content":" Parser.Command command \u003d Parser.parseCommand(inData.split(\" \")[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"LimJH2002"},"content":" switch (command) {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"LimJH2002"},"content":" case LIST:","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"LimJH2002"},"content":" ui.listTasks(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"LimJH2002"},"content":" case TODO:","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"LimJH2002"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"LimJH2002"},"content":" case EVENT:","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"LimJH2002"},"content":" Task newTask \u003d Parser.parseAddTask(inData, command);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"LimJH2002"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"LimJH2002"},"content":" ui.showAddedTask(newTask, tasks.getTaskCount());","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"LimJH2002"},"content":" case UNMARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"LimJH2002"},"content":" Task unmarkedTask \u003d tasks.markTask(inData, false);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"LimJH2002"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"LimJH2002"},"content":" ui.showMarkedTask(false, unmarkedTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"LimJH2002"},"content":" case MARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"LimJH2002"},"content":" Task markedTask \u003d tasks.markTask(inData, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"LimJH2002"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"LimJH2002"},"content":" ui.showMarkedTask(true, markedTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"LimJH2002"},"content":" case DELETE:","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"LimJH2002"},"content":" Task deletedTask \u003d tasks.deleteTask(inData);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"LimJH2002"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"LimJH2002"},"content":" ui.showDeletedTask(deletedTask, tasks.getTaskCount());","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"LimJH2002"},"content":" case FIND:","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"LimJH2002"},"content":" TaskList matchedTasks \u003d tasks.findTasks(inData);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"LimJH2002"},"content":" ui.showMatchingTasks(matchedTasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"LimJH2002"},"content":" case BYE:","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"LimJH2002"},"content":" ui.showGoodbye();","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"LimJH2002"},"content":" return;","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"LimJH2002"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"LimJH2002"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"LimJH2002"},"content":" ui.showUnknownCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"LimJH2002"},"content":" } catch (SimonException se) {","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"LimJH2002"},"content":" ui.showError(se.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"LimJH2002"},"content":" * The main entry point for the {@code Simon} application.","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"LimJH2002"},"content":" * @param args Command line arguments. Not used.","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"LimJH2002"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"LimJH2002"},"content":" new Simon(\"data/simon.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"LimJH2002":112}},{"path":"src/main/java/simon/SimonAscii.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":" * The {@code SimonAscii} class provides an ASCII representation for the name \"Simon\".","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":" * This class contains a static method to retrieve the ASCII representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"public class SimonAscii {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":" /** ASCII representation of the name \"Simon\". */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" private static final String name \u003d","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" \" _______. __ .___ ___. ______ .__ __. \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" \" / || | | \\\\/ | / __ \\\\ | \\\\ | | \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" \" | (----`| | | \\\\ / | | | | | | \\\\| | \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" \" \\\\ \\\\ | | | |\\\\/| | | | | | | . ` | \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" \".----) | | | | | | | | `--\u0027 | | |\\\\ | \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" \"|_______/ |__| |__| |__| \\\\______/ |__| \\\\__| \\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" * Returns the ASCII representation of the name \"Simon\".","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" * @return A string containing the ASCII representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" public static String toStr() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" return name;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"LimJH2002":26}},{"path":"src/main/java/simon/SimonException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":" * The {@code SimonException} class represents exceptions specific to the Simon application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":" * This custom exception class extends the Java {@link Exception} class and is used","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":" * to handle and represent errors that can occur during the operation of the Simon application.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"public class SimonException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" * Constructs a new {@code SimonException} with the specified detail message.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" * @param message The detail message which provides more information about the error.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" public SimonException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"LimJH2002":18}},{"path":"src/main/java/simon/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":"import simon.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" * The {@code Storage} class handles the loading and saving of tasks to a specified file.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" * It ensures that tasks are persisted across multiple runs of the Simon application.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" /** The path to the file where tasks are stored. */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" private final String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" * Constructs a new {@code Storage} instance with the specified file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" * @param filePath The path to the file used for storing tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" * Loads tasks from the specified file. If the file does not exist, it is created.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" * @return An {@code ArrayList} of tasks loaded from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" * @throws SimonException If there is an error parsing the saved data.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" public ArrayList\u003cTask\u003e load() throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" ArrayList\u003cTask\u003e loadedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" // Ensure data directory exists","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" File dir \u003d new File(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" dir.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" // Ensure simon.txt file exists","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"LimJH2002"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"LimJH2002"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"An error occurred while creating the data file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"LimJH2002"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"LimJH2002"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"LimJH2002"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"LimJH2002"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"LimJH2002"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"LimJH2002"},"content":" String[] parts \u003d data.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"LimJH2002"},"content":" switch (parts[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"LimJH2002"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"LimJH2002"},"content":" ToDo todo \u003d new ToDo(parts[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"LimJH2002"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"LimJH2002"},"content":" todo.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"LimJH2002"},"content":" loadedTasks.add(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"LimJH2002"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"LimJH2002"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"LimJH2002"},"content":" Deadline deadline \u003d new Deadline(parts[2], endDateTime.format(formatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"LimJH2002"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"LimJH2002"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"LimJH2002"},"content":" loadedTasks.add(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"LimJH2002"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"LimJH2002"},"content":" String startDateTimeStr \u003d parts[3];","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"LimJH2002"},"content":" String endDateTimeStr \u003d parts[4];","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"LimJH2002"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(startDateTimeStr, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"LimJH2002"},"content":" LocalDateTime endDateTime2 \u003d LocalDateTime.parse(endDateTimeStr, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"LimJH2002"},"content":" Event event \u003d new Event(parts[2], startDateTime.format(formatter), endDateTime2.format(formatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"LimJH2002"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"LimJH2002"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"LimJH2002"},"content":" loadedTasks.add(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"LimJH2002"},"content":" scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"LimJH2002"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"Data file not found. Starting with an empty task list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"LimJH2002"},"content":" } catch (SimonException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"LimJH2002"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"LimJH2002"},"content":" return loadedTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"LimJH2002"},"content":" * Saves the provided list of tasks to the specified file.","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"LimJH2002"},"content":" * @param tasks The {@code ArrayList} of tasks to be saved.","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"LimJH2002"},"content":" public void save(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"LimJH2002"},"content":" PrintWriter writer \u003d new PrintWriter(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"LimJH2002"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"LimJH2002"},"content":" if (task instanceof ToDo) {","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"LimJH2002"},"content":" writer.println(\"T | \" + (task.isDone ? \"1\" : \"0\") + \" | \" + task.taskName);","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"LimJH2002"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"LimJH2002"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"LimJH2002"},"content":" writer.println(\"D | \" + (task.isDone ? \"1\" : \"0\") + \" | \" + task.taskName + \" | \" + deadline.endDateTime.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"LimJH2002"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"LimJH2002"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"LimJH2002"},"content":" writer.println(\"E | \" + (task.isDone ? \"1\" : \"0\") + \" | \" + task.taskName + \" | \" + event.startDateTime.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\")) + \" | \" + event.endDateTime.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"LimJH2002"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"LimJH2002"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"LimJH2002"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"LimJH2002":130}},{"path":"src/main/java/simon/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":" * The {@code TaskList} class manages a list of tasks, allowing for operations such as","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":" * adding, marking, and deleting tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" /** List containing tasks. */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" * Constructs a new empty {@code TaskList}.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" * Constructs a new {@code TaskList} with the given list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" * @param tasks Initial list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" * Adds a task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" * Marks or unmarks a task as done based on the provided index.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":" * @param inData The input string containing the task index.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" * @param markAsDone Whether the task should be marked as done or undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" * @return The task that was marked or unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" * @throws SimonException If there\u0027s an issue with the provided index.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":" public Task markTask(String inData, boolean markAsDone) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":" int index \u003d parseIndex(inData);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" validateIndex(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" if (markAsDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":" tasks.get(index).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"LimJH2002"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"LimJH2002"},"content":" tasks.get(index).markAsUndone();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"LimJH2002"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"LimJH2002"},"content":" * Deletes a task from the list based on the provided index.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"LimJH2002"},"content":" * @param inData The input string containing the task index.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"LimJH2002"},"content":" * @return The task that was deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"LimJH2002"},"content":" * @throws SimonException If there\u0027s an issue with the provided index.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"LimJH2002"},"content":" public Task deleteTask(String inData) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"LimJH2002"},"content":" int index \u003d parseIndex(inData);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"LimJH2002"},"content":" validateIndex(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"LimJH2002"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"LimJH2002"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"LimJH2002"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"LimJH2002"},"content":" * Parses the provided input data to extract the task index.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"LimJH2002"},"content":" * @param inData The input string containing the task index.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"LimJH2002"},"content":" * @return The parsed task index.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"LimJH2002"},"content":" * @throws SimonException If the provided data does not contain a valid index.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"LimJH2002"},"content":" private int parseIndex(String inData) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"LimJH2002"},"content":" String[] split \u003d inData.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"LimJH2002"},"content":" return Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"LimJH2002"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"LimJH2002"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"LimJH2002"},"content":" * Validates if the given index is within the bounds of the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"LimJH2002"},"content":" * @param index The task index to validate.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"LimJH2002"},"content":" * @throws SimonException If the index is out of bounds.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"LimJH2002"},"content":" private void validateIndex(int index) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"LimJH2002"},"content":" if (this.tasks.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"There are no tasks to modify.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"LimJH2002"},"content":" if (index \u003c 0 || index \u003e\u003d this.tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"Invalid task number. Choose a number between 1 and \" + tasks.size() + \".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"LimJH2002"},"content":" * Retrieves a task from the list based on its index.","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"LimJH2002"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"LimJH2002"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"LimJH2002"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"LimJH2002"},"content":" return this.tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"LimJH2002"},"content":" * Returns the number of tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"LimJH2002"},"content":" * @return The total number of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"LimJH2002"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"LimJH2002"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"LimJH2002"},"content":" * Returns a copy of all tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"LimJH2002"},"content":" * @return An {@code ArrayList} containing all tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"LimJH2002"},"content":" public ArrayList\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"LimJH2002"},"content":" return new ArrayList\u003c\u003e(this.tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"LimJH2002"},"content":" * Parses the input to retrieve the keyword and finds tasks containing the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"LimJH2002"},"content":" * @param inData The input command to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"LimJH2002"},"content":" * @return A TaskList containing the matched tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"LimJH2002"},"content":" * @throws SimonException If the input format is incorrect or no keyword is provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"LimJH2002"},"content":" public TaskList findTasks(String inData) throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"LimJH2002"},"content":" String keyword \u003d parseKeyword(inData);","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"LimJH2002"},"content":" validateKeyword(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"LimJH2002"},"content":" return find(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"LimJH2002"},"content":" * Parses the input to retrieve the keyword for the find command.","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"LimJH2002"},"content":" * @param inData The input command to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"LimJH2002"},"content":" * @return The keyword from the input command.","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"LimJH2002"},"content":" * @throws SimonException If no keyword is provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"LimJH2002"},"content":" private String parseKeyword(String inData) throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"LimJH2002"},"content":" String[] split \u003d inData.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"LimJH2002"},"content":" return split[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"LimJH2002"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"Please provide a keyword to search.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"LimJH2002"},"content":" * Validates that the keyword is not empty or null.","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"LimJH2002"},"content":" * @param keyword The keyword to be validated.","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"LimJH2002"},"content":" * @throws SimonException If the keyword is empty or null.","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"LimJH2002"},"content":" private void validateKeyword(String keyword) throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"LimJH2002"},"content":" if (keyword \u003d\u003d null || keyword.trim().isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"Keyword cannot be empty. Please provide a valid keyword.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"LimJH2002"},"content":" * Finds tasks that contain the given keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"LimJH2002"},"content":" * @param keyword The keyword to be searched in tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"LimJH2002"},"content":" * @return A TaskList containing the matched tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"LimJH2002"},"content":" private TaskList find(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"LimJH2002"},"content":" ArrayList\u003cTask\u003e matchedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"LimJH2002"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"LimJH2002"},"content":" if (task.toString().contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"LimJH2002"},"content":" matchedTasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"LimJH2002"},"content":" return new TaskList(matchedTasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"LimJH2002":196}},{"path":"src/main/java/simon/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":" * The {@code Ui} class handles interactions with the user by displaying","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":" * messages and reading user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" * Displays the welcome message.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" System.out.println(Simon.SPACEN + SimonAscii.toStr());","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"Hello! I\u0027m Simon\\nWhat can I do for you?\\n\" + Simon.SPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" * Displays the goodbye message.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" public void showGoodbye() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"Bye. Hope to see you again soon!\" + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" * Displays an error message indicating a loading error.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"Data file not found. Starting with an empty task list.\" + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" * Displays the given error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" * @param message The error message to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" System.out.println(message + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" * Displays a message indicating a task has been added.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" * @param task The added task.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" * @param count The current number of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":" public void showAddedTask(Task task, int count) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" System.out.println(Simon.SPACEN + \"Got it. I\u0027ve added this task:\\n\" + \" \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":" task + String.format(\"\\nNow you have %d %s in the list.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" count, count \u003e 1 ? \"tasks\" : \"task\") + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"LimJH2002"},"content":" * Displays a message indicating a task has been deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"LimJH2002"},"content":" * @param task The deleted task.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"LimJH2002"},"content":" * @param count The current number of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"LimJH2002"},"content":" public void showDeletedTask(Task task, int count) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + task + String.format(\"\\nNow you have %d %s in the list.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"LimJH2002"},"content":" count, count \u003e 1 ? \"tasks\" : \"task\") + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"LimJH2002"},"content":" * Displays a message indicating a task\u0027s status has been changed.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"LimJH2002"},"content":" * @param marked True if the task is marked as done, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"LimJH2002"},"content":" * @param task The task whose status has been changed.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"LimJH2002"},"content":" public void showMarkedTask(boolean marked, Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"LimJH2002"},"content":" if (marked) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n \" + task + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"LimJH2002"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n \" + task + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"LimJH2002"},"content":" * Displays a message indicating an unknown command was entered.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"LimJH2002"},"content":" public void showUnknownCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"LimJH2002"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\" + Simon.NSPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"LimJH2002"},"content":" * Lists all tasks in the provided task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"LimJH2002"},"content":" * @param tasks The task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"LimJH2002"},"content":" public void listTasks(TaskList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"LimJH2002"},"content":" for (int i \u003d 0; i \u003c tasks.getTaskCount(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"LimJH2002"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"LimJH2002"},"content":" System.out.println(Simon.SPACE);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"LimJH2002"},"content":" * Displays the tasks that match the given keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"LimJH2002"},"content":" * @param matchedTasks An ArrayList of tasks that match the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"LimJH2002"},"content":" public void showMatchingTasks(TaskList matchedTasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"LimJH2002"},"content":" System.out.println(Simon.SPACEN + \"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"LimJH2002"},"content":" for (int i \u003d 0; i \u003c matchedTasks.getTaskCount(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"LimJH2002"},"content":" System.out.println((i + 1) + \".\" + matchedTasks.getTask(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"LimJH2002"},"content":" System.out.println(Simon.SPACE);","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"LimJH2002"},"content":" * Reads user input from the provided scanner.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"LimJH2002"},"content":" * @param scanner The scanner to read input from.","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"LimJH2002"},"content":" * @return The user\u0027s input as a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"LimJH2002"},"content":" public String readInput(Scanner scanner) {","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"LimJH2002"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"LimJH2002":121}},{"path":"src/main/java/simon/command/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import simon.SimonException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"import simon.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" * The {@code Parser} class is responsible for interpreting user input commands and","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" * converting them into actions that the Simon application can understand and execute.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" * It serves as a bridge between user inputs and the internal representation of commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" * Enumeration of valid commands that the Simon application can process.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" * Each command type corresponds to a specific action or operation","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" * that can be performed by the Simon application.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" public enum Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" TODO, DEADLINE, EVENT, LIST, MARK, UNMARK, DELETE, BYE, FIND, UNKNOWN","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" * Converts a given raw user input into its corresponding {@code Command} type.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" * If the input does not match any known command, it defaults to {@code UNKNOWN}.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" * @param input The raw user input command as a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" * @return The {@code Command} enumeration representing the type of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" public static Command parseCommand(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" return Parser.Command.valueOf(input.toUpperCase());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" return Parser.Command.UNKNOWN;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" * Analyzes the input data to construct a specific {@code Task} object based on","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":" * the provided command type. This method can handle various task types like","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" * {@code ToDo}, {@code Deadline}, and {@code Event}.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" * The method throws a {@code SimonException} for invalid or incomplete user inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" * @param inData The raw user input string containing task details.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":" * @param commandType The type of command the user input string represents.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" * @return A {@code Task} object representing the task detailed in the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":" * @throws SimonException If there is an error in interpreting the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"LimJH2002"},"content":" public static Task parseAddTask(String inData, Command commandType) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"LimJH2002"},"content":" Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"LimJH2002"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"LimJH2002"},"content":" case TODO:","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"LimJH2002"},"content":" String description \u003d inData.split(\"todo \").length \u003e 1 ? inData.split(\"todo \")[1] : \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"LimJH2002"},"content":" if (description.trim().isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"LimJH2002"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"LimJH2002"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"LimJH2002"},"content":" String[] deadlineParts \u003d inData.split(\"deadline \");","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"LimJH2002"},"content":" if (deadlineParts.length \u003c\u003d 1 || !inData.contains(\" /by \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The format for deadline is incorrect. Expected format: \u0027deadline [task description] /by [dd/mm/yyyy HHmm]\u0027. Time(HHmm) is optional.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"LimJH2002"},"content":" String nameDeadline \u003d deadlineParts.length \u003e 1 ? deadlineParts[1].split(\" /by \")[0] : \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"LimJH2002"},"content":" if (nameDeadline.trim().isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"LimJH2002"},"content":" String endDate \u003d deadlineParts[1].split(\" /by \").length \u003e 1 ? deadlineParts[1].split(\" /by \")[1] : \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"LimJH2002"},"content":" if (endDate.trim().isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The deadline date cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"LimJH2002"},"content":" task \u003d new Deadline(nameDeadline, endDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"LimJH2002"},"content":" case EVENT:","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"LimJH2002"},"content":" String[] eventParts \u003d inData.split(\"event \");","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"LimJH2002"},"content":" if (eventParts.length \u003c\u003d 1 || !inData.contains(\"/from \") || !inData.contains(\"/to \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The format for event is incorrect. Expected format: \u0027event [event description] /from [dd/mm/yyyy HHmm] /to [dd/mm/yyyy HHmm]\u0027. The time(HHmm) is optional.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"LimJH2002"},"content":" String[] fromToParts \u003d eventParts[1].split(\" /from \");","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"LimJH2002"},"content":" if (fromToParts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The format for event is missing \u0027from\u0027 information.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"LimJH2002"},"content":" String eventName \u003d fromToParts[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"LimJH2002"},"content":" if (eventName.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"LimJH2002"},"content":" String[] toParts \u003d fromToParts[1].split(\" /to \");","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"LimJH2002"},"content":" if (toParts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! The format for event is missing \u0027to\u0027 information.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"LimJH2002"},"content":" String startDate \u003d toParts[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"LimJH2002"},"content":" String endDateEvent \u003d toParts[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"LimJH2002"},"content":" task \u003d new Event(eventName, startDate, endDateEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"LimJH2002"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"LimJH2002"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"LimJH2002"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"LimJH2002":114}},{"path":"src/main/java/simon/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import simon.SimonException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" * The {@code Deadline} class extends the {@code Task} class and represents a task","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" * that has a specific end date and time by which it should be completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" /** The end date and time for this deadline task. */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" public final LocalDateTime endDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" /** Formatter to parse date and time input provided by the user. */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" private static final DateTimeFormatter INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy[ HHmm]\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" /** Formatter to format date and time for output display. */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" private static final DateTimeFormatter OUTPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, h:mm a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" * Constructs a new Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" * @param taskName The name or description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" * @param endDate The end date and time string for this deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" * @throws SimonException If the provided date and time format is incorrect.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" public Deadline(String taskName, String endDate) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" super(taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" // If no time specified, append \" 0000\"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" if (!endDate.contains(\" \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" endDate +\u003d \" 0000\";","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" this.endDateTime \u003d LocalDateTime.parse(endDate, INPUT_FORMATTER);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"The date and time format is incorrect. Expected format: d/M/yyyy [HHmm].\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" * Converts this Deadline task to a string format suitable for display.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" * @return A string representation of this Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":" return \" [D]\" + (super.isDone ? \"[X] \" : \"[ ] \") + super.toString() + \" (by: \" + endDateTime.format(OUTPUT_FORMATTER) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"LimJH2002":53}},{"path":"src/main/java/simon/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import simon.SimonException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" * The {@code Event} class extends the {@code Task} class and represents a task","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" * that has a specific start and end date and time defining the duration of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" /** The start date and time of this event. */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" public LocalDateTime startDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" /** The end date and time of this event. */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" public LocalDateTime endDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" /** Formatter to parse date and time input provided by the user. */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" private static final DateTimeFormatter INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy[ HHmm]\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" /** Formatter to format date and time for output display. */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" private static final DateTimeFormatter OUTPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, h:mm a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" * Constructs a new Event task with the given name, start date, and end date.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" * @param taskName The name or description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" * @param startDate The start date and time string for this event.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" * @param endDate The end date and time string for this event.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" * @throws SimonException If the provided date and time format is incorrect or if the end time is before the start time.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" public Event(String taskName, String startDate, String endDate) throws SimonException {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" super(taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" // If no time specified, append \" 0000\"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" if (!startDate.contains(\" \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" startDate +\u003d \" 0000\";","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" if (!endDate.contains(\" \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":" endDate +\u003d \" 0000\";","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" this.startDateTime \u003d LocalDateTime.parse(startDate, INPUT_FORMATTER);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" this.endDateTime \u003d LocalDateTime.parse(endDate, INPUT_FORMATTER);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":" // Validate that endDateTime is after startDateTime","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" if (!endDateTime.isAfter(startDateTime)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"The end time should be after the start time.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"LimJH2002"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"LimJH2002"},"content":" throw new SimonException(\"The date and time format is incorrect. Expected format: d/M/yyyy [HHmm].\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"LimJH2002"},"content":" * Converts this Event task to a string format suitable for display.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"LimJH2002"},"content":" * @return A string representation of this Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"LimJH2002"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"LimJH2002"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"LimJH2002"},"content":" return \" [E]\" + (super.isDone ? \"[X] \" : \"[ ] \") + super.toString() +","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"LimJH2002"},"content":" \" (from: \" + startDateTime.format(OUTPUT_FORMATTER) +","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"LimJH2002"},"content":" \" to: \" + endDateTime.format(OUTPUT_FORMATTER) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"LimJH2002":70}},{"path":"src/main/java/simon/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":" * The {@code Task} class represents a general task with a description and a completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":" * This class serves as the base class for other specialized task types.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":" /** The name or description of the task. */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" public String taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" /** Flag indicating whether the task has been completed. */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" public boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" * Constructs a new Task with the given name or description.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" * @param taskName The name or description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" public Task(String taskName) {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" * Marks this task as completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" * Marks this task as not completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" * Converts this task to a string format suitable for display.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" * @return A string representation of this task.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" return this.taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"LimJH2002":48}},{"path":"src/main/java/simon/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":" * The {@code ToDo} class extends the {@code Task} class and represents a basic task","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":" * with no specific start or end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" * Constructs a new ToDo task with the given name.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" * @param taskName The name or description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" public ToDo(String taskName) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" super(taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" * Converts this ToDo task to a string format suitable for display.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" * @return A string representation of this ToDo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" return \" [T]\" + (super.isDone ? \"[X] \" : \"[ ] \") + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"LimJH2002":27}},{"path":"src/test/java/simon/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import simon.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" public void load_validFile_tasksLoaded() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" Storage storage \u003d new Storage(\"data/testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" ArrayList\u003cTask\u003e tasks \u003d storage.load();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" assertTrue(tasks.isEmpty());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" public void save_validTasks_tasksSaved() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" tasks.add(new ToDo(\"Test Task\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" Storage storage \u003d new Storage(\"data/testSaveFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" ArrayList\u003cTask\u003e loadedTasks \u003d storage.load();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" assertEquals(tasks.size(), loadedTasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LimJH2002":27}},{"path":"src/test/java/simon/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import simon.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" public void markTask_validIndex_taskMarkedAsDone() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Sample Task\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" Task markedTask \u003d tasks.markTask(\"mark 1\", true);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" assertTrue(markedTask.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" public void markTask_invalidIndex_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" assertThrows(SimonException.class, () -\u003e tasks.markTask(\"100\", true));","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" public void deleteTask_validIndex_taskDeleted() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Sample Task\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" Task deletedTask \u003d tasks.deleteTask(\"delete 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" assertEquals(\"Sample Task\", deletedTask.taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":" assertEquals(0, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" public void deleteTask_invalidIndex_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" assertThrows(SimonException.class, () -\u003e tasks.deleteTask(\"delete 100\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" public void addTask_multipleTasks_addedSuccessfully() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Task 1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Task 2\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Task 3\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" assertEquals(3, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":" public void deleteTask_multipleTasks_deletedSuccessfully() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Task 1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Task 2\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Task 3\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"LimJH2002"},"content":" Task deletedTask1 \u003d tasks.deleteTask(\"delete 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"LimJH2002"},"content":" assertEquals(\"Task 1\", deletedTask1.taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"LimJH2002"},"content":" assertEquals(2, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"LimJH2002"},"content":" Task deletedTask2 \u003d tasks.deleteTask(\"delete 2\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"LimJH2002"},"content":" assertEquals(\"Task 3\", deletedTask2.taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"LimJH2002"},"content":" assertEquals(1, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"LimJH2002"},"content":" public void markTask_emptyTaskList_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"LimJH2002"},"content":" assertThrows(SimonException.class, () -\u003e tasks.markTask(\"mark 1\", true));","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"LimJH2002"},"content":" public void findTasks_matchingKeyword_returnMatchingTasks() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Read book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Return book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Watch movie\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"LimJH2002"},"content":" TaskList foundTasks \u003d tasks.findTasks(\"find book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"LimJH2002"},"content":" assertEquals(2, foundTasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"LimJH2002"},"content":" assertTrue(foundTasks.getTask(0).toString().contains(\"Read book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"LimJH2002"},"content":" assertTrue(foundTasks.getTask(1).toString().contains(\"Return book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"LimJH2002"},"content":" public void findTasks_noMatch_returnEmptyList() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Read book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Watch movie\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"LimJH2002"},"content":" TaskList foundTasks \u003d tasks.findTasks(\"find exercise\");","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"LimJH2002"},"content":" assertEquals(0, foundTasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"LimJH2002"},"content":" public void findTasks_emptyList_returnEmptyList() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"LimJH2002"},"content":" TaskList foundTasks \u003d tasks.findTasks(\"find book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"LimJH2002"},"content":" assertEquals(0, foundTasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"LimJH2002"},"content":" public void getTask_validIndex_returnTask() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Sample Task\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"LimJH2002"},"content":" Task retrievedTask \u003d tasks.getTask(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"LimJH2002"},"content":" assertEquals(\"Sample Task\", retrievedTask.taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"LimJH2002"},"content":" public void getTask_invalidIndex_outOfBoundsException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"LimJH2002"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"LimJH2002"},"content":" tasks.addTask(new ToDo(\"Sample Task\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"LimJH2002"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e tasks.getTask(100));","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LimJH2002":119}},{"path":"src/test/java/simon/command/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.SimonException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import simon.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" public void parseAddTask_validToDoInput_todoAdded() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" String input \u003d \"todo Sample Task\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" Task task \u003d Parser.parseAddTask(input, Parser.Command.TODO);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" assertEquals(\"Sample Task\", task.taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" public void parseAddTask_invalidInput_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" String input \u003d \"todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" assertThrows(SimonException.class, () -\u003e Parser.parseAddTask(input, Parser.Command.TODO));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":" // Assuming the functionality for DEADLINE and EVENT","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" public void parseAddTask_validDeadlineInput_deadlineAdded() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" String input \u003d \"deadline Sample Task /by 01/01/2023 1800\";","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" Task task \u003d Parser.parseAddTask(input, Parser.Command.DEADLINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" assertEquals(\"Sample Task\", task.taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" public void parseAddTask_validEventInput_eventAdded() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" String input \u003d \"event Sample Event /from 01/01/2023 1800 /to 02/01/2023 1800\";","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" Task task \u003d Parser.parseAddTask(input, Parser.Command.EVENT);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" assertEquals(\"Sample Event\", task.taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LimJH2002"},"content":" public void parseAddTask_invalidDeadlineFormat_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LimJH2002"},"content":" String input \u003d \"deadline Sample Task\";","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LimJH2002"},"content":" assertThrows(SimonException.class, () -\u003e Parser.parseAddTask(input, Parser.Command.DEADLINE));","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LimJH2002"},"content":" public void parseAddTask_invalidEventFormat_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LimJH2002"},"content":" String input \u003d \"event Sample Event /from 01/01/2023 1800\";","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LimJH2002"},"content":" assertThrows(SimonException.class, () -\u003e Parser.parseAddTask(input, Parser.Command.EVENT));","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LimJH2002":49}},{"path":"src/test/java/simon/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"package simon.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"import simon.SimonException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"public class TaskTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":" public void markAsDone_taskNotDone_taskMarkedAsDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":" Task task \u003d new ToDo(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":" assertTrue(task.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":" public void markAsUndone_taskDone_taskMarkedAsUndone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":" Task task \u003d new ToDo(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":" task.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":" assertFalse(task.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":" public void deadline_toString_formattedCorrectly() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":" Deadline deadline \u003d new Deadline(\"Submit Report\", \"12/12/2023 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":" String expected \u003d \" [D][ ] Submit Report (by: Dec 12 2023, 11:59 PM)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":" assertEquals(expected, deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LimJH2002"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LimJH2002"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LimJH2002"},"content":" public void event_toString_formattedCorrectly() throws SimonException {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LimJH2002"},"content":" Event event \u003d new Event(\"Team Meeting\", \"12/12/2023 1400\", \"12/12/2023 1600\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LimJH2002"},"content":" String expected \u003d \" [E][ ] Team Meeting (from: Dec 12 2023, 2:00 PM to: Dec 12 2023, 4:00 PM)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LimJH2002"},"content":" assertEquals(expected, event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LimJH2002"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LimJH2002"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LimJH2002":37}},{"path":"text-ui-test/data/simon.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"T | 1 | This is a very long description just to test Simon\u0027s ability to handle long inputs without breaking or malfunctioning in any way","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"T | 1 | This is a very long description just to test Simon\u0027s ability to handle long inputs without breaking or malfunctioning in any way","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"T | 0 | This is a very long description just to test Simon\u0027s ability to handle long inputs without breaking or malfunctioning in any way","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"T | 0 | This is a very long description just to test Simon\u0027s ability to handle long inputs without breaking or malfunctioning in any way","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"T | 0 | This is a very long description just to test Simon\u0027s ability to handle long inputs without breaking or malfunctioning in any way","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"LimJH2002":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LimJH2002"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"LimJH2002"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"LimJH2002"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"LimJH2002"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"LimJH2002"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"LimJH2002"},"content":"unknowncommand","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"LimJH2002"},"content":"mark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"LimJH2002"},"content":"unmark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"LimJH2002"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"LimJH2002"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"LimJH2002"},"content":"delete 5","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"LimJH2002"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"LimJH2002"},"content":"deadline submit report","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"LimJH2002"},"content":"event team lunch /from Tue 12pm","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"LimJH2002"},"content":"delete abc","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"LimJH2002"},"content":"todo This is a very long description just to test Simon\u0027s ability to handle long inputs without breaking or malfunctioning in any way","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"LimJH2002"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"LimJH2002"},"content":"unmark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"LimJH2002"},"content":"deadline /by next Monday","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"LimJH2002"},"content":"event team dinner /from Wed 8pm","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"LimJH2002"},"content":"mark xyz","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"LimJH2002"},"content":"unmark abc","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"LimJH2002"},"content":"unmark 10","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"LimJH2002"},"content":"mark 10","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"LimJH2002"},"content":"deadline /by","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"LimJH2002"},"content":"event /from Thu 9am /to 11am","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"LimJH2002"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"LimJH2002"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"LimJH2002":28}},{"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":"LimJH2002"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/simon/*/*.java","lastModifiedDate":"2023-08-30"},{"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":"LimJH2002"},"content":"java -classpath ../bin Simon \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"LimJH2002":2,"-":36}}] diff --git a/LimJH2002_ip_master/commits.json b/LimJH2002_ip_master/commits.json index e0ceaed0..09018e80 100644 --- a/LimJH2002_ip_master/commits.json +++ b/LimJH2002_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"LimJH2002":[{"date":"2023-08-22","commitResults":[{"hash":"677483b900af62e97301877fd53ed923c0037f63","isMergeCommit":false,"messageTitle":"Update Simon.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":10}}},{"hash":"1030ac74522d3cc9eaf85b5d3f73744a7d11a59d","isMergeCommit":false,"messageTitle":"Added Echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"e701f204b7934e7ee6146fa46d91c841c70312ed","isMergeCommit":false,"messageTitle":"Added ability to add task and print task","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"d9cd649f09d6464fe8b7261c3cb3c613aa3f40f6","isMergeCommit":false,"messageTitle":"Added task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"4c3aa371ae50586c1259093462cd83f14d138a5a","isMergeCommit":false,"messageTitle":"Added undone functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":5}}},{"hash":"f56ca92f4b3ca4566d65c0ddf89c0a490f522324","isMergeCommit":false,"messageTitle":"Added mark functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}}]},{"date":"2023-08-23","commitResults":[{"hash":"17bf281de50ac049f2118b9528c72492fd320a7e","isMergeCommit":false,"messageTitle":"Fixed output bug","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"323d80c84a213f39b838cd1d53e92c10d3d5a689","isMergeCommit":false,"messageTitle":"Added SIMON Logo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"4786cb4e4d1b690aa9b1676fc9ba81b7323ac7f6","isMergeCommit":false,"messageTitle":"Added todo, event, deadlines classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"896bb94f0ade1a1196bd3acacb43143e436b2296","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}},{"hash":"9aa7d0818ea553de021dcd4d6efce1aaed79f7a2","isMergeCommit":false,"messageTitle":"Update Simon.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"9ba69474b669f9e77ade0d692ec19e51384ba1c9","isMergeCommit":false,"messageTitle":"Added testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":2,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"5fb0063436515f9efef5a43bde4a9ab26125ef14","isMergeCommit":false,"messageTitle":"Revamped codebase","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":91,"deletions":63}}},{"hash":"2173779555c579434966e0320f76af08f97c19df","isMergeCommit":false,"messageTitle":"Added exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":16}}},{"hash":"281ecee1ac719870d4bb646412b8e419f399eb20","isMergeCommit":false,"messageTitle":"Added mark tasks error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"931c58808c80df2a99f89e4ecb7dd1ab5d399e55","isMergeCommit":false,"messageTitle":"Added support for remove task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}},{"hash":"df413e5a4e00ad4317f7fab4bc74eac944e3a24f","isMergeCommit":false,"messageTitle":"Updated printing bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"e8b79b8f514dbc447dd00c42d3dcdacb4eebba71","isMergeCommit":false,"messageTitle":"Fixed delete bug","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"b8c53a23e806082bf0e32773b1d148b7df569e8e","isMergeCommit":false,"messageTitle":"Updated test cases","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":20}}},{"hash":"8848c8f75f5e45c6abd171c81ffcc59fef632b18","isMergeCommit":false,"messageTitle":"Added a lot more test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":23,"deletions":1},"java":{"insertions":32,"deletions":7}}}]},{"date":"2023-08-30","commitResults":[{"hash":"94846d2880e459d536a8c9cbc98cb5d8bb0f877e","isMergeCommit":false,"messageTitle":"Create simon.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"6734a116088c7a57e96a9b5cf6010e7e0c0b3c45","isMergeCommit":false,"messageTitle":"Fix typo in events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"02b3535f7f5bb15f42c0915814b77da2aafb5089","isMergeCommit":false,"messageTitle":"Add saveTasksToFile function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":2}}},{"hash":"55aa8ed6216dd34164da759effe89b6da7533654","isMergeCommit":false,"messageTitle":"Add loadTasksFromFile","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"3466b638e9e411bfeeb79562fa2149126068674a","isMergeCommit":false,"messageTitle":"Change field to protected","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"58ea1d54da4e677e9b76a7168801a6587950f5d4","isMergeCommit":false,"messageTitle":"Add checks for /data and simon.txt","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":1}}},{"hash":"5428ed9684abcd20b7db67e02b1f4efee2744951","isMergeCommit":false,"messageTitle":"Update simon.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"a663b776bb641ba147941cbbd52e68206e5e3f11","isMergeCommit":false,"messageTitle":"Delete data directory","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}},{"hash":"1bd870d6e911744271873925a8e8c06fa4474394","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Added Level 7 features","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"fa62fb8e9073e26c8c4482db3976f9c79dee8ba8","isMergeCommit":false,"messageTitle":"Add date recognition for deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":7}}},{"hash":"1f5c2c6406b53774a970fe5afdb1a5eff41adb0a","isMergeCommit":false,"messageTitle":"Fix deadline date bugs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":2}}},{"hash":"d4b6cd839de272fa2a543784d61d169afc03ca81","isMergeCommit":false,"messageTitle":"Update Simon.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"edc47ce3c385f877db8438436ea40e5fd99cb054","isMergeCommit":false,"messageTitle":"Add support for datetime in events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":8}}},{"hash":"f72b21859fd0f0020f6b19b6524d3f2d76e7f242","isMergeCommit":false,"messageTitle":"Add support to parse and record date time","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"b467158c27f152fb121cc9bd309d08457a874f03","isMergeCommit":false,"messageTitle":"Added support for logic checkdate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"a0cd1cc1f40a21ba4b92d6bd19fdfd855877fbad","isMergeCommit":false,"messageTitle":"Add support for optional time in event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":3}}},{"hash":"52adf403a07c2b022baefa7f05b5a17f1f6b0a78","isMergeCommit":false,"messageTitle":"Add support for optional time in deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":3}}},{"hash":"e65d84c857b1d6b428e842b2a011f472911a47f2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 Completed Level-8 Features","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"98be0f7e77b5cddccedfa1291a19e736de443c42","isMergeCommit":false,"messageTitle":"Add Ui Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":3}}},{"hash":"517b2f52b2bc8a1b6d265b00095dbafc2877f29d","isMergeCommit":false,"messageTitle":"Create Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":0}}},{"hash":"816511e5806f073b67321bb7e7845e2ed66e08e0","isMergeCommit":false,"messageTitle":"Create Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":0}}},{"hash":"9518e791e9f6ef8e953e386aff6cb5f2b7c29a5f","isMergeCommit":false,"messageTitle":"Create TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":0}}},{"hash":"07ca01215cafd3ae62d85648914fd926921b0211","isMergeCommit":false,"messageTitle":"Update TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":32}}},{"hash":"979ec5c45b8d4d693e8866e73e7b79b29a6993bd","isMergeCommit":false,"messageTitle":"Add more Ui support","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":244}}},{"hash":"6c3dbce87006fc300d74ab6583f1f71eddcdb3fb","isMergeCommit":false,"messageTitle":"Update TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":5}}},{"hash":"8e670d209c06f4614cfff28a94eaa9c2b3741a38","isMergeCommit":false,"messageTitle":"Update test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"a515d0f8cf9917157e98a219c6ac3fb520296297","isMergeCommit":false,"messageTitle":"Update Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"9a4369615603a93f15cae8f0953650e4afc360ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027 Complete OOP Structure of Simon the Chatbot","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"370f862087b662f93c4b3e23ec29c80b7f17d28f","isMergeCommit":false,"messageTitle":"Add package simon","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2},"sh":{"insertions":1,"deletions":1}}},{"hash":"051ea9d76a75f7c24722b2919331cdc31854c7ff","isMergeCommit":false,"messageTitle":"Complete stretch goal for package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":12},"sh":{"insertions":1,"deletions":1}}},{"hash":"a5cfebb43494c2c8f0d783435a8a7ad268e72215","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027 Complete Package Tasks","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"d8e0892e995d6a4c944bbe43b5603bc0a3a89579","isMergeCommit":false,"messageTitle":"Bump gradle and lib version","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":4}}},{"hash":"73545635943128747fad03a77c859483270bcb29","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/LimJH2002/ip into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"93bc02398116c3c07ae7fbb2a8b7ab06df5df990","isMergeCommit":false,"messageTitle":"Add support to run gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"8800fa9a467808758a2cb4ec51c666bb227e1a9d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 Add Gradle support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"199fe08f73ab3099848b2a5cbda75e5a313aaae0","isMergeCommit":false,"messageTitle":"Add ParserTest","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"c883d89e3d7d1b8866ac95772737a1f5a8be6861","isMergeCommit":false,"messageTitle":"Create TaskListTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"719095a1f414cb784e0c023260c04e491981028b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-JUnit\u0027 Add minimal JUnit test","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LimJH2002":{"java":590,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":2,"txt":33}},"authorContributionVariance":{"LimJH2002":66878.195},"authorDisplayNameMap":{"LimJH2002":"CS2103T-F08-1 LIM ..HONG"}} +{"authorDailyContributionsMap":{"LimJH2002":[{"date":"2023-08-22","commitResults":[{"hash":"677483b900af62e97301877fd53ed923c0037f63","isMergeCommit":false,"messageTitle":"Update Simon.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":10}}},{"hash":"1030ac74522d3cc9eaf85b5d3f73744a7d11a59d","isMergeCommit":false,"messageTitle":"Added Echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"e701f204b7934e7ee6146fa46d91c841c70312ed","isMergeCommit":false,"messageTitle":"Added ability to add task and print task","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"d9cd649f09d6464fe8b7261c3cb3c613aa3f40f6","isMergeCommit":false,"messageTitle":"Added task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"4c3aa371ae50586c1259093462cd83f14d138a5a","isMergeCommit":false,"messageTitle":"Added undone functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":5}}},{"hash":"f56ca92f4b3ca4566d65c0ddf89c0a490f522324","isMergeCommit":false,"messageTitle":"Added mark functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}}]},{"date":"2023-08-23","commitResults":[{"hash":"17bf281de50ac049f2118b9528c72492fd320a7e","isMergeCommit":false,"messageTitle":"Fixed output bug","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"323d80c84a213f39b838cd1d53e92c10d3d5a689","isMergeCommit":false,"messageTitle":"Added SIMON Logo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"4786cb4e4d1b690aa9b1676fc9ba81b7323ac7f6","isMergeCommit":false,"messageTitle":"Added todo, event, deadlines classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"896bb94f0ade1a1196bd3acacb43143e436b2296","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}},{"hash":"9aa7d0818ea553de021dcd4d6efce1aaed79f7a2","isMergeCommit":false,"messageTitle":"Update Simon.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"9ba69474b669f9e77ade0d692ec19e51384ba1c9","isMergeCommit":false,"messageTitle":"Added testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":2,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"5fb0063436515f9efef5a43bde4a9ab26125ef14","isMergeCommit":false,"messageTitle":"Revamped codebase","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":91,"deletions":63}}},{"hash":"2173779555c579434966e0320f76af08f97c19df","isMergeCommit":false,"messageTitle":"Added exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":16}}},{"hash":"281ecee1ac719870d4bb646412b8e419f399eb20","isMergeCommit":false,"messageTitle":"Added mark tasks error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"931c58808c80df2a99f89e4ecb7dd1ab5d399e55","isMergeCommit":false,"messageTitle":"Added support for remove task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}},{"hash":"df413e5a4e00ad4317f7fab4bc74eac944e3a24f","isMergeCommit":false,"messageTitle":"Updated printing bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"e8b79b8f514dbc447dd00c42d3dcdacb4eebba71","isMergeCommit":false,"messageTitle":"Fixed delete bug","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"b8c53a23e806082bf0e32773b1d148b7df569e8e","isMergeCommit":false,"messageTitle":"Updated test cases","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":20}}},{"hash":"8848c8f75f5e45c6abd171c81ffcc59fef632b18","isMergeCommit":false,"messageTitle":"Added a lot more test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":23,"deletions":1},"java":{"insertions":32,"deletions":7}}}]},{"date":"2023-08-30","commitResults":[{"hash":"94846d2880e459d536a8c9cbc98cb5d8bb0f877e","isMergeCommit":false,"messageTitle":"Create simon.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"6734a116088c7a57e96a9b5cf6010e7e0c0b3c45","isMergeCommit":false,"messageTitle":"Fix typo in events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"02b3535f7f5bb15f42c0915814b77da2aafb5089","isMergeCommit":false,"messageTitle":"Add saveTasksToFile function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":2}}},{"hash":"55aa8ed6216dd34164da759effe89b6da7533654","isMergeCommit":false,"messageTitle":"Add loadTasksFromFile","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"3466b638e9e411bfeeb79562fa2149126068674a","isMergeCommit":false,"messageTitle":"Change field to protected","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"58ea1d54da4e677e9b76a7168801a6587950f5d4","isMergeCommit":false,"messageTitle":"Add checks for /data and simon.txt","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":1}}},{"hash":"5428ed9684abcd20b7db67e02b1f4efee2744951","isMergeCommit":false,"messageTitle":"Update simon.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"a663b776bb641ba147941cbbd52e68206e5e3f11","isMergeCommit":false,"messageTitle":"Delete data directory","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}},{"hash":"1bd870d6e911744271873925a8e8c06fa4474394","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Added Level 7 features","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"fa62fb8e9073e26c8c4482db3976f9c79dee8ba8","isMergeCommit":false,"messageTitle":"Add date recognition for deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":7}}},{"hash":"1f5c2c6406b53774a970fe5afdb1a5eff41adb0a","isMergeCommit":false,"messageTitle":"Fix deadline date bugs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":2}}},{"hash":"d4b6cd839de272fa2a543784d61d169afc03ca81","isMergeCommit":false,"messageTitle":"Update Simon.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"edc47ce3c385f877db8438436ea40e5fd99cb054","isMergeCommit":false,"messageTitle":"Add support for datetime in events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":8}}},{"hash":"f72b21859fd0f0020f6b19b6524d3f2d76e7f242","isMergeCommit":false,"messageTitle":"Add support to parse and record date time","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"b467158c27f152fb121cc9bd309d08457a874f03","isMergeCommit":false,"messageTitle":"Added support for logic checkdate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"a0cd1cc1f40a21ba4b92d6bd19fdfd855877fbad","isMergeCommit":false,"messageTitle":"Add support for optional time in event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":3}}},{"hash":"52adf403a07c2b022baefa7f05b5a17f1f6b0a78","isMergeCommit":false,"messageTitle":"Add support for optional time in deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":3}}},{"hash":"e65d84c857b1d6b428e842b2a011f472911a47f2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 Completed Level-8 Features","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"98be0f7e77b5cddccedfa1291a19e736de443c42","isMergeCommit":false,"messageTitle":"Add Ui Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":3}}},{"hash":"517b2f52b2bc8a1b6d265b00095dbafc2877f29d","isMergeCommit":false,"messageTitle":"Create Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":0}}},{"hash":"816511e5806f073b67321bb7e7845e2ed66e08e0","isMergeCommit":false,"messageTitle":"Create Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":0}}},{"hash":"9518e791e9f6ef8e953e386aff6cb5f2b7c29a5f","isMergeCommit":false,"messageTitle":"Create TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":0}}},{"hash":"07ca01215cafd3ae62d85648914fd926921b0211","isMergeCommit":false,"messageTitle":"Update TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":32}}},{"hash":"979ec5c45b8d4d693e8866e73e7b79b29a6993bd","isMergeCommit":false,"messageTitle":"Add more Ui support","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":244}}},{"hash":"6c3dbce87006fc300d74ab6583f1f71eddcdb3fb","isMergeCommit":false,"messageTitle":"Update TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":5}}},{"hash":"8e670d209c06f4614cfff28a94eaa9c2b3741a38","isMergeCommit":false,"messageTitle":"Update test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"a515d0f8cf9917157e98a219c6ac3fb520296297","isMergeCommit":false,"messageTitle":"Update Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"9a4369615603a93f15cae8f0953650e4afc360ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027 Complete OOP Structure of Simon the Chatbot","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"370f862087b662f93c4b3e23ec29c80b7f17d28f","isMergeCommit":false,"messageTitle":"Add package simon","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2},"sh":{"insertions":1,"deletions":1}}},{"hash":"051ea9d76a75f7c24722b2919331cdc31854c7ff","isMergeCommit":false,"messageTitle":"Complete stretch goal for package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":12},"sh":{"insertions":1,"deletions":1}}},{"hash":"a5cfebb43494c2c8f0d783435a8a7ad268e72215","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027 Complete Package Tasks","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"d8e0892e995d6a4c944bbe43b5603bc0a3a89579","isMergeCommit":false,"messageTitle":"Bump gradle and lib version","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":4}}},{"hash":"73545635943128747fad03a77c859483270bcb29","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/LimJH2002/ip into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"93bc02398116c3c07ae7fbb2a8b7ab06df5df990","isMergeCommit":false,"messageTitle":"Add support to run gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"8800fa9a467808758a2cb4ec51c666bb227e1a9d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 Add Gradle support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"199fe08f73ab3099848b2a5cbda75e5a313aaae0","isMergeCommit":false,"messageTitle":"Add ParserTest","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"c883d89e3d7d1b8866ac95772737a1f5a8be6861","isMergeCommit":false,"messageTitle":"Create TaskListTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"719095a1f414cb784e0c023260c04e491981028b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-JUnit\u0027 Add minimal JUnit test","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"2da1bba2165a37fd1471580db710d65dd3144aaa","isMergeCommit":false,"messageTitle":"Add more test for Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":4}}},{"hash":"79c342c2ac90495f7543c20a441fefa764f617b3","isMergeCommit":false,"messageTitle":"Fix parser bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"30039f6789616c15a320234851fc0fb707fbae42","isMergeCommit":false,"messageTitle":"Update Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"69aab22abaa8fe7f71965167178fd3c45ba1eef9","isMergeCommit":false,"messageTitle":"Update TaskListTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"5805236d1ad62de182018a57ac23f2c250c3616a","isMergeCommit":false,"messageTitle":"Update ParserTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"7de39f19b6cdfaf86c33e51cec712bee2c317df5","isMergeCommit":false,"messageTitle":"Update TaskListTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"4d46a37043a0b71cb89c3fd5c192a82cb170ebca","isMergeCommit":false,"messageTitle":"Add StorageTest","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":27,"deletions":0}}},{"hash":"3822d63a223902ffa9cd27e456dfd4cd4e126aed","isMergeCommit":false,"messageTitle":"Create TaskTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"c66f65783ab9f6df9196d6250a041f83f5e51814","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-JUnit\u0027 Add more testcases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c83ef233515c065b4720155c471a7f2328d6daab","isMergeCommit":false,"messageTitle":"Update build.gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":0}}},{"hash":"b01c5ba8fef1c37fc58ea520828ee270f4c7c065","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-AJar\u0027 Add Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"0b59fae70b21d9a312a4e58c7afe9383790e087a","isMergeCommit":false,"messageTitle":"Add Javadoc for Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}},{"hash":"cf764ef5ef8948cbd5d57bdd870f32a63abfbffa","isMergeCommit":false,"messageTitle":"Update Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"da1b6a52a17d93accbeab2108f03603fedff4fb8","isMergeCommit":false,"messageTitle":"Update Deadline.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"81ecf81f761c9a68e47c4cf6dc1280108355c52e","isMergeCommit":false,"messageTitle":"Update Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"57da3a169c67942496443e54e87159905cd45523","isMergeCommit":false,"messageTitle":"Update ToDo.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"0a9649c762e59da70b4e5cf692f1af2bce2ae263","isMergeCommit":false,"messageTitle":"Update Event.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":2}}},{"hash":"e8b3f1143e0aade638da8d0185097195de888d58","isMergeCommit":false,"messageTitle":"Update Simon.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":5}}},{"hash":"c6614e435727f6d02015d6d8fa7527c7a6731dfb","isMergeCommit":false,"messageTitle":"Update SimonAscii.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"1cf8ff558d8c94cea2d3ab5aacff97f4b75a8e84","isMergeCommit":false,"messageTitle":"Update SimonException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"810541afc7e25c35f89f75f2f047e44f3e810ddb","isMergeCommit":false,"messageTitle":"Update Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"2cc39df8e7016f429fb8e79430dd47ca9659f517","isMergeCommit":false,"messageTitle":"Update TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":0}}},{"hash":"9c9c81ee0236bb570b765fb5fddb738352b59d44","isMergeCommit":false,"messageTitle":"Update Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":0}}},{"hash":"5e2182ed47f41e2c353bf1eb8f95d00daee36bbe","isMergeCommit":false,"messageTitle":"Update Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}},{"hash":"cbb38f6c342b8b23f3eb068f46cc61fd6a18afbd","isMergeCommit":false,"messageTitle":"Update Simon.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"0497949f72b5a07d0665bf7264c68e15f9b9b750","isMergeCommit":false,"messageTitle":"Update Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"97ba103f56782843f3ee1018cdfccfc0bb3648b7","isMergeCommit":false,"messageTitle":"Update Deadline.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"ab82c9f6fb74904768e8301c912a9b9bc6068461","isMergeCommit":false,"messageTitle":"Update Event.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"da81537eeae26b6252f8da6e243c390a2ac1bd0b","isMergeCommit":false,"messageTitle":"Update TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"96d559a08c6f61948d638ed8a0df551f2d825bae","isMergeCommit":false,"messageTitle":"Update Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"97d296612b1e734806a2ce95134b429dd265a3cf","isMergeCommit":false,"messageTitle":"Update Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"ca882b28949693404d9101422b279d6a28e100b6","isMergeCommit":false,"messageTitle":"Update Simon.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"22df9ccd403baddce057809fbc6b9e320b066dba","isMergeCommit":false,"messageTitle":"Update TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":0}}},{"hash":"6f717a2af1fac6082ff36a2839805d1f7c86a234","isMergeCommit":false,"messageTitle":"Update Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"585e334df5ffd4a0cdf1b6393c51a9bf2c9d31eb","isMergeCommit":false,"messageTitle":"Update TaskListTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":0}}},{"hash":"8b01dce202369383a9dbdf94f4e0a812de9735a5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027 Add JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"dacf29d0b8c7a75bc1cb9c940af8bf2525cf0e54","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"990590ac5fef082274af391010cb2db05a0f65d6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LimJH2002":{"java":1147,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":4,"txt":34}},"authorContributionVariance":{"LimJH2002":87726.95},"authorDisplayNameMap":{"LimJH2002":"CS2103T-F08-1 LIM ..HONG"}} diff --git a/LinWanLeii_ip_master/authorship.json b/LinWanLeii_ip_master/authorship.json index c9f557d4..c9ed7bfa 100644 --- a/LinWanLeii_ip_master/authorship.json +++ b/LinWanLeii_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"Testing.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":" [D][ ] bye (by: Oct 10 2020)","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":" [E][ ] yo (from: Oct 10 2020 to: Oct 12 2020)","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":" [T][ ] poo","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":3}},{"path":"src/main/java/Command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"public class ByeCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" this.isExit \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" ui.showGoodbye();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":12}},{"path":"src/main/java/Command/ClearCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"public class ClearCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist.clear());","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" ui.showClearTask();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":12}},{"path":"src/main/java/Command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" protected boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" return isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" public abstract void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":15}},{"path":"src/main/java/Command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"public class DeadlineCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" private String task;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" private String deadDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" public DeadlineCommand(String task, String deadDate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" this.deadDate \u003d deadDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" Deadline task \u003d new Deadline(this.task, this.deadDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" tasklist.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" ui.showTaskAdded(task, tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":21}},{"path":"src/main/java/Command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" Task task \u003d tasklist.deleteTask(this.index);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" ui.showDeleteTask(task, tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":19}},{"path":"src/main/java/Command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"public class EventCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" private String task;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" private String startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" private String endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" public EventCommand(String task, String startDate, String endDate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" Event task \u003d new Event(this.task, this.startDate, this.endDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" tasklist.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" ui.showTaskAdded(task, tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":24}},{"path":"src/main/java/Command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" ui.showList(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":13}},{"path":"src/main/java/Command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" Task task \u003d tasklist.markTask(this.index);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":20}},{"path":"src/main/java/Command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"public class TodoCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" private String task;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" public TodoCommand(String task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" Todo task \u003d new Todo(this.task);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" tasklist.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" ui.showTaskAdded(task, tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":20}},{"path":"src/main/java/Command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"public class UnmarkCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" Task task \u003d tasklist.unmarkTask(this.index);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" ui.showUnMarkedTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":19}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"import Command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import Parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" private TaskList userList;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" private FileStorage fileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" private Ui userInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" this.userInterface \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" this.fileStorage \u003d new FileStorage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" //System.out.println(\"here\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" userList \u003d new TaskList(fileStorage.read());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" //System.out.println(\"new userlist\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" this.userList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"File Empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"\\n \\n\" + \"Please Input the txt file you wish to access\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" String textFile \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" new Duke(textFile).run();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":" userInterface.showGreetings();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LinWanLeii"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":" String fullCommand \u003d userInterface.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LinWanLeii"},"content":" userInterface.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LinWanLeii"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LinWanLeii"},"content":" c.excute(userList, userInterface, fileStorage);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LinWanLeii"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LinWanLeii"},"content":" userInterface.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LinWanLeii"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LinWanLeii"},"content":" userInterface.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LinWanLeii"},"content":" userInterface.closeScanner();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LinWanLeii"},"content":" //System.out.print(fileStorage.getFile().exists());","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"LinWanLeii"},"content":" //System.out.print(userList.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"LinWanLeii"},"content":" /*","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"LinWanLeii"},"content":" final String UNKNOWN_COMMAND \u003d \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"LinWanLeii"},"content":" final String NAME \u003d \"CathyTheChattyCat\";","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"LinWanLeii"},"content":" String lineBreak \u003d \"\\n_________________________________________\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Hello! I\u0027m \" + NAME);","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"LinWanLeii"},"content":" System.out.printf(\"What can I do for you?\" + lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"LinWanLeii"},"content":" String message;","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"LinWanLeii"},"content":" //ArrayList\u003cTasks.Task\u003e userList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"LinWanLeii"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"LinWanLeii"},"content":" message \u003d userInput.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"LinWanLeii"},"content":" while (!message.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"LinWanLeii"},"content":" Tasks.Task task \u003d new Tasks.Task(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"LinWanLeii"},"content":" // Listing things out","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"LinWanLeii"},"content":" if (message.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"LinWanLeii"},"content":" for (int i \u003d 0; i \u003c userList.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"LinWanLeii"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(index + \". \" + userList.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"LinWanLeii"},"content":" task.notTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"LinWanLeii"},"content":" //marking tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"LinWanLeii"},"content":" if (message.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"LinWanLeii"},"content":" int taskIndex \u003d Integer.parseInt(message.substring(5)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"LinWanLeii"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c userList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"LinWanLeii"},"content":" userList.get(taskIndex).markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\" \" + userList.get(taskIndex) + lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"LinWanLeii"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Invalid Tasks.Task Number\" + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"LinWanLeii"},"content":" task.notTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"LinWanLeii"},"content":" //userList.remove(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"LinWanLeii"},"content":" //un marking task","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"LinWanLeii"},"content":" if (message.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"LinWanLeii"},"content":" int taskIndex \u003d Integer.parseInt(message.substring(7)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"LinWanLeii"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c userList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"LinWanLeii"},"content":" userList.get(taskIndex).unmarkDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\" \" + userList.get(taskIndex) + lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"LinWanLeii"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Invalid Tasks.Task Number\" + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"LinWanLeii"},"content":" task.notTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"LinWanLeii"},"content":" //userList.remove(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"LinWanLeii"},"content":" //deleting task","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"LinWanLeii"},"content":" if (message.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"LinWanLeii"},"content":" int taskIndex \u003d Integer.parseInt(message.substring(7)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"LinWanLeii"},"content":" task \u003d userList.deleteTask(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Noted. I\u0027ve removed this task: \\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Now you have \" + userList.size() + \" tasks in the list\" + lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"LinWanLeii"},"content":" task.notTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + e.getMessage() + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"LinWanLeii"},"content":" // it is a task then","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"LinWanLeii"},"content":" if (message.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"LinWanLeii"},"content":" String info \u003d message.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"LinWanLeii"},"content":" if (info.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"LinWanLeii"},"content":" task.hasError();","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException.DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"LinWanLeii"},"content":" task \u003d new Tasks.Todo(info);","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"LinWanLeii"},"content":" if (message.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"LinWanLeii"},"content":" String info \u003d message.substring(10);","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"LinWanLeii"},"content":" String[] split \u003d info.split(\"/by \");","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"LinWanLeii"},"content":" if (split.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"LinWanLeii"},"content":" task.hasError();","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException.DukeException(\"☹ OOPS!!! The description of a deadline is invalid.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"LinWanLeii"},"content":" String deadDate \u003d LocalDate.parse(split[1]).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"LinWanLeii"},"content":" task \u003d new Tasks.Deadline(split[0], deadDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"LinWanLeii"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException.DukeException(\"☹ OOPS!!! The description of a time must be in yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"LinWanLeii"},"content":" if (message.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"LinWanLeii"},"content":" String info \u003d message.substring(7);","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"LinWanLeii"},"content":" String[] split \u003d info.split(\"/from | /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"LinWanLeii"},"content":" if (split.length !\u003d 3) {","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"LinWanLeii"},"content":" task.hasError();","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException.DukeException(\"☹ OOPS!!! The description of a event is invalid.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"LinWanLeii"},"content":" String startDate \u003d LocalDate.parse(split[1]).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"LinWanLeii"},"content":" String endDate \u003d LocalDate.parse(split[2]).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"LinWanLeii"},"content":" task \u003d new Tasks.Event(split[0], startDate, endDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"LinWanLeii"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException.DukeException(\"☹ OOPS!!! The description of a time must be in yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"LinWanLeii"},"content":" System.out.printf(lineBreak + e.getMessage() + lineBreak);","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"LinWanLeii"},"content":" if (!task.isItValid()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + UNKNOWN_COMMAND + lineBreak);","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"LinWanLeii"},"content":" if (!task.isItErrored() \u0026\u0026 task.isItTask() \u0026\u0026 task.isItValid()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"LinWanLeii"},"content":" userList.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"LinWanLeii"},"content":" int size \u003d userList.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\" + lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"LinWanLeii"},"content":" message \u003d userInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"LinWanLeii"},"content":" System.out.print(lineBreak + \"Bye. Hope to see you again soon!\" + lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(userList);","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Duke Writing Error\");;","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"LinWanLeii"},"content":" userInput.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"LinWanLeii":182,"-":4}},{"path":"src/main/java/DukeException/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"LinWanLeii":7}},{"path":"src/main/java/FileStorage/FileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":"public class FileStorage {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" private File fileData;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" public FileStorage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" this.fileData \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" public File getFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" return fileData;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" public void write(TaskList userList) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" FileWriter fw \u003d new FileWriter(this.fileData);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" for (int i \u003d 0; i \u003c userList.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" fw.write(userList.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" fw.write(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"LinWanLeii"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Writing Error\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"LinWanLeii"},"content":" public ArrayList\u003cTask\u003e read() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"LinWanLeii"},"content":" ArrayList\u003cTask\u003e dataList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"LinWanLeii"},"content":" Scanner scanner \u003d new Scanner(this.fileData);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"LinWanLeii"},"content":" Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"LinWanLeii"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"LinWanLeii"},"content":" //System.out.println(\"reading\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"LinWanLeii"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"LinWanLeii"},"content":" count++;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"LinWanLeii"},"content":" String inputs \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"LinWanLeii"},"content":" if (inputs.startsWith(\" [T]\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"LinWanLeii"},"content":" String info \u003d inputs.substring(8);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"LinWanLeii"},"content":" task \u003d new Todo(info);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"LinWanLeii"},"content":" if (inputs.substring(6).startsWith(\"X\")) task.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"LinWanLeii"},"content":" dataList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"LinWanLeii"},"content":" } else if (inputs.startsWith(\" [D]\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"LinWanLeii"},"content":" String info \u003d inputs.substring(8);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"LinWanLeii"},"content":" String[] split \u003d info.split(\"\\\\(by: |\\\\)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"LinWanLeii"},"content":" task \u003d new Deadline(split[0], split[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"LinWanLeii"},"content":" if (inputs.substring(6).startsWith(\"X\")) task.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"LinWanLeii"},"content":" dataList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"LinWanLeii"},"content":" } else if (inputs.startsWith(\" [E]\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"LinWanLeii"},"content":" String info \u003d inputs.substring(8);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"LinWanLeii"},"content":" String[] split \u003d info.split(\"\\\\(from: | to: |\\\\)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"LinWanLeii"},"content":" task \u003d new Event(split[0], split[1], split[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"LinWanLeii"},"content":" if (inputs.substring(6).startsWith(\"X\")) task.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"LinWanLeii"},"content":" dataList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"LinWanLeii"},"content":" scanner.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"LinWanLeii"},"content":" //System.out.println(count);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"LinWanLeii"},"content":" return dataList;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"LinWanLeii"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"LinWanLeii":77}},{"path":"src/main/java/List/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package List;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" public TaskList(TaskList userList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" this.taskList \u003d convert(userList);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" public ArrayList\u003cTask\u003e convert(TaskList userList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" for (int i \u003d 0; i \u003c userList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" taskList.add(i, userList.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" return taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" public int size() { return taskList.size(); }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" public Task get(int i) { return taskList.get(i); }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" public void add(Task task) { taskList.add(task); }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" public Task deleteTask(int i) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":" if (i \u003e this.taskList.size() || i \u003c 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid Index provided.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":" Task removing \u003d this.taskList.get(i - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":" this.taskList.remove(i - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LinWanLeii"},"content":" return removing;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LinWanLeii"},"content":" public Task markTask(int i) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LinWanLeii"},"content":" if (i \u003e this.taskList.size() || i \u003c 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid Index provided.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LinWanLeii"},"content":" Task marking \u003d this.taskList.get(i - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LinWanLeii"},"content":" marking.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LinWanLeii"},"content":" return marking;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LinWanLeii"},"content":" public Task unmarkTask(int i) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"LinWanLeii"},"content":" if (i \u003e this.taskList.size() || i \u003c 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid Index provided.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"LinWanLeii"},"content":" Task unmarking \u003d this.taskList.get(i - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"LinWanLeii"},"content":" unmarking.unmarkDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"LinWanLeii"},"content":" return unmarking;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"LinWanLeii"},"content":" public TaskList clear() {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"LinWanLeii"},"content":" this.taskList.clear();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"LinWanLeii"},"content":" return new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":61}},{"path":"src/main/java/Parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import Command.ByeCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Command.ClearCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import Command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import Command.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Command.MarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"import Command.UnmarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"import Command.TodoCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"import Command.DeleteCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"import Command.DeadlineCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"import Command.EventCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" final String UNKNOWN_COMMAND \u003d \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" public static Command parse(String fullCommand) throws DukeException{","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" String[] split \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" String commandAction \u003d split[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" switch (commandAction) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" if (split.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Please state in this format (mark 1)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" return new MarkCommand(Integer.parseInt(split[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid Index\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":" if (split.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Please state in this format (unmark 1)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LinWanLeii"},"content":" return new UnmarkCommand(Integer.parseInt(split[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LinWanLeii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid Index\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LinWanLeii"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LinWanLeii"},"content":" if (split.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Please state in this format (delete 1)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LinWanLeii"},"content":" return new DeleteCommand(Integer.parseInt(split[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"LinWanLeii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid Index\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"LinWanLeii"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"LinWanLeii"},"content":" if (split.length \u003c 2 || split[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"LinWanLeii"},"content":" return new TodoCommand(split[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"LinWanLeii"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"LinWanLeii"},"content":" if (split.length \u003c 2 || split[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a Tasks.Deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"LinWanLeii"},"content":" String[] info \u003d split[1].split(\"/by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"LinWanLeii"},"content":" if (info.length !\u003d 2 ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline is invalid.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"LinWanLeii"},"content":" String deadDate \u003d LocalDate.parse(info[1]).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"LinWanLeii"},"content":" return new DeadlineCommand(info[0], deadDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"LinWanLeii"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a time must be in yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"LinWanLeii"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"LinWanLeii"},"content":" if (split.length \u003c 2 || split[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a Tasks.Event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"LinWanLeii"},"content":" String[] infoEvent \u003d split[1].split(\"/from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"LinWanLeii"},"content":" if (infoEvent.length !\u003d 3 ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a event is invalid.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"LinWanLeii"},"content":" String startDate \u003d LocalDate.parse(infoEvent[1]).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"LinWanLeii"},"content":" String endDate \u003d LocalDate.parse(infoEvent[2]).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"LinWanLeii"},"content":" return new EventCommand(infoEvent[0], startDate, endDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"LinWanLeii"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a time must be in yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"LinWanLeii"},"content":" case \"clear\":","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"LinWanLeii"},"content":" return new ClearCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"LinWanLeii"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"LinWanLeii"},"content":" return new ByeCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"LinWanLeii"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":97}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":" private String deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":" private LocalDate deadDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":" public Deadline(String name, String deadline) {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" this.type \u003d \"D\";","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" public Deadline(String name, LocalDate deadDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" super(name);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" this.type \u003d \"D\";","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" this.deadDate \u003d deadDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" return super.toString() + \"(by: \" + (deadline.isEmpty() ? deadDate : deadline) +\")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"LinWanLeii":22}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":" private String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":" private LocalDate startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":" private String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" private LocalDate endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" public Event(String name, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" this.type \u003d \"E\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" public Event(String name, LocalDate startDate, LocalDate endDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" super(name);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" this.type \u003d \"E\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" return super.toString() + \"(from: \" + (start.isEmpty() ? startDate : start)","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" + \" to: \" + (end.isEmpty() ? endDate : end) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"LinWanLeii":27}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":" private String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":" private boolean marked;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":" private boolean hasError;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":" private boolean isTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":" private boolean isItValid;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" public String type;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" this.marked \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" this.hasError \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" this.isTask \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" this.isItValid \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" marked \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" marked \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" public boolean isMarked() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" return marked;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" public void hasError() { hasError \u003d true; }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" public boolean isItErrored() { return hasError; }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" public void notTask() { isTask \u003d false; }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" public boolean isItTask() { return isTask; }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" public void isValid() { isItValid \u003d true; }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" public boolean isItValid() { return isItValid; }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"LinWanLeii"},"content":" String s \u003d \" [\" + type + \"]\" + \"[\" + (marked ? \"X\" : \" \") + \"] \" + name;","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":" return s;","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"LinWanLeii":38}},{"path":"src/main/java/Tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":" public Todo(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":" this.type \u003d \"T\";","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"// @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"// public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"// return super.toString() + ;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"// }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"LinWanLeii":12}},{"path":"src/main/java/Ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" final String UNKNOWN_COMMAND \u003d \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" final String NAME \u003d \"CathyTheChattyCat\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" String lineBreak \u003d \"\\n__________________________________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" return this.scanner.nextLine().trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Not detected in data. New List.TaskList created\" + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" public void showRequestForTextFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Please Input the txt file you wish to access\" + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" public void showUnknownCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + UNKNOWN_COMMAND + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":" public void showError(String e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":" public void showDateFormatError(DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"☹ OOPS!!! The description of a time must be in yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LinWanLeii"},"content":" public void showInvalidDescription(String taskType) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"☹ OOPS!!! The description of a \" + taskType + \" is invalid.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LinWanLeii"},"content":" public void showTaskAdded(Task task, TaskList userList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LinWanLeii"},"content":" int size \u003d userList.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LinWanLeii"},"content":" public void showGreetings() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Hello! I\u0027m \" + NAME);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"LinWanLeii"},"content":" System.out.printf(\"What can I do for you?\" + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"LinWanLeii"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\\t\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"LinWanLeii"},"content":" public void showUnMarkedTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \\n\\t\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"LinWanLeii"},"content":" public void showDeleteTask(Task task, TaskList userList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Now you have \" + userList.size() + \" tasks in the list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"LinWanLeii"},"content":" public void showClearTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Noted. I\u0027ve removed all the tasks.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"LinWanLeii"},"content":" public void showList(TaskList userList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"LinWanLeii"},"content":" //System.out.println(lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"LinWanLeii"},"content":" for (int i \u003d 0; i \u003c userList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"LinWanLeii"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(index + \".\" + userList.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"LinWanLeii"},"content":" //System.out.println(lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"LinWanLeii"},"content":" public void showGoodbye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"LinWanLeii"},"content":" System.out.print(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"LinWanLeii"},"content":" public void closeScanner() {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"LinWanLeii"},"content":" scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":80}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"T | 0 | read book","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"T | 1 | join sports club","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"LinWanLeii":2}}] +[{"path":"Testing.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":" [D][ ] bye (by: Oct 10 2020)","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":" [E][ ] yo (from: Oct 10 2020 to: Oct 12 2020)","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":" [T][ ] poo","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":" [T][ ] book","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":" [T][ ] book","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":5}},{"path":"src/main/java/Command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":" * A class that is part of the command, for this particularly it will end the program.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" * @author LinWanLeii","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"public class ByeCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" * A method that will end the program.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" * @param tasklist contains all the past few tasks excuted.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" * @param ui contains the user interface that will be shown to the user depending on the inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" * @param fileStorage Writing and reading on text files.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" this.isExit \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" ui.showGoodbye();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":24}},{"path":"src/main/java/Command/ClearCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":" * A class that is part of the command, for this particularly it will clear all the past tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"public class ClearCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" * A method that will excute the clearing of all past cases.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" * @param tasklist contains all the past few tasks excuted.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" * @param ui contains the user interface that will be shown to the user depending on the inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" * @param fileStorage Writing and reading on text files.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException If user inputs is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist.clear());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" ui.showClearTask();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":24}},{"path":"src/main/java/Command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" * An Abstract class that represents the action that will be done by the different command input","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" * by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" protected boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" * Returns whether the program should stop running as the end point \"bye\" is hit.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" * @return boolean value shows whether the program should be completed and exited.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" return isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" * An abstract method that will excute the task provided depending on the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" * @param tasklist contains all the past few tasks excuted.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" * @param ui contains the user interface that will be shown to the user depending on the inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" * @param fileStorage Writing and reading on text files.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException If user inputs is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" public abstract void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":34}},{"path":"src/main/java/Command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" * A class that is part of the command, for this in particular this will store a task that has a deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"public class DeadlineCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" private String task;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" private String deadDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" public DeadlineCommand(String task, String deadDate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" this.deadDate \u003d deadDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" * A method that will take down the deadline task that the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" * @param tasklist contains all the past few tasks excuted.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" * @param ui contains the user interface that will be shown to the user depending on the inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" * @param fileStorage Writing and reading on text files.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException If user inputs is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" Deadline task \u003d new Deadline(this.task, this.deadDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" tasklist.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" ui.showTaskAdded(task, tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":33}},{"path":"src/main/java/Command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" * A class that is part of the command class, for this in particular it deletes a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" * A method that will delete a task from the taskList depending on the index.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" * @param tasklist contains all the past few tasks excuted.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" * @param ui contains the user interface that will be shown to the user depending on the inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" * @param fileStorage Writing and reading on text files.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException If user inputs is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" Task task \u003d tasklist.deleteTask(this.index);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" ui.showDeleteTask(task, tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":31}},{"path":"src/main/java/Command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" * A class that is part of the command, for this in particular it will result in a event being stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"public class EventCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" private String task;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" private String startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" private String endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" * Constructor method that will initialise all content of the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" * @param task the task the user wants to do","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" * @param startDate the starting date","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" * @param endDate the ending date","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" public EventCommand(String task, String startDate, String endDate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" * This method will form a task depending on the user inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" * @param tasklist contains all the past few tasks excuted.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":" * @param ui contains the user interface that will be shown to the user depending on the inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LinWanLeii"},"content":" * @param fileStorage Writing and reading on text files.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException If user inputs is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LinWanLeii"},"content":" Event task \u003d new Event(this.task, this.startDate, this.endDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LinWanLeii"},"content":" tasklist.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LinWanLeii"},"content":" ui.showTaskAdded(task, tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":44}},{"path":"src/main/java/Command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"public class FindCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" private String word;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" public FindCommand(String word) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" this.word \u003d word;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" TaskList newList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" for (int i \u003d 0; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" if (tasklist.get(i).toString().contains(word)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" newList.add(tasklist.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" ui.showFoundResults(newList);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":23}},{"path":"src/main/java/Command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" * A class that excutes the list command.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" * A method that will list out all the task stored in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" * @param tasklist contains all the past few tasks excuted.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" * @param ui contains the user interface that will be shown to the user depending on the inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" * @param fileStorage Writing and reading on text files.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException If user inputs is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" ui.showList(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":24}},{"path":"src/main/java/Command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" * A class that will mark the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" * A method that will excute the mark command depending on the index by user .","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" * @param tasklist contains all the past few tasks excuted.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" * @param ui contains the user interface that will be shown to the user depending on the inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" * @param fileStorage Writing and reading on text files.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException If user inputs is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" Task task \u003d tasklist.markTask(this.index);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":33}},{"path":"src/main/java/Command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" * A class that is part of the command family, this in particular calls for todo tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"public class TodoCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" private String task;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" public TodoCommand(String task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" * A method that will add a Todo task to the tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" * @param tasklist contains all the past few tasks excuted.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" * @param ui contains the user interface that will be shown to the user depending on the inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" * @param fileStorage Writing and reading on text files.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException If user inputs is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" Todo task \u003d new Todo(this.task);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" tasklist.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" ui.showTaskAdded(task, tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":32}},{"path":"src/main/java/Command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" * A class that will call for the unmark command","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"public class UnmarkCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" * A method that will mark the task as unMarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" * @param tasklist contains all the past few tasks excuted.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" * @param ui contains the user interface that will be shown to the user depending on the inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" * @param fileStorage Writing and reading on text files.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException If user inputs is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" public void excute(TaskList tasklist, Ui ui, FileStorage fileStorage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" Task task \u003d tasklist.unmarkTask(this.index);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(tasklist);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" ui.showUnMarkedTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":31}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"import Command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import Parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" * A class that the chatbot program will run from.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" private TaskList userList;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" private FileStorage fileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" private Ui userInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" * A constructor method to initialise the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" * @param filePath the file that will be written or read from.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" this.userInterface \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" this.fileStorage \u003d new FileStorage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" //System.out.println(\"here\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" userList \u003d new TaskList(fileStorage.read());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" //System.out.println(\"new userlist\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" this.userList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"File Empty\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":" * A method that will need the user to input what Text file they would like to use.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LinWanLeii"},"content":" * @param args arguments use to start the program.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException if the file provided is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LinWanLeii"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"\\n \\n\" + \"Please Input the txt file you wish to access\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"LinWanLeii"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"LinWanLeii"},"content":" String textFile \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"LinWanLeii"},"content":" new Duke(textFile).run();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LinWanLeii"},"content":" * The method that will be running the ongoing program.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"LinWanLeii"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"LinWanLeii"},"content":" userInterface.showGreetings();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"LinWanLeii"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"LinWanLeii"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"LinWanLeii"},"content":" String fullCommand \u003d userInterface.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"LinWanLeii"},"content":" userInterface.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"LinWanLeii"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"LinWanLeii"},"content":" c.excute(userList, userInterface, fileStorage);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"LinWanLeii"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"LinWanLeii"},"content":" userInterface.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"LinWanLeii"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"LinWanLeii"},"content":" userInterface.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"LinWanLeii"},"content":" userInterface.closeScanner();","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"LinWanLeii"},"content":" //System.out.print(fileStorage.getFile().exists());","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"LinWanLeii"},"content":" //System.out.print(userList.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"LinWanLeii"},"content":" /*","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"LinWanLeii"},"content":" final String UNKNOWN_COMMAND \u003d \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"LinWanLeii"},"content":" final String NAME \u003d \"CathyTheChattyCat\";","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"LinWanLeii"},"content":" String lineBreak \u003d \"\\n_________________________________________\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Hello! I\u0027m \" + NAME);","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"LinWanLeii"},"content":" System.out.printf(\"What can I do for you?\" + lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"LinWanLeii"},"content":" String message;","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"LinWanLeii"},"content":" //ArrayList\u003cTasks.Task\u003e userList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"LinWanLeii"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"LinWanLeii"},"content":" message \u003d userInput.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"LinWanLeii"},"content":" while (!message.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"LinWanLeii"},"content":" Tasks.Task task \u003d new Tasks.Task(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"LinWanLeii"},"content":" // Listing things out","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"LinWanLeii"},"content":" if (message.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"LinWanLeii"},"content":" for (int i \u003d 0; i \u003c userList.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"LinWanLeii"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(index + \". \" + userList.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"LinWanLeii"},"content":" task.notTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"LinWanLeii"},"content":" //marking tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"LinWanLeii"},"content":" if (message.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"LinWanLeii"},"content":" int taskIndex \u003d Integer.parseInt(message.substring(5)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"LinWanLeii"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c userList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"LinWanLeii"},"content":" userList.get(taskIndex).markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\" \" + userList.get(taskIndex) + lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"LinWanLeii"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Invalid Tasks.Task Number\" + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"LinWanLeii"},"content":" task.notTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"LinWanLeii"},"content":" //userList.remove(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"LinWanLeii"},"content":" //un marking task","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"LinWanLeii"},"content":" if (message.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"LinWanLeii"},"content":" int taskIndex \u003d Integer.parseInt(message.substring(7)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"LinWanLeii"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c userList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"LinWanLeii"},"content":" userList.get(taskIndex).unmarkDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\" \" + userList.get(taskIndex) + lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"LinWanLeii"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Invalid Tasks.Task Number\" + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"LinWanLeii"},"content":" task.notTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"LinWanLeii"},"content":" //userList.remove(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"LinWanLeii"},"content":" //deleting task","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"LinWanLeii"},"content":" if (message.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"LinWanLeii"},"content":" int taskIndex \u003d Integer.parseInt(message.substring(7)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"LinWanLeii"},"content":" task \u003d userList.deleteTask(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Noted. I\u0027ve removed this task: \\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Now you have \" + userList.size() + \" tasks in the list\" + lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"LinWanLeii"},"content":" task.notTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + e.getMessage() + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"LinWanLeii"},"content":" // it is a task then","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"LinWanLeii"},"content":" if (message.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"LinWanLeii"},"content":" String info \u003d message.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"LinWanLeii"},"content":" if (info.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"LinWanLeii"},"content":" task.hasError();","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException.DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"LinWanLeii"},"content":" task \u003d new Tasks.Todo(info);","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"LinWanLeii"},"content":" if (message.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"LinWanLeii"},"content":" String info \u003d message.substring(10);","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"LinWanLeii"},"content":" String[] split \u003d info.split(\"/by \");","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"LinWanLeii"},"content":" if (split.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"LinWanLeii"},"content":" task.hasError();","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException.DukeException(\"☹ OOPS!!! The description of a deadline is invalid.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"LinWanLeii"},"content":" String deadDate \u003d LocalDate.parse(split[1]).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"LinWanLeii"},"content":" task \u003d new Tasks.Deadline(split[0], deadDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"LinWanLeii"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException.DukeException(\"☹ OOPS!!! The description of a time must be in yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"LinWanLeii"},"content":" if (message.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"LinWanLeii"},"content":" String info \u003d message.substring(7);","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"LinWanLeii"},"content":" String[] split \u003d info.split(\"/from | /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"LinWanLeii"},"content":" if (split.length !\u003d 3) {","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"LinWanLeii"},"content":" task.hasError();","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException.DukeException(\"☹ OOPS!!! The description of a event is invalid.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"LinWanLeii"},"content":" String startDate \u003d LocalDate.parse(split[1]).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"LinWanLeii"},"content":" String endDate \u003d LocalDate.parse(split[2]).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"LinWanLeii"},"content":" task \u003d new Tasks.Event(split[0], startDate, endDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"LinWanLeii"},"content":" task.isValid();","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"LinWanLeii"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException.DukeException(\"☹ OOPS!!! The description of a time must be in yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"LinWanLeii"},"content":" System.out.printf(lineBreak + e.getMessage() + lineBreak);","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"LinWanLeii"},"content":" if (!task.isItValid()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + UNKNOWN_COMMAND + lineBreak);","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"LinWanLeii"},"content":" if (!task.isItErrored() \u0026\u0026 task.isItTask() \u0026\u0026 task.isItValid()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"LinWanLeii"},"content":" userList.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"LinWanLeii"},"content":" int size \u003d userList.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\" + lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"LinWanLeii"},"content":" message \u003d userInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"LinWanLeii"},"content":" System.out.print(lineBreak + \"Bye. Hope to see you again soon!\" + lineBreak);","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"LinWanLeii"},"content":" fileStorage.write(userList);","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException.DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Duke Writing Error\");;","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"LinWanLeii"},"content":" userInput.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"LinWanLeii":203,"-":3}},{"path":"src/main/java/DukeException/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":" * An Exceptional class for any errors faced by the user inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" * Constructor method that creates the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" * @param message the message that we want to output to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"LinWanLeii":16}},{"path":"src/main/java/FileStorage/FileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" * Represents a class that will convey the user input to a file and also the other way around.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":"public class FileStorage {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" private File fileData;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" public FileStorage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" this.fileData \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" * A method that will write all the data from the tasklist to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" * @param userList contains all the tasks by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException if there is any situation where the FileWriter fails to write.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":" public void write(TaskList userList) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":" FileWriter fw \u003d new FileWriter(this.fileData);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":" for (int i \u003d 0; i \u003c userList.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":" fw.write(userList.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"LinWanLeii"},"content":" fw.write(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"LinWanLeii"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"LinWanLeii"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Writing Error\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LinWanLeii"},"content":" * A method that will read all the information on a textFile and load it back into the program","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"LinWanLeii"},"content":" * @return ArrayList\u003cTask\u003e a list of all the task by user.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException if the content on the file cannot be recognised.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"LinWanLeii"},"content":" public ArrayList\u003cTask\u003e read() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"LinWanLeii"},"content":" ArrayList\u003cTask\u003e dataList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"LinWanLeii"},"content":" Scanner scanner \u003d new Scanner(this.fileData);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"LinWanLeii"},"content":" Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"LinWanLeii"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"LinWanLeii"},"content":" //System.out.println(\"reading\");","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"LinWanLeii"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"LinWanLeii"},"content":" count++;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"LinWanLeii"},"content":" String inputs \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"LinWanLeii"},"content":" if (inputs.startsWith(\" [T]\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"LinWanLeii"},"content":" String info \u003d inputs.substring(9);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"LinWanLeii"},"content":" task \u003d new Todo(info);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"LinWanLeii"},"content":" if (inputs.substring(6).startsWith(\"X\")) task.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"LinWanLeii"},"content":" dataList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"LinWanLeii"},"content":" } else if (inputs.startsWith(\" [D]\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"LinWanLeii"},"content":" String info \u003d inputs.substring(9);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"LinWanLeii"},"content":" String[] split \u003d info.split(\"\\\\(by: |\\\\)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"LinWanLeii"},"content":" task \u003d new Deadline(split[0], split[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"LinWanLeii"},"content":" if (inputs.substring(6).startsWith(\"X\")) task.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"LinWanLeii"},"content":" dataList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"LinWanLeii"},"content":" } else if (inputs.startsWith(\" [E]\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"LinWanLeii"},"content":" String info \u003d inputs.substring(9);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"LinWanLeii"},"content":" String[] split \u003d info.split(\"\\\\(from: | to: |\\\\)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"LinWanLeii"},"content":" task \u003d new Event(split[0], split[1], split[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"LinWanLeii"},"content":" if (inputs.substring(6).startsWith(\"X\")) task.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"LinWanLeii"},"content":" dataList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"LinWanLeii"},"content":" scanner.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"LinWanLeii"},"content":" //System.out.println(count);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"LinWanLeii"},"content":" return dataList;","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"LinWanLeii"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"LinWanLeii":90}},{"path":"src/main/java/List/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package List;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" * A class that stores Tasks inside an Arraylist.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" public TaskList(TaskList userList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" this.taskList \u003d convert(userList);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" * A method that will convert a TaskList to an ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" * @param userList the TaskList that is going to be converted.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" * @return an Arraylist that is converted from Tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" public ArrayList\u003cTask\u003e convert(TaskList userList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" for (int i \u003d 0; i \u003c userList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" taskList.add(i, userList.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" return taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LinWanLeii"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LinWanLeii"},"content":" * A method that returns the size of the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LinWanLeii"},"content":" * @return the size of the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LinWanLeii"},"content":" public int size() { return taskList.size(); }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LinWanLeii"},"content":" * A method that will get the task in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LinWanLeii"},"content":" * @param i the index of the task needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LinWanLeii"},"content":" * @return the task that is called for.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"LinWanLeii"},"content":" public Task get(int i) { return taskList.get(i); }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"LinWanLeii"},"content":" * A method that adds a task to the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"LinWanLeii"},"content":" * @param task the task that the user wants to add.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"LinWanLeii"},"content":" public void add(Task task) { taskList.add(task); }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"LinWanLeii"},"content":" * A method that will delete a task depending on the index provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"LinWanLeii"},"content":" * @param i the index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"LinWanLeii"},"content":" * @return the task that has been removed.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException if the index is out of bound.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"LinWanLeii"},"content":" public Task deleteTask(int i) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"LinWanLeii"},"content":" if (i \u003e this.taskList.size() || i \u003c 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid Index provided.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"LinWanLeii"},"content":" Task removing \u003d this.taskList.get(i - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"LinWanLeii"},"content":" this.taskList.remove(i - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"LinWanLeii"},"content":" return removing;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"LinWanLeii"},"content":" * A method that will mark a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"LinWanLeii"},"content":" * @param i the index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"LinWanLeii"},"content":" * @return the task that is marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException if the index is out of bound.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"LinWanLeii"},"content":" public Task markTask(int i) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"LinWanLeii"},"content":" if (i \u003e this.taskList.size() || i \u003c 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid Index provided.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"LinWanLeii"},"content":" Task marking \u003d this.taskList.get(i - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"LinWanLeii"},"content":" marking.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"LinWanLeii"},"content":" return marking;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"LinWanLeii"},"content":" * A method that will unmark a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"LinWanLeii"},"content":" * @param i the index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"LinWanLeii"},"content":" * @return the task that is unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException if the index is out of bound.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"LinWanLeii"},"content":" public Task unmarkTask(int i) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"LinWanLeii"},"content":" if (i \u003e this.taskList.size() || i \u003c 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid Index provided.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"LinWanLeii"},"content":" Task unmarking \u003d this.taskList.get(i - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"LinWanLeii"},"content":" unmarking.unmarkDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"LinWanLeii"},"content":" return unmarking;","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"LinWanLeii"},"content":" * A method that clears the TaskList","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"LinWanLeii"},"content":" * @return an empty list","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"LinWanLeii"},"content":" public TaskList clear() {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"LinWanLeii"},"content":" this.taskList.clear();","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"LinWanLeii"},"content":" return new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":118}},{"path":"src/main/java/Parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import Command.ByeCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import Command.ClearCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import Command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import Command.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Command.MarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"import Command.UnmarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"import Command.TodoCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"import Command.DeleteCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"import Command.DeadlineCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"import Command.EventCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":"import Command.FindCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" * A parser that takes the input data and checks its syntax followed bt excuting it.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" final String UNKNOWN_COMMAND \u003d \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" * A method that takes the user input and calls the right command for it.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" * @param fullCommand the user command input.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" * @return a command that will be excuted base on the users input.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" * @throws DukeException if the command is invalid in any ways.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":" public static Command parse(String fullCommand) throws DukeException{","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LinWanLeii"},"content":" String[] split \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":" String commandAction \u003d split[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":" switch (commandAction) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LinWanLeii"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LinWanLeii"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LinWanLeii"},"content":" if (split.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Please state in this format (mark 1)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LinWanLeii"},"content":" return new MarkCommand(Integer.parseInt(split[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LinWanLeii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid Index\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LinWanLeii"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"LinWanLeii"},"content":" if (split.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Please state in this format (unmark 1)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"LinWanLeii"},"content":" return new UnmarkCommand(Integer.parseInt(split[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"LinWanLeii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid Index\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"LinWanLeii"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"LinWanLeii"},"content":" if (split.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Please state in this format (delete 1)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"LinWanLeii"},"content":" return new DeleteCommand(Integer.parseInt(split[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"LinWanLeii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"Invalid Index\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"LinWanLeii"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"LinWanLeii"},"content":" if (split.length \u003c 2 || split[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"LinWanLeii"},"content":" return new TodoCommand(split[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"LinWanLeii"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"LinWanLeii"},"content":" if (split.length \u003c 2 || split[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a Tasks.Deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"LinWanLeii"},"content":" String[] info \u003d split[1].split(\"/by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"LinWanLeii"},"content":" if (info.length !\u003d 2 ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline is invalid.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"LinWanLeii"},"content":" String deadDate \u003d LocalDate.parse(info[1]).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"LinWanLeii"},"content":" return new DeadlineCommand(info[0], deadDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"LinWanLeii"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a time must be in yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"LinWanLeii"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"LinWanLeii"},"content":" if (split.length \u003c 2 || split[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a Tasks.Event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"LinWanLeii"},"content":" String[] infoEvent \u003d split[1].split(\"/from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"LinWanLeii"},"content":" if (infoEvent.length !\u003d 3 ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a event is invalid.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"LinWanLeii"},"content":" String startDate \u003d LocalDate.parse(infoEvent[1]).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"LinWanLeii"},"content":" String endDate \u003d LocalDate.parse(infoEvent[2]).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"LinWanLeii"},"content":" return new EventCommand(infoEvent[0], startDate, endDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"LinWanLeii"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a time must be in yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"LinWanLeii"},"content":" case \"clear\":","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"LinWanLeii"},"content":" return new ClearCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"LinWanLeii"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"LinWanLeii"},"content":" return new ByeCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"LinWanLeii"},"content":" case \"find\":","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"LinWanLeii"},"content":" return new FindCommand(split[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"LinWanLeii"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"LinWanLeii"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":111}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":" * A child class to Task, this in particular is a deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" private String deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" private LocalDate deadDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" public Deadline(String name, String deadline) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" this.type \u003d \"D\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" * * A method that will represent the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" * * @return the syntax that will be shown to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" return super.toString() + \"(by: \" + (deadline.isEmpty() ? deadDate : deadline) +\")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"LinWanLeii":26}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":" * A child class to Task, for this in particular it is for events tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" private String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" private LocalDate startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" private String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" private LocalDate endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" public Event(String name, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" this.type \u003d \"E\";","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" * A method that will represent the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" * * @return the syntax that will be shown to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" return super.toString() + \"(from: \" + (start.isEmpty() ? startDate : start)","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" + \" to: \" + (end.isEmpty() ? endDate : end) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"LinWanLeii":31}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":" * A parent class that represents the task that the user will input.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":" private String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":" private boolean marked;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" private boolean hasError;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" private boolean isTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" private boolean isItValid;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":" public String type;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" this.marked \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" this.hasError \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" this.isTask \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" this.isItValid \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" * A method that will mark a task as marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" marked \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" * A method that will unmark a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" marked \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LinWanLeii"},"content":" /*","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":" public boolean isMarked() {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":" return marked;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"LinWanLeii"},"content":" public void hasError() { hasError \u003d true; }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"LinWanLeii"},"content":" public boolean isItErrored() { return hasError; }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"LinWanLeii"},"content":" public void notTask() { isTask \u003d false; }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"LinWanLeii"},"content":" public boolean isItTask() { return isTask; }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"LinWanLeii"},"content":" public void isValid() { isItValid \u003d true; }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"LinWanLeii"},"content":" public boolean isItValid() { return isItValid; }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LinWanLeii"},"content":" * A method that will represent the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"LinWanLeii"},"content":" * @return the syntax that will be shown to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"LinWanLeii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"LinWanLeii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"LinWanLeii"},"content":" String s \u003d \" [\" + type + \"]\" + \"[\" + (marked ? \"X\" : \" \") + \"] \" + name;","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"LinWanLeii"},"content":" return s;","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"LinWanLeii":57}},{"path":"src/main/java/Tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":" * A child class to Task, this in particular is for todo tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":" public Todo(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":" this.type \u003d \"T\";","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"// @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"// public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":"// return super.toString() + ;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":"// }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"LinWanLeii":15}},{"path":"src/main/java/Ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":" * A class that is used to show the user inferfaces.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":" final String UNKNOWN_COMMAND \u003d \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" final String NAME \u003d \"CathyTheChattyCat\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" String lineBreak \u003d \"\\n__________________________________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" * A constructor method to initialise the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" * A method to read the user input and trims the spaces at both ends.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" * @return a string of the input.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" return this.scanner.nextLine().trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"LinWanLeii"},"content":" * A method that will print a line.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"LinWanLeii"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"LinWanLeii"},"content":" /*","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"LinWanLeii"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Not detected in data. New List.TaskList created\" + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"LinWanLeii"},"content":" public void showRequestForTextFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Please Input the txt file you wish to access\" + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"LinWanLeii"},"content":" public void showUnknownCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + UNKNOWN_COMMAND + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"LinWanLeii"},"content":" public void showDateFormatError(DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"☹ OOPS!!! The description of a time must be in yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"LinWanLeii"},"content":" public void showInvalidDescription(String taskType) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"☹ OOPS!!! The description of a \" + taskType + \" is invalid.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"LinWanLeii"},"content":" * A method that will print out the error.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"LinWanLeii"},"content":" * @param e the error code produced.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"LinWanLeii"},"content":" public void showError(String e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"LinWanLeii"},"content":" * A method that will show task being added.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"LinWanLeii"},"content":" * @param task the task to add.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"LinWanLeii"},"content":" * @param userList the TaskList to add to.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"LinWanLeii"},"content":" public void showTaskAdded(Task task, TaskList userList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"LinWanLeii"},"content":" int size \u003d userList.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"LinWanLeii"},"content":" * A method that will greet the user at the start.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"LinWanLeii"},"content":" public void showGreetings() {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(lineBreak + \"Hello! I\u0027m \" + NAME);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"LinWanLeii"},"content":" System.out.printf(\"What can I do for you?\" + lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"LinWanLeii"},"content":" * A method that will show that a task is marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"LinWanLeii"},"content":" * @param task the task being marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"LinWanLeii"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\\t\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"LinWanLeii"},"content":" * A method that will show that a task is unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"LinWanLeii"},"content":" * @param task the task being unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"LinWanLeii"},"content":" public void showUnMarkedTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"OK, I\u0027ve unmarked this task as not done yet: \\n\\t\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"LinWanLeii"},"content":" * A method to show that a task is deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"LinWanLeii"},"content":" * @param task task being deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"LinWanLeii"},"content":" * @param userList where task is deleted from.","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"LinWanLeii"},"content":" public void showDeleteTask(Task task, TaskList userList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Now you have \" + userList.size() + \" tasks in the list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"LinWanLeii"},"content":" * A method that shows that the task is cleared.","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"LinWanLeii"},"content":" public void showClearTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Noted. I\u0027ve removed all the tasks.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"LinWanLeii"},"content":" * A method that will show all the task in the list\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"LinWanLeii"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"LinWanLeii"},"content":" * @param userList where the task is from.","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"LinWanLeii"},"content":" public void showList(TaskList userList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"LinWanLeii"},"content":" //System.out.println(lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"LinWanLeii"},"content":" for (int i \u003d 0; i \u003c userList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"LinWanLeii"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(index + \".\" + userList.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"LinWanLeii"},"content":" //System.out.println(lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"LinWanLeii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"LinWanLeii"},"content":" * A method to say BYE.","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"LinWanLeii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"LinWanLeii"},"content":" public void showGoodbye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"LinWanLeii"},"content":" System.out.print(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"LinWanLeii"},"content":" public void closeScanner() {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"LinWanLeii"},"content":" scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"LinWanLeii"},"content":" public void showFoundResults(TaskList foundList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"LinWanLeii"},"content":" for (int i \u003d 0; i \u003c foundList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"LinWanLeii"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"LinWanLeii"},"content":" System.out.println(index + \".\" + foundList.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":155}},{"path":"src/test/java/seedu/duke/FileStorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package seedu.duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import FileStorage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":"public class FileStorageTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":" public void testingFileSuccess() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" FileStorage storage \u003d new FileStorage(\"testing.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" assertEquals(storage.read().size(), 5);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" public void emptyFile_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" FileStorage storage \u003d new FileStorage(\"nothing.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" assertEquals(storage.read().size(), 0);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":34}},{"path":"src/test/java/seedu/duke/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"package seedu.duke; //same package as the class being tested","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"LinWanLeii"},"content":"import DukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"LinWanLeii"},"content":"import Parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"LinWanLeii"},"content":"import Tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"LinWanLeii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"LinWanLeii"},"content":"import Command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"LinWanLeii"},"content":"import Command.TodoCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"LinWanLeii"},"content":"import List.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"LinWanLeii"},"content":"import Ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"LinWanLeii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"LinWanLeii"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"LinWanLeii"},"content":"public class TaskTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"LinWanLeii"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"LinWanLeii"},"content":" public void simpleToDoTest(){","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"LinWanLeii"},"content":" String str \u003d new Todo(\"book\").toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"LinWanLeii"},"content":" assertEquals(str,\" [T][ ] book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"LinWanLeii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"LinWanLeii"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"LinWanLeii"},"content":" public void exceptionTest() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"LinWanLeii"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"LinWanLeii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"LinWanLeii"},"content":" Parser.parse(\"deadline book /by 10\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"LinWanLeii"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"LinWanLeii"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"LinWanLeii"},"content":" assertEquals(e.getMessage(), \"☹ OOPS!!! The description of a time must be in yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"LinWanLeii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"LinWanLeii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"LinWanLeii":34}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LinWanLeii"},"content":"T | 0 | read book","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"LinWanLeii"},"content":"T | 1 | join sports club","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"LinWanLeii":2}}] diff --git a/LinWanLeii_ip_master/commits.json b/LinWanLeii_ip_master/commits.json index 80083b10..063db4d5 100644 --- a/LinWanLeii_ip_master/commits.json +++ b/LinWanLeii_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"LinWanLeii":[{"date":"2023-08-24","commitResults":[{"hash":"e782a3e2d8fa814d7d559d967a6b27d4b83d81a4","isMergeCommit":false,"messageTitle":"Done till lvl 4","messageBody":"","tags":["Level-4","Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":164,"deletions":0}}},{"hash":"b08cb08e24776bfa5cb6eeee3714b0cae21c3fe7","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":10}}},{"hash":"ea54bc5ca95be7c751e76169c0e725f6e2e98cc8","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":16}}},{"hash":"5803218b900ef67baf4899d03873879d1584b498","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":109,"deletions":103}}},{"hash":"386c84d025a7f8a9cbe0a3137e3a7fe49f4d88b7","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":5}}},{"hash":"0eb42564ef17920f98db30b4a51e7edb40fa36d4","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"04e00e54439ecec34fb78a51d1fed4ed369bfca2","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":118}}}]},{"date":"2023-08-30","commitResults":[{"hash":"f0163f5d8d76408b392a265fe8c70f8cccb456d3","isMergeCommit":false,"messageTitle":"Update body","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":91}}}]},{"date":"2023-08-31","commitResults":[{"hash":"3171722d5f471dc05c1e87d20695ede2758ed772","isMergeCommit":false,"messageTitle":"Add writing and reading file function","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":208,"deletions":114}}},{"hash":"ddd9ef4a220a940987e2de14dfad0d291d1650d7","isMergeCommit":false,"messageTitle":"Add Local Dates and times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":7},"java":{"insertions":45,"deletions":7}}}]},{"date":"2023-09-01","commitResults":[{"hash":"4c2b3c7ed9ead45db4b4a6918d99b5b7523a40c5","isMergeCommit":false,"messageTitle":"Add More OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5},"java":{"insertions":361,"deletions":16}}},{"hash":"f2967a5effe04e0a75938bd6130c915dcdc26880","isMergeCommit":false,"messageTitle":"Add Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":132,"deletions":29}}},{"hash":"75f78857490f381d7a41c51577553d24536b2e9f","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/LinWanLeii/ip","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LinWanLeii":{"java":778,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"LinWanLeii":49801.668},"authorDisplayNameMap":{"LinWanLeii":"CS2103T-W08-4 LIN .. LEI"}} +{"authorDailyContributionsMap":{"LinWanLeii":[{"date":"2023-08-24","commitResults":[{"hash":"e782a3e2d8fa814d7d559d967a6b27d4b83d81a4","isMergeCommit":false,"messageTitle":"Done till lvl 4","messageBody":"","tags":["Level-4","Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":164,"deletions":0}}},{"hash":"b08cb08e24776bfa5cb6eeee3714b0cae21c3fe7","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":10}}},{"hash":"ea54bc5ca95be7c751e76169c0e725f6e2e98cc8","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":16}}},{"hash":"5803218b900ef67baf4899d03873879d1584b498","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":109,"deletions":103}}},{"hash":"386c84d025a7f8a9cbe0a3137e3a7fe49f4d88b7","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":5}}},{"hash":"0eb42564ef17920f98db30b4a51e7edb40fa36d4","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"04e00e54439ecec34fb78a51d1fed4ed369bfca2","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":118}}}]},{"date":"2023-08-30","commitResults":[{"hash":"f0163f5d8d76408b392a265fe8c70f8cccb456d3","isMergeCommit":false,"messageTitle":"Update body","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":91}}}]},{"date":"2023-08-31","commitResults":[{"hash":"3171722d5f471dc05c1e87d20695ede2758ed772","isMergeCommit":false,"messageTitle":"Add writing and reading file function","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":208,"deletions":114}}},{"hash":"ddd9ef4a220a940987e2de14dfad0d291d1650d7","isMergeCommit":false,"messageTitle":"Add Local Dates and times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":7},"java":{"insertions":45,"deletions":7}}}]},{"date":"2023-09-01","commitResults":[{"hash":"4c2b3c7ed9ead45db4b4a6918d99b5b7523a40c5","isMergeCommit":false,"messageTitle":"Add More OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5},"java":{"insertions":361,"deletions":16}}},{"hash":"f2967a5effe04e0a75938bd6130c915dcdc26880","isMergeCommit":false,"messageTitle":"Add Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":132,"deletions":29}}},{"hash":"75f78857490f381d7a41c51577553d24536b2e9f","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/LinWanLeii/ip","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"29dd78b8a0b63d13f1f610beb24d6da7efb96143","isMergeCommit":false,"messageTitle":"Add testcases and Jar","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":6,"deletions":0}}},{"hash":"1f6eff5af78510feeb03f360b4d8ef27686024ba","isMergeCommit":false,"messageTitle":"Add Javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"17e62e4dac9b4d4fcedcf99eac7ab7d4135c2aec","isMergeCommit":false,"messageTitle":"Fix JavaDocs","messageBody":"","tags":["A-JavaDoc","A-CodingStandards"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":5},"java":{"insertions":432,"deletions":25}}},{"hash":"50eb515ab4c5f43bb934199a9c91c1ed64ec5323","isMergeCommit":false,"messageTitle":"Add find function","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":33,"deletions":0}}},{"hash":"7c03e0b2e9584c35eb42357a06020a07e51cc60d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"* branch-Level-9:\n Add find function\n\n# Conflicts:\n#\tTesting.txt\n","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LinWanLeii":{"java":1223,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":7}},"authorContributionVariance":{"LinWanLeii":95705.29},"authorDisplayNameMap":{"LinWanLeii":"CS2103T-W08-4 LIN .. LEI"}} diff --git a/McNaBry_ip_master/authorship.json b/McNaBry_ip_master/authorship.json index 0df85336..8cf7ca90 100644 --- a/McNaBry_ip_master/authorship.json +++ b/McNaBry_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":"McNaBry"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"checkstyle {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","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":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"McNaBry":7,"-":41}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" abstract public void execute(TaskList tasks, Storage storage, Ui ui) throws DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":14}},{"path":"src/main/java/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" public DeadlineCommand(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" Task dl \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" tasks.add(dl);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" \"Okie! I\u0027ve added a new \" + Ui.cTxt(\"DEADLINE\", Ui.COLOR.BLUE) + \":\",","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" \" \" + dl.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" \"Total no. of tasks stored: \" + tasks.getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":31}},{"path":"src/main/java/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" private int taskCount;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" public DeleteCommand(String taskCount) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" this.taskCount \u003d Integer.parseInt(taskCount);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"delete\", Ui.COLOR.PURPLE)","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" + \" takes in a number. Try delete 1.\"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" Task removedTask \u003d tasks.delete(taskCount - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" \"Okie! I\u0027ve deleted task \" + taskCount + \":\",","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" \" \" + removedTask.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" \"Total no. of tasks stored: \" + tasks.getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" // Write modified task list to file","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":35}},{"path":"src/main/java/commands/EmptyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"public class EmptyCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":12}},{"path":"src/main/java/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" public EventCommand(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" Task event \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" \"Okie! I\u0027ve added a new \" + Ui.cTxt(\"EVENT\", Ui.COLOR.YELLOW) + \":\",","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" \" \" + event.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" \"Total no. of tasks stored: \" + tasks.getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":33}},{"path":"src/main/java/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" ui.displayGoodbye();","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":17}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(\"Nothing stored.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" String[] formatTasks \u003d new String[tasks.getSize() + 1];","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" formatTasks[0] \u003d \"Here are the tasks in your list:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" formatTasks[i + 1] \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" \"%d.%s\", ","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" i + 1, tasks.getTask(i).toString()","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(formatTasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":27}},{"path":"src/main/java/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" private int taskCount;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" public MarkCommand(String taskCount, boolean isDone) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" this.taskCount \u003d Integer.parseInt(taskCount);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt((isDone ? \"mark\" : \"unmark\"), Ui.COLOR.PURPLE)","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" + \" takes in a number. Try \" + Ui.cTxt(\"mark\", Ui.COLOR.PURPLE) + \" 1.\"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" // User tries to mark/unmark a task that is out of bounds.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" if (taskCount \u003c 1 || taskCount \u003e tasks.getSize()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" \"Unable to %s task %d :( You have %d task(s) stored.\",","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" isDone ? \"mark\" : \"unmark\", taskCount, tasks.getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" ));","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" // Mark or unmark the task if the taskCount given is correct.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" Task task \u003d tasks.mark(taskCount - 1, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" String success \u003d isDone","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" ? \"Nice, I\u0027ve marked this task as done:\"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" : \"Okie, I\u0027ve marked this task as not done yet:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" success,","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" \" \" + task.toString()","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":50}},{"path":"src/main/java/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" Task todo \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" \"Okie! I\u0027ve added a new \" + Ui.cTxt(\"TODO\", Ui.COLOR.GREEN) + \":\",","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" \" \" + todo.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" \"Total no. of tasks stored: \" + tasks.getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":28}},{"path":"src/main/java/common/DateParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package common;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"public class DateParser {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" private static final DateTimeFormatter parseFormat \u003d ","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" new DateTimeFormatterBuilder()","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" .append(DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" \"[d/M/yyyy]\"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" + \"[yyyy/M/d]\"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" + \"[d-M-yyyy]\"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" + \"[yyyy-M-d]\"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" ))","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" .append(DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" \"[d MMM yyyy]\" + \"[MMM d yyyy]\", ","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" Locale.ENGLISH","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" ))","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" .optionalStart()","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" .appendPattern(\"[ HHmm][ Hmm][\u0027T\u0027HH:mm]\")","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" .optionalEnd()","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" .toFormatter();","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" ","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" private static final DateTimeFormatter displayFormat \u003d ","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" \"MMM dd yyyy h:mma\",","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" Locale.ENGLISH","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" public static LocalDateTime parseDateString(String date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" return LocalDateTime.parse(date, parseFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" public static String toDisplayString(LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" return date.format(displayFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" public static String toFileString(LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" return date.toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"McNaBry":52}},{"path":"src/main/java/data/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" if (tasks !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" return this.tasks.size() \u003d\u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" public Task getTask(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" return this.tasks.get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" public Task mark(int taskIndex, boolean isDone) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" // User tries to mark/unmark a task that is out of bounds.","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d getSize()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" \"Unable to %s task %d :( You have %d task(s) stored.\",","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" isDone ? \"mark\" : \"unmark\", taskIndex, getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" ));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" Task task \u003d getTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" if (isDone) task.mark(); ","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" else task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" public Task delete(int taskIndex) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d getSize()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" \"Unable to \" ","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" + Ui.cTxt(\"delete\", Ui.COLOR.PURPLE) ","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" + \" task %d :( You have %d task(s) stored.\",","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" taskIndex + 1, getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" ));","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" Task removedTask \u003d this.tasks.remove(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" return removedTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" String taskListString \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" taskListString +\u003d task.toFileFormatString() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" return taskListString.strip();","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":72}},{"path":"src/main/java/data/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":" private String msg;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":" public DukeException(String msg) {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" this.msg \u003d String.format(\" %s\", msg);","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" public DukeException(String[] msg) {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" String temp \u003d \"\";","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" for (String stub : msg) {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" temp +\u003d String.format(\" %s\\n\", stub);","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" this.msg \u003d temp.strip();","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" return msg;","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"McNaBry":22}},{"path":"src/main/java/data/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import common.DateParser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" public Deadline(String detail, LocalDateTime deadline) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" super(detail);","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" public Deadline(String detail, LocalDateTime deadline, boolean isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" super(detail, isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" \"[D]%s (by: %s)\",","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" super.toString(), ","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" DateParser.toDisplayString(this.deadline)","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" public String toFileFormatString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" \"D|%s|%s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" super.toFileFormatString(),","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" DateParser.toFileString(this.deadline)","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"McNaBry":36}},{"path":"src/main/java/data/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import common.DateParser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" public Event(String detail, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" super(detail);","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" public Event(String detail, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" super(detail, isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" \"[E]%s (from: %s to: %s)\",","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" super.toString(), ","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" DateParser.toDisplayString(from), ","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" DateParser.toDisplayString(to)","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public String toFileFormatString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" \"E|%s|%s|%s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" super.toFileFormatString(),","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" DateParser.toFileString(from), ","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" DateParser.toFileString(to)","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"McNaBry":41}},{"path":"src/main/java/data/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":" private String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" public void mark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" public void unmark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" \"[%s] %s\",","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" isDone ? \"X\" : \" \", ","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" description","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" public String toFileFormatString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" \"%s|%s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" isDone ? \"1\" : \"0\",","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" description","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"McNaBry":42}},{"path":"src/main/java/data/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":" public Todo(String detail) {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":" super(detail);","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" public Todo(String detail, boolean isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" super(detail, isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" \"[T]%s\", super.toString()","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" public String toFileFormatString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" \"T|%s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" super.toFileFormatString()","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"McNaBry":26}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" private Storage storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" private Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" public Duke(String filePath, String fileDir) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" this.storage \u003d new Storage(filePath, fileDir);","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" this.tasks \u003d new TaskList(this.storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public void start() throws IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" ui.displayIntro();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" // Begin chatbot\u0027s main event loop","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" String input \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" ui.displayInputStart();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" input \u003d ui.readInput();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" Command c \u003d parser.parse(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" c.execute(tasks, storage, ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" ui.displayError(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" Duke chatbot \u003d new Duke(","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" \"./save/data.txt\", ","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" \"./save\"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" chatbot.start();","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"McNaBry":47,"-":3}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import commands.DeadlineCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import commands.DeleteCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import commands.EmptyCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import commands.EventCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import commands.ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import commands.ListCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import commands.MarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import commands.TodoCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import common.DateParser;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" public Command parse(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" // Ignore empty user input","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" if (input.equals(\"\")) return new EmptyCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" // Extract main command first","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" String command \u003d input.split(\" \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" // Parse main command","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" switch (command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" return parseMarkCommand(input, \"mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" return parseMarkCommand(input, \"unmark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" return parseTodoCommand(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" return parseDeadlineCommand(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" return parseEventCommand(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" return parseDeleteCommand(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" \"Unrecognized command \" + Ui.cTxt(command, Ui.COLOR.PURPLE),","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" \"Maybe create a new TODO with \" + Ui.cTxt(\"todo\", Ui.COLOR.PURPLE) + \" read a book?\"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" private static String extractTail(String[] item) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" return String.join(\" \",","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" Arrays.copyOfRange(","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" item, 1, item.length","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" )","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" private Command parseMarkCommand(String input, String type) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" String[] parseArr \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" if (parseArr.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing a number:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"mark\", Ui.COLOR.PURPLE) + \" 1\"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" return new MarkCommand(parseArr[1], type \u003d\u003d \"mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" private Command parseTodoCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" String[] parseArr \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" if (parseArr.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing a description:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"todo\", Ui.COLOR.PURPLE) + \" read a book\"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" return new TodoCommand(extractTail(parseArr));","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" private Command parseDeadlineCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" // Split by the \"/by\" to separate the first and second part. ","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" String[] parseArr \u003d input.split(\"/by \"); ","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" // Extract the header (command + description).","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" String[] header \u003d parseArr[0].split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" // Check if task descripton exists.","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" if (header.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing a description:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"deadline\", Ui.COLOR.PURPLE) + \" submit essay /by Monday, 4pm\"","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" // Check if a date was provided and the \"/by\" delimiter was supplied.","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" if (parseArr.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing a date:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" \"\u003c- Remember to include /by -\u003e\",","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"deadline\", Ui.COLOR.PURPLE) + \" submit essay /by Monday, 4pm\"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" // Extract the date and add a new deadline to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" LocalDateTime date \u003d DateParser.parseDateString(parseArr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" \"Oops, looks like your date is in an invalid format...\",","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" \"Here are some valid formats:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"McNaBry"},"content":" \"2023-10-20, 20-10-2023, 2023/10/20, 20/10/2023, Oct 10 2023, 10 Oct 2023\",","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" \"You can provide a timing as well: 2023-10-20 1800\"","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" return new DeadlineCommand(","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"McNaBry"},"content":" extractTail(header),","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" date","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":" private Command parseEventCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" // Split by \"/from\" to separate the first and (second + third) part. ","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"McNaBry"},"content":" String[] parseArr \u003d input.split(\"/from \");","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" // Extract the header (command + description).","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":" String[] header \u003d parseArr[0].split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" // Check if task descripton exists.","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" if (header.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing a description:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"event\", Ui.COLOR.PURPLE) + \" NUS carnival /from Aug 21st /to Aug 25th\"","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"McNaBry"},"content":" // Check if /from exists.","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"McNaBry"},"content":" if (parseArr.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing \" + Ui.cTxt(\"/from\", Ui.COLOR.PURPLE),","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"event\", Ui.COLOR.PURPLE) + \" NUS carnival /from Aug 21st /to Aug 25th\"","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"McNaBry"},"content":" // Split by \"/to\" to separate the second and third part. ","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"McNaBry"},"content":" String[] dateParse \u003d parseArr[1].split(\"/to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"McNaBry"},"content":" // Check if /to exists.","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"McNaBry"},"content":" if (dateParse.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing \" + Ui.cTxt(\"/to\", Ui.COLOR.PURPLE),","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"event\", Ui.COLOR.PURPLE) + \" NUS carnival /from Aug 21st /to Aug 25th\"","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"McNaBry"},"content":" // Extract dates and validate them.","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"McNaBry"},"content":" LocalDateTime fromDate \u003d DateParser.parseDateString(dateParse[0].strip());","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"McNaBry"},"content":" LocalDateTime toDate \u003d DateParser.parseDateString(dateParse[1].strip());","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"McNaBry"},"content":" if (fromDate \u003d\u003d null || toDate \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"McNaBry"},"content":" \"Oops, looks like your date is in an invalid format...\"","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"McNaBry"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"McNaBry"},"content":" return new EventCommand(","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"McNaBry"},"content":" extractTail(header),","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"McNaBry"},"content":" fromDate,","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"McNaBry"},"content":" toDate","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"McNaBry"},"content":" private Command parseDeleteCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"McNaBry"},"content":" String[] parseArr \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"McNaBry"},"content":" if (parseArr.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing a number:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"delete\", Ui.COLOR.PURPLE) + \" 1\"","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"McNaBry"},"content":" return new DeleteCommand(parseArr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":185}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import common.DateParser;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" private final String fileDir;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" private final String filePath;","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" public Storage(String filePath, String fileDir) {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" this.fileDir \u003d fileDir;","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" BufferedReader br \u003d new BufferedReader(","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" new FileReader(filePath)","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" String line;","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" while((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" String[] parse \u003d line.strip().split(\"\\\\|\");","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" // Shortest length is 3 for any task type","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" if (parse.length \u003c 3) continue;","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" Task task \u003d this.createTask(parse);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" // Close the reader after parsing the file","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" br.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" return tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" } catch (FileNotFoundException f) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" // Create a new data directory if it cannot be found","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" new File(fileDir).mkdir();","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" private Task createTask(String[] parse) {","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" String taskType \u003d parse[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" boolean isDone \u003d parse[1].equals(\"1\");","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" // Create task based on type given","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" switch(taskType) {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" case \"T\":","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" return new Todo(parse[2], isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" case \"D\":","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" if (parse.length \u003c 4) break;","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" return new Deadline(","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" parse[2], ","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" DateParser.parseDateString(parse[3]), ","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" isDone","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" case \"E\":","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" if (parse.length \u003c 5) break;","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" return new Event(","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" parse[2], ","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" DateParser.parseDateString(parse[3]), ","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" DateParser.parseDateString(parse[4]), ","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" isDone","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" public void update(TaskList tasks) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" fw.write(tasks.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" fw.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(\"Sorry error with saving tasks!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"McNaBry":95}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" public static enum COLOR {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" RESET(\"\\u001B[0m\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" GREEN(\"\\033[0;32m\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" YELLOW(\"\\033[0;33m\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" BLUE(\"\\033[0;34m\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" PURPLE(\"\\u001B[35m\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" RED(\"\\033[0;31m\");","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" public final String VALUE;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" private COLOR(String value) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" this.VALUE \u003d value;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" private static BufferedReader reader \u003d new BufferedReader(","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" new InputStreamReader(System.in)","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" public static String cTxt(String text, COLOR color) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" return color.VALUE + text + COLOR.RESET.VALUE;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" public void displayIntro() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" \"Hi. I\u0027m \" + Ui.cTxt(\"Bryan\", Ui.COLOR.PURPLE),","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" \"What can I do for you?\"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" public void displayGoodbye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" displayMsg(\"Bye~ Come back soon :)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" public void displayInputStart() {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" System.out.print(\"\u003e \");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" public String readInput() throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" return reader.readLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" public void displayMsg(String text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" String msg \u003d String.format(\"\\n %s\", text);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" System.out.println(msg + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" public void displayMsg(String[] text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" String msg \u003d \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" for (String stub : text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" msg +\u003d String.format(\" %s\\n\", stub);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" public void displayError(String text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" String msg \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" \"\\n %s\\n %s\\n\", ","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" cTxt(\"Erm... error :(\", COLOR.RED),","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" text","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" public void displayError(String[] text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" String msg \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" \"\\n %s\\n\", ","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" cTxt(\"Erm... error :(\", COLOR.RED)","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" for (String stub : text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" msg +\u003d String.format(\" %s\\n\", stub);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":82}},{"path":"src/test/java/data/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" private static class TaskStub extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" public String desc;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" public boolean done;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" public TaskStub(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" super(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" this.desc \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public void mark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" super.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" done \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" public void unmark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" super.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" done \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" public void testDelete() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" TaskList tasks \u003d new TaskList(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read a book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" Task deletedTask \u003d tasks.delete(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" if (deletedTask instanceof TaskStub) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" TaskStub stub \u003d (TaskStub) deletedTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" assertEquals(\"read a book\", stub.desc);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" fail(\"TaskStub class should be used\");","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" fail(\"Exception should not be thrown\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" public void testDeleteOutOfBounds() {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" TaskList tasks \u003d new TaskList(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read a book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read 300 book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" () -\u003e tasks.delete(2)","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" () -\u003e tasks.delete(100)","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" () -\u003e tasks.delete(-1)","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" assertEquals(2, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" assertFalse(tasks.isEmpty());","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" public void testMark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" TaskList tasks \u003d new TaskList(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read a book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" tasks.mark(0, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" Task markedTask \u003d tasks.delete(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" if (markedTask instanceof TaskStub) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" TaskStub stub \u003d (TaskStub) markedTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" assertTrue(stub.done);","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" assertEquals(\"read a book\", stub.desc);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" fail(\"TaskStub class should be used\");","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" fail(\"Exception should not be thrown\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" public void testUnmark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" TaskList tasks \u003d new TaskList(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read a book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" tasks.mark(0, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" tasks.mark(0, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" Task markedTask \u003d tasks.delete(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" if (markedTask instanceof TaskStub) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" TaskStub stub \u003d (TaskStub) markedTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" assertEquals(false, stub.done);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" assertEquals(\"read a book\", stub.desc);","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" fail(\"Exception should not be thrown\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" public void testMarkOutOfBounds() {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" TaskList tasks \u003d new TaskList(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read a book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read 300 book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" () -\u003e tasks.mark(2, true)","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" () -\u003e tasks.mark(100, false)","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":" () -\u003e tasks.mark(-1, true)","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":127}},{"path":"src/test/java/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import commands.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" public void testEmptyCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" Command c \u003d parser.parse(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" assertTrue(c instanceof EmptyCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" fail(\"Exception should not be thrown\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" public void testUnknownCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"error\")","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" public void testValidCommands() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" Command mark \u003d parser.parse(\"mark 1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" Command unmark \u003d parser.parse(\"unmark 1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" Command list \u003d parser.parse(\"list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" Command delete \u003d parser.parse(\"delete 1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" Command todo \u003d parser.parse(\"todo read\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" Command deadline \u003d parser.parse(","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" \"deadline read /by 2023-10-20 1800\"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" Command event \u003d parser.parse(","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" \"event read /from 2023-10-20 1800 /to 2023-10-25 1900\"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" assertTrue(mark instanceof MarkCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" assertTrue(unmark instanceof MarkCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" assertTrue(list instanceof ListCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" assertTrue(delete instanceof DeleteCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" assertTrue(todo instanceof TodoCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" assertTrue(deadline instanceof DeadlineCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" assertTrue(event instanceof EventCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" fail(\"Exception should not be thrown\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" public void testValidDates() {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 2023-10-20\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 20-10-2023\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 20/10/2023\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 2023/10/20\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by Oct 10 2023\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 20 Oct 2023\");","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 2023-10-20 1800\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 2023-10-20 630\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 2023-10-20 0630\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" fail(\"Exception should not be thrown\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" public void testInvalidMark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"mark\")","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"mark task 1\")","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" public void testInvalidDelete() {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"delete\")","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"delete task 1\")","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" public void testInvalidTodo() {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"todo\")","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"McNaBry"},"content":" public void testInvalidDeadline() {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"deadline\")","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"deadline read\")","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"deadline read /by\")","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"deadline /by\")","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"deadline read /by random date\")","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"McNaBry"},"content":" public void testInvalidEvent() {","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"event\")","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"event read\")","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"event read /from\")","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"event read /from hi\")","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"event read /from hi /to\")","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"event read /from hi /to bye\")","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":166}},{"path":"src/test/java/ui/UiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import org.junit.jupiter.api.AfterAll;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import org.junit.jupiter.api.BeforeAll;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"public class UiTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" private static final ByteArrayOutputStream OUT_STREAM \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" private static final String RESET \u003d \"\\u001B[0m\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" private static final String GREEN \u003d \"\\033[0;32m\";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" private static final String YELLOW \u003d \"\\033[0;33m\";","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" private static final String BLUE \u003d \"\\033[0;34m\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" private static final String PURPLE \u003d \"\\u001B[35m\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" private static final String RED \u003d \"\\033[0;31m\";","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" @BeforeAll","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" public static void setUpStreams() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" System.setOut(","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" new PrintStream(OUT_STREAM)","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" @AfterAll","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" public static void restoreStreams() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" System.setOut(System.out);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" public void testSingleLineDisplay() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(\"Hello\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" String expected \u003d String.format(\"\\n Hello\\n\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" String actual \u003d OUT_STREAM.toString().replace(\"\\r\\n\", \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" OUT_STREAM.reset();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" public void testMultiLineDisplay() {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" \"Hello, this line 1\",","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" \"and... this is line 2\",","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" \"and three!\"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" String expected \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" \"\\n Hello, this line 1\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" + \" and... this is line 2\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" + \" and three!\\n\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" String actual \u003d OUT_STREAM.toString().replace(\"\\r\\n\", \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" OUT_STREAM.reset();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" public void testSingleLineError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" ui.displayError(\"Some error message.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" String expected \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" \"\\n \" + RED + \"Erm... error :(\" + RESET","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" + \"\\n Some error message.\\n\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" String actual \u003d OUT_STREAM.toString().replace(\"\\r\\n\", \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" OUT_STREAM.reset();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" public void testMultiLineError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" ui.displayError(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" \"Error message\",","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" \"Help tooltip\",","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" \"Standard example\"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" String expected \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" \"\\n \" + RED + \"Erm... error :(\" + RESET","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" + \"\\n Error message\"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" + \"\\n Help tooltip\"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" + \"\\n Standard example\\n\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" String actual \u003d OUT_STREAM.toString().replace(\"\\r\\n\", \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" OUT_STREAM.reset();","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" public void testColors() {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"GREEN\", Ui.COLOR.GREEN),","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"YELLOW\", Ui.COLOR.YELLOW),","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"BLUE\", Ui.COLOR.BLUE),","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"PURPLE\", Ui.COLOR.PURPLE),","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"RED\", Ui.COLOR.RED),","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" String expected \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" \"\\n \" + GREEN + \"GREEN\" + RESET","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" + \"\\n \" + YELLOW + \"YELLOW\" + RESET","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" + \"\\n \" + BLUE + \"BLUE\" + RESET","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" + \"\\n \" + PURPLE + \"PURPLE\" + RESET","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" + \"\\n \" + RED + \"RED\" + RESET + \"\\n\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" String actual \u003d OUT_STREAM.toString().replace(\"\\r\\n\", \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" OUT_STREAM.reset();","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":112}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"mark 0","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"mark -1","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"mark first","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"todo","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"todo revise basic Java concepts","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T lecture /by Friday","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T lecture /by 21st August","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T lecture /by 2023-10-20","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2101 lecture /by 20/10/2023","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2100 lecture /by 2023/10/20","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2105 lecture /by 20-10-2023","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T lecture /by 2023-10-20 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2101 lecture /by 20/10/2023 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2100 lecture /by 2023/10/20 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2105 lecture /by 20-10-2023 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T lecture /by 20 Aug 2023","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T lecture /by 20 Aug 2023 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"event","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 2023-10-20","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /to 2023-10-20","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 2023-10-20 /to 2023-10-22","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 20/10/2023 1800 /to 21/10/2023 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 2023/10/20 1800 /to 2023/10/21 1900","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 20-10-2023 1800 /to 23-10-2023 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 2023-10-20 /to 2023-10-20","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 2023-10-20 /to 2023-10-20 /bug me","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"mark -1","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":"mark 3","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"mark 90","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":"unmark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":"delete 0","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"delete 90","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":"delete 1","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"delete -1","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":"delete 3","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"McNaBry":47}},{"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":"McNaBry"},"content":"set \"BIN_PATH\u003d..\\bin\"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"REM set compile path","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"set \"SOURCE_DIR\u003d..\\src\\main\\java\"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"if exist save del save","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"REM Loop through all .java files in the directory and subdirectories","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\Duke.java","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"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":23,"author":{"gitId":"McNaBry"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"McNaBry":8,"-":18}}] +[{"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":"McNaBry"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"checkstyle {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","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":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"McNaBry":7,"-":41}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" abstract public void execute(TaskList tasks, Storage storage, Ui ui) throws DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":14}},{"path":"src/main/java/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" public DeadlineCommand(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" Task dl \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" tasks.add(dl);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" \"Okie! I\u0027ve added a new \" + Ui.cTxt(\"DEADLINE\", Ui.COLOR.BLUE) + \":\",","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" \" \" + dl.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" \"Total no. of tasks stored: \" + tasks.getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":31}},{"path":"src/main/java/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" private int taskCount;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" public DeleteCommand(String taskCount) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" this.taskCount \u003d Integer.parseInt(taskCount);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"delete\", Ui.COLOR.PURPLE)","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" + \" takes in a number. Try delete 1.\"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" Task removedTask \u003d tasks.delete(taskCount - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" \"Okie! I\u0027ve deleted task \" + taskCount + \":\",","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" \" \" + removedTask.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" \"Total no. of tasks stored: \" + tasks.getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" // Write modified task list to file","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":35}},{"path":"src/main/java/commands/EmptyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"public class EmptyCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":12}},{"path":"src/main/java/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" public EventCommand(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" Task event \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" \"Okie! I\u0027ve added a new \" + Ui.cTxt(\"EVENT\", Ui.COLOR.YELLOW) + \":\",","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" \" \" + event.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" \"Total no. of tasks stored: \" + tasks.getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":33}},{"path":"src/main/java/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" ui.displayGoodbye();","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":17}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(\"Nothing stored.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" String[] formatTasks \u003d new String[tasks.getSize() + 1];","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" formatTasks[0] \u003d \"Here are the tasks in your list:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" formatTasks[i + 1] \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" \"%d.%s\", ","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" i + 1, tasks.getTask(i).toString()","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(formatTasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":27}},{"path":"src/main/java/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" private int taskCount;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" public MarkCommand(String taskCount, boolean isDone) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" this.taskCount \u003d Integer.parseInt(taskCount);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt((isDone ? \"mark\" : \"unmark\"), Ui.COLOR.PURPLE)","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" + \" takes in a number. Try \" + Ui.cTxt(\"mark\", Ui.COLOR.PURPLE) + \" 1.\"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" // User tries to mark/unmark a task that is out of bounds.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" if (taskCount \u003c 1 || taskCount \u003e tasks.getSize()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" \"Unable to %s task %d :( You have %d task(s) stored.\",","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" isDone ? \"mark\" : \"unmark\", taskCount, tasks.getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" ));","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" // Mark or unmark the task if the taskCount given is correct.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" Task task \u003d tasks.mark(taskCount - 1, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" String success \u003d isDone","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" ? \"Nice, I\u0027ve marked this task as done:\"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" : \"Okie, I\u0027ve marked this task as not done yet:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" success,","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" \" \" + task.toString()","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":50}},{"path":"src/main/java/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" public void execute(TaskList tasks, Storage storage, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" Task todo \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" \"Okie! I\u0027ve added a new \" + Ui.cTxt(\"TODO\", Ui.COLOR.GREEN) + \":\",","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" \" \" + todo.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" \"Total no. of tasks stored: \" + tasks.getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":28}},{"path":"src/main/java/common/DateParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package common;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"public class DateParser {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" private static final DateTimeFormatter parseFormat \u003d ","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" new DateTimeFormatterBuilder()","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" .append(DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" \"[d/M/yyyy]\"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" + \"[yyyy/M/d]\"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" + \"[d-M-yyyy]\"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" + \"[yyyy-M-d]\"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" ))","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" .append(DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" \"[d MMM yyyy]\" + \"[MMM d yyyy]\", ","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" Locale.ENGLISH","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" ))","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" .optionalStart()","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" .appendPattern(\"[ HHmm][ Hmm][\u0027T\u0027HH:mm]\")","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" .optionalEnd()","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" .toFormatter();","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" ","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" private static final DateTimeFormatter displayFormat \u003d ","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" \"MMM dd yyyy h:mma\",","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" Locale.ENGLISH","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" public static LocalDateTime parseDateString(String date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" return LocalDateTime.parse(date, parseFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" public static String toDisplayString(LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" return date.format(displayFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" public static String toFileString(LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" return date.toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"McNaBry":52}},{"path":"src/main/java/data/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" if (tasks !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" return this.tasks.size() \u003d\u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" public Task getTask(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" return this.tasks.get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" public Task mark(int taskIndex, boolean isDone) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" // User tries to mark/unmark a task that is out of bounds.","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d getSize()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" \"Unable to %s task %d :( You have %d task(s) stored.\",","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" isDone ? \"mark\" : \"unmark\", taskIndex, getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" ));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" Task task \u003d getTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" if (isDone) task.mark(); ","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" else task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" public Task delete(int taskIndex) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d getSize()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" \"Unable to \" ","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" + Ui.cTxt(\"delete\", Ui.COLOR.PURPLE) ","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" + \" task %d :( You have %d task(s) stored.\",","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" taskIndex + 1, getSize()","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" ));","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" Task removedTask \u003d this.tasks.remove(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" return removedTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" String taskListString \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" taskListString +\u003d task.toFileFormatString() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" return taskListString.strip();","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":72}},{"path":"src/main/java/data/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":" private String msg;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":" public DukeException(String msg) {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" this.msg \u003d String.format(\"%s\", msg);","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" public DukeException(String[] msg) {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" String temp \u003d \"\";","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" for (String stub : msg) {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" temp +\u003d String.format(\" %s\\n\", stub);","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" this.msg \u003d temp.trim().strip();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" return msg;","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"McNaBry":22}},{"path":"src/main/java/data/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import common.DateParser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" public Deadline(String detail, LocalDateTime deadline) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" super(detail);","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" public Deadline(String detail, LocalDateTime deadline, boolean isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" super(detail, isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" \"[D]%s (by: %s)\",","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" super.toString(), ","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" DateParser.toDisplayString(this.deadline)","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" public String toFileFormatString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" \"D|%s|%s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" super.toFileFormatString(),","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" DateParser.toFileString(this.deadline)","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"McNaBry":36}},{"path":"src/main/java/data/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import common.DateParser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" public Event(String detail, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" super(detail);","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" public Event(String detail, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" super(detail, isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" \"[E]%s (from: %s to: %s)\",","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" super.toString(), ","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" DateParser.toDisplayString(from), ","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" DateParser.toDisplayString(to)","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" public String toFileFormatString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" \"E|%s|%s|%s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" super.toFileFormatString(),","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" DateParser.toFileString(from), ","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" DateParser.toFileString(to)","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"McNaBry":41}},{"path":"src/main/java/data/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":" private String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" public void mark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" public void unmark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" \"[%s] %s\",","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" isDone ? \"X\" : \" \", ","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" description","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" public String toFileFormatString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" \"%s|%s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" isDone ? \"1\" : \"0\",","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" description","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"McNaBry":42}},{"path":"src/main/java/data/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":" public Todo(String detail) {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":" super(detail);","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" public Todo(String detail, boolean isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" super(detail, isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" \"[T]%s\", super.toString()","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" public String toFileFormatString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" return String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" \"T|%s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" super.toFileFormatString()","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"McNaBry":26}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" private Storage storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" private Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" public Duke(String filePath, String fileDir) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" this.storage \u003d new Storage(filePath, fileDir);","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" this.tasks \u003d new TaskList(this.storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public void start() throws IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" ui.displayIntro();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" // Begin chatbot\u0027s main event loop","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" String input \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" ui.displayInputStart();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" input \u003d ui.readInput();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" Command c \u003d parser.parse(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" c.execute(tasks, storage, ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" ui.displayError(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" Duke chatbot \u003d new Duke(","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" \"./save/data.txt\", ","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" \"./save\"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" chatbot.start();","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"McNaBry":47,"-":3}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import commands.DeadlineCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import commands.DeleteCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import commands.EmptyCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import commands.EventCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import commands.ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import commands.ListCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import commands.MarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import commands.TodoCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import common.DateParser;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" public Command parse(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" // Ignore empty user input","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" if (input.equals(\"\")) return new EmptyCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" // Extract main command first","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" String command \u003d input.split(\" \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" // Parse main command","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" switch (command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" return parseMarkCommand(input, \"mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" return parseMarkCommand(input, \"unmark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" return parseTodoCommand(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" return parseDeadlineCommand(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" return parseEventCommand(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" return parseDeleteCommand(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" \"Unrecognized command \" + Ui.cTxt(command, Ui.COLOR.PURPLE),","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" \"Maybe create a new TODO with \" + Ui.cTxt(\"todo\", Ui.COLOR.PURPLE) + \" read a book?\"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" private static String extractTail(String[] item) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" return String.join(\" \",","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" Arrays.copyOfRange(","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" item, 1, item.length","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" )","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" private Command parseMarkCommand(String input, String type) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" String[] parseArr \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" if (parseArr.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing a number:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"mark\", Ui.COLOR.PURPLE) + \" 1\"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" return new MarkCommand(parseArr[1], type \u003d\u003d \"mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" private Command parseTodoCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" String[] parseArr \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" if (parseArr.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing a description:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"todo\", Ui.COLOR.PURPLE) + \" read a book\"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" return new TodoCommand(extractTail(parseArr));","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" private Command parseDeadlineCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" // Split by the \"/by\" to separate the first and second part. ","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" String[] parseArr \u003d input.split(\"/by \"); ","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" // Extract the header (command + description).","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" String[] header \u003d parseArr[0].split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" // Check if task descripton exists.","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" if (header.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing a description:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"deadline\", Ui.COLOR.PURPLE) + \" submit essay /by Oct 10 2023 1600\"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" // Check if a date was provided and the \"/by\" delimiter was supplied.","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" if (parseArr.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing a date:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" \"\u003c- Remember to include /by -\u003e\",","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"deadline\", Ui.COLOR.PURPLE) + \" submit essay /by Oct 10 2023 1600\"","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" // Extract the date and add a new deadline to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" LocalDateTime date \u003d DateParser.parseDateString(parseArr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" \"Oops, looks like your date is in an invalid format...\",","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" \"Here are some valid formats:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"2023-10-20, 20-10-2023, 2023/10/20, \"","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" + \"20/10/2023, Oct 10 2023, 10 Oct 2023\",","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" Ui.COLOR.PURPLE","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" ),","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" \"You can provide a timing as well: \" ","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"McNaBry"},"content":" + Ui.cTxt(\"2023-10-20 1800\", Ui.COLOR.YELLOW)","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" return new DeadlineCommand(","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" extractTail(header),","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":" date","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" private Command parseEventCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":" // Split by \"/from\" to separate the first and (second + third) part. ","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":" String[] parseArr \u003d input.split(\"/from \");","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" // Extract the header (command + description).","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" String[] header \u003d parseArr[0].split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" // Check if task descripton exists.","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"McNaBry"},"content":" if (header.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing a description:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"event\", Ui.COLOR.PURPLE) + \" NUS carnival /from 21 Aug 2023 /to 22 Aug 2023\"","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" // Check if /from exists.","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"McNaBry"},"content":" if (parseArr.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing \" + Ui.cTxt(\"/from\", Ui.COLOR.PURPLE),","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"event\", Ui.COLOR.PURPLE) + \" NUS carnival /from 21 Aug 2023 /to 22 Aug 2023\"","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"McNaBry"},"content":" // Split by \"/to\" to separate the second and third part. ","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"McNaBry"},"content":" String[] dateParse \u003d parseArr[1].split(\"/to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"McNaBry"},"content":" // Check if /to exists.","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"McNaBry"},"content":" if (dateParse.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing \" + Ui.cTxt(\"/to\", Ui.COLOR.PURPLE),","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"event\", Ui.COLOR.PURPLE) + \" NUS carnival /from 21 Aug 2023 /to 22 Aug 2023\"","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"McNaBry"},"content":" // Extract dates and validate them.","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"McNaBry"},"content":" LocalDateTime fromDate \u003d DateParser.parseDateString(dateParse[0].strip());","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"McNaBry"},"content":" LocalDateTime toDate \u003d DateParser.parseDateString(dateParse[1].strip());","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"McNaBry"},"content":" if (fromDate \u003d\u003d null || toDate \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"McNaBry"},"content":" \"Oops, looks like your date is in an invalid format...\",","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"McNaBry"},"content":" \"Here are some valid formats:\",","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"2023-10-20, 20-10-2023, 2023/10/20, \"","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"McNaBry"},"content":" + \"20/10/2023, Oct 10 2023, 10 Oct 2023\",","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"McNaBry"},"content":" Ui.COLOR.PURPLE","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"McNaBry"},"content":" ),","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"McNaBry"},"content":" \"You can provide a timing as well: \" ","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"McNaBry"},"content":" + Ui.cTxt(\"2023-10-20 1800\", Ui.COLOR.YELLOW)","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"McNaBry"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"McNaBry"},"content":" return new EventCommand(","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"McNaBry"},"content":" extractTail(header),","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"McNaBry"},"content":" fromDate,","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"McNaBry"},"content":" toDate","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"McNaBry"},"content":" private Command parseDeleteCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"McNaBry"},"content":" String[] parseArr \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"McNaBry"},"content":" if (parseArr.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"McNaBry"},"content":" \"Looks like you\u0027re missing a number:\",","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"McNaBry"},"content":" \"Try \" + Ui.cTxt(\"delete\", Ui.COLOR.PURPLE) + \" 1\"","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"McNaBry"},"content":" return new DeleteCommand(parseArr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":196}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import common.DateParser;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" private final String fileDir;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" private final String filePath;","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" public Storage(String filePath, String fileDir) {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" this.fileDir \u003d fileDir;","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" BufferedReader br \u003d new BufferedReader(","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" new FileReader(filePath)","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" String line;","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" while((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" String[] parse \u003d line.strip().split(\"\\\\|\");","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" // Shortest length is 3 for any task type","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" if (parse.length \u003c 3) continue;","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" Task task \u003d this.createTask(parse);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" // Close the reader after parsing the file","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" br.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" return tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" } catch (FileNotFoundException f) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" // Create a new data directory if it cannot be found","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" new File(fileDir).mkdir();","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" private Task createTask(String[] parse) {","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" String taskType \u003d parse[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" boolean isDone \u003d parse[1].equals(\"1\");","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" // Create task based on type given","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" switch(taskType) {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" case \"T\":","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" return new Todo(parse[2], isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" case \"D\":","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" if (parse.length \u003c 4) break;","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" return new Deadline(","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" parse[2], ","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" DateParser.parseDateString(parse[3]), ","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" isDone","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" case \"E\":","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" if (parse.length \u003c 5) break;","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" return new Event(","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" parse[2], ","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" DateParser.parseDateString(parse[3]), ","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" DateParser.parseDateString(parse[4]), ","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" isDone","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" public void update(TaskList tasks) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" fw.write(tasks.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":" fw.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" throw new DukeException(\"Sorry error with saving tasks!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"McNaBry":95}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":" public static enum COLOR {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":" RESET(\"\\u001B[0m\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":" GREEN(\"\\033[0;32m\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":" YELLOW(\"\\033[0;33m\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" BLUE(\"\\033[0;34m\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" PURPLE(\"\\u001B[35m\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" RED(\"\\033[0;31m\");","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" public final String VALUE;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" private COLOR(String value) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" this.VALUE \u003d value;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" private static BufferedReader reader \u003d new BufferedReader(","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" new InputStreamReader(System.in)","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" public static String cTxt(String text, COLOR color) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" return color.VALUE + text + COLOR.RESET.VALUE;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" public void displayIntro() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" \"Hi. I\u0027m \" + Ui.cTxt(\"Bryan\", Ui.COLOR.PURPLE),","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" \"What can I do for you?\"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" public void displayGoodbye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" displayMsg(\"Bye~ Come back soon :)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" public void displayInputStart() {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" System.out.print(\"\u003e \");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" public String readInput() throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" return reader.readLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" public void displayMsg(String text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" String msg \u003d String.format(\"\\n %s\", text);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" System.out.println(msg + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" public void displayMsg(String[] text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" String msg \u003d \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" for (String stub : text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" msg +\u003d String.format(\" %s\\n\", stub);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" public void displayError(String text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" String msg \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" \"\\n %s\\n %s\\n\", ","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" cTxt(\"Erm... error :(\", COLOR.RED),","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" text","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" public void displayError(String[] text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" String msg \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" \"\\n %s\\n\", ","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" cTxt(\"Erm... error :(\", COLOR.RED)","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" for (String stub : text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" msg +\u003d String.format(\" %s\\n\", stub);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":82}},{"path":"src/test/java/data/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package data;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" private static class TaskStub extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" public String desc;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" public boolean done;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" public TaskStub(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" super(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" this.desc \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" public void mark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" super.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" done \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" public void unmark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" super.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" done \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" public void testDelete() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" TaskList tasks \u003d new TaskList(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read a book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" Task deletedTask \u003d tasks.delete(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" if (deletedTask instanceof TaskStub) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" TaskStub stub \u003d (TaskStub) deletedTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" assertEquals(\"read a book\", stub.desc);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" fail(\"TaskStub class should be used\");","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" fail(\"Exception should not be thrown\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" public void testDeleteOutOfBounds() {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" TaskList tasks \u003d new TaskList(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read a book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read 300 book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" () -\u003e tasks.delete(2)","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" () -\u003e tasks.delete(100)","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" () -\u003e tasks.delete(-1)","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" assertEquals(2, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" assertFalse(tasks.isEmpty());","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" public void testMark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" TaskList tasks \u003d new TaskList(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read a book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" tasks.mark(0, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" Task markedTask \u003d tasks.delete(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" if (markedTask instanceof TaskStub) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" TaskStub stub \u003d (TaskStub) markedTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" assertTrue(stub.done);","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" assertEquals(\"read a book\", stub.desc);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" fail(\"TaskStub class should be used\");","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" fail(\"Exception should not be thrown\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" public void testUnmark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" TaskList tasks \u003d new TaskList(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read a book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" tasks.mark(0, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" tasks.mark(0, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" Task markedTask \u003d tasks.delete(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" if (markedTask instanceof TaskStub) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" TaskStub stub \u003d (TaskStub) markedTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" assertEquals(false, stub.done);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" assertEquals(\"read a book\", stub.desc);","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" fail(\"Exception should not be thrown\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" public void testMarkOutOfBounds() {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" TaskList tasks \u003d new TaskList(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read a book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" tasks.add(new TaskStub(\"read 300 book\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" () -\u003e tasks.mark(2, true)","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" () -\u003e tasks.mark(100, false)","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":" () -\u003e tasks.mark(-1, true)","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":127}},{"path":"src/test/java/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import commands.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" public void testEmptyCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" Command c \u003d parser.parse(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" assertTrue(c instanceof EmptyCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" fail(\"Exception should not be thrown\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" public void testUnknownCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"error\")","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" public void testValidCommands() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" Command mark \u003d parser.parse(\"mark 1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" Command unmark \u003d parser.parse(\"unmark 1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" Command list \u003d parser.parse(\"list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":" Command delete \u003d parser.parse(\"delete 1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" Command todo \u003d parser.parse(\"todo read\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" Command deadline \u003d parser.parse(","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" \"deadline read /by 2023-10-20 1800\"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" Command event \u003d parser.parse(","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" \"event read /from 2023-10-20 1800 /to 2023-10-25 1900\"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" assertTrue(mark instanceof MarkCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" assertTrue(unmark instanceof MarkCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" assertTrue(list instanceof ListCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" assertTrue(delete instanceof DeleteCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" assertTrue(todo instanceof TodoCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" assertTrue(deadline instanceof DeadlineCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" assertTrue(event instanceof EventCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" fail(\"Exception should not be thrown\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" public void testValidDates() {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 2023-10-20\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 20-10-2023\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 20/10/2023\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 2023/10/20\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by Oct 10 2023\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 20 Oct 2023\");","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 2023-10-20 1800\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 2023-10-20 630\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" parser.parse(\"deadline read /by 2023-10-20 0630\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" fail(\"Exception should not be thrown\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" public void testInvalidMark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"mark\")","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"mark task 1\")","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" public void testInvalidDelete() {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"delete\")","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"delete task 1\")","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" public void testInvalidTodo() {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"todo\")","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"McNaBry"},"content":" public void testInvalidDeadline() {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"deadline\")","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"deadline read\")","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"deadline read /by\")","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"deadline /by\")","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"deadline read /by random date\")","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"McNaBry"},"content":" public void testInvalidEvent() {","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"McNaBry"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"event\")","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"event read\")","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"event read /from\")","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"event read /from hi\")","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"event read /from hi /to\")","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"McNaBry"},"content":" assertThrows(","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"McNaBry"},"content":" DukeException.class,","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"McNaBry"},"content":" () -\u003e parser.parse(\"event read /from hi /to bye\")","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":166}},{"path":"src/test/java/ui/UiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"package ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"import org.junit.jupiter.api.AfterAll;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"import org.junit.jupiter.api.BeforeAll;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"public class UiTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":" private static final ByteArrayOutputStream OUT_STREAM \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":" private static final String RESET \u003d \"\\u001B[0m\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":" private static final String GREEN \u003d \"\\033[0;32m\";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":" private static final String YELLOW \u003d \"\\033[0;33m\";","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":" private static final String BLUE \u003d \"\\033[0;34m\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":" private static final String PURPLE \u003d \"\\u001B[35m\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":" private static final String RED \u003d \"\\033[0;31m\";","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":" @BeforeAll","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":" public static void setUpStreams() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":" System.setOut(","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":" new PrintStream(OUT_STREAM)","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":" @AfterAll","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":" public static void restoreStreams() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":" System.setOut(System.out);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":" public void testSingleLineDisplay() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(\"Hello\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":" String expected \u003d String.format(\"\\n Hello\\n\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":" String actual \u003d OUT_STREAM.toString().replace(\"\\r\\n\", \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":" OUT_STREAM.reset();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":" public void testMultiLineDisplay() {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":" \"Hello, this line 1\",","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":" \"and... this is line 2\",","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":" \"and three!\"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"McNaBry"},"content":" String expected \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"McNaBry"},"content":" \"\\n Hello, this line 1\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"McNaBry"},"content":" + \" and... this is line 2\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"McNaBry"},"content":" + \" and three!\\n\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"McNaBry"},"content":" String actual \u003d OUT_STREAM.toString().replace(\"\\r\\n\", \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"McNaBry"},"content":" OUT_STREAM.reset();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"McNaBry"},"content":" public void testSingleLineError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"McNaBry"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"McNaBry"},"content":" ui.displayError(\"Some error message.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"McNaBry"},"content":" String expected \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"McNaBry"},"content":" \"\\n \" + RED + \"Erm... error :(\" + RESET","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"McNaBry"},"content":" + \"\\n Some error message.\\n\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"McNaBry"},"content":" String actual \u003d OUT_STREAM.toString().replace(\"\\r\\n\", \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"McNaBry"},"content":" OUT_STREAM.reset();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"McNaBry"},"content":" public void testMultiLineError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"McNaBry"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"McNaBry"},"content":" ui.displayError(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"McNaBry"},"content":" \"Error message\",","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"McNaBry"},"content":" \"Help tooltip\",","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"McNaBry"},"content":" \"Standard example\"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"McNaBry"},"content":" String expected \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"McNaBry"},"content":" \"\\n \" + RED + \"Erm... error :(\" + RESET","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"McNaBry"},"content":" + \"\\n Error message\"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"McNaBry"},"content":" + \"\\n Help tooltip\"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"McNaBry"},"content":" + \"\\n Standard example\\n\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"McNaBry"},"content":" String actual \u003d OUT_STREAM.toString().replace(\"\\r\\n\", \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"McNaBry"},"content":" OUT_STREAM.reset();","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"McNaBry"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"McNaBry"},"content":" public void testColors() {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"McNaBry"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"McNaBry"},"content":" ui.displayMsg(new String[] {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"GREEN\", Ui.COLOR.GREEN),","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"YELLOW\", Ui.COLOR.YELLOW),","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"BLUE\", Ui.COLOR.BLUE),","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"PURPLE\", Ui.COLOR.PURPLE),","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"McNaBry"},"content":" Ui.cTxt(\"RED\", Ui.COLOR.RED),","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"McNaBry"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"McNaBry"},"content":" String expected \u003d String.format(","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"McNaBry"},"content":" \"\\n \" + GREEN + \"GREEN\" + RESET","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"McNaBry"},"content":" + \"\\n \" + YELLOW + \"YELLOW\" + RESET","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"McNaBry"},"content":" + \"\\n \" + BLUE + \"BLUE\" + RESET","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"McNaBry"},"content":" + \"\\n \" + PURPLE + \"PURPLE\" + RESET","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"McNaBry"},"content":" + \"\\n \" + RED + \"RED\" + RESET + \"\\n\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"McNaBry"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"McNaBry"},"content":" String actual \u003d OUT_STREAM.toString().replace(\"\\r\\n\", \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"McNaBry"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"McNaBry"},"content":" OUT_STREAM.reset();","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"McNaBry"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"McNaBry"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"McNaBry":112}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"McNaBry"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"McNaBry"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"McNaBry"},"content":"mark 0","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"McNaBry"},"content":"mark -1","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"McNaBry"},"content":"mark first","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"todo","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"todo revise basic Java concepts","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T lecture /by Friday","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T lecture /by 21st August","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T lecture /by 2023-10-20","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2101 lecture /by 20/10/2023","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2100 lecture /by 2023/10/20","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2105 lecture /by 20-10-2023","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T lecture /by 2023-10-20 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2101 lecture /by 20/10/2023 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2100 lecture /by 2023/10/20 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2105 lecture /by 20-10-2023 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T lecture /by 20 Aug 2023","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"McNaBry"},"content":"deadline watch CS2103T lecture /by 20 Aug 2023 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"McNaBry"},"content":"event","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 2023-10-20","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /to 2023-10-20","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 2023-10-20 /to 2023-10-22","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 20/10/2023 1800 /to 21/10/2023 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 2023/10/20 1800 /to 2023/10/21 1900","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 20-10-2023 1800 /to 23-10-2023 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 2023-10-20 /to 2023-10-20","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"McNaBry"},"content":"event NUS wellness week /from 2023-10-20 /to 2023-10-20 /bug me","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"McNaBry"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"McNaBry"},"content":"mark -1","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"McNaBry"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"McNaBry"},"content":"mark 3","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"McNaBry"},"content":"mark 90","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"McNaBry"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"McNaBry"},"content":"unmark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"McNaBry"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"McNaBry"},"content":"delete 0","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"McNaBry"},"content":"delete 90","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"McNaBry"},"content":"delete 1","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"McNaBry"},"content":"delete -1","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"McNaBry"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"McNaBry"},"content":"delete 3","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"McNaBry"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"McNaBry"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"McNaBry":47}},{"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":"McNaBry"},"content":"set \"BIN_PATH\u003d..\\bin\"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"McNaBry"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"McNaBry"},"content":"REM set compile path","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"McNaBry"},"content":"set \"SOURCE_DIR\u003d..\\src\\main\\java\"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":12,"author":{"gitId":"McNaBry"},"content":"if exist save del save","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"McNaBry"},"content":"REM Loop through all .java files in the directory and subdirectories","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"McNaBry"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\Duke.java","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"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":23,"author":{"gitId":"McNaBry"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"McNaBry":8,"-":18}}] diff --git a/McNaBry_ip_master/commits.json b/McNaBry_ip_master/commits.json index 4c1a0dae..ec71a0ec 100644 --- a/McNaBry_ip_master/commits.json +++ b/McNaBry_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"McNaBry":[{"date":"2023-08-20","commitResults":[{"hash":"1004ea0c58f4ece776e9e79e4234c7387e6d4489","isMergeCommit":false,"messageTitle":"Chatbot initial skeleton","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"97272f714aa57f7e108524c39f575de588fd9fee","isMergeCommit":false,"messageTitle":"chatbot echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":4}}},{"hash":"62d71382dc65544338afde5a448e8938c10ccfba","isMergeCommit":false,"messageTitle":"chatbot storage and listing function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":2}}},{"hash":"3f753ca68e7017765f25592e2f982f2bd564ab5d","isMergeCommit":false,"messageTitle":"chatbot marks tasks as done/undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":11}}},{"hash":"11bbcce1680aa85cb08dfcd1a8e3ea686cc85689","isMergeCommit":false,"messageTitle":"support for todo, event \u0026 deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":23}}}]},{"date":"2023-08-21","commitResults":[{"hash":"395a8876bd71d90e76afea9475527b72c78f0ce0","isMergeCommit":false,"messageTitle":"added coloring for task type","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":12}}},{"hash":"e91017b68b510c7fdd169ee07638fee89a8e458f","isMergeCommit":false,"messageTitle":"add testing for level 0-4","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"4e7d04b5080b3f504467564d37fa8b30c2404406","isMergeCommit":false,"messageTitle":"error handling for invalid command and argument for mark/unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":7}}},{"hash":"e6c139badc6c0b47bd7d17294329662bd15748a7","isMergeCommit":false,"messageTitle":"add error handling for invalid task creation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":114,"deletions":33}}},{"hash":"77e6be3d8175d7bdd582d4e8e05baf865cbef896","isMergeCommit":false,"messageTitle":"expanded scope of testing to include errors","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0}}},{"hash":"a6f24523824e7c640c29fc4391269798ac1f734b","isMergeCommit":false,"messageTitle":"add test to mark deadline and event","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}},{"hash":"57f920ee34ae8f46afd52e0ca2d6220a4eddab3b","isMergeCommit":false,"messageTitle":"Replace task array with arrayList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":14}}},{"hash":"6723175540fd4aac069f05c214887ae711f1bd68","isMergeCommit":false,"messageTitle":"Add delete task function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":45,"deletions":5}}}]},{"date":"2023-08-28","commitResults":[{"hash":"82b1f28eeae7bbfa37ec28a1c71f4be02b30fe62","isMergeCommit":false,"messageTitle":"Add string representation for each task when saved to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":3}}}]},{"date":"2023-08-29","commitResults":[{"hash":"97f982e6c10ab5f1037957102ec0fd06739ac3a0","isMergeCommit":false,"messageTitle":"Add save tasks feature","messageBody":"Chatbot now writes the list of tasks to a file when a new task is added, deleted or marked/unmarked.\n\nChatbot also reads from the file when starting and loads the tasks list.\n\nEXPECTED.txt is updated to handle the new changes.\n","fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":36}}},{"hash":"c4ec87d977c3981e66e1d0443adcbecb4977fd40","isMergeCommit":false,"messageTitle":"Handle erroneous file format","messageBody":"Checks the length of the parsed result for each line of the file read.\n\nIf the format is not correct, the line is skipped and a task will not be created.\n","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"9bc4f2861c3df0988a2c15d9ca515b86f7b80a2d","isMergeCommit":false,"messageTitle":"Change chatbot parser","messageBody":"Deadline and event now explicitly splits by their respective delimiters (/from, /to, /by)\n\nChange EXPECTED.txt to reflect this change\n","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":26}}},{"hash":"fd881e58c4df13ecc1383e75fb99b4bf3881b52c","isMergeCommit":false,"messageTitle":"Create a DateParser class","messageBody":"Create a date parser class to handle parsing dates given by the user and the date stored in the file\n\nDateParser also handles displaying the date and converting the date to a string that can be stored on file\n","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":8}}},{"hash":"c55784b0d37afbaa71eb741aa4020b3b715ab2c7","isMergeCommit":false,"messageTitle":"Update testing for date time","messageBody":"Updated the Event class and its relevant methods to use LocalDateTime.\n\nUpdate EXPECTED.TXT to reflect the new changes in using datetime.\n","fileTypesAndContributionMap":{"txt":{"insertions":23,"deletions":7},"java":{"insertions":31,"deletions":17}}},{"hash":"63c693179f7ff1896e9d1f9db5da309ebafc9397","isMergeCommit":false,"messageTitle":"Update invalid date message","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":3}}},{"hash":"7b675555066fdc31efc270377181408cfb945632","isMergeCommit":false,"messageTitle":"Create Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":94}}}]},{"date":"2023-08-31","commitResults":[{"hash":"62381d7d0118ac71027051190a1a765db5d8cea1","isMergeCommit":false,"messageTitle":"Abstract Parser, TaskList, *Command, Ui","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":526,"deletions":374},"bat":{"insertions":1,"deletions":0}}},{"hash":"1cd986d39167380eeff527add923f420aeb0c3de","isMergeCommit":false,"messageTitle":"Separate files into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":3},"bat":{"insertions":8,"deletions":4}}},{"hash":"2fac0abc23b246a723cb71dc884a1d604986971b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b48974c927d56d36eb96be316db9ce0372ef35d3","isMergeCommit":false,"messageTitle":"Add gradle checkstyle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1}}},{"hash":"8435509fbc4121b9229f7f17ab085029b8d0f61e","isMergeCommit":false,"messageTitle":"Add skeleton for gradle test","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"4655853ad6015f9f1c92e8be53f0d2bb2c928794","isMergeCommit":false,"messageTitle":"JUnit test for Parser, Ui, TaskList","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":411,"deletions":23}}}]}]},"authorFileTypeContributionMap":{"McNaBry":{"java":1352,"md":0,"fxml":0,"sh":0,"bat":8,"gradle":7,"txt":47}},"authorContributionVariance":{"McNaBry":162362.1},"authorDisplayNameMap":{"McNaBry":"CS2103T-W08-3 BRYA.. YAN"}} +{"authorDailyContributionsMap":{"McNaBry":[{"date":"2023-08-20","commitResults":[{"hash":"1004ea0c58f4ece776e9e79e4234c7387e6d4489","isMergeCommit":false,"messageTitle":"Chatbot initial skeleton","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"97272f714aa57f7e108524c39f575de588fd9fee","isMergeCommit":false,"messageTitle":"chatbot echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":4}}},{"hash":"62d71382dc65544338afde5a448e8938c10ccfba","isMergeCommit":false,"messageTitle":"chatbot storage and listing function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":2}}},{"hash":"3f753ca68e7017765f25592e2f982f2bd564ab5d","isMergeCommit":false,"messageTitle":"chatbot marks tasks as done/undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":11}}},{"hash":"11bbcce1680aa85cb08dfcd1a8e3ea686cc85689","isMergeCommit":false,"messageTitle":"support for todo, event \u0026 deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":23}}}]},{"date":"2023-08-21","commitResults":[{"hash":"395a8876bd71d90e76afea9475527b72c78f0ce0","isMergeCommit":false,"messageTitle":"added coloring for task type","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":12}}},{"hash":"e91017b68b510c7fdd169ee07638fee89a8e458f","isMergeCommit":false,"messageTitle":"add testing for level 0-4","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"4e7d04b5080b3f504467564d37fa8b30c2404406","isMergeCommit":false,"messageTitle":"error handling for invalid command and argument for mark/unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":7}}},{"hash":"e6c139badc6c0b47bd7d17294329662bd15748a7","isMergeCommit":false,"messageTitle":"add error handling for invalid task creation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":114,"deletions":33}}},{"hash":"77e6be3d8175d7bdd582d4e8e05baf865cbef896","isMergeCommit":false,"messageTitle":"expanded scope of testing to include errors","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0}}},{"hash":"a6f24523824e7c640c29fc4391269798ac1f734b","isMergeCommit":false,"messageTitle":"add test to mark deadline and event","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}},{"hash":"57f920ee34ae8f46afd52e0ca2d6220a4eddab3b","isMergeCommit":false,"messageTitle":"Replace task array with arrayList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":14}}},{"hash":"6723175540fd4aac069f05c214887ae711f1bd68","isMergeCommit":false,"messageTitle":"Add delete task function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":45,"deletions":5}}}]},{"date":"2023-08-28","commitResults":[{"hash":"82b1f28eeae7bbfa37ec28a1c71f4be02b30fe62","isMergeCommit":false,"messageTitle":"Add string representation for each task when saved to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":3}}}]},{"date":"2023-08-29","commitResults":[{"hash":"97f982e6c10ab5f1037957102ec0fd06739ac3a0","isMergeCommit":false,"messageTitle":"Add save tasks feature","messageBody":"Chatbot now writes the list of tasks to a file when a new task is added, deleted or marked/unmarked.\n\nChatbot also reads from the file when starting and loads the tasks list.\n\nEXPECTED.txt is updated to handle the new changes.\n","fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":36}}},{"hash":"c4ec87d977c3981e66e1d0443adcbecb4977fd40","isMergeCommit":false,"messageTitle":"Handle erroneous file format","messageBody":"Checks the length of the parsed result for each line of the file read.\n\nIf the format is not correct, the line is skipped and a task will not be created.\n","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"9bc4f2861c3df0988a2c15d9ca515b86f7b80a2d","isMergeCommit":false,"messageTitle":"Change chatbot parser","messageBody":"Deadline and event now explicitly splits by their respective delimiters (/from, /to, /by)\n\nChange EXPECTED.txt to reflect this change\n","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":26}}},{"hash":"fd881e58c4df13ecc1383e75fb99b4bf3881b52c","isMergeCommit":false,"messageTitle":"Create a DateParser class","messageBody":"Create a date parser class to handle parsing dates given by the user and the date stored in the file\n\nDateParser also handles displaying the date and converting the date to a string that can be stored on file\n","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":8}}},{"hash":"c55784b0d37afbaa71eb741aa4020b3b715ab2c7","isMergeCommit":false,"messageTitle":"Update testing for date time","messageBody":"Updated the Event class and its relevant methods to use LocalDateTime.\n\nUpdate EXPECTED.TXT to reflect the new changes in using datetime.\n","fileTypesAndContributionMap":{"txt":{"insertions":23,"deletions":7},"java":{"insertions":31,"deletions":17}}},{"hash":"63c693179f7ff1896e9d1f9db5da309ebafc9397","isMergeCommit":false,"messageTitle":"Update invalid date message","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":3}}},{"hash":"7b675555066fdc31efc270377181408cfb945632","isMergeCommit":false,"messageTitle":"Create Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":94}}}]},{"date":"2023-08-31","commitResults":[{"hash":"62381d7d0118ac71027051190a1a765db5d8cea1","isMergeCommit":false,"messageTitle":"Abstract Parser, TaskList, *Command, Ui","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":526,"deletions":374},"bat":{"insertions":1,"deletions":0}}},{"hash":"1cd986d39167380eeff527add923f420aeb0c3de","isMergeCommit":false,"messageTitle":"Separate files into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":3},"bat":{"insertions":8,"deletions":4}}},{"hash":"2fac0abc23b246a723cb71dc884a1d604986971b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b48974c927d56d36eb96be316db9ce0372ef35d3","isMergeCommit":false,"messageTitle":"Add gradle checkstyle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1}}},{"hash":"8435509fbc4121b9229f7f17ab085029b8d0f61e","isMergeCommit":false,"messageTitle":"Add skeleton for gradle test","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"4655853ad6015f9f1c92e8be53f0d2bb2c928794","isMergeCommit":false,"messageTitle":"JUnit test for Parser, Ui, TaskList","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":411,"deletions":23}}}]},{"date":"2023-09-01","commitResults":[{"hash":"d08f248a7034d84c23b523fdf1c263fca9f159c7","isMergeCommit":false,"messageTitle":"Update error messages","messageBody":"Update invalid date error messages for event and deadline.\n\nTrim and strip multiline error message in DukeException to standardize error printing\n\nUpdated EXPECTED.TXT to reflect these changes.\n","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":12}}}]}]},"authorFileTypeContributionMap":{"McNaBry":{"java":1363,"md":0,"fxml":0,"sh":0,"bat":8,"gradle":7,"txt":47}},"authorContributionVariance":{"McNaBry":153286.66},"authorDisplayNameMap":{"McNaBry":"CS2103T-W08-3 BRYA.. YAN"}} diff --git a/NereusWB922_ip_master/authorship.json b/NereusWB922_ip_master/authorship.json index d6f7a2de..760a2cc6 100644 --- a/NereusWB922_ip_master/authorship.json +++ b/NereusWB922_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Corgi.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import tasks.TaskStatusException;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import tasks.ToDo;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import tasks.Event;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import commands.CommandType;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import commands.EmptyDescException;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import commands.InvalidCommandException;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import commands.InvalidDescFormatException;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import parsers.TaskParser;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"public class Corgi {","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" private Storage\u003cTask\u003e storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" Corgi bot \u003d new Corgi();","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" bot.start();","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * Constructs new Corgi chatbot with an empty task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public Corgi() {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" this.storage \u003d new Storage\u003c\u003e(new TaskParser(), \"./data/tasks.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" this.tasks \u003d storage.load();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" if (tasks.size() \u003e 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Successfully loaded \" + tasks.size() + \" tasks!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" * Starts the chatbot - Corgi.","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public void start() {","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" String logo \u003d \" ____ ___ ____ ____ ___\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" + \" / ___/ _ \\\\| _ \\\\ / ___|_ _|\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" + \"| | | | | | |_) | | _ | |\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" + \"| |__| |_| | _ \u003c| |_| || |\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" + \" \\\\____\\\\___/|_| \\\\_\\\\\\\\____|___|\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Woof! I\u0027m Corgi!\");","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"So, what\u0027s your wish this time, hooman?\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" while(true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" String userInput \u003d sc.nextLine().trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" if (userInput.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"---------------------------------------------------------------------\");","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" String[] inputParts \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" String cmdStr \u003d inputParts[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" CommandType cmd \u003d null;","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" cmd \u003d CommandType.getCommandType(cmdStr);","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" this.printException(\"Can\u0027t believe you\u0027re asking that! Grrr, what do you want now?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" boolean breakLoop \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" if (cmd !\u003d null) {","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" breakLoop \u003d this.executeCommand(cmd, inputParts);","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"---------------------------------------------------------------------\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" if (breakLoop) break;","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" sc.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" * Executes a command based on the provided CommandType and input arguments.","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" * @param cmd The CommandType representing the command to execute","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" * @param inputs The array of input arguments for the command","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" * @return True if the command execution should exit the chatbot, false otherwise","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" private boolean executeCommand(CommandType cmd, String[] inputs) {","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" switch (cmd) {","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" case BYE:","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003e 1) throw new InvalidCommandException();","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Fine! Whatever! Just go away then! See if I care! huffs\");","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" return true;","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" case LIST:","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003e 1) throw new InvalidCommandException();","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" this.displayTasks();","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" case MARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003c 2) throw new EmptyDescException();","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" this.markTaskAsDone(inputs[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" case UNMARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003c 2) throw new EmptyDescException();","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" this.markTaskAsNotDone(inputs[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" case TODO:","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003c 2) throw new EmptyDescException();","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" this.addToDo(inputs[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003c 2) throw new EmptyDescException();","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" this.addDeadline(inputs[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" case EVENT:","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003c 2) throw new EmptyDescException();","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" this.addEvent(inputs[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" case DELETE:","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003c 2) throw new EmptyDescException();","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" this.deleteTask(inputs[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" case DATE:","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003c 2) throw new EmptyDescException();","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" this.getTaskOnDate(inputs[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" this.printException(\"Can\u0027t believe you\u0027re asking that! Grrr, what do you want now?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" } catch (EmptyDescException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" this.printException(\"Seriously? You want me to do something with an empty description?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidDescFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" this.printException(\"Are you trying to confuse me with this nonsense? Try again hooman!\" + \"\\n\" ","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" + \"Format: \u003c \" + cmd.getCommandFormat() + \" \u003e\");","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" this.printException(\"Oh wonderful, you\u0027ve broken something. And guess what? I have absolutely no idea what happened either.\"","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" + \"\\n\\n❗An error of type \" + e.getClass().getSimpleName() + \" occurred: \" + e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" * Prints an corgi-themed error message.","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" * @param msg The error message to display.","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" private void printException(String msg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Woof?! 🤬 \\n\" + msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" private void getTaskOnDate(String dateStr) throws InvalidDescFormatException {","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" LocalDate target \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":" target \u003d LocalDate.parse(dateStr, Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidDescFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":" List\u003cTask\u003e tasksOnDate \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":" for (Task t : this.tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" if (t instanceof Deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"NereusWB922"},"content":" Deadline d \u003d (Deadline) t;","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":" if (d.isHappeningOnDate(target)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" tasksOnDate.add(d);","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" } else if (t instanceof Event) {","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" Event e \u003d (Event) t;","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":" if (e.isHappeningOnDate(target)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":" tasksOnDate.add(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":" if (tasksOnDate.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"No tasks or events are scheduled for \" + target.format(Task.DATE_OUTPUT_FORMATTER) + \".\");","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Here are the tasks and events happening on \" + target.format(Task.DATE_OUTPUT_FORMATTER) + \":\");","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c tasksOnDate.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":" System.out.println((i + 1) + \") \" + tasksOnDate.get(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":200,"author":{"gitId":"NereusWB922"},"content":" * Mark task as done.","lastModifiedDate":"2023-08-22"},{"lineNumber":201,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-08-22"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":" * @param indexStr Target task index.","lastModifiedDate":"2023-08-22"},{"lineNumber":203,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":204,"author":{"gitId":"NereusWB922"},"content":" private void markTaskAsDone(String indexStr) {","lastModifiedDate":"2023-08-22"},{"lineNumber":205,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":206,"author":{"gitId":"NereusWB922"},"content":" int index \u003d Integer.parseInt(indexStr) - 1;","lastModifiedDate":"2023-08-22"},{"lineNumber":207,"author":{"gitId":"NereusWB922"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c this.tasks.size()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":208,"author":{"gitId":"NereusWB922"},"content":" Task target \u003d tasks.get(index);","lastModifiedDate":"2023-08-22"},{"lineNumber":209,"author":{"gitId":"NereusWB922"},"content":" target.markAsDone();","lastModifiedDate":"2023-08-22"},{"lineNumber":210,"author":{"gitId":"NereusWB922"},"content":" this.storage.save(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Congratulations, I guess! You finally managed to do something right 🎉:\\n\" + \"\\n \" + target + \"\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":212,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":213,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Arf! Invalid task number? Seriously, can\u0027t you count? 💢\");","lastModifiedDate":"2023-08-23"},{"lineNumber":214,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":215,"author":{"gitId":"NereusWB922"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":216,"author":{"gitId":"NereusWB922"},"content":" this.printException(\"Arf! You\u0027re trying to trick me with words instead of numbers?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":217,"author":{"gitId":"NereusWB922"},"content":" } catch (TaskStatusException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":218,"author":{"gitId":"NereusWB922"},"content":" this.printException(\"This task is already marked as done. What are you trying to do? 🤔\");","lastModifiedDate":"2023-08-23"},{"lineNumber":219,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":220,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":221,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":222,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":223,"author":{"gitId":"NereusWB922"},"content":" * Mark task as not done.","lastModifiedDate":"2023-08-22"},{"lineNumber":224,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-08-22"},{"lineNumber":225,"author":{"gitId":"NereusWB922"},"content":" * @param indexStr Target task index.","lastModifiedDate":"2023-08-22"},{"lineNumber":226,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":227,"author":{"gitId":"NereusWB922"},"content":" private void markTaskAsNotDone(String indexStr) {","lastModifiedDate":"2023-08-22"},{"lineNumber":228,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":229,"author":{"gitId":"NereusWB922"},"content":" int index \u003d Integer.parseInt(indexStr) - 1;","lastModifiedDate":"2023-08-22"},{"lineNumber":230,"author":{"gitId":"NereusWB922"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c this.tasks.size()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":231,"author":{"gitId":"NereusWB922"},"content":" Task target \u003d tasks.get(index);","lastModifiedDate":"2023-08-22"},{"lineNumber":232,"author":{"gitId":"NereusWB922"},"content":" target.markAsNotDone();","lastModifiedDate":"2023-08-22"},{"lineNumber":233,"author":{"gitId":"NereusWB922"},"content":" this.storage.save(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":234,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Oh great, you\u0027ve undone something 🐕. Just like always:\\n\" + \"\\n \" + target + \"\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":235,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":236,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Arf! Invalid task number? Seriously, can\u0027t you count? 💢\");","lastModifiedDate":"2023-08-23"},{"lineNumber":237,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":238,"author":{"gitId":"NereusWB922"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":239,"author":{"gitId":"NereusWB922"},"content":" this.printException(\"Arf! You\u0027re trying to trick me with words instead of numbers?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":240,"author":{"gitId":"NereusWB922"},"content":" } catch (TaskStatusException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":241,"author":{"gitId":"NereusWB922"},"content":" this.printException(\"This task isn\u0027t even marked as done yet. What are you trying to do? 🤔\");","lastModifiedDate":"2023-08-23"},{"lineNumber":242,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":243,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":244,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":245,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":246,"author":{"gitId":"NereusWB922"},"content":" * Display the list of tasks.","lastModifiedDate":"2023-08-22"},{"lineNumber":247,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":248,"author":{"gitId":"NereusWB922"},"content":" private void displayTasks() {","lastModifiedDate":"2023-08-22"},{"lineNumber":249,"author":{"gitId":"NereusWB922"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":250,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"If you haven\u0027t noticed, there\u0027s nothing here! No tasks to be found.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":251,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":252,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-22"},{"lineNumber":253,"author":{"gitId":"NereusWB922"},"content":" System.out.println((i+1) + \") \" + tasks.get(i));","lastModifiedDate":"2023-08-22"},{"lineNumber":254,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":255,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":256,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":257,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":258,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":259,"author":{"gitId":"NereusWB922"},"content":" * Remove task from list.","lastModifiedDate":"2023-08-23"},{"lineNumber":260,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-08-23"},{"lineNumber":261,"author":{"gitId":"NereusWB922"},"content":" * @param indexStr Target task index.","lastModifiedDate":"2023-08-23"},{"lineNumber":262,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":263,"author":{"gitId":"NereusWB922"},"content":" private void deleteTask(String indexStr) {","lastModifiedDate":"2023-08-23"},{"lineNumber":264,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":265,"author":{"gitId":"NereusWB922"},"content":" int index \u003d Integer.parseInt(indexStr) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":266,"author":{"gitId":"NereusWB922"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c this.tasks.size()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":267,"author":{"gitId":"NereusWB922"},"content":" Task target \u003d this.tasks.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":268,"author":{"gitId":"NereusWB922"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":269,"author":{"gitId":"NereusWB922"},"content":" this.storage.save(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":270,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Finally got rid of that task. Took you long enough... uninterested woof\\n\" ","lastModifiedDate":"2023-08-23"},{"lineNumber":271,"author":{"gitId":"NereusWB922"},"content":" + \"\\n \" + target + \"\\n\\nNow you have \" + this.tasks.size() + \" tasks in the list.🐾\");","lastModifiedDate":"2023-08-23"},{"lineNumber":272,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":273,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Arf! Invalid task number? Seriously, can\u0027t you count? 💢\");","lastModifiedDate":"2023-08-23"},{"lineNumber":274,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":275,"author":{"gitId":"NereusWB922"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":276,"author":{"gitId":"NereusWB922"},"content":" this.printException(\"Arf! You\u0027re trying to trick me with words instead of numbers?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":277,"author":{"gitId":"NereusWB922"},"content":" } ","lastModifiedDate":"2023-08-23"},{"lineNumber":278,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":279,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":280,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":281,"author":{"gitId":"NereusWB922"},"content":" * Add a new ToDo to the list of tasks based on the provided task type.","lastModifiedDate":"2023-08-23"},{"lineNumber":282,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":283,"author":{"gitId":"NereusWB922"},"content":" * @param taskInfo Information about the todo","lastModifiedDate":"2023-08-23"},{"lineNumber":284,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":285,"author":{"gitId":"NereusWB922"},"content":" private void addToDo(String taskInfo) {","lastModifiedDate":"2023-08-23"},{"lineNumber":286,"author":{"gitId":"NereusWB922"},"content":" Task newTask \u003d new ToDo(taskInfo);","lastModifiedDate":"2023-08-23"},{"lineNumber":287,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":288,"author":{"gitId":"NereusWB922"},"content":" this.tasks.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":289,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":290,"author":{"gitId":"NereusWB922"},"content":" this.storage.save(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":291,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":292,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Woof, whatever. I\u0027ve added this ToDo:\\n\" + ","lastModifiedDate":"2023-08-23"},{"lineNumber":293,"author":{"gitId":"NereusWB922"},"content":" \"\\n \" + newTask + \"\\n\\nNow you have \" + this.tasks.size() + \" tasks in the list.🐾\");","lastModifiedDate":"2023-08-23"},{"lineNumber":294,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":295,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":296,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":297,"author":{"gitId":"NereusWB922"},"content":" * Add a new Deadline to the list of tasks based on the provided task type.","lastModifiedDate":"2023-08-23"},{"lineNumber":298,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":299,"author":{"gitId":"NereusWB922"},"content":" * @param taskInfo Information about the deadline, including description and date/time details","lastModifiedDate":"2023-08-23"},{"lineNumber":300,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":301,"author":{"gitId":"NereusWB922"},"content":" private void addDeadline(String taskInfo) throws InvalidDescFormatException{","lastModifiedDate":"2023-08-23"},{"lineNumber":302,"author":{"gitId":"NereusWB922"},"content":" String[] deadlineInfos \u003d taskInfo.split(\" /by \");","lastModifiedDate":"2023-08-23"},{"lineNumber":303,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":304,"author":{"gitId":"NereusWB922"},"content":" if (deadlineInfos.length \u003c 2) throw new InvalidDescFormatException();","lastModifiedDate":"2023-08-23"},{"lineNumber":305,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":306,"author":{"gitId":"NereusWB922"},"content":" String deadlineDesc \u003d deadlineInfos[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":307,"author":{"gitId":"NereusWB922"},"content":" LocalDate by \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":308,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":309,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":310,"author":{"gitId":"NereusWB922"},"content":" by \u003d LocalDate.parse(deadlineInfos[1], Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-08-31"},{"lineNumber":311,"author":{"gitId":"NereusWB922"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":312,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidDescFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":313,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":314,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":315,"author":{"gitId":"NereusWB922"},"content":" Task newTask \u003d new Deadline(deadlineDesc, by);","lastModifiedDate":"2023-08-23"},{"lineNumber":316,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":317,"author":{"gitId":"NereusWB922"},"content":" this.tasks.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":318,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":319,"author":{"gitId":"NereusWB922"},"content":" this.storage.save(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":320,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":321,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Woof, whatever. I\u0027ve added this deadline:\\n\" + ","lastModifiedDate":"2023-08-23"},{"lineNumber":322,"author":{"gitId":"NereusWB922"},"content":" \"\\n \" + newTask + \"\\n\\nNow you have \" + this.tasks.size() + \" tasks in the list.🐾\");","lastModifiedDate":"2023-08-23"},{"lineNumber":323,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":324,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":325,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":326,"author":{"gitId":"NereusWB922"},"content":" * Add a new Event to the list of tasks based on the provided task type.","lastModifiedDate":"2023-08-23"},{"lineNumber":327,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":328,"author":{"gitId":"NereusWB922"},"content":" * @param taskInfo Information about the event, including description and date/time details","lastModifiedDate":"2023-08-23"},{"lineNumber":329,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":330,"author":{"gitId":"NereusWB922"},"content":" private void addEvent(String taskInfo) throws InvalidDescFormatException{","lastModifiedDate":"2023-08-23"},{"lineNumber":331,"author":{"gitId":"NereusWB922"},"content":" String[] eventInfos \u003d taskInfo.split(\" /from \");","lastModifiedDate":"2023-08-23"},{"lineNumber":332,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":333,"author":{"gitId":"NereusWB922"},"content":" if (eventInfos.length \u003c 2) throw new InvalidDescFormatException();","lastModifiedDate":"2023-08-23"},{"lineNumber":334,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":335,"author":{"gitId":"NereusWB922"},"content":" String eventDesc \u003d eventInfos[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":336,"author":{"gitId":"NereusWB922"},"content":" String[] eventDuration \u003d eventInfos[1].split(\" /to \");","lastModifiedDate":"2023-08-23"},{"lineNumber":337,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":338,"author":{"gitId":"NereusWB922"},"content":" if (eventDuration.length \u003c 2) throw new InvalidDescFormatException();","lastModifiedDate":"2023-08-23"},{"lineNumber":339,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":340,"author":{"gitId":"NereusWB922"},"content":" LocalDate from \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":341,"author":{"gitId":"NereusWB922"},"content":" LocalDate to \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":342,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":343,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":344,"author":{"gitId":"NereusWB922"},"content":" from \u003d LocalDate.parse(eventDuration[0], Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-08-31"},{"lineNumber":345,"author":{"gitId":"NereusWB922"},"content":" to \u003d LocalDate.parse(eventDuration[1], Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-08-31"},{"lineNumber":346,"author":{"gitId":"NereusWB922"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":347,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidDescFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":348,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":349,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":350,"author":{"gitId":"NereusWB922"},"content":" Task newTask \u003d new Event(eventDesc, from, to);","lastModifiedDate":"2023-08-23"},{"lineNumber":351,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":352,"author":{"gitId":"NereusWB922"},"content":" this.tasks.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":353,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":354,"author":{"gitId":"NereusWB922"},"content":" this.storage.save(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":355,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":356,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Woof, whatever. I\u0027ve added this event:\\n\" + ","lastModifiedDate":"2023-08-23"},{"lineNumber":357,"author":{"gitId":"NereusWB922"},"content":" \"\\n \" + newTask + \"\\n\\nNow you have \" + this.tasks.size() + \" tasks in the list.🐾\");","lastModifiedDate":"2023-08-23"},{"lineNumber":358,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":359,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":359}},{"path":"src/main/java/commands/CommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package commands;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Parent exception class for chatbot command.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class CommandException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new CommandException using provided error message.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param msg Error message provided","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public CommandException(String msg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/commands/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package commands;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Types of commands that can be given to the Corgi chat bot.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public enum CommandType {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" MARK(\"mark [task no.]\"), ","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" UNMARK(\"unmark [task no.]\"), ","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" TODO(\"todo [task]\"), ","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" DEADLINE(\"deadline [task] /by [yyyy-mm-dd]\"), ","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" EVENT(\"event [task] /from [yyyy-mm-dd] /to [yyyy-mm-dd]\"), ","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" BYE(\"bye\"), ","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" DELETE(\"delete [task no.]\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" DATE(\"date [yyyy-mm-dd]\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private final String commandFormat;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new CommandType with the given command format.","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * @param commandFormat The command format","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" CommandType(String commandFormat) {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" this.commandFormat \u003d commandFormat;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Retrieves the corresponding CommandType enum value based on the given command string.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * @param commandStr The command string to match","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * @return The matching CommandType enum value","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidCommandException if the command string is not recognized","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public static CommandType getCommandType(String commandStr) throws InvalidCommandException{","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" switch (commandStr.toLowerCase()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" case \"mark\":","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" return MARK;","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" return UNMARK;","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" case \"todo\":","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" return TODO;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" return DEADLINE;","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" case \"event\":","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" return EVENT;","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" case \"bye\":","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" return BYE;","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" case \"list\":","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" return LIST;","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" case \"delete\":","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" return DELETE;","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" case \"date\":","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" return DATE;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" * Retrieves the command format string for this CommandType.","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" * @return The command format string","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" public String getCommandFormat() {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" return this.commandFormat;","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":69}},{"path":"src/main/java/commands/EmptyDescException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package commands;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Exception thrown when an command description is not provided.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class EmptyDescException extends CommandException{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new EmptyDescException with a default error message.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" public EmptyDescException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" super(\"No description is provided for the command!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":14}},{"path":"src/main/java/commands/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package commands;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Exception thrown when an invalid command is provided.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidCommandException extends CommandException{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new InvalidCommandException with a default error message.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" super(\"Invalid command is provided!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":14}},{"path":"src/main/java/commands/InvalidDescFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package commands;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Exception thrown when format of the command description is invalid.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidDescFormatException extends CommandException{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new InvalidDescFormatException with a default error message.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" public InvalidDescFormatException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" super(\"The format of the command description if invalid!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":14}},{"path":"src/main/java/parsers/InvalidParsingFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package parsers;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Custom exception class for parsing errors related to invalid formats.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidParsingFormatException extends ParsingException{","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new InvalidParsingFormatException with the specified error message.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param msg The error message describing the invalid parsing format error.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public InvalidParsingFormatException(String msg) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/parsers/InvalidParsingTypeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package parsers;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Custom exception class for parsing errors related to invalid types.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidParsingTypeException extends ParsingException{","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new InvalidParsingTypeException with the specified error message.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param msg The error message describing the invalid parsing type error.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public InvalidParsingTypeException(String msg) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/parsers/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package parsers;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * The Parser abstract class defines a common interface for parsing strings","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" * and converting them into objects of a specified type.","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" * @param \u003cT\u003e The type of object that the parser can parse strings into.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"public abstract class Parser\u003cT\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * Parses the given string and converts it into an object of type T.","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * @param s The string to be parsed.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * @return An object of type T parsed from the input string.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public abstract T parse(String s);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":17}},{"path":"src/main/java/parsers/ParsingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package parsers;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Custom exception class to handle parsing errors.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class ParsingException extends RuntimeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new ParsingException with the specified error message.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param message The error message describing the parsing error.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public ParsingException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" } ","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/parsers/TaskParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package parsers;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import tasks.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * The TaskParser class extends the abstract Parser class and provides","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * the implementation to parse string representations of tasks and","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * convert them into Task objects.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public class TaskParser extends Parser\u003cTask\u003e{","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * The separator used to split task infos in the input string.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public static final String SEPARATOR \u003d \" | \";","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * Parses the given string representation of a task and converts it into a Task object.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * @param s The string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @return A Task object representing the parsed task.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public Task parse(String s) throws ParsingException {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" String[] infos \u003d s.split(Pattern.quote(SEPARATOR));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" if (infos.length \u003c 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Invalid task format!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" String taskType \u003d infos[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" String statusStr \u003d infos[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" String desc \u003d infos[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" boolean status \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" if (statusStr.equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" status \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" } else if (statusStr.equals(\"0\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" status \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Task status should be 0 or 1!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" switch(taskType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" if (infos.length !\u003d 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Wrong format for ToDo task!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" task \u003d new ToDo(status, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" if (infos.length !\u003d 4) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Wrong format for Deadline task!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" LocalDate by \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" by \u003d LocalDate.parse(infos[3], Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Wrong format for date!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" task \u003d new Deadline(status, desc, by);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" if (infos.length !\u003d 5) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Wrong format for Event task!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" LocalDate from \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" LocalDate to \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" from \u003d LocalDate.parse(infos[3], Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" to \u003d LocalDate.parse(infos[4], Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Wrong format for date!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" task \u003d new Event(status, desc, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingTypeException(\"Invalid task type!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":98}},{"path":"src/main/java/storage/Storable.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * The Storable interface defines methods for converting objects to storable strings","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" * and parsing storable strings to objects.","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" * @param \u003cT\u003e The type of object that the storable string can be parsed into.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"public interface Storable\u003cT\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * Converts the object to a storable string representation.","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * @return The storable string representation of the object.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" public String toStorableString();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":16}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import parsers.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import parsers.ParsingException;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * A class for storing and loading objects.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * @param \u003cT\u003e The type of object being stored and loaded.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"public class Storage\u003cT extends Storable\u003cT\u003e\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" private Parser\u003cT\u003e parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * Constructs a Storage instance with the given parser and file path.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @param parser The parser for converting objects to storable strings.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @param filePath The file path where data will be stored or loaded.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public Storage(Parser\u003cT\u003e parser, String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" this.parser \u003d parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" // Check whether dir exists, create one if not","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" File dir \u003d new File(filePath).getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" boolean success \u003d dir.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" if (!success) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" System.err.println(\"An error occurred when creating directory: \" + dir.getAbsolutePath());","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" // Check whether file exists, create one if not","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" boolean success \u003d file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" if (!success) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" System.err.println(\"An error occurred when creating file: \" + file.getAbsolutePath());","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"No previous data file found. Created a new data file at: \" ","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" + file.getAbsolutePath());","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" System.err.println(\"An error occurred when creating file: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" public void save(List\u003cT\u003e items) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(this.filePath))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" for (Storable\u003cT\u003e item : items) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" writer.write(item.toStorableString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" System.err.println(\"An error occurred when saving data: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" public List\u003cT\u003e load() {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" List\u003cT\u003e items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" int skipped \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(this.filePath))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" T item \u003d parser.parse(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" if (item !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" items.add(item);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" } catch (ParsingException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" skipped +\u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" System.err.println(\"A parsing error occurred when loading data: \" + e.getMessage() + ","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" \"\\nCorrupted data: \" + line + \" (Skipped)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" System.err.println(\"An error occurred when loading data: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" if (skipped \u003e 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Skipped \" + skipped + \" lines with corrupted data.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" return items;","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":99}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import parsers.TaskParser;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Deadline task, a type of task that need to be done before a specific date/time.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" private LocalDate by;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new deadline task with the given description and deadline. ","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * @param desc The description of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * @param by The deadline of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public Deadline(String desc, LocalDate by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" super(false, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public Deadline(boolean status, String desc, LocalDate by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" super(status, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public boolean isHappeningOnDate(LocalDate targetDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" return this.by.isEqual(targetDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public String toStorableString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" String[] infos \u003d {\"D\", this.status ? \"1\" : \"0\", this.desc, this.by.format(Task.DATE_INPUT_FORMATTER)};","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" return String.join(TaskParser.SEPARATOR, infos);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of the deadline task.","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * @return Task type, status icon, description and deadline of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(Task.DATE_OUTPUT_FORMATTER) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"NereusWB922":49}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package tasks;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import parsers.TaskParser;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Event task, a type of task that start at a specific date/time and ends at a specific date/time.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" private LocalDate from;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" private LocalDate to;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new event with the given description and duration. ","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * @param desc The description of the event","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * @param from The start date/time of the event","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @param to The end date/time of the event","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public Event(String desc, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" super(false, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public Event(boolean status, String desc, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" super(status, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public boolean isHappeningOnDate(LocalDate targetDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" return targetDate.isEqual(this.from) || targetDate.isEqual(this.to) ","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" || (targetDate.isAfter(this.from) \u0026\u0026 targetDate.isBefore(this.to));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public String toStorableString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" String[] infos \u003d {\"E\", this.status ? \"1\" : \"0\", this.desc, ","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" this.from.format(Task.DATE_INPUT_FORMATTER), this.to.format(Task.DATE_INPUT_FORMATTER)};","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" return String.join(TaskParser.SEPARATOR, infos);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" * @return Task type, status icon, description, start date/time and end date/time of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" public String toString(){","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(DATE_OUTPUT_FORMATTER) ","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" + \" to: \" + this.to.format(DATE_OUTPUT_FORMATTER) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":56}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import storage.Storable;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" * Task class storing description and status.","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"public abstract class Task implements Storable\u003cTask\u003e{","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" protected String desc;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" protected boolean status;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public static final DateTimeFormatter DATE_INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public static final DateTimeFormatter DATE_OUTPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new task with its description. The task\u0027s initial status is set to not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * @param status The status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @param desc The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public Task(boolean status, String desc) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" this.status \u003d status;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Mark task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public void markAsDone() throws TaskStatusException{","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" if(this.status \u003d\u003d true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" throw new TaskStatusException(\"The task is already marked as done.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" this.status \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * Mark task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public void markAsNotDone() throws TaskStatusException{","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" if(this.status \u003d\u003d false) {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" throw new TaskStatusException(\"The task is already marked as not done.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Returns an icon representing the status of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" * @return An icon (\"X\" for done, \" \" for not done).","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" return (this.status ? \"X\" : \" \");","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" * @return Status icon and description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.desc;","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"NereusWB922":64}},{"path":"src/main/java/tasks/TaskStatusException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package tasks;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Task status-related exception","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class TaskStatusException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new TaskStatusException with the specified error message.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param msg The error message describing the specific task status error.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public TaskStatusException(String msg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import parsers.TaskParser;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" * Todo task, a type of task without any date/time attached to it.","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new todo task with the given description. The task\u0027s initial status is set to not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * @param desc The description of the todo task","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" public ToDo(String desc) {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" super(false, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public ToDo(boolean status, String desc) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" super(status, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" public String toStorableString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" String[] infos \u003d {\"T\", this.status ? \"1\" : \"0\", this.desc};","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" return String.join(TaskParser.SEPARATOR, infos);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of the todo task.","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * @return Task type, status icon and description of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"NereusWB922":38}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":11}},{"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":"NereusWB922"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java ../src/main/java/tasks/*.java ../src/main/java/commands/*.java","lastModifiedDate":"2023-08-23"},{"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":"NereusWB922"},"content":"java -classpath ../bin Corgi \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"NereusWB922":2,"-":36}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" mainClass.set(\"corgi.Corgi\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"NereusWB922":1,"-":41}},{"path":"src/main/java/corgi/Corgi.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.CommandExecutionException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import corgi.parsers.CommandParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import corgi.parsers.InvalidCommandFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import corgi.parsers.InvalidCommandTypeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import corgi.parsers.TaskParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import corgi.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import corgi.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"public class Corgi {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private Storage\u003cTask\u003e storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" Corgi bot \u003d new Corgi();","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" bot.start();","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * Constructs new Corgi chatbot with an empty task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" public Corgi() {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" this.storage \u003d new Storage\u003c\u003e(new TaskParser(), \"./data/tasks.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" this.tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" if (tasks.size() \u003e 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" this.ui.showTasksLoaded(tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" * Starts the chatbot - Corgi.","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public void start() {","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" this.ui.setScanner(sc);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" this.ui.showIntro();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" while(!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" String userInput \u003d this.ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" if (userInput.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" this.ui.showStartLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" Command cmd \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" cmd \u003d new CommandParser().parse(userInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" cmd.execute(this.tasks, this.ui, this.storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" isExit \u003d cmd.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidCommandFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" this.ui.showError(e.getClass().getSimpleName(), e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidCommandTypeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" // Todo: Print all valid commands","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" this.ui.showError(e.getClass().getSimpleName(), e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" } catch (CommandExecutionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" this.ui.showError(e.getClass().getSimpleName(), e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" this.ui.showEndLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" sc.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":78}},{"path":"src/main/java/corgi/commands/AddTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import corgi.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import corgi.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Represents a command to add a task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * This command adds a specified task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * The type of task (todo, deadline, or event) is determined by the command type.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"public class AddTaskCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private Task target;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * The type of task (todo, deadline, or event) being added.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" private String taskType;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new AddTaskCommand instance with the specified task and command type.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @param target The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @param type The type of command (CommandType.TODO, CommandType.DEADLINE, or CommandType.EVENT).","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public AddTaskCommand(Task target, CommandType type) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" super(false, type);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" this.target \u003d target;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" if (type \u003d\u003d CommandType.TODO) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" this.taskType \u003d \"todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" } else if (type \u003d\u003d CommandType.DEADLINE) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" this.taskType \u003d \"deadline\";","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" this.taskType \u003d \"event\";","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * Executes the command by adding the specified task to the task list, saving the updated list to storage,","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" * and displaying a message to the user indicating that the task has been added.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" * @param list The task list to which the task should be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * @param ui The user interface for displaying feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" * @param storage The storage for saving and loading tasks (if applicable).","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public void execute(TaskList list, Ui ui, Storage\u003cTask\u003e storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" list.add(this.target);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" storage.save(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" ui.showTaskAdded(this.taskType, target.toString(), list.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":56}},{"path":"src/main/java/corgi/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import corgi.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import corgi.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * A flag indicating whether this command should exit the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" private boolean isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * The type of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private CommandType type;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new Command instance with the specified exit flag and command type.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * @param isExit The flag indicating whether this command should exit the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * @param type The type of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" public Command(boolean isExit, CommandType type) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" this.isExit \u003d isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" this.type \u003d type;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * Executes the command, performing its intended action on the provided task list,","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * user interface, and storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * @param list The task list to perform the command action on.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" * @param ui The user interface for displaying feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * @param storage The storage for saving and loading tasks (if applicable).","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * @throws CommandExecutionException If an error occurs during command execution.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public abstract void execute(TaskList list, Ui ui, Storage\u003cTask\u003e storage) throws CommandExecutionException;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" * Checks whether this command should exit the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" * @return True if this command should exit, else false.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" return this.isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" * Gets the type of this command.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" * @return The type of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" public CommandType getCommandType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" return this.type;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":58}},{"path":"src/main/java/corgi/commands/CommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Parent exception class for chatbot command.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class CommandException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new CommandException using provided error message.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param msg Error message provided","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public CommandException(String msg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/corgi/commands/CommandExecutionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Represents an exception that is thrown when an error occurs during the execution of a command.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" * It is used to indicate that the execution of a command has failed.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"public class CommandExecutionException extends CommandException{","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new CommandExecutionException with the specified error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * @param msg The error message describing the cause of the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public CommandExecutionException(String msg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":16}},{"path":"src/main/java/corgi/commands/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Types of commands that can be given to the Corgi chat bot.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public enum CommandType {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" MARK(\"mark [task no.]\"), ","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" UNMARK(\"unmark [task no.]\"), ","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" TODO(\"todo [task]\"), ","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" DEADLINE(\"deadline [task] /by [yyyy-mm-dd]\"), ","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" EVENT(\"event [task] /from [yyyy-mm-dd] /to [yyyy-mm-dd]\"), ","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" BYE(\"bye\"), ","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" DELETE(\"delete [task no.]\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" DATE(\"date [yyyy-mm-dd]\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private final String commandFormat;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new CommandType with the given command format.","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * @param commandFormat The command format","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" CommandType(String commandFormat) {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" this.commandFormat \u003d commandFormat;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * Retrieves the corresponding CommandType enum value based on the given command string.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * @param commandStr The command string to match","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * @return The matching CommandType enum value","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidCommandException if the command string is not recognized","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public static CommandType getCommandType(String commandStr) throws InvalidCommandException{","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" switch (commandStr.toLowerCase()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" case \"mark\":","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" return MARK;","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" return UNMARK;","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" case \"todo\":","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" return TODO;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" return DEADLINE;","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" case \"event\":","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" return EVENT;","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" case \"bye\":","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" return BYE;","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" case \"list\":","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" return LIST;","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" case \"delete\":","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" return DELETE;","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" case \"date\":","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" return DATE;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" * Retrieves the command format string for this CommandType.","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" * @return The command format string","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" public String getCommandFormat() {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" return this.commandFormat;","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":69}},{"path":"src/main/java/corgi/commands/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import corgi.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.TaskListIndexOutOfBoundsException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import corgi.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Represents a command to delete a task from the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * This command deletes a task at the specified index from the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"public class DeleteTaskCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private int targetIdx;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new DeleteTaskCommand instance with the specified target index.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * @param targetIdx The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public DeleteTaskCommand(int targetIdx) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" super(false, CommandType.DELETE);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" this.targetIdx \u003d targetIdx;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * Executes the command by deleting the task at the specified index from the task list,","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * saving the updated list to storage, and displaying a message to the user indicating that the task has been deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" * @param list The task list from which the task should be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" * @param ui The user interface for displaying feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" * @param storage The storage for saving and loading tasks (if applicable).","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" * @throws CommandExecutionException If an error occurs during command execution.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public void execute(TaskList list, Ui ui, Storage\u003cTask\u003e storage) throws CommandExecutionException {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" String targetTaskInfo \u003d list.getTaskInfo(targetIdx);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" list.remove(targetIdx);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" storage.save(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" ui.showTaskDeleted(targetTaskInfo, list.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" } catch (TaskListIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" throw new CommandExecutionException(\"Invalid index provided!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":49}},{"path":"src/main/java/corgi/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import corgi.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import corgi.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Represents a command to exit the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * This command terminates the application and provides an exit message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"public class ExitCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new ExitCommand instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" public ExitCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" super(true, CommandType.BYE);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * Executes the command by displaying an exit message to the user, indicating that the application is terminating.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * @param list The task list (not used in this command).","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * @param ui The user interface for displaying the exit message.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * @param storage The storage for saving and loading tasks (not used in this command).","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public void execute(TaskList list, Ui ui, Storage\u003cTask\u003e storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" ui.showExitMsg();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":32}},{"path":"src/main/java/corgi/commands/FindTasksOnDateCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import corgi.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import corgi.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * Represents a command to find tasks on a specific date in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * This command filters the task list based on a given predicate to find tasks on the specified date.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"public class FindTasksOnDateCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * The predicate used to filter tasks by date.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" private Predicate\u003cTask\u003e predicate;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" * The target date for finding tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private String targetDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new FindTasksOnDateCommand instance with the specified predicate and target date.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @param predicate The predicate used to filter tasks by date.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * @param targetDate The target date for finding tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" public FindTasksOnDateCommand(Predicate\u003cTask\u003e predicate, String targetDate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" super(false, CommandType.DATE);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" this.targetDate \u003d targetDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" * Executes the command by filtering the task list based on the given predicate to find tasks on the specified date.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" * It then displays the filtered tasks to the user or a message indicating that no tasks were found on the date.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" * @param list The task list to filter.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" * @param ui The user interface for displaying filtered tasks or messages.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * @param storage The storage for saving and loading tasks (not used in this command).","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public void execute(TaskList list, Ui ui, Storage\u003cTask\u003e storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" TaskList tasksOnDate \u003d list.filter(predicate);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" if (tasksOnDate.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" ui.showNoTaskOnDate(this.targetDate);;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" ui.showTasksOnDate(this.targetDate, tasksOnDate.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":55}},{"path":"src/main/java/corgi/commands/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Exception thrown when an invalid command is provided.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidCommandException extends CommandException{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new InvalidCommandException with a default error message.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" super(\"Invalid command is provided!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":14}},{"path":"src/main/java/corgi/commands/ListTasksCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import corgi.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import corgi.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Represents a command to list tasks in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * This command retrieves and displays the list of tasks to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"public class ListTasksCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new ListTasksCommand instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public ListTasksCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" super(false, CommandType.LIST);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" * Executes the command by retrieving and displaying the list of tasks to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * It shows either the list of tasks or a message indicating that no tasks are in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * @param list The task list to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * @param ui The user interface for displaying the task list or a message.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * @param storage The storage for saving and loading tasks (not used in this command).","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public void execute(TaskList list, Ui ui, Storage\u003cTask\u003e storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" ui.showNoTaskInList();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" ui.showTaskList(list.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":37}},{"path":"src/main/java/corgi/commands/MarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import corgi.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.TaskListIndexOutOfBoundsException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.TaskStatusException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import corgi.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * Represents a command to mark a task as done or undone in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * This command updates the status of a task at the specified index in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"public class MarkTaskCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * The index of the task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" * The new status of the task (true for done, false for undone).","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" private boolean status;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new MarkTaskCommand instance with the specified index, status, and command type.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @param index The index of the task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * @param status The new status of the task (true for done, false for undone).","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * @param type The type of command (CommandType.MARK_DONE or CommandType.MARK_UNDONE).","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" public MarkTaskCommand(int index, boolean status, CommandType type) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" super(false, type);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" this.index \u003d index; ","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" this.status \u003d status;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" * Executes the command by marking the task at the specified index with the new status,","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" * saving the updated list to storage, and displaying a message to the user indicating the task\u0027s status change.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" * @param list The task list to be updated.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * @param ui The user interface for displaying feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" * @param storage The storage for saving and loading tasks (if applicable).","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" * @throws CommandExecutionException If an error occurs during command execution.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" public void execute(TaskList list, Ui ui, Storage\u003cTask\u003e storage) throws CommandExecutionException{","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" try { ","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" list.mark(this.index, this.status);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" storage.save(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" if (status) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" ui.showTaskDone(list.getTaskInfo(this.index));","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" ui.showTaskUndone(list.getTaskInfo(this.index));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" } catch (TaskListIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" throw new CommandExecutionException(\"Invalid index provided!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" } catch (TaskStatusException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" throw new CommandExecutionException(\"The task is already in that status!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":64}},{"path":"src/main/java/corgi/parsers/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.parsers;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.AddTaskCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.CommandType;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.DeleteTaskCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.ExitCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.FindTasksOnDateCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.ListTasksCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.MarkTaskCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" * A parser class for interpreting user input and generating corresponding Command objects.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"public class CommandParser extends Parser\u003cCommand\u003e{","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Parses the given full command string and generates the corresponding Command object.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" * @param fullCommand The full user input command string.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * @return The Command object representing the parsed command.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidCommandFormatException If the command format is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * @throws InvalidCommandTypeException If the command type is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public Command parse(String fullCommand) throws InvalidCommandFormatException, InvalidCommandTypeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" String[] inputs \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" String cmdStr \u003d inputs[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" CommandType cmd;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" cmd \u003d CommandType.getCommandType(cmdStr);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandTypeException(\"Invalid Command!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" Command command \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" switch (cmd) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" case BYE:","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" command \u003d newExitCommand(inputs);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" case LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" command \u003d newListCommand(inputs);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" command \u003d newMarkCommand(inputs, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" case UNMARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" command \u003d newMarkCommand(inputs, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" command \u003d newAddCommand(inputs, cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" command \u003d newAddCommand(inputs, cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" command \u003d newAddCommand(inputs, cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" case DELETE:","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" command \u003d newDeleteCommand(inputs);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" case DATE:","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" command \u003d newDateCommand(inputs);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" return command;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" private Command newExitCommand(String[] inputs) throws InvalidCommandFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"No argument is needed!\" + \"\\nFormat: \" + ","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" CommandType.BYE.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" private Command newListCommand(String[] inputs) throws InvalidCommandFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"No argument is needed!\" + \"\\nFormat: \" + ","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" CommandType.LIST.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" return new ListTasksCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" private Command newMarkCommand(String[] inputs, boolean status) throws InvalidCommandFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"No argument is provided!\" + \"\\nFormat: \" + ","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" (status ? CommandType.MARK.getCommandFormat() : CommandType.UNMARK.getCommandFormat()));","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" } ","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" int index \u003d Integer.parseInt(inputs[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" return new MarkTaskCommand(index, status, ","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" status ? CommandType.MARK : CommandType.UNMARK);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"Please provide a valid task number!\" + \"\\nFormat: \" + ","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" (status ? CommandType.MARK.getCommandFormat() : CommandType.UNMARK.getCommandFormat()));","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" private Command newDeleteCommand(String[] inputs) throws InvalidCommandFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"No argument is provided!\" + \"\\nFormat: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" CommandType.DELETE.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" } ","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" int index \u003d Integer.parseInt(inputs[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"Please provide a valid task number!\" + \"\\nFormat: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" CommandType.DELETE.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" private Command newDateCommand(String[] inputs) throws InvalidCommandFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"No argument is provided!\" + \"\\nFormat: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" CommandType.DATE.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" LocalDate target \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" String dateStr \u003d inputs[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" target \u003d LocalDate.parse(dateStr, Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"Invalid date format!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" final LocalDate FINAL_TARGET \u003d target;","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" Predicate\u003cTask\u003e isOnDate \u003d t -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" if (t instanceof Deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" Deadline d \u003d (Deadline) t;","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" return d.isHappeningOnDate(FINAL_TARGET);","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" } else if (t instanceof Event) {","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" Event e \u003d (Event) t;","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" return e.isHappeningOnDate(FINAL_TARGET);","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" };","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" return new FindTasksOnDateCommand(isOnDate, dateStr);","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" private Command newAddCommand(String[] inputs, CommandType type) throws InvalidCommandFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" if (inputs.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"No argument is provided!\" + \"\\nFormat: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" type.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":" String taskInfo \u003d inputs[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" if (type \u003d\u003d CommandType.TODO) {","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":" Task target \u003d new ToDo(taskInfo);","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":" return new AddTaskCommand(target, CommandType.TODO);","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" } else if (type \u003d\u003d CommandType.DEADLINE) {","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":" // todo: check number of /by","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" String[] deadlineInfos \u003d taskInfo.split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":" if (deadlineInfos.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"Missing deadline!\" + \"\\nFormat: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" type.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":" String deadlineDesc \u003d deadlineInfos[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":" LocalDate by \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"NereusWB922"},"content":" by \u003d LocalDate.parse(deadlineInfos[1], Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"Invalid date format!\" + \"\\nFormat: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" type.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"NereusWB922"},"content":" Task target \u003d new Deadline(deadlineDesc, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":" return new AddTaskCommand(target, CommandType.DEADLINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"NereusWB922"},"content":" // todo: check number of /from, /to, check order","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"NereusWB922"},"content":" String[] eventInfos \u003d taskInfo.split(\" /from \");","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"NereusWB922"},"content":" if (eventInfos.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"Missing /from argument.\" + \"\\nFormat: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"NereusWB922"},"content":" type.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"NereusWB922"},"content":" } else if (eventInfos.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"Only one /from argument is needed.\" + \"\\nFormat: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"NereusWB922"},"content":" type.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"NereusWB922"},"content":" String eventDesc \u003d eventInfos[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"NereusWB922"},"content":" String[] eventDuration \u003d eventInfos[1].split(\" /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"NereusWB922"},"content":" if (eventDuration.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"Missing /to argument!\" + \"\\nFormat: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"NereusWB922"},"content":" type.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"NereusWB922"},"content":" } else if (eventDuration.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"Only one /to argument is needed.\" + \"\\nFormat: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"NereusWB922"},"content":" type.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"NereusWB922"},"content":" LocalDate from \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"NereusWB922"},"content":" LocalDate to \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"NereusWB922"},"content":" from \u003d LocalDate.parse(eventDuration[0], Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"NereusWB922"},"content":" to \u003d LocalDate.parse(eventDuration[1], Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"NereusWB922"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidCommandFormatException(\"Invalid date format!\" + \"\\nFormat: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"NereusWB922"},"content":" type.getCommandFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"NereusWB922"},"content":" Task target \u003d new Event(eventDesc, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"NereusWB922"},"content":" return new AddTaskCommand(target, CommandType.EVENT);","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":236}},{"path":"src/main/java/corgi/parsers/InvalidCommandFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.parsers;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Represents an exception that is thrown when an error occurs due to an invalid command format.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidCommandFormatException extends InvalidParsingFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new InvalidCommandFormatException with the specified error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param msg The error message describing the cause of the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public InvalidCommandFormatException(String msg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/corgi/parsers/InvalidCommandTypeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.parsers;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Represents an exception that is thrown when an error occurs due to an invalid command type.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidCommandTypeException extends InvalidParsingTypeException{","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new InvalidCommandTypeException with the specified error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param msg The error message describing the cause of the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public InvalidCommandTypeException(String msg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/corgi/parsers/InvalidParsingFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.parsers;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Custom exception class for parsing errors related to invalid formats.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidParsingFormatException extends ParsingException{","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new InvalidParsingFormatException with the specified error message.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param msg The error message describing the invalid parsing format error.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public InvalidParsingFormatException(String msg) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/corgi/parsers/InvalidParsingTypeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.parsers;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Custom exception class for parsing errors related to invalid types.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class InvalidParsingTypeException extends ParsingException{","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new InvalidParsingTypeException with the specified error message.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param msg The error message describing the invalid parsing type error.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public InvalidParsingTypeException(String msg) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/corgi/parsers/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.parsers;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * The Parser abstract class defines a common interface for parsing strings","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" * and converting them into objects of a specified type.","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" * @param \u003cT\u003e The type of object that the parser can parse strings into.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"public abstract class Parser\u003cT\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * Parses the given string and converts it into an object of type T.","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * @param s The string to be parsed.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * @return An object of type T parsed from the input string.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" public abstract T parse(String s) throws ParsingException;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":17}},{"path":"src/main/java/corgi/parsers/ParsingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.parsers;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Custom exception class to handle parsing errors.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class ParsingException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new ParsingException with the specified error message.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param message The error message describing the parsing error.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public ParsingException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" } ","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/corgi/parsers/TaskParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.parsers;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import corgi.tasks.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * The TaskParser class extends the abstract Parser class and provides","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * the implementation to parse string representations of tasks and","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * convert them into Task objects.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"public class TaskParser extends Parser\u003cTask\u003e{","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * The separator used to split task infos in the input string.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public static final String SEPARATOR \u003d \" | \";","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" * Parses the given string representation of a task and converts it into a Task object.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * @param s The string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @return A Task object representing the parsed task.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public Task parse(String s) throws ParsingException {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" String[] infos \u003d s.split(Pattern.quote(SEPARATOR));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" if (infos.length \u003c 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Invalid task format!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" String taskType \u003d infos[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" String statusStr \u003d infos[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" String desc \u003d infos[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" boolean status \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" if (statusStr.equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" status \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" } else if (statusStr.equals(\"0\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" status \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Task status should be 0 or 1!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" switch(taskType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" if (infos.length !\u003d 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Wrong format for ToDo task!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" task \u003d new ToDo(status, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" if (infos.length !\u003d 4) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Wrong format for Deadline task!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" LocalDate by \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" by \u003d LocalDate.parse(infos[3], Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Wrong format for date!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" task \u003d new Deadline(status, desc, by);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" if (infos.length !\u003d 5) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Wrong format for Event task!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" LocalDate from \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" LocalDate to \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" from \u003d LocalDate.parse(infos[3], Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" to \u003d LocalDate.parse(infos[4], Task.DATE_INPUT_FORMATTER);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingFormatException(\"Wrong format for date!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" task \u003d new Event(status, desc, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" throw new InvalidParsingTypeException(\"Invalid task type!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":98}},{"path":"src/main/java/corgi/storage/Storable.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * The Storable interface defines methods for converting objects to storable strings","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" * and parsing storable strings to objects.","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" * @param \u003cT\u003e The type of object that the storable string can be parsed into.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"public interface Storable\u003cT\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * Converts the object to a storable string representation.","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * @return The storable string representation of the object.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" public String toStorableString();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":16}},{"path":"src/main/java/corgi/storage/StorableList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * An interface representing a list of storable items.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" * @param \u003cT\u003e The type of storable items that the list contains.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"public interface StorableList\u003cT extends Storable\u003cT\u003e\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Retrieves a storable string representation of the items in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * @return The storable string representation of the items.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" public String getStorableString();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/corgi/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import corgi.parsers.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import corgi.parsers.ParsingException;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * A class for storing and loading objects.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * @param \u003cT\u003e The type of object being stored and loaded.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"public class Storage\u003cT extends Storable\u003cT\u003e\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" private Parser\u003cT\u003e parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * Constructs a Storage instance with the given parser and file path.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * @param parser The parser for converting objects to storable strings.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @param filePath The file path where data will be stored or loaded.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public Storage(Parser\u003cT\u003e parser, String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" this.parser \u003d parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" // Check whether dir exists, create one if not","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" File dir \u003d new File(filePath).getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" boolean success \u003d dir.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" if (!success) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" System.err.println(\"An error occurred when creating directory: \" + dir.getAbsolutePath());","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" // Check whether file exists, create one if not","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" boolean success \u003d file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" if (!success) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" System.err.println(\"An error occurred when creating file: \" + file.getAbsolutePath());","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"No previous data file found. Created a new data file at: \" ","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" + file.getAbsolutePath());","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" System.err.println(\"An error occurred when creating file: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" public void save(StorableList\u003cT\u003e list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(this.filePath))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" writer.write(list.getStorableString());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" System.err.println(\"An error occurred when saving data: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public List\u003cT\u003e load() {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" List\u003cT\u003e items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" int skipped \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(this.filePath))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" T item \u003d parser.parse(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" if (item !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" items.add(item);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" } catch (ParsingException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" skipped +\u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" System.err.println(\"A parsing error occurred when loading data: \" + e.getMessage() + ","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" \"\\nCorrupted data: \" + line + \" (Skipped)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" System.err.println(\"An error occurred when loading data: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" if (skipped \u003e 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" System.out.println(\"Skipped \" + skipped + \" lines with corrupted data.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" return items;","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NereusWB922":97}},{"path":"src/main/java/corgi/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import corgi.parsers.TaskParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Deadline task, a type of task that need to be done before a specific date/time.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" private LocalDate by;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new deadline task with the given description and deadline. ","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * @param desc The description of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * @param by The deadline of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" public Deadline(String desc, LocalDate by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" super(false, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" public Deadline(boolean status, String desc, LocalDate by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" super(status, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public boolean isHappeningOnDate(LocalDate targetDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" return this.by.isEqual(targetDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public String toStorableString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" String[] infos \u003d {\"D\", this.status ? \"1\" : \"0\", this.desc, this.by.format(Task.DATE_INPUT_FORMATTER)};","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" return String.join(TaskParser.SEPARATOR, infos);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of the deadline task.","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" * @return Task type, status icon, description and deadline of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(Task.DATE_OUTPUT_FORMATTER) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"NereusWB922":49}},{"path":"src/main/java/corgi/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import corgi.parsers.TaskParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Event task, a type of task that start at a specific date/time and ends at a specific date/time.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" private LocalDate from;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" private LocalDate to;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new event with the given description and duration. ","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" * @param desc The description of the event","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * @param from The start date/time of the event","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @param to The end date/time of the event","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public Event(String desc, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" super(false, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" public Event(boolean status, String desc, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" super(status, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" public boolean isHappeningOnDate(LocalDate targetDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" return targetDate.isEqual(this.from) || targetDate.isEqual(this.to) ","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" || (targetDate.isAfter(this.from) \u0026\u0026 targetDate.isBefore(this.to));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public String toStorableString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" String[] infos \u003d {\"E\", this.status ? \"1\" : \"0\", this.desc, ","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" this.from.format(Task.DATE_INPUT_FORMATTER), this.to.format(Task.DATE_INPUT_FORMATTER)};","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" return String.join(TaskParser.SEPARATOR, infos);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" * @return Task type, status icon, description, start date/time and end date/time of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" public String toString(){","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(DATE_OUTPUT_FORMATTER) ","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" + \" to: \" + this.to.format(DATE_OUTPUT_FORMATTER) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":56}},{"path":"src/main/java/corgi/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import corgi.storage.Storable;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" * Task class storing description and status.","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"public abstract class Task implements Storable\u003cTask\u003e{","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" protected String desc;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" protected boolean status;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public static final DateTimeFormatter DATE_INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public static final DateTimeFormatter DATE_OUTPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new task with its description. The task\u0027s initial status is set to not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * @param status The status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * @param desc The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public Task(boolean status, String desc) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" this.status \u003d status;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" * Mark task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" public void markAsDone() throws TaskStatusException{","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" if(this.status \u003d\u003d true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" throw new TaskStatusException(\"The task is already marked as done.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" this.status \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * Mark task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public void markAsNotDone() throws TaskStatusException{","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" if(this.status \u003d\u003d false) {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" throw new TaskStatusException(\"The task is already marked as not done.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * Returns an icon representing the status of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" * @return An icon (\"X\" for done, \" \" for not done).","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" return (this.status ? \"X\" : \" \");","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" * @return Status icon and description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.desc;","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"NereusWB922":64}},{"path":"src/main/java/corgi/tasks/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Custom exception class to handle errors related to Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class TaskException extends Exception{","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new ParsingException with the specified error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param msg The error message describing the parsing error.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public TaskException(String msg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/corgi/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"import corgi.storage.StorableList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * A class representing a list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" * This class implements the StorableList interface to provide methods for tasks storing.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"public class TaskList implements StorableList\u003cTask\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" * Constructs a TaskList containing the given list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" * @param tasks The list of tasks to initialize the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" this.tasks \u003d new ArrayList\u003c\u003e(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" * Adds a task to the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" * @param t The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" public void add(Task t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" this.tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" * Removes a task at the specified index from the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" * @throws TaskListIndexOutOfBoundsException If the index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" public void remove(int index) throws TaskListIndexOutOfBoundsException {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" if (!isValidIndex(index)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" throw new TaskListIndexOutOfBoundsException(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" * Marks a task\u0027s status as done or not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" * @param index The index of the task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" * @param status The new status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" * @throws TaskListIndexOutOfBoundsException If the index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" * @throws TaskStatusException If task was already marked as the given status.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" public void mark(int index, boolean status) throws TaskListIndexOutOfBoundsException, TaskStatusException{","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" if (!isValidIndex(index)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" throw new TaskListIndexOutOfBoundsException(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" Task task \u003d this.tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" if (status) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" * Checks if the provided index is valid within the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" * @param index The index to be checked.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" * @return True if the index is valid, otherwise false.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" public boolean isValidIndex(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" return index \u003e\u003d 0 \u0026\u0026 index \u003c this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" * Returns the number of tasks in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" * @return The number of tasks in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" * Filters the tasks in the TaskList based on the given predicate.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" * @param predicate The predicate used to filter tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" * @return A new TaskList containing the filtered tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" public TaskList filter(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" List\u003cTask\u003e filteredList \u003d this.tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" .stream()","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" .filter(predicate)","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" return new TaskList(filteredList);","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" * Checks if the TaskList is empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" * @return True if the TaskList is empty, otherwise false.","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" return this.tasks.isEmpty();","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" * Retrieves a string representation of the task at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" * @param index The index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" * @return The string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" * @throws TaskListIndexOutOfBoundsException If the index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" public String getTaskInfo(int index) throws TaskListIndexOutOfBoundsException {","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" if (!isValidIndex(index)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":" throw new TaskListIndexOutOfBoundsException(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" return this.tasks.get(index).toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" * Returns a storable string representation of all the TaskList\u0027s tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" * @return The storable string representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" public String getStorableString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" String storableString \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" storableString +\u003d task.toStorableString() + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":" return storableString;","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" * @return The string representation of task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" String s \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" s +\u003d (i+1) + \") \" + this.tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" if (i \u003c this.tasks.size() - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" s +\u003d \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" return s;","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":165}},{"path":"src/main/java/corgi/tasks/TaskListIndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * An exception class representing an index out of bounds error specific to the TaskList class.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" * This exception is thrown when attempting to access or manipulate tasks using an invalid index.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"public class TaskListIndexOutOfBoundsException extends TaskException{","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * Constructs a TaskListIndexOutOfBoundsException with the specified detail message.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" * @param msg The detail message indicating the cause of the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" public TaskListIndexOutOfBoundsException(String msg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" * Constructs a TaskListIndexOutOfBoundsException with the specified invalid index.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" * @param index The index that caused the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" public TaskListIndexOutOfBoundsException(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" super(Integer.toString(index));","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":25}},{"path":"src/main/java/corgi/tasks/TaskStatusException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" * Task status-related exception","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class TaskStatusException extends TaskException {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" * Constructs a new TaskStatusException with the specified error message.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * @param msg The error message describing the specific task status error.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" public TaskStatusException(String msg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" super(msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":15}},{"path":"src/main/java/corgi/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import corgi.parsers.TaskParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" * Todo task, a type of task without any date/time attached to it.","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" * Initializes a new todo task with the given description. The task\u0027s initial status is set to not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" * @param desc The description of the todo task","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" public ToDo(String desc) {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" super(false, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public ToDo(boolean status, String desc) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" super(status, desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" public String toStorableString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" String[] infos \u003d {\"T\", this.status ? \"1\" : \"0\", this.desc};","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" return String.join(TaskParser.SEPARATOR, infos);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" * Returns a string representation of the todo task.","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * @return Task type, status icon and description of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"NereusWB922":38}},{"path":"src/main/java/corgi/ui/CommandFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.CommandType;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"public class CommandFormat {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" public static final Map\u003cCommandType, String\u003e mapper \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" static {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" mapper.put(CommandType.MARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" \"mark [task no.]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" mapper.put(CommandType.UNMARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \"unmark [task no.]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" mapper.put(CommandType.TODO,","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \"todo [task]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" mapper.put(CommandType.DEADLINE,","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \"deadline [task] /by [yyyy-mm-dd]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" mapper.put(CommandType.EVENT,","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \"event [task] /from [yyyy-mm-dd] /to [yyyy-mm-dd]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" mapper.put(CommandType.BYE,","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \"bye\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" mapper.put(CommandType.LIST,","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \"list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" mapper.put(CommandType.DELETE,","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" \"delete [task no.]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" mapper.put(CommandType.DATE,","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" \"date [yyyy-mm-dd]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":31}},{"path":"src/main/java/corgi/ui/ErrorMessage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"public class ErrorMessage {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" public static final Map\u003cString, String\u003e mapper \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" static {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" mapper.put(\"InvalidCommandTypeException\",","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" \"Can\u0027t believe you\u0027re asking that! Grrr, what do you want now?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" mapper.put(\"InvalidCommandFormatException\",","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" \"Are you trying to confuse me with this nonsense? Try again hooman!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" mapper.put(\"CommandExecutionException\",","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \"Argh, something went wrong! Bad hooman, what are you trying to do!?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":17}},{"path":"src/main/java/corgi/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"package corgi.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"import corgi.commands.CommandType;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" * The Ui class is responsible for managing the user interface and displaying messages, errors, and prompts.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" private final static String LOGO \u003d \" ____ ___ ____ ____ ___\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" + \" / ___/ _ \\\\| _ \\\\ / ___|_ _|\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" + \"| | | | | | |_) | | _ | |\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" + \"| |__| |_| | _ \u003c| |_| || |\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" + \" \\\\____\\\\___/|_| \\\\_\\\\\\\\____|___|\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" private final static String DIVIDER \u003d \"---------------------------------------------------------------------\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" private final static Map\u003cString, String\u003e errorMessage \u003d ErrorMessage.mapper;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" private final static Map\u003cCommandType, String\u003e commandFormat \u003d CommandFormat.mapper;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" private Scanner sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" * Display a message to the console.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" * @param s The message to display.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" private void println(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" System.out.println(s);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" * Display the application logo.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" public void showLogo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" this.println(LOGO);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" * Display the introductory message.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" public void showIntro() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" this.showLogo();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" this.println(\"Woof! I\u0027m Corgi!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" this.println(\"So, what\u0027s your wish this time, hooman?\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" * Read a command from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" * @return The command entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" return this.sc.nextLine().trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" * Set scanner object for reading command.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" * @param sc The scanner.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" public void setScanner(Scanner sc) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" this.sc \u003d sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" * Display start line of chatbot message.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" public void showStartLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" this.println(\"\\n\" + DIVIDER);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" * Display end line of chatbot message.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" public void showEndLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" this.println(DIVIDER + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" * Display an error message associated with a specific exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" * @param exception The exception class name.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" public void showError(String exception) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" this.println(\"Woof?! 🤬 \\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" this.println(errorMessage.getOrDefault(exception, ","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" \"Oh wonderful, you\u0027ve broken something. And guess what? I have \\nabsolutely no idea what happened either.\"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" + \"\\n\\n😇: \" + exception + \" occurred!\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" * Display error message associated with a specific exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" * Also display extra message in the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" * @param exception The exception class name.","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" * @param extraMsg The extra message.","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" public void showError(String exception, String extraMsg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" this.showError(exception);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" this.println(\"\\n😇: \" + extraMsg);","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" * Display the format of a specific command type.","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" * @param c The specific command type.","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" public void showCommandFormat(CommandType c) {","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" this.println(\"Format: \" + commandFormat.get(c));","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" * Display a message indicating a task has been added.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":" * @param type The type of task added.","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":" * @param taskInfo Information about the added task.","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" * @param currentListSize The current size of the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":" public void showTaskAdded(String type, String taskInfo, int currentListSize) {","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":" this.println(\"Woof, whatever. I\u0027ve added this \" + type + \":\\n\\n \" ","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" + taskInfo + \"\\n\\nNow you have \" + currentListSize + \" tasks in the list.🐾\");","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" * Display a message indicating tasks have been loaded from data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" public void showTasksLoaded(int size) {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" this.println(\"Successfully loaded \" + size + \" tasks!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":" * Display a exit message.","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" public void showExitMsg() {","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" this.println(\"Fine! Whatever! Just go away then! See if I care! huffs\");","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" * Display a message indicating no tasks occurred on target date.","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" * @param date The target date.","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"NereusWB922"},"content":" public void showNoTaskOnDate(String date) {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"NereusWB922"},"content":" this.println(\"No tasks or events are scheduled for \" + date + \".\");","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"NereusWB922"},"content":" * Display tasks that occurred on the target date.","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"NereusWB922"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"NereusWB922"},"content":" * @param date The target date.","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"NereusWB922"},"content":" * @param tasksOnDate The tasks occurred on the target date.","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"NereusWB922"},"content":" public void showTasksOnDate(String date, String tasksOnDate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"NereusWB922"},"content":" this.println(\"Here are the tasks and events happening on \" + date + \":\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"NereusWB922"},"content":" this.println(tasksOnDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"NereusWB922"},"content":" * Display a message indicating a task has been marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"NereusWB922"},"content":" * @param taskInfo Information about the added task.","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"NereusWB922"},"content":" public void showTaskDone(String taskInfo) {","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"NereusWB922"},"content":" this.println(\"Congratulations, I guess! You finally managed to do something right 🎉:\\n\" ","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"NereusWB922"},"content":" + \"\\n \" + taskInfo + \"\\n\"); ","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"NereusWB922"},"content":" * Display a message indicating a task has been marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"NereusWB922"},"content":" * @param taskInfo Information about the added task.","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"NereusWB922"},"content":" public void showTaskUndone(String taskInfo) {","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"NereusWB922"},"content":" this.println(\"Oh great, you\u0027ve undone something 🐕. Just like always:\\n\" ","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"NereusWB922"},"content":" + \"\\n \" + taskInfo + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"NereusWB922"},"content":" * Display a message indicating a task has been deleted and display current list size.","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"NereusWB922"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"NereusWB922"},"content":" * @param taskInfo Information about the added task.","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"NereusWB922"},"content":" * @param currentListSize Current size of the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"NereusWB922"},"content":" public void showTaskDeleted(String taskInfo, int currentListSize) {","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"NereusWB922"},"content":" this.println(\"Finally got rid of that task. Took you long enough... uninterested woof\\n\" ","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"NereusWB922"},"content":" + \"\\n \" + taskInfo + \"\\n\\nNow you have \" + currentListSize + \" tasks in the list.🐾\"); ","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"NereusWB922"},"content":" * Display a mesage indicating there is no task in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"NereusWB922"},"content":" public void showNoTaskInList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"NereusWB922"},"content":" this.println(\"If you haven\u0027t noticed, there\u0027s nothing here! No tasks to be found.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"NereusWB922"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"NereusWB922"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"NereusWB922"},"content":" * Display the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"NereusWB922"},"content":" * @param taskList","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"NereusWB922"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"NereusWB922"},"content":" public void showTaskList(String taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"NereusWB922"},"content":" this.println(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"NereusWB922"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"NereusWB922"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NereusWB922":203}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NereusWB922":11}},{"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":"NereusWB922"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java ../src/main/java/tasks/*.java ../src/main/java/commands/*.java","lastModifiedDate":"2023-08-23"},{"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":"NereusWB922"},"content":"java -classpath ../bin Corgi \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"NereusWB922":2,"-":36}}] diff --git a/NereusWB922_ip_master/commits.json b/NereusWB922_ip_master/commits.json index 97237570..354700a1 100644 --- a/NereusWB922_ip_master/commits.json +++ b/NereusWB922_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"NereusWB922":[{"date":"2023-08-22","commitResults":[{"hash":"dbcee84638adaf96d2aa75ca457371ef7363c3a8","isMergeCommit":false,"messageTitle":"rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":10}}},{"hash":"00b51995d26b0deb64d0a6571231241a81a9c2ca","isMergeCommit":false,"messageTitle":"echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":3}}},{"hash":"5eeab9c29dd057e61b15f241dfc3e3c44bf84eee","isMergeCommit":false,"messageTitle":"Add tasks list field","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"39eed23917b3ef2dc7fb5c744a6ce9a67d04b805","isMergeCommit":false,"messageTitle":"Add addTask method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}},{"hash":"3c732239b3a0bc2b8da341e66fb47b149d3756bd","isMergeCommit":false,"messageTitle":"Add displayTask method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"20d5e25db4bade9ed6678b5c8f8d31a5d394600f","isMergeCommit":false,"messageTitle":"Add JavaDoc for start, addTask and displayTask","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"b8ea75b4d0cc0449b180cd0bd64bf9a60c9bf32d","isMergeCommit":false,"messageTitle":"Add JavaDoc for constructor","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"6fdd367be688c85c11491b9f31911098eda13bc6","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"bba7e5fe479a804a2e0e51d6d99f6bb129a7c026","isMergeCommit":false,"messageTitle":"Create package for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"47d0ad27a9eb8b253c5c8dd4cd1c3d52415a8a6e","isMergeCommit":false,"messageTitle":"Use Task class to represent class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"07b840a1e1e4330a554bb9caa5a823b382a2631a","isMergeCommit":false,"messageTitle":"Add mark task done command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"46a1d9dafd4394d43b059f30f777e97e3b02c3fc","isMergeCommit":false,"messageTitle":"Add mark task as not done method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"d809ef915dccdec191d9e1be11a52d5f4a8b8f22","isMergeCommit":false,"messageTitle":"Add JavaDoc for markTaskAsDone , markTaskAsNotDone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"db24df90d449213910c319549fd0d80d767a4b78","isMergeCommit":false,"messageTitle":"Add ToDo class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"33bb53b43a9ac1f064296e54b8ec6a7a5c329191","isMergeCommit":false,"messageTitle":"Add Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2023-08-23","commitResults":[{"hash":"64619843f06cd90d8701731028e3345c93791117","isMergeCommit":false,"messageTitle":"Add Event class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"0d8a23feb4c43cae1e4202621c6f2238f0bd2d1e","isMergeCommit":false,"messageTitle":"Add addTask with different task type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":10}}},{"hash":"97f24a151ba41cd4e7c991768fbdee9f845a0edd","isMergeCommit":false,"messageTitle":"Add JavaDoc for overloaded addTask method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"2aa5192c67cb3d5f5219eff55aea6508339e1617","isMergeCommit":false,"messageTitle":"Add JavaDoc to Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"b0f433fae49fc1bbea4684e1a646c63df5c2ae51","isMergeCommit":false,"messageTitle":"Add JavaDoc to ToDo class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"2d2ee993daba9c8063a674847c994a020c17a3f3","isMergeCommit":false,"messageTitle":"Add JavaDoc to Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"5c3b607a4db5e0b88ffad2d01aaa4030c8d47525","isMergeCommit":false,"messageTitle":"Add JavaDoc to Event class","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"933853de6acc5913081a397115bf41e3664e3aa2","isMergeCommit":false,"messageTitle":"Edit unit test script","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":2,"deletions":2}}},{"hash":"85043f5fccb704f82a1eaf9cf25977e49270bc2d","isMergeCommit":false,"messageTitle":"Add test input and expected output","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"254cbff3ccff851500f000b69defca8e7edcf098","isMergeCommit":false,"messageTitle":"Add CommandType enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"63e571f9813f8985899034c691452e1196519425","isMergeCommit":false,"messageTitle":"Add InvalidCommandException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"562c9ab30bf38a48783a4e25950a99dcd1ce1ebc","isMergeCommit":false,"messageTitle":"Handle invalid command error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":68}}},{"hash":"847b18f1045000f2799bd405b21f776a3e9635d9","isMergeCommit":false,"messageTitle":"Add JavaDoc for printException method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"5956114eb284eefc1423937226a3ab31dadaf78a","isMergeCommit":false,"messageTitle":"Add JavaDoc for CommandType enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"6e7312c562644c63891c8deba6d7462ece707120","isMergeCommit":false,"messageTitle":"Add JavaDoc for InvalidCommandException class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"3a184241a07fb15cc97a8889071558544dcdc32f","isMergeCommit":false,"messageTitle":"Handle invalid command for bye and list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"8bca97955afec881b23680123cfb3dff098aa44e","isMergeCommit":false,"messageTitle":"Add parent exception class for command exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"91411db2cba32bd1a1786f0c27ac5d6509ad0bb7","isMergeCommit":false,"messageTitle":"Add empty decription exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"f77e2dc6f05243cfeb3d2ba0ef2ec286566b4b68","isMergeCommit":false,"messageTitle":"Add invalid description format exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"89ebc1431d33f2ef9fd4576614c2b2e7e75fe6e2","isMergeCommit":false,"messageTitle":"Add command format field","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":1}}},{"hash":"c86c74e12c339aa57c1f746b4c6760a4a3105900","isMergeCommit":false,"messageTitle":"Handle invalid command format exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":32}}},{"hash":"67b505696bf2eb929d6f716a28b5568601ac2670","isMergeCommit":false,"messageTitle":"Add angry-dog themed reply","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":15}}},{"hash":"8f1baaa0b7bfa91edcb302e8ba8d5d34594eec42","isMergeCommit":false,"messageTitle":"Handle general exception by output to console","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"de008372972c3d5ea5c9881c72d98688ed723cfc","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"654646bb8e99375f45b483283891365678688231","isMergeCommit":false,"messageTitle":"Print more information about general exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a55146438929da2a8640e15c8f9e89f42ddcaaf1","isMergeCommit":false,"messageTitle":"Edit error message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"0326917572b076fb5cd8086174852f3115f1f8b3","isMergeCommit":false,"messageTitle":"Handle string to int parsing exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":14}}},{"hash":"1cd28e6a5c62a8a82f8709c299d5c0ce40535e58","isMergeCommit":false,"messageTitle":"Add TaskStatusException class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"28668787171d5518c8e61f0c7dc375daf8dcf837","isMergeCommit":false,"messageTitle":"Handle TaskStatusException in mark and unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"5cb253078423a2b57766f97caa9ccd7cf572fd3d","isMergeCommit":false,"messageTitle":"Edit error message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"041261488b970c2735cf3e9f193214ccedddfaab","isMergeCommit":false,"messageTitle":"Edit output message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"836144849bf9951ce4e0a28e292b31cfa06af0c7","isMergeCommit":false,"messageTitle":"Edit unit test script","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"d1a58d7a5879122af728a5f03f26cfded3b13f2b","isMergeCommit":false,"messageTitle":"Edit ouptut layout","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"d79526c932fb892c3cc1a6126ac52b48150fa576","isMergeCommit":false,"messageTitle":"Add DELETE CommandType","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"c154cc59a7d8eed37d79c2eeec51de27d557911f","isMergeCommit":false,"messageTitle":"Add delete task method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"b921a072c86ba53a83d0080f2d5e10bc2e29e891","isMergeCommit":false,"messageTitle":"Add delete command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":5}}},{"hash":"f70e0909232e8746730c57d30c4f656f84c799f3","isMergeCommit":false,"messageTitle":"Edit remove task message","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"86d62b6bef7b5a7601e3afae99c6ba50e6960ff0","isMergeCommit":false,"messageTitle":"Add Storable interface","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"64e41b0da1f65111d447dfea16de410966015045","isMergeCommit":false,"messageTitle":"Make Task class abstract","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"42da0fdcf40744c2e99c9e9a5442f2f3cff351cb","isMergeCommit":false,"messageTitle":"Add argument for parseStorableString method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ffd7ad6e3ced34129fd3da22b24321b28c24b9b7","isMergeCommit":false,"messageTitle":"Remove parse method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":7}}},{"hash":"a651148709bd896b3c198267041b65ce182f02ea","isMergeCommit":false,"messageTitle":"Implement Storable interface","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":6}}},{"hash":"cefe77de70be5f2bef5f143aef434ff9e9e02b16","isMergeCommit":false,"messageTitle":"Add abstract Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"0e7da1f2d1ca0da92b309e491ad95dc52cbbe88e","isMergeCommit":false,"messageTitle":"Add custom exception for general parsing error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"0a94a571f535df08eb0d021b582dae29c82dd83c","isMergeCommit":false,"messageTitle":"Add InvalidParsingFormatException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"d251fa30729ba113d0c791242ce8f4e3ebb02d2e","isMergeCommit":false,"messageTitle":"Add InvalidParsingTypeException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"17791342618112c8e4e2bee6daae14350b0e641c","isMergeCommit":false,"messageTitle":"Add parser for Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":0}}},{"hash":"8d1c9e21bc814a35805b35d36165a9fa6079b49d","isMergeCommit":false,"messageTitle":"Fix task type typo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"3972be6629ee44576f01c9b637f40d4edd2ad4b2","isMergeCommit":false,"messageTitle":"Handling parsing exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}},{"hash":"d76e6e704b1d4f4837a520e2b1862c7754c8b4c7","isMergeCommit":false,"messageTitle":"Add Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":0}}},{"hash":"20f0efff164d96f82b67605b28da215a9fa4e421","isMergeCommit":false,"messageTitle":"Use storage in chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"411e36b91665968f575b142c8b8ffe1d03efe93d","isMergeCommit":true,"messageTitle":"Merge level-7 branch to master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f3fa1a4e6676815838a2e43685618ce64bb2680e","isMergeCommit":false,"messageTitle":"Remove never used imported class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"fdde4c4005eba83bdd86e20a22cb70a4c5366722","isMergeCommit":false,"messageTitle":"Edit format for command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"9b576c7efd5e1f785e650907da16006f0828c543","isMergeCommit":false,"messageTitle":"Add constant DateTimeFormatter","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"2ed2bb7aee9c43add77c50355462ed6845a6d60b","isMergeCommit":false,"messageTitle":"Store date in LocalDate type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":11}}},{"hash":"b3aa9b8e64b414281777268b9b1ba77fedfcad38","isMergeCommit":false,"messageTitle":"Parse date string to LocalDate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":2}}},{"hash":"6413a6a3e8c3083e2315d0a532e5718a3ab238c9","isMergeCommit":false,"messageTitle":"Parse date string to LocalDate type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"ac7bd41ee8400e2109d5e65e6c97892b51ea2aa9","isMergeCommit":false,"messageTitle":"Edit console message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"cec16dcc13c4e9af26a35011d9fb7ac3804d95ff","isMergeCommit":false,"messageTitle":"Print message indicate new data file created","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"d581e623f53984ba6a44bdf00c28ed42c5a93f3e","isMergeCommit":false,"messageTitle":"Add new command to find tasks on date","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"11e220161c533be0ea8ab709af4eb19919bcdaba","isMergeCommit":false,"messageTitle":"Add isHappeningOnDate method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"a459fbbf30f396cb371989e53246819d36b1e74e","isMergeCommit":false,"messageTitle":"Add new command DATE","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":0}}},{"hash":"b2ea151a597235f0c9af8bb2caf5b2a699749ba8","isMergeCommit":true,"messageTitle":"Merge Level-8 branch to master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"NereusWB922":{"java":982,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"NereusWB922":43670.926},"authorDisplayNameMap":{"NereusWB922":"CS2103T-W15-2 NERE.. BIN"}} +{"authorDailyContributionsMap":{"NereusWB922":[{"date":"2023-08-22","commitResults":[{"hash":"dbcee84638adaf96d2aa75ca457371ef7363c3a8","isMergeCommit":false,"messageTitle":"rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":10}}},{"hash":"00b51995d26b0deb64d0a6571231241a81a9c2ca","isMergeCommit":false,"messageTitle":"echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":3}}},{"hash":"5eeab9c29dd057e61b15f241dfc3e3c44bf84eee","isMergeCommit":false,"messageTitle":"Add tasks list field","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"39eed23917b3ef2dc7fb5c744a6ce9a67d04b805","isMergeCommit":false,"messageTitle":"Add addTask method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}},{"hash":"3c732239b3a0bc2b8da341e66fb47b149d3756bd","isMergeCommit":false,"messageTitle":"Add displayTask method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"20d5e25db4bade9ed6678b5c8f8d31a5d394600f","isMergeCommit":false,"messageTitle":"Add JavaDoc for start, addTask and displayTask","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"b8ea75b4d0cc0449b180cd0bd64bf9a60c9bf32d","isMergeCommit":false,"messageTitle":"Add JavaDoc for constructor","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"6fdd367be688c85c11491b9f31911098eda13bc6","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"bba7e5fe479a804a2e0e51d6d99f6bb129a7c026","isMergeCommit":false,"messageTitle":"Create package for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"47d0ad27a9eb8b253c5c8dd4cd1c3d52415a8a6e","isMergeCommit":false,"messageTitle":"Use Task class to represent class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"07b840a1e1e4330a554bb9caa5a823b382a2631a","isMergeCommit":false,"messageTitle":"Add mark task done command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"46a1d9dafd4394d43b059f30f777e97e3b02c3fc","isMergeCommit":false,"messageTitle":"Add mark task as not done method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"d809ef915dccdec191d9e1be11a52d5f4a8b8f22","isMergeCommit":false,"messageTitle":"Add JavaDoc for markTaskAsDone , markTaskAsNotDone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"db24df90d449213910c319549fd0d80d767a4b78","isMergeCommit":false,"messageTitle":"Add ToDo class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"33bb53b43a9ac1f064296e54b8ec6a7a5c329191","isMergeCommit":false,"messageTitle":"Add Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2023-08-23","commitResults":[{"hash":"64619843f06cd90d8701731028e3345c93791117","isMergeCommit":false,"messageTitle":"Add Event class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"0d8a23feb4c43cae1e4202621c6f2238f0bd2d1e","isMergeCommit":false,"messageTitle":"Add addTask with different task type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":10}}},{"hash":"97f24a151ba41cd4e7c991768fbdee9f845a0edd","isMergeCommit":false,"messageTitle":"Add JavaDoc for overloaded addTask method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"2aa5192c67cb3d5f5219eff55aea6508339e1617","isMergeCommit":false,"messageTitle":"Add JavaDoc to Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"b0f433fae49fc1bbea4684e1a646c63df5c2ae51","isMergeCommit":false,"messageTitle":"Add JavaDoc to ToDo class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"2d2ee993daba9c8063a674847c994a020c17a3f3","isMergeCommit":false,"messageTitle":"Add JavaDoc to Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"5c3b607a4db5e0b88ffad2d01aaa4030c8d47525","isMergeCommit":false,"messageTitle":"Add JavaDoc to Event class","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"933853de6acc5913081a397115bf41e3664e3aa2","isMergeCommit":false,"messageTitle":"Edit unit test script","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":2,"deletions":2}}},{"hash":"85043f5fccb704f82a1eaf9cf25977e49270bc2d","isMergeCommit":false,"messageTitle":"Add test input and expected output","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"254cbff3ccff851500f000b69defca8e7edcf098","isMergeCommit":false,"messageTitle":"Add CommandType enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"63e571f9813f8985899034c691452e1196519425","isMergeCommit":false,"messageTitle":"Add InvalidCommandException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"562c9ab30bf38a48783a4e25950a99dcd1ce1ebc","isMergeCommit":false,"messageTitle":"Handle invalid command error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":68}}},{"hash":"847b18f1045000f2799bd405b21f776a3e9635d9","isMergeCommit":false,"messageTitle":"Add JavaDoc for printException method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"5956114eb284eefc1423937226a3ab31dadaf78a","isMergeCommit":false,"messageTitle":"Add JavaDoc for CommandType enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"6e7312c562644c63891c8deba6d7462ece707120","isMergeCommit":false,"messageTitle":"Add JavaDoc for InvalidCommandException class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"3a184241a07fb15cc97a8889071558544dcdc32f","isMergeCommit":false,"messageTitle":"Handle invalid command for bye and list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"8bca97955afec881b23680123cfb3dff098aa44e","isMergeCommit":false,"messageTitle":"Add parent exception class for command exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"91411db2cba32bd1a1786f0c27ac5d6509ad0bb7","isMergeCommit":false,"messageTitle":"Add empty decription exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"f77e2dc6f05243cfeb3d2ba0ef2ec286566b4b68","isMergeCommit":false,"messageTitle":"Add invalid description format exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"89ebc1431d33f2ef9fd4576614c2b2e7e75fe6e2","isMergeCommit":false,"messageTitle":"Add command format field","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":1}}},{"hash":"c86c74e12c339aa57c1f746b4c6760a4a3105900","isMergeCommit":false,"messageTitle":"Handle invalid command format exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":32}}},{"hash":"67b505696bf2eb929d6f716a28b5568601ac2670","isMergeCommit":false,"messageTitle":"Add angry-dog themed reply","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":15}}},{"hash":"8f1baaa0b7bfa91edcb302e8ba8d5d34594eec42","isMergeCommit":false,"messageTitle":"Handle general exception by output to console","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"de008372972c3d5ea5c9881c72d98688ed723cfc","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"654646bb8e99375f45b483283891365678688231","isMergeCommit":false,"messageTitle":"Print more information about general exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a55146438929da2a8640e15c8f9e89f42ddcaaf1","isMergeCommit":false,"messageTitle":"Edit error message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"0326917572b076fb5cd8086174852f3115f1f8b3","isMergeCommit":false,"messageTitle":"Handle string to int parsing exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":14}}},{"hash":"1cd28e6a5c62a8a82f8709c299d5c0ce40535e58","isMergeCommit":false,"messageTitle":"Add TaskStatusException class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"28668787171d5518c8e61f0c7dc375daf8dcf837","isMergeCommit":false,"messageTitle":"Handle TaskStatusException in mark and unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"5cb253078423a2b57766f97caa9ccd7cf572fd3d","isMergeCommit":false,"messageTitle":"Edit error message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"041261488b970c2735cf3e9f193214ccedddfaab","isMergeCommit":false,"messageTitle":"Edit output message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"836144849bf9951ce4e0a28e292b31cfa06af0c7","isMergeCommit":false,"messageTitle":"Edit unit test script","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"d1a58d7a5879122af728a5f03f26cfded3b13f2b","isMergeCommit":false,"messageTitle":"Edit ouptut layout","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"d79526c932fb892c3cc1a6126ac52b48150fa576","isMergeCommit":false,"messageTitle":"Add DELETE CommandType","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"c154cc59a7d8eed37d79c2eeec51de27d557911f","isMergeCommit":false,"messageTitle":"Add delete task method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"b921a072c86ba53a83d0080f2d5e10bc2e29e891","isMergeCommit":false,"messageTitle":"Add delete command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":5}}},{"hash":"f70e0909232e8746730c57d30c4f656f84c799f3","isMergeCommit":false,"messageTitle":"Edit remove task message","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"86d62b6bef7b5a7601e3afae99c6ba50e6960ff0","isMergeCommit":false,"messageTitle":"Add Storable interface","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"64e41b0da1f65111d447dfea16de410966015045","isMergeCommit":false,"messageTitle":"Make Task class abstract","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"42da0fdcf40744c2e99c9e9a5442f2f3cff351cb","isMergeCommit":false,"messageTitle":"Add argument for parseStorableString method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ffd7ad6e3ced34129fd3da22b24321b28c24b9b7","isMergeCommit":false,"messageTitle":"Remove parse method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":7}}},{"hash":"a651148709bd896b3c198267041b65ce182f02ea","isMergeCommit":false,"messageTitle":"Implement Storable interface","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":6}}},{"hash":"cefe77de70be5f2bef5f143aef434ff9e9e02b16","isMergeCommit":false,"messageTitle":"Add abstract Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"0e7da1f2d1ca0da92b309e491ad95dc52cbbe88e","isMergeCommit":false,"messageTitle":"Add custom exception for general parsing error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"0a94a571f535df08eb0d021b582dae29c82dd83c","isMergeCommit":false,"messageTitle":"Add InvalidParsingFormatException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"d251fa30729ba113d0c791242ce8f4e3ebb02d2e","isMergeCommit":false,"messageTitle":"Add InvalidParsingTypeException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"17791342618112c8e4e2bee6daae14350b0e641c","isMergeCommit":false,"messageTitle":"Add parser for Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":0}}},{"hash":"8d1c9e21bc814a35805b35d36165a9fa6079b49d","isMergeCommit":false,"messageTitle":"Fix task type typo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"3972be6629ee44576f01c9b637f40d4edd2ad4b2","isMergeCommit":false,"messageTitle":"Handling parsing exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}},{"hash":"d76e6e704b1d4f4837a520e2b1862c7754c8b4c7","isMergeCommit":false,"messageTitle":"Add Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":0}}},{"hash":"20f0efff164d96f82b67605b28da215a9fa4e421","isMergeCommit":false,"messageTitle":"Use storage in chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"411e36b91665968f575b142c8b8ffe1d03efe93d","isMergeCommit":true,"messageTitle":"Merge level-7 branch to master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f3fa1a4e6676815838a2e43685618ce64bb2680e","isMergeCommit":false,"messageTitle":"Remove never used imported class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"fdde4c4005eba83bdd86e20a22cb70a4c5366722","isMergeCommit":false,"messageTitle":"Edit format for command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"9b576c7efd5e1f785e650907da16006f0828c543","isMergeCommit":false,"messageTitle":"Add constant DateTimeFormatter","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"2ed2bb7aee9c43add77c50355462ed6845a6d60b","isMergeCommit":false,"messageTitle":"Store date in LocalDate type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":11}}},{"hash":"b3aa9b8e64b414281777268b9b1ba77fedfcad38","isMergeCommit":false,"messageTitle":"Parse date string to LocalDate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":2}}},{"hash":"6413a6a3e8c3083e2315d0a532e5718a3ab238c9","isMergeCommit":false,"messageTitle":"Parse date string to LocalDate type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"ac7bd41ee8400e2109d5e65e6c97892b51ea2aa9","isMergeCommit":false,"messageTitle":"Edit console message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"cec16dcc13c4e9af26a35011d9fb7ac3804d95ff","isMergeCommit":false,"messageTitle":"Print message indicate new data file created","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"d581e623f53984ba6a44bdf00c28ed42c5a93f3e","isMergeCommit":false,"messageTitle":"Add new command to find tasks on date","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"11e220161c533be0ea8ab709af4eb19919bcdaba","isMergeCommit":false,"messageTitle":"Add isHappeningOnDate method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"a459fbbf30f396cb371989e53246819d36b1e74e","isMergeCommit":false,"messageTitle":"Add new command DATE","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":0}}},{"hash":"b2ea151a597235f0c9af8bb2caf5b2a699749ba8","isMergeCommit":true,"messageTitle":"Merge Level-8 branch to master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"cb4dd986b511c980d831c3ace21d4ea0adff0655","isMergeCommit":false,"messageTitle":"Copy list value using constructor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"d256712003a78d4905975923c9d824b6fbe257c7","isMergeCommit":false,"messageTitle":"Add StorableList interface","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"a45113f61db40b78e7d0196a9d98b978047df864","isMergeCommit":false,"messageTitle":"Implement TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":159,"deletions":0}}},{"hash":"738742b9426a69acc1ad235050c087430ef0141d","isMergeCommit":false,"messageTitle":"Create custom TaskListIndexOutOfBoundsException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"fec75b2a560cfe510eba2e0db34c90933c028306","isMergeCommit":false,"messageTitle":"Modify save method argument to StorableList type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":4}}},{"hash":"ca98918703cea2ca6475bb333ae6030ee030e537","isMergeCommit":false,"messageTitle":"Use TaskList class to replace List","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":44}}},{"hash":"415006edb0aebbfed8c8ab7e5d6885b502fd0186","isMergeCommit":false,"messageTitle":"Replace printTask with toString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":11}}},{"hash":"87ba1691373b7ff44db84cf12a146cc1eb8617a8","isMergeCommit":false,"messageTitle":"Enable create exception with custom message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"70d53647ee9a683e051901b3a65f5430e2c56a10","isMergeCommit":false,"messageTitle":"Add CommandFormat class to store command format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"5cf3fc0347c3d20d568933554d63ebe423a14d82","isMergeCommit":false,"messageTitle":"Add ErrorMessage class to store error message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"01dcc8d705d19a5514f2ed77eb001d079582dec0","isMergeCommit":false,"messageTitle":"Remove \\n after last task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"d2c6afe1c742d12198004b83a7141aa4de5f1094","isMergeCommit":false,"messageTitle":"Add Ui class to extract user interface handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":203,"deletions":0}}},{"hash":"3f38e966c8135e9fe518af3492cf4c5eb8d8a21a","isMergeCommit":false,"messageTitle":"Use Ui class to replace print statement","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":61}}},{"hash":"1ad42804147b1ab1d0cb7dcbed270547398e8153","isMergeCommit":false,"messageTitle":"Add general task exception class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"8e6c1c553c8606cc16af2f1502e5742461d814e8","isMergeCommit":false,"messageTitle":"Inherit from TaskException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"12e9b981ee2c35832b9f1a34de9c10b5b2f77f5b","isMergeCommit":false,"messageTitle":"Add abstract Command class to represent command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":0}}},{"hash":"79c5f1adf9d0aa76a7402049a06f6b11827a7795","isMergeCommit":false,"messageTitle":"Implement AddTaskCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":0}}},{"hash":"4cba0ed0bc2a32737502b8bfc9acfd9ebedefeb4","isMergeCommit":false,"messageTitle":"Implement DeleteTaskCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":0}}},{"hash":"d480d5425c245779155b4a6585182a3cb9ffb78d","isMergeCommit":false,"messageTitle":"Implement ExitCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":0}}},{"hash":"9dc1c7e94f3e3cd0f430aee85889b9b2ada66b9f","isMergeCommit":false,"messageTitle":"Implement FindTasksOnDateCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":0}}},{"hash":"109840ee985f85267b106af1a29a2c135eaf06e6","isMergeCommit":false,"messageTitle":"Implement ListTasksCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"f61af29cc04544a22175dae1e1eb48c5e8cdbd6a","isMergeCommit":false,"messageTitle":"Implement MarkTaskCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":0}}},{"hash":"b3e1ceee2c99637cbb04bd73103fec37f42e03de","isMergeCommit":false,"messageTitle":"Add custom exception for command execution","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"ddb1381f649c19a334892f2c934e71676401126e","isMergeCommit":false,"messageTitle":"Implement CommandParser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":236,"deletions":0}}},{"hash":"e57a8b64258d5162d7d4beed6646dbca2bed096b","isMergeCommit":false,"messageTitle":"Add ParsingException subclass","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":28}}},{"hash":"913ec344f1786449ea91cd1e73dc88efd631d7ab","isMergeCommit":false,"messageTitle":"Change ParsingException to checked exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"87ffc309d23c9f1444c0fff4e329d7f08caf8641","isMergeCommit":false,"messageTitle":"Add throws statement in parse method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"2b4c2c676bccc19284a3661ffec3a5427aad3e14","isMergeCommit":false,"messageTitle":"Edit error message correspond to exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":8}}},{"hash":"1bb528e0134f0db23b9364a231fd1d2a5d18845b","isMergeCommit":false,"messageTitle":"Edit ui display","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"62e30029a20b595e1dedd1fcfcaba61d1e14393c","isMergeCommit":false,"messageTitle":"Use Command class and CommandParser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":271}}},{"hash":"c58373034a32bd658306ea3f9fdba4ed9f7fdc38","isMergeCommit":true,"messageTitle":"Merge branch-A-MoreOOP into master","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"bdf643ad3dd5f4f910b7c3b41b47ce1c85076e7b","isMergeCommit":false,"messageTitle":"Add all packages under corgi folder","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":106}}},{"hash":"9526a2b70b2a7ff81872527acc6f257883b70ade","isMergeCommit":true,"messageTitle":"Add gradle to master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"29663091a44e38cfd2ff32b3cc6e6a3905327d01","isMergeCommit":false,"messageTitle":"Config build.gradle main class","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"NereusWB922":{"java":1775,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":1,"txt":11}},"authorContributionVariance":{"NereusWB922":236982.36},"authorDisplayNameMap":{"NereusWB922":"CS2103T-W15-2 NERE.. BIN"}} diff --git a/NgChunMan_ip_master/authorship.json b/NgChunMan_ip_master/authorship.json index 23985b50..7536d56e 100644 --- a/NgChunMan_ip_master/authorship.json +++ b/NgChunMan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/evo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NgChunMan":1}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * Represents a task that need to be done before a specific date/time.","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" * This class is a subclass of the Task class and inherits its properties and methods.","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" * The deadline for the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" protected String by;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" * Constructs a Deadline object with the given description and deadline.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" * @param by The deadline for the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" * Returns output string representation of the Deadline task.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" * @return The output string representation of the Deadline task.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" public String outputMsg() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" return \"D | \" + (isDone ? 1 : 0) + \" | \" + description + \" | \" + this.by;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of the Deadline task.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" * @return The string representation of the Deadline task with description and deadline.","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NgChunMan":42}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * Represents a task that starts at a specific date/time and ends at a specific date/time.","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" * This class is a subclass of the Task class and inherits its properties and methods.","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" * The duration of the event starts at a specific date/time and ends at a specific date/time.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" protected String duration;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" * Constructs an Event object with the given description and duration.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" * @param duration The duration of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" public Event(String description, String duration) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" this.duration \u003d duration;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" * Returns output string representation of the Event task.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" * @return The output string representation of the Event task.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" public String outputMsg() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" return \"E | \" + (isDone ? 1 : 0) + \" | \" + description + \" | \" + this.duration;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of the Event task.","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" * @return The string representation of the Event task with description and duration.","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" return \"[E]\" + super.toString() + \" (\" + this.duration + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NgChunMan":42}},{"path":"src/main/java/Evo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" * Evo is a Personal Assistant Chatbot that helps a person to keep track of various things.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" * Tasks are represented by the nested static class Task.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"public class Evo {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * The main method of Evo program.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" * @param args The command-line arguments passed to the program.","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" // Displays Evo logo and welcome message","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" String logo \u003d \" _____\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" + \"| ___|\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" + \"| |___ __ __ _____\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" + \"| ___|\\\\ \\\\ / / | |\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" + \"| |___ \\\\ \\\\/ / | |\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" + \"|_____| \\\\__/ |_____|\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" // Initialises welcome and goodbye messages","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" String welcomeMsg \u003d \"Hello! I\u0027m Evo.\\n\" + \"What can I do for you?\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" String byeMsg \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" // Prints out welcome message once the user using Evo","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" System.out.println(welcomeMsg);","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" // An ArrayList to store the Task objects","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" // Loads the data from the file when the chatbot starts up","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" File folder \u003d new File(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" if (!folder.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" throw new NoFolderFoundException();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" File file \u003d new File(\"./data/evo.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" throw new NoDataFileFoundException();","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" String[] type \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" switch (type[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" Task toDo \u003d new ToDo(type[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" if (Integer.parseInt(type[1]) \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" toDo.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"NgChunMan"},"content":" taskList.add(toDo);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"NgChunMan"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"NgChunMan"},"content":" Deadline deadline \u003d new Deadline(type[2], type[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":" if (Integer.parseInt(type[1]) \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" taskList.add(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" Event event \u003d new Event(type[2], type[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" if (Integer.parseInt(type[1]) \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" taskList.add(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" throw new UnexpectedTaskTypeException();","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"NgChunMan"},"content":" // Saves the tasks in the taskList to the txt file","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":" saveTaskListToFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" } catch (IOException ioException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Something went wrong: \" + ioException.getMessage() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" } catch (NoFolderFoundException noFolderFoundException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" // Catches the exception when the required folder does not exist","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"The folder does not exist.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":" } catch (NoDataFileFoundException noDataFileFoundException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" // Catches the exception when the data file does not exist while you run","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"The required data file does not exist.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":" } catch (UnexpectedTaskTypeException unexpectedTaskTypeException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" // Catches the exception when an unexpected task type was encountered when loading the task from txt file","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Unexpected task type encountered when loading the task from txt file.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" // Initialise a scanner to receive text input from user","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":" // Assign the text to this string variable called instruction","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" String instruction \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":" // If the text entered is bye, then print out the bye message and exit the loop","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":" if (Objects.equals(instruction, \"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"NgChunMan"},"content":" System.out.println(byeMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"NgChunMan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"NgChunMan"},"content":" * If the text entered is list, then print out the status and description of tasks added before by the","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"NgChunMan"},"content":" * user. For Deadline and Event objects, the due date and duration will also be printed respectively.","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"NgChunMan"},"content":" * Then exit the current while loop and move to the next iteration.","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"NgChunMan"},"content":" if (Objects.equals(instruction, \"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"NgChunMan"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"NgChunMan"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d taskList.size() - 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"NgChunMan"},"content":" System.out.println(i + 1 + \".\" + taskList.get(i).toString() + \"\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"NgChunMan"},"content":" System.out.println(i + 1 + \".\" + taskList.get(i).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"NgChunMan"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"NgChunMan"},"content":" if (!instruction.contains(\"/\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"NgChunMan"},"content":" String[] actionType \u003d instruction.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"NgChunMan"},"content":" if (Objects.equals(actionType[0], \"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"NgChunMan"},"content":" if (actionType.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"NgChunMan"},"content":" throw new MissingTaskToMarkException();","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"NgChunMan"},"content":" // Mark a task as done","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"NgChunMan"},"content":" markTaskDone(taskList, actionType);","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"NgChunMan"},"content":" } else if (Objects.equals(actionType[0], \"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"NgChunMan"},"content":" if (actionType.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"NgChunMan"},"content":" throw new MissingTaskToUnmarkException();","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"NgChunMan"},"content":" // Mark a task as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"NgChunMan"},"content":" unmarkTask(taskList, actionType);","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"NgChunMan"},"content":" } else if (Objects.equals(actionType[0], \"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"NgChunMan"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"NgChunMan"},"content":" throw new NoTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"NgChunMan"},"content":" // Delete a task from taskList","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"NgChunMan"},"content":" deleteTask(taskList, actionType);","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"NgChunMan"},"content":" } else if (Objects.equals(actionType[0], \"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"NgChunMan"},"content":" // Add To Do object","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"NgChunMan"},"content":" if (actionType.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"NgChunMan"},"content":" throw new MissingToDoDescriptionException();","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"NgChunMan"},"content":" addToDoTask(taskList, actionType);","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"NgChunMan"},"content":" } else if (Objects.equals(actionType[0], \"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"NgChunMan"},"content":" if (actionType.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"NgChunMan"},"content":" throw new MissingDescriptionAndDeadlineException();","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"NgChunMan"},"content":" throw new MissingDeadlineException();","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"NgChunMan"},"content":" } else if (Objects.equals(actionType[0], \"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"NgChunMan"},"content":" if (actionType.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"NgChunMan"},"content":" throw new MissingDescriptionAndDurationException();","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"NgChunMan"},"content":" throw new MissingDurationException();","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"NgChunMan"},"content":" throw new InvalidOperationException();","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"NgChunMan"},"content":" String[] typeAndDates \u003d instruction.split(\"/\");","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"NgChunMan"},"content":" String[] actionType \u003d typeAndDates[0].split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"NgChunMan"},"content":" if (Objects.equals(actionType[0], \"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"NgChunMan"},"content":" // Add Deadline object to the taskList","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"NgChunMan"},"content":" addDeadlineTask(taskList, actionType, typeAndDates);","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"NgChunMan"},"content":" } else if (Objects.equals(actionType[0], \"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"NgChunMan"},"content":" // Add Event object to the taskList","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"NgChunMan"},"content":" addEventTask(taskList, actionType, typeAndDates);","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"NgChunMan"},"content":" saveTaskListToFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"NgChunMan"},"content":" } catch (InvalidOperationException invalidOpExp) {","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the operation is invalid","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingToDoDescriptionException missToDoExp) {","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the description of ToDo task is missing","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Description of this task is missing. \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"NgChunMan"},"content":" \"Please specify the description of this task.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingTaskToMarkException missingTaskToMarkExp) {","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when user never specifies which task to be marked","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Please specify the task to be marked.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingTaskToUnmarkException missingTaskToUnmarkExp) {","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when user never specifies which task to be unmarked","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Please specify the task to be unmarked.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingDescriptionAndDeadlineException missingDescAndDeadlineExp) {","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the description and deadline of Deadline object are missing","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Description and deadline of this task are missing. \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"NgChunMan"},"content":" \"Please specify the description and the deadline of this task.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":200,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingDescriptionAndDurationException missingDescAndDurationExp) {","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the description and duration of Event object are missing","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Description and duration of this event are missing. \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":203,"author":{"gitId":"NgChunMan"},"content":" \"Please specify the description and the duration of this event.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":204,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingDeadlineException missingDeadlineException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the deadline of Deadline object is missing","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Deadline of this task is missing. Please specify the deadline of this task.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingDurationException missingDurationException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the duration of Event object is missing","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Duration of this event is missing. \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"NgChunMan"},"content":" \"Please specify the start date/time and end date/time.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"NgChunMan"},"content":" } catch (NoTaskException noTaskException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":212,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when user tries to delete task from an empty taskList","lastModifiedDate":"2023-08-30"},{"lineNumber":213,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"This task cannot be deleted as there is no task in the list.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":214,"author":{"gitId":"NgChunMan"},"content":" } catch (IOException ioException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":215,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Something went wrong: \" + ioException.getMessage() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":216,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":217,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":218,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":219,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":220,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":221,"author":{"gitId":"NgChunMan"},"content":" * Adds a ToDo task to the provided task list based on user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":222,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":223,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects to which the ToDo task will be added.","lastModifiedDate":"2023-08-30"},{"lineNumber":224,"author":{"gitId":"NgChunMan"},"content":" * @param actionType An array containing the action type and description of the ToDo task.","lastModifiedDate":"2023-08-30"},{"lineNumber":225,"author":{"gitId":"NgChunMan"},"content":" * @throws IOException If an I/O error occurs while attempting to modify the task list or display messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":226,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingToDoDescriptionException If the ToDo task description is missing in the input.","lastModifiedDate":"2023-08-30"},{"lineNumber":227,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":228,"author":{"gitId":"NgChunMan"},"content":" private static void addToDoTask(ArrayList\u003cTask\u003e taskList, String[] actionType)","lastModifiedDate":"2023-08-30"},{"lineNumber":229,"author":{"gitId":"NgChunMan"},"content":" throws IOException, MissingToDoDescriptionException {","lastModifiedDate":"2023-08-30"},{"lineNumber":230,"author":{"gitId":"NgChunMan"},"content":" String taskDescription \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":231,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 1; i \u003c actionType.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":232,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d actionType.length - 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"NgChunMan"},"content":" taskDescription +\u003d actionType[i];","lastModifiedDate":"2023-08-24"},{"lineNumber":234,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"NgChunMan"},"content":" taskDescription +\u003d actionType[i] + \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":236,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":237,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":238,"author":{"gitId":"NgChunMan"},"content":" ToDo toDo \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-23"},{"lineNumber":239,"author":{"gitId":"NgChunMan"},"content":" taskList.add(toDo);","lastModifiedDate":"2023-08-24"},{"lineNumber":240,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":241,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":242,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\" \" + toDo.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":243,"author":{"gitId":"NgChunMan"},"content":" if (taskList.size() \u003c\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":244,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":245,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":247,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":248,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":249,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":250,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":251,"author":{"gitId":"NgChunMan"},"content":" * Deletes a task from the provided task list based on user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":252,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":253,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects from which the task will be deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":254,"author":{"gitId":"NgChunMan"},"content":" * @param actionType An array containing the action type and task number to be deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":255,"author":{"gitId":"NgChunMan"},"content":" * @throws NoTaskException If there are no tasks to delete in the taskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":256,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":257,"author":{"gitId":"NgChunMan"},"content":" private static void deleteTask(ArrayList\u003cTask\u003e taskList, String[] actionType) throws NoTaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":258,"author":{"gitId":"NgChunMan"},"content":" // Deletes a task from taskList","lastModifiedDate":"2023-08-30"},{"lineNumber":259,"author":{"gitId":"NgChunMan"},"content":" int taskNumberToDelete \u003d Integer.parseInt(actionType[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":260,"author":{"gitId":"NgChunMan"},"content":" Task deletedTask \u003d taskList.get(taskNumberToDelete);","lastModifiedDate":"2023-08-30"},{"lineNumber":261,"author":{"gitId":"NgChunMan"},"content":" taskList.remove(taskNumberToDelete);","lastModifiedDate":"2023-08-30"},{"lineNumber":262,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":263,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":264,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\" \" + deletedTask.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":265,"author":{"gitId":"NgChunMan"},"content":" if (taskList.size() \u003c\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":266,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task in the list.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":267,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":268,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":269,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":270,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":271,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":272,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":273,"author":{"gitId":"NgChunMan"},"content":" * Marks a task as done in the provided task list based on user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":274,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":275,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects in which the task will be marked as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":276,"author":{"gitId":"NgChunMan"},"content":" * @param actionType An array containing the action type and task number to be marked as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":277,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingTaskToMarkException If the task number to mark as done is missing in the input.","lastModifiedDate":"2023-08-30"},{"lineNumber":278,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":279,"author":{"gitId":"NgChunMan"},"content":" private static void markTaskDone(ArrayList\u003cTask\u003e taskList, String[] actionType) throws MissingTaskToMarkException {","lastModifiedDate":"2023-08-30"},{"lineNumber":280,"author":{"gitId":"NgChunMan"},"content":" // Marks a task as done","lastModifiedDate":"2023-08-30"},{"lineNumber":281,"author":{"gitId":"NgChunMan"},"content":" int taskNumberInList \u003d Integer.parseInt(actionType[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":282,"author":{"gitId":"NgChunMan"},"content":" taskList.get(taskNumberInList).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":283,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":284,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":285,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\" \" + taskList.get(taskNumberInList).toString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":286,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":287,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":288,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":289,"author":{"gitId":"NgChunMan"},"content":" * Unmarks a task as not done in the provided task list based on user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":290,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":291,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects in which the task will be unmarked.","lastModifiedDate":"2023-08-30"},{"lineNumber":292,"author":{"gitId":"NgChunMan"},"content":" * @param actionType An array containing the action type and task number to be unmarked.","lastModifiedDate":"2023-08-30"},{"lineNumber":293,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingTaskToUnmarkException If the task number to unmark is missing in the input.","lastModifiedDate":"2023-08-30"},{"lineNumber":294,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":295,"author":{"gitId":"NgChunMan"},"content":" private static void unmarkTask(ArrayList\u003cTask\u003e taskList, String[] actionType) throws MissingTaskToUnmarkException {","lastModifiedDate":"2023-08-30"},{"lineNumber":296,"author":{"gitId":"NgChunMan"},"content":" // Marks a task as not done","lastModifiedDate":"2023-08-30"},{"lineNumber":297,"author":{"gitId":"NgChunMan"},"content":" int taskNumberInList \u003d Integer.parseInt(actionType[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":298,"author":{"gitId":"NgChunMan"},"content":" taskList.get(taskNumberInList).markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":299,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":300,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":301,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\" \" + taskList.get(taskNumberInList).toString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":302,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":303,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":304,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":305,"author":{"gitId":"NgChunMan"},"content":" * Adds a Deadline task to the provided task list based on user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":306,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":307,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects to which the Deadline task will be added.","lastModifiedDate":"2023-08-30"},{"lineNumber":308,"author":{"gitId":"NgChunMan"},"content":" * @param actionType An array containing the action type and description of the Deadline task.","lastModifiedDate":"2023-08-30"},{"lineNumber":309,"author":{"gitId":"NgChunMan"},"content":" * @param typeAndDates An array containing the action type, description and due date/time of the Deadline task.","lastModifiedDate":"2023-08-30"},{"lineNumber":310,"author":{"gitId":"NgChunMan"},"content":" * @throws IOException If an I/O error occurs while attempting to modify the task list or display messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":311,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingDeadlineException If the due date/time of the Deadline task is missing in the input.","lastModifiedDate":"2023-08-30"},{"lineNumber":312,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingDescriptionAndDeadlineException If the Deadline task description and due date/time are missing in the input.","lastModifiedDate":"2023-08-30"},{"lineNumber":313,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":314,"author":{"gitId":"NgChunMan"},"content":" private static void addDeadlineTask(ArrayList\u003cTask\u003e taskList, String[] actionType, String[] typeAndDates)","lastModifiedDate":"2023-08-30"},{"lineNumber":315,"author":{"gitId":"NgChunMan"},"content":" throws IOException, MissingDeadlineException, MissingDescriptionAndDeadlineException {","lastModifiedDate":"2023-08-30"},{"lineNumber":316,"author":{"gitId":"NgChunMan"},"content":" // Constructs the description of the deadline task from the user input","lastModifiedDate":"2023-08-30"},{"lineNumber":317,"author":{"gitId":"NgChunMan"},"content":" String taskDescription \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":318,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 1; i \u003c actionType.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":319,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d actionType.length - 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":320,"author":{"gitId":"NgChunMan"},"content":" taskDescription +\u003d actionType[i];","lastModifiedDate":"2023-08-30"},{"lineNumber":321,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":322,"author":{"gitId":"NgChunMan"},"content":" taskDescription +\u003d actionType[i] + \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":323,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":324,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":325,"author":{"gitId":"NgChunMan"},"content":" // Construct the task due date/time","lastModifiedDate":"2023-08-23"},{"lineNumber":326,"author":{"gitId":"NgChunMan"},"content":" String[] dates \u003d typeAndDates[1].split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":327,"author":{"gitId":"NgChunMan"},"content":" String taskBy \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":328,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 1; i \u003c dates.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":329,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d dates.length - 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":330,"author":{"gitId":"NgChunMan"},"content":" taskBy +\u003d dates[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":331,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":332,"author":{"gitId":"NgChunMan"},"content":" taskBy +\u003d dates[i] + \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":333,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":334,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":335,"author":{"gitId":"NgChunMan"},"content":" // Creates the deadline object with the taskDescription and taskBy","lastModifiedDate":"2023-08-30"},{"lineNumber":336,"author":{"gitId":"NgChunMan"},"content":" Deadline deadline \u003d new Deadline(taskDescription, taskBy);","lastModifiedDate":"2023-08-23"},{"lineNumber":337,"author":{"gitId":"NgChunMan"},"content":" taskList.add(deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":338,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":339,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":340,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\" \" + deadline.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":341,"author":{"gitId":"NgChunMan"},"content":" if (taskList.size() \u003c\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":342,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":343,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":344,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":345,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":346,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":347,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":348,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":349,"author":{"gitId":"NgChunMan"},"content":" * Adds an Event task to the provided task list based on user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":350,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":351,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects to which the Event task will be added.","lastModifiedDate":"2023-08-30"},{"lineNumber":352,"author":{"gitId":"NgChunMan"},"content":" * @param actionType An array containing the action type and description of the Event task.","lastModifiedDate":"2023-08-30"},{"lineNumber":353,"author":{"gitId":"NgChunMan"},"content":" * @param typeAndDates An array containing the action type, description, start date/time, and end date/time of Event task.","lastModifiedDate":"2023-08-30"},{"lineNumber":354,"author":{"gitId":"NgChunMan"},"content":" * @throws IOException If an I/O error occurs while attempting to modify the task list or display messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":355,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingDescriptionAndDurationException If the Event task description and duration are missing in input.","lastModifiedDate":"2023-08-30"},{"lineNumber":356,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingDurationException If the duration of the Event task is missing in the input.","lastModifiedDate":"2023-08-30"},{"lineNumber":357,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":358,"author":{"gitId":"NgChunMan"},"content":" private static void addEventTask(ArrayList\u003cTask\u003e taskList, String[] actionType, String[] typeAndDates)","lastModifiedDate":"2023-08-30"},{"lineNumber":359,"author":{"gitId":"NgChunMan"},"content":" throws IOException, MissingDescriptionAndDurationException, MissingDurationException {","lastModifiedDate":"2023-08-30"},{"lineNumber":360,"author":{"gitId":"NgChunMan"},"content":" // Add Event object to the taskList","lastModifiedDate":"2023-08-23"},{"lineNumber":361,"author":{"gitId":"NgChunMan"},"content":" String[] datesFrom \u003d typeAndDates[1].split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":362,"author":{"gitId":"NgChunMan"},"content":" String[] datesTo \u003d typeAndDates[2].split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":363,"author":{"gitId":"NgChunMan"},"content":" String taskDescription \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":364,"author":{"gitId":"NgChunMan"},"content":" // Constructs the description of the event task from the user input","lastModifiedDate":"2023-08-30"},{"lineNumber":365,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 1; i \u003c actionType.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":366,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d actionType.length - 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":367,"author":{"gitId":"NgChunMan"},"content":" taskDescription +\u003d actionType[i];","lastModifiedDate":"2023-08-30"},{"lineNumber":368,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":369,"author":{"gitId":"NgChunMan"},"content":" taskDescription +\u003d actionType[i] + \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":370,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":371,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":372,"author":{"gitId":"NgChunMan"},"content":" // Constructs the task due date/time duration","lastModifiedDate":"2023-08-30"},{"lineNumber":373,"author":{"gitId":"NgChunMan"},"content":" String taskDuration \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":374,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 0; i \u003c datesFrom.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":375,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d 0) {","lastModifiedDate":"2023-08-23"},{"lineNumber":376,"author":{"gitId":"NgChunMan"},"content":" taskDuration +\u003d datesFrom[i] + \": \";","lastModifiedDate":"2023-08-23"},{"lineNumber":377,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":378,"author":{"gitId":"NgChunMan"},"content":" taskDuration +\u003d datesFrom[i] + \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":379,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":380,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":381,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 0; i \u003c datesTo.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":382,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d 0) {","lastModifiedDate":"2023-08-23"},{"lineNumber":383,"author":{"gitId":"NgChunMan"},"content":" taskDuration +\u003d datesTo[i] + \": \";","lastModifiedDate":"2023-08-23"},{"lineNumber":384,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":385,"author":{"gitId":"NgChunMan"},"content":" taskDuration +\u003d datesTo[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":386,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":387,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":388,"author":{"gitId":"NgChunMan"},"content":" // Create the event object with the taskDescription and taskDuration","lastModifiedDate":"2023-08-23"},{"lineNumber":389,"author":{"gitId":"NgChunMan"},"content":" Event event \u003d new Event(taskDescription, taskDuration);","lastModifiedDate":"2023-08-23"},{"lineNumber":390,"author":{"gitId":"NgChunMan"},"content":" taskList.add(event);","lastModifiedDate":"2023-08-24"},{"lineNumber":391,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":392,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":393,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\" \" + event.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":394,"author":{"gitId":"NgChunMan"},"content":" if (taskList.size() \u003c\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":395,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":396,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":397,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":398,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":399,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":400,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":401,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":402,"author":{"gitId":"NgChunMan"},"content":" * Saves a list of tasks to a text file.","lastModifiedDate":"2023-08-30"},{"lineNumber":403,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":404,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":405,"author":{"gitId":"NgChunMan"},"content":" * @throws IOException If an I/O error occurs while attempting to write to the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":406,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":407,"author":{"gitId":"NgChunMan"},"content":" private static void saveTaskListToFile(ArrayList\u003cTask\u003e taskList) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":408,"author":{"gitId":"NgChunMan"},"content":" // Create a File object representing the target file path","lastModifiedDate":"2023-08-30"},{"lineNumber":409,"author":{"gitId":"NgChunMan"},"content":" File file \u003d new File(\"./data/evo.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":410,"author":{"gitId":"NgChunMan"},"content":" // Create a BufferedWriter to write to the file","lastModifiedDate":"2023-08-30"},{"lineNumber":411,"author":{"gitId":"NgChunMan"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2023-08-30"},{"lineNumber":412,"author":{"gitId":"NgChunMan"},"content":" // Iterate through the taskList and write each task\u0027s output message to the file","lastModifiedDate":"2023-08-30"},{"lineNumber":413,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":414,"author":{"gitId":"NgChunMan"},"content":" writer.append(taskList.get(i).outputMsg());","lastModifiedDate":"2023-08-30"},{"lineNumber":415,"author":{"gitId":"NgChunMan"},"content":" writer.append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":416,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":417,"author":{"gitId":"NgChunMan"},"content":" // Close the writer","lastModifiedDate":"2023-08-30"},{"lineNumber":418,"author":{"gitId":"NgChunMan"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":419,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":420,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"NgChunMan":420}},{"path":"src/main/java/InvalidOperationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the user input an invalid command.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class InvalidOperationException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs an InvalidOperationException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public InvalidOperationException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the deadline of the Deadline Task added by the user is missing.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingDeadlineException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs an MissingDeadlineException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingDeadlineException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingDescriptionAndDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the description and deadline of the Deadline Task added by the user are missing.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingDescriptionAndDeadlineException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a MissingDescriptionAndDeadlineException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingDescriptionAndDeadlineException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingDescriptionAndDurationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the description and duration of the Event Task added by the user are missing.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingDescriptionAndDurationException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a MissingDescriptionAndDurationException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingDescriptionAndDurationException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingDurationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the duration of the Event Task added by the user is missing.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingDurationException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a MissingDurationException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingDurationException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingTaskToMarkException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the user never specifies which task to mark.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingTaskToMarkException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a MissingTaskToMarkException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingTaskToMarkException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingTaskToUnmarkException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the user never specifies which task to unmark.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingTaskToUnmarkException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a MissingTaskToUnmarkException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingTaskToUnmarkException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingToDoDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the description of the ToDo Task added by user is missing.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingToDoDescriptionException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a MissingToDoDescriptionException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingToDoDescriptionException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/NoDataFileFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the data file does not exist while you run.","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"public class NoDataFileFoundException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" * Constructs a NoDataFileFoundException object.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" public NoDataFileFoundException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/NoFolderFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the required folder does not exist.","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class NoFolderFoundException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" * Constructs an NoFolderFoundException object.","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" public NoFolderFoundException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NgChunMan":11}},{"path":"src/main/java/NoTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when user tries to delete a task from an empty taskList.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class NoTaskException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a NoTaskException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public NoTaskException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * Represents a task with a description and status,isDone","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" * Task can be marked as done or not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" protected String description; // description of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" protected boolean isDone; // isDone keep track the status of task whether it is done or not","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" * Constructs a new task with the given description. The task is initialised as not done.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" * Gets the status of the task based on the variable isDone.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" * @return An \"X\" if the task is done, otherwise a space.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" * Marks the task as done by setting its status (isDone) to true.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" * Marks the task as not done by setting its status (isDone) to false.","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" * Returns output string representation of the Task object.","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" * @return The output string representation of the Task object.","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" public String outputMsg() {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" return \"Task | \" + (this.isDone ? 1 : 0) + \" | \" + this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of the task\u0027s status and description.","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" * @return A string indicating the task\u0027s status and description.","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NgChunMan":60}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * Represents a task without any date/time attached to it.","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" * This class is a subclass of the Task class and inherits its properties and methods.","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" * Constructs a ToDo object with the given description.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * Returns output string representation of the To do task.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" * @return The output string representation of the To do task.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" public String outputMsg() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" return \"T | \" + (isDone ? 1 : 0) + \" | \" + description;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of the ToDo task.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" * @return The string representation of the ToDo task with description.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NgChunMan":35}},{"path":"src/main/java/UnexpectedTaskTypeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when an unexpected task type was encountered when loading the task from txt file.","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class UnexpectedTaskTypeException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs an UnexpectedTaskTypeException object.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public UnexpectedTaskTypeException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NgChunMan":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"todo revision","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"deadline submit homework /by Monday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"event tutorial /from Wed 12pm /to 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":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":"NgChunMan"},"content":"java -classpath ../bin Evo \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":{"NgChunMan":1,"-":37}}] +[{"path":"data/evo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NgChunMan":1}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" * Represents a task that need to be done before a specific date/time.","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * This class is a subclass of the Task class and inherits its properties and methods.","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" * The deadline for the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" protected String by;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" * The formatted deadline for the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" protected String formatDateAndTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" * Constructs a Deadline object with the given description and deadline.","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" * @param by The deadline for the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" * Sets the formatted date and time based on the input \"by\" string for a Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" * The method parses the input \"by\" string and formats it into a user-friendly format.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" * The input \"by\" string should follow the pattern: \"{date}\" or \"{date} {time}\".","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" * The date should be in the \"yyyy-MM-d\" format, and the time should be in \"HHmm\" format.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" * @throws InvalidDateAndTimeInputException If the input \"by\" string is not in the expected format or if the","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" * date/time values are invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" public void setFormatDateAndTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" String[] dateInput \u003d this.by.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" if (dateInput[0].contains(\"/\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" throw new InvalidDateAndTimeInputException();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":" if (dateInput.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" if (dateInput[0].contains(\"-\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" DateTimeFormatter inputTypes \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-d\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" LocalDate date \u003d LocalDate.parse(dateInput[0], inputTypes);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" formatDateAndTime \u003d date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" } else if (dateInput.length \u003d\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" DateTimeFormatter inputTypes \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-d\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" LocalDate date \u003d LocalDate.parse(dateInput[0], inputTypes);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" String formatDate \u003d date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" LocalTime time \u003d LocalTime.parse(dateInput[1], DateTimeFormatter.ofPattern(\"HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" String formatTime \u003d time.format(DateTimeFormatter.ofPattern(\"ha\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" formatDateAndTime \u003d formatDate + \" \" + formatTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"NgChunMan"},"content":" } catch (InvalidDateAndTimeInputException invalidDateAndTimeInputException) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Please type in a valid date/time input. Eg: deadline return book /by 2019-10-15 1800\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" * Generates a formatted output message representing the Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" * The output message includes task details such as task type, completion status, description, and date/time.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" * @return A formatted string representing the Deadline task details.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" * @throws InvalidDateAndTimeInputException If the input \"by\" string is not in the expected format or if the","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" * date/time values are invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" public String outputMsg() throws InvalidDateAndTimeInputException {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" if (this.by.contains(\"-\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" setFormatDateAndTime();","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" return \"D | \" + (isDone ? 1 : 0) + \" | \" + description + \" | \" + formatDateAndTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" // reads form the text file while retrieve the data from it","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"NgChunMan"},"content":" return \"D | \" + (isDone ? 1 : 0) + \" | \" + description + \" | \" + this.by;","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of the Deadline task.","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" * The string includes task details such as task type, completion status, description, and deadline date/time.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" * @return A string representing the Deadline task details.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" if (this.by.contains(\"-\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" setFormatDateAndTime();","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formatDateAndTime + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NgChunMan":100}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" * Represents a task that starts at a specific date/time and ends at a specific date/time.","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * This class is a subclass of the Task class and inherits its properties and methods.","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" * The duration of the event starts at a specific date/time and ends at a specific date/time.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" protected String duration;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * The formatted duration of the event starts at a specific date/time and ends at a specific date/time.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" protected String formatDateAndTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" * Constructs an Event object with the given description and duration.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" * @param duration The duration of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" public Event(String description, String duration) {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" this.duration \u003d duration;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" * Sets the formatted date and time based on the input duration string.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" * The method parses the input duration and formats it into a user-friendly format.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" * The input duration should follow the pattern: \"{date} /from {start_time} /to {end_time}\".","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" * The date should be in the \"yyyy-MM-d\" format, and the start and end times should be in \"HHmm\" format.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" * @throws InvalidDateAndTimeInputException If the input duration is not in the expected format or if the","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" * date/time values are invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" public void setFormatDateAndTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" String[] dateInput \u003d this.duration.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" if (dateInput[1].contains(\"-\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" DateTimeFormatter inputTypes \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-d\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":" LocalDate date \u003d LocalDate.parse(dateInput[1], inputTypes);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" String formatDate \u003d date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" LocalTime startTime \u003d LocalTime.parse(dateInput[2], DateTimeFormatter.ofPattern(\"HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" String formatStartTime \u003d startTime.format(DateTimeFormatter.ofPattern(\"ha\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" LocalTime endTime \u003d LocalTime.parse(dateInput[4], DateTimeFormatter.ofPattern(\"HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" String formatEndTime \u003d endTime.format(DateTimeFormatter.ofPattern(\"ha\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" formatDateAndTime \u003d dateInput[0] + \" \" + formatDate + \" \" + formatStartTime + \" \" + dateInput[3]","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" + \" \" + formatEndTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" throw new InvalidDateAndTimeInputException();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" } catch (InvalidDateAndTimeInputException invalidDateAndTimeInputException) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Please type in a valid date/time input. Eg: event project meeting /from \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" \"2019-12-15 1800 /to 2000\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":" * Generates a formatted output message representing the Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" * The output message includes task details such as task type, completion status, description, and date/time.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" * @return A formatted string representing the Event task details.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" * @throws InvalidDateAndTimeInputException If the input duration is not in the expected format or if the date/time","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" * values are invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":" public String outputMsg() throws InvalidDateAndTimeInputException {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" if (!this.duration.contains(\"-\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" if (!this.duration.contains(\"to\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" throw new InvalidDateAndTimeInputException();","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" return \"E | \" + (isDone ? 1 : 0) + \" | \" + description + \" | \" + this.duration;","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"NgChunMan"},"content":" setFormatDateAndTime();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":" return \"E | \" + (isDone ? 1 : 0) + \" | \" + description + \" | \" + formatDateAndTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of the Event task.","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":" * The string includes task details such as task type, completion status, description, and formatted date/time.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" * @return A string representing the Event task details.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" if (!this.duration.contains(\"-\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":" // reads from txt file","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":" return \"[E]\" + super.toString() + \" (\" + this.duration + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" setFormatDateAndTime();","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" return \"[E]\" + super.toString() + \" (\" + formatDateAndTime + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NgChunMan":102}},{"path":"src/main/java/Evo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" * Evo is a Personal Assistant Chatbot that helps a person to keep track of various things.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" * Tasks are represented by the nested static class Task.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"public class Evo {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * The main method of Evo program.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" * @param args The command-line arguments passed to the program.","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" // Displays Evo logo and welcome message","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" String logo \u003d \" _____\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" + \"| ___|\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" + \"| |___ __ __ _____\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" + \"| ___|\\\\ \\\\ / / | |\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" + \"| |___ \\\\ \\\\/ / | |\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" + \"|_____| \\\\__/ |_____|\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" // Initialises welcome and goodbye messages","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" String welcomeMsg \u003d \"Hello! I\u0027m Evo.\\n\" + \"What can I do for you?\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" String byeMsg \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" // Prints out welcome message once the user using Evo","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" System.out.println(welcomeMsg);","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" // An ArrayList to store the Task objects","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" // Loads the data from the file when the chatbot starts up","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" File folder \u003d new File(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" if (!folder.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" throw new NoFolderFoundException();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" File file \u003d new File(\"./data/evo.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" throw new NoDataFileFoundException();","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" String[] type \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" switch (type[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" Task toDo \u003d new ToDo(type[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" if (Integer.parseInt(type[1]) \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" toDo.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"NgChunMan"},"content":" taskList.add(toDo);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"NgChunMan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"NgChunMan"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"NgChunMan"},"content":" Deadline deadline \u003d new Deadline(type[2], type[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"NgChunMan"},"content":" if (Integer.parseInt(type[1]) \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"NgChunMan"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"NgChunMan"},"content":" taskList.add(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"NgChunMan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"NgChunMan"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"NgChunMan"},"content":" Event event \u003d new Event(type[2], type[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"NgChunMan"},"content":" if (Integer.parseInt(type[1]) \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"NgChunMan"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"NgChunMan"},"content":" taskList.add(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"NgChunMan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"NgChunMan"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"NgChunMan"},"content":" throw new UnexpectedTaskTypeException();","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"NgChunMan"},"content":" } catch (IOException ioException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Something went wrong: \" + ioException.getMessage() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"NgChunMan"},"content":" } catch (NoFolderFoundException noFolderFoundException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"NgChunMan"},"content":" // Catches the exception when the required folder does not exist","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"The folder does not exist.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"NgChunMan"},"content":" } catch (NoDataFileFoundException noDataFileFoundException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"NgChunMan"},"content":" // Catches the exception when the data file does not exist while you run","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"The required data file does not exist.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"NgChunMan"},"content":" } catch (UnexpectedTaskTypeException unexpectedTaskTypeException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"NgChunMan"},"content":" // Catches the exception when an unexpected task type was encountered when loading the task from txt file","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Unexpected task type encountered when loading the task from txt file.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"NgChunMan"},"content":" // Initialise a scanner to receive text input from user","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"NgChunMan"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"NgChunMan"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"NgChunMan"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"NgChunMan"},"content":" // Assign the text to this string variable called instruction","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"NgChunMan"},"content":" String instruction \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"NgChunMan"},"content":" // If the text entered is bye, then print out the bye message and exit the loop","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"NgChunMan"},"content":" if (Objects.equals(instruction, \"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"NgChunMan"},"content":" System.out.println(byeMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"NgChunMan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"NgChunMan"},"content":" * If the text entered is list, then print out the status and description of tasks added before by the","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"NgChunMan"},"content":" * user. For Deadline and Event objects, the due date and duration will also be printed respectively.","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"NgChunMan"},"content":" * Then exit the current while loop and move to the next iteration.","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"NgChunMan"},"content":" if (Objects.equals(instruction, \"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"NgChunMan"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"NgChunMan"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d taskList.size() - 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"NgChunMan"},"content":" System.out.println(i + 1 + \".\" + taskList.get(i).toString() + \"\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"NgChunMan"},"content":" System.out.println(i + 1 + \".\" + taskList.get(i).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"NgChunMan"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"NgChunMan"},"content":" if (!instruction.contains(\"/\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"NgChunMan"},"content":" String[] actionType \u003d instruction.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"NgChunMan"},"content":" if (Objects.equals(actionType[0], \"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"NgChunMan"},"content":" if (actionType.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"NgChunMan"},"content":" throw new MissingTaskToMarkException();","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"NgChunMan"},"content":" // Mark a task as done","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"NgChunMan"},"content":" markTaskDone(taskList, actionType);","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"NgChunMan"},"content":" } else if (Objects.equals(actionType[0], \"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"NgChunMan"},"content":" if (actionType.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"NgChunMan"},"content":" throw new MissingTaskToUnmarkException();","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"NgChunMan"},"content":" // Mark a task as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"NgChunMan"},"content":" unmarkTask(taskList, actionType);","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"NgChunMan"},"content":" } else if (Objects.equals(actionType[0], \"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"NgChunMan"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"NgChunMan"},"content":" throw new NoTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"NgChunMan"},"content":" // Delete a task from taskList","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"NgChunMan"},"content":" deleteTask(taskList, actionType);","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"NgChunMan"},"content":" } else if (Objects.equals(actionType[0], \"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"NgChunMan"},"content":" // Add To Do object","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"NgChunMan"},"content":" if (actionType.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"NgChunMan"},"content":" throw new MissingToDoDescriptionException();","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"NgChunMan"},"content":" addToDoTask(taskList, actionType);","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"NgChunMan"},"content":" } else if (Objects.equals(actionType[0], \"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"NgChunMan"},"content":" if (actionType.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"NgChunMan"},"content":" throw new MissingDescriptionAndDeadlineException();","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"NgChunMan"},"content":" throw new MissingDeadlineException();","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"NgChunMan"},"content":" } else if (Objects.equals(actionType[0], \"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"NgChunMan"},"content":" if (actionType.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"NgChunMan"},"content":" throw new MissingDescriptionAndDurationException();","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"NgChunMan"},"content":" throw new MissingDurationException();","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"NgChunMan"},"content":" throw new InvalidOperationException();","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"NgChunMan"},"content":" String[] typeAndDates \u003d instruction.split(\"/\");","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"NgChunMan"},"content":" String[] actionType \u003d typeAndDates[0].split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"NgChunMan"},"content":" int count \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"NgChunMan"},"content":" char target \u003d \u0027/\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 0; i \u003c instruction.length(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"NgChunMan"},"content":" if (instruction.charAt(i) \u003d\u003d target) {","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"NgChunMan"},"content":" count++;","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"NgChunMan"},"content":" if (Objects.equals(actionType[0], \"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"NgChunMan"},"content":" if (count !\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"NgChunMan"},"content":" throw new InvalidDateInputException();","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"NgChunMan"},"content":" // Add Deadline object to the taskList","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"NgChunMan"},"content":" addDeadlineTask(taskList, actionType, typeAndDates);","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"NgChunMan"},"content":" } else if (Objects.equals(actionType[0], \"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"NgChunMan"},"content":" if (count !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"NgChunMan"},"content":" throw new InvalidDateAndTimeInputException();","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"NgChunMan"},"content":" // Add Event object to the taskList","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"NgChunMan"},"content":" addEventTask(taskList, actionType, typeAndDates);","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"NgChunMan"},"content":" saveTaskListToFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"NgChunMan"},"content":" } catch (InvalidOperationException invalidOpExp) {","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the operation is invalid","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingToDoDescriptionException missToDoExp) {","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the description of ToDo task is missing","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Description of this task is missing. \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":200,"author":{"gitId":"NgChunMan"},"content":" \"Please specify the description of this task.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingTaskToMarkException missingTaskToMarkExp) {","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when user never specifies which task to be marked","lastModifiedDate":"2023-08-30"},{"lineNumber":203,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Please specify the task to be marked.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":204,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingTaskToUnmarkException missingTaskToUnmarkExp) {","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when user never specifies which task to be unmarked","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Please specify the task to be unmarked.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingDescriptionAndDeadlineException missingDescAndDeadlineExp) {","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the description and deadline of Deadline object are missing","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Description and deadline of this task are missing. \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"NgChunMan"},"content":" \"Please specify the description and the deadline of this task.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingDescriptionAndDurationException missingDescAndDurationExp) {","lastModifiedDate":"2023-08-30"},{"lineNumber":212,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the description and duration of Event object are missing","lastModifiedDate":"2023-08-30"},{"lineNumber":213,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Description and duration of this event are missing. \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":214,"author":{"gitId":"NgChunMan"},"content":" \"Please specify the description and the duration of this event.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":215,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingDeadlineException missingDeadlineException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":216,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the deadline of Deadline object is missing","lastModifiedDate":"2023-08-30"},{"lineNumber":217,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Deadline of this task is missing. Please specify the deadline of this task.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":218,"author":{"gitId":"NgChunMan"},"content":" } catch (MissingDurationException missingDurationException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":219,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the duration of Event object is missing","lastModifiedDate":"2023-08-30"},{"lineNumber":220,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Duration of this event is missing. \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":221,"author":{"gitId":"NgChunMan"},"content":" \"Please specify the start date/time and end date/time.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":222,"author":{"gitId":"NgChunMan"},"content":" } catch (NoTaskException noTaskException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":223,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when user tries to delete task from an empty taskList","lastModifiedDate":"2023-08-30"},{"lineNumber":224,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"This task cannot be deleted as there is no task in the list.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":225,"author":{"gitId":"NgChunMan"},"content":" } catch (InvalidDateInputException invalidDateInputException) {","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the user types in an invalid date","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Please type in a valid date input. Eg: deadline return book /from \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"NgChunMan"},"content":" \"2019-12-15 1800\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"NgChunMan"},"content":" } catch (InvalidDateAndTimeInputException invalidDateAndTimeInputException) {","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"NgChunMan"},"content":" // Catch the exception when the user types in an invalid date and time","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Please type in a valid date/time input. Eg: event project meeting /from \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"NgChunMan"},"content":" \"2019-12-15 1800 /to 2000\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"NgChunMan"},"content":" } catch (IOException ioException) {","lastModifiedDate":"2023-08-30"},{"lineNumber":234,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Something went wrong: \" + ioException.getMessage() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":235,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":236,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":237,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":238,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":239,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":240,"author":{"gitId":"NgChunMan"},"content":" * Adds a ToDo task to the provided task list based on user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":241,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":242,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects to which the ToDo task will be added.","lastModifiedDate":"2023-08-30"},{"lineNumber":243,"author":{"gitId":"NgChunMan"},"content":" * @param actionType An array containing the action type and description of the ToDo task.","lastModifiedDate":"2023-08-30"},{"lineNumber":244,"author":{"gitId":"NgChunMan"},"content":" * @throws IOException If an I/O error occurs while attempting to modify the task list or display messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":245,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingToDoDescriptionException If the ToDo task description is missing in the input.","lastModifiedDate":"2023-08-30"},{"lineNumber":246,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":247,"author":{"gitId":"NgChunMan"},"content":" private static void addToDoTask(ArrayList\u003cTask\u003e taskList, String[] actionType)","lastModifiedDate":"2023-08-30"},{"lineNumber":248,"author":{"gitId":"NgChunMan"},"content":" throws IOException, MissingToDoDescriptionException {","lastModifiedDate":"2023-08-30"},{"lineNumber":249,"author":{"gitId":"NgChunMan"},"content":" String taskDescription \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":250,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 1; i \u003c actionType.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":251,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d actionType.length - 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":252,"author":{"gitId":"NgChunMan"},"content":" taskDescription +\u003d actionType[i];","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":254,"author":{"gitId":"NgChunMan"},"content":" taskDescription +\u003d actionType[i] + \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":255,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":256,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"NgChunMan"},"content":" ToDo toDo \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-23"},{"lineNumber":258,"author":{"gitId":"NgChunMan"},"content":" taskList.add(toDo);","lastModifiedDate":"2023-08-24"},{"lineNumber":259,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":260,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":261,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\" \" + toDo.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":262,"author":{"gitId":"NgChunMan"},"content":" if (taskList.size() \u003c\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":263,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":265,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":266,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":267,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":268,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":269,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":270,"author":{"gitId":"NgChunMan"},"content":" * Deletes a task from the provided task list based on user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":271,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":272,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects from which the task will be deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":273,"author":{"gitId":"NgChunMan"},"content":" * @param actionType An array containing the action type and task number to be deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":274,"author":{"gitId":"NgChunMan"},"content":" * @throws NoTaskException If there are no tasks to delete in the taskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":275,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":276,"author":{"gitId":"NgChunMan"},"content":" private static void deleteTask(ArrayList\u003cTask\u003e taskList, String[] actionType) throws NoTaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":277,"author":{"gitId":"NgChunMan"},"content":" // Deletes a task from taskList","lastModifiedDate":"2023-08-30"},{"lineNumber":278,"author":{"gitId":"NgChunMan"},"content":" int taskNumberToDelete \u003d Integer.parseInt(actionType[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":279,"author":{"gitId":"NgChunMan"},"content":" Task deletedTask \u003d taskList.get(taskNumberToDelete);","lastModifiedDate":"2023-08-30"},{"lineNumber":280,"author":{"gitId":"NgChunMan"},"content":" taskList.remove(taskNumberToDelete);","lastModifiedDate":"2023-08-30"},{"lineNumber":281,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":282,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":283,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\" \" + deletedTask.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":284,"author":{"gitId":"NgChunMan"},"content":" if (taskList.size() \u003c\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":285,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task in the list.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":286,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":287,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":288,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":289,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":290,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":291,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":292,"author":{"gitId":"NgChunMan"},"content":" * Marks a task as done in the provided task list based on user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":293,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":294,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects in which the task will be marked as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":295,"author":{"gitId":"NgChunMan"},"content":" * @param actionType An array containing the action type and task number to be marked as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":296,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingTaskToMarkException If the task number to mark as done is missing in the input.","lastModifiedDate":"2023-08-30"},{"lineNumber":297,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":298,"author":{"gitId":"NgChunMan"},"content":" private static void markTaskDone(ArrayList\u003cTask\u003e taskList, String[] actionType) throws MissingTaskToMarkException {","lastModifiedDate":"2023-08-30"},{"lineNumber":299,"author":{"gitId":"NgChunMan"},"content":" // Marks a task as done","lastModifiedDate":"2023-08-30"},{"lineNumber":300,"author":{"gitId":"NgChunMan"},"content":" int taskNumberInList \u003d Integer.parseInt(actionType[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":301,"author":{"gitId":"NgChunMan"},"content":" taskList.get(taskNumberInList).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":302,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":303,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":304,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\" \" + taskList.get(taskNumberInList).toString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":305,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":306,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":307,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":308,"author":{"gitId":"NgChunMan"},"content":" * Unmarks a task as not done in the provided task list based on user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":309,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":310,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects in which the task will be unmarked.","lastModifiedDate":"2023-08-30"},{"lineNumber":311,"author":{"gitId":"NgChunMan"},"content":" * @param actionType An array containing the action type and task number to be unmarked.","lastModifiedDate":"2023-08-30"},{"lineNumber":312,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingTaskToUnmarkException If the task number to unmark is missing in the input.","lastModifiedDate":"2023-08-30"},{"lineNumber":313,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":314,"author":{"gitId":"NgChunMan"},"content":" private static void unmarkTask(ArrayList\u003cTask\u003e taskList, String[] actionType) throws MissingTaskToUnmarkException {","lastModifiedDate":"2023-08-30"},{"lineNumber":315,"author":{"gitId":"NgChunMan"},"content":" // Marks a task as not done","lastModifiedDate":"2023-08-30"},{"lineNumber":316,"author":{"gitId":"NgChunMan"},"content":" int taskNumberInList \u003d Integer.parseInt(actionType[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":317,"author":{"gitId":"NgChunMan"},"content":" taskList.get(taskNumberInList).markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":318,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":319,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":320,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\" \" + taskList.get(taskNumberInList).toString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":321,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":322,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":323,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":324,"author":{"gitId":"NgChunMan"},"content":" * Adds a Deadline task to the provided task list based on user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":325,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":326,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects to which the Deadline task will be added.","lastModifiedDate":"2023-08-30"},{"lineNumber":327,"author":{"gitId":"NgChunMan"},"content":" * @param actionType An array containing the action type and description of the Deadline task.","lastModifiedDate":"2023-08-30"},{"lineNumber":328,"author":{"gitId":"NgChunMan"},"content":" * @param typeAndDates An array containing the action type, description and due date/time of the Deadline task.","lastModifiedDate":"2023-08-30"},{"lineNumber":329,"author":{"gitId":"NgChunMan"},"content":" * @throws IOException If an I/O error occurs while attempting to modify the task list or display messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":330,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingDeadlineException If the due date/time of the Deadline task is missing in the input.","lastModifiedDate":"2023-08-30"},{"lineNumber":331,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingDescriptionAndDeadlineException If the Deadline task description and due date/time are missing in the input.","lastModifiedDate":"2023-08-30"},{"lineNumber":332,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":333,"author":{"gitId":"NgChunMan"},"content":" private static void addDeadlineTask(ArrayList\u003cTask\u003e taskList, String[] actionType, String[] typeAndDates)","lastModifiedDate":"2023-08-30"},{"lineNumber":334,"author":{"gitId":"NgChunMan"},"content":" throws IOException, MissingDeadlineException, MissingDescriptionAndDeadlineException {","lastModifiedDate":"2023-08-30"},{"lineNumber":335,"author":{"gitId":"NgChunMan"},"content":" // Constructs the description of the deadline task from the user input","lastModifiedDate":"2023-08-30"},{"lineNumber":336,"author":{"gitId":"NgChunMan"},"content":" String taskDescription \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":337,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 1; i \u003c actionType.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":338,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d actionType.length - 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":339,"author":{"gitId":"NgChunMan"},"content":" taskDescription +\u003d actionType[i];","lastModifiedDate":"2023-08-30"},{"lineNumber":340,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":341,"author":{"gitId":"NgChunMan"},"content":" taskDescription +\u003d actionType[i] + \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":342,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":343,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":344,"author":{"gitId":"NgChunMan"},"content":" // Constructs the task due date/time","lastModifiedDate":"2023-09-01"},{"lineNumber":345,"author":{"gitId":"NgChunMan"},"content":" String[] dates \u003d typeAndDates[1].split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":346,"author":{"gitId":"NgChunMan"},"content":" String taskBy \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":347,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 1; i \u003c dates.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":348,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d dates.length - 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":349,"author":{"gitId":"NgChunMan"},"content":" taskBy +\u003d dates[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":350,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":351,"author":{"gitId":"NgChunMan"},"content":" taskBy +\u003d dates[i] + \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":352,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":353,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":354,"author":{"gitId":"NgChunMan"},"content":" // Creates the deadline object with the taskDescription and taskBy","lastModifiedDate":"2023-08-30"},{"lineNumber":355,"author":{"gitId":"NgChunMan"},"content":" Deadline deadline \u003d new Deadline(taskDescription, taskBy);","lastModifiedDate":"2023-08-23"},{"lineNumber":356,"author":{"gitId":"NgChunMan"},"content":" taskList.add(deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":357,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":358,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":359,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\" \" + deadline.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":360,"author":{"gitId":"NgChunMan"},"content":" if (taskList.size() \u003c\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":361,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":362,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":363,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":364,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":365,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":366,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":367,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":368,"author":{"gitId":"NgChunMan"},"content":" * Adds an Event task to the provided task list based on user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":369,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":370,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects to which the Event task will be added.","lastModifiedDate":"2023-08-30"},{"lineNumber":371,"author":{"gitId":"NgChunMan"},"content":" * @param actionType An array containing the action type and description of the Event task.","lastModifiedDate":"2023-08-30"},{"lineNumber":372,"author":{"gitId":"NgChunMan"},"content":" * @param typeAndDates An array containing the action type, description, start date/time, and end date/time of Event task.","lastModifiedDate":"2023-08-30"},{"lineNumber":373,"author":{"gitId":"NgChunMan"},"content":" * @throws IOException If an I/O error occurs while attempting to modify the task list or display messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":374,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingDescriptionAndDurationException If the Event task description and duration are missing in input.","lastModifiedDate":"2023-08-30"},{"lineNumber":375,"author":{"gitId":"NgChunMan"},"content":" * @throws MissingDurationException If the duration of the Event task is missing in the input.","lastModifiedDate":"2023-08-30"},{"lineNumber":376,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":377,"author":{"gitId":"NgChunMan"},"content":" private static void addEventTask(ArrayList\u003cTask\u003e taskList, String[] actionType, String[] typeAndDates)","lastModifiedDate":"2023-08-30"},{"lineNumber":378,"author":{"gitId":"NgChunMan"},"content":" throws IOException, MissingDescriptionAndDurationException, MissingDurationException {","lastModifiedDate":"2023-08-30"},{"lineNumber":379,"author":{"gitId":"NgChunMan"},"content":" // Adds Event object to the taskList","lastModifiedDate":"2023-09-01"},{"lineNumber":380,"author":{"gitId":"NgChunMan"},"content":" String[] datesFrom \u003d typeAndDates[1].split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":381,"author":{"gitId":"NgChunMan"},"content":" String[] datesTo \u003d typeAndDates[2].split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":382,"author":{"gitId":"NgChunMan"},"content":" String taskDescription \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":383,"author":{"gitId":"NgChunMan"},"content":" // Constructs the description of the event task from the user input","lastModifiedDate":"2023-08-30"},{"lineNumber":384,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 1; i \u003c actionType.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":385,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d actionType.length - 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":386,"author":{"gitId":"NgChunMan"},"content":" taskDescription +\u003d actionType[i];","lastModifiedDate":"2023-08-30"},{"lineNumber":387,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":388,"author":{"gitId":"NgChunMan"},"content":" taskDescription +\u003d actionType[i] + \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":389,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":390,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":391,"author":{"gitId":"NgChunMan"},"content":" // Constructs the task due date/time duration","lastModifiedDate":"2023-08-30"},{"lineNumber":392,"author":{"gitId":"NgChunMan"},"content":" String taskDuration \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":393,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 0; i \u003c datesFrom.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":394,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d 0) {","lastModifiedDate":"2023-08-23"},{"lineNumber":395,"author":{"gitId":"NgChunMan"},"content":" taskDuration +\u003d datesFrom[i] + \": \";","lastModifiedDate":"2023-08-23"},{"lineNumber":396,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":397,"author":{"gitId":"NgChunMan"},"content":" taskDuration +\u003d datesFrom[i] + \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":398,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":399,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":400,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 0; i \u003c datesTo.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":401,"author":{"gitId":"NgChunMan"},"content":" if (i \u003d\u003d 0) {","lastModifiedDate":"2023-08-23"},{"lineNumber":402,"author":{"gitId":"NgChunMan"},"content":" taskDuration +\u003d datesTo[i] + \": \";","lastModifiedDate":"2023-08-23"},{"lineNumber":403,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":404,"author":{"gitId":"NgChunMan"},"content":" taskDuration +\u003d datesTo[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":405,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":406,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":407,"author":{"gitId":"NgChunMan"},"content":" // Creates the event object with the taskDescription and taskDuration","lastModifiedDate":"2023-09-01"},{"lineNumber":408,"author":{"gitId":"NgChunMan"},"content":" Event event \u003d new Event(taskDescription, taskDuration);","lastModifiedDate":"2023-08-23"},{"lineNumber":409,"author":{"gitId":"NgChunMan"},"content":" taskList.add(event);","lastModifiedDate":"2023-08-24"},{"lineNumber":410,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":411,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":412,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\" \" + event.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":413,"author":{"gitId":"NgChunMan"},"content":" if (taskList.size() \u003c\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":414,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":415,"author":{"gitId":"NgChunMan"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":416,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":417,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":418,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":419,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":420,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":421,"author":{"gitId":"NgChunMan"},"content":" * Saves a list of tasks to a text file.","lastModifiedDate":"2023-08-30"},{"lineNumber":422,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":423,"author":{"gitId":"NgChunMan"},"content":" * @param taskList The ArrayList containing the list of Task objects to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":424,"author":{"gitId":"NgChunMan"},"content":" * @throws IOException If an I/O error occurs while attempting to write to the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":425,"author":{"gitId":"NgChunMan"},"content":" * @throws InvalidDateAndTimeInputException If an invalid date/time input is encountered.","lastModifiedDate":"2023-09-01"},{"lineNumber":426,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":427,"author":{"gitId":"NgChunMan"},"content":" private static void saveTaskListToFile(ArrayList\u003cTask\u003e taskList) throws IOException,","lastModifiedDate":"2023-09-01"},{"lineNumber":428,"author":{"gitId":"NgChunMan"},"content":" InvalidDateAndTimeInputException {","lastModifiedDate":"2023-09-01"},{"lineNumber":429,"author":{"gitId":"NgChunMan"},"content":" // Creates a File object representing the target file path","lastModifiedDate":"2023-09-01"},{"lineNumber":430,"author":{"gitId":"NgChunMan"},"content":" File file \u003d new File(\"./data/evo.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":431,"author":{"gitId":"NgChunMan"},"content":" // Creates a BufferedWriter to write to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":432,"author":{"gitId":"NgChunMan"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2023-08-30"},{"lineNumber":433,"author":{"gitId":"NgChunMan"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":434,"author":{"gitId":"NgChunMan"},"content":" // Iterates through the taskList and write each task\u0027s output message to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":435,"author":{"gitId":"NgChunMan"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":436,"author":{"gitId":"NgChunMan"},"content":" writer.append(taskList.get(i).outputMsg());","lastModifiedDate":"2023-08-30"},{"lineNumber":437,"author":{"gitId":"NgChunMan"},"content":" writer.append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":438,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":439,"author":{"gitId":"NgChunMan"},"content":" } catch (InvalidDateAndTimeInputException invalidDateAndTimeInputException) {","lastModifiedDate":"2023-09-01"},{"lineNumber":440,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Please type in a valid date/time input. Eg: event project meeting /from \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":441,"author":{"gitId":"NgChunMan"},"content":" \"2019-12-15 1800 /to 2000.\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":442,"author":{"gitId":"NgChunMan"},"content":" } catch (IOException ioException) {","lastModifiedDate":"2023-09-01"},{"lineNumber":443,"author":{"gitId":"NgChunMan"},"content":" System.out.println(\"Something went wrong: \" + ioException.getMessage() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":444,"author":{"gitId":"NgChunMan"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":445,"author":{"gitId":"NgChunMan"},"content":" // Close the writer","lastModifiedDate":"2023-08-30"},{"lineNumber":446,"author":{"gitId":"NgChunMan"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":447,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":448,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":449,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NgChunMan":449}},{"path":"src/main/java/InvalidDateAndTimeInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the user types in an invalid date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class InvalidDateAndTimeInputException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs an InvalidDateAndTimeInputException object.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public InvalidDateAndTimeInputException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NgChunMan":12}},{"path":"src/main/java/InvalidDateInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the user types in an invalid date.","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class InvalidDateInputException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" * Constructs an InvalidDateInputException object.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" public InvalidDateInputException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"NgChunMan":11}},{"path":"src/main/java/InvalidOperationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the user input an invalid command.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class InvalidOperationException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs an InvalidOperationException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public InvalidOperationException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the deadline of the Deadline Task added by the user is missing.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingDeadlineException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs an MissingDeadlineException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingDeadlineException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingDescriptionAndDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the description and deadline of the Deadline Task added by the user are missing.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingDescriptionAndDeadlineException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a MissingDescriptionAndDeadlineException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingDescriptionAndDeadlineException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingDescriptionAndDurationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the description and duration of the Event Task added by the user are missing.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingDescriptionAndDurationException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a MissingDescriptionAndDurationException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingDescriptionAndDurationException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingDurationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the duration of the Event Task added by the user is missing.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingDurationException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a MissingDurationException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingDurationException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingTaskToMarkException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the user never specifies which task to mark.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingTaskToMarkException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a MissingTaskToMarkException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingTaskToMarkException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingTaskToUnmarkException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the user never specifies which task to unmark.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingTaskToUnmarkException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a MissingTaskToUnmarkException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingTaskToUnmarkException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/MissingToDoDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the description of the ToDo Task added by user is missing.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class MissingToDoDescriptionException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a MissingToDoDescriptionException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public MissingToDoDescriptionException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/NoDataFileFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the data file does not exist while you run.","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"public class NoDataFileFoundException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" * Constructs a NoDataFileFoundException object.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" public NoDataFileFoundException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/NoFolderFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when the required folder does not exist.","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class NoFolderFoundException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" * Constructs an NoFolderFoundException object.","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" public NoFolderFoundException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NgChunMan":11}},{"path":"src/main/java/NoTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when user tries to delete a task from an empty taskList.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class NoTaskException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs a NoTaskException object.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public NoTaskException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":13}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * Represents a task with a description and status,isDone","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" * Task can be marked as done or not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" protected String description; // description of the task","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" protected boolean isDone; // isDone keep track the status of task whether it is done or not","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" * Constructs a new task with the given description. The task is initialised as not done.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" * Gets the status of the task based on the variable isDone.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" * @return An \"X\" if the task is done, otherwise a space.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" * Marks the task as done by setting its status (isDone) to true.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"NgChunMan"},"content":" * Marks the task as not done by setting its status (isDone) to false.","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"NgChunMan"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"NgChunMan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"NgChunMan"},"content":" * Returns output string representation of the Task object.","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"NgChunMan"},"content":" * @return The output string representation of the Task object.","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"NgChunMan"},"content":" public String outputMsg() throws InvalidDateAndTimeInputException {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"NgChunMan"},"content":" return \"Task | \" + (this.isDone ? 1 : 0) + \" | \" + this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of the task\u0027s status and description.","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"NgChunMan"},"content":" * @return A string indicating the task\u0027s status and description.","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"NgChunMan"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NgChunMan":60}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * Represents a task without any date/time attached to it.","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" * This class is a subclass of the Task class and inherits its properties and methods.","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" * Constructs a ToDo object with the given description.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"NgChunMan"},"content":" * Returns output string representation of the To do task.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"NgChunMan"},"content":" * @return The output string representation of the To do task.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"NgChunMan"},"content":" public String outputMsg() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"NgChunMan"},"content":" return \"T | \" + (isDone ? 1 : 0) + \" | \" + description;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"NgChunMan"},"content":" * Returns a string representation of the ToDo task.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"NgChunMan"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"NgChunMan"},"content":" * @return The string representation of the ToDo task with description.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"NgChunMan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"NgChunMan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"NgChunMan"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"NgChunMan":35}},{"path":"src/main/java/UnexpectedTaskTypeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":" * This exception is thrown when an unexpected task type was encountered when loading the task from txt file.","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"public class UnexpectedTaskTypeException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":" * Constructs an UnexpectedTaskTypeException object.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":" public UnexpectedTaskTypeException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"NgChunMan"},"content":" super();","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"NgChunMan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"NgChunMan"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"NgChunMan"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"NgChunMan":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"NgChunMan"},"content":"todo revision","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"NgChunMan"},"content":"deadline submit homework /by Monday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"NgChunMan"},"content":"event tutorial /from Wed 12pm /to 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"NgChunMan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"NgChunMan"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"NgChunMan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"NgChunMan"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"NgChunMan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"NgChunMan"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"NgChunMan":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":"NgChunMan"},"content":"java -classpath ../bin Evo \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":{"NgChunMan":1,"-":37}}] diff --git a/NgChunMan_ip_master/commits.json b/NgChunMan_ip_master/commits.json index 57aee617..c4d45e5d 100644 --- a/NgChunMan_ip_master/commits.json +++ b/NgChunMan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"NgChunMan":[{"date":"2023-08-22","commitResults":[{"hash":"de120df366273e67ce78bcc66b5989f3f967b266","isMergeCommit":false,"messageTitle":"Add: Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":10}}}]},{"date":"2023-08-23","commitResults":[{"hash":"0d9df654d36b9c9d7c38ef63bde15d3fc75dd5f2","isMergeCommit":false,"messageTitle":"Add: Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"30861a78979c0ebd161e533210ce87c07de3b00c","isMergeCommit":false,"messageTitle":"Add: Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":2}}},{"hash":"bd8d4b0a7a76f29ec46da6f57e02c0cd762e88ba","isMergeCommit":false,"messageTitle":"Add: Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":10}}},{"hash":"5f543248de8277dce61348250c9603ba173b9e76","isMergeCommit":false,"messageTitle":"Add: Level 4 (Inheritance)","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":211,"deletions":29}}}]},{"date":"2023-08-24","commitResults":[{"hash":"bd2242b062dea0bd5b69251836bb71ff7d7afe9c","isMergeCommit":false,"messageTitle":"Add: TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":11,"deletions":7},"sh":{"insertions":1,"deletions":1}}},{"hash":"fb2e8c345308b0826f3d109f1dd0fa2f9eb109ad","isMergeCommit":false,"messageTitle":"Add: Level 5 (Error Handling)","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":274,"deletions":120}}},{"hash":"1a627d36771499e66e649ca2fc7f0883cb86a84b","isMergeCommit":false,"messageTitle":"Add: Level 6 (Delete)","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":32}}}]},{"date":"2023-08-30","commitResults":[{"hash":"96e54877d988faa531c909256ef0686df7575be1","isMergeCommit":false,"messageTitle":"Add level 7 save task functionality","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":364,"deletions":126}}}]}]},"authorFileTypeContributionMap":{"NgChunMan":{"java":754,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"NgChunMan":39147.848},"authorDisplayNameMap":{"NgChunMan":"CS2103T-W15-2 NG C.. MAN"}} +{"authorDailyContributionsMap":{"NgChunMan":[{"date":"2023-08-22","commitResults":[{"hash":"de120df366273e67ce78bcc66b5989f3f967b266","isMergeCommit":false,"messageTitle":"Add: Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":10}}}]},{"date":"2023-08-23","commitResults":[{"hash":"0d9df654d36b9c9d7c38ef63bde15d3fc75dd5f2","isMergeCommit":false,"messageTitle":"Add: Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"30861a78979c0ebd161e533210ce87c07de3b00c","isMergeCommit":false,"messageTitle":"Add: Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":2}}},{"hash":"bd8d4b0a7a76f29ec46da6f57e02c0cd762e88ba","isMergeCommit":false,"messageTitle":"Add: Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":10}}},{"hash":"5f543248de8277dce61348250c9603ba173b9e76","isMergeCommit":false,"messageTitle":"Add: Level 4 (Inheritance)","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":211,"deletions":29}}}]},{"date":"2023-08-24","commitResults":[{"hash":"bd2242b062dea0bd5b69251836bb71ff7d7afe9c","isMergeCommit":false,"messageTitle":"Add: TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":11,"deletions":7},"sh":{"insertions":1,"deletions":1}}},{"hash":"fb2e8c345308b0826f3d109f1dd0fa2f9eb109ad","isMergeCommit":false,"messageTitle":"Add: Level 5 (Error Handling)","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":274,"deletions":120}}},{"hash":"1a627d36771499e66e649ca2fc7f0883cb86a84b","isMergeCommit":false,"messageTitle":"Add: Level 6 (Delete)","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":32}}}]},{"date":"2023-08-30","commitResults":[{"hash":"96e54877d988faa531c909256ef0686df7575be1","isMergeCommit":false,"messageTitle":"Add level 7 save task functionality","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":364,"deletions":126}}}]},{"date":"2023-09-01","commitResults":[{"hash":"50ff6cb103a03ddbd9d75bcd85e2f93b683ab4a6","isMergeCommit":false,"messageTitle":"Add level 8 dates and times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":197,"deletions":27}}}]}]},"authorFileTypeContributionMap":{"NgChunMan":{"java":924,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"NgChunMan":35601.133},"authorDisplayNameMap":{"NgChunMan":"CS2103T-W15-2 NG C.. MAN"}} diff --git a/Nid21cs_ip_master/authorship.json b/Nid21cs_ip_master/authorship.json index 3a9f1646..274aa7eb 100644 --- a/Nid21cs_ip_master/authorship.json +++ b/Nid21cs_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"# Duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":"3. After that, locate the `src/main/java/Duke.Duke.java` file, right-click it, and choose `Run Duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Nid21cs":2,"-":22}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"T|0|balls","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Nid21cs":1}},{"path":"src/main/java/Duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"public class Deadline extends SingleTask {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" String formattedTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" LocalDateTime DueBy;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d deadline.split(\"[/ ]\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" int day \u003d Integer.parseInt(parts[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" int month \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" int year \u003d Integer.parseInt(parts[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" int hour \u003d Integer.parseInt(parts[3].substring(0, 2));","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" int minute \u003d Integer.parseInt(parts[3].substring(2));","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" LocalDateTime dateTime \u003d LocalDateTime.of(year, month, day, hour, minute);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" this.DueBy \u003d dateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" String formattedDateTime \u003d dateTime.format(formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" this.formattedTime \u003d formattedDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" public void mark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Ok boy i mark for you already \\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" \"[\" +this.getStatusIcon() +\"] \" + this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" public void unmark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Ok boy I unmark for you already \\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" \"[\" +this.getStatusIcon() +\"] \" + this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" return \"OK DONE ALR added your Deadline ah:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" \"[D][\" + getStatusIcon() + \"] \" + this.description +\"(by: \"+ this.formattedTime + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" public String listString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" return \". [D][\" + getStatusIcon() + \"] \" + this.description +\"(by: \"+ this.formattedTime + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" public String remove() {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" return \"OK DONE ALR removed your Deadline ah:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" \"[D][\" + getStatusIcon() + \"] \" + this.description +\"(by: \"+ this.formattedTime + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" public String toSaveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" return \"D|\" + (this.isDone ? \"1\" : \"0\") + \"|\" + this.description + \"|\" + this.formattedTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Nid21cs":58}},{"path":"src/main/java/Duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" private Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" public Duke() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Hello! I\u0027m Auntie Maggie \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" \"\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" Storage storage \u003d new Storage(\"./data/duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" File dataDir \u003d new File(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" if (!dataDir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" dataDir.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" } catch (IOException | DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" ui.getInput(tasks, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" new Duke();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Nid21cs":28,"-":3}},{"path":"src/main/java/Duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":" String message;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":" return this.message;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Nid21cs":12}},{"path":"src/main/java/Duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"public class Event extends SingleTask {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":" private String from;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":" private String to;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" public void mark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Ok boy i mark for you already \\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" \"[\" +this.getStatusIcon() +\"] \" + this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" public void unmark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Ok boy I unmark for you already \\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" \"[\" +this.getStatusIcon() +\"] \" + this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" return \"OK DONE ALR added your Event ah:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" \"[E][\" + getStatusIcon() + \"] \" + this.description +\"(from: \"+ this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" public String listString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" return \". [E][\" + getStatusIcon() + \"] \" + this.description +\"(from: \"+ this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" public String remove() {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" return \"OK DONE ALR removed your Event ah:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" \"[E][\" + getStatusIcon() + \"] \" + this.description +\"(from: \"+ this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" public String toSaveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" return \"E|\" + (this.isDone ? \"1\" : \"0\") + \"|\" + this.description + \"|\" + this.from + \"|\" + this.to;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Nid21cs":47}},{"path":"src/main/java/Duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":" public Parser() {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" public void parse(String s, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" if (s.matches(\".*\\\\bdelete\\\\b.*\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d s.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy ah need to know which one u want delete eh.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" int number \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" taskList.deleteTask(number);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" System.out.println(String.format(\"Got %d task in list boy\", taskList.taskList.size()));","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" } else if (s.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" taskList.list();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" } else if (s.matches(\".*\\\\bmark\\\\b.*\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d s.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" int number \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" taskList.mark(number);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" } else if (s.matches(\".*\\\\bunmark\\\\b.*\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d s.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" int number \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" taskList.unmark(number);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" } else if (s.matches(\"(?i)^\\\\s*(todo|event|deadline)\\\\b.*\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d s.split(\" \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" String TypeOfEvent \u003d parts[0].toLowerCase();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" switch (TypeOfEvent) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy ah todo need description eh.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" String content \u003d parts[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" taskList.createToDo(content);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy need to know when the deadline is eh.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" String[] part \u003d parts[1].split(\"/by \");","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" if (part.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"BOY AH The deadline need to write a /by time!!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" taskList.createDeadline(part[0], part[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy need to know the event description eh.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" String[] strarray \u003d parts[1].split(\"/\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" if (strarray.length \u003c 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"BOY!! The event command need /from and /to times.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" String from \u003d strarray[1].replace(\"from\", \"\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" String to \u003d strarray[2].replace(\"to\", \"\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" taskList.createEvent(strarray[0], from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy idk what you saying eh must tell me todo or deadline or event :(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Nid21cs":65}},{"path":"src/main/java/Duke/SingleTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"public abstract class SingleTask {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":" protected String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":" protected Boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":" public SingleTask(String s) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" this.description \u003d s;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" public abstract void mark();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" public abstract String getStatusIcon();","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" public abstract void unmark();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" public abstract String listString();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" public abstract String remove ();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" public abstract String toSaveString();","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Nid21cs":19}},{"path":"src/main/java/Duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" public void saveTasks(ArrayList\u003cSingleTask\u003e taskList) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" for (SingleTask task : taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" fw.write(task.toSaveString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" public ArrayList\u003cSingleTask\u003e loadTasks() throws IOException, DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" ArrayList\u003cSingleTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" if (!f.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" return taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" Scanner sc \u003d new Scanner(f);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" String s \u003d sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d s.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" boolean isDone \u003d Integer.parseInt(parts[1]) \u003d\u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" System.out.println();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" SingleTask task;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" switch (type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" String by \u003d parts[3];","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" String from \u003d parts[3];","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" String to \u003d parts[4];","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Invalid task type in save file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" task.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" return taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Nid21cs":64}},{"path":"src/main/java/Duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":" ArrayList\u003cSingleTask\u003e taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" public TaskList(ArrayList\u003cSingleTask\u003e taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" public void deleteTask(int TaskNumber) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" if (TaskNumber - 1 \u003e\u003d this.taskList.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy ah cannot delete a task you dont have eh.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" SingleTask task \u003d this.taskList.get(TaskNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" System.out.println(task.remove());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" this.taskList.remove(TaskNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" public void list() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" if (this.taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"No tasks here ah boy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Here are your tasks ah boy:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" SingleTask task \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" System.out.println((i + 1) + task.listString());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" public void mark(int TaskNumber) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" if (TaskNumber - 1 \u003e\u003d this.taskList.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy ah cannot mark a task you dont have eh.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" SingleTask task \u003d this.taskList.get(TaskNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" public void unmark(int TaskNumber) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" if (TaskNumber - 1 \u003e\u003d this.taskList.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy ah cannot unmark a task you dont have eh.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" SingleTask task \u003d this.taskList.get(TaskNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" public void createToDo(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" SingleTask taskT \u003d new ToDo(content);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" this.taskList.add(taskT);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" System.out.println(taskT.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" System.out.println(String.format(\"Got %d task in list boy\", taskList.size()));","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" public void createDeadline(String description, String deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" SingleTask taskD \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" taskList.add(taskD);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" System.out.println(taskD.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" System.out.println(String.format(\"Got %d task in list boy\", taskList.size()));","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Nid21cs"},"content":" public void createEvent(String description, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":" SingleTask taskE \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Nid21cs"},"content":" taskList.add(taskE);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Nid21cs"},"content":" System.out.println(taskE.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" System.out.println(String.format(\"Got %d task in list boy\", taskList.size()));","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Nid21cs":73}},{"path":"src/main/java/Duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"import Duke.SingleTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"public class ToDo extends SingleTask {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":" public ToDo(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":" public void mark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Ok boy i mark for you already \\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" \"[\" +this.getStatusIcon() +\"] \" + this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" public void unmark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Ok boy I unmark for you already \\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" \"[\" +this.getStatusIcon() +\"] \" + this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" return \"OK DONE ALR added your todo ah:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" \"[T]\" + \"[\" +this.getStatusIcon() +\"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" public String listString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" return \". [T]\" + \"[\" +this.getStatusIcon() +\"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" public String remove() {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" return \"OK DONE ALR removed your todo ah:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" \"[T]\" + \"[\" +this.getStatusIcon() +\"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" public String toSaveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" return \"T|\" + (this.isDone ? \"1\" : \"0\") + \"|\" + description;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Nid21cs":44}},{"path":"src/main/java/Duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" public String showLoadingError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" return \"Got error loading!\";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" public void getInput(TaskList tasks, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" String s \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" while (!s.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" parser.parse(s, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" s \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" s \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" if (s.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" storage.saveTasks(tasks.taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Bye! Auntie maggie see you later!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Nid21cs":40}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Nid21cs":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":"-"},"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":"Nid21cs"},"content":"## convert to UNIX format","lastModifiedDate":"2023-08-24"},{"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":{"Nid21cs":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"# Duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":"3. After that, locate the `src/main/java/Duke.Duke.java` file, right-click it, and choose `Run Duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Nid21cs":2,"-":22}},{"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":"Nid21cs"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","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":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" mainClass.set(\"Duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":"repositories {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" mavenCentral()","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Nid21cs":10,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"T|0|balls","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"T|0|sell book","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"T|0|eat book","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"D|0|return book |2/12/2019 1800","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Nid21cs":4}},{"path":"src/main/java/Duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" * The Deadline class represents a deadline task for the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" * It extends the SingleTask class and provides additional methods specific to deadline tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"public class Deadline extends SingleTask {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" String formattedTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" LocalDateTime DueBy;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" String unformattedTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" * Constructs a new Deadline object with the given description and deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" * @param description the description of the Deadline task","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" * @param deadline the deadline of the Deadline task in the format \"dd/MM/yyyy HHmm\"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" this.unformattedTime \u003d deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d deadline.split(\"[/ ]\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" int day \u003d Integer.parseInt(parts[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" int month \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" int year \u003d Integer.parseInt(parts[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" int hour \u003d Integer.parseInt(parts[3].substring(0, 2));","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" int minute \u003d Integer.parseInt(parts[3].substring(2));","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" LocalDateTime dateTime \u003d LocalDateTime.of(year, month, day, hour, minute);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" this.DueBy \u003d dateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" String formattedDateTime \u003d dateTime.format(formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" this.formattedTime \u003d formattedDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" * Marks the task as done and displays a message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" public void mark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Ok boy i mark for you already \\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" \"[\" +this.getStatusIcon() +\"] \" + this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" * Returns the status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the status icon of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" * Unmarks the task as done and displays a message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":" public void unmark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Ok boy I unmark for you already \\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" \"[\" +this.getStatusIcon() +\"] \" + this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task when it is added to a list.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task when it is added","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"Nid21cs"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" return \"OK DONE ALR added your Deadline ah:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"Nid21cs"},"content":" \"[D][\" + getStatusIcon() + \"] \" + this.description +\"(by: \"+ this.formattedTime + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task for displaying in a list.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task in a list","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"Nid21cs"},"content":" public String listString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"Nid21cs"},"content":" return \". [D][\" + getStatusIcon() + \"] \" + this.description +\"(by: \"+ this.formattedTime + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task when it is removed from a list.","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task when it is removed","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"Nid21cs"},"content":" public String remove() {","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"Nid21cs"},"content":" return \"OK DONE ALR removed your Deadline ah:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"Nid21cs"},"content":" \"[D][\" + getStatusIcon() + \"] \" + this.description +\"(by: \"+ this.formattedTime + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task for saving to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task in a save file","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Nid21cs"},"content":" public String toSaveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Nid21cs"},"content":" return \"D|\" + (this.isDone ? \"1\" : \"0\") + \"|\" + this.description + \"|\" + this.unformattedTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Nid21cs":101}},{"path":"src/main/java/Duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" * The Duke class represents the main class for the Duke chat-bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" * It contains the main method and handles the initialization of the chat-bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" private Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" * Constructs a new Duke object and initializes the chat-bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" public Duke() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Hello! I\u0027m Auntie Maggie \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" \"\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" Storage storage \u003d new Storage(\"./data/duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" File dataDir \u003d new File(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" if (!dataDir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" dataDir.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" } catch (IOException | DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" ui.getInput(tasks, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" new Duke();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Nid21cs":34,"-":3}},{"path":"src/main/java/Duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":" * The DukeException class represents an exception that can be thrown by the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":" * It extends the Exception class and provides a custom message to display to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" String message;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" * Constructs a new DukeException object with the given message.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" * @param message the message to display to the user","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" * Returns the message of the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the message of the exception","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" return this.message;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Nid21cs":25}},{"path":"src/main/java/Duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":" * The Event class represents an event task for the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":" * It extends the SingleTask class and provides additional methods specific to event tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"public class Event extends SingleTask {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" private String from;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" private String to;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" * Constructs a new Event object with the given description, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" * @param description the description of the Event task","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" * @param from the start time of the Event","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" * @param to the end time of the Event","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" * Marks the task as done and displays a message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" public void mark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Ok boy i mark for you already \\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" \"[\" +this.getStatusIcon() +\"] \" + this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" * Returns the status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the status icon of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" * Unmarks the task as done and displays a message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" public void unmark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Ok boy I unmark for you already \\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" \"[\" +this.getStatusIcon() +\"] \" + this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task when it is added to a list.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task when it is added","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" return \"OK DONE ALR added your Event ah:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" \"[E][\" + getStatusIcon() + \"] \" + this.description +\"(from: \"+ this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task for displaying in a list.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task in a list","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" public String listString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":" return \". [E][\" + getStatusIcon() + \"] \" + this.description +\"(from: \"+ this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task when it is removed from the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task when it is removed","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"Nid21cs"},"content":" public String remove() {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"Nid21cs"},"content":" return \"OK DONE ALR removed your Event ah:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"Nid21cs"},"content":" \"[E][\" + getStatusIcon() + \"] \" + this.description +\"(from: \"+ this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task for saving to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task in a save file","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Nid21cs"},"content":" public String toSaveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Nid21cs"},"content":" return \"E|\" + (this.isDone ? \"1\" : \"0\") + \"|\" + this.description + \"|\" + this.from + \"|\" + this.to;","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Nid21cs":88}},{"path":"src/main/java/Duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":" * The Parser class represents the parser for the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":" * It provides methods to parse user input and execute commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" public Parser() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" * Parses the given user input and executes the corresponding command.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" * @param s the user input to parse","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" * @param taskList the TaskList object to store and manage tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" * @throws DukeException if there is an error parsing the user input","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" public void parse(String s, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" if (s.matches(\".*\\\\bdelete\\\\b.*\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d s.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy ah need to know which one u want delete eh.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" int number \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" taskList.deleteTask(number);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" System.out.println(String.format(\"Got %d task in list boy\", taskList.taskList.size()));","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" } else if (s.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" taskList.list();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" } else if (s.matches(\".*\\\\bmark\\\\b.*\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d s.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" int number \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" taskList.mark(number);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" } else if (s.matches(\".*\\\\bunmark\\\\b.*\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d s.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" int number \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" taskList.unmark(number);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" } else if (s.matches(\".*\\\\bfind\\\\b.*\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d s.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy ah need to know which one u want delete eh.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" String keyword \u003d parts[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" taskList.find(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" } else if (s.matches(\"(?i)^\\\\s*(todo|event|deadline)\\\\b.*\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d s.split(\" \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" String TypeOfEvent \u003d parts[0].toLowerCase();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" switch (TypeOfEvent) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy ah todo need description eh.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" String content \u003d parts[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" taskList.createToDo(content);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy need to know when the deadline is eh.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" String[] part \u003d parts[1].split(\"/by \");","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":" if (part.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"BOY AH The deadline need to write a /by time!!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" taskList.createDeadline(part[0], part[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy need to know the event description eh.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":" String[] strarray \u003d parts[1].split(\"/\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Nid21cs"},"content":" if (strarray.length \u003c 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"BOY!! The event command need /from and /to times.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Nid21cs"},"content":" String from \u003d strarray[1].replace(\"from\", \"\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Nid21cs"},"content":" String to \u003d strarray[2].replace(\"to\", \"\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Nid21cs"},"content":" taskList.createEvent(strarray[0], from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Nid21cs"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Nid21cs"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Nid21cs"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy idk what you saying eh must tell me todo or deadline or event :(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Nid21cs":82}},{"path":"src/main/java/Duke/SingleTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":" * The SingleTask class represents a single task for the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":" * It is an abstract class that provides a common interface for different types of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"public abstract class SingleTask {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" protected String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" protected Boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":" public SingleTask(String s) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" this.description \u003d s;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" public abstract void mark();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" public abstract String getStatusIcon();","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" public abstract void unmark();","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" public abstract String listString();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" public abstract String remove ();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" public abstract String toSaveString();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Nid21cs":23}},{"path":"src/main/java/Duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" * The Storage class represents the storage for the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" * It provides methods to save and load tasks from a file so tasks are not lost when bot is closed.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" * Constructs a new Storage object with the given file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" * @param filePath the file path to save and load tasks from","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" * Saves the given list of tasks to the file specified by the file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" * @param taskList an ArrayList of SingleTask objects representing the list of tasks to save","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" * @throws IOException if there is an error writing to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" public void saveTasks(ArrayList\u003cSingleTask\u003e taskList) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" for (SingleTask task : taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" fw.write(task.toSaveString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" * Loads a list of tasks from the file specified by the file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" * @return an ArrayList of SingleTask objects representing the list of tasks loaded from the file","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" * @throws IOException if there is an error reading from the file","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" * @throws DukeException if there is an error parsing the data in the file","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" public ArrayList\u003cSingleTask\u003e loadTasks() throws IOException, DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" ArrayList\u003cSingleTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" if (!f.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" return taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" Scanner sc \u003d new Scanner(f);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" String s \u003d sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" String[] parts \u003d s.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" boolean isDone \u003d Integer.parseInt(parts[1]) \u003d\u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" System.out.println();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":" SingleTask task;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" switch (type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" String by \u003d parts[3];","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Nid21cs"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Nid21cs"},"content":" String from \u003d parts[3];","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Nid21cs"},"content":" String to \u003d parts[4];","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Nid21cs"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Nid21cs"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Invalid task type in save file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Nid21cs"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Nid21cs"},"content":" task.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Nid21cs"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Nid21cs"},"content":" return taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Nid21cs":83}},{"path":"src/main/java/Duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" * The TaskList class represents a list of tasks for the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" * It provides methods to manage and manipulate the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":" ArrayList\u003cSingleTask\u003e taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" * Constructs a new TaskList object with an empty list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" * Constructs a new TaskList object with the given stored list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" * @param taskList an ArrayList of SingleTask objects representing the list of tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" public TaskList(ArrayList\u003cSingleTask\u003e taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" * Deletes a task from the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" * @param TaskNumber the index of the task to delete (1-based indexing)","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" * @throws DukeException if the given index is out of bounds","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" public void deleteTask(int TaskNumber) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" if (TaskNumber - 1 \u003e\u003d this.taskList.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy ah cannot delete a task you dont have eh.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" SingleTask task \u003d this.taskList.get(TaskNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" System.out.println(task.remove());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" this.taskList.remove(TaskNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" * Displays the list of tasks to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" public void list() {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":" if (this.taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"No tasks here ah boy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Here are your tasks ah boy:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" SingleTask task \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" System.out.println((i + 1) + task.listString());","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" * Marks a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":" * @param TaskNumber the index of the task to mark as done (1-based indexing)","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" * @throws DukeException if the given index is out of bounds","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" public void mark(int TaskNumber) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" if (TaskNumber - 1 \u003e\u003d this.taskList.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy ah cannot mark a task you dont have eh.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":" SingleTask task \u003d this.taskList.get(TaskNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Nid21cs"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" * Unmarks a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Nid21cs"},"content":" * @param TaskNumber the index of the task to unmark as done (1-based indexing)","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Nid21cs"},"content":" * @throws DukeException if the given index is out of bounds","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Nid21cs"},"content":" public void unmark(int TaskNumber) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Nid21cs"},"content":" if (TaskNumber - 1 \u003e\u003d this.taskList.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Nid21cs"},"content":" throw new DukeException(\"Boy ah cannot unmark a task you dont have eh.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Nid21cs"},"content":" SingleTask task \u003d this.taskList.get(TaskNumber - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Nid21cs"},"content":" task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Nid21cs"},"content":" * Creates a new ToDo task and adds it to the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Nid21cs"},"content":" * @param content the description of the ToDo task","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Nid21cs"},"content":" public void createToDo(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Nid21cs"},"content":" SingleTask taskT \u003d new ToDo(content);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Nid21cs"},"content":" this.taskList.add(taskT);","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Nid21cs"},"content":" System.out.println(taskT.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Nid21cs"},"content":" System.out.println(String.format(\"Got %d task in list boy\", taskList.size()));","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"Nid21cs"},"content":" * Creates a new Deadline task and adds it to the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"Nid21cs"},"content":" * @param description the description of the Deadline task","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"Nid21cs"},"content":" * @param deadline the deadline of the Deadline task","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"Nid21cs"},"content":" public void createDeadline(String description, String deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Nid21cs"},"content":" SingleTask taskD \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Nid21cs"},"content":" taskList.add(taskD);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Nid21cs"},"content":" System.out.println(taskD.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Nid21cs"},"content":" System.out.println(String.format(\"Got %d task in list boy\", taskList.size()));","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"Nid21cs"},"content":" * Creates a new Event task and adds it to the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"Nid21cs"},"content":" * @param description the description of the Event","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"Nid21cs"},"content":" * @param from the start time of the Event","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Nid21cs"},"content":" * @param to the end time of the Event","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"Nid21cs"},"content":" public void createEvent(String description, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Nid21cs"},"content":" SingleTask taskE \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Nid21cs"},"content":" taskList.add(taskE);","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Nid21cs"},"content":" System.out.println(taskE.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Nid21cs"},"content":" System.out.println(String.format(\"Got %d task in list boy\", taskList.size()));","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"Nid21cs"},"content":" * Finds and displays tasks that contain a given keyword in their description.","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"Nid21cs"},"content":" * @param keyWord the keyword to search for in the descriptions of tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"Nid21cs"},"content":" public void find(String keyWord) {","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"Nid21cs"},"content":" if (this.taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Boy ah got no tasks how to find anything??\");","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"Nid21cs"},"content":" String msg \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"Nid21cs"},"content":" int i \u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"Nid21cs"},"content":" for (SingleTask task : this.taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"Nid21cs"},"content":" if (task.description.contains(keyWord)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"Nid21cs"},"content":" msg +\u003d i + task.listString() + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"Nid21cs"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"Nid21cs"},"content":" System.out.println(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Nid21cs":137}},{"path":"src/main/java/Duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":" * The ToDo class represents a to-do task for the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":" * It extends the SingleTask class and provides additional methods specific to to-do tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":"public class ToDo extends SingleTask {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" public ToDo(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" * Marks the task as done and displays a message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" public void mark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Ok boy i mark for you already \\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":" \"[\" +this.getStatusIcon() +\"] \" + this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" * Returns the status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the status icon of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" * Unmarks the task as done and displays a message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" public void unmark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Ok boy I unmark for you already \\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" \"[\" +this.getStatusIcon() +\"] \" + this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task when it is added to a list.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task when it is added","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" return \"OK DONE ALR added your todo ah:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":" \"[T]\" + \"[\" +this.getStatusIcon() +\"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task for displaying in a list.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task in a list","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Nid21cs"},"content":" public String listString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"Nid21cs"},"content":" return \". [T]\" + \"[\" +this.getStatusIcon() +\"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task when it is removed from a list.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task when it is removed","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Nid21cs"},"content":" public String remove() {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"Nid21cs"},"content":" return \"OK DONE ALR removed your todo ah:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Nid21cs"},"content":" \"[T]\" + \"[\" +this.getStatusIcon() +\"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Nid21cs"},"content":" * Returns a string representation of the task for saving to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Nid21cs"},"content":" * @return a string representing the task in a save file","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Nid21cs"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Nid21cs"},"content":" public String toSaveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Nid21cs"},"content":" return \"T|\" + (this.isDone ? \"1\" : \"0\") + \"|\" + description;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Nid21cs":76}},{"path":"src/main/java/Duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Nid21cs"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Nid21cs"},"content":" * The Ui class represents the user interface for the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Nid21cs"},"content":" * It handles user input and displays messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Nid21cs"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Nid21cs"},"content":" * Constructs a new Ui object.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Nid21cs"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Nid21cs"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Nid21cs"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Nid21cs"},"content":" * Gets user input from the command line and processes it using a Parser object.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Nid21cs"},"content":" * @param tasks the TaskList object to store and manage tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Nid21cs"},"content":" * @param storage the Storage object to save and load tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Nid21cs"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Nid21cs"},"content":" public void getInput(TaskList tasks, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Nid21cs"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Nid21cs"},"content":" String s \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Nid21cs"},"content":" while (!s.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Nid21cs"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Nid21cs"},"content":" parser.parse(s, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Nid21cs"},"content":" s \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Nid21cs"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Nid21cs"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Nid21cs"},"content":" s \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Nid21cs"},"content":" if (s.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Nid21cs"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Nid21cs"},"content":" storage.saveTasks(tasks.taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Nid21cs"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Nid21cs"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Nid21cs"},"content":" System.out.println(\"Bye! Auntie maggie see you later!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Nid21cs"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Nid21cs"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Nid21cs"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Nid21cs":47}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Nid21cs"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Nid21cs"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Nid21cs"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Nid21cs"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Nid21cs"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Nid21cs":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":"-"},"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":"Nid21cs"},"content":"## convert to UNIX format","lastModifiedDate":"2023-08-24"},{"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":{"Nid21cs":1,"-":37}}] diff --git a/Nid21cs_ip_master/commits.json b/Nid21cs_ip_master/commits.json index 13ea2da8..3c65893a 100644 --- a/Nid21cs_ip_master/commits.json +++ b/Nid21cs_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Nid21cs":[{"date":"2023-08-22","commitResults":[{"hash":"266008b4d5edab7f941b72d3ef9afc97367787d5","isMergeCommit":false,"messageTitle":"Made sure all class files are not pushed to github Added v0 requirements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"e2c2900e8fd532ec117d03dc72cd54c5047eb1c3","isMergeCommit":false,"messageTitle":"Hello added Scanner to receive input","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"1f97884e13fc1debc8bdb298b3da2218ae7a717f","isMergeCommit":false,"messageTitle":"Added a tasks class to keep track of given tasks and add in related methods. Can now list out all tasks and will show when tasks are added","messageBody":"","tags":["level-3","level-2"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":5}}}]},{"date":"2023-08-23","commitResults":[{"hash":"55e6950f9affc0ca2c927cda7fe4af4054a69f82","isMergeCommit":false,"messageTitle":"Added unmarking and marking of tasks functionality Added single task class for each individual task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":8}}}]},{"date":"2023-08-24","commitResults":[{"hash":"32f8863e78e27e5008225f42961c08606732a30d","isMergeCommit":false,"messageTitle":"Used arraylist instead of using an array to put in objects of type SingleTask Added subclasses of SingleTask to represent 3 types of Tasks.","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":43}}},{"hash":"8ddd388f69908a04f565420943c22d3d429ba414","isMergeCommit":false,"messageTitle":"Added auto testing of output specifically A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":1,"deletions":0},"bat":{"insertions":0,"deletions":21},"sh":{"insertions":1,"deletions":1}}},{"hash":"3bff630f456d72b568cf38c969e8fd3f14ad26b0","isMergeCommit":false,"messageTitle":"Added DukeException class to handle inputs that are not valid for the scannner","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":50}}},{"hash":"795382af2fd1e0950c265a68862baa03415c0aef","isMergeCommit":false,"messageTitle":"Added a delete functionality to delete tasks and also made sure that the inputs of delete are viable and throw an exception if not","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"47808ee7ee2da424c42dc7bdb4136cb71569ab53","isMergeCommit":false,"messageTitle":"Added a Parser class to handle user inputs, a storage class to save and load saved tasks when bot is turned off. also made SingleTasks abstract as well","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":245,"deletions":118}}},{"hash":"03267a7eb1cf4f091adea5fae1a22b1f6284969a","isMergeCommit":false,"messageTitle":"changed to ensure that all import statements were specific","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"6d72be07e0210ba660a6f7c9f2e722855b1fe53a","isMergeCommit":false,"messageTitle":"Branch level 8 added a date and time feature to Deadline so the date and time is stored","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":22,"deletions":7}}}]},{"date":"2023-08-31","commitResults":[{"hash":"0629ab6a94de99dc422081ea08e095f1de8b48e9","isMergeCommit":false,"messageTitle":"Added a UI class to handle user input and call for it when required Added a TaskList class to handle all methods involving the ArrayList","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":128,"deletions":59}}},{"hash":"3810dd91e08e42ab88c283f3b4e8f52965b7f2c3","isMergeCommit":false,"messageTitle":"Added all files under the package class","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3},"md":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"Nid21cs":{"java":450,"md":2,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":6}},"authorContributionVariance":{"Nid21cs":18017.857},"authorDisplayNameMap":{"Nid21cs":"CS2103T-W15-2 NIDH..HNAN"}} +{"authorDailyContributionsMap":{"Nid21cs":[{"date":"2023-08-22","commitResults":[{"hash":"266008b4d5edab7f941b72d3ef9afc97367787d5","isMergeCommit":false,"messageTitle":"Made sure all class files are not pushed to github Added v0 requirements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"e2c2900e8fd532ec117d03dc72cd54c5047eb1c3","isMergeCommit":false,"messageTitle":"Hello added Scanner to receive input","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"1f97884e13fc1debc8bdb298b3da2218ae7a717f","isMergeCommit":false,"messageTitle":"Added a tasks class to keep track of given tasks and add in related methods. Can now list out all tasks and will show when tasks are added","messageBody":"","tags":["level-3","level-2"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":5}}}]},{"date":"2023-08-23","commitResults":[{"hash":"55e6950f9affc0ca2c927cda7fe4af4054a69f82","isMergeCommit":false,"messageTitle":"Added unmarking and marking of tasks functionality Added single task class for each individual task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":8}}}]},{"date":"2023-08-24","commitResults":[{"hash":"32f8863e78e27e5008225f42961c08606732a30d","isMergeCommit":false,"messageTitle":"Used arraylist instead of using an array to put in objects of type SingleTask Added subclasses of SingleTask to represent 3 types of Tasks.","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":43}}},{"hash":"8ddd388f69908a04f565420943c22d3d429ba414","isMergeCommit":false,"messageTitle":"Added auto testing of output specifically A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":1,"deletions":0},"bat":{"insertions":0,"deletions":21},"sh":{"insertions":1,"deletions":1}}},{"hash":"3bff630f456d72b568cf38c969e8fd3f14ad26b0","isMergeCommit":false,"messageTitle":"Added DukeException class to handle inputs that are not valid for the scannner","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":50}}},{"hash":"795382af2fd1e0950c265a68862baa03415c0aef","isMergeCommit":false,"messageTitle":"Added a delete functionality to delete tasks and also made sure that the inputs of delete are viable and throw an exception if not","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"47808ee7ee2da424c42dc7bdb4136cb71569ab53","isMergeCommit":false,"messageTitle":"Added a Parser class to handle user inputs, a storage class to save and load saved tasks when bot is turned off. also made SingleTasks abstract as well","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":245,"deletions":118}}},{"hash":"03267a7eb1cf4f091adea5fae1a22b1f6284969a","isMergeCommit":false,"messageTitle":"changed to ensure that all import statements were specific","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"6d72be07e0210ba660a6f7c9f2e722855b1fe53a","isMergeCommit":false,"messageTitle":"Branch level 8 added a date and time feature to Deadline so the date and time is stored","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":22,"deletions":7}}}]},{"date":"2023-08-31","commitResults":[{"hash":"0629ab6a94de99dc422081ea08e095f1de8b48e9","isMergeCommit":false,"messageTitle":"Added a UI class to handle user input and call for it when required Added a TaskList class to handle all methods involving the ArrayList","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":128,"deletions":59}}},{"hash":"3810dd91e08e42ab88c283f3b4e8f52965b7f2c3","isMergeCommit":false,"messageTitle":"Added all files under the package class","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"7d43bbc14d2f98f2de3bf09448df2827103a4695","isMergeCommit":false,"messageTitle":"Added javadoc comments to all public methods Made sure to follow coding standard as well as Added a find feature to find tasks that contain a certain keyword","messageBody":"","tags":["Level-9","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":259,"deletions":13}}},{"hash":"eb01ff5ebeaa5e030245b04fdb6fb50c27ad52e0","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Nid21cs/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}},{"hash":"fa6182f9f38c229ff6e4a70849ffc94ff4b8418c","isMergeCommit":false,"messageTitle":"Added gradle and is able to run","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":10,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Nid21cs":{"java":696,"md":2,"fxml":0,"sh":1,"bat":0,"gradle":10,"txt":9}},"authorContributionVariance":{"Nid21cs":19508.65},"authorDisplayNameMap":{"Nid21cs":"CS2103T-W15-2 NIDH..HNAN"}} diff --git a/Originalidk_ip_master/authorship.json b/Originalidk_ip_master/authorship.json index fb032bdc..f6e13178 100644 --- a/Originalidk_ip_master/authorship.json +++ b/Originalidk_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Originalidk":1,"-":41}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":" private LocalDateTime due;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" public Deadline(String description, LocalDateTime due) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" this.due \u003d due;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.due.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\")) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" int mark;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" if (super.getStatusIcon() \u003d\u003d \"X\") {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" mark \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" mark \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" return \"D | \" + mark + \" | \" + super.writeToFile() + \" | \" + this.due.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":29}},{"path":"src/main/java/duke/DeadlineUnclearException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class DeadlineUnclearException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":4}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" this.tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" Ui.start();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" Scanner scan \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" String input \u003d Ui.getInput(scan);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" Parser.parseInput(input, this.tasks, this.storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" input \u003d Ui.getInput(scan);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" Ui.bye();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" new Duke(\"./duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Originalidk":28,"-":2}},{"path":"src/main/java/duke/DurationUnclearException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class DurationUnclearException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":4}},{"path":"src/main/java/duke/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":4}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"))","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" + \" to: \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\")) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" int mark;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" if (super.getStatusIcon() \u003d\u003d \"X\") {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" mark \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" mark \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" return \"E | \" + mark + \" | \" + super.writeToFile() + \" | \" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"))","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" + \" -\u003e \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":33}},{"path":"src/main/java/duke/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class InvalidTaskException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":4}},{"path":"src/main/java/duke/InvalidTextException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class InvalidTextException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":4}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" public static void parseInput(String input, TaskList tasks, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" Ui.listOfTasks(tasks.showList());","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" } else if (input.startsWith(\"todo \") || (input.startsWith(\"todo\") \u0026\u0026 input.length() \u003d\u003d 4)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" if (input.length() \u003c\u003d 5 || input.substring(5).isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new ToDo(input.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(tasks.fileList());","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" Ui.addTask(task.toString(), tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" } catch (EmptyDescriptionException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" Ui.emptyDesc(\"todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" } else if (input.startsWith(\"deadline \") || (input.startsWith(\"deadline\") \u0026\u0026 input.length() \u003d\u003d 8)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" if (input.length() \u003c\u003d 9 || input.substring(9).isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" String[] details \u003d input.substring(9).split(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" if (details.length !\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" throw new DeadlineUnclearException();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(details[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new Deadline(details[0], dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(tasks.fileList());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" Ui.addTask(task.toString(), tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" } catch (EmptyDescriptionException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" Ui.emptyDesc(\"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" } catch (DeadlineUnclearException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" Ui.unclear(\"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" Ui.wrongDateTimeFormat();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" } else if (input.startsWith(\"event \") || (input.startsWith(\"event\") \u0026\u0026 input.length() \u003d\u003d 5)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" if (input.length() \u003c\u003d 6 || input.substring(6).isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" String[] details \u003d input.substring(6).split(\" /from | /to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" if (details.length !\u003d 3 || !input.contains(\" /from \") || !input.contains(\" /to \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" throw new DurationUnclearException();","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" LocalDateTime fromDateTime \u003d LocalDateTime.parse(details[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" LocalDateTime toDateTime \u003d LocalDateTime.parse(details[2], DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new Event(details[0], fromDateTime, toDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(tasks.fileList());","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" Ui.addTask(task.toString(), tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" } catch (EmptyDescriptionException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" Ui.emptyDesc(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" } catch (DurationUnclearException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" Ui.unclear(\"duration\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" Ui.wrongDateTimeFormat();","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" } else if (input.startsWith(\"mark \") \u0026\u0026 input.length() \u003e 5 \u0026\u0026 input.substring(5).matches(\"\\\\d+\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" int number \u003d Integer.parseInt(input.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" if (number \u003e tasks.size() || number \u003c\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" Task task \u003d tasks.get(number - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(tasks.fileList());","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" Ui.mark(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" } catch (InvalidTaskException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" Ui.invalidTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" } else if (input.startsWith(\"unmark \") \u0026\u0026 input.length() \u003e 7 \u0026\u0026 input.substring(7).matches(\"\\\\d+\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" int number \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":" if (number \u003e tasks.size() || number \u003c\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":" Task task \u003d tasks.get(number - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":" task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(tasks.fileList());","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Originalidk"},"content":" Ui.unmark(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Originalidk"},"content":" } catch (InvalidTaskException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Originalidk"},"content":" Ui.invalidTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Originalidk"},"content":" } else if (input.startsWith(\"delete \") \u0026\u0026 input.length() \u003e 7 \u0026\u0026 input.substring(7).matches(\"\\\\d+\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Originalidk"},"content":" int number \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Originalidk"},"content":" if (number \u003e tasks.size() || number \u003c\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Originalidk"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Originalidk"},"content":" Task task \u003d tasks.delete(number - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(tasks.fileList());","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Originalidk"},"content":" Ui.delete(task, tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Originalidk"},"content":" } catch (InvalidTaskException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Originalidk"},"content":" Ui.invalidTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Originalidk"},"content":" throw new InvalidTextException();","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Originalidk"},"content":" } catch (InvalidTextException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Originalidk"},"content":" Ui.invalidText();","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Originalidk":113}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" Scanner scan \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" if (!this.file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" this.file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" public File load() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" return this.file;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" public void rewrite(String newText) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" FileWriter fw;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" Scanner sc \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" fw.write(newText);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Originalidk":42}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":" private String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":" private boolean done;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" return (done ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":32}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" File startFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" public TaskList(File startFile) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" this.startFile \u003d startFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" Scanner scan \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" Scanner fileScan \u003d new Scanner(startFile);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" while (fileScan.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" String taskString \u003d fileScan.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" if (taskString.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new ToDo(taskString.substring(8));","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" if (taskString.charAt(4) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" list.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" } else if (taskString.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" String[] details \u003d taskString.substring(8).split(Pattern.quote(\" | \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(details[1], DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new Deadline(details[0], dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" if (taskString.charAt(4) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" list.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" } else if (taskString.charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" String[] details \u003d taskString.substring(8).split(Pattern.quote(\" | \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" String[] duration \u003d details[1].split(\" -\u003e \");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" LocalDateTime fromDateTime \u003d LocalDateTime.parse(duration[0], DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" LocalDateTime toDateTime \u003d LocalDateTime.parse(duration[1], DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new Event(details[0], fromDateTime, toDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" if (taskString.charAt(4) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" list.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" public String showList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" StringBuilder listOfTasks \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c list.size() - 1; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" listOfTasks.append(\" \").append(i + 1).append(\".\").append(task.toString()).append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" if (list.size() !\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" Task task \u003d list.get(list.size() - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" listOfTasks.append(\" \").append(list.size()).append(\".\").append(task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" return listOfTasks.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" public String fileList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" StringBuilder listOfTasks \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c list.size() - 1; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" listOfTasks.append(task.writeToFile()).append(\"\\r\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" if (list.size() !\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" Task task \u003d list.get(list.size() - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" listOfTasks.append(task.writeToFile());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" return listOfTasks.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" list.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" public Task delete(int taskNumber) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":" return list.remove(taskNumber);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":" public Task get(int taskNumber) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":" return list.get(taskNumber);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Originalidk"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Originalidk"},"content":" return list.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Originalidk":94}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" int mark;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" if (super.getStatusIcon() \u003d\u003d \"X\") {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" mark \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" mark \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" return \"T | \" + mark + \" | \" + super.writeToFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":23}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":" public static void start() {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + \"Hello! I\u0027m ChatGP0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + \"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" public static String getInput(Scanner scan) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" String input \u003d scan.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" return input;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" public static void listOfTasks(String tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" System.out.println(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" public static void addTask(String taskStr, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + taskStr);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" public static void emptyDesc(String type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ☹ OOPS!!! The description of a \" + type + \" cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" public static void unclear(String type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ☹ OOPS!!! The \" + type + \" is unclear.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" public static void wrongDateTimeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ☹ OOPS!!! Please follow the \\\"yyyy-MM-dd HHmm\\\" format.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" public static void mark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" public static void unmark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + \"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" public static void delete(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" public static void invalidTask() {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ☹ OOPS!!! This task does not exist :O\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" public static void invalidText() {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":" public static void bye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + \"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Originalidk":91}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"deadline return book /by 2023-07-08 1430","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"event project meeting /from 2023-05-05 1000 /to 2023-05-05 1200","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"todo join sports club","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"deadline return book /by 2023-09-08 1920","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"event project meeting /from 2023-05-07 1500 /to 2023-05-08 1800","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"mark 7","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"unmark 7","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"unmark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":"delete 3","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":"blah","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":"event","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":"deadline fifjsoidjoisd","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":"event jskdjsaidja","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"event reading /from 2023-05-07 1500","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"event reading /to 2023-05-07 1500","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":"event reading /from 2023-05-07 1500 /from 2023-05-07 1900","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":"event reading /to 2023-05-07 1500 /to 2023-05-07 1900","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":"mark 99","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":"unmark 99","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":"delete 99","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":45}},{"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":"Originalidk"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\*.java","lastModifiedDate":"2023-08-31"},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"Originalidk":1,"-":20}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":"mainClassName \u003d \u0027duke.Duke\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-01"},{"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":{"Originalidk":4,"-":41}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":" private LocalDateTime due;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" public Deadline(String description, LocalDateTime due) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" this.due \u003d due;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.due.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\")) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" int mark;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" if (super.getStatusIcon() \u003d\u003d \"X\") {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" mark \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" mark \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" return \"D | \" + mark + \" | \" + super.writeToFile() + \" | \" + this.due.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":29}},{"path":"src/main/java/duke/DeadlineUnclearException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class DeadlineUnclearException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":4}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" this.tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" Ui.start();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" Scanner scan \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" String input \u003d Ui.getInput(scan);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" Parser.parseInput(input, this.tasks, this.storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" input \u003d Ui.getInput(scan);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" Ui.bye();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" new Duke(\"./duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Originalidk":28,"-":2}},{"path":"src/main/java/duke/DurationUnclearException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class DurationUnclearException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":4}},{"path":"src/main/java/duke/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":4}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"))","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" + \" to: \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\")) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" int mark;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" if (super.getStatusIcon() \u003d\u003d \"X\") {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" mark \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" mark \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" return \"E | \" + mark + \" | \" + super.writeToFile() + \" | \" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"))","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" + \" -\u003e \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":33}},{"path":"src/main/java/duke/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class InvalidTaskException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":4}},{"path":"src/main/java/duke/InvalidTextException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class InvalidTextException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":4}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" public static void parseInput(String input, TaskList tasks, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" Ui.listOfTasks(tasks.showList());","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" } else if (input.startsWith(\"todo \") || (input.startsWith(\"todo\") \u0026\u0026 input.length() \u003d\u003d 4)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" if (input.length() \u003c\u003d 5 || input.substring(5).isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new ToDo(input.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(tasks.fileList());","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" Ui.addTask(task.toString(), tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" } catch (EmptyDescriptionException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" Ui.emptyDesc(\"todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" } else if (input.startsWith(\"deadline \") || (input.startsWith(\"deadline\") \u0026\u0026 input.length() \u003d\u003d 8)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" if (input.length() \u003c\u003d 9 || input.substring(9).isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" String[] details \u003d input.substring(9).split(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" if (details.length !\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" throw new DeadlineUnclearException();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(details[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new Deadline(details[0], dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(tasks.fileList());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" Ui.addTask(task.toString(), tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" } catch (EmptyDescriptionException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" Ui.emptyDesc(\"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" } catch (DeadlineUnclearException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" Ui.unclear(\"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" Ui.wrongDateTimeFormat();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" } else if (input.startsWith(\"event \") || (input.startsWith(\"event\") \u0026\u0026 input.length() \u003d\u003d 5)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" if (input.length() \u003c\u003d 6 || input.substring(6).isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" String[] details \u003d input.substring(6).split(\" /from | /to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" if (details.length !\u003d 3 || !input.contains(\" /from \") || !input.contains(\" /to \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" throw new DurationUnclearException();","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" LocalDateTime fromDateTime \u003d LocalDateTime.parse(details[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" LocalDateTime toDateTime \u003d LocalDateTime.parse(details[2], DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new Event(details[0], fromDateTime, toDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(tasks.fileList());","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" Ui.addTask(task.toString(), tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" } catch (EmptyDescriptionException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" Ui.emptyDesc(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" } catch (DurationUnclearException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" Ui.unclear(\"duration\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" Ui.wrongDateTimeFormat();","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" } else if (input.startsWith(\"mark \") \u0026\u0026 input.length() \u003e 5 \u0026\u0026 input.substring(5).matches(\"\\\\d+\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" int number \u003d Integer.parseInt(input.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" if (number \u003e tasks.size() || number \u003c\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" Task task \u003d tasks.get(number - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(tasks.fileList());","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" Ui.mark(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" } catch (InvalidTaskException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" Ui.invalidTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" } else if (input.startsWith(\"unmark \") \u0026\u0026 input.length() \u003e 7 \u0026\u0026 input.substring(7).matches(\"\\\\d+\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" int number \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":" if (number \u003e tasks.size() || number \u003c\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":" Task task \u003d tasks.get(number - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":" task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(tasks.fileList());","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Originalidk"},"content":" Ui.unmark(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Originalidk"},"content":" } catch (InvalidTaskException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Originalidk"},"content":" Ui.invalidTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Originalidk"},"content":" } else if (input.startsWith(\"delete \") \u0026\u0026 input.length() \u003e 7 \u0026\u0026 input.substring(7).matches(\"\\\\d+\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Originalidk"},"content":" int number \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Originalidk"},"content":" if (number \u003e tasks.size() || number \u003c\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Originalidk"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Originalidk"},"content":" Task task \u003d tasks.delete(number - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(tasks.fileList());","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Originalidk"},"content":" Ui.delete(task, tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Originalidk"},"content":" } catch (InvalidTaskException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Originalidk"},"content":" Ui.invalidTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Originalidk"},"content":" throw new InvalidTextException();","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Originalidk"},"content":" } catch (InvalidTextException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Originalidk"},"content":" Ui.invalidText();","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Originalidk":113}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" if (!this.file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" this.file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" public File load() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" return this.file;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" public void rewrite(String newText) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" FileWriter fw;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" fw.write(newText);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Originalidk":40}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":" private String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":" private boolean done;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" return (done ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":32}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" File startFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" public TaskList(File startFile) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" this.startFile \u003d startFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" Scanner scan \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" Scanner fileScan \u003d new Scanner(startFile);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" while (fileScan.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" String taskString \u003d fileScan.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" if (taskString.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new ToDo(taskString.substring(8));","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" if (taskString.charAt(4) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" list.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" } else if (taskString.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" String[] details \u003d taskString.substring(8).split(Pattern.quote(\" | \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(details[1], DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new Deadline(details[0], dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" if (taskString.charAt(4) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" list.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" } else if (taskString.charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" String[] details \u003d taskString.substring(8).split(Pattern.quote(\" | \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" String[] duration \u003d details[1].split(\" -\u003e \");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" LocalDateTime fromDateTime \u003d LocalDateTime.parse(duration[0], DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" LocalDateTime toDateTime \u003d LocalDateTime.parse(duration[1], DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new Event(details[0], fromDateTime, toDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" if (taskString.charAt(4) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" list.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" public String showList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" StringBuilder listOfTasks \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c list.size() - 1; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" listOfTasks.append(\" \").append(i + 1).append(\".\").append(task.toString()).append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" if (list.size() !\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" Task task \u003d list.get(list.size() - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" listOfTasks.append(\" \").append(list.size()).append(\".\").append(task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" return listOfTasks.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" public String fileList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" StringBuilder listOfTasks \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" for (int i \u003d 0; i \u003c list.size() - 1; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" listOfTasks.append(task.writeToFile()).append(\"\\r\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" if (list.size() !\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" Task task \u003d list.get(list.size() - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" listOfTasks.append(task.writeToFile());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" return listOfTasks.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" list.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" public Task delete(int taskNumber) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":" return list.remove(taskNumber);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":" public Task get(int taskNumber) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":" return list.get(taskNumber);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Originalidk"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Originalidk"},"content":" return list.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Originalidk":94}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" int mark;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" if (super.getStatusIcon() \u003d\u003d \"X\") {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" mark \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" mark \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" return \"T | \" + mark + \" | \" + super.writeToFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":23}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":" public static void start() {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + \"Hello! I\u0027m ChatGP0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + \"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" public static String getInput(Scanner scan) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" String input \u003d scan.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" return input;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" public static void listOfTasks(String tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" System.out.println(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" public static void addTask(String taskStr, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + taskStr);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" public static void emptyDesc(String type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ☹ OOPS!!! The description of a \" + type + \" cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" public static void unclear(String type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ☹ OOPS!!! The \" + type + \" is unclear.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" public static void wrongDateTimeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ☹ OOPS!!! Please follow the \\\"yyyy-MM-dd HHmm\\\" format.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" public static void mark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" public static void unmark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + \"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":" public static void delete(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" public static void invalidTask() {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ☹ OOPS!!! This task does not exist :O\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" public static void invalidText() {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":" public static void bye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" \" + \"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Originalidk"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Originalidk":91}},{"path":"src/test/java/duke/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" public void testStringConversion() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(\"2023-09-23 1800\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"[D][ ] Apply for internships (by: Sep 23 2023 1800)\", new Deadline(\"Apply for internships\", dateTime).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new Deadline(\"Make my resume\", dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"[D][X] Make my resume (by: Sep 23 2023 1800)\", task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" public void testWriteToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(\"2023-09-23 1800\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"D | 0 | Apply for internships | Sep 23 2023 1800\", new Deadline(\"Apply for internships\", dateTime).writeToFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new Deadline(\"Make my resume\", dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"D | 1 | Make my resume | Sep 23 2023 1800\", task.writeToFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Originalidk":35}},{"path":"src/test/java/duke/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"public class EventTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" public void testStringConversion() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" LocalDateTime fromDateTime \u003d LocalDateTime.parse(\"2023-09-23 1800\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" LocalDateTime toDateTime \u003d LocalDateTime.parse(\"2023-09-23 2000\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"[E][ ] Apply for internships (from: Sep 23 2023 1800 to: Sep 23 2023 2000)\",","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" new Event(\"Apply for internships\", fromDateTime, toDateTime).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new Event(\"Make my resume\", fromDateTime, toDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"[E][X] Make my resume (from: Sep 23 2023 1800 to: Sep 23 2023 2000)\", task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" public void testWriteToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" LocalDateTime fromDateTime \u003d LocalDateTime.parse(\"2023-09-23 1800\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" LocalDateTime toDateTime \u003d LocalDateTime.parse(\"2023-09-23 2000\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"E | 0 | Apply for internships | Sep 23 2023 1800 -\u003e Sep 23 2023 2000\",","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" new Event(\"Apply for internships\", fromDateTime, toDateTime).writeToFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new Event(\"Make my resume\", fromDateTime, toDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"E | 1 | Make my resume | Sep 23 2023 1800 -\u003e Sep 23 2023 2000\", task.writeToFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Originalidk":39}},{"path":"src/test/java/duke/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" public void testLoad() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" File file \u003d new File(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" FileWriter fw \u003d new FileWriter(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" fw.write(\"T | 0 | Apply for internships\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" fw.write(\"D | 1 | Finish reading | Oct 15 2023 1800\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" fw.write(\"E | 0 | Resume clinic | Sep 01 2023 0000 -\u003e Sep 29 2023 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" Storage storage \u003d new Storage(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" assertEquals(file, storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" public void testRewrite() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":" File file \u003d new File(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" FileWriter fw \u003d new FileWriter(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" fw.write(\"T | 0 | Apply for internships\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" fw.write(\"D | 1 | Finish reading | Oct 15 2023 1800\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":" fw.write(\"E | 0 | Resume clinic | Sep 01 2023 0000 -\u003e Sep 29 2023 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" Storage storage \u003d new Storage(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" storage.rewrite(\"T | 1 | Apply for internships\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" String toDoTask \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"T | 1 | Apply for internships\", toDoTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Originalidk":57}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" public void testShowList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":" File file \u003d new File(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" FileWriter fw \u003d new FileWriter(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":" fw.write(\"T | 0 | Apply for internships\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" fw.write(\"D | 1 | Finish reading | Oct 15 2023 1800\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" fw.write(\"E | 0 | Resume clinic | Sep 01 2023 0000 -\u003e Sep 29 2023 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" String allText \u003d \" 1.[T][ ] Apply for internships\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":" allText +\u003d \" 2.[D][X] Finish reading (by: Oct 15 2023 1800)\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":" allText +\u003d \" 3.[E][ ] Resume clinic (from: Sep 1 2023 0000 to: Sep 29 2023 2359)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":" TaskList tasks \u003d new TaskList(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":" assertEquals(allText, tasks.showList());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":" public void testFileList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":" File file \u003d new File(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":" FileWriter fw \u003d new FileWriter(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":" fw.write(\"T | 0 | Apply for internships\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Originalidk"},"content":" fw.write(\"D | 1 | Finish reading | Oct 15 2023 1800\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Originalidk"},"content":" fw.write(\"E | 0 | Resume clinic | Sep 01 2023 0000 -\u003e Sep 29 2023 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Originalidk"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Originalidk"},"content":" String allText \u003d \"T | 0 | Apply for internships\\r\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Originalidk"},"content":" allText +\u003d \"D | 1 | Finish reading | Oct 15 2023 1800\\r\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Originalidk"},"content":" allText +\u003d \"E | 0 | Resume clinic | Sep 1 2023 0000 -\u003e Sep 29 2023 2359\";","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Originalidk"},"content":" TaskList tasks \u003d new TaskList(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Originalidk"},"content":" assertEquals(allText, tasks.fileList());","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Originalidk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Originalidk"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Originalidk"},"content":" public void testAdd() {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Originalidk"},"content":" File file \u003d new File(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Originalidk"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Originalidk"},"content":" FileWriter fw \u003d new FileWriter(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Originalidk"},"content":" fw.write(\"T | 0 | Apply for internships\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Originalidk"},"content":" fw.write(\"D | 1 | Finish reading | Oct 15 2023 1800\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Originalidk"},"content":" fw.write(\"E | 0 | Resume clinic | Sep 01 2023 0000 -\u003e Sep 29 2023 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Originalidk"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Originalidk"},"content":" String allText \u003d \"T | 0 | Apply for internships\\r\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Originalidk"},"content":" allText +\u003d \"D | 1 | Finish reading | Oct 15 2023 1800\\r\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Originalidk"},"content":" allText +\u003d \"E | 0 | Resume clinic | Sep 1 2023 0000 -\u003e Sep 29 2023 2359\\r\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Originalidk"},"content":" allText +\u003d \"T | 0 | Go to bed\";","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Originalidk"},"content":" TaskList tasks \u003d new TaskList(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Originalidk"},"content":" tasks.add(new ToDo(\"Go to bed\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Originalidk"},"content":" assertEquals(allText, tasks.fileList());","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Originalidk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Originalidk"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Originalidk"},"content":" public void testDelete() {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Originalidk"},"content":" File file \u003d new File(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"Originalidk"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Originalidk"},"content":" FileWriter fw \u003d new FileWriter(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Originalidk"},"content":" fw.write(\"T | 0 | Apply for internships\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Originalidk"},"content":" fw.write(\"D | 1 | Finish reading | Oct 15 2023 1800\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"Originalidk"},"content":" fw.write(\"E | 0 | Resume clinic | Sep 01 2023 0000 -\u003e Sep 29 2023 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"Originalidk"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"Originalidk"},"content":" String allText \u003d \"D | 1 | Finish reading | Oct 15 2023 1800\\r\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"Originalidk"},"content":" allText +\u003d \"E | 0 | Resume clinic | Sep 1 2023 0000 -\u003e Sep 29 2023 2359\";","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"Originalidk"},"content":" TaskList tasks \u003d new TaskList(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"Originalidk"},"content":" tasks.delete(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"Originalidk"},"content":" assertEquals(allText, tasks.fileList());","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"Originalidk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"Originalidk"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Originalidk"},"content":" public void testGet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"Originalidk"},"content":" File file \u003d new File(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"Originalidk"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"Originalidk"},"content":" FileWriter fw \u003d new FileWriter(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"Originalidk"},"content":" fw.write(\"T | 0 | Apply for internships\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"Originalidk"},"content":" fw.write(\"D | 1 | Finish reading | Oct 15 2023 1800\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"Originalidk"},"content":" fw.write(\"E | 0 | Resume clinic | Sep 01 2023 0000 -\u003e Sep 29 2023 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"Originalidk"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new ToDo(\"Apply for internships\");","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"Originalidk"},"content":" TaskList tasks \u003d new TaskList(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"Originalidk"},"content":" assertEquals(task.toString(), tasks.get(0).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"Originalidk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"Originalidk"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"Originalidk"},"content":" public void testSize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"Originalidk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Originalidk"},"content":" File file \u003d new File(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"Originalidk"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"Originalidk"},"content":" FileWriter fw \u003d new FileWriter(\"./testFile.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"Originalidk"},"content":" fw.write(\"T | 0 | Apply for internships\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"Originalidk"},"content":" fw.write(\"D | 1 | Finish reading | Oct 15 2023 1800\\r\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"Originalidk"},"content":" fw.write(\"E | 0 | Resume clinic | Sep 01 2023 0000 -\u003e Sep 29 2023 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"Originalidk"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"Originalidk"},"content":" TaskList tasks \u003d new TaskList(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"Originalidk"},"content":" assertEquals(3, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"Originalidk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"Originalidk"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Originalidk":148}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":" public void testStringConversion() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"[T][ ] Apply for internships\", new ToDo(\"Apply for internships\").toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new ToDo(\"Make my resume\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"[T][X] Make my resume\", task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":" public void testWriteToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"T | 0 | Apply for internships\", new ToDo(\"Apply for internships\").writeToFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":" Task task \u003d new ToDo(\"Make my resume\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":" task.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":" assertEquals(\"T | 1 | Make my resume\", task.writeToFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Originalidk":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Originalidk"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Originalidk"},"content":"deadline return book /by 2023-07-08 1430","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Originalidk"},"content":"event project meeting /from 2023-05-05 1000 /to 2023-05-05 1200","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Originalidk"},"content":"todo join sports club","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Originalidk"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Originalidk"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Originalidk"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Originalidk"},"content":"deadline return book /by 2023-09-08 1920","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Originalidk"},"content":"event project meeting /from 2023-05-07 1500 /to 2023-05-08 1800","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Originalidk"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Originalidk"},"content":"mark 7","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Originalidk"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Originalidk"},"content":"unmark 7","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Originalidk"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Originalidk"},"content":"unmark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Originalidk"},"content":"delete 3","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Originalidk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Originalidk"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Originalidk"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Originalidk"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Originalidk"},"content":"blah","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Originalidk"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Originalidk"},"content":"event","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Originalidk"},"content":"deadline fifjsoidjoisd","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Originalidk"},"content":"event jskdjsaidja","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Originalidk"},"content":"event reading /from 2023-05-07 1500","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Originalidk"},"content":"event reading /to 2023-05-07 1500","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Originalidk"},"content":"event reading /from 2023-05-07 1500 /from 2023-05-07 1900","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Originalidk"},"content":"event reading /to 2023-05-07 1500 /to 2023-05-07 1900","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Originalidk"},"content":"mark 99","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Originalidk"},"content":"unmark 99","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Originalidk"},"content":"delete 99","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Originalidk"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Originalidk"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Originalidk"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Originalidk"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Originalidk"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Originalidk"},"content":"delete 1","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Originalidk"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Originalidk":45}},{"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":"Originalidk"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\*.java","lastModifiedDate":"2023-08-31"},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"Originalidk":1,"-":20}}] diff --git a/Originalidk_ip_master/commits.json b/Originalidk_ip_master/commits.json index e68eaf42..d339f15e 100644 --- a/Originalidk_ip_master/commits.json +++ b/Originalidk_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Originalidk":[{"date":"2023-08-23","commitResults":[{"hash":"55f2c03a4cfc671bfea1961fd240c4ec043b68c3","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"60f4dbfddaec16cda19b96f4350c1d17197a9227","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":7}}},{"hash":"81e6df3dd9dc2fb1645eb0846df57a56c57dfd41","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":7}}}]},{"date":"2023-08-24","commitResults":[{"hash":"9b46a1e70b57b14fac9fe31c2a42b91f3043465a","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":3}}},{"hash":"85ca8879f24ec0d0d09558c001a90c0e08117005","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":11}}},{"hash":"1821c31f944c1c1057a4fcdf07944ad46f5cf6ae","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":22,"deletions":0}}},{"hash":"1dd7fc5ff9afe9376727f45f0ac56b3d76593f39","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":124,"deletions":62}}},{"hash":"c907426f6b08f33cd8dcb3442720768eff29a243","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":19,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"6b911f98500523c6ea93014c1da368068032acdf","isMergeCommit":false,"messageTitle":"Level-7-branch","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":151,"deletions":14}}},{"hash":"5f020396b1fe35adfe87f4fa8ec103249a621ef6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"6ef9db9457b1565852f7dcbfebd44a6f3cd49e41","isMergeCommit":false,"messageTitle":"Level-8 split fail","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":7}}},{"hash":"40c82d1371edb3feb474640c3fad19585f1d84bb","isMergeCommit":false,"messageTitle":"Level-8 Deadline not parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"9041048499a2cce6d6585df27dba0ce5fedba5d1","isMergeCommit":false,"messageTitle":"Level-8 Completed","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":8},"java":{"insertions":33,"deletions":19}}},{"hash":"4b3a52434dc882e2a58a77522c1b38fc31f2db2f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"0f8fe5b9f4c1d8457eb7b5f9fb23e40c17b4469a","isMergeCommit":false,"messageTitle":"OOP files no test","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":418,"deletions":2}}},{"hash":"e5c7d57ee28edd06eb9a769a6a1b96f307061fe2","isMergeCommit":false,"messageTitle":"OOP tests passed","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"e4253e498654743ac00c1fbdf77836218835aabe","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"4a25538f27e2cbb99ee61f83ec594ab4d0d8c825","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":107},"bat":{"insertions":1,"deletions":1}}},{"hash":"9cb576cc0bc9cb66b5d2f6d0f44c4c38d08fadee","isMergeCommit":false,"messageTitle":"Delete comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":264}}},{"hash":"d188c06f9561b4a91b5ef69a7a76d123686edfb3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"7fce4ab63299f59a6c11617c688273b9dab2da47","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"58b7dd90d4b60f04a5e68b867c5108b76dae458b","isMergeCommit":false,"messageTitle":"Add build.gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"c2bb959e95db11b2b1fde834ff0d14914d95669d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Originalidk":{"java":505,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":45}},"authorContributionVariance":{"Originalidk":58016.0},"authorDisplayNameMap":{"Originalidk":"CS2103T-T15-1 RYAN..IANG"}} +{"authorDailyContributionsMap":{"Originalidk":[{"date":"2023-08-23","commitResults":[{"hash":"55f2c03a4cfc671bfea1961fd240c4ec043b68c3","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"60f4dbfddaec16cda19b96f4350c1d17197a9227","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":7}}},{"hash":"81e6df3dd9dc2fb1645eb0846df57a56c57dfd41","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":7}}}]},{"date":"2023-08-24","commitResults":[{"hash":"9b46a1e70b57b14fac9fe31c2a42b91f3043465a","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":3}}},{"hash":"85ca8879f24ec0d0d09558c001a90c0e08117005","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":11}}},{"hash":"1821c31f944c1c1057a4fcdf07944ad46f5cf6ae","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":22,"deletions":0}}},{"hash":"1dd7fc5ff9afe9376727f45f0ac56b3d76593f39","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":124,"deletions":62}}},{"hash":"c907426f6b08f33cd8dcb3442720768eff29a243","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":19,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"6b911f98500523c6ea93014c1da368068032acdf","isMergeCommit":false,"messageTitle":"Level-7-branch","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":151,"deletions":14}}},{"hash":"5f020396b1fe35adfe87f4fa8ec103249a621ef6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"6ef9db9457b1565852f7dcbfebd44a6f3cd49e41","isMergeCommit":false,"messageTitle":"Level-8 split fail","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":7}}},{"hash":"40c82d1371edb3feb474640c3fad19585f1d84bb","isMergeCommit":false,"messageTitle":"Level-8 Deadline not parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"9041048499a2cce6d6585df27dba0ce5fedba5d1","isMergeCommit":false,"messageTitle":"Level-8 Completed","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":8},"java":{"insertions":33,"deletions":19}}},{"hash":"4b3a52434dc882e2a58a77522c1b38fc31f2db2f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"0f8fe5b9f4c1d8457eb7b5f9fb23e40c17b4469a","isMergeCommit":false,"messageTitle":"OOP files no test","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":418,"deletions":2}}},{"hash":"e5c7d57ee28edd06eb9a769a6a1b96f307061fe2","isMergeCommit":false,"messageTitle":"OOP tests passed","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"e4253e498654743ac00c1fbdf77836218835aabe","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"4a25538f27e2cbb99ee61f83ec594ab4d0d8c825","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":107},"bat":{"insertions":1,"deletions":1}}},{"hash":"9cb576cc0bc9cb66b5d2f6d0f44c4c38d08fadee","isMergeCommit":false,"messageTitle":"Delete comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":264}}},{"hash":"d188c06f9561b4a91b5ef69a7a76d123686edfb3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"7fce4ab63299f59a6c11617c688273b9dab2da47","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"58b7dd90d4b60f04a5e68b867c5108b76dae458b","isMergeCommit":false,"messageTitle":"Add build.gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"c2bb959e95db11b2b1fde834ff0d14914d95669d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"e5e77524375362f13bd0158486ed66e80905533a","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":307,"deletions":2}}},{"hash":"413e9d56152018b4d8d5e8511bc279ca4c13ee1c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"b8b6595128aab422c72a77b7a606098f26e3fca0","isMergeCommit":false,"messageTitle":"Add JAR file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":0}}},{"hash":"7bc6ada14202b655b28e3991a92440618dd4b327","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Originalidk":{"java":810,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":4,"txt":45}},"authorContributionVariance":{"Originalidk":56563.05},"authorDisplayNameMap":{"Originalidk":"CS2103T-T15-1 RYAN..IANG"}} diff --git a/RiyaMehta2211_ip_master/authorship.json b/RiyaMehta2211_ip_master/authorship.json index f76d3713..184f6e69 100644 --- a/RiyaMehta2211_ip_master/authorship.json +++ b/RiyaMehta2211_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" private static final long serialVersionUID \u003d 6548478093468504893L;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"RiyaMehta2211"},"content":" public String taskString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"RiyaMehta2211"},"content":" return \"[D]\" + super.taskString() + \"(by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":13}},{"path":"src/main/java/DeadlineCommandUseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class DeadlineCommandUseException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" public DeadlineCommandUseException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" super(message + \":\" + \" deadline must be followed by a task to be added to the list \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" \"and a time specified after \u0027/by\u0027 \");","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":6}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":" String name \u003d \"Harry Potter\";","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":" String question \u003d \"What can I do for you?\";","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(\"Hello! I\u0027m \" + name + \"\\n\" + question);","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"RiyaMehta2211"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"RiyaMehta2211"},"content":" String str \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"RiyaMehta2211"},"content":" List\u003cTask\u003e tasks \u003d Task.loadTasks(\"src/data/Duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"RiyaMehta2211"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"RiyaMehta2211"},"content":" while (!str.equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"RiyaMehta2211"},"content":" if (!str.equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"RiyaMehta2211"},"content":" if (str.startsWith(\"mark \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"RiyaMehta2211"},"content":" String num \u003d str.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"RiyaMehta2211"},"content":" int number \u003d Integer.valueOf(num);","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"RiyaMehta2211"},"content":" if (number \u003c\u003d 0 || number \u003e tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"RiyaMehta2211"},"content":" throw new InvalidInputException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"RiyaMehta2211"},"content":" int index \u003d number - 1; //index for task list","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"RiyaMehta2211"},"content":" Task done \u003d tasks.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"RiyaMehta2211"},"content":" done.markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(\"\\t\" + \"Nice! I\u0027ve marked this task \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"RiyaMehta2211"},"content":" \"as done:\" + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"RiyaMehta2211"},"content":" \"\\t \" + done.taskString());","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"RiyaMehta2211"},"content":" } else if (str.startsWith(\"unmark \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"RiyaMehta2211"},"content":" String num \u003d str.substring(7);","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"RiyaMehta2211"},"content":" int number \u003d Integer.valueOf(num);","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"RiyaMehta2211"},"content":" if (number \u003c\u003d 0 || number \u003e tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"RiyaMehta2211"},"content":" throw new InvalidInputException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"RiyaMehta2211"},"content":" int index \u003d number - 1; //index for task list","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"RiyaMehta2211"},"content":" Task notDone \u003d tasks.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"RiyaMehta2211"},"content":" notDone.markAsNotDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(\"\\t\" + \"OK, I\u0027ve marked this task \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"RiyaMehta2211"},"content":" \"as not done yet:\" + \"\\n\" + \"\\t\" + \" \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"RiyaMehta2211"},"content":" notDone.taskString());","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"RiyaMehta2211"},"content":" } else if (str.startsWith(\"delete \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"RiyaMehta2211"},"content":" String num \u003d str.substring(7);","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"RiyaMehta2211"},"content":" int number \u003d Integer.valueOf(num);","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"RiyaMehta2211"},"content":" if (number \u003c\u003d 0 || number \u003e tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"RiyaMehta2211"},"content":" throw new InvalidInputException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"RiyaMehta2211"},"content":" int index \u003d number - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"RiyaMehta2211"},"content":" Task toBeDeleted \u003d tasks.remove(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(\"\\tNoted. I\u0027ve removed this task:\\n\\t \" + toBeDeleted.taskString()","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"RiyaMehta2211"},"content":" + \"\\n\\tNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"RiyaMehta2211"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"RiyaMehta2211"},"content":" if (str.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"RiyaMehta2211"},"content":" String todo \u003d str.substring(4);","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"RiyaMehta2211"},"content":" //remove any leading and trailing whitespace characters and","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"RiyaMehta2211"},"content":" // check whether there is a task after the instruction","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"RiyaMehta2211"},"content":" if (todo.trim().isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"RiyaMehta2211"},"content":" //this would mean the instruction is incomplete","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"RiyaMehta2211"},"content":" throw new ToDoCommandUseException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"RiyaMehta2211"},"content":" String string \u003d str.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"RiyaMehta2211"},"content":" Task task \u003d new ToDo(string);","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"RiyaMehta2211"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"RiyaMehta2211"},"content":" int len \u003d tasks.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"RiyaMehta2211"},"content":" String output \u003d \"\\tGot it. I\u0027ve added this task:\\n\\t\\t\"","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"RiyaMehta2211"},"content":" + task.taskString();","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"RiyaMehta2211"},"content":" String listLength \u003d len \u003d\u003d 1 ? \"Now you have \" + len + \" task in the list.\" :","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"RiyaMehta2211"},"content":" \"Now you have \" + len + \" tasks in the list.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(output","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"RiyaMehta2211"},"content":" + \"\\n\\t\" + listLength);","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"RiyaMehta2211"},"content":" } else if (str.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"RiyaMehta2211"},"content":" if (!str.contains(\"/by \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"RiyaMehta2211"},"content":" throw new DeadlineCommandUseException(str); //needs to check for /by","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"RiyaMehta2211"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"RiyaMehta2211"},"content":" String byWhen \u003d \"/by \";","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"RiyaMehta2211"},"content":" int index \u003d str.indexOf(byWhen);","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"RiyaMehta2211"},"content":" String deadline \u003d str.substring(index + 4); //remove /by from the substring","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"RiyaMehta2211"},"content":" if (deadline.trim().isEmpty()) { //needs to check whether there is anything after /by","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"RiyaMehta2211"},"content":" throw new DeadlineCommandUseException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"RiyaMehta2211"},"content":" String workToDo \u003d str.substring(9, index);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"RiyaMehta2211"},"content":" Task task \u003d new Deadline(workToDo, deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"RiyaMehta2211"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"RiyaMehta2211"},"content":" int len \u003d tasks.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"RiyaMehta2211"},"content":" String output \u003d \"\\tGot it. I\u0027ve added this task:\\n\\t\\t\"","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"RiyaMehta2211"},"content":" + task.taskString();","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"RiyaMehta2211"},"content":" String listLength \u003d len \u003d\u003d 1 ? \"Now you have \" + len + \" task in the list.\" :","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"RiyaMehta2211"},"content":" \"Now you have \" + len + \" tasks in the list.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(output","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"RiyaMehta2211"},"content":" + \"\\n\" + \"\\t\" + listLength);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"RiyaMehta2211"},"content":" } else if (str.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"RiyaMehta2211"},"content":" if (!str.contains(\"from\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"RiyaMehta2211"},"content":" throw new EventCommandUseException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"RiyaMehta2211"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"RiyaMehta2211"},"content":" String fromMarker \u003d \"/from \"; //mark the /from index of the string","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"RiyaMehta2211"},"content":" int firstIndex \u003d str.indexOf(fromMarker);","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"RiyaMehta2211"},"content":" int secondIndex;","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"RiyaMehta2211"},"content":" String fromWhen;","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"RiyaMehta2211"},"content":" String toWhen;","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"RiyaMehta2211"},"content":" String workToDo \u003d str.substring(6, firstIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"RiyaMehta2211"},"content":" String afterFirstIndex \u003d str.substring(firstIndex + 6);","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"RiyaMehta2211"},"content":" if (!afterFirstIndex.contains(\"/to \")) { //to check the input of /to after /from","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"RiyaMehta2211"},"content":" throw new EventCommandUseException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"RiyaMehta2211"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"RiyaMehta2211"},"content":" String toMarker \u003d \"/to \"; //mark the /to index of the string","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"RiyaMehta2211"},"content":" secondIndex \u003d afterFirstIndex.indexOf(toMarker); //to make sure we get the /to after the /from","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"RiyaMehta2211"},"content":" fromWhen \u003d afterFirstIndex.substring(0, secondIndex); //get the from timing","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"RiyaMehta2211"},"content":" toWhen \u003d afterFirstIndex.substring(secondIndex + 4); //get the to timing","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"RiyaMehta2211"},"content":" if (fromWhen.trim().isEmpty() ||","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"RiyaMehta2211"},"content":" toWhen.trim().isEmpty()) { //needs to check whether there is anything after /by","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"RiyaMehta2211"},"content":" throw new EventCommandUseException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"RiyaMehta2211"},"content":" Task task \u003d new Event(workToDo, fromWhen, toWhen);","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"RiyaMehta2211"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"RiyaMehta2211"},"content":" int len \u003d tasks.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"RiyaMehta2211"},"content":" String output \u003d \"\\tGot it. I\u0027ve added this task:\\n\\t\\t\"","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"RiyaMehta2211"},"content":" + task.taskString();","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"RiyaMehta2211"},"content":" String listLength \u003d len \u003d\u003d 1 ? \"Now you have \" + len + \" task in the list.\" :","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"RiyaMehta2211"},"content":" \"Now you have \" + len + \" tasks in the list.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(output","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"RiyaMehta2211"},"content":" + \"\\n\\t\" + listLength);","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"RiyaMehta2211"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"RiyaMehta2211"},"content":" throw new InvalidInputException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"RiyaMehta2211"},"content":" else {","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"RiyaMehta2211"},"content":" Task.listTasks(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println();","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"RiyaMehta2211"},"content":" str \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"RiyaMehta2211"},"content":" Task.saveTasks(\"src/data/Duke.txt\", tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(\"\\t\" + \"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (InvalidInputException | EventCommandUseException|","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"RiyaMehta2211"},"content":" DeadlineCommandUseException| ToDoCommandUseException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"RiyaMehta2211"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":145,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":141,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"RiyaMehta2211"},"content":" public String taskString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"RiyaMehta2211"},"content":" return \"[E]\" + super.taskString() + \"(from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":13}},{"path":"src/main/java/EventCommandUseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class EventCommandUseException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" public EventCommandUseException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" super(message + \":\" + \"\\nInvalid input as when the event starts \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" \"must be specified after /from. When the event ends must also be specified after /to.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":6}},{"path":"src/main/java/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class InvalidInputException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" public InvalidInputException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" super(message + \":\" + \"\\n\\tI don\u0027t know what that means D: Please enter valid inputs. Below are the valid\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" \" inputs I can take\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" \"\\t1. list \\n\\t2. todo \\n\\t3. deadline \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":" \"\\n\\t4. event \\n\\t5. mark \\n\\t6. unmark \\n\\t7. bye\");","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":9}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"import java.io.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":"abstract class Task implements Serializable {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":" private static final long serialVersionUID \u003d -7108460826726050219L;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"RiyaMehta2211"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"RiyaMehta2211"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"RiyaMehta2211"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"RiyaMehta2211"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"RiyaMehta2211"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"RiyaMehta2211"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"RiyaMehta2211"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"RiyaMehta2211"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"RiyaMehta2211"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"RiyaMehta2211"},"content":" public String getTask() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"RiyaMehta2211"},"content":" return this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"RiyaMehta2211"},"content":" public String taskString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"RiyaMehta2211"},"content":" String str \u003d this.isDone ? \"[X] \" : \"[ ] \";","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"RiyaMehta2211"},"content":" String output \u003d str + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"RiyaMehta2211"},"content":" return output;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"RiyaMehta2211"},"content":" public static void listTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"RiyaMehta2211"},"content":" int i \u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.print(\"\\tHere are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"RiyaMehta2211"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.print(\"\\t\" + i + \".\" + task.taskString());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"RiyaMehta2211"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"RiyaMehta2211"},"content":" static void saveTasks(String filePath, List\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"RiyaMehta2211"},"content":" ObjectOutputStream file \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"RiyaMehta2211"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"RiyaMehta2211"},"content":" file \u003d new ObjectOutputStream(new FileOutputStream(filePath));","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"RiyaMehta2211"},"content":" file.writeObject(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"RiyaMehta2211"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"RiyaMehta2211"},"content":" if (file!\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"RiyaMehta2211"},"content":" file.flush();","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"RiyaMehta2211"},"content":" file.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"RiyaMehta2211"},"content":" static List\u003cTask\u003e loadTasks(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"RiyaMehta2211"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"RiyaMehta2211"},"content":" ObjectInputStream file \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"RiyaMehta2211"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"RiyaMehta2211"},"content":" file \u003d new ObjectInputStream(new FileInputStream(filePath));","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"RiyaMehta2211"},"content":" tasks \u003d (List\u003cTask\u003e) file.readObject();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"RiyaMehta2211"},"content":" // Do nothing here or log the exception if needed","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"RiyaMehta2211"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"RiyaMehta2211"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"RiyaMehta2211"},"content":" if (file!\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"RiyaMehta2211"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"RiyaMehta2211"},"content":" file.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"RiyaMehta2211"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"RiyaMehta2211"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":80}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" private static final long serialVersionUID \u003d -1735846338330844537L;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" public ToDo(String todo) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" super(todo);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":" public String taskString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":" String output \u003d \"[T]\" + super.taskString();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":" return output;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":13}},{"path":"src/main/java/ToDoCommandUseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class ToDoCommandUseException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" public ToDoCommandUseException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" super(message + \":\" + \" todo must be followed by a task to be added to the list\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"todo go to Mount Everest","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":"deadline 2103T Assignment /by tonight","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":"deadline 2100 Lab /by next week\u0027s lab","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":"todo apply for internships on TalentConnect","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":"event CCA Tryouts /from tomorrow 7.30pm /to tomorrow 9.30pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":"deadline CS2105 Assignment 1 /by week 4","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":"event presentation rehearsal /from tonight 10pm /to tonight 11.15pm","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"RiyaMehta2211"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"RiyaMehta2211"},"content":"mark 7","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"RiyaMehta2211"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"RiyaMehta2211"},"content":"unmark 7","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"RiyaMehta2211"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"RiyaMehta2211"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":15}},{"path":"src/data/Duke.txt","fileType":"txt","isBinary":true,"lines":[],"authorContributionMap":{"RiyaMehta2211":0}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" protected LocalDateTime date;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" private static final long serialVersionUID \u003d 6548478093468504893L;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":" public Deadline(String description, LocalDateTime date) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":" this.date \u003d date;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"RiyaMehta2211"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"RiyaMehta2211"},"content":" public String taskString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"RiyaMehta2211"},"content":" return \"[D]\" + super.taskString() + \" (by: \" + date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":15}},{"path":"src/main/java/DeadlineCommandUseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class DeadlineCommandUseException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" public DeadlineCommandUseException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" super(message + \":\" + \" deadline must be followed by a task to be added to the list \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" \"and a time specified after \u0027/by\u0027 \");","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":6}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":" String name \u003d \"Harry Potter\";","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":" String question \u003d \"Introducing the Wizarding World Organizer: Your Trusted Guide\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":" \"to Efficient \u0026 Effective Magical Planning\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(\"Hello muggle! I\u0027m \" + name + \"\\n\" + question);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"RiyaMehta2211"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"RiyaMehta2211"},"content":" String str \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"RiyaMehta2211"},"content":" List\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"RiyaMehta2211"},"content":" tasks \u003d Task.loadTasks(\"src/data/Duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"RiyaMehta2211"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"RiyaMehta2211"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"RiyaMehta2211"},"content":" while (!str.equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"RiyaMehta2211"},"content":" if (!str.equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"RiyaMehta2211"},"content":" if (str.startsWith(\"mark \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"RiyaMehta2211"},"content":" String num \u003d str.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"RiyaMehta2211"},"content":" int number \u003d Integer.valueOf(num);","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"RiyaMehta2211"},"content":" if (number \u003c\u003d 0 || number \u003e tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"RiyaMehta2211"},"content":" throw new InvalidInputException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"RiyaMehta2211"},"content":" int index \u003d number - 1; //index for task list","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"RiyaMehta2211"},"content":" Task done \u003d tasks.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"RiyaMehta2211"},"content":" done.markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(\"\\t\" + \"Nice! I\u0027ve marked this task \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"RiyaMehta2211"},"content":" \"as done:\" + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"RiyaMehta2211"},"content":" \"\\t \" + done.taskString());","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"RiyaMehta2211"},"content":" } else if (str.startsWith(\"unmark \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"RiyaMehta2211"},"content":" String num \u003d str.substring(7);","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"RiyaMehta2211"},"content":" int number \u003d Integer.valueOf(num);","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"RiyaMehta2211"},"content":" if (number \u003c\u003d 0 || number \u003e tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"RiyaMehta2211"},"content":" throw new InvalidInputException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"RiyaMehta2211"},"content":" int index \u003d number - 1; //index for task list","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"RiyaMehta2211"},"content":" Task notDone \u003d tasks.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"RiyaMehta2211"},"content":" notDone.markAsNotDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(\"\\t\" + \"OK, I\u0027ve marked this task \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"RiyaMehta2211"},"content":" \"as not done yet:\" + \"\\n\" + \"\\t\" + \" \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"RiyaMehta2211"},"content":" notDone.taskString());","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"RiyaMehta2211"},"content":" } else if (str.startsWith(\"delete \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"RiyaMehta2211"},"content":" String num \u003d str.substring(7);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"RiyaMehta2211"},"content":" int number \u003d Integer.valueOf(num);","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"RiyaMehta2211"},"content":" if (number \u003c\u003d 0 || number \u003e tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"RiyaMehta2211"},"content":" throw new InvalidInputException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"RiyaMehta2211"},"content":" int index \u003d number - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"RiyaMehta2211"},"content":" Task toBeDeleted \u003d tasks.remove(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(\"\\tNoted. I\u0027ve removed this task:\\n\\t \" + toBeDeleted.taskString()","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"RiyaMehta2211"},"content":" + \"\\n\\tNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"RiyaMehta2211"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"RiyaMehta2211"},"content":" if (str.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"RiyaMehta2211"},"content":" String todo \u003d str.substring(4);","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"RiyaMehta2211"},"content":" //remove any leading and trailing whitespace characters and","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"RiyaMehta2211"},"content":" // check whether there is a task after the instruction","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"RiyaMehta2211"},"content":" if (todo.trim().isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"RiyaMehta2211"},"content":" //this would mean the instruction is incomplete","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"RiyaMehta2211"},"content":" throw new ToDoCommandUseException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"RiyaMehta2211"},"content":" String string \u003d str.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"RiyaMehta2211"},"content":" Task task \u003d new ToDo(string);","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"RiyaMehta2211"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"RiyaMehta2211"},"content":" int len \u003d tasks.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"RiyaMehta2211"},"content":" String output \u003d \"\\tGot it. I\u0027ve added this task:\\n\\t\\t\"","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"RiyaMehta2211"},"content":" + task.taskString();","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"RiyaMehta2211"},"content":" String listLength \u003d len \u003d\u003d 1 ? \"Now you have \" + len + \" task in the list.\" :","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"RiyaMehta2211"},"content":" \"Now you have \" + len + \" tasks in the list.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(output","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"RiyaMehta2211"},"content":" + \"\\n\\t\" + listLength);","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"RiyaMehta2211"},"content":" } else if (str.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"RiyaMehta2211"},"content":" if (!str.contains(\"/by \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"RiyaMehta2211"},"content":" throw new DeadlineCommandUseException(str); //needs to check for /by","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"RiyaMehta2211"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"RiyaMehta2211"},"content":" String byWhen \u003d \"/by \";","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"RiyaMehta2211"},"content":" int index \u003d str.indexOf(byWhen);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"RiyaMehta2211"},"content":" String deadline \u003d str.substring(index + 4); //remove /by from the substring","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"RiyaMehta2211"},"content":" if (deadline.trim().isEmpty()) { //needs to check whether there is anything after /by","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"RiyaMehta2211"},"content":" throw new DeadlineCommandUseException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"RiyaMehta2211"},"content":" String workToDo \u003d str.substring(9, index);","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"RiyaMehta2211"},"content":" Task task \u003d new Deadline(workToDo, LocalDateTime.parse(deadline, formatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"RiyaMehta2211"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"RiyaMehta2211"},"content":" int len \u003d tasks.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"RiyaMehta2211"},"content":" String output \u003d \"\\tGot it. I\u0027ve added this task:\\n\\t\\t\"","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"RiyaMehta2211"},"content":" + task.taskString();","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"RiyaMehta2211"},"content":" String listLength \u003d len \u003d\u003d 1 ? \"Now you have \" + len + \" task in the list.\" :","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"RiyaMehta2211"},"content":" \"Now you have \" + len + \" tasks in the list.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(output","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"RiyaMehta2211"},"content":" + \"\\n\" + \"\\t\" + listLength);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"RiyaMehta2211"},"content":" } else if (str.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"RiyaMehta2211"},"content":" if (!str.contains(\"from\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"RiyaMehta2211"},"content":" throw new EventCommandUseException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"RiyaMehta2211"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"RiyaMehta2211"},"content":" String fromMarker \u003d \"/from \"; //mark the /from index of the string","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"RiyaMehta2211"},"content":" int firstIndex \u003d str.indexOf(fromMarker);","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"RiyaMehta2211"},"content":" int secondIndex;","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"RiyaMehta2211"},"content":" String fromWhen;","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"RiyaMehta2211"},"content":" String toWhen;","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"RiyaMehta2211"},"content":" String workToDo \u003d str.substring(6, firstIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"RiyaMehta2211"},"content":" String afterFirstIndex \u003d str.substring(firstIndex + 6);","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"RiyaMehta2211"},"content":" if (!afterFirstIndex.contains(\"/to \")) { //to check the input of /to after /from","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"RiyaMehta2211"},"content":" throw new EventCommandUseException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"RiyaMehta2211"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"RiyaMehta2211"},"content":" String toMarker \u003d \"/to \"; //mark the /to index of the string","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"RiyaMehta2211"},"content":" secondIndex \u003d afterFirstIndex.indexOf(toMarker); //to make sure we get the /to after the /from","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"RiyaMehta2211"},"content":" fromWhen \u003d afterFirstIndex.substring(0, secondIndex); //get the from timing","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"RiyaMehta2211"},"content":" toWhen \u003d afterFirstIndex.substring(secondIndex + 4); //get the to timing","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"RiyaMehta2211"},"content":" if (fromWhen.trim().isEmpty() ||","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"RiyaMehta2211"},"content":" toWhen.trim().isEmpty()) { //needs to check whether there is anything after /by","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"RiyaMehta2211"},"content":" throw new EventCommandUseException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"RiyaMehta2211"},"content":" if (LocalDateTime.parse(fromWhen, formatter).isAfter(LocalDateTime.parse(toWhen))) {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"RiyaMehta2211"},"content":" throw new EventDateTimeException(str);","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"RiyaMehta2211"},"content":" Task task \u003d new Event(workToDo, LocalDateTime.parse(fromWhen, formatter),","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"RiyaMehta2211"},"content":" LocalDateTime.parse(toWhen, formatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"RiyaMehta2211"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"RiyaMehta2211"},"content":" int len \u003d tasks.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"RiyaMehta2211"},"content":" String output \u003d \"\\tGot it. I\u0027ve added this task:\\n\\t\\t\"","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"RiyaMehta2211"},"content":" + task.taskString();","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"RiyaMehta2211"},"content":" String listLength \u003d len \u003d\u003d 1 ? \"Now you have \" + len + \" task in the list.\" :","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"RiyaMehta2211"},"content":" \"Now you have \" + len + \" tasks in the list.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(output","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"RiyaMehta2211"},"content":" + \"\\n\\t\" + listLength);","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"RiyaMehta2211"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"RiyaMehta2211"},"content":" throw new InvalidInputException(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"RiyaMehta2211"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"RiyaMehta2211"},"content":" Task.listTasks(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println();","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"RiyaMehta2211"},"content":" str \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"RiyaMehta2211"},"content":" Task.saveTasks(\"src/data/Duke.txt\", tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(\"\\t\" + \"Expelliarmus! Hope to see you again muggle! :D\");","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (java.time.format.DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"RiyaMehta2211"},"content":" //detect inputs that don\u0027t follow the yyyy-MM-dd HHmm format","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(\"I don\u0027t understand what that means D:\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"RiyaMehta2211"},"content":" \" Please input a valid date in the format yyyy-MM-dd HHmm \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"RiyaMehta2211"},"content":" \"(the time in the 24-hour format).\");","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (InvalidInputException | EventCommandUseException|","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"RiyaMehta2211"},"content":" DeadlineCommandUseException| ToDoCommandUseException|","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"RiyaMehta2211"},"content":" EventDateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":155,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":151,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" private static final long serialVersionUID \u003d -4674004457612195474L;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" LocalDateTime startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":" LocalDateTime endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":" public Event(String description, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"RiyaMehta2211"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"RiyaMehta2211"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"RiyaMehta2211"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"RiyaMehta2211"},"content":" public String taskString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"RiyaMehta2211"},"content":" return \"[E]\" + super.taskString() + \"(from: \" + startDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"RiyaMehta2211"},"content":" + \"to: \" + endDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":18}},{"path":"src/main/java/EventCommandUseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class EventCommandUseException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" public EventCommandUseException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" super(message + \":\" + \"\\nInvalid input as when the event starts \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" \"must be specified after /from. When the event ends must also be specified after /to.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":6}},{"path":"src/main/java/EventDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class EventDateTimeException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" public EventDateTimeException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" super(message + \":\" + \"\\n\\tI don\u0027t know what that means D: Please provide valid date inputs for events\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" \"in the yyyy-MM-dd HHmm format, and ensure that the start date \u0026 time of the \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" \"event does not occur after the end date \u0026 time of the event.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"RiyaMehta2211":7}},{"path":"src/main/java/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class InvalidInputException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" public InvalidInputException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" super(message + \":\" + \"\\n\\tI don\u0027t know what that means D: Please enter valid inputs. Below are the valid\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" \" inputs I can take\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" \"\\t1. list \\n\\t2. todo \\n\\t3. deadline \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":" \"\\n\\t4. event \\n\\t5. mark \\n\\t6. unmark \\n\\t7. bye\");","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":9}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"import java.io.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":"abstract class Task implements Serializable {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":" private static final long serialVersionUID \u003d -7108460826726050219L;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"RiyaMehta2211"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"RiyaMehta2211"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"RiyaMehta2211"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"RiyaMehta2211"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"RiyaMehta2211"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"RiyaMehta2211"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"RiyaMehta2211"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"RiyaMehta2211"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"RiyaMehta2211"},"content":" public String getTask() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"RiyaMehta2211"},"content":" return this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"RiyaMehta2211"},"content":" public String taskString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"RiyaMehta2211"},"content":" String str \u003d this.isDone ? \"[X] \" : \"[ ] \";","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"RiyaMehta2211"},"content":" String output \u003d str + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"RiyaMehta2211"},"content":" return output;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"RiyaMehta2211"},"content":" public static void listTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"RiyaMehta2211"},"content":" int i \u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.print(\"\\tHere are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"RiyaMehta2211"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.print(\"\\t\" + i + \".\" + task.taskString());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"RiyaMehta2211"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"RiyaMehta2211"},"content":" static void saveTasks(String filePath, List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"RiyaMehta2211"},"content":" ObjectOutputStream file \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"RiyaMehta2211"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"RiyaMehta2211"},"content":" file \u003d new ObjectOutputStream(new FileOutputStream(filePath));","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"RiyaMehta2211"},"content":" file.writeObject(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"RiyaMehta2211"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"RiyaMehta2211"},"content":" if (file!\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"RiyaMehta2211"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"RiyaMehta2211"},"content":" file.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"RiyaMehta2211"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"RiyaMehta2211"},"content":" static List\u003cTask\u003e loadTasks(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"RiyaMehta2211"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"RiyaMehta2211"},"content":" ObjectInputStream file \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"RiyaMehta2211"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"RiyaMehta2211"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"RiyaMehta2211"},"content":" //Unchecked warnings are yielded due to an unchecked type conversion","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"RiyaMehta2211"},"content":" //readObject() returns an Object, but am casting it to List\u003cTask\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"RiyaMehta2211"},"content":" //The compiler has no way to check if the object is of type List\u003cTask\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"RiyaMehta2211"},"content":" //in compile time, resulting in an unchecked warning being yielded","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"RiyaMehta2211"},"content":" File taskFile \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"RiyaMehta2211"},"content":" if (taskFile.length() \u003e 0) { //check if file is empty before attempting to read the file","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"RiyaMehta2211"},"content":" file \u003d new ObjectInputStream(new FileInputStream(taskFile));","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"RiyaMehta2211"},"content":" tasks \u003d (List\u003cTask\u003e) file.readObject();","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"RiyaMehta2211"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"RiyaMehta2211"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"RiyaMehta2211"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"RiyaMehta2211"},"content":" if (file !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"RiyaMehta2211"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"RiyaMehta2211"},"content":" file.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"RiyaMehta2211"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"RiyaMehta2211"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"RiyaMehta2211"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":89}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" private static final long serialVersionUID \u003d -1735846338330844537L;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" public ToDo(String todo) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" super(todo);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":" public String taskString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":" String output \u003d \"[T]\" + super.taskString();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":" return output;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"RiyaMehta2211"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":13}},{"path":"src/main/java/ToDoCommandUseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"public class ToDoCommandUseException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":" public ToDoCommandUseException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":" super(message + \":\" + \" todo must be followed by a task to be added to the list\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"RiyaMehta2211"},"content":"todo go to Mount Everest","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"RiyaMehta2211"},"content":"deadline 2103T Assignment /by tonight","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"RiyaMehta2211"},"content":"deadline 2100 Lab /by next week\u0027s lab","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"RiyaMehta2211"},"content":"todo apply for internships on TalentConnect","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"RiyaMehta2211"},"content":"event CCA Tryouts /from tomorrow 7.30pm /to tomorrow 9.30pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"RiyaMehta2211"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"RiyaMehta2211"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"RiyaMehta2211"},"content":"deadline CS2105 Assignment 1 /by week 4","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"RiyaMehta2211"},"content":"event presentation rehearsal /from tonight 10pm /to tonight 11.15pm","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"RiyaMehta2211"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"RiyaMehta2211"},"content":"mark 7","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"RiyaMehta2211"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"RiyaMehta2211"},"content":"unmark 7","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"RiyaMehta2211"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"RiyaMehta2211"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"RiyaMehta2211":15}}] diff --git a/RiyaMehta2211_ip_master/commits.json b/RiyaMehta2211_ip_master/commits.json index 50634178..65808ef1 100644 --- a/RiyaMehta2211_ip_master/commits.json +++ b/RiyaMehta2211_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"RiyaMehta2211":[{"date":"2023-08-23","commitResults":[{"hash":"cee5ef0e681036be72f4817998d6f35f59706d31","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"a2a1d2816bcae2c3f1bef7cb0ef935130104e3bf","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"dad6511aebb23581b6595f739d28aa2b5782fef4","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":8}}},{"hash":"5d0deb105af142219223671cbb9565da579f0324","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"25b761a7bac82c249d51933c344ec6fec241d9f3","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":8}}},{"hash":"df7e6690fd9c0dbc4088a9cba726b54efb14b58b","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"5eb7dc37a8f56dacc21553e69b0a1dd82fe21804","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":7}}},{"hash":"92957ecb8918a149686a2d2fd6f4ebdd8ee12a39","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"0dbf37b58d04286786745f5294533c8b78f9c893","isMergeCommit":false,"messageTitle":"commit message 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":7}}},{"hash":"2fc4a9b21d1f8a6b839c7d5d47c41a2ad4f4998d","isMergeCommit":false,"messageTitle":"ip - Riya Mehta","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"54e1c5a54931607684676c5cc0baa3ddc341ad7f","isMergeCommit":false,"messageTitle":"ip - Riya Mehta","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":2}}},{"hash":"4c4321364fad0274772a02fb83b8edaab30a8cd5","isMergeCommit":false,"messageTitle":"Committing Level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"020940783469bf6fca6354ad0814950d0d2fedb5","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":4}}},{"hash":"1024554e46d994cf465742175b99c00451ebcc96","isMergeCommit":false,"messageTitle":"Committing Level 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"843b949ff53a3c339060f23575b204bec81a76b7","isMergeCommit":false,"messageTitle":"Committing Level 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"8570478f754871ccc584b11f3d7c12e651d6c65f","isMergeCommit":false,"messageTitle":"Committing Level 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"c8c810027001663f7c246c2d00fe26f5f5d1f58c","isMergeCommit":false,"messageTitle":"Tagging Level 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"070a09a2b07c481d1f84e7db79a50095dfb4e2d4","isMergeCommit":false,"messageTitle":"Tagging Level 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-24","commitResults":[{"hash":"367172154a1841c4c9340310e9145936da762b7b","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":12}}},{"hash":"715ce88a25b9d75a73208fb98a5beeadae811a60","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"8b830596cea7341b1581398362da4c5fb4101e3c","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"b6ef51f07df21202ed9279f201a437ae3fac78c7","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"bc9248e9ae20849af864f3e289ea301ccef32633","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"0a186be5633c054ce40437716e01276e87c0f2c0","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"51138a0aea849541b74f589d9d343cad1e68c253","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"d92d6baa6565ef01bb8e8090bc5079df17c4ddba","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":8}}},{"hash":"44ca44432a62566b833c174c3ce05c31f26583b0","isMergeCommit":false,"messageTitle":"Committing Level 4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":4}}},{"hash":"c8d30445458ff7207d42fb173a85408825e6bef5","isMergeCommit":false,"messageTitle":"Committing Level 4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"69d9b79674f428afd5b8715f8fda7b60a977fd72","isMergeCommit":false,"messageTitle":"Committing text-ui-test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"198334a595afaa06f4f1e2e0867c0c07d26b2c0e","isMergeCommit":false,"messageTitle":"Committing Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":5}}},{"hash":"bb49d9e7cd1bd5c9367132950a88b3cdcfb80cb3","isMergeCommit":false,"messageTitle":"Committing Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":128,"deletions":75}}},{"hash":"8aab7cbd13c38c9df72ad659608c0c1ea0822d23","isMergeCommit":false,"messageTitle":"Committing Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":9}}}]},{"date":"2023-09-01","commitResults":[{"hash":"c63c221342d8030fc37093a3f1e937ad6c3f1147","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-16 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":13}}},{"hash":"ad3a198bebe8db708d95e617c64c9eb9055127fe","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-16 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"e02da591a691e32aa6b34d06a601eaf576cc5298","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-8 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":24}}},{"hash":"840b1ff79bf4e09b5d44cb18f91609de58ed1107","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-8 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"RiyaMehta2211":{"java":286,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"RiyaMehta2211":15631.13},"authorDisplayNameMap":{"RiyaMehta2211":"CS2103T-T14-2 MEHT..BHAI"}} +{"authorDailyContributionsMap":{"RiyaMehta2211":[{"date":"2023-08-23","commitResults":[{"hash":"cee5ef0e681036be72f4817998d6f35f59706d31","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"a2a1d2816bcae2c3f1bef7cb0ef935130104e3bf","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"dad6511aebb23581b6595f739d28aa2b5782fef4","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":8}}},{"hash":"5d0deb105af142219223671cbb9565da579f0324","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"25b761a7bac82c249d51933c344ec6fec241d9f3","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":8}}},{"hash":"df7e6690fd9c0dbc4088a9cba726b54efb14b58b","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"5eb7dc37a8f56dacc21553e69b0a1dd82fe21804","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":7}}},{"hash":"92957ecb8918a149686a2d2fd6f4ebdd8ee12a39","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"0dbf37b58d04286786745f5294533c8b78f9c893","isMergeCommit":false,"messageTitle":"commit message 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":7}}},{"hash":"2fc4a9b21d1f8a6b839c7d5d47c41a2ad4f4998d","isMergeCommit":false,"messageTitle":"ip - Riya Mehta","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"54e1c5a54931607684676c5cc0baa3ddc341ad7f","isMergeCommit":false,"messageTitle":"ip - Riya Mehta","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":2}}},{"hash":"4c4321364fad0274772a02fb83b8edaab30a8cd5","isMergeCommit":false,"messageTitle":"Committing Level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"020940783469bf6fca6354ad0814950d0d2fedb5","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":4}}},{"hash":"1024554e46d994cf465742175b99c00451ebcc96","isMergeCommit":false,"messageTitle":"Committing Level 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"843b949ff53a3c339060f23575b204bec81a76b7","isMergeCommit":false,"messageTitle":"Committing Level 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"8570478f754871ccc584b11f3d7c12e651d6c65f","isMergeCommit":false,"messageTitle":"Committing Level 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"c8c810027001663f7c246c2d00fe26f5f5d1f58c","isMergeCommit":false,"messageTitle":"Tagging Level 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"070a09a2b07c481d1f84e7db79a50095dfb4e2d4","isMergeCommit":false,"messageTitle":"Tagging Level 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-24","commitResults":[{"hash":"367172154a1841c4c9340310e9145936da762b7b","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":12}}},{"hash":"715ce88a25b9d75a73208fb98a5beeadae811a60","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"8b830596cea7341b1581398362da4c5fb4101e3c","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"b6ef51f07df21202ed9279f201a437ae3fac78c7","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"bc9248e9ae20849af864f3e289ea301ccef32633","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"0a186be5633c054ce40437716e01276e87c0f2c0","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"51138a0aea849541b74f589d9d343cad1e68c253","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"d92d6baa6565ef01bb8e8090bc5079df17c4ddba","isMergeCommit":false,"messageTitle":"Committing Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":8}}},{"hash":"44ca44432a62566b833c174c3ce05c31f26583b0","isMergeCommit":false,"messageTitle":"Committing Level 4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":4}}},{"hash":"c8d30445458ff7207d42fb173a85408825e6bef5","isMergeCommit":false,"messageTitle":"Committing Level 4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"69d9b79674f428afd5b8715f8fda7b60a977fd72","isMergeCommit":false,"messageTitle":"Committing text-ui-test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"198334a595afaa06f4f1e2e0867c0c07d26b2c0e","isMergeCommit":false,"messageTitle":"Committing Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":5}}},{"hash":"bb49d9e7cd1bd5c9367132950a88b3cdcfb80cb3","isMergeCommit":false,"messageTitle":"Committing Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":128,"deletions":75}}},{"hash":"8aab7cbd13c38c9df72ad659608c0c1ea0822d23","isMergeCommit":false,"messageTitle":"Committing Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":9}}}]},{"date":"2023-09-01","commitResults":[{"hash":"c63c221342d8030fc37093a3f1e937ad6c3f1147","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-16 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":13}}},{"hash":"ad3a198bebe8db708d95e617c64c9eb9055127fe","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-16 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"e02da591a691e32aa6b34d06a601eaf576cc5298","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-8 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":24}}},{"hash":"840b1ff79bf4e09b5d44cb18f91609de58ed1107","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-8 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"698b2ca51779ccf55694576e023759d4405dd99e","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-8 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"d5890789b34d776bbdf06574fc303ead47134e91","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-8 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"a13da369a4e4c67eef854dda0509e3f5c48a8f62","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-8 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":12}}},{"hash":"f0a837ad005259ae604cc20360168e68652abec2","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-8 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"75c7865710f0b2e37a3ede1b6f24bcbaaf31a997","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-8 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":27}}},{"hash":"a0704e1bae161d5e4fae465fe600202a7ea30b15","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes for Level 7. The tasklist will be saved to Duke.txt in UTF-8 encoded format when terminating the chatBot. The saved taskList can be retrieved after restarting the chatBot.","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"637bfeff15bb6589e12f6585cbae3df1d4c906c6","isMergeCommit":false,"messageTitle":"The deadline and event tasks now require a concrete dd-MM-yyyy HHmm format input, and will output in MMM d yyyy HHmm format (time in the 24 hours format) as part of Level 8.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":15}}},{"hash":"0d460fbc974a67092335a021ee6dd898f1ad013e","isMergeCommit":false,"messageTitle":"The deadline and event tasks now require a concrete dd-MM-yyyy HHmm format input, and will output in MMM d yyyy HHmm format (time in the 24 hours format) as part of Level 8.","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"2861c63a7dcff160e015c3b920851ef0522f1abb","isMergeCommit":false,"messageTitle":"Revert \"The deadline and event tasks now require a concrete dd-MM-yyyy HHmm format input, and will output in MMM d yyyy HHmm format (time in the 24 hours format) as part of Level 8.\"","messageBody":"This reverts commit 0d460fbc974a67092335a021ee6dd898f1ad013e.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"a5460d9564ac7e949280d28a458a4f60f37564f6","isMergeCommit":false,"messageTitle":"Revert \"Revert \"The deadline and event tasks now require a concrete dd-MM-yyyy HHmm format input, and will output in MMM d yyyy HHmm format (time in the 24 hours format) as part of Level 8.\"\"","messageBody":"This reverts commit 2861c63a7dcff160e015c3b920851ef0522f1abb.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"RiyaMehta2211":{"java":319,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"RiyaMehta2211":19141.822},"authorDisplayNameMap":{"RiyaMehta2211":"CS2103T-T14-2 MEHT..BHAI"}} diff --git a/Sebtey_ip_master/authorship.json b/Sebtey_ip_master/authorship.json index dfb15821..6995674b 100644 --- a/Sebtey_ip_master/authorship.json +++ b/Sebtey_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"/**","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":" * Tasks that need to be done before a specific date/time.","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":" */","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":" //TODO","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":" final static String SYMBOL \u003d \"D\";","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":" protected String by;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":" Deadline(String description, String by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Sebtey"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Sebtey"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"Sebtey"},"content":" public String getType() {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"Sebtey"},"content":" return SYMBOL;","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"Sebtey"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"Sebtey"},"content":" return \"[D]\" + super.toString() + \"(by:\" + this.by + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Sebtey":25}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"/**","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":" * Tasks that start at a specific date/time and ends at a specific date/time.","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":" */","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":" //TODO","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":" static final String SYMBOL \u003d \"E\";","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":" protected String from;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":" protected String to;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Sebtey"},"content":" Event(String description, String from, String to) {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Sebtey"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Sebtey"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"Sebtey"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"Sebtey"},"content":" public String getType() {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"Sebtey"},"content":" return SYMBOL;","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"Sebtey"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"Sebtey"},"content":" return \"[E][\" + getStatusIcon() + \"] \" + super.getTask() + \" (from: \" + this.from + \" to:\" + this.to + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Sebtey":26}},{"path":"src/main/java/NoDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"public class NoDescriptionException extends RuntimeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":" public NoDescriptionException(String message) {","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":" super(message);","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":" return \"Please ensure that you key in your arguments correctly.\";","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Sebtey":10}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":" private String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":" Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":" public String getTask(){","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Sebtey"},"content":" return this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Sebtey"},"content":" public abstract String getType();","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"Sebtey"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Sebtey"},"content":" * updateCompletionStatus will change the current completion status of the task","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Sebtey"},"content":" * to true or false if it is currently false or true respectively.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Sebtey"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Sebtey"},"content":" public void updateCompletionStatus() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Sebtey"},"content":" //If done, change to not done or false","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Sebtey"},"content":" //Else, change to done or true","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Sebtey"},"content":" this.isDone \u003d !(this.isDone);","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Sebtey"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Sebtey"},"content":" //Task is marked as done with an \"X\"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Sebtey"},"content":" return isDone","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Sebtey"},"content":" ? \"X\"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Sebtey"},"content":" : \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"Sebtey"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"Sebtey"},"content":" return this.isDone;","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"Sebtey"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"Sebtey"},"content":" return \"[\" + getStatusIcon() +\"] \" + getTask();","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Sebtey":41}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"/**","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":" * ToDos are tasks that have no date/time attached to them.","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":" */","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":" static final String SYMBOL \u003d \"T\";","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":" ToDo(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Sebtey"},"content":" public String getType() {","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Sebtey"},"content":" return SYMBOL;","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"Sebtey"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"Sebtey"},"content":" return \"[T][\" + getStatusIcon() + \"] \" + super.getTask();","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Sebtey":20}},{"path":"src/main/java/Veda.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"public class Veda {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":" private final static String NAME \u003d \"Veda\";","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e(100);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":" private static void addTask(String taskArgs) throws NoDescriptionException {","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":" String type \u003d taskArgs.split(\" \")[0].toLowerCase();","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Sebtey"},"content":" Task newTask \u003d null;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Sebtey"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Sebtey"},"content":" String[] descriptions \u003d null; //For multiple arguments","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"Sebtey"},"content":" switch(type) {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"Sebtey"},"content":" case \"todo\":","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"Sebtey"},"content":" description \u003d taskArgs.replaceFirst(\"todo \", \"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"Sebtey"},"content":" if (description.toLowerCase() \u003d\u003d type) {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"Sebtey"},"content":" throw new NoDescriptionException(\"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"Sebtey"},"content":" newTask \u003d new ToDo(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"Sebtey"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"Sebtey"},"content":" //TODO add error handling for no \"/by\" keyword","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"Sebtey"},"content":" if (description.toLowerCase() \u003d\u003d type) {","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"Sebtey"},"content":" throw new NoDescriptionException(\"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"Sebtey"},"content":" description \u003d taskArgs.replaceFirst(\"deadline \", \"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"Sebtey"},"content":" descriptions \u003d description.split(\"/by\");","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"Sebtey"},"content":" newTask \u003d new Deadline(descriptions[0], descriptions[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"Sebtey"},"content":" case \"event\":","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"Sebtey"},"content":" //TODO add more error handling of wrong arguments","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"Sebtey"},"content":" if (description.toLowerCase() \u003d\u003d type) {","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"Sebtey"},"content":" throw new NoDescriptionException(\"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"Sebtey"},"content":" description \u003d taskArgs.replaceFirst(\"event \", \"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"Sebtey"},"content":" descriptions \u003d description.split(\"/from \");","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"Sebtey"},"content":" String from \u003d descriptions[1].split(\" /to \")[0];","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"Sebtey"},"content":" String to \u003d description.split(\"/to\")[1];","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"Sebtey"},"content":" newTask \u003d new Event(descriptions[0], from, to);","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"Sebtey"},"content":" default:","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"Sebtey"},"content":" //TODO error input","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Sebtey"},"content":" if (newTask !\u003d null \u0026\u0026 tasks.add(newTask)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"added in mission:\\n\" + newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"Sebtey"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"System is unable to accommodate the new mission\");","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"Sebtey"},"content":" private static void deleteTask(int taskIndex) {","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"Sebtey"},"content":" Task task \u003d tasks.remove(taskIndex);","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Noted. I have removed the following mission:\");","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"Sebtey"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"Sebtey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Invalid index! Please ensure you correctly key in your target index.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"Sebtey"},"content":" private static void markAsDone(int taskIndex) {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"Sebtey"},"content":" Task task \u003d tasks.get(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"Sebtey"},"content":" if (task.isDone()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"Sebtey"},"content":" //Task already marked as done","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Mission has been completed previously.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"Sebtey"},"content":" return;","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":87,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"Sebtey"},"content":" task.updateCompletionStatus();","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Mission status updated! Mission completed successfully.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"Sebtey"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"Sebtey"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":94,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Invalid index! Please ensure you correctly key in your target index.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":95,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":96,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"Sebtey"},"content":" private static void markUndone(int taskIndex) {","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":100,"author":{"gitId":"Sebtey"},"content":" Task task \u003d tasks.get(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":102,"author":{"gitId":"Sebtey"},"content":" if (!(task.isDone())) {","lastModifiedDate":"2023-08-25"},{"lineNumber":103,"author":{"gitId":"Sebtey"},"content":" //task already marked as undone","lastModifiedDate":"2023-08-25"},{"lineNumber":104,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Mission is already marked as undone!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":105,"author":{"gitId":"Sebtey"},"content":" return;","lastModifiedDate":"2023-08-25"},{"lineNumber":106,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":107,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":108,"author":{"gitId":"Sebtey"},"content":" task.updateCompletionStatus();","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Mission status updated! Mission completion status reverted.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"Sebtey"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":112,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":113,"author":{"gitId":"Sebtey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":114,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Invalid index! Please ensure you correctly key in your target index.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":115,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"Sebtey"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"Sebtey"},"content":" //Greet users upon initialisation","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"Sebtey"},"content":" System.out.println(NAME + \" initialised. How may I help you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"Sebtey"},"content":" Scanner inScanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"Sebtey"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"Sebtey"},"content":" String input \u003d inScanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"Sebtey"},"content":" if (input.toLowerCase().equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"Sebtey"},"content":" //User wishes to exit the program","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"Sebtey"},"content":" } else if (input.toLowerCase().equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"Sebtey"},"content":" //User wishes to see his listed missions","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Missions:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":137,"author":{"gitId":"Sebtey"},"content":" tasks.forEach( task -\u003e System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"Sebtey"},"content":" (tasks.indexOf(task) + 1) + \".\" + task","lastModifiedDate":"2023-08-25"},{"lineNumber":139,"author":{"gitId":"Sebtey"},"content":" ));","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"Sebtey"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"Sebtey"},"content":" } else if (input.toLowerCase().split(\" \")[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"Sebtey"},"content":" //User wishes to mark task as done","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"Sebtey"},"content":" markAsDone(Integer.parseInt(input.toLowerCase().split(\" \")[1]) - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"Sebtey"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"Sebtey"},"content":" } else if (input.toLowerCase().split(\" \")[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"Sebtey"},"content":" //User wishes to mark task as undone","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"Sebtey"},"content":" markUndone(Integer.parseInt(input.toLowerCase().split(\" \")[1]) - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"Sebtey"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"Sebtey"},"content":" } else if (input.toLowerCase().split(\" \")[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":151,"author":{"gitId":"Sebtey"},"content":" //User wishes to delete a task","lastModifiedDate":"2023-08-25"},{"lineNumber":152,"author":{"gitId":"Sebtey"},"content":" deleteTask(Integer.parseInt(input.toLowerCase().split(\" \")[1]) - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":153,"author":{"gitId":"Sebtey"},"content":" continue;","lastModifiedDate":"2023-08-25"},{"lineNumber":154,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"Sebtey"},"content":" //Add tasks","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":158,"author":{"gitId":"Sebtey"},"content":" addTask(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"Sebtey"},"content":" } catch (NoDescriptionException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":160,"author":{"gitId":"Sebtey"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-25"},{"lineNumber":161,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":162,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"Sebtey"},"content":" //Exits the program","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Bye. All the best for your mission!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Sebtey":168}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"todo testing123","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":"mark 1","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":"unmark 1","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":"bye","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Sebtey":7}},{"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":"Sebtey"},"content":"java -classpath ..\\bin Veda \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-25"},{"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":{"Sebtey":1,"-":20}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"/**","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":" * Tasks that need to be done before a specific date/time.","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":" */","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":" //TODO","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":" final static String SYMBOL \u003d \"D\";","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":" protected String by;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":" Deadline(String description, String by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Sebtey"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Sebtey"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"Sebtey"},"content":" Deadline(String description, String by, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Sebtey"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Sebtey"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"Sebtey"},"content":" public String getType() {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"Sebtey"},"content":" return SYMBOL;","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"Sebtey"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"Sebtey"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Sebtey"},"content":" public String convertToStorageForm() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Sebtey"},"content":" final String SEPARATOR \u003d \"::\";","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Sebtey"},"content":" final String status \u003d isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Sebtey"},"content":" //D::0::return book::June 6th","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Sebtey"},"content":" return SYMBOL + SEPARATOR + status + SEPARATOR + getDescription() + SEPARATOR + this.by;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Sebtey":39}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"/**","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":" * Tasks that start at a specific date/time and ends at a specific date/time.","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":" */","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":" //TODO","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":" static final String SYMBOL \u003d \"E\";","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":" protected String from;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":" protected String to;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Sebtey"},"content":" Event(String description, String from, String to) {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Sebtey"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Sebtey"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"Sebtey"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"Sebtey"},"content":" Event(String description, String period, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Sebtey"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Sebtey"},"content":" this.from \u003d period.split(\"-\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Sebtey"},"content":" this.to \u003d period.split(\"-\")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"Sebtey"},"content":" public String getType() {","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"Sebtey"},"content":" return SYMBOL;","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"Sebtey"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"Sebtey"},"content":" return \"[E][\" + getStatusIcon() + \"] \" + super.getDescription() + \" (from: \" + this.from + \" to:\" + this.to + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Sebtey"},"content":" public String convertToStorageForm() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Sebtey"},"content":" final String SEPARATOR \u003d \"::\";","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Sebtey"},"content":" final String status \u003d isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Sebtey"},"content":" final String period \u003d this.from + \"-\" + this.to;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Sebtey"},"content":" //E::0::project meeting::Aug 6th 2pm-4pm","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Sebtey"},"content":" return SYMBOL + SEPARATOR + status + SEPARATOR + getDescription() + SEPARATOR + period;","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Sebtey":42}},{"path":"src/main/java/IncorrectInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"public class IncorrectInputException extends RuntimeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":" public IncorrectInputException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":" super(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":" return \"Please ensure that you key in your arguments correctly.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Sebtey":10}},{"path":"src/main/java/NoDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"public class NoDescriptionException extends IncorrectInputException {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":" public NoDescriptionException(String message) {","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":" super(message);","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":" return \"Please ensure that you key in your arguments correctly.\";","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Sebtey":10}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":" private final String dir \u003d \"/VedaMissions\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":" private final String storagePath \u003d \"/VedaMissions/Missions.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Sebtey"},"content":" private final File storageFile \u003d new File(storagePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Sebtey"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Sebtey"},"content":" * Adds file into the directory specified.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Sebtey"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Sebtey"},"content":" * @return whether file has been successfully added into the hard disk.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Sebtey"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Sebtey"},"content":" public boolean addFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Sebtey"},"content":" File directory \u003d new File(dir);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Sebtey"},"content":" if (directory.mkdir()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Sebtey"},"content":" storageFile.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Sebtey"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Sebtey"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"An error occurred while trying to create the file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Sebtey"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Sebtey"},"content":" public boolean checkFileExists() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Sebtey"},"content":" return storageFile.exists();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Sebtey"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Sebtey"},"content":" * Returns the stored task list from the hard disk.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Sebtey"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Sebtey"},"content":" * @throws FileNotFoundException If the storageFile is not located in its rightful directory.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Sebtey"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Sebtey"},"content":" public ArrayList\u003cTask\u003e retrieveTasks() throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Sebtey"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Sebtey"},"content":" Scanner sc \u003d new Scanner(storageFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Sebtey"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Sebtey"},"content":" final String task \u003d sc.nextLine(); //Each task is listed in a single line","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Sebtey"},"content":" char type \u003d task.charAt(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Sebtey"},"content":" String[] descriptions \u003d task.split(\"::\"); //:: demarcates a different field","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Sebtey"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Sebtey"},"content":" case \u0027T\u0027:","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Sebtey"},"content":" tasks.add(new ToDo(descriptions[2], descriptions[1].matches(\"1\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Sebtey"},"content":" case \u0027D\u0027:","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Sebtey"},"content":" //Deadline","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Sebtey"},"content":" tasks.add(new Deadline(descriptions[2], descriptions[3], descriptions[1].matches(\"1\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Sebtey"},"content":" case \u0027E\u0027:","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Sebtey"},"content":" //Event","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Sebtey"},"content":" tasks.add(new Event(descriptions[2], descriptions[3], descriptions[1].matches(\"1\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Sebtey"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Wrong file format\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Sebtey"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Sebtey"},"content":" //Formatting error in saved file","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Sebtey"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"File corrupted.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Sebtey"},"content":" sc.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Sebtey"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Sebtey"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"Sebtey"},"content":" * Updates the saved data in the disk.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Sebtey"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"Sebtey"},"content":" * @param tasks is the current list of tasks the user has.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"Sebtey"},"content":" * @param isAddingTask indicates whether the user is adding a new task or overwriting the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Sebtey"},"content":" * @return true if file is successfully updated.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Sebtey"},"content":" * @throws IOException When writer is called upon to write after being closed.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Sebtey"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"Sebtey"},"content":" public boolean updateData(ArrayList\u003cTask\u003e tasks, boolean isAddingTask) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"Sebtey"},"content":" //TODO overwrite information in storageFile","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"Sebtey"},"content":" FileWriter writer \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"Sebtey"},"content":" boolean isNotFirstTask \u003d tasks.size() !\u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"Sebtey"},"content":" writer \u003d new FileWriter(storageFile, isAddingTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"Sebtey"},"content":" String newData;","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"Sebtey"},"content":" if (isNotFirstTask \u0026\u0026 isAddingTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"Sebtey"},"content":" //Add a new line containing the latest task","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"Sebtey"},"content":" newData \u003d (System.lineSeparator() + tasks.get(tasks.size() - 1).convertToStorageForm());","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"Sebtey"},"content":" } else if (!isNotFirstTask \u0026\u0026 isAddingTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"Sebtey"},"content":" newData \u003d tasks.get(tasks.size() - 1).convertToStorageForm();","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"Sebtey"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Sebtey"},"content":" //Overwrite the file","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"Sebtey"},"content":" newData \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"Sebtey"},"content":" //Iterate through tasks and convertToStorageForm","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"Sebtey"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"Sebtey"},"content":" newData +\u003d tasks.get(i).convertToStorageForm();","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"Sebtey"},"content":" if (i !\u003d tasks.size() - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"Sebtey"},"content":" newData +\u003d System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"Sebtey"},"content":" writer.write(newData);","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"Sebtey"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"Sebtey"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"Sebtey"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"Sebtey"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Failed to update tasks on disk.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"Sebtey"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Sebtey"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Sebtey":136}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":" private String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":" Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":" Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Sebtey"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Sebtey"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Sebtey"},"content":" public String getDescription(){","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Sebtey"},"content":" return this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Sebtey"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Sebtey"},"content":" * updateCompletionStatus will change the current completion status of the task","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Sebtey"},"content":" * to true or false if it is currently false or true respectively.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Sebtey"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Sebtey"},"content":" public void updateCompletionStatus() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Sebtey"},"content":" //If done, change to not done or false","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Sebtey"},"content":" //Else, change to done or true","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Sebtey"},"content":" this.isDone \u003d !(this.isDone);","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Sebtey"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Sebtey"},"content":" //Task is marked as done with an \"X\"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Sebtey"},"content":" return isDone","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Sebtey"},"content":" ? \"X\"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Sebtey"},"content":" : \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"Sebtey"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"Sebtey"},"content":" return this.isDone;","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"Sebtey"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"Sebtey"},"content":" return \"[\" + getStatusIcon() +\"] \" + getDescription();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Sebtey"},"content":" public abstract String getType();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Sebtey"},"content":" public abstract String convertToStorageForm();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Sebtey":48}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"/**","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":" * ToDos are tasks that have no date/time attached to them.","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":" */","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":" static final String SYMBOL \u003d \"T\";","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":" ToDo(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Sebtey"},"content":" ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Sebtey"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"Sebtey"},"content":" public String getType() {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"Sebtey"},"content":" return SYMBOL;","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"Sebtey"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"Sebtey"},"content":" return \"[T][\" + getStatusIcon() + \"] \" + super.getDescription();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Sebtey"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Sebtey"},"content":" public String convertToStorageForm() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Sebtey"},"content":" final String separator \u003d \"::\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Sebtey"},"content":" final String status \u003d isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Sebtey"},"content":" return SYMBOL + separator + status + separator + getDescription();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Sebtey":32}},{"path":"src/main/java/Veda.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":"public class Veda {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Sebtey"},"content":" private final static String NAME \u003d \"Veda\";","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Sebtey"},"content":" private final static Storage storage \u003d new Storage();","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Sebtey"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e(100);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Sebtey"},"content":" private static boolean addFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Sebtey"},"content":" boolean isSuccessful \u003d storage.addFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Sebtey"},"content":" return isSuccessful;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Sebtey"},"content":" private static boolean loadData() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Sebtey"},"content":" if (storage.checkFileExists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Sebtey"},"content":" //File does exist","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Sebtey"},"content":" tasks \u003d storage.retrieveTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Sebtey"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Unable to find file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Sebtey"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Sebtey"},"content":" //File does not exist","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Sebtey"},"content":" addFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Sebtey"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Sebtey"},"content":" private static void addTask(String taskArgs) throws NoDescriptionException {","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"Sebtey"},"content":" String type \u003d taskArgs.split(\" \")[0].toLowerCase();","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"Sebtey"},"content":" Task newTask \u003d null;","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"Sebtey"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"Sebtey"},"content":" String[] descriptions \u003d null; //For multiple arguments","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"Sebtey"},"content":" switch(type) {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"Sebtey"},"content":" case \"todo\":","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"Sebtey"},"content":" description \u003d taskArgs.replaceFirst(\"todo \", \"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"Sebtey"},"content":" if (description.toLowerCase() \u003d\u003d type) {","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"Sebtey"},"content":" throw new NoDescriptionException(\"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"Sebtey"},"content":" newTask \u003d new ToDo(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"Sebtey"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"Sebtey"},"content":" //TODO add error handling for no \"/by\" keyword","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"Sebtey"},"content":" if (description.toLowerCase() \u003d\u003d type) {","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"Sebtey"},"content":" throw new NoDescriptionException(\"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"Sebtey"},"content":" description \u003d taskArgs.replaceFirst(\"deadline \", \"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"Sebtey"},"content":" descriptions \u003d description.split(\"/by\");","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"Sebtey"},"content":" newTask \u003d new Deadline(descriptions[0], descriptions[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"Sebtey"},"content":" case \"event\":","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"Sebtey"},"content":" if (description.toLowerCase() \u003d\u003d type) {","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"Sebtey"},"content":" throw new NoDescriptionException(\"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"Sebtey"},"content":" } else if (description.split(\"/\").length \u003c 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Sebtey"},"content":" throw new IncorrectInputException(\"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"Sebtey"},"content":" description \u003d taskArgs.replaceFirst(\"event \", \"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"Sebtey"},"content":" descriptions \u003d description.split(\"/from \");","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"Sebtey"},"content":" String from \u003d descriptions[1].split(\" /to \")[0];","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"Sebtey"},"content":" String to \u003d description.split(\"/to\")[1];","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"Sebtey"},"content":" newTask \u003d new Event(descriptions[0], from, to);","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"Sebtey"},"content":" default:","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"Sebtey"},"content":" //TODO error input","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"Sebtey"},"content":" if (newTask !\u003d null \u0026\u0026 tasks.add(newTask)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"added in mission:\\n\" + newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"Sebtey"},"content":" storage.updateData(tasks, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"Sebtey"},"content":" } catch(IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Error writing to file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"Sebtey"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"System is unable to accommodate the new mission\");","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"Sebtey"},"content":" private static void deleteTask(int taskIndex) {","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":100,"author":{"gitId":"Sebtey"},"content":" Task task \u003d tasks.remove(taskIndex);","lastModifiedDate":"2023-08-25"},{"lineNumber":101,"author":{"gitId":"Sebtey"},"content":" storage.updateData(tasks, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":103,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Noted. I have removed the following mission:\");","lastModifiedDate":"2023-08-25"},{"lineNumber":104,"author":{"gitId":"Sebtey"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":105,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":106,"author":{"gitId":"Sebtey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":107,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Invalid index! Please ensure you correctly key in your target index.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":108,"author":{"gitId":"Sebtey"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Unable to update file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":111,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":112,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":113,"author":{"gitId":"Sebtey"},"content":" private static void markAsDone(int taskIndex) {","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":115,"author":{"gitId":"Sebtey"},"content":" Task task \u003d tasks.get(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":117,"author":{"gitId":"Sebtey"},"content":" if (task.isDone()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":118,"author":{"gitId":"Sebtey"},"content":" //Task already marked as done","lastModifiedDate":"2023-08-25"},{"lineNumber":119,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Mission has been completed previously.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":120,"author":{"gitId":"Sebtey"},"content":" return;","lastModifiedDate":"2023-08-25"},{"lineNumber":121,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":122,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":123,"author":{"gitId":"Sebtey"},"content":" task.updateCompletionStatus();","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"Sebtey"},"content":" storage.updateData(tasks, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Mission status updated! Mission completed successfully.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"Sebtey"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":128,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":129,"author":{"gitId":"Sebtey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":130,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Invalid index! Please ensure you correctly key in your target index.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":131,"author":{"gitId":"Sebtey"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Unable to update file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":134,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"Sebtey"},"content":" private static void markUndone(int taskIndex) {","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":138,"author":{"gitId":"Sebtey"},"content":" Task task \u003d tasks.get(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":140,"author":{"gitId":"Sebtey"},"content":" if (!(task.isDone())) {","lastModifiedDate":"2023-08-25"},{"lineNumber":141,"author":{"gitId":"Sebtey"},"content":" //task already marked as undone","lastModifiedDate":"2023-08-25"},{"lineNumber":142,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Mission is already marked as undone!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":143,"author":{"gitId":"Sebtey"},"content":" return;","lastModifiedDate":"2023-08-25"},{"lineNumber":144,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":145,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":146,"author":{"gitId":"Sebtey"},"content":" task.updateCompletionStatus();","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"Sebtey"},"content":" storage.updateData(tasks, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Mission status updated! Mission completion status reverted.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"Sebtey"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":151,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":152,"author":{"gitId":"Sebtey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":153,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Invalid index! Please ensure you correctly key in your target index.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":154,"author":{"gitId":"Sebtey"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"Sebtey"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Unable to update file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":158,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"Sebtey"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"Sebtey"},"content":" //Greet users upon initialisation","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"Sebtey"},"content":" System.out.println(NAME + \" initialised. How may I help you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"Sebtey"},"content":" Scanner inScanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"Sebtey"},"content":" loadData();","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"Sebtey"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"Sebtey"},"content":" String input \u003d inScanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"Sebtey"},"content":" if (input.toLowerCase().equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"Sebtey"},"content":" //User wishes to exit the program","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"Sebtey"},"content":" inScanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"Sebtey"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"Sebtey"},"content":" } else if (input.toLowerCase().equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"Sebtey"},"content":" //User wishes to see his listed missions","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Missions:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":182,"author":{"gitId":"Sebtey"},"content":" tasks.forEach( task -\u003e System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"Sebtey"},"content":" (tasks.indexOf(task) + 1) + \".\" + task","lastModifiedDate":"2023-08-25"},{"lineNumber":184,"author":{"gitId":"Sebtey"},"content":" ));","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"Sebtey"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"Sebtey"},"content":" } else if (input.toLowerCase().split(\" \")[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"Sebtey"},"content":" //User wishes to mark task as done","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"Sebtey"},"content":" markAsDone(Integer.parseInt(input.toLowerCase().split(\" \")[1]) - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"Sebtey"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"Sebtey"},"content":" } else if (input.toLowerCase().split(\" \")[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"Sebtey"},"content":" //User wishes to mark task as undone","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"Sebtey"},"content":" markUndone(Integer.parseInt(input.toLowerCase().split(\" \")[1]) - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"Sebtey"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"Sebtey"},"content":" } else if (input.toLowerCase().split(\" \")[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":196,"author":{"gitId":"Sebtey"},"content":" //User wishes to delete a task","lastModifiedDate":"2023-08-25"},{"lineNumber":197,"author":{"gitId":"Sebtey"},"content":" deleteTask(Integer.parseInt(input.toLowerCase().split(\" \")[1]) - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":198,"author":{"gitId":"Sebtey"},"content":" continue;","lastModifiedDate":"2023-08-25"},{"lineNumber":199,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":201,"author":{"gitId":"Sebtey"},"content":" //Add tasks","lastModifiedDate":"2023-08-23"},{"lineNumber":202,"author":{"gitId":"Sebtey"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":203,"author":{"gitId":"Sebtey"},"content":" addTask(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":204,"author":{"gitId":"Sebtey"},"content":" } catch (IncorrectInputException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"Sebtey"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-25"},{"lineNumber":206,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":207,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":208,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":209,"author":{"gitId":"Sebtey"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":210,"author":{"gitId":"Sebtey"},"content":" //Exits the program","lastModifiedDate":"2023-08-23"},{"lineNumber":211,"author":{"gitId":"Sebtey"},"content":" System.out.println(\"Bye. All the best for your mission!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":212,"author":{"gitId":"Sebtey"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":213,"author":{"gitId":"Sebtey"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Sebtey":213}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Sebtey"},"content":"todo testing123","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Sebtey"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Sebtey"},"content":"mark 1","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Sebtey"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Sebtey"},"content":"unmark 1","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Sebtey"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Sebtey"},"content":"bye","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Sebtey":7}},{"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":"Sebtey"},"content":"java -classpath ..\\bin Veda \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-25"},{"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":{"Sebtey":1,"-":20}}] diff --git a/Sebtey_ip_master/commits.json b/Sebtey_ip_master/commits.json index ad54bcd4..91ee7104 100644 --- a/Sebtey_ip_master/commits.json +++ b/Sebtey_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Sebtey":[{"date":"2023-08-23","commitResults":[{"hash":"78649d5f247dd30c1823567b412fbcd6e7e05e70","isMergeCommit":false,"messageTitle":"Implemented Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":10}}},{"hash":"895ba0beda2df1ca501282f88268ac9d025a4d97","isMergeCommit":false,"messageTitle":"echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"385cee9485f0b439a1a24a60d7128a9014b09b55","isMergeCommit":false,"messageTitle":"Add, List feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]},{"date":"2023-08-24","commitResults":[{"hash":"a0ec1247c7c30ac11fd25676f11d6278f7ca4cce","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":4}}}]},{"date":"2023-08-25","commitResults":[{"hash":"41a206536fec747ea66de6a5fcf173db465d4cf3","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":6}}},{"hash":"608a123b587487c4fedf9b64259540440cfafeef","isMergeCommit":false,"messageTitle":"Added in simple automated CLI testing","messageBody":"","tags":["A-TextUITesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":1,"deletions":1},"bat":{"insertions":1,"deletions":1}}},{"hash":"9cce85327cfb82f8bf04f5b702bc75d754f947fc","isMergeCommit":false,"messageTitle":"Added in error handling features","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":22}}},{"hash":"9f6ded6b5b197dbc4a29e2929b75b6eb5b704ec3","isMergeCommit":false,"messageTitle":"Add in deletion of task feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"Sebtey":{"java":290,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":7}},"authorContributionVariance":{"Sebtey":6792.9844},"authorDisplayNameMap":{"Sebtey":"CS2103T-T17-1 SEBA.. XUN"}} +{"authorDailyContributionsMap":{"Sebtey":[{"date":"2023-08-23","commitResults":[{"hash":"78649d5f247dd30c1823567b412fbcd6e7e05e70","isMergeCommit":false,"messageTitle":"Implemented Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":10}}},{"hash":"895ba0beda2df1ca501282f88268ac9d025a4d97","isMergeCommit":false,"messageTitle":"echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"385cee9485f0b439a1a24a60d7128a9014b09b55","isMergeCommit":false,"messageTitle":"Add, List feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]},{"date":"2023-08-24","commitResults":[{"hash":"a0ec1247c7c30ac11fd25676f11d6278f7ca4cce","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":4}}}]},{"date":"2023-08-25","commitResults":[{"hash":"41a206536fec747ea66de6a5fcf173db465d4cf3","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":6}}},{"hash":"608a123b587487c4fedf9b64259540440cfafeef","isMergeCommit":false,"messageTitle":"Added in simple automated CLI testing","messageBody":"","tags":["A-TextUITesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":1,"deletions":1},"bat":{"insertions":1,"deletions":1}}},{"hash":"9cce85327cfb82f8bf04f5b702bc75d754f947fc","isMergeCommit":false,"messageTitle":"Added in error handling features","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":22}}},{"hash":"9f6ded6b5b197dbc4a29e2929b75b6eb5b704ec3","isMergeCommit":false,"messageTitle":"Add in deletion of task feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}}]},{"date":"2023-08-31","commitResults":[{"hash":"a143d4c8e95f53da48fc3cda5a50688a6f5298f0","isMergeCommit":false,"messageTitle":"Implement file systems","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":0}}},{"hash":"a0b01da241a3b5680010f75cad3d63d1f26b21c3","isMergeCommit":false,"messageTitle":"Add file reading mechanism","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":57}}}]},{"date":"2023-09-01","commitResults":[{"hash":"ed1a587dcb61b763324a4aff93afe686424892a6","isMergeCommit":false,"messageTitle":"Add autosaving feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":175,"deletions":66}}},{"hash":"094200ffe6d88002684681fc11a6e7345067deb4","isMergeCommit":false,"messageTitle":"Rename saved tasks file naming convention","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":13}}}]}]},"authorFileTypeContributionMap":{"Sebtey":{"java":530,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":7}},"authorContributionVariance":{"Sebtey":10062.196},"authorDisplayNameMap":{"Sebtey":"CS2103T-T17-1 SEBA.. XUN"}} diff --git a/Seonlo99_ip_master/authorship.json b/Seonlo99_ip_master/authorship.json index cb7be18e..390fa3b4 100644 --- a/Seonlo99_ip_master/authorship.json +++ b/Seonlo99_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/nobita/Nobita.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":"public class Nobita {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" public Nobita() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" this.storage \u003d new Storage(System.getProperty(\"user.dir\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" this.tasks \u003d storage.readFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" new Nobita().run();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" System.out.println(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" } catch (NobitaException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":44}},{"path":"src/main/java/nobita/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" private final Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" public AddCommand(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" this.task \u003d new ToDo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" public AddCommand(String description, String by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" this.task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" public AddCommand(String description, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" this.task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" tasks.addTask(this.task);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" ui.showMessage(\"Got it. I\u0027ve added this task:\\n\" + task + \"\\nNow you have \"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" + tasks.getTotalTask() +\" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":37}},{"path":"src/main/java/nobita/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":10}},{"path":"src/main/java/nobita/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" Task task \u003d tasks.deleteTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" ui.showMessage(\"Noted. I\u0027ve removed this task:\\n\" + task + \"\\nNow you have \" + tasks.getTotalTask() +\" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":24}},{"path":"src/main/java/nobita/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" storage.writeFile(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" ui.exitMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":19}},{"path":"src/main/java/nobita/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" tasks.showAllTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":18}},{"path":"src/main/java/nobita/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" Task task \u003d tasks.markComplete(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" ui.showMessage(\"Nice! I\u0027ve marked this task as done:\\n\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":24}},{"path":"src/main/java/nobita/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"public class UnmarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" Task task \u003d tasks.markIncomplete(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" ui.showMessage(\"OK, I\u0027ve marked this task as not done yet:\\n\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":24}},{"path":"src/main/java/nobita/exception/NobitaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"public class NobitaException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":" public NobitaException(String errorMessage) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" return \"☹ OOPS!!! \" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":12}},{"path":"src/main/java/nobita/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.command.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":" public static Command parse(String fullCommand) throws NobitaException {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":" String[] commands \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" String commandType \u003d commands[0].toLowerCase();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" return new MarkCommand(Integer.parseInt(commands[1]) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" return new UnmarkCommand(Integer.parseInt(commands[1]) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" if (commands.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(\"The description of a todo cannot be empty.\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" + \"Please specify a description.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" return new AddCommand(commands[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" if (commands.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(\"The description of a deadline cannot be empty.\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" + \"Please specify a description.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" String[] deadlineFields \u003d commands[1].split(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" return new AddCommand(deadlineFields[0], deadlineFields[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" if (commands.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(\"The description of a event cannot be empty.\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" + \"Please specify a description.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" String[] eventFields \u003d commands[1].split(\" /from \");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" String[] fromAndTo \u003d eventFields[1].split(\" /to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" return new AddCommand(eventFields[0], fromAndTo[0], fromAndTo[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" return new DeleteCommand(Integer.parseInt(commands[1]) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":46}},{"path":"src/main/java/nobita/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" private final String fileName \u003d \"Nobita.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" private final String directoryPath;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" public Storage(String directoryPath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" this.directoryPath \u003d directoryPath;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" public TaskList readFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" checkFileExist();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" File file \u003d new File(getFilePath());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" while(sc.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" String[] data \u003d sc.nextLine().split(\";\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" Task toAdd \u003d new Task(\"Test Subject\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" switch (data[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" toAdd \u003d new ToDo(data[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" toAdd \u003d new Deadline(data[2], data[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" toAdd \u003d new Event(data[2], data[3], data[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" if (data[1].equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":" toAdd.markComplete();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":" tasks.addTask(toAdd);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Seonlo99"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Seonlo99"},"content":" public void writeFile(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Seonlo99"},"content":" FileWriter file \u003d new FileWriter(getFilePath());","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Seonlo99"},"content":" for (Task task: tasks.getAllTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Seonlo99"},"content":" file.write(task.toFileFormat());","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Seonlo99"},"content":" file.write(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Seonlo99"},"content":" file.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Seonlo99"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Seonlo99"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Seonlo99"},"content":" private String getFilePath() {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Seonlo99"},"content":" Path pathDirectory \u003d java.nio.file.Paths.get(directoryPath,\"src\", \"main\", \"data\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Seonlo99"},"content":" Files.createDirectories(pathDirectory);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Seonlo99"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Seonlo99"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Seonlo99"},"content":" String filePath \u003d pathDirectory.toString() + \"\\\\\" + this.fileName;","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Seonlo99"},"content":" return filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Seonlo99"},"content":" private void checkFileExist() {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Seonlo99"},"content":" File file \u003d new File(getFilePath());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Seonlo99"},"content":" file.createNewFile(); // create new file if file does not exist","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"Seonlo99"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Seonlo99"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":87}},{"path":"src/main/java/nobita/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" private String by;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" private LocalDate date;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" private LocalTime time;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" public Deadline(String taskName, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" super(taskName);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" String[] dueDateTime \u003d by.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" this.date \u003d LocalDate.parse(dueDateTime[0]); // input format \"2016-06-11\"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" this.time \u003d LocalTime.parse(dueDateTime[1]); // input format \"06:30\"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" return \"[D]\" + super.toString() + \" (by: \" + date.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy\")) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" StringJoiner joiner \u003d new StringJoiner(\";\");","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" joiner.add(\"D\").add(super.toFileFormat()).add(this.by);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" return joiner.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":32}},{"path":"src/main/java/nobita/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":" protected String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":" protected String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" public Event(String taskName, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" super(taskName);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start + \" to: \"+ this.end + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" StringJoiner joiner \u003d new StringJoiner(\";\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" joiner.add(\"E\").add(super.toFileFormat()).add(this.start).add(this.end);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" return joiner.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":26}},{"path":"src/main/java/nobita/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":" private final String taskName;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":" private boolean isComplete \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" public Task(String taskName) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" public void markComplete() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" this.isComplete \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" public void markIncomplete() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" private String getStatus() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" return isComplete ? \"[X] \" : \"[ ] \";","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" return getStatus() + this.taskName;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" StringJoiner joiner \u003d new StringJoiner(\";\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" joiner.add(this.isComplete ? \"1\" : \"0\").add(this.taskName);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" return joiner.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":35}},{"path":"src/main/java/nobita/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" public int getTotalTask() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" public Task deleteTask(int targetTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" return this.tasks.remove(targetTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" public Task markComplete(int targetTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" Task task \u003d this.tasks.get(targetTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" task.markComplete();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" public Task markIncomplete(int targetTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" Task task \u003d this.tasks.get(targetTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" task.markIncomplete();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" public ArrayList\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" return this.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" public void showAllTask() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" int listNum \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" for (Task task: tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" System.out.println(listNum + \". \" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" ++listNum;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":48}},{"path":"src/main/java/nobita/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":" public ToDo(String taskName) {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" super(taskName);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" StringJoiner joiner \u003d new StringJoiner(\";\");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" joiner.add(\"T\").add(super.toFileFormat());","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" return joiner.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":23}},{"path":"src/main/java/nobita/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":" System.out.println(\"Hello! I\u0027m Nobita\");","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" return new Scanner(System.in).nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" public void exitMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" public void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" System.out.println(\"________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" public void showMessage(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":31}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":8}},{"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":"Seonlo99"},"content":"java -classpath ..\\bin Nobita \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"Seonlo99":1,"-":20}}] +[{"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":"Seonlo99"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" mainClass.set(\"nobita.Nobita\")","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" archiveBaseName \u003d \"nobita\"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Seonlo99":3,"-":40}},{"path":"src/main/java/nobita/Nobita.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" * Class that encapsulates a robot application name Nobita.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" * @author Zheng Chenglong","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"public class Nobita {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" /** The Ui that interact with the user */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" /** The list of tasks stored */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" /** The Storage used for reading and writing data to local file */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" * Constructs Nobita.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" public Nobita() {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" this.storage \u003d new Storage(System.getProperty(\"user.dir\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" this.tasks \u003d storage.readFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" * Starts Nobita robot.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" * @param args an array of command-line arguments for the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" new Nobita().run();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":" * Start running Nobita robot.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Seonlo99"},"content":" System.out.println(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Seonlo99"},"content":" ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Seonlo99"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Seonlo99"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Seonlo99"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Seonlo99"},"content":" } catch (NobitaException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Seonlo99"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Seonlo99"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Seonlo99"},"content":" ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":65}},{"path":"src/main/java/nobita/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" * Class that encapsulates AddCommand which extends from Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" * @author Zheng Chenglong","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" /** The task to be added */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" private final Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" * Constructor AddCommand for ToDo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" * @param description The description of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" public AddCommand(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" this.task \u003d new ToDo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" * Constructor AddCommand for Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" * @param description The description of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" * @param by The due date of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" public AddCommand(String description, String by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" this.task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" * Constructor AddCommand for Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":" * @param description The description of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" * @param from The start date for task.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":" * @param to The end data for task.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" public AddCommand(String description, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":" this.task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Seonlo99"},"content":" * Command that executes the task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Seonlo99"},"content":" * @param tasks Contains all current tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Seonlo99"},"content":" * @param ui Ui for interacting with user.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Seonlo99"},"content":" * @param storage Storage that the data file is stored in.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Seonlo99"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Seonlo99"},"content":" tasks.addTask(this.task);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Seonlo99"},"content":" ui.showMessage(\"Got it. I\u0027ve added this task:\\n\" + task + \"\\nNow you have \"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Seonlo99"},"content":" + tasks.getTotalTask() +\" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Seonlo99"},"content":" * Retrieves a boolean on whether the Command is an Exit Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Seonlo99"},"content":" * @return false.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Seonlo99"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Seonlo99"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":76}},{"path":"src/main/java/nobita/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" * Class that encapsulates Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" * @author Zheng Chenglong","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" * Command that executes the corresponding task.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" * @param tasks Contains all current tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" * @param ui Ui for interacting with user.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" * @param storage Storage that the data file is stored in.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" * @throws NobitaException Allow subclasses to override the function with the throw property.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws NobitaException;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" * Retrieves a boolean on whether the Command is an Exit Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" * @return false.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":32}},{"path":"src/main/java/nobita/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" * Class that encapsulates DeleteCommand which extends from Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" * @author Zheng Chenglong","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" /** The index of task to be deleted */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" * Constructs DeleteCommand using the index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" * @param index the index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" * Command that executes the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" * @param tasks Contains all current tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" * @param ui Ui for interacting with user.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" * @param storage Storage that the data file is stored in.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" * @throws NobitaException If the task is not inside tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NobitaException {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" if (tasks.checkIndexWithinRange(index)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(\"Selected task number not in list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" Task task \u003d tasks.deleteTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" ui.showMessage(\"Noted. I\u0027ve removed this task:\\n\" + task + \"\\nNow you have \" + tasks.getTotalTask() +\" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":" * Retrieves a boolean on whether the Command is an Exit Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" * @return false.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Seonlo99"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":55}},{"path":"src/main/java/nobita/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" * Class that encapsulates ExitCommand which extends from Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" * @author Zheng Chenglong","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" * Command that executes exit of program.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" * @param tasks Contains all current tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" * @param ui Ui for interacting with user.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" * @param storage Storage that the data file is stored in.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" storage.writeFile(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" ui.exitMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" * Retrieves a boolean on whether the Command is an Exit Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" * @return true.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":38}},{"path":"src/main/java/nobita/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" * Class that encapsulates ListCommand which extends from Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" * @author Zheng Chenglong","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" * Command that executes listing of all tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" * @param tasks Contains all current tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" * @param ui Ui for interacting with user.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" * @param storage Storage that the data file is stored in.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" tasks.showAllTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" * Retrieves a boolean on whether the Command is an Exit Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" * @return false.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":37}},{"path":"src/main/java/nobita/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" * Class that encapsulates MarkCommand which extends from Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" * @author Zheng Chenglong","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" /** The index of task to be marked*/","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" * Constructs MarkCommand using the index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" * @param index the index of the task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" * Command that executes the marking of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" * @param tasks Contains all current tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" * @param ui Ui for interacting with user.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" * @param storage Storage that the data file is stored in.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" * @throws NobitaException If the task is not inside tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NobitaException {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" if (tasks.checkIndexWithinRange(index)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(\"Selected task number not in list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" Task task \u003d tasks.markComplete(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" ui.showMessage(\"Nice! I\u0027ve marked this task as done:\\n\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":" * Retrieves a boolean on whether the Command is an Exit Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" * @return false.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Seonlo99"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":55}},{"path":"src/main/java/nobita/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" * Class that encapsulates UnmarkCommand which extends from Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" * @author Zheng Chenglong","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"public class UnmarkCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" /** The index of task to be marked*/","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" * Constructs UnmarkCommand using the index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" * @param index the index of the task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" * Command that executes the unmarking of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" * @param tasks Contains all current tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" * @param ui Ui for interacting with user.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" * @param storage Storage that the data file is stored in.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" * @throws NobitaException If the task is not inside tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NobitaException {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" if (tasks.checkIndexWithinRange(index)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(\"Selected task number not in list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" Task task \u003d tasks.markIncomplete(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" ui.showMessage(\"OK, I\u0027ve marked this task as not done yet:\\n\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":" * Retrieves a boolean on whether the Command is an Exit Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" * @return false.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Seonlo99"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Seonlo99"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":55}},{"path":"src/main/java/nobita/exception/NobitaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":" * Class that encapsulates NobitaException.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":" * Throws an exception when error occurs in Nobita.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":" * @author Zheng Chenglong","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"public class NobitaException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" * Constructs NobitaException using an error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" * @param errorMessage The error message to be printed with the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" public NobitaException(String errorMessage) {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" * Returns the String representation of NobitaException.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" * @return String representation of NobitaException.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" return \"☹ OOPS!!! \" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":29}},{"path":"src/main/java/nobita/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.command.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import java.rmi.NotBoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" * Class that encapsulates Parser.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" * Parser that is used to read in and understand user commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" * @author Zheng Chenglong","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" * Parses the line of command given by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" * @param fullCommand A line of user input command string to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" * @return A Command instruction that the user specify.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" * @throws NobitaException If command received are of wrong format.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" public static Command parse(String fullCommand) throws NobitaException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" String[] commands \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" String commandType \u003d commands[0].toLowerCase();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" return new MarkCommand(checkNumber(commands[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" return new UnmarkCommand(checkNumber(commands[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" if (commands.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(\"The description of a todo cannot be empty.\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" + \"Please specify a description.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" return new AddCommand(commands[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" if (commands.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(\"The description of a deadline cannot be empty.\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":" + \"Please specify a description.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":" String[] deadlineFields \u003d commands[1].split(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" return new AddCommand(deadlineFields[0], deadlineFields[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":" if (commands.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(\"The description of a event cannot be empty.\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":" + \"Please specify a description.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Seonlo99"},"content":" String[] eventFields \u003d commands[1].split(\" /from \");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Seonlo99"},"content":" String[] fromAndTo \u003d eventFields[1].split(\" /to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Seonlo99"},"content":" return new AddCommand(eventFields[0], fromAndTo[0], fromAndTo[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Seonlo99"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Seonlo99"},"content":" return new DeleteCommand(Integer.parseInt(commands[1]) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Seonlo99"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Seonlo99"},"content":" * Check if the task number passed in is a number.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Seonlo99"},"content":" * @param toTest The number parameter that is pass in.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Seonlo99"},"content":" * @return An integer representing the correct task index.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Seonlo99"},"content":" * @throws NobitaException If parameter receive is not a number.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Seonlo99"},"content":" private static int checkNumber(String toTest) throws NobitaException {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Seonlo99"},"content":" return Integer.parseInt(toTest) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Seonlo99"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(\"Only numbers are allow\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"Seonlo99"},"content":"// private static void checkParameterLength(String[] toTest, int actual) throws NobitaException {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Seonlo99"},"content":"// int len \u003d toTest.length;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Seonlo99"},"content":"// if (len \u003c actual) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Seonlo99"},"content":"// throw new NobitaException(String.format(\"Expected %d parameter but only received %d\", actual, len));","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Seonlo99"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Seonlo99"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":85}},{"path":"src/main/java/nobita/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" * Class that encapsulates Storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" * Storage that is used to interact with local data files.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" * @author Zheng Chenglong","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" /** The file name that stores data */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" private final String fileName \u003d \"Nobita.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" /** The directory path that the file locates */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" private final String directoryPath;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" * Constructs Storage with a file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" * @param directoryPath The directory path that the data file is store in.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" public Storage(String directoryPath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" this.directoryPath \u003d directoryPath;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" * Reads the stored data file to Nobita.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" * @return A TaskList that contains all stored tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":" public TaskList readFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" checkFileExist();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":" File file \u003d new File(getFilePath());","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":" while(sc.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":" String[] data \u003d sc.nextLine().split(\";\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Seonlo99"},"content":" Task toAdd \u003d new Task(\"Test Subject\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Seonlo99"},"content":" switch (data[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Seonlo99"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Seonlo99"},"content":" toAdd \u003d new ToDo(data[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Seonlo99"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Seonlo99"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Seonlo99"},"content":" toAdd \u003d new Deadline(data[2], data[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"Seonlo99"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"Seonlo99"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"Seonlo99"},"content":" toAdd \u003d new Event(data[2], data[3], data[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"Seonlo99"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"Seonlo99"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"Seonlo99"},"content":" if (data[1].equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Seonlo99"},"content":" toAdd.markComplete();","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Seonlo99"},"content":" tasks.addTask(toAdd);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"Seonlo99"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"Seonlo99"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"Seonlo99"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"Seonlo99"},"content":" * Write the tasks from Nobita into the file located in the directory specified.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"Seonlo99"},"content":" * @throws NobitaException If error occur when saving file.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"Seonlo99"},"content":" public void writeFile(TaskList tasks) throws NobitaException {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"Seonlo99"},"content":" FileWriter file \u003d new FileWriter(getFilePath());","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Seonlo99"},"content":" for (Task task: tasks.getAllTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Seonlo99"},"content":" file.write(task.toFileFormat());","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Seonlo99"},"content":" file.write(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Seonlo99"},"content":" file.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Seonlo99"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Seonlo99"},"content":" throw new NobitaException(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"Seonlo99"},"content":" * Return the file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"Seonlo99"},"content":" * Creates directory to the file if directory does not exist.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"Seonlo99"},"content":" * @return String that represents the file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"Seonlo99"},"content":" private String getFilePath() {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Seonlo99"},"content":" Path pathDirectory \u003d java.nio.file.Paths.get(directoryPath,\"src\", \"main\", \"data\");","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Seonlo99"},"content":" Files.createDirectories(pathDirectory);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Seonlo99"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Seonlo99"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Seonlo99"},"content":" String filePath \u003d pathDirectory.toString() + \"\\\\\" + this.fileName;","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"Seonlo99"},"content":" return filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"Seonlo99"},"content":" * Check if file exist, do nothing if exist else create a new file.","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"Seonlo99"},"content":" private void checkFileExist() {","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"Seonlo99"},"content":" File file \u003d new File(getFilePath());","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"Seonlo99"},"content":" file.createNewFile(); // create new file if file does not exist","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"Seonlo99"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"Seonlo99"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":125}},{"path":"src/main/java/nobita/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" /** The data of the Deadline is due */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" private String by;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" /** The data of the Deadline is due */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" private LocalDate date;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" /** The time of the Deadline is due */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" private LocalTime time;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" * Constructs Deadline using name and due date of Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" * @param taskName The name of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" * @param by The due date.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" public Deadline(String taskName, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" super(taskName);","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" String[] dueDateTime \u003d by.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" this.date \u003d LocalDate.parse(dueDateTime[0]); // input format \"2016-06-11\"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" this.time \u003d LocalTime.parse(dueDateTime[1]); // input format \"06:30\"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" * Return a String representation of Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" * @return A String representing of Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" return \"[D]\" + super.toString() + \" (by: \" + date.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy\")) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" * Return a String representation of Deadline that is formatted for file reading and writing.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" * @return A String representation of Deadline that is formatted for file reading and writing.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":" StringJoiner joiner \u003d new StringJoiner(\";\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":" joiner.add(\"D\").add(super.toFileFormat()).add(this.by);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":" return joiner.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":54}},{"path":"src/main/java/nobita/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":" /** The start time of the Event */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":" protected String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" /** The end time of the Event */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" protected String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" * Constructs Deadline using name and due date of Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" * @param taskName The name of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" * @param start The start date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" * @param end The end date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" public Event(String taskName, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" super(taskName);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" * Return a String representation of Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" * @return A String representing of Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start + \" to: \"+ this.end + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" * Return a String representation of Event that is formatted for file reading and writing.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" * @return A String representation of Event that is formatted for file reading and writing.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" StringJoiner joiner \u003d new StringJoiner(\";\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" joiner.add(\"E\").add(super.toFileFormat()).add(this.start).add(this.end);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":" return joiner.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":47}},{"path":"src/main/java/nobita/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":" /** The name of the task */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":" private final String taskName;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" /** Whether the task is completed or not */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" private boolean isComplete \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" * Constructs a task with a task name.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" public Task(String taskName) {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" * Marks the task as complete.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" public void markComplete() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" this.isComplete \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" * Marks the task as incomplete.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" public void markIncomplete() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" * A getter of the status icon if task is completed or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" * @return A String representing the status icon.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" private String getStatus() {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" return isComplete ? \"[X] \" : \"[ ] \";","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" * Return a String representation of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" * @return A String representing of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":" return getStatus() + this.taskName;","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Seonlo99"},"content":" * Return a String representation of Task that is formatted for file reading and writing.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Seonlo99"},"content":" * @return A String representation of Task that is formatted for file reading and writing.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Seonlo99"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Seonlo99"},"content":" StringJoiner joiner \u003d new StringJoiner(\";\");","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Seonlo99"},"content":" joiner.add(this.isComplete ? \"1\" : \"0\").add(this.taskName);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Seonlo99"},"content":" return joiner.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":65}},{"path":"src/main/java/nobita/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" public int getTotalTask() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" public Task deleteTask(int targetTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" return this.tasks.remove(targetTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" public Task markComplete(int targetTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" Task task \u003d this.tasks.get(targetTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" task.markComplete();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" public Task markIncomplete(int targetTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" Task task \u003d this.tasks.get(targetTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" task.markIncomplete();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" public ArrayList\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" return this.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" public void showAllTask() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" int listNum \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" for (Task task: tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" System.out.println(listNum + \". \" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" ++listNum;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" public boolean checkIndexWithinRange(int ind) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" return ind \u003c 1 || ind \u003e this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":52}},{"path":"src/main/java/nobita/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.util.StringJoiner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":" * Constructs ToDo using name of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" public ToDo(String taskName) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" super(taskName);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" * Return a String representation of ToDo.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" * @return A String representing of ToDo.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" * Return a String representation of ToDo that is formatted for file reading and writing.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" * @return A String representation of ToDo that is formatted for file reading and writing.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" StringJoiner joiner \u003d new StringJoiner(\";\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" joiner.add(\"T\").add(super.toFileFormat());","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" return joiner.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":37}},{"path":"src/main/java/nobita/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":" * Class that encapsulates Ui.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":" * Ui is used to display message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":" * @author Zheng Chenglong","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" * Prints welcome message.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" System.out.println(\"Hello! I\u0027m Nobita\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" * Reads user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" * @return A String that represents the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" return new Scanner(System.in).nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" * Print the exit message.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" public void exitMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" * Prints a line.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" public void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" System.out.println(\"________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":" * Prints a error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":" * @param message The error message to be display to user.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Seonlo99"},"content":" public void showMessage(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Seonlo99"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Seonlo99":56}},{"path":"src/test/java/nobita/command/MarkTaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import nobita.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import nobita.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"import nobita.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"import org.junit.After;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"import org.junit.Before;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":"public class MarkTaskTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" public void outOfRangeTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" MarkCommand command \u003d new MarkCommand(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":" Ui testUi \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" Storage testStorage \u003d new Storage(\"test\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" testList.addTask(new ToDo(\"item 1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" testList.addTask(new ToDo(\"item 2\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" testList.addTask(new ToDo(\"item 3\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" NobitaException exception \u003d assertThrows(NobitaException.class, () -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" command.execute(testList, testUi, testStorage );","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" String expectedMessage \u003d \"Selected task number not in list\";","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" String actualMessage \u003d exception.getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" assertEquals(expectedMessage, actualMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":" System.out.println(\"Something went wrong with the test\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Seonlo99"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Seonlo99"},"content":" public void correctlyMarkTaskTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"Seonlo99"},"content":" MarkCommand command \u003d new MarkCommand(4);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"Seonlo99"},"content":" Ui testUi \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"Seonlo99"},"content":" Storage testStorage \u003d new Storage(\"test\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"Seonlo99"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Seonlo99"},"content":" testList.addTask(new ToDo(\"item 1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Seonlo99"},"content":" testList.addTask(new ToDo(\"item 2\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"Seonlo99"},"content":" testList.addTask(new ToDo(\"item 3\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"Seonlo99"},"content":" ByteArrayOutputStream outContent \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"Seonlo99"},"content":" System.setOut(new PrintStream(outContent));","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"Seonlo99"},"content":" ToDo testTask \u003d new ToDo(\"item 4\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Seonlo99"},"content":" testList.addTask(testTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"Seonlo99"},"content":" command.execute(testList, testUi, testStorage );","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"Seonlo99"},"content":" String expectedMessage \u003d testTask.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Seonlo99"},"content":" String actualMessage \u003d testList.getAllTasks().get(4).toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"Seonlo99"},"content":" assertEquals(expectedMessage, actualMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"Seonlo99"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"Seonlo99"},"content":" System.out.println(\"Something went wrong with the test\");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Seonlo99":75}},{"path":"src/test/java/nobita/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"package nobita.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"import nobita.exception.NobitaException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Seonlo99"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Seonlo99"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Seonlo99"},"content":" public void nonIntegerTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"Seonlo99"},"content":" NobitaException exception \u003d assertThrows(NobitaException.class, () -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Seonlo99"},"content":" Parser.parse(\"mark x\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"Seonlo99"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Seonlo99"},"content":" String expectedMessage \u003d \"Only numbers are allow\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"Seonlo99"},"content":" String actualMessage \u003d exception.getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"Seonlo99"},"content":" assertEquals(expectedMessage, actualMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"Seonlo99"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"Seonlo99"},"content":" System.out.println(\"Something went wrong with the test\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Seonlo99"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Seonlo99"},"content":" public void parameterTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Seonlo99"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Seonlo99"},"content":" NobitaException exception \u003d assertThrows(NobitaException.class, () -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Seonlo99"},"content":" Parser.parse(\"deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Seonlo99"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Seonlo99"},"content":" String expectedMessage \u003d \"The description of a deadline cannot be empty.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Seonlo99"},"content":" + \"Please specify a description.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Seonlo99"},"content":" String actualMessage \u003d exception.getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"Seonlo99"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"Seonlo99"},"content":" assertEquals(expectedMessage, actualMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"Seonlo99"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"Seonlo99"},"content":" System.out.println(\"Something went wrong with the test\");","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"Seonlo99"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Seonlo99"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Seonlo99":42}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Seonlo99"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Seonlo99"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Seonlo99"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Seonlo99"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Seonlo99"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Seonlo99"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Seonlo99"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Seonlo99"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Seonlo99":8}},{"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":"Seonlo99"},"content":"java -classpath ..\\bin Nobita \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"Seonlo99":1,"-":20}}] diff --git a/Seonlo99_ip_master/commits.json b/Seonlo99_ip_master/commits.json index a646f3fd..00c635f6 100644 --- a/Seonlo99_ip_master/commits.json +++ b/Seonlo99_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Seonlo99":[{"date":"2023-08-23","commitResults":[{"hash":"6880e022aaef63a3e7248c372d4cda5523b47e76","isMergeCommit":false,"messageTitle":"Rename Chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"8407e2e3b116499c73b2f59ef98c029f557b2913","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Seonlo99/ip","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{}},{"hash":"aabbbff1c4ba3480a6414d59fe396b165f16c419","isMergeCommit":false,"messageTitle":"Add ability to store and display","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"6df7fd8369b5ce232be21ba7ee6162b16e5feed2","isMergeCommit":false,"messageTitle":"Add mark and unmark task","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":8}}},{"hash":"9e467fdc883c8c6ab8849672a9f94515f2ac9aa8","isMergeCommit":false,"messageTitle":"Add Todo, Deadline and Event","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":120,"deletions":45}}},{"hash":"8d5eaad7ea986f1436041a0a6bdcb6a095326da6","isMergeCommit":false,"messageTitle":"Add automated Text UI Testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"478ace9c8ba82a6bdf55ab15b3e89d13198e78df","isMergeCommit":false,"messageTitle":"Add Handle Errors","messageBody":"","tags":["Level-5","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":71},"bat":{"insertions":1,"deletions":1}}},{"hash":"bca211d4a69539f993e47cd0740f2b765dfb35cf","isMergeCommit":false,"messageTitle":"Add deletefeature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":7}}},{"hash":"054fccc7961748bd00600d6785e2fca4043ba271","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"f7db58cc12e014042f8d2d3d0feb8715502a12fe","isMergeCommit":false,"messageTitle":"Update syntax","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":49}}}]},{"date":"2023-08-30","commitResults":[{"hash":"7c8433b8990e7a465e074a8d33a85d29d909f869","isMergeCommit":false,"messageTitle":"Add Level-7 Save feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":162,"deletions":51}}},{"hash":"0490252bc700af1d9d7319522a11522afaefe41f","isMergeCommit":true,"messageTitle":"merge branch-Level-7 to master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"c3d23cd99232d8081dc4dcd274867a5ded58fc5f","isMergeCommit":false,"messageTitle":"Add Level-8 Date and Time feature","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":10,"deletions":2}}}]},{"date":"2023-08-31","commitResults":[{"hash":"87ac866f782885efc36fcc7e704726e203a4445a","isMergeCommit":false,"messageTitle":"Add A-MoreOOP refactor related code as classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":329,"deletions":167}}},{"hash":"edd669a6303639c50ad3e71d24e0b9ce4deac255","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":11}}},{"hash":"c7e3b6791d8dd5a18b155db64a45a0e607803741","isMergeCommit":false,"messageTitle":"Devide classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Seonlo99":{"java":540,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":8}},"authorContributionVariance":{"Seonlo99":33126.453},"authorDisplayNameMap":{"Seonlo99":"CS2103-T16-2 ZHEN..LONG"}} +{"authorDailyContributionsMap":{"Seonlo99":[{"date":"2023-08-23","commitResults":[{"hash":"6880e022aaef63a3e7248c372d4cda5523b47e76","isMergeCommit":false,"messageTitle":"Rename Chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"8407e2e3b116499c73b2f59ef98c029f557b2913","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Seonlo99/ip","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{}},{"hash":"aabbbff1c4ba3480a6414d59fe396b165f16c419","isMergeCommit":false,"messageTitle":"Add ability to store and display","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"6df7fd8369b5ce232be21ba7ee6162b16e5feed2","isMergeCommit":false,"messageTitle":"Add mark and unmark task","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":8}}},{"hash":"9e467fdc883c8c6ab8849672a9f94515f2ac9aa8","isMergeCommit":false,"messageTitle":"Add Todo, Deadline and Event","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":120,"deletions":45}}},{"hash":"8d5eaad7ea986f1436041a0a6bdcb6a095326da6","isMergeCommit":false,"messageTitle":"Add automated Text UI Testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"478ace9c8ba82a6bdf55ab15b3e89d13198e78df","isMergeCommit":false,"messageTitle":"Add Handle Errors","messageBody":"","tags":["Level-5","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":71},"bat":{"insertions":1,"deletions":1}}},{"hash":"bca211d4a69539f993e47cd0740f2b765dfb35cf","isMergeCommit":false,"messageTitle":"Add deletefeature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":7}}},{"hash":"054fccc7961748bd00600d6785e2fca4043ba271","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"f7db58cc12e014042f8d2d3d0feb8715502a12fe","isMergeCommit":false,"messageTitle":"Update syntax","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":49}}}]},{"date":"2023-08-30","commitResults":[{"hash":"7c8433b8990e7a465e074a8d33a85d29d909f869","isMergeCommit":false,"messageTitle":"Add Level-7 Save feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":162,"deletions":51}}},{"hash":"0490252bc700af1d9d7319522a11522afaefe41f","isMergeCommit":true,"messageTitle":"merge branch-Level-7 to master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"c3d23cd99232d8081dc4dcd274867a5ded58fc5f","isMergeCommit":false,"messageTitle":"Add Level-8 Date and Time feature","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":10,"deletions":2}}}]},{"date":"2023-08-31","commitResults":[{"hash":"87ac866f782885efc36fcc7e704726e203a4445a","isMergeCommit":false,"messageTitle":"Add A-MoreOOP refactor related code as classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":329,"deletions":167}}},{"hash":"edd669a6303639c50ad3e71d24e0b9ce4deac255","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":11}}},{"hash":"c7e3b6791d8dd5a18b155db64a45a0e607803741","isMergeCommit":false,"messageTitle":"Devide classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"a0af1a6f8645603182ba8da43eaada43347a1547","isMergeCommit":false,"messageTitle":"Add Gradle support for Nobita","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"426bad6210c6845f291b5656de731cd8437e8605","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":164,"deletions":7}}},{"hash":"0bfb982b590ff8a41a4ac90489c94beac84a0162","isMergeCommit":false,"messageTitle":"Add JavaDocs","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":400,"deletions":17}}}]}]},"authorFileTypeContributionMap":{"Seonlo99":{"java":1080,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":3,"txt":8}},"authorContributionVariance":{"Seonlo99":46115.664},"authorDisplayNameMap":{"Seonlo99":"CS2103-T16-2 ZHEN..LONG"}} diff --git a/Tang-Moyan_ip_master/authorship.json b/Tang-Moyan_ip_master/authorship.json index 8d47e4b5..6f33d296 100644 --- a/Tang-Moyan_ip_master/authorship.json +++ b/Tang-Moyan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tang-Moyan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Tang-Moyan"},"content":"import HelperClass.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"Tang-Moyan"},"content":" private static void printOneLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"---------------------------\");","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Tang-Moyan"},"content":" private static final String MyName \u003d \"Rio\";","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Tang-Moyan"},"content":" public static void Greet() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Tang-Moyan"},"content":" printOneLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Hello! I\u0027m \" + MyName);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Tang-Moyan"},"content":" printOneLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Tang-Moyan"},"content":" public static void Exit() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":31,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Tang-Moyan"},"content":" Greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Tang-Moyan"},"content":" boolean wantToExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Tang-Moyan"},"content":" Scanner getUserInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Tang-Moyan"},"content":" Scanner getUserIndex \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Tang-Moyan"},"content":" Task[] userList \u003d new Task[100];","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Tang-Moyan"},"content":" int listPointer \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Tang-Moyan"},"content":" while (!(wantToExit)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Tang-Moyan"},"content":" String userInput \u003d getUserInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Tang-Moyan"},"content":" printOneLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Tang-Moyan"},"content":" switch (userInput) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Tang-Moyan"},"content":" case \"bye\":","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Tang-Moyan"},"content":" wantToExit \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Tang-Moyan"},"content":" Exit();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Tang-Moyan"},"content":" case \"list\":","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Tang-Moyan"},"content":" if (listPointer \u003c 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"No items in the list yet\");","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Tang-Moyan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Tang-Moyan"},"content":" for (int i \u003d 0; i \u003c listPointer; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Tang-Moyan"},"content":" int num \u003d i + 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(num + userList[i].display());","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Tang-Moyan"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter index:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Tang-Moyan"},"content":" int index \u003d getUserIndex.nextInt() - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Tang-Moyan"},"content":" if (index \u003c 0 || index \u003e\u003d listPointer) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Invalid index.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Tang-Moyan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Tang-Moyan"},"content":" userList[index].markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Tang-Moyan"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter index:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Tang-Moyan"},"content":" int i \u003d getUserIndex.nextInt() - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Tang-Moyan"},"content":" if (i \u003c 0 || i \u003e\u003d listPointer) {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Invalid index.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Tang-Moyan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Tang-Moyan"},"content":" userList[i].unmarkDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"Tang-Moyan"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter task name:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Tang-Moyan"},"content":" String taskName \u003d getUserInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Tang-Moyan"},"content":" userList[listPointer] \u003d new Task(taskName, 1, \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(userList[listPointer].display());","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"Tang-Moyan"},"content":" listPointer \u003d listPointer + 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Now you have \" + listPointer + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"Tang-Moyan"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter task name:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"Tang-Moyan"},"content":" String taskN \u003d getUserInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter deadline:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"Tang-Moyan"},"content":" String timePeriod \u003d getUserInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"Tang-Moyan"},"content":" userList[listPointer] \u003d new Task(taskN, 2, \"by:\" + timePeriod);","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(userList[listPointer].display());","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"Tang-Moyan"},"content":" listPointer \u003d listPointer + 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Now you have \" + listPointer + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"Tang-Moyan"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter task name:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"Tang-Moyan"},"content":" String tN \u003d getUserInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter start time:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"Tang-Moyan"},"content":" String startTime \u003d getUserInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter end time:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"Tang-Moyan"},"content":" String endTime \u003d getUserInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"Tang-Moyan"},"content":" userList[listPointer] \u003d new Task(tN, 3, \"from: \" + startTime + \" to: \" + endTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(userList[listPointer].display());","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"Tang-Moyan"},"content":" listPointer \u003d listPointer + 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Now you have \" + listPointer + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"Tang-Moyan"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"Tang-Moyan"},"content":" userList[listPointer] \u003d new Task(userInput, 1, \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"Tang-Moyan"},"content":" listPointer \u003d listPointer + 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"added: \" + userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Now you have \" + listPointer + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"Tang-Moyan"},"content":" printOneLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Tang-Moyan":150,"-":10}},{"path":"src/main/java/HelperClass/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tang-Moyan"},"content":"package HelperClass;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Tang-Moyan"},"content":"public class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Tang-Moyan"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Tang-Moyan"},"content":" private int type;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Tang-Moyan"},"content":" private String timePeriod;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Tang-Moyan"},"content":" private String taskName;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Tang-Moyan"},"content":" public Task(String taskName, int type, String timePeriod) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Tang-Moyan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Tang-Moyan"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Tang-Moyan"},"content":" this.timePeriod \u003d timePeriod;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Tang-Moyan"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Tang-Moyan"},"content":" public void markDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Tang-Moyan"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"[X] \" + taskName);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Tang-Moyan"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Tang-Moyan"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"[ ] \" + taskName);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Tang-Moyan"},"content":" public String display() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Tang-Moyan"},"content":" String description \u003d \"[\";","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Tang-Moyan"},"content":" switch (this.type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Tang-Moyan"},"content":" case 1:","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Tang-Moyan"},"content":" description \u003d description + \"T]\";","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Tang-Moyan"},"content":" case 2:","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Tang-Moyan"},"content":" description \u003d description + \"D]\";","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Tang-Moyan"},"content":" case 3:","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Tang-Moyan"},"content":" description \u003d description + \"E]\";","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Tang-Moyan"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Tang-Moyan"},"content":" description \u003d description + \"[X] \" + taskName;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Tang-Moyan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Tang-Moyan"},"content":" description \u003d description + \"[ ] \" + taskName;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Tang-Moyan"},"content":" if (!(this.type \u003d\u003d 1)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Tang-Moyan"},"content":" description \u003d description + \" (\" + timePeriod + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Tang-Moyan"},"content":" return description;","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Tang-Moyan"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Tang-Moyan":57}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tang-Moyan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Tang-Moyan"},"content":"import HelperClass.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"Tang-Moyan"},"content":" private static void printOneLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"---------------------------\");","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Tang-Moyan"},"content":" private static final String MyName \u003d \"Rio\";","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Tang-Moyan"},"content":" public static void Greet() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Tang-Moyan"},"content":" printOneLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Hello! I\u0027m \" + MyName);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Tang-Moyan"},"content":" printOneLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Tang-Moyan"},"content":" public static void Exit() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Tang-Moyan"},"content":" private static String getUserTaskName() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Tang-Moyan"},"content":" Scanner getUserInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"Tang-Moyan"},"content":" String taskName \u003d getUserInput.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Tang-Moyan"},"content":" if (taskName.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"OOPS!!! The name of a task cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Tang-Moyan"},"content":" return \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Tang-Moyan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"Tang-Moyan"},"content":" return taskName;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":43,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Tang-Moyan"},"content":" Greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Tang-Moyan"},"content":" boolean wantToExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Tang-Moyan"},"content":" Scanner getUserInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Tang-Moyan"},"content":" Scanner getUserIndex \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Tang-Moyan"},"content":" Task[] userList \u003d new Task[100];","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Tang-Moyan"},"content":" int listPointer \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Tang-Moyan"},"content":" while (!(wantToExit)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Tang-Moyan"},"content":" String userInput \u003d getUserInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Tang-Moyan"},"content":" printOneLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Tang-Moyan"},"content":" switch (userInput) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Tang-Moyan"},"content":" case \"bye\":","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Tang-Moyan"},"content":" wantToExit \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Tang-Moyan"},"content":" Exit();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Tang-Moyan"},"content":" case \"list\":","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Tang-Moyan"},"content":" if (listPointer \u003c 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"No items in the list yet\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Tang-Moyan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Tang-Moyan"},"content":" for (int i \u003d 0; i \u003c listPointer; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Tang-Moyan"},"content":" int num \u003d i + 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(num + userList[i].display());","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Tang-Moyan"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter index:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Tang-Moyan"},"content":" int index \u003d getUserIndex.nextInt() - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Tang-Moyan"},"content":" if (index \u003c 0 || index \u003e\u003d listPointer) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Invalid index.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Tang-Moyan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Tang-Moyan"},"content":" userList[index].markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"Tang-Moyan"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter index:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Tang-Moyan"},"content":" int i \u003d getUserIndex.nextInt() - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Tang-Moyan"},"content":" if (i \u003c 0 || i \u003e\u003d listPointer) {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Invalid index.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Tang-Moyan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"Tang-Moyan"},"content":" userList[i].unmarkDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Tang-Moyan"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter task name:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"Tang-Moyan"},"content":" String taskName \u003d getUserTaskName();","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"Tang-Moyan"},"content":" if (!(taskName.isEmpty())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Tang-Moyan"},"content":" userList[listPointer] \u003d new Task(taskName, 1, \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(userList[listPointer].display());","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"Tang-Moyan"},"content":" listPointer \u003d listPointer + 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Now you have \" + listPointer + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"Tang-Moyan"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter task name:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"Tang-Moyan"},"content":" String taskN \u003d getUserTaskName();","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"Tang-Moyan"},"content":" if (!(taskN.isEmpty())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter deadline:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"Tang-Moyan"},"content":" String timePeriod \u003d getUserInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"Tang-Moyan"},"content":" userList[listPointer] \u003d new Task(taskN, 2, \"by:\" + timePeriod);","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(userList[listPointer].display());","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"Tang-Moyan"},"content":" listPointer \u003d listPointer + 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Now you have \" + listPointer + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"Tang-Moyan"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter task name:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"Tang-Moyan"},"content":" String tN \u003d getUserTaskName();","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"Tang-Moyan"},"content":" if (!(tN.isEmpty())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter start time:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"Tang-Moyan"},"content":" String startTime \u003d getUserInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter end time:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"Tang-Moyan"},"content":" String endTime \u003d getUserInput.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"Tang-Moyan"},"content":" userList[listPointer] \u003d new Task(tN, 3, \"from: \" + startTime + \" to: \" + endTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(userList[listPointer].display());","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"Tang-Moyan"},"content":" listPointer \u003d listPointer + 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Now you have \" + listPointer + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"Tang-Moyan"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Enter index:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"Tang-Moyan"},"content":" int ind \u003d getUserIndex.nextInt() - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"Tang-Moyan"},"content":" if (ind \u003c 0 || ind \u003e\u003d listPointer) {","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Invalid index.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"Tang-Moyan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(userList[listPointer].display());","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"Tang-Moyan"},"content":" Task[] newUserList \u003d new Task[100];","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"Tang-Moyan"},"content":" for (int a \u003d 0, k \u003d 0; a \u003c listPointer; a++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"Tang-Moyan"},"content":" // if the index is","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"Tang-Moyan"},"content":" // the removal element index","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"Tang-Moyan"},"content":" if (a \u003d\u003d ind) {","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"Tang-Moyan"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"Tang-Moyan"},"content":" // if the index is not","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"Tang-Moyan"},"content":" // the removal element index","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"Tang-Moyan"},"content":" newUserList[k++] \u003d userList[a];","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"Tang-Moyan"},"content":" listPointer \u003d listPointer - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"Tang-Moyan"},"content":" userList \u003d newUserList;","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Now you have \" + listPointer + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"Tang-Moyan"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":203,"author":{"gitId":"Tang-Moyan"},"content":" printOneLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":204,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Tang-Moyan":201,"-":10}},{"path":"src/main/java/HelperClass/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Tang-Moyan"},"content":"package HelperClass;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Tang-Moyan"},"content":"public class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Tang-Moyan"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Tang-Moyan"},"content":" private int type;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Tang-Moyan"},"content":" private String timePeriod;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Tang-Moyan"},"content":" private String taskName;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Tang-Moyan"},"content":" public Task(String taskName, int type, String timePeriod) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Tang-Moyan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Tang-Moyan"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Tang-Moyan"},"content":" this.timePeriod \u003d timePeriod;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Tang-Moyan"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Tang-Moyan"},"content":" public void markDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Tang-Moyan"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"[X] \" + taskName);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Tang-Moyan"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Tang-Moyan"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Tang-Moyan"},"content":" System.out.println(\"[ ] \" + taskName);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Tang-Moyan"},"content":" public String display() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Tang-Moyan"},"content":" String description \u003d \"[\";","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Tang-Moyan"},"content":" switch (this.type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Tang-Moyan"},"content":" case 1:","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Tang-Moyan"},"content":" description \u003d description + \"T]\";","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Tang-Moyan"},"content":" case 2:","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Tang-Moyan"},"content":" description \u003d description + \"D]\";","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Tang-Moyan"},"content":" case 3:","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Tang-Moyan"},"content":" description \u003d description + \"E]\";","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Tang-Moyan"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Tang-Moyan"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Tang-Moyan"},"content":" description \u003d description + \"[X] \" + taskName;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Tang-Moyan"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Tang-Moyan"},"content":" description \u003d description + \"[ ] \" + taskName;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Tang-Moyan"},"content":" if (!(this.type \u003d\u003d 1)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Tang-Moyan"},"content":" description \u003d description + \" (\" + timePeriod + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Tang-Moyan"},"content":" return description;","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Tang-Moyan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Tang-Moyan"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Tang-Moyan"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Tang-Moyan":57}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Tang-Moyan"},"content":"todo","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Tang-Moyan"},"content":"read book","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"Tang-Moyan"},"content":"bye","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"Tang-Moyan":3}}] diff --git a/Tang-Moyan_ip_master/commits.json b/Tang-Moyan_ip_master/commits.json index e70e837c..3cafa1f2 100644 --- a/Tang-Moyan_ip_master/commits.json +++ b/Tang-Moyan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Tang-Moyan":[{"date":"2023-08-24","commitResults":[{"hash":"f88b6b32bb87fbb42eb9debc9cd5901b5b9f9f49","isMergeCommit":false,"messageTitle":"Level 0 Rename, Greet, Exit","messageBody":"","tags":["Level_0","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"fedfbdec231d900841404fa0a31d85ef5ddb4af9","isMergeCommit":false,"messageTitle":"Added Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":0}}},{"hash":"30a8d0f3cc16b11f4d136027c753f844b6efbdca","isMergeCommit":false,"messageTitle":"Added Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":9}}},{"hash":"76e279d8d193b7f5cc5d9b588686e5212ea4ceab","isMergeCommit":false,"messageTitle":"Added Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":5}}},{"hash":"05bfd793eb631167cc6031dbfb6cab14fcff225f","isMergeCommit":false,"messageTitle":"Added Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"Tang-Moyan":{"java":207,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"Tang-Moyan":3868.8284},"authorDisplayNameMap":{"Tang-Moyan":"CS2103T-W11-4 TANG..OYAN"}} +{"authorDailyContributionsMap":{"Tang-Moyan":[{"date":"2023-08-24","commitResults":[{"hash":"f88b6b32bb87fbb42eb9debc9cd5901b5b9f9f49","isMergeCommit":false,"messageTitle":"Level 0 Rename, Greet, Exit","messageBody":"","tags":["Level_0","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"fedfbdec231d900841404fa0a31d85ef5ddb4af9","isMergeCommit":false,"messageTitle":"Added Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":0}}},{"hash":"30a8d0f3cc16b11f4d136027c753f844b6efbdca","isMergeCommit":false,"messageTitle":"Added Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":9}}},{"hash":"76e279d8d193b7f5cc5d9b588686e5212ea4ceab","isMergeCommit":false,"messageTitle":"Added Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":5}}},{"hash":"05bfd793eb631167cc6031dbfb6cab14fcff225f","isMergeCommit":false,"messageTitle":"Added Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":4}}}]},{"date":"2023-09-01","commitResults":[{"hash":"95571afe30bf6968e33b2f5f00b7c4f4d8652969","isMergeCommit":false,"messageTitle":"Added UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"6b91d86451bb6f99fd480fd81feec8120083a9ae","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":30}}},{"hash":"5bb12d45cb438a464f4a3a8fa9a3beb69e60d8df","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"Tang-Moyan":{"java":258,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":3}},"authorContributionVariance":{"Tang-Moyan":3955.76},"authorDisplayNameMap":{"Tang-Moyan":"CS2103T-W11-4 TANG..OYAN"}} diff --git a/TohLiYuan_ip_master/authorship.json b/TohLiYuan_ip_master/authorship.json index 1007ebbe..5b12c745 100644 --- a/TohLiYuan_ip_master/authorship.json +++ b/TohLiYuan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/ChatRecord.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"import task.*;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"public class ChatRecord {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" private ArrayList\u003cTask\u003e chatRecords;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" private int counter;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" public ChatRecord() {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" chatRecords \u003d SaveData.loadData();","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" counter \u003d chatRecords.size();","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" public Task addTodo(String name) {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" Task ret \u003d new Todo(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" chatRecords.add(ret);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" counter++;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" saveChat();","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" return ret;","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public Task addDeadline(String name, String args) {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" Task ret \u003d new Deadline(name, TimeParser.parseTime(args.trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" chatRecords.add(ret);","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" counter++;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" saveChat();","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" return ret;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" public Task addEvent(String name, String[] args) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" Task ret \u003d new Event(name, TimeParser.parseTime(args[0].trim()), TimeParser.parseTime(args[1].trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" chatRecords.add(ret);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" counter++;","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" saveChat();","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" return ret;","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" public Task deleteTask(int n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" counter--;","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" saveChat();","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" return chatRecords.remove(n - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" public String listMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" for (int i \u003d 0; i \u003c chatRecords.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" ret.append(String.format(\"\\t%d. %s\\n\", i + 1, chatRecords.get(i).toString()));","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" return ret.toString().stripTrailing();","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" private void saveChat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" Task[] temp \u003d new Task[chatRecords.size()];","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" temp \u003d chatRecords.toArray(temp);","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(TaskParser.formatSave(temp));","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" public int getCount() {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" return counter;","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" public void setMark(int n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" chatRecords.get(n - 1).mark();","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" saveChat();","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":" public void setUnmark(int n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" chatRecords.get(n - 1).unmark();","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" saveChat();","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":" public String getTask(int n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"TohLiYuan"},"content":" return chatRecords.get(n - 1).toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":74}},{"path":"src/main/java/ChatView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import task.*;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"public class ChatView {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" static String LINE_BREAK \u003d \"____________________________\";","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" static Pattern NUMBER_PATTERN \u003d Pattern.compile(\"[0-9]\");","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" private ChatRecord chatRecord;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" public ChatView() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" chatRecord \u003d new ChatRecord();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(String.format(\"%s\\nKnowledgeYuan, at your service!\\nWhat can I do for you today?\\n%s\", LINE_BREAK, LINE_BREAK));","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" * Processes the input command.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" * @param command The input received.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" public void commandInput(String command) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" String[] commandSplit \u003d command.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" String commandType \u003d commandSplit[0].toLowerCase();","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" Task out;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" switch(commandType) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" int n \u003d getInt(command);","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" chatRecord.setUnmark(n);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(String.format(\"I have marked this task as undone!\\n%s\", chatRecord.getTask(n))));","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" case \"mark\":","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" n \u003d getInt(command);","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" chatRecord.setMark(n);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(String.format(\"I have marked this task as done!\\n%s\", chatRecord.getTask(n))));","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" case \"delete\":","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" n \u003d getInt(command);","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" Task del \u003d chatRecord.deleteTask(n);","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(String.format(\"The following task has been deleted: %s\\nYou now have %d tasks in the list\", del, chatRecord.getCount())));","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" case \"bye\":","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(String.format(\"%s\\nAccess Terminated! Hope to see you again soon!\\n%s\", LINE_BREAK, LINE_BREAK));","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" System.exit(0);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" case \"list\":","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(String.format(\"These are the items in your list!\\n%s\", chatRecord.listMessage())));","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" case \"todo\":","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" out \u003d chatRecord.addTodo(commandSplit[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(String.format(\"Recorded to database: %s\\nYou now have %d tasks in the list\", out.toString(), chatRecord.getCount())));","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(\"ERROR!! The description of Todo cannot be empty!\"));","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(String.format(\"CRITICAL ERROR!!! An unknown error has occurred. Please report the bug to the developers: %s\", e.getMessage())));","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" String[] ddlSplit \u003d commandSplit[1].split(\"/by\");","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" if (ddlSplit[0].equals(\"\")){","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(\"ERROR!! The name of Deadline cannot be empty!\"));","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" out \u003d chatRecord.addDeadline(ddlSplit[0].trim(), ddlSplit[1].trim());","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(\"ERROR!! The date of Deadline cannot be empty!\"));","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(String.format(\"Recorded to database: %s\\nYou now have %d tasks in the list\", out.toString(), chatRecord.getCount())));","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(\"ERROR!! The description of Deadline cannot be empty!\"));","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"TohLiYuan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(String.format(\"CRITICAL ERROR!!! An unknown error has occurred. Please report the bug to the developers: %s\", e.getMessage())));","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"TohLiYuan"},"content":" case \"event\":","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"TohLiYuan"},"content":" String[] evSplit \u003d commandSplit[1].split(\"/from\");","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"TohLiYuan"},"content":" if (evSplit[0].equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(\"ERROR!! The name of Event cannot be empty!\"));","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"TohLiYuan"},"content":" String[] args;","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"TohLiYuan"},"content":" args \u003d evSplit[1].split(\"/to\");","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"TohLiYuan"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(\"ERROR!! The time period of event cannot be empty!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"TohLiYuan"},"content":" out \u003d chatRecord.addEvent(evSplit[0].trim(), args);","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(String.format(\"Recorded to database: %s\\nYou now have %d tasks in the list\", out.toString(), chatRecord.getCount())));","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"TohLiYuan"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(\"ERROR!! The description of Event cannot be empty!\"));","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"TohLiYuan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(String.format(\"CRITICAL ERROR!!! An unknown error has occurred. Please report the bug to the developers: %s\", e.getMessage())));","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"TohLiYuan"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(\"CRITICAL ERROR!!! Command not found! Updates are still ongoing...\"));","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"TohLiYuan"},"content":" private int getInt(String str) {","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"TohLiYuan"},"content":" Matcher matcher \u003d NUMBER_PATTERN.matcher(str);","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder m \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"TohLiYuan"},"content":" while(matcher.find()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"TohLiYuan"},"content":" m.append(matcher.group());","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"TohLiYuan"},"content":" return Integer.parseInt(m.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"TohLiYuan"},"content":" private String beautifyString(String str) {","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"\\t%s\\n%s\\n%s\", LINE_BREAK, str, LINE_BREAK).replace(\"\\n\", \"\\n\\t\");","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":116}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" ChatView chatView \u003d new ChatView();","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" String command \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" chatView.commandInput(command);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"TohLiYuan":8,"-":4}},{"path":"src/main/java/SaveData.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"import java.io.*;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import task.*;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import task.TaskParser;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"public class SaveData {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" private static final String SAVE_FILE_LOCATION \u003d \"./SaveFile.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" private static final String DISCRIMINATOR \u003d \" || \";","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" public static void saveData(String taskData) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" File f \u003d new File(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" if (f.createNewFile()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" FileWriter fw \u003d new FileWriter(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" fw.write(taskData);","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" if (f.delete()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" FileWriter fw \u003d new FileWriter(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" fw.write(taskData);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" throw new Exception(\"The file cannot be deleted!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" public static ArrayList\u003cTask\u003e loadData() {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" File f \u003d new File(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList();","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" Scanner sc \u003d new Scanner(f);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e optionalTask \u003d TaskParser.parseSave(sc.nextLine());","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" if (optionalTask.isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(\"Task is corrupted, it has been removed from the list\");","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" optionalTask.ifPresent(x -\u003e tasks.add(x));","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" sc.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" return tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"TohLiYuan":52}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package task;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" public Deadline(String name, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.DEADLINE;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" public Deadline(String name, boolean status, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d status;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.DEADLINE;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.status ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"[D]%s %s (by: %s)\", statusMark, name, TimeParser.returnTime(date));","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"D%s%s%s%d%s%s\", DISCRIMINATOR, name, DISCRIMINATOR, Boolean.compare(status, false), DISCRIMINATOR, TimeParser.toSaveString(date));","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":31}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package task;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime startDate, endDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" public Event(String name, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.EVENT;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public Event(String name, boolean status, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d status;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.EVENT;","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.status ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"[E]%s %s (from: %s to: %s)\", statusMark, name, TimeParser.returnTime(startDate), TimeParser.returnTime(endDate));","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"E%s%s%s%d%s%s to %s\", DISCRIMINATOR, name, DISCRIMINATOR, Boolean.compare(status, false), DISCRIMINATOR, TimeParser.toSaveString(startDate), TimeParser.toSaveString(endDate));","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":33}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package task;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" protected String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" protected boolean status;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" protected TaskTypes type;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" protected static String DISCRIMINATOR \u003d \" || \";","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" public void mark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" public void unmark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.status ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"%s %s\", statusMark, name);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" public abstract String toSave();","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":25}},{"path":"src/main/java/task/TaskParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"public class TaskParser {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" public static String formatSave(Task[] tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" ret.append(task.toSave());","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" ret.append(\"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" return ret.toString().trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public static Optional\u003cTask\u003e parseSave(String saveLine) {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" String[] splitArray \u003d saveLine.split(Task.DISCRIMINATOR.replace(\"|\", \"\\\\|\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e ret \u003d Optional.empty();","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" switch (splitArray[0]) {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" case \"T\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" boolean status \u003d Integer.parseInt(splitArray[2]) \u003e\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" ret \u003d Optional.of(new Todo(splitArray[1], status));","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" case \"D\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" boolean status \u003d Integer.parseInt(splitArray[2]) \u003e\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" ret \u003d Optional.of(new Deadline(splitArray[1], status, TimeParser.parseTime(splitArray[3])));","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" case \"E\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" boolean status \u003d Integer.parseInt(splitArray[2]) \u003e\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" String[] timeDescriptor \u003d splitArray[3].split(\" to \");","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(timeDescriptor[0] + \" \" + timeDescriptor[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" ret \u003d Optional.of(new Event(splitArray[1], status, TimeParser.parseTime(timeDescriptor[0]), TimeParser.parseTime(timeDescriptor[1])));","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" return ret;","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"TohLiYuan":41}},{"path":"src/main/java/task/TaskTypes.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package task;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"public enum TaskTypes {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" TODO,","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" DEADLINE,","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" EVENT;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":7}},{"path":"src/main/java/task/TimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package task;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"public class TimeParser {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" private static DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" private static DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm:ss\");","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" public static LocalDateTime parseTime(String timeString) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" return LocalDateTime.parse(timeString, inputFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public static String returnTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" return dateTime.format(outputFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" public static String toSaveString(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" return dateTime.format(inputFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":23}},{"path":"src/main/java/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package task;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" public Todo(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.TODO;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" public Todo(String name, boolean status) {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d status;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.TODO;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.status ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"[T]%s %s\", statusMark, name);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"T%s%s%s%d\", DISCRIMINATOR, name, DISCRIMINATOR, Boolean.compare(this.status, false));","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":26}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"idk","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":11}},{"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":"TohLiYuan"},"content":"if not exist ..\\bin\\task mkdir ..\\bin\\task","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"javac -classpath ..\\src\\main\\java\\task -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"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":20,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"TohLiYuan":3,"-":20}}] +[{"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":"TohLiYuan"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"TohLiYuan":8,"-":41}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.ByeCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.ui.ChatView;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.CommandParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" ChatView chatView \u003d new ChatView();","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" ChatRecord chatRecord \u003d new ChatRecord();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" chatView.displayBasic(chatRecord.loadData());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" chatView.startMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" Command cmd;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" do {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" String command \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" cmd \u003d cp.parseCommand(command);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" cmd.init(chatRecord);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" String out \u003d cmd.execute();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" chatView.displayOutput(out);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" } while (!ByeCommand.isBye(cmd));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"TohLiYuan":23,"-":4}},{"path":"src/main/java/duke/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"bye\";","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" private static final String BYE_PHRASE \u003d \"Access Terminated! Hope to see you again soon!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" public ByeCommand() { }","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) { }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" return BYE_PHRASE;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public static boolean isBye(Command command) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" return command instanceof ByeCommand;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":19}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" protected ChatRecord chatRecord;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" public abstract void init(ChatRecord chatRecord);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" public abstract String execute();","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":9}},{"path":"src/main/java/duke/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"public class DeadlineCommand extends Command{","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"deadline\";","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"New Deadline Task added to list!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private String name;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" public DeadlineCommand(String name, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" Deadline ddl \u003d new Deadline(name, date);","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord.addTask(ddl);","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \" \" + ddl.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + name + \" /by \" + date.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":39}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"delete\";","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"The following task has been deleted: \";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" private int toDelete;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public DeleteCommand(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" this.toDelete \u003d i;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d this.chatRecord.deleteTask(toDelete);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \" \" + task.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + toDelete;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":31}},{"path":"src/main/java/duke/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"public class EventCommand extends Command{","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"event\";","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"New Event Task added to list!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private String name;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime startDate, endDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public EventCommand(String name, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" Event ev \u003d new Event(name, startDate, endDate);","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord.addTask(ev);","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \" \" + ev.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + name + \" /from \" + startDate.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" + \" /to \" + endDate.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":39}},{"path":"src/main/java/duke/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" private String prefix \u003d \"Invalid Command! \";","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" private String errMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" public InvalidCommand(String errMessage) {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" this.errMessage \u003d errMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) { }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" return prefix + errMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" return prefix + errMessage;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":24}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"list\";","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" public ListCommand() {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" return \"You have \" + chatRecord.getCount() + \" tasks in your list!\\n\" + chatRecord.listMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":19}},{"path":"src/main/java/duke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"mark\";","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"Marked the following task as completed!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" private int toMark;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" public MarkCommand(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" this.toMark \u003d i;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d chatRecord.setMark(toMark);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \"\\n\" + task.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + toMark;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":30}},{"path":"src/main/java/duke/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"todo\";","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"New Todo Task added to list!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" private String name;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public TodoCommand(String name) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" Todo td \u003d new Todo(this.name);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord.addTask(td);","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \" \" + td.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + name;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":33}},{"path":"src/main/java/duke/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"unmark\";","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"Marked the following task as incomplete!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" private int toUnmark;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public UnmarkCommand(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" this.toUnmark \u003d i;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d chatRecord.setUnmark(toUnmark);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \"\\n\" + task.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + toUnmark;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":31}},{"path":"src/main/java/duke/parser/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"public class CommandParser {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" private static final Pattern COMMAND_PATTERN \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" private static final Pattern TODO_ARGS_PATTERN \u003d Pattern.compile(\"(?\u003cname\u003e\\\\S.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" private static final Pattern DEADLINE_ARGS_PATTERN \u003d Pattern.compile(\"(?\u003cname\u003e\\\\S+.*)( /by )(?\u003ctime\u003e\\\\S.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private static final Pattern EVENT_ARGS_PATTERN \u003d Pattern.compile(\"(?\u003cname\u003e\\\\S+.*)( /from )(?\u003cstartTime\u003e\\\\S.*)( \\\\/to )(?\u003cendTime\u003e\\\\S.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" public CommandParser() { }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public Command parseCommand(String input) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" Matcher matcher \u003d COMMAND_PATTERN.matcher(input);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Invalid command format\");","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" String args \u003d matcher.group(\"arguments\");","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" switch (commandWord) {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" case MarkCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" return new MarkCommand(Integer.parseInt(args.trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" case UnmarkCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" return new UnmarkCommand(Integer.parseInt(args.trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" case ListCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" case ByeCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" case DeleteCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" return new DeleteCommand(Integer.parseInt(args.trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" case TodoCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" Matcher tdMatcher \u003dTODO_ARGS_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" if (tdMatcher.find()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" return new TodoCommand(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Name cannot be empty!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" case EventCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" Matcher evMatcher \u003d EVENT_ARGS_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" if (evMatcher.find()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" return new EventCommand(evMatcher.group(\"name\"), TimeParser.parseTime(evMatcher.group(\"startTime\").trim()), TimeParser.parseTime(evMatcher.group(\"endTime\").trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Bad event arguments!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" case DeadlineCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" Matcher ddlMatcher \u003d DEADLINE_ARGS_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" if (ddlMatcher.find()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" return new DeadlineCommand(ddlMatcher.group(\"name\"), TimeParser.parseTime(ddlMatcher.group(\"time\").trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Bad deadline argument!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Command not found\");","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":62}},{"path":"src/main/java/duke/parser/TaskParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"public class TaskParser {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public static String formatSave(Task[] tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" ret.append(task.toSave());","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" ret.append(\"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" return ret.toString().trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public static Optional\u003cTask\u003e parseSave(String saveLine) {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" String[] splitArray \u003d saveLine.split(\" \\\\|\\\\| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e ret \u003d Optional.empty();","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" switch (splitArray[0]) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" case \"T\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" boolean status \u003d Integer.parseInt(splitArray[2]) \u003e\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" ret \u003d Optional.of(new Todo(splitArray[1], status));","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" case \"D\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" boolean status \u003d Integer.parseInt(splitArray[2]) \u003e\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" ret \u003d Optional.of(new Deadline(splitArray[1], status, TimeParser.parseTime(splitArray[3])));","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" case \"E\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" boolean status \u003d Integer.parseInt(splitArray[2]) \u003e\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" String[] timeDescriptor \u003d splitArray[3].split(\" to \");","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" ret \u003d Optional.of(new Event(splitArray[1], status, TimeParser.parseTime(timeDescriptor[0]), TimeParser.parseTime(timeDescriptor[1])));","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" return ret;","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"TohLiYuan":45}},{"path":"src/main/java/duke/parser/TimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"public class TimeParser {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" private static DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" private static DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm:ss\");","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" public static LocalDateTime parseTime(String timeString) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" return LocalDateTime.parse(timeString, inputFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public static String returnTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" return dateTime.format(outputFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" public static String toSaveString(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" return dateTime.format(inputFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":23}},{"path":"src/main/java/duke/records/ChatRecord.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.records;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.TaskParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public class ChatRecord {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" private ArrayList\u003cTask\u003e chatRecords;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" public ChatRecord() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" chatRecords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public String loadData() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" ArrayList\u003cTask\u003e temp \u003d SaveData.loadData();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" if (temp.size() \u003e\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" chatRecords \u003d temp;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" return \"Save loaded successfully!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" return \"No valid save found! Starting a new instance...\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" chatRecords.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" public Task deleteTask(int n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" return chatRecords.remove(n - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" public String listMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" for (int i \u003d 0; i \u003c chatRecords.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" ret.append(String.format(\"\\t%d. %s\\n\", i + 1, chatRecords.get(i).toString()));","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" return ret.toString().stripTrailing();","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" Task[] temp \u003d new Task[chatRecords.size()];","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" temp \u003d chatRecords.toArray(temp);","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" return TaskParser.formatSave(temp);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" public int getCount() {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" return chatRecords.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" public Task setMark(int n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d chatRecords.get(n - 1).mark();","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" public Task setUnmark(int n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d chatRecords.get(n - 1).unmark();","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":60}},{"path":"src/main/java/duke/storage/SaveData.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.TaskParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"public class SaveData {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private static final String SAVE_FILE_LOCATION \u003d \"./SaveFile.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" public static void saveData(String taskData) {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" File f \u003d new File(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" if (f.createNewFile()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" FileWriter fw \u003d new FileWriter(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" fw.write(taskData);","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" if (f.delete()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" FileWriter fw \u003d new FileWriter(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" fw.write(taskData);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" throw new Exception(\"The file cannot be deleted!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public static ArrayList\u003cTask\u003e loadData() {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" File f \u003d new File(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" Scanner sc \u003d new Scanner(f);","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e optionalTask \u003d TaskParser.parseSave(sc.nextLine());","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" if (optionalTask.isPresent()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" optionalTask.ifPresent(tasks::add);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" sc.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" return tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"TohLiYuan":53}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.TimeParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" public Deadline(String name, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.DEADLINE;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public Deadline(String name, boolean status, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d status;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.DEADLINE;","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.status ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"[D]%s %s (by: %s)\", statusMark, name, TimeParser.returnTime(date));","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"D%s%s%s%d%s%s\", DISCRIMINATOR, name, DISCRIMINATOR, Boolean.compare(status, false), DISCRIMINATOR, TimeParser.toSaveString(date));","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":33}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.TimeParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime startDate, endDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" public Event(String name, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.EVENT;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" public Event(String name, boolean status, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d status;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.EVENT;","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.status ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"[E]%s %s (from: %s to: %s)\", statusMark, name, TimeParser.returnTime(startDate), TimeParser.returnTime(endDate));","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"E%s%s%s%d%s%s to %s\", DISCRIMINATOR, name, DISCRIMINATOR, Boolean.compare(status, false), DISCRIMINATOR, TimeParser.toSaveString(startDate), TimeParser.toSaveString(endDate));","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":35}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" protected String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" protected boolean status;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" protected TaskTypes type;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" protected static String DISCRIMINATOR \u003d \" || \";","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" public Task mark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" return this;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public Task unmark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" return this;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.status ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"%s %s\", statusMark, name);","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" public abstract String toSave();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":27}},{"path":"src/main/java/duke/task/TaskTypes.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"public enum TaskTypes {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" TODO,","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" DEADLINE,","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" EVENT;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":7}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" public Todo(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.TODO;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" public Todo(String name, boolean status) {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" this.status \u003d status;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.TODO;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.status ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"[T]%s %s\", statusMark, name);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"T%s%s%s%d\", DISCRIMINATOR, name, DISCRIMINATOR, Boolean.compare(this.status, false));","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":26}},{"path":"src/main/java/duke/ui/ChatView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"public class ChatView {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" private static String LINE_BREAK \u003d \"____________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" public ChatView() {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" public void startMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(String.format(\"%s\\nKnowledgeYuan, at your service!\\nWhat can I do for you today?\\n%s\", LINE_BREAK, LINE_BREAK));","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" public void displayOutput(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(str));","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" public void displayBasic(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(str);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" private String beautifyString(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"\\t%s\\n%s\\n%s\", LINE_BREAK, str, LINE_BREAK).replace(\"\\n\", \"\\n\\t\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"TohLiYuan":25}},{"path":"src/test/java/duke/parser/CommandParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public class CommandParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public void todoParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"todo test123 test456\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(testInput, cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public void deadlineParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"deadline test123 test456 /by 3/8/2023 1200\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(testInput, cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" public void eventParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"event test123 test456 /from 3/8/2023 1200 /to 5/8/2023 1200\";","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(testInput, cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" public void invalidParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"test123 test456\";","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(\"Invalid Command! Command not found\", cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" public void invalidParseTest2() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(\"Invalid Command! Name cannot be empty!\", cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" public void complexParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"todo deadline event /from 8/2/2023 1200 /to 8/3/2023 1400 /to 6/5/2023\";","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(testInput, cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"TohLiYuan":65}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"idk","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":11}},{"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":"TohLiYuan"},"content":"if not exist ..\\bin\\duke.task mkdir ..\\bin\\duke.task","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"javac -classpath ..\\src\\main\\java\\duke.task -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"REM run the program, feed duke.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"TohLiYuan":4,"-":19}},{"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":"TohLiYuan"},"content":"# run the program, feed duke.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":"-"},"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":{"TohLiYuan":1,"-":37}}] diff --git a/TohLiYuan_ip_master/commits.json b/TohLiYuan_ip_master/commits.json index 1591d19a..3675bbed 100644 --- a/TohLiYuan_ip_master/commits.json +++ b/TohLiYuan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"TohLiYuan":[{"date":"2023-08-23","commitResults":[{"hash":"154cc4b83969a47dc8e3eb043b3be205d677b2d3","isMergeCommit":false,"messageTitle":"Rename \u0026 Skeletal Version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"f419d8e1bc507baf02a98c2fd16b313abc3a2de5","isMergeCommit":false,"messageTitle":"Refactor, Chat Echoing","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}},{"hash":"9baa02d1a2138f032dd8ec1159faa928742c1b97","isMergeCommit":false,"messageTitle":"Message Records \u0026 Command Refactor","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":5}}},{"hash":"ca206eebbfc1e5c9720ad8333bdb74e57f0f422c","isMergeCommit":false,"messageTitle":"Tasks \u0026 Marking, renamed variables to follow convention","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":11}}},{"hash":"8c450e068fa290da190a0b78e79e5bb7399bf39c","isMergeCommit":false,"messageTitle":"Task Types, Refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":16}}},{"hash":"44c0017b7290ffd7af3c9e1e01e731e01a1c0234","isMergeCommit":false,"messageTitle":"Minor Formatting","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"946b8037dea23940ec999b981e0076b02d36a960","isMergeCommit":false,"messageTitle":"Automated Test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"bat":{"insertions":3,"deletions":1}}},{"hash":"9974d8eff40bd2c248c13757d70a932fb07df322","isMergeCommit":false,"messageTitle":"Error Handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":11}}},{"hash":"ed3c154da808b6dbd06bea62cc360ee0de7f8287","isMergeCommit":false,"messageTitle":"Deleting Tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":20,"deletions":15}}}]},{"date":"2023-08-28","commitResults":[{"hash":"1270151866d4479ada5998e19037136fdcf7dd9a","isMergeCommit":false,"messageTitle":"Primitive saving mechanism (to be tested)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":179,"deletions":1}}},{"hash":"8b061a9c97bf859476c08818258a52c5c24e80a9","isMergeCommit":false,"messageTitle":"Refactored new saving logic, better implementation","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":92,"deletions":127}}},{"hash":"d799c9babb3a70e6436878ba7d86ca844fd9abf0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"208d0001a92e71d5cb0c61d2982d232dfc4f50e1","isMergeCommit":false,"messageTitle":"Updated gitignore, cleanup","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"c75bea1555bff40a85a48b513ed64162af1a64de","isMergeCommit":false,"messageTitle":"Class Refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":21}}},{"hash":"3825993d4fea3b4b8242926ade544331fc812475","isMergeCommit":false,"messageTitle":"Primitive DateTime for deadline and event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":22}}},{"hash":"f68200bce41575d74b583c1c33601f0005eee917","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"TohLiYuan":{"java":436,"md":0,"fxml":0,"sh":0,"bat":3,"gradle":0,"txt":11}},"authorContributionVariance":{"TohLiYuan":23193.242},"authorDisplayNameMap":{"TohLiYuan":"CS2103T-F10-3 TOH ..YUAN"}} +{"authorDailyContributionsMap":{"TohLiYuan":[{"date":"2023-08-23","commitResults":[{"hash":"154cc4b83969a47dc8e3eb043b3be205d677b2d3","isMergeCommit":false,"messageTitle":"Rename \u0026 Skeletal Version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"f419d8e1bc507baf02a98c2fd16b313abc3a2de5","isMergeCommit":false,"messageTitle":"Refactor, Chat Echoing","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}},{"hash":"9baa02d1a2138f032dd8ec1159faa928742c1b97","isMergeCommit":false,"messageTitle":"Message Records \u0026 Command Refactor","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":5}}},{"hash":"ca206eebbfc1e5c9720ad8333bdb74e57f0f422c","isMergeCommit":false,"messageTitle":"Tasks \u0026 Marking, renamed variables to follow convention","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":11}}},{"hash":"8c450e068fa290da190a0b78e79e5bb7399bf39c","isMergeCommit":false,"messageTitle":"Task Types, Refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":16}}},{"hash":"44c0017b7290ffd7af3c9e1e01e731e01a1c0234","isMergeCommit":false,"messageTitle":"Minor Formatting","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"946b8037dea23940ec999b981e0076b02d36a960","isMergeCommit":false,"messageTitle":"Automated Test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"bat":{"insertions":3,"deletions":1}}},{"hash":"9974d8eff40bd2c248c13757d70a932fb07df322","isMergeCommit":false,"messageTitle":"Error Handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":11}}},{"hash":"ed3c154da808b6dbd06bea62cc360ee0de7f8287","isMergeCommit":false,"messageTitle":"Deleting Tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":20,"deletions":15}}}]},{"date":"2023-08-28","commitResults":[{"hash":"1270151866d4479ada5998e19037136fdcf7dd9a","isMergeCommit":false,"messageTitle":"Primitive saving mechanism (to be tested)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":179,"deletions":1}}},{"hash":"8b061a9c97bf859476c08818258a52c5c24e80a9","isMergeCommit":false,"messageTitle":"Refactored new saving logic, better implementation","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":92,"deletions":127}}},{"hash":"d799c9babb3a70e6436878ba7d86ca844fd9abf0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"208d0001a92e71d5cb0c61d2982d232dfc4f50e1","isMergeCommit":false,"messageTitle":"Updated gitignore, cleanup","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"c75bea1555bff40a85a48b513ed64162af1a64de","isMergeCommit":false,"messageTitle":"Class Refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":21}}},{"hash":"3825993d4fea3b4b8242926ade544331fc812475","isMergeCommit":false,"messageTitle":"Primitive DateTime for deadline and event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":22}}},{"hash":"f68200bce41575d74b583c1c33601f0005eee917","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"eac6a37db817b11299159d03c52de80e13b93ff3","isMergeCommit":false,"messageTitle":"Commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":208,"deletions":10},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"9bfa56b70559ef64c44df4300a4ecbdf8dc324bd","isMergeCommit":false,"messageTitle":"Moved commands to default package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":13},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"cb8216b19aa4845bd30d1a83b35281b115ee35e3","isMergeCommit":false,"messageTitle":"Command Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":11}}}]},{"date":"2023-09-01","commitResults":[{"hash":"e015d86a58e1de8103eeaf64bfe7549d43550a3e","isMergeCommit":false,"messageTitle":"Better Save Logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":8}}},{"hash":"628cad711278173aeab3f0b09b9440779410c287","isMergeCommit":false,"messageTitle":"Implement UI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":173}}},{"hash":"8bf34c778609fb1a0aa1f49392b8e709cd1b3f10","isMergeCommit":false,"messageTitle":"Better regex matching","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"12f424ad08fd4d5174dfb195afb252cf68c6be12","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"935ee17e6018b834fce2351272b0ad0857a2942f","isMergeCommit":false,"messageTitle":"Organise packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":68},"bat":{"insertions":3,"deletions":3},"sh":{"insertions":1,"deletions":1}}},{"hash":"fceafdb06425add56099daced64e923a1ddd9537","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"c09237f74e5117ec5ca9b6e9f6c2045eb66f1288","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7b53a8860298896acddcf5f1d0c0e7c0c3e74588","isMergeCommit":false,"messageTitle":"Add Gradle Support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":8,"deletions":6}}},{"hash":"a34aa441ee3f718e13678f97457e89076e71130e","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":7}}},{"hash":"26f57c3aab844dff6634e7759b2414f8c2a80842","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f1e01950c10f4982c924854bd5786a3284f49b0f","isMergeCommit":false,"messageTitle":"Configure jar build","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"426030c8d322cdcfa92a7754c484f4adb9adac32","isMergeCommit":false,"messageTitle":"Fix empty command parse bug","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"TohLiYuan":{"java":758,"md":0,"fxml":0,"sh":1,"bat":4,"gradle":8,"txt":11}},"authorContributionVariance":{"TohLiYuan":45164.918},"authorDisplayNameMap":{"TohLiYuan":"CS2103T-F10-3 TOH ..YUAN"}} diff --git a/WeeMingQing_ip_master/authorship.json b/WeeMingQing_ip_master/authorship.json index f2401297..776c3b4f 100644 --- a/WeeMingQing_ip_master/authorship.json +++ b/WeeMingQing_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":" protected String endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":" public Deadlines (String description, String endDate) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":" return \"[D]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"WeeMingQing"},"content":" public String printTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"WeeMingQing"},"content":" return this.getTypeIcon() + this.getStatusIcon() + this.description + \" (by: \" + this.endDate + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":18}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"import exception.DukeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":"import exception.InvalidCommandException;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"import exception.InvalidSyntaxException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":" public enum Command {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":" BYE, LIST, TODO, DEADLINE, EVENT, MARK, UNMARK, DELETE, UNKNOWN","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":" };","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"WeeMingQing"},"content":" boolean listen \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"WeeMingQing"},"content":" /** Captures user input*/","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"WeeMingQing"},"content":" Scanner jonBird \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"WeeMingQing"},"content":" /** Stores user input*/","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"WeeMingQing"},"content":" ArrayList\u003cTask\u003e inputList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"WeeMingQing"},"content":" /** User input*/","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"WeeMingQing"},"content":" String input \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"WeeMingQing"},"content":" Command currentCommand \u003d Command.UNKNOWN;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"WeeMingQing"},"content":" String title \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"WeeMingQing"},"content":" String startDate \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"WeeMingQing"},"content":" String endDate \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"Hello! I\u0027m JonBird.\\nWhat can I do for you?\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"WeeMingQing"},"content":" while (listen) {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"WeeMingQing"},"content":" input \u003d jonBird.nextLine().trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"WeeMingQing"},"content":" String[] inp \u003d input.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"WeeMingQing"},"content":" int taskIndex \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"WeeMingQing"},"content":" if (!isValidCommand(inp[0])) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"WeeMingQing"},"content":" currentCommand \u003d Command.UNKNOWN;","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"WeeMingQing"},"content":" currentCommand \u003d Command.valueOf(inp[0].toUpperCase());","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"WeeMingQing"},"content":" if (currentCommand \u003d\u003d Command.MARK || currentCommand \u003d\u003d Command.UNMARK ||","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"WeeMingQing"},"content":" currentCommand \u003d\u003d Command.DELETE) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"WeeMingQing"},"content":" if (inp.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"WeeMingQing"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"WeeMingQing"},"content":" taskIndex \u003d Integer.parseInt(inp[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"WeeMingQing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"WeeMingQing"},"content":" currentCommand \u003d Command.UNKNOWN;","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"WeeMingQing"},"content":" ;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"WeeMingQing"},"content":" currentCommand \u003d Command.UNKNOWN;","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"WeeMingQing"},"content":" } else if (currentCommand \u003d\u003d Command.TODO || currentCommand \u003d\u003d Command.DEADLINE) {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"WeeMingQing"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"WeeMingQing"},"content":" title \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"WeeMingQing"},"content":" endDate \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"WeeMingQing"},"content":" for (; i \u003c inp.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"WeeMingQing"},"content":" if (inp[i].equals(\"/by\")) break;","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"WeeMingQing"},"content":" if (title.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"WeeMingQing"},"content":" title \u003d inp[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"WeeMingQing"},"content":" title +\u003d \" \" + inp[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"WeeMingQing"},"content":" for (int j \u003d i + 1; j \u003c inp.length; j++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"WeeMingQing"},"content":" if (endDate.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"WeeMingQing"},"content":" endDate \u003d inp[j];","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"WeeMingQing"},"content":" endDate +\u003d \" \" + inp[j];","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"WeeMingQing"},"content":" } else if (currentCommand \u003d\u003d Command.EVENT) {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"WeeMingQing"},"content":" int start \u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"WeeMingQing"},"content":" int end \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"WeeMingQing"},"content":" title \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"WeeMingQing"},"content":" startDate \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"WeeMingQing"},"content":" endDate \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"WeeMingQing"},"content":" for (; start \u003c inp.length; start++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"WeeMingQing"},"content":" if (inp[start].equals(\"/from\")) break;","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"WeeMingQing"},"content":" if (title.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"WeeMingQing"},"content":" title \u003d inp[start];","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"WeeMingQing"},"content":" title +\u003d \" \" + inp[start];","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"WeeMingQing"},"content":" for (end \u003d start + 1; end \u003c inp.length; end++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"WeeMingQing"},"content":" if (inp[end].equals(\"/to\")) break;","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"WeeMingQing"},"content":" if (startDate.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"WeeMingQing"},"content":" startDate \u003d inp[end];","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"WeeMingQing"},"content":" startDate +\u003d \" \" + inp[end];","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"WeeMingQing"},"content":" for (int j \u003d end + 1; j \u003c inp.length; j++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"WeeMingQing"},"content":" if (endDate.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"WeeMingQing"},"content":" endDate \u003d inp[j];","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"WeeMingQing"},"content":" endDate +\u003d \" \" + inp[j];","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"WeeMingQing"},"content":" switch (currentCommand) {","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"WeeMingQing"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"WeeMingQing"},"content":" DukeException excep;","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"WeeMingQing"},"content":" if (isValidCommand(inp[0])) {","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The format of the command is invalid.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"WeeMingQing"},"content":" else {","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidCommandException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"WeeMingQing"},"content":" case BYE:","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"WeeMingQing"},"content":" listen \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"WeeMingQing"},"content":" case LIST:","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"WeeMingQing"},"content":" printList(inputList);","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"WeeMingQing"},"content":" case UNMARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"WeeMingQing"},"content":" if (taskIndex \u003e inputList.size() || taskIndex \u003c 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The task does not exist.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"WeeMingQing"},"content":" inputList.get(taskIndex-1).markAsUndone();","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"WeeMingQing"},"content":" case MARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"WeeMingQing"},"content":" if (taskIndex \u003e inputList.size() || taskIndex \u003c 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The task does not exist.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"WeeMingQing"},"content":" inputList.get(taskIndex - 1).markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"WeeMingQing"},"content":" case DELETE:","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"WeeMingQing"},"content":" if (taskIndex \u003e inputList.size() || taskIndex \u003c 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The task does not exist.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"WeeMingQing"},"content":" Task temp \u003d inputList.get(taskIndex - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"WeeMingQing"},"content":" inputList.remove(taskIndex - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\tNoted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\t\\t\" + temp.printTask());","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\tNow you have \" + inputList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"WeeMingQing"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"WeeMingQing"},"content":" if (inp.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The description of a \" + inp[0] + \" cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"WeeMingQing"},"content":" if (inp[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"WeeMingQing"},"content":" inputList.add(new Todos(title));","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"WeeMingQing"},"content":" if (inp[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"WeeMingQing"},"content":" if (endDate.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The end date of a \" + inp[0] + \" cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"WeeMingQing"},"content":" inputList.add(new Deadlines(title, endDate));","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"WeeMingQing"},"content":" if (inp[0].equals(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"WeeMingQing"},"content":" if (startDate.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The start date of a \" + inp[0] + \" cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"WeeMingQing"},"content":" if (endDate.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The end date of a \" + inp[0] + \" cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"WeeMingQing"},"content":" inputList.add(new Events(title, startDate, endDate));","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\tGot it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\t\\t\" + inputList.get(inputList.size()-1).printTask());","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\tNow you have \" + inputList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"WeeMingQing"},"content":" jonBird.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":184,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":185,"author":{"gitId":"WeeMingQing"},"content":" public static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\tHere are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"WeeMingQing"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\t\\t\"+ (i+1) + \". \" + list.get(i).printTask());","lastModifiedDate":"2023-08-23"},{"lineNumber":189,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":191,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"WeeMingQing"},"content":" public static boolean isValidCommand(String value) {","lastModifiedDate":"2023-08-23"},{"lineNumber":193,"author":{"gitId":"WeeMingQing"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":194,"author":{"gitId":"WeeMingQing"},"content":" Command val \u003d Command.valueOf(value.toUpperCase());","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"WeeMingQing"},"content":" return true;","lastModifiedDate":"2023-08-23"},{"lineNumber":196,"author":{"gitId":"WeeMingQing"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":197,"author":{"gitId":"WeeMingQing"},"content":" return false;","lastModifiedDate":"2023-08-23"},{"lineNumber":198,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":195,"-":5}},{"path":"src/main/java/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"public class Events extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":" protected String startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":" protected String endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":" public Events (String description, String startDate, String endDate) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WeeMingQing"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"WeeMingQing"},"content":" return \"[E]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"WeeMingQing"},"content":" public String printTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"WeeMingQing"},"content":" return this.getTypeIcon() + this.getStatusIcon() + this.description +","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"WeeMingQing"},"content":" \" (from: \" + this.startDate + \" to: \" + this.endDate + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":23}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"/** Class to represent the task set by user*/","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":" /** Description of the task*/","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":" /** Track whether the task is done or not*/","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":" /** Cosntructor for the class*/","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"WeeMingQing"},"content":" /** Method to mark the task as done*/","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"WeeMingQing"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"WeeMingQing"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\tNice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\t\\t\" +this.printTask());","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"WeeMingQing"},"content":" /** Method to mark the task as undone*/","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"WeeMingQing"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"WeeMingQing"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\tOK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\t\\t\" + this.printTask());","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"WeeMingQing"},"content":" /** Return icon based on whether task is done or undone*/","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"WeeMingQing"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"WeeMingQing"},"content":" return (this.isDone ? \"[X] \" : \"[ ] \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"WeeMingQing"},"content":" /** Method to print the task*/","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"WeeMingQing"},"content":" public String printTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"WeeMingQing"},"content":" return this.getStatusIcon() + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"WeeMingQing"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"WeeMingQing"},"content":" return (\"[Tk]\");","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":42}},{"path":"src/main/java/Todos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"public class Todos extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":" public Todos(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":" return \"[T]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WeeMingQing"},"content":" public String printTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"WeeMingQing"},"content":" return this.getTypeIcon() + this.getStatusIcon() + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":15}},{"path":"src/main/java/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"package exception;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"/** This class handles exceptions from Duke.*/","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":" public DukeException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":" return \"☹ OOPS!!! \" + super.getMessage();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":12}},{"path":"src/main/java/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"package exception;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":" public InvalidCommandException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":7}},{"path":"src/main/java/exception/InvalidSyntaxException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"package exception;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"public class InvalidSyntaxException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":" public InvalidSyntaxException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"event","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":"deadline return book /by tomorrow","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":"event project /from Mon morning /to Fri Night","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":"list","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":11}}] +[{"path":"src/main/java/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":" protected String endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":" public Deadlines (String description, String endDate) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":" return \"[D]\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"WeeMingQing"},"content":" public String printTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"WeeMingQing"},"content":" return this.getTypeIcon() + this.getStatusIcon() + this.description + \" (by: \" + this.endDate + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":18}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"import exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":"import exception.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"import exception.InvalidSyntaxException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":" public enum Command {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":" BYE, LIST, TODO, DEADLINE, EVENT, MARK, UNMARK, DELETE, UNKNOWN","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":" };","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"WeeMingQing"},"content":" boolean listen \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"WeeMingQing"},"content":" /** Captures user input*/","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"WeeMingQing"},"content":" Scanner jonBird \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"WeeMingQing"},"content":" /** Stores user input*/","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"WeeMingQing"},"content":" ArrayList\u003cTask\u003e inputList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeMingQing"},"content":" /** User input*/","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"WeeMingQing"},"content":" String input \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"WeeMingQing"},"content":" Command currentCommand \u003d Command.UNKNOWN;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"WeeMingQing"},"content":" String title \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"WeeMingQing"},"content":" String startDate \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"WeeMingQing"},"content":" String endDate \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"Hello! I\u0027m JonBird.\\nWhat can I do for you?\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"WeeMingQing"},"content":" while (listen) {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"WeeMingQing"},"content":" input \u003d jonBird.nextLine().trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"WeeMingQing"},"content":" String[] inp \u003d input.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"WeeMingQing"},"content":" int taskIndex \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"WeeMingQing"},"content":" if (!isValidCommand(inp[0])) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"WeeMingQing"},"content":" currentCommand \u003d Command.UNKNOWN;","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"WeeMingQing"},"content":" currentCommand \u003d Command.valueOf(inp[0].toUpperCase());","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"WeeMingQing"},"content":" if (currentCommand \u003d\u003d Command.MARK || currentCommand \u003d\u003d Command.UNMARK ||","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"WeeMingQing"},"content":" currentCommand \u003d\u003d Command.DELETE) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"WeeMingQing"},"content":" if (inp.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"WeeMingQing"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"WeeMingQing"},"content":" taskIndex \u003d Integer.parseInt(inp[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"WeeMingQing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"WeeMingQing"},"content":" currentCommand \u003d Command.UNKNOWN;","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"WeeMingQing"},"content":" ;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"WeeMingQing"},"content":" currentCommand \u003d Command.UNKNOWN;","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"WeeMingQing"},"content":" } else if (currentCommand \u003d\u003d Command.TODO || currentCommand \u003d\u003d Command.DEADLINE) {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"WeeMingQing"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"WeeMingQing"},"content":" title \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"WeeMingQing"},"content":" endDate \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"WeeMingQing"},"content":" for (; i \u003c inp.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"WeeMingQing"},"content":" if (inp[i].equals(\"/by\")) break;","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"WeeMingQing"},"content":" if (title.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"WeeMingQing"},"content":" title \u003d inp[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"WeeMingQing"},"content":" title +\u003d \" \" + inp[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"WeeMingQing"},"content":" for (int j \u003d i + 1; j \u003c inp.length; j++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"WeeMingQing"},"content":" if (endDate.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"WeeMingQing"},"content":" endDate \u003d inp[j];","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"WeeMingQing"},"content":" endDate +\u003d \" \" + inp[j];","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"WeeMingQing"},"content":" } else if (currentCommand \u003d\u003d Command.EVENT) {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"WeeMingQing"},"content":" int start \u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"WeeMingQing"},"content":" int end \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"WeeMingQing"},"content":" title \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"WeeMingQing"},"content":" startDate \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"WeeMingQing"},"content":" endDate \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"WeeMingQing"},"content":" for (; start \u003c inp.length; start++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"WeeMingQing"},"content":" if (inp[start].equals(\"/from\")) break;","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"WeeMingQing"},"content":" if (title.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"WeeMingQing"},"content":" title \u003d inp[start];","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"WeeMingQing"},"content":" title +\u003d \" \" + inp[start];","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"WeeMingQing"},"content":" for (end \u003d start + 1; end \u003c inp.length; end++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"WeeMingQing"},"content":" if (inp[end].equals(\"/to\")) break;","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"WeeMingQing"},"content":" if (startDate.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"WeeMingQing"},"content":" startDate \u003d inp[end];","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"WeeMingQing"},"content":" startDate +\u003d \" \" + inp[end];","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"WeeMingQing"},"content":" for (int j \u003d end + 1; j \u003c inp.length; j++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"WeeMingQing"},"content":" if (endDate.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"WeeMingQing"},"content":" endDate \u003d inp[j];","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"WeeMingQing"},"content":" endDate +\u003d \" \" + inp[j];","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"WeeMingQing"},"content":" switch (currentCommand) {","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"WeeMingQing"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"WeeMingQing"},"content":" DukeException excep;","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"WeeMingQing"},"content":" if (isValidCommand(inp[0])) {","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The format of the command is invalid.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"WeeMingQing"},"content":" else {","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidCommandException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"WeeMingQing"},"content":" case BYE:","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"WeeMingQing"},"content":" listen \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"WeeMingQing"},"content":" case LIST:","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"WeeMingQing"},"content":" printList(inputList);","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"WeeMingQing"},"content":" case UNMARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"WeeMingQing"},"content":" if (taskIndex \u003e inputList.size() || taskIndex \u003c 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The task does not exist.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"WeeMingQing"},"content":" inputList.get(taskIndex-1).markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"WeeMingQing"},"content":" case MARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"WeeMingQing"},"content":" if (taskIndex \u003e inputList.size() || taskIndex \u003c 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The task does not exist.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"WeeMingQing"},"content":" inputList.get(taskIndex - 1).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"WeeMingQing"},"content":" case DELETE:","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"WeeMingQing"},"content":" if (taskIndex \u003e inputList.size() || taskIndex \u003c 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The task does not exist.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"WeeMingQing"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"WeeMingQing"},"content":" Task temp \u003d inputList.get(taskIndex - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"WeeMingQing"},"content":" inputList.remove(taskIndex - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\tNoted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\t\\t\" + temp.printTask());","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\tNow you have \" + inputList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"WeeMingQing"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"WeeMingQing"},"content":" if (inp.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The description of a \" + inp[0] + \" cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"WeeMingQing"},"content":" if (inp[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"WeeMingQing"},"content":" inputList.add(new Todos(title));","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"WeeMingQing"},"content":" if (inp[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"WeeMingQing"},"content":" if (endDate.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The end date of a \" + inp[0] + \" cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"WeeMingQing"},"content":" inputList.add(new Deadlines(title, endDate));","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"WeeMingQing"},"content":" if (inp[0].equals(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"WeeMingQing"},"content":" if (startDate.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The start date of a \" + inp[0] + \" cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"WeeMingQing"},"content":" if (endDate.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"WeeMingQing"},"content":" excep \u003d new InvalidSyntaxException(\"The end date of a \" + inp[0] + \" cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\t\" + excep.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"WeeMingQing"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"WeeMingQing"},"content":" inputList.add(new Events(title, startDate, endDate));","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"JonBird:\\n\\tGot it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\t\\t\" + inputList.get(inputList.size()-1).printTask());","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\tNow you have \" + inputList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"WeeMingQing"},"content":" jonBird.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":184,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":185,"author":{"gitId":"WeeMingQing"},"content":" public static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\tHere are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"WeeMingQing"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\t\\t\"+ (i+1) + \". \" + list.get(i).printTask());","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":191,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"WeeMingQing"},"content":" public static boolean isValidCommand(String value) {","lastModifiedDate":"2023-08-23"},{"lineNumber":193,"author":{"gitId":"WeeMingQing"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":194,"author":{"gitId":"WeeMingQing"},"content":" Command val \u003d Command.valueOf(value.toUpperCase());","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"WeeMingQing"},"content":" return true;","lastModifiedDate":"2023-08-23"},{"lineNumber":196,"author":{"gitId":"WeeMingQing"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":197,"author":{"gitId":"WeeMingQing"},"content":" return false;","lastModifiedDate":"2023-08-23"},{"lineNumber":198,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":195,"-":5}},{"path":"src/main/java/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"public class Events extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":" protected String startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":" protected String endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":" public Events (String description, String startDate, String endDate) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WeeMingQing"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"WeeMingQing"},"content":" return \"[E]\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"WeeMingQing"},"content":" public String printTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"WeeMingQing"},"content":" return this.getTypeIcon() + this.getStatusIcon() + this.description +","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeMingQing"},"content":" \" (from: \" + this.startDate + \" to: \" + this.endDate + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":23}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"/** Class to represent the task set by user*/","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":" /** Description of the task*/","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":" /** Track whether the task is done or not*/","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":" /** Cosntructor for the class*/","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"WeeMingQing"},"content":" /** Method to mark the task as done*/","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"WeeMingQing"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"WeeMingQing"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\tNice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\t\\t\" +this.printTask());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"WeeMingQing"},"content":" /** Method to mark the task as undone*/","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"WeeMingQing"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"WeeMingQing"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\tOK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WeeMingQing"},"content":" System.out.println(\"\\t\\t\" + this.printTask());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"WeeMingQing"},"content":" /** Return icon based on whether task is done or undone*/","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"WeeMingQing"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"WeeMingQing"},"content":" return (this.isDone ? \"[X] \" : \"[ ] \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"WeeMingQing"},"content":" /** Method to print the task*/","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"WeeMingQing"},"content":" public String printTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"WeeMingQing"},"content":" return this.getStatusIcon() + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"WeeMingQing"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"WeeMingQing"},"content":" return (\"[Tk]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":42}},{"path":"src/main/java/Todos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"public class Todos extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":" public Todos(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":" return \"[T]\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WeeMingQing"},"content":" public String printTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"WeeMingQing"},"content":" return this.getTypeIcon() + this.getStatusIcon() + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":15}},{"path":"src/main/java/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"package exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"/** This class handles exceptions from Duke.*/","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":" public DukeException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":" return \"☹ OOPS!!! \" + super.getMessage();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":12}},{"path":"src/main/java/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"package exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":" public InvalidCommandException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":7}},{"path":"src/main/java/exception/InvalidSyntaxException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"package exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"public class InvalidSyntaxException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":" public InvalidSyntaxException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WeeMingQing"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"WeeMingQing"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"WeeMingQing"},"content":"event","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"WeeMingQing"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"WeeMingQing"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"WeeMingQing"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"WeeMingQing"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"WeeMingQing"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WeeMingQing"},"content":"deadline return book /by tomorrow","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"WeeMingQing"},"content":"event project /from Mon morning /to Fri Night","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WeeMingQing"},"content":"list","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"WeeMingQing":11}}] diff --git a/WeeMingQing_ip_master/commits.json b/WeeMingQing_ip_master/commits.json index 73b6f2a9..42d7968f 100644 --- a/WeeMingQing_ip_master/commits.json +++ b/WeeMingQing_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"WeeMingQing":[{"date":"2023-08-23","commitResults":[{"hash":"1d2028dc31060418ea90c0b67820d799a68c49d8","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"97013d9e2d011c8936ee56a91c839d9271a32b34","isMergeCommit":false,"messageTitle":"Add echo.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":5}}},{"hash":"30e7352946cca75b43da776e1ddcdb5d8166dd3c","isMergeCommit":false,"messageTitle":"Add list.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"60cbb228698c137deadace9f17c67bc15e6fab1c","isMergeCommit":false,"messageTitle":"Add Task class.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":12}}},{"hash":"fac8a194e8d41d61204f1964484ff72e63cf49bd","isMergeCommit":false,"messageTitle":"Add inheritance classes.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":124,"deletions":5}}},{"hash":"20c5825bd28b871c409e82772317b6cd55717cdb","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027","messageBody":"* commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027:\n Bump gradle and lib version\n Add Gradle support\n","fileTypesAndContributionMap":{}},{"hash":"e0ad6cbbe0c0b1f79d6be637113d0cb898129b7f","isMergeCommit":false,"messageTitle":"Add TextUiTesting.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":4,"deletions":3}}},{"hash":"dc2ff7dce9830a588b436a1ee70e738da3201f03","isMergeCommit":false,"messageTitle":"Add exceptions.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":72,"deletions":7}}},{"hash":"aacf09258424910797403e1d0527d8c94c6bdcc3","isMergeCommit":false,"messageTitle":"Add delete.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":18}}},{"hash":"78c6d701e747241847e987edecb15498957833c5","isMergeCommit":false,"messageTitle":"Add enum.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":72}}},{"hash":"783f8157036e6112a55b24f17fdd41ba4c517e65","isMergeCommit":false,"messageTitle":"Add exception.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":7}}},{"hash":"07c6faad563356d16bb95490f9be1a67a9379f3a","isMergeCommit":false,"messageTitle":"Add out-of-range exception.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"WeeMingQing":{"java":319,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"WeeMingQing":48840.137},"authorDisplayNameMap":{"WeeMingQing":"CS2103T-W12-2 WEE ..QING"}} +{"authorDailyContributionsMap":{"WeeMingQing":[{"date":"2023-08-23","commitResults":[{"hash":"1d2028dc31060418ea90c0b67820d799a68c49d8","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"97013d9e2d011c8936ee56a91c839d9271a32b34","isMergeCommit":false,"messageTitle":"Add echo.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":5}}},{"hash":"30e7352946cca75b43da776e1ddcdb5d8166dd3c","isMergeCommit":false,"messageTitle":"Add list.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"60cbb228698c137deadace9f17c67bc15e6fab1c","isMergeCommit":false,"messageTitle":"Add Task class.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":12}}},{"hash":"fac8a194e8d41d61204f1964484ff72e63cf49bd","isMergeCommit":false,"messageTitle":"Add inheritance classes.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":124,"deletions":5}}},{"hash":"20c5825bd28b871c409e82772317b6cd55717cdb","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027","messageBody":"* commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027:\n Bump gradle and lib version\n Add Gradle support\n","fileTypesAndContributionMap":{}},{"hash":"e0ad6cbbe0c0b1f79d6be637113d0cb898129b7f","isMergeCommit":false,"messageTitle":"Add TextUiTesting.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":4,"deletions":3}}},{"hash":"dc2ff7dce9830a588b436a1ee70e738da3201f03","isMergeCommit":false,"messageTitle":"Add exceptions.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":72,"deletions":7}}},{"hash":"aacf09258424910797403e1d0527d8c94c6bdcc3","isMergeCommit":false,"messageTitle":"Add delete.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":18}}},{"hash":"78c6d701e747241847e987edecb15498957833c5","isMergeCommit":false,"messageTitle":"Add enum.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":72}}},{"hash":"783f8157036e6112a55b24f17fdd41ba4c517e65","isMergeCommit":false,"messageTitle":"Add exception.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":7}}},{"hash":"07c6faad563356d16bb95490f9be1a67a9379f3a","isMergeCommit":false,"messageTitle":"Add out-of-range exception.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2023-09-01","commitResults":[{"hash":"3ff3b87e11a84d7fbccd10a70bc9a83e3a702a94","isMergeCommit":false,"messageTitle":"Add Storage","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":207,"deletions":31},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"ddc31fe61597bc09162f9f4ee6dacc4166c64c30","isMergeCommit":false,"messageTitle":"Revert \"Add Storage\"","messageBody":"This reverts commit 3ff3b87e11a84d7fbccd10a70bc9a83e3a702a94.\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":31,"deletions":207},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"fec80ff76832aa1f53ced5daa1dadbe678270c83","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Level-7","messageBody":"* master:\n Revert \"Add Storage\"\n","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"WeeMingQing":{"java":319,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"WeeMingQing":34348.76},"authorDisplayNameMap":{"WeeMingQing":"CS2103T-W12-2 WEE ..QING"}} diff --git a/WeeeHung_ip_master/authorship.json b/WeeeHung_ip_master/authorship.json index bd248788..7be34a3a 100644 --- a/WeeeHung_ip_master/authorship.json +++ b/WeeeHung_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":"WeeeHung"},"content":" implementation \u0027org.junit.jupiter:junit-jupiter-api:5.10.0\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":42,"WeeeHung":1}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"T|0|lol ","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"D|0|lol1 |2023-08-28 15:20:45","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"T|0|lol2","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"E|0|lol4 |2023-09-30 15:20:45|2023-09-30 19:20:45","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"D|1|something |2023-09-30 15:20:45","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"E|1|something |2023-09-30 15:20:45|2023-09-30 17:20:45","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"T|1|something again","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":7}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.ChatUI;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.TaskType;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" // standard response","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" String horizontalLine \u003d \" ------------------------------------------------------------------------\";","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" String noDescError \u003d \" ☹ OOPS!!! The description of a todo cannot be empty.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" String noCommandError \u003d \" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" // initialise","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" ChatUI ui \u003d new ChatUI();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" // read from txt file and create tasks and put into storage","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" storage.load();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" ui.intro();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" String input \u003d parser.getInput();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" String[] parts \u003d input.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" ui.divider();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" switch (parts[0]) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" case \"bye\":","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" ui.outro();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" ui.divider();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" // write the changes into the file duke.txt","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" storage.write();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" case \"list\":","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" storage.listPrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" case \"mark\" :","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" int id \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" storage.changeMarking(id, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" storage.printMarking(id);","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" System.out.print(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":" case \"unmark\" :","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" int id2 \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" storage.changeMarking(id2, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" storage.printMarking(id2);","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" System.out.print(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" case \"delete\" :","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" int id3 \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" storage.delete(id3);","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" case \"todo\" :","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" int indexOfTodo \u003d input.indexOf(\"todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" String taskDesc \u003d input.substring(indexOfTodo + 5);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":" if (Objects.equals(taskDesc, \"\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":" System.out.println(noDescError);","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":" Task task \u003d new Task(taskDesc, TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":" storage.printEntry(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":" case \"deadline\" :","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":" int indexOfDeadline \u003d input.indexOf(\"deadline\");","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":" int indexOfBy \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":" taskDesc \u003d input.substring(indexOfDeadline + 9, indexOfBy);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":" String deadlinePart \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":" deadlinePart \u003d input.substring(indexOfBy + 3).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":" task \u003d new Task(taskDesc, TaskType.DEADLINE, deadlinePart, \"\");","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"WeeeHung"},"content":" storage.printEntry(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"WeeeHung"},"content":" case \"event\" :","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"WeeeHung"},"content":" int indexOfEvent \u003d input.indexOf(\"event\");","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"WeeeHung"},"content":" int indexOfFrom \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"WeeeHung"},"content":" int indexOfTo \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"WeeeHung"},"content":" taskDesc \u003d input.substring(indexOfEvent + 6, indexOfFrom);","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"WeeeHung"},"content":" String fromPart \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"WeeeHung"},"content":" fromPart \u003d input.substring(indexOfFrom + 5, indexOfTo).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"WeeeHung"},"content":" String toPart \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"WeeeHung"},"content":" toPart \u003d input.substring(indexOfTo +3).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"WeeeHung"},"content":" task \u003d new Task(taskDesc, TaskType.EVENT, fromPart, toPart);","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"WeeeHung"},"content":" storage.printEntry(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"WeeeHung"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"WeeeHung"},"content":" System.out.println(noCommandError);","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"WeeeHung"},"content":" ui.divider();","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"WeeeHung":100}},{"path":"src/main/java/DukePackage/ChatUI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package DukePackage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"public class ChatUI {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" String horizontalLine \u003d \" ------------------------------------------------------------------------\";","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" String intro \u003d \" Hello! I\u0027m iPbot \\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":" \" What can I do for you?\";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":" String outro \u003d \" Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" public ChatUI() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" // Constructor body (if needed)","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" public void divider() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" public void intro() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" System.out.println(intro);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" public void outro() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" System.out.println(outro);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":26}},{"path":"src/main/java/DukePackage/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package DukePackage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":7}},{"path":"src/main/java/DukePackage/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package DukePackage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"//function to retrieve string that the user input","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" public Parser() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" public String getInput() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" Scanner scanner \u003d this.scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" //to mimic chatBot","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" System.out.print(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":20}},{"path":"src/main/java/DukePackage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package DukePackage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" protected ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" public Storage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" this.taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" return this.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" public void addList(Task t) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" this.taskList.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" public void delete(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" t.printMarking(false);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" this.taskList.remove(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" int size \u003d this.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\"\\n Now you have %d tasks in the list.\\n\", size);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" public void write() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" FileWriter fileWriter \u003d new FileWriter(\"data/duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(fileWriter);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" for (Task tasking : this.taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" // format the string","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" String formattedString \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" Integer priority \u003d tasking.isDone","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" ? 1","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" switch (tasking.type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":" case TODO:","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" formattedString \u003d String.format(\"%c|%d|%s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" \u0027T\u0027, priority, tasking.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" formattedString \u003d String.format(\"%c|%d|%s|%s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" \u0027D\u0027, priority, tasking.description,","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" tasking.start.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" formattedString \u003d String.format(\"%c|%d|%s|%s|%s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" \u0027E\u0027, priority, tasking.description,","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" tasking.start.toString().replace(\"T\", \" \"),","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" tasking.end.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":" bufferedWriter.write(formattedString);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":" bufferedWriter.newLine(); // Move to the next line","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":" public void load() {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(\"data/duke.txt\"))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":" File file \u003d new File(\"data/duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"WeeeHung"},"content":" FileReader fileReader \u003d new FileReader(file); // append mode","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"WeeeHung"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"WeeeHung"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"WeeeHung"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"WeeeHung"},"content":" // Assuming your line contains comma-separated values","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"WeeeHung"},"content":" String[] values \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"WeeeHung"},"content":" // Create your Java object based on the parsed values","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"WeeeHung"},"content":" TaskType type \u003d Objects.equals(values[0], \"T\")","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"WeeeHung"},"content":" ? TaskType.TODO","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"WeeeHung"},"content":" : Objects.equals(values[0], \"D\")","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"WeeeHung"},"content":" ? TaskType.DEADLINE","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"WeeeHung"},"content":" : TaskType.EVENT;","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"WeeeHung"},"content":" String start \u003d \"\", end \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"WeeeHung"},"content":" start \u003d values[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"WeeeHung"},"content":" start \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"WeeeHung"},"content":" end \u003d values[4];","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"WeeeHung"},"content":" end \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"WeeeHung"},"content":" Task obj \u003d new Task(values[2], type, start, end); // Instantiate with appropriate arguments","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"WeeeHung"},"content":" obj.marking(!Objects.equals(values[1], \"0\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"WeeeHung"},"content":" // Store the object in your storage instance","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"WeeeHung"},"content":" addList(obj);","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"WeeeHung"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"WeeeHung"},"content":" public void listPrinter() {","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"WeeeHung"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"WeeeHung"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" %d.[%s][%s] %s\", index, t.getTypeIcon(), t.getStatusIcon(), t.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"WeeeHung"},"content":" if (!Objects.isNull(t.start) \u0026\u0026 !Objects.isNull(t.end)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" (from: %s to: %s)%n\", t.start.toString().replace(\"T\", \" \"), t.end.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"WeeeHung"},"content":" } else if (!Objects.isNull(t.start)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" (by: %s)%n\", t.start.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"WeeeHung"},"content":" System.out.print(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"WeeeHung"},"content":" public void printMarking(int i) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"WeeeHung"},"content":" t.printMarking(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"WeeeHung"},"content":" System.out.println();","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"WeeeHung"},"content":" throw new DukeException(\" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"WeeeHung"},"content":" public void changeMarking(int i, boolean isDone) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"WeeeHung"},"content":" t.marking(isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"WeeeHung"},"content":" throw new DukeException(\" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"WeeeHung"},"content":" public void printEntry(Task t) {","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"WeeeHung"},"content":" t.descriptionString();","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"WeeeHung"},"content":" int size \u003d this.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\"\\n Now you have %d tasks in the list.\\n\", size);","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":156}},{"path":"src/main/java/DukePackage/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package DukePackage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"public class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" protected String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" protected TaskType type;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" String markString \u003d \" Nice! I\u0027ve marked this task as done:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" String unmarkString \u003d \" OK, I\u0027ve marked this task as not done yet:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" public Task(String description, TaskType type, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" // set to-do as the default type","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" this.start \u003d Objects.equals(start, \"\")","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" ? null","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" : LocalDateTime.parse(start, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" this.end \u003d Objects.equals(end, \"\")","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" ? null","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" : LocalDateTime.parse(end, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" return this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" switch (this.type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" case TODO:","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" return \"T\";","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" return \"D\";","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" return \"E\";","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" public void marking(Boolean checked) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" this.isDone \u003d checked;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" public void descriptionString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" String initStatement \u003d \" Got it. I\u0027ve added this task:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" System.out.println(initStatement);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" this.printMarking(false);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" public void printMarking(boolean mark) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" if (mark) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" System.out.println(markString);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":" System.out.println(unmarkString);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" [%s][%s] %s\", this.getTypeIcon(), this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":" if (!Objects.isNull(this.start) \u0026\u0026 !Objects.isNull(this.end)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" (from: %s to: %s)\", this.start.toString().replace(\"T\", \" \"), this.end.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":" } else if (!Objects.isNull(this.start)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" (by: %s)\", this.start.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":" //...","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":81}},{"path":"src/main/java/DukePackage/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package DukePackage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"public enum TaskType {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" TODO,","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" DEADLINE,","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":" EVENT","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":7}},{"path":"src/main/java/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.TaskType;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" @BeforeEach","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" public void setUp() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" storage \u003d new Storage();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" public void testAddList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" Task task \u003d new Task(\"Test task\", TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" assertEquals(1, storage.getTaskList().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" assertEquals(\"Test task\", storage.getTaskList().get(0).getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" public void testDelete() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" Task task1 \u003d new Task(\"Task 1\", TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" Task task2 \u003d new Task(\"Task 2\", TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task1);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task2);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" storage.delete(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" assertEquals(1, storage.getTaskList().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" assertEquals(\"Task 2\", storage.getTaskList().get(0).getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":38}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"todo task1","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"event task2 /from tue /to fri","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"event task2 /from tue /to fri","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"list","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":4}}] +[{"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":"WeeeHung"},"content":"jar {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" manifest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" attributes \u0027Main-Class\u0027: \u0027com.example.MainClass\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" implementation \u0027org.junit.jupiter:junit-jupiter-api:5.10.0\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":42,"WeeeHung":7}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"T|0|lol ","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"D|1|lol1 |2023-08-28 15:20:45","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"T|0|lol2","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"E|0|lol4 |2023-09-30 15:20:45|2023-09-30 19:20:45","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"D|1|something |2023-09-30 15:20:45","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"E|1|something |2023-09-30 15:20:45|2023-09-30 17:20:45","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"T|1|something again","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"T|0|2109s pset","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"D|0|email TA |2023-09-01 19:20:45","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"WeeeHung":9}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.ChatUI;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.TaskType;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" * The Duke class is the main class that runs the Duke chatbot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" * The main method that starts the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" * @param args The command-line arguments passed to the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" // standard response","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" String horizontalLine \u003d \" ------------------------------------------------------------------------\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" String noDescError \u003d \" ☹ OOPS!!! The description of a todo cannot be empty.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" String noCommandError \u003d \" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" // initialise","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" ChatUI ui \u003d new ChatUI();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" // read from txt file and create tasks and put into storage","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" storage.loadListFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" ui.printIntro();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" String input \u003d parser.getInput();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" String[] parts \u003d input.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" ui.printDivider();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" switch (parts[0]) {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" case \"bye\":","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" ui.printOutro();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" ui.printDivider();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" // write the changes into the file duke.txt","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" storage.writeTasksToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" case \"list\":","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" storage.printTaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" case \"mark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":" int id \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" storage.changeTaskMarking(id, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" storage.printTaskMarking(id);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" System.out.print(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" int id2 \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" storage.changeTaskMarking(id2, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" storage.printTaskMarking(id2);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" System.out.print(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":" case \"delete\":","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":" int id3 \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":" storage.deleteTask(id3);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":" case \"find\":","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":" int indexOfFind \u003d input.indexOf(\"find\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":" String toFindString \u003d input.substring(indexOfFind + 5);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":" storage.printMatchingList(toFindString);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":" case \"todo\":","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":" int indexOfTodo \u003d input.indexOf(\"todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":" String taskDesc \u003d input.substring(indexOfTodo + 5);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":" if (Objects.equals(taskDesc, \"\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":" System.out.println(noDescError);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"WeeeHung"},"content":" Task task \u003d new Task(taskDesc, TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"WeeeHung"},"content":" storage.printTaskEntry(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"WeeeHung"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"WeeeHung"},"content":" int indexOfDeadline \u003d input.indexOf(\"deadline\");","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"WeeeHung"},"content":" int indexOfBy \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"WeeeHung"},"content":" taskDesc \u003d input.substring(indexOfDeadline + 9, indexOfBy);","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"WeeeHung"},"content":" String deadlinePart \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"WeeeHung"},"content":" deadlinePart \u003d input.substring(indexOfBy + 3).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"WeeeHung"},"content":" task \u003d new Task(taskDesc, TaskType.DEADLINE, deadlinePart, \"\");","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"WeeeHung"},"content":" storage.printTaskEntry(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"WeeeHung"},"content":" case \"event\":","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"WeeeHung"},"content":" int indexOfEvent \u003d input.indexOf(\"event\");","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"WeeeHung"},"content":" int indexOfFrom \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"WeeeHung"},"content":" int indexOfTo \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"WeeeHung"},"content":" taskDesc \u003d input.substring(indexOfEvent + 6, indexOfFrom);","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"WeeeHung"},"content":" String fromPart \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"WeeeHung"},"content":" fromPart \u003d input.substring(indexOfFrom + 5, indexOfTo).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"WeeeHung"},"content":" String toPart \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"WeeeHung"},"content":" toPart \u003d input.substring(indexOfTo + 3).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"WeeeHung"},"content":" task \u003d new Task(taskDesc, TaskType.EVENT, fromPart, toPart);","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"WeeeHung"},"content":" storage.printTaskEntry(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"WeeeHung"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"WeeeHung"},"content":" System.out.println(noCommandError);","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"WeeeHung"},"content":" ui.printDivider();","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"WeeeHung":113}},{"path":"src/main/java/DukePackage/ChatUI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package DukePackage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" * The ChatUI class represents the user interface for the chatbot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"public class ChatUI {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" private final String HORIZONTAL_LINE \u003d \" ------------------------------------------------------------------------\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" private final String INTRO \u003d \" Hello! I\u0027m iPbot \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" \" What can I do for you?\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" private final String OUTRO \u003d \" Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" * Constructs a new ChatUI object.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" public ChatUI() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" // Constructor body (if needed)","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" * Prints a horizontal line divider.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" public void printDivider() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" * Prints the introduction message.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" public void printIntro() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" System.out.println(INTRO);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" * Prints the outro message.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" public void printOutro() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" System.out.println(OUTRO);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":42}},{"path":"src/main/java/DukePackage/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package DukePackage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" * The DukeException class represents an exception specific to the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" * Constructs a new DukeException object with the specified error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" * @param message The error message associated with the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":15}},{"path":"src/main/java/DukePackage/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package DukePackage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"//function to retrieve string that the user input","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" * The Parser class is responsible for retrieving user input from the console.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" * Constructs a new Parser object.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" public Parser() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the user input as a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" * @return The user input as a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" public String getInput() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" Scanner scanner \u003d this.scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" // Prompt the user for input","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" System.out.print(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" // Read and return the user input","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":34}},{"path":"src/main/java/DukePackage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package DukePackage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" * The Storage class is responsible for managing the storage of tasks in a task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" * The list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" protected ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" protected final String MATCHING_STRING \u003d \" Here are the matching tasks in your list:\";","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" * Constructs a Storage object with an empty task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" public Storage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" this.taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" * @return The task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" return this.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" * @param t The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" public void addList(Task t) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" this.taskList.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" * @param id The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" public void deleteTask(int id) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" t.printMarking(false);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" this.taskList.remove(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" int size \u003d this.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\"\\n Now you have %d tasks in the list.\\n\", size);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" * Writes the task list to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":" public void writeTasksToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":" FileWriter fileWriter \u003d new FileWriter(\"data/duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(fileWriter);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":" for (Task tasking : this.taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":" // format the string","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":" String formattedString \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":" Integer priority \u003d tasking.isDone","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":" ? 1","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":" : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":" switch (tasking.type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":" case TODO:","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":" formattedString \u003d String.format(\"%c|%d|%s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":" \u0027T\u0027, priority, tasking.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"WeeeHung"},"content":" formattedString \u003d String.format(\"%c|%d|%s|%s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"WeeeHung"},"content":" \u0027D\u0027, priority, tasking.description,","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"WeeeHung"},"content":" tasking.startTime.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"WeeeHung"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"WeeeHung"},"content":" formattedString \u003d String.format(\"%c|%d|%s|%s|%s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"WeeeHung"},"content":" \u0027E\u0027, priority, tasking.description,","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"WeeeHung"},"content":" tasking.startTime.toString().replace(\"T\", \" \"),","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"WeeeHung"},"content":" tasking.endTime.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"WeeeHung"},"content":" bufferedWriter.write(formattedString);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"WeeeHung"},"content":" bufferedWriter.newLine(); // Move to the next line","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"WeeeHung"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"WeeeHung"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"WeeeHung"},"content":" * Loads the task list from a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"WeeeHung"},"content":" public void loadListFromFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"WeeeHung"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(\"data/duke.txt\"))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"WeeeHung"},"content":" File file \u003d new File(\"data/duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"WeeeHung"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"WeeeHung"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"WeeeHung"},"content":" FileReader fileReader \u003d new FileReader(file); // append mode","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"WeeeHung"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"WeeeHung"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"WeeeHung"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"WeeeHung"},"content":" // Assuming your line contains comma-separated values","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"WeeeHung"},"content":" String[] values \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"WeeeHung"},"content":" // Create your Java object based on the parsed values","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"WeeeHung"},"content":" TaskType type \u003d Objects.equals(values[0], \"T\")","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"WeeeHung"},"content":" ? TaskType.TODO","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"WeeeHung"},"content":" : Objects.equals(values[0], \"D\")","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"WeeeHung"},"content":" ? TaskType.DEADLINE","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"WeeeHung"},"content":" : TaskType.EVENT;","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"WeeeHung"},"content":" String start \u003d \"\", end \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"WeeeHung"},"content":" start \u003d values[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"WeeeHung"},"content":" start \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"WeeeHung"},"content":" end \u003d values[4];","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"WeeeHung"},"content":" end \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"WeeeHung"},"content":" Task obj \u003d new Task(values[2], type, start, end); // Instantiate with appropriate arguments","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"WeeeHung"},"content":" obj.setStatus(!Objects.equals(values[1], \"0\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"WeeeHung"},"content":" // Store the object in your storage instance","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"WeeeHung"},"content":" addList(obj);","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"WeeeHung"},"content":" bufferedReader.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"WeeeHung"},"content":" bufferedReader.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"WeeeHung"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"WeeeHung"},"content":" * Prints the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"WeeeHung"},"content":" public void printTaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"WeeeHung"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"WeeeHung"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" %d.[%s][%s] %s\", index, t.getTypeIcon(), t.getStatusIcon(), t.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"WeeeHung"},"content":" if (!Objects.isNull(t.startTime) \u0026\u0026 !Objects.isNull(t.endTime)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" (from: %s to: %s)%n\", t.startTime.toString().replace(\"T\", \" \"), t.endTime.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"WeeeHung"},"content":" } else if (!Objects.isNull(t.startTime)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" (by: %s)%n\", t.startTime.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"WeeeHung"},"content":" System.out.print(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"WeeeHung"},"content":" * Prints the marking for a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"WeeeHung"},"content":" * @param i The index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"WeeeHung"},"content":" * @throws DukeException If the task index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"WeeeHung"},"content":" public void printTaskMarking(int i) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"WeeeHung"},"content":" t.printMarking(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"WeeeHung"},"content":" System.out.println();","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"WeeeHung"},"content":" throw new DukeException(\" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"WeeeHung"},"content":" * Changes the marking of a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"WeeeHung"},"content":" * @param i The index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"WeeeHung"},"content":" * @param isDone The new marking status.","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"WeeeHung"},"content":" * @throws DukeException If the task index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"WeeeHung"},"content":" public void changeTaskMarking(int i, boolean isDone) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"WeeeHung"},"content":" t.setStatus(isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"WeeeHung"},"content":" throw new DukeException(\" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"WeeeHung"},"content":" * Prints the entry of a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"WeeeHung"},"content":" * @param t The task.","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"WeeeHung"},"content":" public void printTaskEntry(Task t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"WeeeHung"},"content":" t.printDescription();","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"WeeeHung"},"content":" int size \u003d this.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\"\\n Now you have %d tasks in the list.\\n\", size);","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"WeeeHung"},"content":" public void printMatchingList(String toFindString) {","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"WeeeHung"},"content":" System.out.println(MATCHING_STRING);","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"WeeeHung"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"WeeeHung"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"WeeeHung"},"content":" if (t.getDescription().contains(toFindString)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" %d.[%s][%s] %s\", index, t.getTypeIcon(), t.getStatusIcon(), t.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"WeeeHung"},"content":" if (!Objects.isNull(t.startTime) \u0026\u0026 !Objects.isNull(t.endTime)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" (from: %s to: %s)%n\", t.startTime.toString().replace(\"T\", \" \"), t.endTime.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"WeeeHung"},"content":" } else if (!Objects.isNull(t.startTime)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" (by: %s)%n\", t.startTime.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"WeeeHung"},"content":" System.out.print(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":224}},{"path":"src/main/java/DukePackage/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package DukePackage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" * The Task class represents a task with a description, status, type, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"public class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" * The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" protected String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" * The status of the task (done or not done).","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" * The type of the task (TODO, DEADLINE, or EVENT).","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" protected TaskType type;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" * The start time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" protected LocalDateTime startTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" * The end time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" protected LocalDateTime endTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" * The string displayed when the task is marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" protected final String MARKED_STRING \u003d \" Nice! I\u0027ve marked this task as done:\";","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" * The string displayed when the task is marked as not done yet.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" protected final String UNMARKED_STRING \u003d \" OK, I\u0027ve marked this task as not done yet:\";","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" * Constructs a Task object with the given description, type, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" * @param type The type of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" * @param start The start time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" * @param end The end time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" public Task(String description, TaskType type, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" // set to-do as the default type","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" this.startTime \u003d Objects.equals(start, \"\")","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" ? null","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" : LocalDateTime.parse(start, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" this.endTime \u003d Objects.equals(end, \"\")","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":" ? null","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":" : LocalDateTime.parse(end, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":" * @return The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":" return this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":" * @return The status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"WeeeHung"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"WeeeHung"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the type icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"WeeeHung"},"content":" * @return The type icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"WeeeHung"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"WeeeHung"},"content":" switch (this.type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"WeeeHung"},"content":" case TODO:","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"WeeeHung"},"content":" return \"T\";","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"WeeeHung"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"WeeeHung"},"content":" return \"D\";","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"WeeeHung"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"WeeeHung"},"content":" return \"E\";","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"WeeeHung"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"WeeeHung"},"content":" * Sets the status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"WeeeHung"},"content":" * @param checked The new status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"WeeeHung"},"content":" public void setStatus(Boolean checked) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"WeeeHung"},"content":" this.isDone \u003d checked;","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"WeeeHung"},"content":" * Prints the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"WeeeHung"},"content":" public void printDescription() {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"WeeeHung"},"content":" String initStatement \u003d \" Got it. I\u0027ve added this task:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"WeeeHung"},"content":" System.out.println(initStatement);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"WeeeHung"},"content":" this.printMarking(false);","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"WeeeHung"},"content":" * Prints the marking of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"WeeeHung"},"content":" * @param mark Indicates whether to display the marking or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"WeeeHung"},"content":" public void printMarking(boolean mark) {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"WeeeHung"},"content":" if (mark) {","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"WeeeHung"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"WeeeHung"},"content":" System.out.println(MARKED_STRING);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"WeeeHung"},"content":" System.out.println(UNMARKED_STRING);","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" [%s][%s] %s\", this.getTypeIcon(), this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"WeeeHung"},"content":" if (!Objects.isNull(this.startTime) \u0026\u0026 !Objects.isNull(this.endTime)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" (from: %s to: %s)\", this.startTime.toString().replace(\"T\", \" \"), this.endTime.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"WeeeHung"},"content":" } else if (!Objects.isNull(this.startTime)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\" (by: %s)\", this.startTime.toString().replace(\"T\", \" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"WeeeHung"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":144}},{"path":"src/main/java/DukePackage/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package DukePackage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" * The TaskType enum represents the types of tasks that can be used in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"public enum TaskType {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" * Represents a todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" TODO,","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" * Represents a deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" DEADLINE,","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" * Represents an event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" EVENT","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":22}},{"path":"src/main/java/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import DukePackage.TaskType;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" * The StorageTest class is a JUnit test class for testing the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" * Sets up the test environment before each test case.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" @BeforeEach","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" public void setUp() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" storage \u003d new Storage();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" * Tests the addList() method of the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" public void testAddList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" Task task \u003d new Task(\"Test task\", TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" assertEquals(1, storage.getTaskList().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" assertEquals(\"Test task\", storage.getTaskList().get(0).getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" * Tests the delete() method of the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" public void testDelete() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" Task task1 \u003d new Task(\"Task 1\", TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" Task task2 \u003d new Task(\"Task 2\", TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task1);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task2);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" storage.deleteTask(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" assertEquals(1, storage.getTaskList().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" assertEquals(\"Task 2\", storage.getTaskList().get(0).getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":48}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"todo task1","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"event task2 /from tue /to fri","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"event task2 /from tue /to fri","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"list","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":4}}] diff --git a/WeeeHung_ip_master/commits.json b/WeeeHung_ip_master/commits.json index 16e2704c..733a070e 100644 --- a/WeeeHung_ip_master/commits.json +++ b/WeeeHung_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"WeeeHung":[{"date":"2023-08-24","commitResults":[{"hash":"39ad9b541b6fbf4332ea4c9bb9dc3acf270c4522","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","tags":["v1.0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"e9888a8a521b9a1b41fe7889d35680e632c90289","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["v1.1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"27d1342a08f99d0a4f873a3c912d41b686955cd4","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"","tags":["v1.2"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":12}}},{"hash":"565356b6af168f6345f8815bd62513cad61e039d","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"","tags":["v1.3"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":8}}},{"hash":"2be65a58d5aae95907e6e6e2ef7f3910ceb9b42d","isMergeCommit":false,"messageTitle":"Level-4: ToDo, Event, Deadline","messageBody":"","tags":["v1.4"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":36}}},{"hash":"18aa836387cde574cd0051fbc75677b8760b3432","isMergeCommit":false,"messageTitle":"Level 6: Delete","messageBody":"","tags":["v1.5"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":11}}}]},{"date":"2023-08-31","commitResults":[{"hash":"dbd4817a5fc59b8c24ca1e2ebe47d3013a40e685","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["Level-7,Save"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":138,"deletions":18}}},{"hash":"892b6e8fef5f1d8ec54e827de928d74480d199d2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from WeeeHung/branch-level-7","messageBody":"Level 7. Save","fileTypesAndContributionMap":{}},{"hash":"902cbeb6704816b548ecafcc87ec557ad8e9ecf6","isMergeCommit":false,"messageTitle":"Level-8: Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":5},"java":{"insertions":29,"deletions":21}}},{"hash":"b6e7ee1000efd21565ae391aeb08fda711c9fb19","isMergeCommit":false,"messageTitle":"test commit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":45}}},{"hash":"67a13425b6177342cb168dc7afb3b600904c75c4","isMergeCommit":false,"messageTitle":"add UI Package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":70,"deletions":60}}},{"hash":"5510802fa5a9f4e4abda4ab09a9d0f46aa9451e0","isMergeCommit":false,"messageTitle":"Add package for iPBot","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":298,"deletions":280}}},{"hash":"eed9a59100f9540ed11a00d6735daddada28133c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"3288138b4eb1874cc7b17e4d4dabd7c893a1bd2b","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-Junit","A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":45,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"WeeeHung":{"java":435,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":11}},"authorContributionVariance":{"WeeeHung":83297.74},"authorDisplayNameMap":{"WeeeHung":"CS2103T-T14-3 CHIA..HUNG"}} +{"authorDailyContributionsMap":{"WeeeHung":[{"date":"2023-08-24","commitResults":[{"hash":"39ad9b541b6fbf4332ea4c9bb9dc3acf270c4522","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","tags":["v1.0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"e9888a8a521b9a1b41fe7889d35680e632c90289","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["v1.1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"27d1342a08f99d0a4f873a3c912d41b686955cd4","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"","tags":["v1.2"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":12}}},{"hash":"565356b6af168f6345f8815bd62513cad61e039d","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"","tags":["v1.3"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":8}}},{"hash":"2be65a58d5aae95907e6e6e2ef7f3910ceb9b42d","isMergeCommit":false,"messageTitle":"Level-4: ToDo, Event, Deadline","messageBody":"","tags":["v1.4"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":36}}},{"hash":"18aa836387cde574cd0051fbc75677b8760b3432","isMergeCommit":false,"messageTitle":"Level 6: Delete","messageBody":"","tags":["v1.5"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":11}}}]},{"date":"2023-08-31","commitResults":[{"hash":"dbd4817a5fc59b8c24ca1e2ebe47d3013a40e685","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["Level-7,Save"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":138,"deletions":18}}},{"hash":"892b6e8fef5f1d8ec54e827de928d74480d199d2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from WeeeHung/branch-level-7","messageBody":"Level 7. Save","fileTypesAndContributionMap":{}},{"hash":"902cbeb6704816b548ecafcc87ec557ad8e9ecf6","isMergeCommit":false,"messageTitle":"Level-8: Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":5},"java":{"insertions":29,"deletions":21}}},{"hash":"b6e7ee1000efd21565ae391aeb08fda711c9fb19","isMergeCommit":false,"messageTitle":"test commit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":45}}},{"hash":"67a13425b6177342cb168dc7afb3b600904c75c4","isMergeCommit":false,"messageTitle":"add UI Package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":70,"deletions":60}}},{"hash":"5510802fa5a9f4e4abda4ab09a9d0f46aa9451e0","isMergeCommit":false,"messageTitle":"Add package for iPBot","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":298,"deletions":280}}},{"hash":"eed9a59100f9540ed11a00d6735daddada28133c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"3288138b4eb1874cc7b17e4d4dabd7c893a1bd2b","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-Junit","A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":45,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"83799f5015a0463e1f316a531ee8611cc16bb1b1","isMergeCommit":false,"messageTitle":"Add Javadocs","messageBody":"","tags":["A-Javadocs"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":212,"deletions":28}}},{"hash":"1f3228874563366647ac5254f71efc7de59eac57","isMergeCommit":false,"messageTitle":"Edit to fit Java Coding Standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":59,"deletions":60}}},{"hash":"322c861517f47d3503b02310769173905f7bf088","isMergeCommit":false,"messageTitle":"Edit to fit Java Coding Standar","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"WeeeHung":{"java":642,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":7,"txt":13}},"authorContributionVariance":{"WeeeHung":82949.13},"authorDisplayNameMap":{"WeeeHung":"CS2103T-T14-3 CHIA..HUNG"}} diff --git a/WinSheng1_ip_master/authorship.json b/WinSheng1_ip_master/authorship.json index f5698965..28416200 100644 --- a/WinSheng1_ip_master/authorship.json +++ b/WinSheng1_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" protected String by;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":" public String type() {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" return \"[D]\";","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":" return type() + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"WinSheng1"},"content":" return type() + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + by;","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":24}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"import java.io.*;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" static String horizontalLine \u003d \"___________________________________________________________________\";","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" static String filePath \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" System.out.println(horizontalLine +","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" \"\\nHello i\u0027m ChatterBuddy\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" \"Is there anything I can assist you with today?\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" String userInput;","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":" tasks \u003d load();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"WinSheng1"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Error loading tasks.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"WinSheng1"},"content":" do {","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"WinSheng1"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"WinSheng1"},"content":" String[] individualWords \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"WinSheng1"},"content":" String firstWord \u003d individualWords[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"WinSheng1"},"content":" String lowerCapsFirstWord \u003d firstWord.toLowerCase();","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"WinSheng1"},"content":" if (userInput.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"WinSheng1"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"WinSheng1"},"content":" if (lowerCapsFirstWord.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"WinSheng1"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"You have 0 task.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"WinSheng1"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"WinSheng1"},"content":" System.out.println((i + 1) + \".\" + task.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"WinSheng1"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"WinSheng1"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"WinSheng1"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"Task to mark cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"WinSheng1"},"content":" int taskNumber \u003d Integer.parseInt(userInput.substring(5)) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"WinSheng1"},"content":" task.updateTaskStatus(true, \"Task \" + (taskNumber + 1) + \" is already done!\", \"Great job! Task \" + (taskNumber + 1) + \" is done!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"WinSheng1"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"WinSheng1"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"WinSheng1"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"Task to unmark cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"WinSheng1"},"content":" int taskNumber \u003d Integer.parseInt(userInput.substring(7)) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"WinSheng1"},"content":" task.updateTaskStatus(false, \"Task \" + (taskNumber + 1) + \" is still incomplete.\", \"Okay, i\u0027ve updated Task \" + (taskNumber + 1) + \" to be incomplete.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"WinSheng1"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"WinSheng1"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"WinSheng1"},"content":" if (userInput.length() \u003c\u003d 7 || individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"Task to be deleted cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"WinSheng1"},"content":" int taskNumber \u003d Integer.parseInt(userInput.substring(7)) - 1;","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"WinSheng1"},"content":" Task deletedTask \u003d tasks.remove(taskNumber);","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"This task has been removed\\n \" + deletedTask + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"WinSheng1"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"WinSheng1"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"WinSheng1"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"The description of a todo cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"WinSheng1"},"content":" String description \u003d userInput.substring(5).trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d new ToDo(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":89,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"I\u0027ve added this task:\\n \" + task + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"WinSheng1"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"WinSheng1"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"The description/ deadline of a deadline cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"WinSheng1"},"content":" String fullStr \u003d userInput.substring(9);","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"WinSheng1"},"content":" String[] parts \u003d fullStr.split(\"/by\");","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"WinSheng1"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"WinSheng1"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-25"},{"lineNumber":102,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":103,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"I\u0027ve added this task:\\n \" + task + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":104,"author":{"gitId":"WinSheng1"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"You are missing one or some of these inputs - description/ by.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":108,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"WinSheng1"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"WinSheng1"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"The description/ time of an event cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":113,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"WinSheng1"},"content":" String fullStr \u003d userInput.substring(6);","lastModifiedDate":"2023-08-25"},{"lineNumber":115,"author":{"gitId":"WinSheng1"},"content":" String[] partialStr \u003d fullStr.split(\"/from\");","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"WinSheng1"},"content":" String description \u003d partialStr[0].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"WinSheng1"},"content":" String[] toFrom \u003d partialStr[1].split(\"/to\");","lastModifiedDate":"2023-08-25"},{"lineNumber":118,"author":{"gitId":"WinSheng1"},"content":" String from \u003d toFrom[0].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"WinSheng1"},"content":" String to \u003d toFrom[1].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-25"},{"lineNumber":121,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":122,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"I\u0027ve added this task:\\n \" + task + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"WinSheng1"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"You are missing one or some of these inputs - description/ from/ to.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":127,"author":{"gitId":"WinSheng1"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":128,"author":{"gitId":"WinSheng1"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":130,"author":{"gitId":"WinSheng1"},"content":" } catch (MissingInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"WinSheng1"},"content":" e.print();","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"WinSheng1"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"WinSheng1"},"content":" e.print();","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":135,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":136,"author":{"gitId":"WinSheng1"},"content":" } while (true);","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"WinSheng1"},"content":" save(tasks);","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"WinSheng1"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":141,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Error saving tasks.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":142,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":143,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":144,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Goodbye. Catch you later!\" + \"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":145,"author":{"gitId":"WinSheng1"},"content":" scanner.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":146,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":147,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":148,"author":{"gitId":"WinSheng1"},"content":" private static void save(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-08-28"},{"lineNumber":149,"author":{"gitId":"WinSheng1"},"content":" FileWriter writer \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":150,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":151,"author":{"gitId":"WinSheng1"},"content":" for (Task task: tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":152,"author":{"gitId":"WinSheng1"},"content":" String taskFileString \u003d task.toFileString();","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"WinSheng1"},"content":" writer.write(taskFileString + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":154,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":155,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"WinSheng1"},"content":" writer.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":157,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":158,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":159,"author":{"gitId":"WinSheng1"},"content":" private static ArrayList\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2023-08-28"},{"lineNumber":160,"author":{"gitId":"WinSheng1"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":161,"author":{"gitId":"WinSheng1"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":162,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":163,"author":{"gitId":"WinSheng1"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":164,"author":{"gitId":"WinSheng1"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":165,"author":{"gitId":"WinSheng1"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":166,"author":{"gitId":"WinSheng1"},"content":" FileReader reader \u003d new FileReader(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":167,"author":{"gitId":"WinSheng1"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(reader);","lastModifiedDate":"2023-08-28"},{"lineNumber":168,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":169,"author":{"gitId":"WinSheng1"},"content":" String fileLine;","lastModifiedDate":"2023-08-28"},{"lineNumber":170,"author":{"gitId":"WinSheng1"},"content":" while ((fileLine \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-28"},{"lineNumber":171,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d createTaskFromFile(fileLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":172,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":173,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":174,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":175,"author":{"gitId":"WinSheng1"},"content":" bufferedReader.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":176,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":177,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":178,"author":{"gitId":"WinSheng1"},"content":" return tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":179,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":180,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":181,"author":{"gitId":"WinSheng1"},"content":" private static Task createTaskFromFile(String fileLine) {","lastModifiedDate":"2023-08-28"},{"lineNumber":182,"author":{"gitId":"WinSheng1"},"content":" String[] parts \u003d fileLine.split(\"\\\\|\");","lastModifiedDate":"2023-08-28"},{"lineNumber":183,"author":{"gitId":"WinSheng1"},"content":" for (int i \u003d 0; i \u003c parts.length; i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":184,"author":{"gitId":"WinSheng1"},"content":" parts[i] \u003d parts[i].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":185,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":186,"author":{"gitId":"WinSheng1"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":187,"author":{"gitId":"WinSheng1"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-28"},{"lineNumber":188,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":189,"author":{"gitId":"WinSheng1"},"content":" Task task;","lastModifiedDate":"2023-08-28"},{"lineNumber":190,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":191,"author":{"gitId":"WinSheng1"},"content":" if (type.equals(\"[T]\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":192,"author":{"gitId":"WinSheng1"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":193,"author":{"gitId":"WinSheng1"},"content":" } else if (type.equals(\"[D]\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":194,"author":{"gitId":"WinSheng1"},"content":" String by \u003d parts[3];","lastModifiedDate":"2023-08-28"},{"lineNumber":195,"author":{"gitId":"WinSheng1"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-28"},{"lineNumber":196,"author":{"gitId":"WinSheng1"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":197,"author":{"gitId":"WinSheng1"},"content":" String from \u003d parts[3];","lastModifiedDate":"2023-08-28"},{"lineNumber":198,"author":{"gitId":"WinSheng1"},"content":" String to \u003d parts[4];","lastModifiedDate":"2023-08-28"},{"lineNumber":199,"author":{"gitId":"WinSheng1"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-28"},{"lineNumber":200,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":201,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":202,"author":{"gitId":"WinSheng1"},"content":" task.isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-28"},{"lineNumber":203,"author":{"gitId":"WinSheng1"},"content":" return task;","lastModifiedDate":"2023-08-28"},{"lineNumber":204,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"WinSheng1":202,"-":3}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" protected String from;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":" protected String to;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" public String type() {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" return \"[E]\";","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":" return type() + super.toString() + \" (from: \" + from + \" to \" + to + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"WinSheng1"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"WinSheng1"},"content":" return type() + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + from + \" | \" + to;","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":26}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" public void print() {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Invalid Command.\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" + \"Below are the list of commands:\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" + \"list - displays the list of tasks\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":" + \"mark x - marks task x as done\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" + \"unmark x - marks task x as undone\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":" + \"delete x - deletes task x\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" + \"todo x - creates task with description x\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" + \"deadline x /by y - creates task with description x by deadline y\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" + \"event x /from y /to z - creates task with description x from y to z\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" + Duke.horizontalLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"WinSheng1":17}},{"path":"src/main/java/MissingInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class MissingInputException extends Exception {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":" public MissingInputException(String message) {","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" super(message);","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" public void print() {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" System.out.println(this.getMessage() + \"\\n\" + Duke.horizontalLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"WinSheng1":9}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":" protected String description;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" public abstract String type();","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" public abstract String toFileString();","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"WinSheng1"},"content":" public void updateTaskStatus(boolean expectedStatus, String doneMessage, String undoneMessage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"WinSheng1"},"content":" if (isDone \u003d\u003d expectedStatus) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"WinSheng1"},"content":" System.out.println(doneMessage + \"\\n\" + Duke.horizontalLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"WinSheng1"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"WinSheng1"},"content":" isDone \u003d expectedStatus;","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"WinSheng1"},"content":" System.out.println(undoneMessage + \"\\n\" + Duke.horizontalLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":31}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" public String type() {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":" return \"[T]\";","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" return type() + super.toString();","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":" return type() + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"todo borrow book","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"WinSheng1":4}}] +[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"[D] | 0 | x | 2023-12-12 1800","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"[E] | 0 | x | 2023-11-10 1800 | 2023-12-09 2000","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":"[E] | 0 | x | 2001-12-18 1800 | 2001-12-19 1800","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"WinSheng1":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" protected LocalDateTime dateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" DateTimeFormatter formatter \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" .parseCaseInsensitive()","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":" .toFormatter();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" this.dateTime \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"WinSheng1"},"content":" this.dateTime \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Please use the following formats:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"WinSheng1"},"content":" + \"deadline task /by yyyy-mm-dd hhmm\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WinSheng1"},"content":" + \"deadline task /by dd/mm/yyyy hhmm\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"WinSheng1"},"content":" + Duke.horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"WinSheng1"},"content":" public String type() {","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"WinSheng1"},"content":" return \"[D]\";","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"WinSheng1"},"content":" return type() + super.toString() + \" (by: \" + dateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mma\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"WinSheng1"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"WinSheng1"},"content":" return type() + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + dateTime.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":44}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"import java.io.*;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" static String horizontalLine \u003d \"___________________________________________________________________\";","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" static String filePath \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" System.out.println(horizontalLine","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" + \"\\nHello i\u0027m ChatterBuddy\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" + \"Is there anything I can assist you with today?\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" String userInput;","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":" tasks \u003d load();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"WinSheng1"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Error loading tasks.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"WinSheng1"},"content":" do {","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"WinSheng1"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"WinSheng1"},"content":" String[] individualWords \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"WinSheng1"},"content":" String firstWord \u003d individualWords[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"WinSheng1"},"content":" String lowerCapsFirstWord \u003d firstWord.toLowerCase();","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"WinSheng1"},"content":" if (userInput.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"WinSheng1"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"WinSheng1"},"content":" if (lowerCapsFirstWord.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"WinSheng1"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"You have 0 task.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"WinSheng1"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"WinSheng1"},"content":" System.out.println((i + 1) + \".\" + task.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"WinSheng1"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"WinSheng1"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"WinSheng1"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"Task to mark cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"WinSheng1"},"content":" int taskNumber \u003d Integer.parseInt(userInput.substring(5)) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"WinSheng1"},"content":" task.updateTaskStatus(true, \"Task \" + (taskNumber + 1) + \" is already done!\", \"Great job! Task \" + (taskNumber + 1) + \" is done!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"WinSheng1"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"WinSheng1"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"WinSheng1"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"Task to unmark cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"WinSheng1"},"content":" int taskNumber \u003d Integer.parseInt(userInput.substring(7)) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"WinSheng1"},"content":" task.updateTaskStatus(false, \"Task \" + (taskNumber + 1) + \" is still incomplete.\", \"Okay, i\u0027ve updated Task \" + (taskNumber + 1) + \" to be incomplete.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"WinSheng1"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"WinSheng1"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"WinSheng1"},"content":" if (userInput.length() \u003c\u003d 7 || individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"Task to be deleted cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"WinSheng1"},"content":" int taskNumber \u003d Integer.parseInt(userInput.substring(7)) - 1;","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"WinSheng1"},"content":" Task deletedTask \u003d tasks.remove(taskNumber);","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"This task has been removed\\n \" + deletedTask + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"WinSheng1"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"WinSheng1"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"WinSheng1"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"The description of a todo cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"WinSheng1"},"content":" String description \u003d userInput.substring(5).trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"WinSheng1"},"content":" ToDo task \u003d new ToDo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"I\u0027ve added this task:\\n \" + task + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"WinSheng1"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"WinSheng1"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"The description/ deadline of a deadline cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"WinSheng1"},"content":" String fullStr \u003d userInput.substring(9);","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"WinSheng1"},"content":" String[] parts \u003d fullStr.split(\"/by\");","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"WinSheng1"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"WinSheng1"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"WinSheng1"},"content":" Deadline task \u003d new Deadline(description, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"WinSheng1"},"content":" if (task.dateTime !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":105,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"I\u0027ve added this task:\\n \" + task + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":106,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"WinSheng1"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"You are missing one or some of these inputs - description/ by.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":112,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"WinSheng1"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"WinSheng1"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":115,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"The description/ time of an event cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":116,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":117,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"WinSheng1"},"content":" String fullStr \u003d userInput.substring(6);","lastModifiedDate":"2023-08-25"},{"lineNumber":119,"author":{"gitId":"WinSheng1"},"content":" String[] partialStr \u003d fullStr.split(\"/from\");","lastModifiedDate":"2023-08-25"},{"lineNumber":120,"author":{"gitId":"WinSheng1"},"content":" String description \u003d partialStr[0].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"WinSheng1"},"content":" String[] toFrom \u003d partialStr[1].split(\"/to\");","lastModifiedDate":"2023-08-25"},{"lineNumber":122,"author":{"gitId":"WinSheng1"},"content":" String from \u003d toFrom[0].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"WinSheng1"},"content":" String to \u003d toFrom[1].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"WinSheng1"},"content":" Event task \u003d new Event(description, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"WinSheng1"},"content":" if (task.fromDateTime !\u003d null \u0026\u0026 task.toDateTime !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":128,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"I\u0027ve added this task:\\n \" + task + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":129,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"WinSheng1"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"WinSheng1"},"content":" throw new MissingInputException(\"You are missing one or some of these inputs - description/ from/ to.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":135,"author":{"gitId":"WinSheng1"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":136,"author":{"gitId":"WinSheng1"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":138,"author":{"gitId":"WinSheng1"},"content":" } catch (MissingInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"WinSheng1"},"content":" e.print();","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"WinSheng1"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":141,"author":{"gitId":"WinSheng1"},"content":" e.print();","lastModifiedDate":"2023-08-28"},{"lineNumber":142,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":143,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":144,"author":{"gitId":"WinSheng1"},"content":" } while (true);","lastModifiedDate":"2023-08-28"},{"lineNumber":145,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":146,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":147,"author":{"gitId":"WinSheng1"},"content":" save(tasks);","lastModifiedDate":"2023-08-28"},{"lineNumber":148,"author":{"gitId":"WinSheng1"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":149,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Error saving tasks.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":150,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":151,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":152,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Goodbye. Catch you later!\" + \"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":153,"author":{"gitId":"WinSheng1"},"content":" scanner.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":154,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":155,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"WinSheng1"},"content":" private static void save(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-08-28"},{"lineNumber":157,"author":{"gitId":"WinSheng1"},"content":" FileWriter writer \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":158,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":159,"author":{"gitId":"WinSheng1"},"content":" for (Task task: tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":160,"author":{"gitId":"WinSheng1"},"content":" String taskFileString \u003d task.toFileString();","lastModifiedDate":"2023-08-28"},{"lineNumber":161,"author":{"gitId":"WinSheng1"},"content":" writer.write(taskFileString + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":162,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":163,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":164,"author":{"gitId":"WinSheng1"},"content":" writer.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":165,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":166,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":167,"author":{"gitId":"WinSheng1"},"content":" private static ArrayList\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2023-08-28"},{"lineNumber":168,"author":{"gitId":"WinSheng1"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":169,"author":{"gitId":"WinSheng1"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":170,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":171,"author":{"gitId":"WinSheng1"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":172,"author":{"gitId":"WinSheng1"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":173,"author":{"gitId":"WinSheng1"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":174,"author":{"gitId":"WinSheng1"},"content":" FileReader reader \u003d new FileReader(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":175,"author":{"gitId":"WinSheng1"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(reader);","lastModifiedDate":"2023-08-28"},{"lineNumber":176,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":177,"author":{"gitId":"WinSheng1"},"content":" String fileLine;","lastModifiedDate":"2023-08-28"},{"lineNumber":178,"author":{"gitId":"WinSheng1"},"content":" while ((fileLine \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-28"},{"lineNumber":179,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d createTaskFromFile(fileLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":180,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":181,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":182,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":183,"author":{"gitId":"WinSheng1"},"content":" bufferedReader.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":184,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":185,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":186,"author":{"gitId":"WinSheng1"},"content":" return tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":187,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":188,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":189,"author":{"gitId":"WinSheng1"},"content":" private static Task createTaskFromFile(String fileLine) {","lastModifiedDate":"2023-08-28"},{"lineNumber":190,"author":{"gitId":"WinSheng1"},"content":" String[] parts \u003d fileLine.split(\"\\\\|\");","lastModifiedDate":"2023-08-28"},{"lineNumber":191,"author":{"gitId":"WinSheng1"},"content":" for (int i \u003d 0; i \u003c parts.length; i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":192,"author":{"gitId":"WinSheng1"},"content":" parts[i] \u003d parts[i].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":193,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":194,"author":{"gitId":"WinSheng1"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":195,"author":{"gitId":"WinSheng1"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-28"},{"lineNumber":196,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":197,"author":{"gitId":"WinSheng1"},"content":" Task task;","lastModifiedDate":"2023-08-28"},{"lineNumber":198,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":199,"author":{"gitId":"WinSheng1"},"content":" if (type.equals(\"[T]\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":200,"author":{"gitId":"WinSheng1"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":201,"author":{"gitId":"WinSheng1"},"content":" } else if (type.equals(\"[D]\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":202,"author":{"gitId":"WinSheng1"},"content":" String by \u003d parts[3];","lastModifiedDate":"2023-08-28"},{"lineNumber":203,"author":{"gitId":"WinSheng1"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-28"},{"lineNumber":204,"author":{"gitId":"WinSheng1"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":205,"author":{"gitId":"WinSheng1"},"content":" String from \u003d parts[3];","lastModifiedDate":"2023-08-28"},{"lineNumber":206,"author":{"gitId":"WinSheng1"},"content":" String to \u003d parts[4];","lastModifiedDate":"2023-08-28"},{"lineNumber":207,"author":{"gitId":"WinSheng1"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-28"},{"lineNumber":208,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":209,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":210,"author":{"gitId":"WinSheng1"},"content":" task.isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-28"},{"lineNumber":211,"author":{"gitId":"WinSheng1"},"content":" return task;","lastModifiedDate":"2023-08-28"},{"lineNumber":212,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"WinSheng1":210,"-":3}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" protected LocalDateTime fromDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":" protected LocalDateTime toDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" DateTimeFormatter formatter \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" .parseCaseInsensitive()","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" .toFormatter();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":" this.fromDateTime \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"WinSheng1"},"content":" this.toDateTime \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"WinSheng1"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"WinSheng1"},"content":" this.fromDateTime \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WinSheng1"},"content":" this.toDateTime \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Please use the following formats:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"WinSheng1"},"content":" + \"event task /from yyyy-mm-dd hhmm /to yyyy-mm-dd hhmm\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"WinSheng1"},"content":" + \"deadline task /from dd/mm/yyyy hhmm /to dd/mm/yyyy hhmm\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"WinSheng1"},"content":" + Duke.horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"WinSheng1"},"content":" public String type() {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"WinSheng1"},"content":" return \"[E]\";","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"WinSheng1"},"content":" return type() + super.toString() + \" (from: \" + fromDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mma\")) + \" to \" + toDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mma\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"WinSheng1"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"WinSheng1"},"content":" return type() + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + fromDateTime.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")) + \" | \" + toDateTime.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":47}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" public void print() {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Invalid Command.\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" + \"Below are the list of commands:\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" + \"list - displays the list of tasks\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":" + \"mark x - marks task x as done\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" + \"unmark x - marks task x as undone\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":" + \"delete x - deletes task x\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" + \"todo x - creates task with description x\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" + \"deadline x /by y - creates task with description x by deadline y\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" + \"event x /from y /to z - creates task with description x from y to z\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" + Duke.horizontalLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"WinSheng1":17}},{"path":"src/main/java/MissingInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class MissingInputException extends Exception {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":" public MissingInputException(String message) {","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" super(message);","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" public void print() {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" System.out.println(this.getMessage() + \"\\n\" + Duke.horizontalLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"WinSheng1":9}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":" protected String description;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" public abstract String type();","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" public abstract String toFileString();","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"WinSheng1"},"content":" public void updateTaskStatus(boolean expectedStatus, String doneMessage, String undoneMessage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"WinSheng1"},"content":" if (isDone \u003d\u003d expectedStatus) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"WinSheng1"},"content":" System.out.println(doneMessage + \"\\n\" + Duke.horizontalLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"WinSheng1"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"WinSheng1"},"content":" isDone \u003d expectedStatus;","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"WinSheng1"},"content":" System.out.println(undoneMessage + \"\\n\" + Duke.horizontalLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":31}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" public String type() {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":" return \"[T]\";","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" return type() + super.toString();","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":" return type() + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"todo borrow book","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"WinSheng1":4}}] diff --git a/WinSheng1_ip_master/commits.json b/WinSheng1_ip_master/commits.json index 022f004c..e0af3972 100644 --- a/WinSheng1_ip_master/commits.json +++ b/WinSheng1_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"WinSheng1":[{"date":"2023-08-23","commitResults":[{"hash":"fc84eaaa609f3ecdceb2f3eca7ab923506788849","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}}]},{"date":"2023-08-25","commitResults":[{"hash":"ac583b6c351bf71ba737c2bdf3fe97147835faeb","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}},{"hash":"04b37b60e5a5439ee669e476637ad05cc56a2937","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"e6b789bce8b3a89b02c391d297e91717c75428be","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"a0c1405ce7f808d8fca1270fc3fee1e824236294","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":30}}},{"hash":"bffe50c41a94c2dce116001b24e6d0c57b662200","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2023-08-26","commitResults":[{"hash":"b2e78aff3ce5018f810ae704e16810ce1fc75208","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"e355cdc4b600a6781ccac41adc07c2220eabffaa","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f4f76d6328e195508133446b8491d7bad13a666f","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":37}}},{"hash":"3747a2474b4538855064502209e6ffa6d8a2feed","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"1cf2649bb3f45efab4a41fe73f5ed1ae33b6f87a","isMergeCommit":false,"messageTitle":"Updated parts of code for readability","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":65}}},{"hash":"2974f5e75ef2f30694556c6ca2ce6c9f77e32965","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":10}}}]},{"date":"2023-08-30","commitResults":[{"hash":"82c7b6d79c6f5498bb9dbd01960a7d526980b70a","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"6f8f8c95df216d90946c162061d684244fedcde5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"12f15d22992a8ad4546a5868992d76c8d668a76e","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"WinSheng1":{"java":330,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":4}},"authorContributionVariance":{"WinSheng1":9148.059},"authorDisplayNameMap":{"WinSheng1":"CS2103T-W15-3 LIM ..HENG"}} +{"authorDailyContributionsMap":{"WinSheng1":[{"date":"2023-08-23","commitResults":[{"hash":"fc84eaaa609f3ecdceb2f3eca7ab923506788849","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}}]},{"date":"2023-08-25","commitResults":[{"hash":"ac583b6c351bf71ba737c2bdf3fe97147835faeb","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}},{"hash":"04b37b60e5a5439ee669e476637ad05cc56a2937","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"e6b789bce8b3a89b02c391d297e91717c75428be","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"a0c1405ce7f808d8fca1270fc3fee1e824236294","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":30}}},{"hash":"bffe50c41a94c2dce116001b24e6d0c57b662200","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2023-08-26","commitResults":[{"hash":"b2e78aff3ce5018f810ae704e16810ce1fc75208","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"e355cdc4b600a6781ccac41adc07c2220eabffaa","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f4f76d6328e195508133446b8491d7bad13a666f","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":37}}},{"hash":"3747a2474b4538855064502209e6ffa6d8a2feed","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"1cf2649bb3f45efab4a41fe73f5ed1ae33b6f87a","isMergeCommit":false,"messageTitle":"Updated parts of code for readability","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":65}}},{"hash":"2974f5e75ef2f30694556c6ca2ce6c9f77e32965","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":10}}}]},{"date":"2023-08-30","commitResults":[{"hash":"82c7b6d79c6f5498bb9dbd01960a7d526980b70a","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"6f8f8c95df216d90946c162061d684244fedcde5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"12f15d22992a8ad4546a5868992d76c8d668a76e","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"64e43c3700c6e2ffae3f73a1a78e2b91c164eeed","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":70,"deletions":21}}},{"hash":"3ca9dee05b13468b50cfc53cb2953059c8bd6c5e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"WinSheng1":{"java":379,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":7}},"authorContributionVariance":{"WinSheng1":8224.996},"authorDisplayNameMap":{"WinSheng1":"CS2103T-W15-3 LIM ..HENG"}} diff --git a/adhigop13_ip_master/authorship.json b/adhigop13_ip_master/authorship.json index af91acbd..e7ed4e50 100644 --- a/adhigop13_ip_master/authorship.json +++ b/adhigop13_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"E|0|eat|2023-12-12 11:12|2023-12-12 11:15","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"E|0|sleep|2023-12-12 11:12|2023-12-12 13:15","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"T|0|add","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"T|0|add","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"E|0|add|2100-12-12 12:12|2100-12-13 12:15","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"T|0|hello","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":6}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" private String deadlineBy;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" private LocalDateTime deadlineInDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" public Deadline(String description, String deadlineBy) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" this.deadlineBy \u003d deadlineBy;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" this.deadlineInDateTime \u003d formatDateAndTime(deadlineBy);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" public Deadline(int status, String description, String deadlineBy) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" super(description, status !\u003d 0); //if 0, return false, else return true","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" this.deadlineBy \u003d deadlineBy;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" this.deadlineInDateTime \u003d formatDateAndTime(deadlineBy);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" public String storeToDisk() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" return \"D\" + \"|\" + this.getStatus() + \"|\" + this.getDescription() + \"|\" + this.deadlineBy;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" return \"[D]\" + super.toString() + \" (by: \" + printDateTimeFormat(deadlineInDateTime) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":29}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.util.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" public static Path pathOfDirectory \u003d Paths.get(\"./data/duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" ; //enum that stores all important constants","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" ui \u003d new Ui ();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" Storage.readFromDisk(pathOfDirectory, TaskList.storeTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"An error occurred...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" ui.showGreeting();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" Scanner userInputObject \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" ui.userInputUsher();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" String userInput \u003d userInputObject.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" boolean isBreak \u003d Parser.parse(userInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" if (!isBreak) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + \"Invalid character input\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + \"Error: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + \"Invalid entry / Task not in list... Please try again...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"☹ OOPS!!! Sorry, but i do not know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" new Duke(\"/data/duke.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"-":4,"adhigop13":62}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"adhigop13":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":" private String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" private String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":" private LocalDateTime fromDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" private LocalDateTime toDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" this.fromDateTime \u003d formatDateAndTime(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" this.toDateTime \u003d formatDateAndTime(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" public Event(int status, String desciption, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" super(desciption, status !\u003d 0); //if 0, return false, else return true","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" this.fromDateTime \u003d formatDateAndTime(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" this.toDateTime \u003d formatDateAndTime(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" public String storeToDisk() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" return \"E\" + \"|\" + this.getStatus() + \"|\" + this.getDescription() + \"|\" + this.from + \"|\" + this.to;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" return \"[E]\" + super.toString() + \" (from: \" + printDateTimeFormat(this.fromDateTime) + \" to: \" + printDateTimeFormat(this.toDateTime) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":35}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.util.ListIterator;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" public enum TaskKeyVal {ToDo, Deadline, Event, Delete, mark, unmark, bye, list};","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" public static boolean parse(String userInput) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" String[] userInputList \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" String userTaskChoiceKey \u003d userInputList[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" TaskKeyVal taskKeyVal \u003d TaskKeyVal.valueOf(userTaskChoiceKey); //Stores enum value. might throw exception if invalid input entered.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" if (taskKeyVal \u003d\u003d TaskKeyVal.bye) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" userExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" } else if (taskKeyVal \u003d\u003d TaskKeyVal.list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" TaskList.userListChoice();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" } else if (taskKeyVal \u003d\u003d TaskKeyVal.mark || taskKeyVal \u003d\u003d TaskKeyVal.unmark) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" String userMarkerChoice \u003d userInputList[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" TaskList.userMarkUnmark(userMarkerChoice, userTaskChoiceKey);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" } else if (userInputList.length \u003d\u003d 1 \u0026\u0026 enumCheck(userTaskChoiceKey)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\" ☹ OOPS!!! The description of a task cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" } else if (taskKeyVal \u003d\u003d TaskKeyVal.ToDo) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" TaskList.addToDo(userInputList[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" } else if (taskKeyVal \u003d\u003d TaskKeyVal.Deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" String[] deadlineList \u003d userInputList[1].split(\"/\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" TaskList.addDeadline(deadlineList[0], deadlineList[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" } else if (taskKeyVal \u003d\u003d TaskKeyVal.Event) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" String[] eventList \u003d userInputList[1].split(\"/\", 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" TaskList.addEvent(eventList[0], eventList[1], eventList[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" } else if (taskKeyVal \u003d\u003d TaskKeyVal.Delete) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" Integer delUserChoice \u003d Integer.parseInt(userInputList[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" TaskList.deleteTask(delUserChoice);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" } else { //in case wrong inpute like Delete abc entered","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"☹ OOPS!!! Sorry, but i do not know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" public static boolean enumCheck (String input){","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" for (TaskKeyVal taskKey : TaskKeyVal.values()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" if (taskKey.name().equalsIgnoreCase(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" public static void userExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" Files.write(Duke.pathOfDirectory, new byte[0], StandardOpenOption.TRUNCATE_EXISTING); //closes file and truncates it","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" for (int i \u003d 0; i \u003c TaskList.storeTask.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" String taskToString \u003d TaskList.storeTask.get(i).storeToDisk() + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" Files.write(Duke.pathOfDirectory, taskToString.getBytes(), StandardOpenOption.APPEND);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"An error occurred...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":69}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" public static void readFromDisk(Path pathOfDirectory, ArrayList\u003cTask\u003e storeTask) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" Files.createDirectories(pathOfDirectory.getParent());","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" if (Files.exists(pathOfDirectory)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"Please wait while your file opens...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" List\u003cString\u003e fileLines \u003d Files.readAllLines(pathOfDirectory);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" for (String task : fileLines) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" String[] taskVariablesTemp \u003d task.split(\"\\\\|\"); //since \"|\" is a special character, use \"//\"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" if (taskVariablesTemp[0].equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new ToDo(Integer.parseInt(taskVariablesTemp[1]), taskVariablesTemp[2]));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" } else if (taskVariablesTemp[0].equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new Deadline(Integer.parseInt(taskVariablesTemp[1]), taskVariablesTemp[2], taskVariablesTemp[3]));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" } else if (taskVariablesTemp[0].equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new Event(Integer.parseInt(taskVariablesTemp[1]), taskVariablesTemp[2], taskVariablesTemp[3], taskVariablesTemp[4]));","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" else {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"Error...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"Your file does not exist. Creating...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" Files.createFile(pathOfDirectory);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"File created.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":33}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.util.zip.DataFormatException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" private String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" private boolean status;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" private String indent \u003d \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" public Task(String description, boolean status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" this.status \u003d status;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" public String changeStatus(String userInput) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" if (!this.status \u0026\u0026 userInput.equals(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" this.status \u003d !this.status;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" return \"Nice! Task completed successfully!\" + \"\\n\" + indent + this.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" } else if (!this.status \u0026\u0026 userInput.equals(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" return \"Task already unmarked! Please try again...\" + \"\\n\" + indent + this.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" } else if (this.status \u0026\u0026 userInput.equals(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" this.status \u003d !this.status;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" return \"Sure! Task status unchecked!\" + \"\\n\" + indent + this.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" return \"Task already unchecked. Please try again...\" + \"\\n\" + indent + this.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" public LocalDateTime formatDateAndTime(String userDateAndTime) throws DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" return LocalDateTime.parse(userDateAndTime, inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" public String printDateTimeFormat(LocalDateTime systemDateAndTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd, yyyy HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" return systemDateAndTime.format(outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" public int getStatus() {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" return this.status ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" return this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" public void storeDescription(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" public String storeToDisk() {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" return this.getStatus() + \"|\" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" if (this.getStatus() \u003d\u003d 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" return \"[\" + \"X\" + \"] \" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" return \"[\" + \" \" + \"]\" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":68}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.util.ListIterator;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" static ArrayList\u003cTask\u003e storeTask \u003d new ArrayList\u003c\u003e(1); //stores all the tasks. refer to child classes of task","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" public static void userListChoice() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" ListIterator\u003cTask\u003e ls \u003d TaskList.storeTask.listIterator();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" Ui.printList(ls);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" public static void userMarkUnmark(String taskNumber, String userMarkerChoice) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" Task taskItem \u003d TaskList.storeTask.get(Integer.parseInt(taskNumber) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + taskItem.changeStatus(userMarkerChoice));","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" public static void addToDo(String userDescription) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" TaskList.storeTask.add(new ToDo(userDescription));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" Ui.printNumberOfEntries();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" public static void addDeadline(String userDescription, String deadlineBy) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" TaskList.storeTask.add(new Deadline(userDescription, deadlineBy));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" Ui.printNumberOfEntries();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"Invalid date/time entry. Please give in yyyy-mm-dd hh:mm format...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" public static void addEvent(String userDescription, String from, String to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" TaskList.storeTask.add(new Event(userDescription, from, to));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" Ui.printNumberOfEntries();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"Invalid date/time entry. Please give in yyyy-mm-dd hh:mm format...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" public static void deleteTask(int delUserChoice) throws DukeException{","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" if ((delUserChoice - 1) \u003c 0) { //if number entered smaller than 1, array will go negative index.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"Invalid Task entered. Please try again...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" } else if (TaskList.storeTask.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"Task Scheduler is empty... Please try again!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" Task itemRemoved \u003d TaskList.storeTask.remove(delUserChoice - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + \"This task was removed...\" + \"\\n\" + itemRemoved);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + \"Now you have \" + TaskList.storeTask.size() + \" tasks in your task scheduler...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":47}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" public ToDo(int status, String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" super(description, status !\u003d 0); //if 0, return false, else return true","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" public String storeToDisk() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" return \"T\" + \"|\" + this.getStatus() + \"|\" + this.getDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":21}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"import java.util.ListIterator;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" public static String indent \u003d \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":" public static String horizontalLine \u003d \"-\".repeat(22);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" Map\u003cString, String\u003e hashMap \u003d Map.of(","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" \"endMessage\", \"Bye. Hope to see you again soon!\",","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" \"endVal\", \"bye\",","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" \"listVal\", \"list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" public void showGreeting() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" System.out.println(indent + horizontalLine); //Helps with readability","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" System.out.println(indent + \"Hello! I\u0027m Tom!\" + \"\\n\" + indent + \"What can I do for you?\" + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" System.out.println(indent + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" public void userInputUsher() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" System.out.println(indent + \"What would you like to do next? Enter date in yyyy-mm-dd hh:mm format: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" public void endDukeMsg() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"\\n\" + indent + hashMap.get(\"endMessage\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" public static void printList(ListIterator\u003cTask\u003e ls) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" int count \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"\\n\" + indent + \"Entries on memory...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" while (ls.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" count++;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" System.out.println(indent + count + \".\" + ls.next().toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" public static void printNumberOfEntries() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + \"Now you have \" + TaskList.storeTask.size() + \" tasks in your task scheduler...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" public static void printHorizontalLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" System.out.println(indent + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":41}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"task","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"ToDo play football","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"task","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"Deadline finish hw/10pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"task","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"Event attend lecture/2pm/4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":11}},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"pause","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"-":21,"adhigop13":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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":32,"adhigop13":1}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"E|0|add|2100-12-12 12:12|2100-12-13 12:15","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"D|0|hello|1212-12-12 12:12","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"D|0|add|1313-12-12 13:13","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"T|0|do this","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"D|0|add|1212-12-12 12:12","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"E|1|add|1212-12-12 12:12|1313-12-13 13:13","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":6}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import dukeUiElements.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" public TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" public static Path pathOfDirectory \u003d Paths.get(\"./data/duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" ; //enum that stores all important constants","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" ui \u003d new Ui ();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" Storage.readFromDisk(pathOfDirectory, TaskList.storeTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"An error occurred...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" ui.showGreeting();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" Scanner userInputObject \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" ui.userInputUsher();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" String userInput \u003d userInputObject.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" boolean isBreak \u003d Parser.parse(userInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" if (!isBreak) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + \"Invalid character input\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + \"Error: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + \"Invalid entry / Task not in list... Please try again...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"☹ OOPS!!! Sorry, but i do not know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" new Duke(\"/data/duke.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"-":2,"adhigop13":58}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"adhigop13":6}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import dukeUiElements.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import java.util.ListIterator;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" public enum TaskKeyVal {ToDo, Deadline, Event, Delete, mark, unmark, bye, list};","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" public static boolean parse(String userInput) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" String[] userInputList \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" String userTaskChoiceKey \u003d userInputList[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" TaskKeyVal taskKeyVal \u003d TaskKeyVal.valueOf(userTaskChoiceKey); //Stores enum value. might throw exception if invalid input entered.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" if (taskKeyVal \u003d\u003d TaskKeyVal.bye) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" userExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" } else if (taskKeyVal \u003d\u003d TaskKeyVal.list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" TaskList.userListChoice();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" } else if (taskKeyVal \u003d\u003d TaskKeyVal.mark || taskKeyVal \u003d\u003d TaskKeyVal.unmark) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" String userMarkerChoice \u003d userInputList[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" TaskList.userMarkUnmark(userMarkerChoice, userTaskChoiceKey);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" } else if (userInputList.length \u003d\u003d 1 \u0026\u0026 enumCheck(userTaskChoiceKey)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\" ☹ OOPS!!! The description of a task cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" } else if (taskKeyVal \u003d\u003d TaskKeyVal.ToDo) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" TaskList.addToDo(userInputList[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" } else if (taskKeyVal \u003d\u003d TaskKeyVal.Deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" String[] deadlineList \u003d userInputList[1].split(\"/\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" TaskList.addDeadline(deadlineList[0], deadlineList[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" } else if (taskKeyVal \u003d\u003d TaskKeyVal.Event) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" String[] eventList \u003d userInputList[1].split(\"/\", 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" TaskList.addEvent(eventList[0], eventList[1], eventList[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" } else if (taskKeyVal \u003d\u003d TaskKeyVal.Delete) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" Integer delUserChoice \u003d Integer.parseInt(userInputList[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" TaskList.deleteTask(delUserChoice);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" } else { //in case wrong input like Delete abc entered","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"☹ OOPS!!! Sorry, but i do not know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" public static boolean enumCheck (String input){","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" for (TaskKeyVal taskKey : TaskKeyVal.values()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" if (taskKey.name().equalsIgnoreCase(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" public static void userExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" Files.write(Duke.pathOfDirectory, new byte[0], StandardOpenOption.TRUNCATE_EXISTING); //closes file and truncates it","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" for (int i \u003d 0; i \u003c TaskList.storeTask.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" String taskToString \u003d TaskList.storeTask.get(i).storeToDiskFormat() + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" Files.write(Duke.pathOfDirectory, taskToString.getBytes(), StandardOpenOption.APPEND);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" Ui.endDukeMsg();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"An error occurred...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":72}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" public static void readFromDisk(Path pathOfDirectory, ArrayList\u003cTask\u003e storeTask) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" Files.createDirectories(pathOfDirectory.getParent());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" if (Files.exists(pathOfDirectory)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"Please wait while your file opens...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" List\u003cString\u003e fileLines \u003d Files.readAllLines(pathOfDirectory);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" for (String task : fileLines) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" String[] taskVariablesTemp \u003d task.split(\"\\\\|\"); //since \"|\" is a special character, use \"//\"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" if (taskVariablesTemp[0].equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new ToDo(Integer.parseInt(taskVariablesTemp[1]), taskVariablesTemp[2]));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" } else if (taskVariablesTemp[0].equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new Deadline(Integer.parseInt(taskVariablesTemp[1]), taskVariablesTemp[2], taskVariablesTemp[3]));","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" } else if (taskVariablesTemp[0].equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new Event(Integer.parseInt(taskVariablesTemp[1]), taskVariablesTemp[2], taskVariablesTemp[3], taskVariablesTemp[4]));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" else {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"Error...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"Your file does not exist. Creating...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" Files.createFile(pathOfDirectory);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"File created.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":38}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import dukeUiElements.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"import java.util.ListIterator;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" public static ArrayList\u003cTask\u003e storeTask \u003d new ArrayList\u003c\u003e(1); //stores all the tasks. refer to child classes of task","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" public static void userListChoice() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" ListIterator\u003cTask\u003e ls \u003d storeTask.listIterator();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" Ui.printList(ls);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" public static void userMarkUnmark(String taskNumber, String userMarkerChoice) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" Task taskItem \u003d storeTask.get(Integer.parseInt(taskNumber) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + taskItem.changeStatus(userMarkerChoice));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" public static void addToDo(String userDescription) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new ToDo(userDescription));","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" Ui.printNumberOfEntries();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" public static void addDeadline(String userDescription, String deadlineBy) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new Deadline(userDescription, deadlineBy));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" Ui.printNumberOfEntries();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" Ui.invalidDateTimeEntry();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" public static void addEvent(String userDescription, String from, String to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new Event(userDescription, from, to));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" Ui.printNumberOfEntries();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" Ui.invalidDateTimeEntry();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" public static void deleteTask(int delUserChoice) throws DukeException{","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" if ((delUserChoice - 1) \u003c 0) { //if number entered smaller than 1, array will go negative index.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"Invalid Task entered. Please try again...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" } else if (storeTask.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"Task Scheduler is empty... Please try again!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" Task itemRemoved \u003d storeTask.remove(delUserChoice - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + \"This task was removed...\" + \"\\n\" + itemRemoved);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + \"Now you have \" + storeTask.size() + \" tasks in your task scheduler...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":53}},{"path":"src/main/java/dukeUiElements/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package dukeUiElements;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import java.util.ListIterator;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" public static String indent \u003d \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" public static String horizontalLine \u003d \"-\".repeat(22);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" static Map\u003cString, String\u003e hashMap \u003d Map.of(","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" \"endMessage\", \"Bye. Hope to see you again soon!\",","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" \"endVal\", \"bye\",","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" \"listVal\", \"list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" public void showGreeting() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" System.out.println(indent + horizontalLine); //Helps with readability","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" System.out.println(indent + \"Hello! I\u0027m Tom!\" + \"\\n\" + indent + \"What can I do for you?\" + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" System.out.println(indent + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" public void userInputUsher() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" System.out.println(indent + \"What would you like to do next? Enter date in yyyy-mm-dd hh:mm format: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" public static void endDukeMsg() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"\\n\" + indent + hashMap.get(\"endMessage\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" public static void printList(ListIterator\u003cTask\u003e ls) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" int count \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"\\n\" + indent + \"Entries on memory...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" while (ls.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" count++;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" System.out.println(indent + count + \".\" + ls.next().toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" public static void printNumberOfEntries() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" System.out.println(Ui.indent + \"Now you have \" + TaskList.storeTask.size() + \" tasks in your task scheduler...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" public static void printHorizontalLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" System.out.println(indent + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" public static void invalidDateTimeEntry() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" System.out.println(\"Invalid date/time entry. Please give in yyyy-mm-dd hh:mm format...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":53}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" private String deadlineBy;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":" private LocalDateTime deadlineInDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" public Deadline(String description, String deadlineBy) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" this.deadlineBy \u003d deadlineBy;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" this.deadlineInDateTime \u003d formatDateAndTime(deadlineBy);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" public Deadline(int status, String description, String deadlineBy) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" super(description, status !\u003d 0); //if 0, return false, else return true","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" this.deadlineBy \u003d deadlineBy;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" this.deadlineInDateTime \u003d formatDateAndTime(deadlineBy);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" public String storeToDiskFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" return \"D\" + \"|\" + this.getStatus() + \"|\" + this.getDescription() + \"|\" + this.deadlineBy;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" return \"[D]\" + super.toString() + \" (by: \" + printDateTimeFormat(deadlineInDateTime) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":30}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" private String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" private String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" private LocalDateTime fromDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" private LocalDateTime toDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" this.fromDateTime \u003d formatDateAndTime(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" this.toDateTime \u003d formatDateAndTime(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" public Event(int status, String desciption, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" super(desciption, status !\u003d 0); //if 0, return false, else return true","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" this.fromDateTime \u003d formatDateAndTime(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" this.toDateTime \u003d formatDateAndTime(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" public String storeToDiskFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" return \"E\" + \"|\" + this.getStatus() + \"|\" + this.getDescription() + \"|\" + this.from + \"|\" + this.to;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" return \"[E]\" + super.toString() + \" (from: \" + printDateTimeFormat(this.fromDateTime) + \" to: \" + printDateTimeFormat(this.toDateTime) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":36}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.util.zip.DataFormatException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" private String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" private boolean status;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" private String indent \u003d \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" public Task(String description, boolean status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" this.status \u003d status;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" public String changeStatus(String userInput) {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" if (!this.status \u0026\u0026 userInput.equals(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" this.status \u003d !this.status;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" return \"Nice! Task completed successfully!\" + \"\\n\" + indent + this.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" } else if (!this.status \u0026\u0026 userInput.equals(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" return \"Task already unmarked! Please try again...\" + \"\\n\" + indent + this.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" } else if (this.status \u0026\u0026 userInput.equals(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" this.status \u003d !this.status;","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" return \"Sure! Task status unchecked!\" + \"\\n\" + indent + this.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" return \"Task already unchecked. Please try again...\" + \"\\n\" + indent + this.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" public LocalDateTime formatDateAndTime(String userDateAndTime) throws DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" return LocalDateTime.parse(userDateAndTime, inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" public String printDateTimeFormat(LocalDateTime systemDateAndTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd, yyyy HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" return systemDateAndTime.format(outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" public int getStatus() {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" return this.status ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" return this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" public void storeDescription(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" public String storeToDiskFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" return this.getStatus() + \"|\" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" if (this.getStatus() \u003d\u003d 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" return \"[\" + \"X\" + \"] \" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" return \"[\" + \" \" + \"]\" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":69}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" public ToDo(int status, String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" super(description, status !\u003d 0); //if 0, return false, else return true","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" public String storeToDiskFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" return \"T\" + \"|\" + this.getStatus() + \"|\" + this.getDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":22}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" public void invalidInputKeywordTester() throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" assertEquals(true, Parser.parse(\"Dont do this\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" assertEquals(\"No enum constant duke.Parser.TaskKeyVal.Dont\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" public void noUserDirectedInput() throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" assertEquals(true, Parser.parse(\"Delete\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" assertEquals(\" ☹ OOPS!!! The description of a task cannot be empty.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":24}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" public void invalidDeleteCharacterInput() throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" TaskList.deleteTask(-1231);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" assertEquals(\"Invalid Task entered. Please try again...\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"task","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"ToDo play football","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"task","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"Deadline finish hw/10pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"task","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"Event attend lecture/2pm/4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":11}},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"pause","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"-":21,"adhigop13":1}}] diff --git a/adhigop13_ip_master/commits.json b/adhigop13_ip_master/commits.json index 28ddfbd3..ad360c99 100644 --- a/adhigop13_ip_master/commits.json +++ b/adhigop13_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"adhigop13":[{"date":"2023-08-23","commitResults":[{"hash":"4eba4895c47beab03bd32421794a1ce91c14992a","isMergeCommit":false,"messageTitle":"Completed Level 0 skeletal version.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"804e070822564e664b1cf78bae26f8806125e76d","isMergeCommit":false,"messageTitle":"Added echo function lvl1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":1}}},{"hash":"ecba968165dbbb2b26574969c1174f7c977863f3","isMergeCommit":false,"messageTitle":"Added memory and indentation, lvl-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":7}}},{"hash":"fe9ebb1091452a1eb6ea989c6f2e52e25e47b11e","isMergeCommit":false,"messageTitle":"Created new Task class to encapsulate \"Task\" functionality. Implemented mark and unmark functions.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":5}}},{"hash":"2f02b70a6c847e08dd2e6a7b96ebb316430b8392","isMergeCommit":false,"messageTitle":"Added new files for encapsulating different tasks. Lvl-4 update","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":16}}},{"hash":"993fef39e2e09251465874d7c7cda7c1c8f488f7","isMergeCommit":false,"messageTitle":"Significant changes made to code structure in the child classes so that input will be taken as one. (eg todo swim). Removes necessity for multiple scanners and passes testcases.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":21,"deletions":42},"bat":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0806bd6387958c01016520495a852bcfe4ff0cab","isMergeCommit":false,"messageTitle":"Added DukeException class, Lvl 5 completed","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":50}}},{"hash":"d0ce9dfd1841d70cc4dbbc9efc81f46af96d1325","isMergeCommit":false,"messageTitle":"Added Delete function, more exceptions to handle errors. Level 6 update","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":29}}},{"hash":"0ce33f48be60bdfb05f9c0ccaacd770161e9538b","isMergeCommit":false,"messageTitle":"Replaced old list implementation with enum. Changes in code related to this. Added comments to ensure better code readability...","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":15}}}]},{"date":"2023-08-31","commitResults":[{"hash":"5c04e623215ebaa2bbed0dce6f732e030defc9f7","isMergeCommit":false,"messageTitle":"Add duke.txt and save function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":170,"deletions":79}}},{"hash":"4411ca7517a08d3df55c9513606a2a3a499f5652","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"975d42e4481f59302a9581c6df03908c1343c726","isMergeCommit":false,"messageTitle":"Add LocalDateTime storage lvl8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":140,"deletions":102}}},{"hash":"442740cb9cb1ad63d30b4e34786823d0273261ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"5466d935027d686e91819cbbb6bf756d53169290","isMergeCommit":false,"messageTitle":"Add more OOP, create new classes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":212,"deletions":115}}},{"hash":"158d6be223022b36b91b388badbd1729efd87c2c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"adhigop13":{"java":410,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":17}},"authorContributionVariance":{"adhigop13":25382.463},"authorDisplayNameMap":{"adhigop13":"CS2103T-W11-4 ADHI..HNAN"}} +{"authorDailyContributionsMap":{"adhigop13":[{"date":"2023-08-23","commitResults":[{"hash":"4eba4895c47beab03bd32421794a1ce91c14992a","isMergeCommit":false,"messageTitle":"Completed Level 0 skeletal version.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"804e070822564e664b1cf78bae26f8806125e76d","isMergeCommit":false,"messageTitle":"Added echo function lvl1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":1}}},{"hash":"ecba968165dbbb2b26574969c1174f7c977863f3","isMergeCommit":false,"messageTitle":"Added memory and indentation, lvl-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":7}}},{"hash":"fe9ebb1091452a1eb6ea989c6f2e52e25e47b11e","isMergeCommit":false,"messageTitle":"Created new Task class to encapsulate \"Task\" functionality. Implemented mark and unmark functions.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":5}}},{"hash":"2f02b70a6c847e08dd2e6a7b96ebb316430b8392","isMergeCommit":false,"messageTitle":"Added new files for encapsulating different tasks. Lvl-4 update","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":16}}},{"hash":"993fef39e2e09251465874d7c7cda7c1c8f488f7","isMergeCommit":false,"messageTitle":"Significant changes made to code structure in the child classes so that input will be taken as one. (eg todo swim). Removes necessity for multiple scanners and passes testcases.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":21,"deletions":42},"bat":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0806bd6387958c01016520495a852bcfe4ff0cab","isMergeCommit":false,"messageTitle":"Added DukeException class, Lvl 5 completed","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":50}}},{"hash":"d0ce9dfd1841d70cc4dbbc9efc81f46af96d1325","isMergeCommit":false,"messageTitle":"Added Delete function, more exceptions to handle errors. Level 6 update","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":29}}},{"hash":"0ce33f48be60bdfb05f9c0ccaacd770161e9538b","isMergeCommit":false,"messageTitle":"Replaced old list implementation with enum. Changes in code related to this. Added comments to ensure better code readability...","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":15}}}]},{"date":"2023-08-31","commitResults":[{"hash":"5c04e623215ebaa2bbed0dce6f732e030defc9f7","isMergeCommit":false,"messageTitle":"Add duke.txt and save function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":170,"deletions":79}}},{"hash":"4411ca7517a08d3df55c9513606a2a3a499f5652","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"975d42e4481f59302a9581c6df03908c1343c726","isMergeCommit":false,"messageTitle":"Add LocalDateTime storage lvl8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":140,"deletions":102}}},{"hash":"442740cb9cb1ad63d30b4e34786823d0273261ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"5466d935027d686e91819cbbb6bf756d53169290","isMergeCommit":false,"messageTitle":"Add more OOP, create new classes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":212,"deletions":115}}},{"hash":"158d6be223022b36b91b388badbd1729efd87c2c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"6c656eac615546f412febe05a71e8fea19db57c2","isMergeCommit":false,"messageTitle":"Create packages : A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":4},"java":{"insertions":55,"deletions":29}}},{"hash":"298987ca6fc8b67d78fc06d3229e4908a56de98d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4d922d57e5d153c91bb960124748b72f3ae906e1","isMergeCommit":false,"messageTitle":"Add build.gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":2},"java":{"insertions":1,"deletions":2}}},{"hash":"fb36bda6ad1a215ab41861c7d60690df8a2d7559","isMergeCommit":false,"messageTitle":"Add JUnit Tests for Parser and TaskList","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":9},"java":{"insertions":44,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"adhigop13":{"java":480,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":17}},"authorContributionVariance":{"adhigop13":31900.729},"authorDisplayNameMap":{"adhigop13":"CS2103T-W11-4 ADHI..HNAN"}} diff --git a/aliciamichellew_ip_master/authorship.json b/aliciamichellew_ip_master/authorship.json index 172e76c2..0f685fd3 100644 --- a/aliciamichellew_ip_master/authorship.json +++ b/aliciamichellew_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"# kevin.Kevin project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":"3. After that, locate the `src/main/java/kevin.Kevin.java` file, right-click it, and choose `Run kevin.Kevin.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":22,"aliciamichellew":2}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" mainClass.set(\"kevin.Kevin\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" archiveBaseName \u003d \"kevin\"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":40,"aliciamichellew":2}},{"path":"data/kevin.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"Todo - true - borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"Deadline - false - return book - 2019-12-02T18:00","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"Deadline - false - return book - 2019-12-02T20:00","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"Todo - false - borrow book","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"aliciamichellew":4}},{"path":"src/main/java/kevin/Kevin.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.evaluator.Evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.parser.FileParser;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.parser.QueryObject;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":"public class Kevin {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" Logger logger \u003d new Logger();","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" FileParser fileParser \u003d new FileParser();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" FileStorage fileStorage \u003d new FileStorage();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" Evaluator evaluator \u003d new Evaluator(logger, fileStorage, taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" logger.hello();","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.initialize();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" ArrayList\u003cString\u003e unparsedTasks \u003d fileStorage.getTasksFromFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" for (String s : unparsedTasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" evaluator.evaluate(fileParser.parseLine(s), true);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" } catch (KevinException ke) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" logger.log(ke.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" while (true) {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" QueryObject queryObject \u003d parser.prepareArguments(scanner.nextLine());","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" if (!evaluator.evaluate(queryObject, false)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" } catch (KevinException ke) {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" logger.log(ke.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" logger.bye();","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":53}},{"path":"src/main/java/kevin/evaluator/BaseStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"public abstract class BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" protected TaskList taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" protected ArrayList\u003cString\u003e arguments;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" public BaseStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" return false;","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":22}},{"path":"src/main/java/kevin/evaluator/ByeStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"public class ByeStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" public ByeStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":10}},{"path":"src/main/java/kevin/evaluator/DeadlineStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"public class DeadlineStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" DeadlineStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" Boolean isDone \u003d Boolean.getBoolean(this.arguments.get(0));","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" String name \u003d this.arguments.get(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" String deadline \u003d this.arguments.get(2);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" if (!isInFile) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" LocalDateTime deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" deadlineDate \u003d LocalDateTime.parse(deadline, DateTimeFormatter.ofPattern(\" d/MM/yyyy HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" } catch (DateTimeParseException err) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Ensure that the deadline is a valid date\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" Deadline newDeadline \u003d taskList.addDeadline(isDone, name, deadlineDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.addDeadline(newDeadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" logger.log(\"Got it. I\u0027ve added this task: \\n\\t\\t\" + newDeadline +","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" \"\\n\\tNow you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" LocalDateTime deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" deadlineDate \u003d LocalDateTime.parse(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" } catch (DateTimeParseException err) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Ensure that the deadline is a valid date\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" Deadline newDeadline \u003d taskList.addDeadline(isDone, name, deadlineDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":49}},{"path":"src/main/java/kevin/evaluator/DeleteStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"public class DeleteStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" public DeleteStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" int index \u003d Integer.parseInt(this.arguments.get(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" Task deletedTask \u003d this.taskList.delete(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" if (!isInFile) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.deleteTask(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" logger.log(\"Noted. I\u0027ve removed this task: \\n\\t\\t\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" deletedTask +","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" \"\\n\\tNow you have \" + this.taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":31}},{"path":"src/main/java/kevin/evaluator/Evaluator.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.parser.Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.parser.QueryObject;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":"@FunctionalInterface","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"interface FiveParameterFunction\u003cT, U, V, W, X, R\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" R apply(T t, U u, V v, W w, X x) throws KevinException;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"public class Evaluator {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" private Logger logger;","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" private FileStorage fileStorage;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" private static HashMap\u003cCommands, FiveParameterFunction\u003cTaskList, ArrayList\u003cString\u003e, Logger, FileStorage, Boolean, Boolean\u003e\u003e MAPPER \u003d","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" new HashMap\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" static","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Commands.BYE, (t, a, l, f, i) -\u003e new ByeStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Commands.LIST, (t, a, l, f, i) -\u003e new ListStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Commands.MARK, (t, a, l, f, i) -\u003e new MarkStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Commands.UNMARK, (t, a, l, f, i) -\u003e new UnmarkStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Commands.TODO, (t, a, l, f, i) -\u003e new ToDoStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Commands.EVENT, (t, a, l, f, i) -\u003e new EventStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Commands.DEADLINE, (t, a, l, f, i) -\u003e new DeadlineStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Commands.DELETE, (t, a, l, f, i) -\u003e new DeleteStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" public Evaluator(Logger logger, FileStorage fileStorage, TaskList taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" this.logger \u003d logger;","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" this.fileStorage \u003d fileStorage;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(QueryObject queryObject, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" Commands command \u003d queryObject.getCommandType();","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" ArrayList\u003cString\u003e arguments \u003d queryObject.getArgs();","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" return MAPPER.get(command).apply(taskList, arguments, logger, fileStorage, isInFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":48}},{"path":"src/main/java/kevin/evaluator/EventStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"public class EventStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" EventStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" Boolean isDone \u003d Boolean.getBoolean(this.arguments.get(0));","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" String name \u003d this.arguments.get(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" String startTime \u003d this.arguments.get(2);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" String endTime \u003d this.arguments.get(3);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" Event newEvent \u003d taskList.addEvent(isDone, name, startTime, endTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" if (!isInFile) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.addEvent(newEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" logger.log(\"Got it. I\u0027ve added this task: \\n\\t\\t\" + newEvent +","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" \"\\n\\tNow you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":34}},{"path":"src/main/java/kevin/evaluator/ListStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"public class ListStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" public ListStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" logger.log(taskList.list());","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":20}},{"path":"src/main/java/kevin/evaluator/MarkStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"public class MarkStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" public MarkStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" int index \u003d Integer.parseInt(this.arguments.get(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" Task newTask \u003d this.taskList.mark(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" if (!isInFile) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.overwriteTask(newTask, index);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" logger.log(\"Nice! I\u0027ve marked this task as done: \\n\\t\\t\" + newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":28}},{"path":"src/main/java/kevin/evaluator/ToDoStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"public class ToDoStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" public ToDoStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" Boolean isDone \u003d Boolean.getBoolean(this.arguments.get(0));","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" String toDoName \u003d this.arguments.get(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" ToDo newToDo \u003d taskList.addToDo(isDone, toDoName);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" if (!isInFile) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.addToDo(newToDo);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" logger.log(\"Got it. I\u0027ve added this task: \\n\\t\\t\" + newToDo +","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" \"\\n\\tNow you have \" + this.taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":31}},{"path":"src/main/java/kevin/evaluator/UnmarkStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"public class UnmarkStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" public UnmarkStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" int index \u003d Integer.parseInt(this.arguments.get(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" Task newTask \u003d this.taskList.unmark(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" if (!isInFile) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.overwriteTask(newTask, index);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" logger.log(\"OK, I\u0027ve marked this task as not done yet: \\n\\t\\t\" + newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":29}},{"path":"src/main/java/kevin/exception/KevinException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"public class KevinException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":" public KevinException(String errorMessage) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" return \"☹ OOPS!!! \" + super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aliciamichellew":12}},{"path":"src/main/java/kevin/parser/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"public enum Commands {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":" BYE,","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":" LIST,","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":" MARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" UNMARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" TODO,","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" EVENT,","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" DEADLINE,","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" DELETE","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":12}},{"path":"src/main/java/kevin/parser/FileParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"public class FileParser {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" public QueryObject parseLine(String input) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" String[] querySplit \u003d input.trim().split(\" - \", 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Command is not found.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" Commands command;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" ArrayList\u003cString\u003e args \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" command \u003d Commands.valueOf(querySplit[0].toUpperCase());","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" isDone \u003d Boolean.parseBoolean(querySplit[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" args.add(String.valueOf(isDone));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" } catch (IllegalArgumentException err) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Command is invalid.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" if (command \u003d\u003d Commands.TODO) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length !\u003d 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Todo command needs to follow \\\"Todo - {isDone} - {todo name}.\\\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" args.add(querySplit[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Commands.DEADLINE) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentSplit \u003d querySplit[2].split(\" - \");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" if (argumentSplit.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Deadline command needs to follow \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" \"\\\"Deadline - {isDone} - {deadline name} - {deadline date}\\\".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentSplit[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentSplit[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Commands.EVENT) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentGetName \u003d querySplit[2].split(\" - \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" if (argumentGetName.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Event command needs to follow \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" \"\\\"Event - {isDone} - {deadline name} - {event start time} - {event end time}\\\".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentGetDate \u003d argumentGetName[2].split(\" - \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" if (argumentGetDate.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Event command needs to follow \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" \"\\\"Event - {isDone} -{deadline name} - {event start time} - {event end time}\\\".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentGetName[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentGetDate[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentGetDate[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":" return new QueryObject(command, args);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"aliciamichellew":57}},{"path":"src/main/java/kevin/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"public class Parser {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" public QueryObject prepareArguments(String userInput) throws KevinException {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" String[] querySplit \u003d userInput.trim().split(\" \", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length \u003d\u003d 0) {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Please input a command.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" Commands command;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" ArrayList\u003cString\u003e args \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" args.add(String.valueOf(isDone));","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" command \u003d Commands.valueOf(querySplit[0].toUpperCase());","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" } catch (IllegalArgumentException err) {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Command is invalid.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" if (command \u003d\u003d Commands.BYE || command \u003d\u003d Commands.LIST) {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length \u003e 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(command.name() + \" command does not take any input.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Commands.MARK || command \u003d\u003d Commands.UNMARK || command \u003d\u003d Commands.DELETE) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(command.name() + \" command needs to take one input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentSplit \u003d querySplit[1].split(\" \");","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" if (argumentSplit.length \u003e 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(command.name() + \" command only takes one input.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" Integer.parseInt(argumentSplit[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" } catch (NumberFormatException err) {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(command.name() + \" input must be an integer.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentSplit[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Commands.TODO) {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length !\u003d 2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Todo command needs to follow \\\"todo {todo name}.\\\"\");","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" args.add(querySplit[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Commands.DEADLINE) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentSplit \u003d querySplit[1].split(\" /by\");","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" if (argumentSplit.length !\u003d 2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Deadline command needs to follow \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" \"\\\"deadline {deadline name} /by {deadline date}\\\".\");","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentSplit[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentSplit[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Commands.EVENT) {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentGetName \u003d querySplit[1].split(\" /from\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"aliciamichellew"},"content":" if (argumentGetName.length !\u003d 2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Event command needs to follow \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"aliciamichellew"},"content":" \"\\\"event {deadline name} /from {event start time} /to {event end time}\\\".\");","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentGetDate \u003d argumentGetName[1].split(\" /to\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"aliciamichellew"},"content":" if (argumentGetDate.length !\u003d 2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Event command needs to follow \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"aliciamichellew"},"content":" \"\\\"event {deadline name} /from {event start time} /to {event end time}\\\".\");","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentGetName[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentGetDate[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentGetDate[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"aliciamichellew"},"content":" return new QueryObject(command, args);","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":73}},{"path":"src/main/java/kevin/parser/QueryObject.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"public class QueryObject {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":" private final Commands commandType;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" private final ArrayList\u003cString\u003e args;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" public QueryObject(Commands commandType, ArrayList\u003cString\u003e args) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" this.args \u003d args;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" public Commands getCommandType() {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" return commandType;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" public ArrayList\u003cString\u003e getArgs() {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" return args;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" StringBuilder result \u003d new StringBuilder(this.commandType.name());","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" for (int i \u003d 0; i \u003c args.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" result.append(args.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" return result.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":30}},{"path":"src/main/java/kevin/storage/FileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"public class FileStorage {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" public static final String FILE_LOCATION \u003d \"./data/kevin.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" public FileStorage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" public void initialize() throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" storage.createFile(FILE_LOCATION);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" public void addToDo(ToDo newToDo) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" storage.appendFile(FILE_LOCATION, newToDo.toText());","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" public void addEvent(Event newEvent) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" storage.appendFile(FILE_LOCATION, newEvent.toText());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" public void overwriteTask(Task newTask, int index) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" storage.overwriteLine(FILE_LOCATION, newTask.toText(), index);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" public void deleteTask(int index) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" storage.overwriteLine(FILE_LOCATION, \"\", index);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" public void addDeadline(Deadline newDeadline) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" storage.appendFile(FILE_LOCATION, newDeadline.toText());","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" public ArrayList\u003cString\u003e makeStringToList(String tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" String[] tasksSplit \u003d tasks.split(System.lineSeparator());","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(tasksSplit));","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" public ArrayList\u003cString\u003e getTasksFromFile() throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" String fileContent \u003d storage.readFile(FILE_LOCATION);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" return makeStringToList(fileContent);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"aliciamichellew":53}},{"path":"src/main/java/kevin/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" public static final String FILE_FOLDER_NAME \u003d \"data\";","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" public void createFile(String fileLocation) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" File fileFolder \u003d new File(FILE_FOLDER_NAME);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" if (!fileFolder.isDirectory()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" fileFolder.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" File dataFile \u003d new File(fileLocation);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" if (!dataFile.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" dataFile.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception err) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Fail to make new file: \" + err.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" public void appendFile(String fileLocation, String text) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" FileWriter fileWriter \u003d new FileWriter(fileLocation, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" fileWriter.write(text);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" } catch (java.io.IOException err) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Fail to append text to file: \" + err.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" public void overwriteLine(String fileLocation, String text, int index) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" Scanner sc \u003d new Scanner(new File(fileLocation));","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" StringBuffer buffer \u003d new StringBuffer();","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" String toBeReplaced \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" for (int i \u003d 0; i \u003c index; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" toBeReplaced \u003d sc.nextLine() + System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" buffer.append(toBeReplaced);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" buffer.append(sc.nextLine() + System.lineSeparator());","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":" String fileContents \u003d buffer.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":" sc.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":" fileContents \u003d fileContents.replaceAll(toBeReplaced, text);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":" FileWriter writer \u003d new FileWriter(fileLocation);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"aliciamichellew"},"content":" writer.append(fileContents);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"aliciamichellew"},"content":" writer.flush();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"aliciamichellew"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"aliciamichellew"},"content":" public String readFile(String fileLocation) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"aliciamichellew"},"content":" String data \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"aliciamichellew"},"content":" data \u003d new String(Files.readAllBytes(Paths.get(fileLocation)));","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"aliciamichellew"},"content":" return data;","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception err) {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Fail to read text to file: \" + err.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"aliciamichellew":73}},{"path":"src/main/java/kevin/taskList/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" private final LocalDateTime deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" public Deadline(Boolean isDone, String name, LocalDateTime deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" super(isDone, name);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" public String changeDeadlineFormat(LocalDateTime deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" return deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" public String toText() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" return \"Deadline - \" + isDone + \" - \" + name + \" - \" + deadline + System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" return \"[D]\" + super.toString() + \" (by:\" + changeDeadlineFormat(deadline) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":26}},{"path":"src/main/java/kevin/taskList/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":" private final String startTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":" private final String endTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" public Event(Boolean isDone, String name, String startTime, String endTime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" super(isDone, name);","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" public String toText() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" return \"Event - \" + isDone + \" - \" + name + \" -\" + startTime + \" -\" + endTime + System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" return \"[E]\" + super.toString() + \" (from:\" + this.startTime + \" to:\" + this.endTime + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":21}},{"path":"src/main/java/kevin/taskList/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":" protected final String name;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" public Task(Boolean isDone, String name) {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" public void setIsDone(boolean isDone) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" public void mark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" this.setIsDone(true);","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" public void unmark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" this.setIsDone(false);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" public String isDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" return this.isDone ? \"X\" : \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" public String toText() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" return \"Task - \" + isDone + \" - \" + name + System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" return \"[\" + this.isDone() + \"] \" + this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":36}},{"path":"src/main/java/kevin/taskList/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" public TaskList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" this.taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" public ToDo addToDo(Boolean isDone, String name) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" ToDo newToDo \u003d new ToDo(isDone, name);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" this.taskList.add(newToDo);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" return newToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" public Event addEvent(Boolean isDone, String name, String startTime, String endTime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" Event newEvent \u003d new Event(isDone, name, startTime, endTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" this.taskList.add(newEvent);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" return newEvent;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" public Deadline addDeadline(Boolean isDone, String name, LocalDateTime deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" Deadline newDeadline \u003d new Deadline(isDone, name, deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" this.taskList.add(newDeadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" return newDeadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" public String list() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" StringBuilder listOutput \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" listOutput.append(\"Here are the tasks in your list: \");","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" listOutput.append(\"\\n\\t\").","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" append((i + 1)).","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" append(\".\").","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" append(this.taskList.get(i));","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" return listOutput.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" public Task mark(int toDoIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" this.taskList.get(toDoIndex - 1).mark();","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" return this.taskList.get(toDoIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" public Task unmark(int toDoIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" this.taskList.get(toDoIndex - 1).unmark();","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" return this.taskList.get(toDoIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":" public Task delete(int deleteIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":" Task deletedTask \u003d this.taskList.get(deleteIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"aliciamichellew"},"content":" this.taskList.remove(deleteIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"aliciamichellew"},"content":" return deletedTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"aliciamichellew"},"content":" public int size() {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"aliciamichellew"},"content":" return this.taskList.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"aliciamichellew"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"aliciamichellew"},"content":" System.out.println(this.taskList);","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"aliciamichellew"},"content":" return this.taskList.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":70}},{"path":"src/main/java/kevin/taskList/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":" public ToDo(Boolean isDone, String name) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":" super(isDone, name);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" public String toText() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" return \"Todo - \" + isDone + \" - \" + name + System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":16}},{"path":"src/main/java/kevin/ui/Logger.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"public class Logger {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":" public void log(String str) {","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":" System.out.println(\"\\t\" + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":" System.out.println(\"\\t\" + str);","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" System.out.println(\"\\t\" + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" public static final String HORIZONTAL_LINE \u003d \"_\".repeat(70);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" public static final String BOT_NAME \u003d \"\\t \\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" \"\\t\" + \" _ __ _____ _ _ _____ _ _ \\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" \"\\t\" +\"| | / /| ___| | | |_ _| \\\\ | |\\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" \"\\t\" +\"| |/ / | |__ | | | | | | | \\\\| |\\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" \"\\t\" +\"| \\\\ | __|| | | | | | | . ` |\\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" \"\\t\" +\"| |\\\\ \\\\| |___\\\\ \\\\_/ /_| |_| |\\\\ |\\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" \"\\t\" +\"\\\\_| \\\\_/\\\\____/ \\\\___/ \\\\___/\\\\_| \\\\_/\\n\";","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" public void hello() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" String welcomeMessage \u003d \"Hello! I\u0027m\" + BOT_NAME + \"\\n\\t\" + \"What can I do for you?\";","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" this.log(welcomeMessage);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" public void bye() {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" String goodbyeMessage \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" this.log(goodbyeMessage);","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aliciamichellew":29}},{"path":"src/test/java/kevin/parser/FileParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"public class FileParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" public void parseLine_invalidCommand_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"invalidCommand\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" FileParser fileParser \u003d new FileParser();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" fileParser.parseLine(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" public void parseLine_invalidToDoInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"Todo - \";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" FileParser fileParser \u003d new FileParser();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" fileParser.parseLine(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" public void parseLine_invalidDeadlineInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"Deadline - cs2103 - today\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" FileParser fileParser \u003d new FileParser();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" fileParser.parseLine(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" public void parseLine_invalidEventInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"Event - lecture - 2pm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" FileParser fileParser \u003d new FileParser();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" fileParser.parseLine(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"aliciamichellew":52}},{"path":"src/test/java/kevin/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" public void prepareArguments_invalidCommand_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"invalidCommand\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" parser.prepareArguments(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" public void prepareArguments_invalidToDoInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"todo \";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" parser.prepareArguments(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" public void prepareArguments_invalidDeadlineInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"deadline cs2103 by today\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" parser.prepareArguments(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" public void prepareArguments_invalidEventInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"event lecture /from 2pm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" parser.prepareArguments(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"aliciamichellew":52}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aliciamichellew":10}},{"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":"aliciamichellew"},"content":"java -classpath ..\\bin kevin.Kevin \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"-":20,"aliciamichellew":1}},{"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":"aliciamichellew"},"content":"java -classpath ../bin Kevin \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":{"-":37,"aliciamichellew":1}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"# kevin.Kevin project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":"3. After that, locate the `src/main/java/kevin.Kevin.java` file, right-click it, and choose `Run kevin.Kevin.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":22,"aliciamichellew":2}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" mainClass.set(\"kevin.Kevin\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" archiveBaseName \u003d \"kevin\"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":40,"aliciamichellew":2}},{"path":"data/kevin.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"Todo - true - borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"Deadline - false - return book - 2019-12-02T18:00","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"Deadline - false - return book - 2019-12-02T20:00","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"Todo - false - add","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"Event - false - lecture - 4 pm - 6 pm","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aliciamichellew":5}},{"path":"src/main/java/kevin/Kevin.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.evaluator.Evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.parser.FileParser;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.parser.QueryObject;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" * Kevin class, a task list chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"public class Kevin {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" Logger logger \u003d new Logger();","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" FileParser fileParser \u003d new FileParser();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" FileStorage fileStorage \u003d new FileStorage();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" Evaluator evaluator \u003d new Evaluator(logger, fileStorage, taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" logger.hello();","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.initialize();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" ArrayList\u003cString\u003e unparsedTasks \u003d fileStorage.getTasksFromFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" for (String s : unparsedTasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" evaluator.evaluate(fileParser.parseLine(s), true);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" } catch (KevinException ke) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" logger.log(ke.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" while (true) {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" QueryObject queryObject \u003d parser.prepareArguments(scanner.nextLine());","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" if (!evaluator.evaluate(queryObject, false)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" } catch (KevinException ke) {","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" logger.log(ke.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" logger.bye();","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":56}},{"path":"src/main/java/kevin/evaluator/BaseStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" * Abstract class responsible for the logic for different commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":"public abstract class BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" protected TaskList taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" protected ArrayList\u003cString\u003e arguments;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize BaseStrategy.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" * @param taskList This is the TaskList where the tasks are stored and operations are defined.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" * @param arguments This is an ArrayList where all the needed arguments are stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" public BaseStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" * Handles the logic of the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" * @param logger This is the Logger that handles System.out.println.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" * @param fileStorage This is the FileStorage that handles the storage in the local computer.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" * @param isInFile This is the boolean to show whether the task is in the local computer\u0027s file.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a boolean that determines the continuation of the evaluation.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" return false;","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":38}},{"path":"src/main/java/kevin/evaluator/ByeStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" * A class responsible for the logic for BYE command.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"public class ByeStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize ByeStrategy.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" * @param taskList This is the TaskList where the tasks are stored and operations are defined.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" * @param arguments This is an ArrayList where all the needed arguments are stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" public ByeStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":18}},{"path":"src/main/java/kevin/evaluator/DeadlineStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" * A class responsible for the logic for DEADLINE command.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":"public class DeadlineStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize DeadlineStrategy.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" * @param taskList This is the TaskList where the tasks are stored and operations are defined.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" * @param arguments This is an ArrayList where all the needed arguments are stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" DeadlineStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" * Handles the logic of the DEADLINE command.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" * @param logger This is the Logger that handles System.out.println.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" * @param fileStorage This is the FileStorage that handles the storage in the local computer.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" * @param isInFile This is the boolean to show whether the task is in the local computer\u0027s file.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a boolean that determines the continuation of the evaluation","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" Boolean isDone \u003d Boolean.getBoolean(this.arguments.get(0));","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" String name \u003d this.arguments.get(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" String deadline \u003d this.arguments.get(2);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" if (!isInFile) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" LocalDateTime deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" deadlineDate \u003d LocalDateTime.parse(deadline, DateTimeFormatter.ofPattern(\" d/MM/yyyy HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" } catch (DateTimeParseException err) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Ensure that the deadline is a valid date\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" Deadline newDeadline \u003d taskList.addDeadline(isDone, name, deadlineDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.addDeadline(newDeadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" logger.log(\"Got it. I\u0027ve added this task: \\n\\t\\t\" + newDeadline +","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" \"\\n\\tNow you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":" LocalDateTime deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":" deadlineDate \u003d LocalDateTime.parse(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"aliciamichellew"},"content":" } catch (DateTimeParseException err) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Ensure that the deadline is a valid date\");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"aliciamichellew"},"content":" taskList.addDeadline(isDone, name, deadlineDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":65}},{"path":"src/main/java/kevin/evaluator/DeleteStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" * A class responsible for the logic for DELETE command.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"public class DeleteStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize DeleteStrategy.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" * @param taskList This is the TaskList where the tasks are stored and operations are defined.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" * @param arguments This is an ArrayList where all the needed arguments are stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" public DeleteStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" * Handles the logic of the DELETE command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" * @param logger This is the Logger that handles System.out.println.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" * @param fileStorage This is the FileStorage that handles the storage in the local computer.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" * @param isInFile This is the boolean to show whether the task is in the local computer\u0027s file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a boolean that determines the continuation of the evaluation.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" int index \u003d Integer.parseInt(this.arguments.get(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" Task deletedTask \u003d this.taskList.delete(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" if (!isInFile) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.deleteTask(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" logger.log(\"Noted. I\u0027ve removed this task: \\n\\t\\t\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" deletedTask +","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" \"\\n\\tNow you have \" + this.taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":47}},{"path":"src/main/java/kevin/evaluator/Evaluator.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.parser.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.parser.QueryObject;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":"@FunctionalInterface","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"interface FiveParameterFunction\u003cT, U, V, W, X, R\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" R apply(T t, U u, V v, W w, X x) throws KevinException;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" * A class that handles which function to call based on a specific command.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":"public class Evaluator {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" private Logger logger;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" private FileStorage fileStorage;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" private static HashMap\u003cCommand, FiveParameterFunction\u003cTaskList, ArrayList\u003cString\u003e, Logger, FileStorage, Boolean, Boolean\u003e\u003e MAPPER \u003d","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" new HashMap\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" static","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Command.BYE, (t, a, l, f, i) -\u003e new ByeStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Command.LIST, (t, a, l, f, i) -\u003e new ListStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Command.MARK, (t, a, l, f, i) -\u003e new MarkStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Command.UNMARK, (t, a, l, f, i) -\u003e new UnmarkStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Command.TODO, (t, a, l, f, i) -\u003e new ToDoStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Command.EVENT, (t, a, l, f, i) -\u003e new EventStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Command.DEADLINE, (t, a, l, f, i) -\u003e new DeadlineStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Command.DELETE, (t, a, l, f, i) -\u003e new DeleteStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" MAPPER.put(Command.FIND, (t, a, l, f, i) -\u003e new FindStrategy(t, a).evaluate(l, f, i));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize Evaluator.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" * @param logger This is the Logger that handles System.out.println.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" * @param fileStorage This is the FileStorage that handles the storage in the local computer.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" * @param taskList This is the TaskList where the tasks are stored and operations are defined.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" public Evaluator(Logger logger, FileStorage fileStorage, TaskList taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" this.logger \u003d logger;","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" this.fileStorage \u003d fileStorage;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":" * @param queryObject This is the QueryObject that contains the command and the arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":" * @param isInFile This is the boolean to show whether the task is in the local computer\u0027s file.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a boolean that determines the continuation of the evaluation.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(QueryObject queryObject, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"aliciamichellew"},"content":" Command command \u003d queryObject.getCommandType();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"aliciamichellew"},"content":" ArrayList\u003cString\u003e arguments \u003d queryObject.getArgs();","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"aliciamichellew"},"content":" return MAPPER.get(command).apply(taskList, arguments, logger, fileStorage, isInFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":65}},{"path":"src/main/java/kevin/evaluator/EventStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" * A class responsible for the logic for EVENT command.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"public class EventStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize EventStrategy.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" * @param taskList This is the TaskList where the tasks are stored and operations are defined.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" * @param arguments This is an ArrayList where all the needed arguments are stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" EventStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" * Handles the logic of the EVENT command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" * @param logger This is the Logger that handles System.out.println.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" * @param fileStorage This is the FileStorage that handles the storage in the local computer.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" * @param isInFile This is the boolean to show whether the task is in the local computer\u0027s file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a boolean that determines the continuation of the evaluation.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" Boolean isDone \u003d Boolean.getBoolean(this.arguments.get(0));","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" String name \u003d this.arguments.get(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" String startTime \u003d this.arguments.get(2);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" String endTime \u003d this.arguments.get(3);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" Event newEvent \u003d taskList.addEvent(isDone, name, startTime, endTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" if (!isInFile) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.addEvent(newEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" logger.log(\"Got it. I\u0027ve added this task: \\n\\t\\t\" + newEvent +","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" \"\\n\\tNow you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":49}},{"path":"src/main/java/kevin/evaluator/FindStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" * A class responsible for the logic for FIND command.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"public class FindStrategy extends BaseStrategy {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize FindStrategy.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" * @param taskList This is the TaskList where the tasks are stored and operations are defined.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" * @param arguments This is an ArrayList where all the needed arguments are stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" public FindStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" * Handles the logic of the FIND command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" * @param logger This is the Logger that handles System.out.println.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" * @param fileStorage This is the FileStorage that handles the storage in the local computer.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" * @param isInFile This is the boolean to show whether the task is in the local computer\u0027s file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a boolean that determines the continuation of the evaluation.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" String keyword \u003d this.arguments.get(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" logger.log(taskList.find(keyword));","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aliciamichellew":38}},{"path":"src/main/java/kevin/evaluator/ListStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" * A class responsible for the logic for LIST command.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":"public class ListStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize ListStrategy.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" * @param taskList This is the TaskList where the tasks are stored and operations are defined.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" * @param arguments This is an ArrayList where all the needed arguments are stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" public ListStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" * Handles the logic of the LIST command.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" * @param logger This is the Logger that handles System.out.println.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" * @param fileStorage This is the FileStorage that handles the storage in the local computer.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" * @param isInFile This is the boolean to show whether the task is in the local computer\u0027s file.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a boolean that determines the continuation of the evaluation.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" logger.log(taskList.list());","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":36}},{"path":"src/main/java/kevin/evaluator/MarkStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" * A class responsible for the logic for MARK command.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"public class MarkStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize MarkStrategy.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" * @param taskList This is the TaskList where the tasks are stored and operations are defined.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" * @param arguments This is an ArrayList where all the needed arguments are stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" public MarkStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" * Handles the logic of the MARK command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" * @param logger This is the Logger that handles System.out.println.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" * @param fileStorage This is the FileStorage that handles the storage in the local computer.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" * @param isInFile This is the boolean to show whether the task is in the local computer\u0027s file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a boolean that determines the continuation of the evaluation.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" int index \u003d Integer.parseInt(this.arguments.get(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" Task newTask \u003d this.taskList.mark(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" if (!isInFile) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.overwriteTask(newTask, index);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" logger.log(\"Nice! I\u0027ve marked this task as done: \\n\\t\\t\" + newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":44}},{"path":"src/main/java/kevin/evaluator/ToDoStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" * A class responsible for the logic for TODO command.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"public class ToDoStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize ToDoStrategy.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" * @param taskList This is the TaskList where the tasks are stored and operations are defined.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" * @param arguments This is an ArrayList where all the needed arguments are stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" public ToDoStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" * Handles the logic of the TODO command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" * @param logger This is the Logger that handles System.out.println.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" * @param fileStorage This is the FileStorage that handles the storage in the local computer.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" * @param isInFile This is the boolean to show whether the task is in the local computer\u0027s file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a boolean that determines the continuation of the evaluation.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" Boolean isDone \u003d Boolean.getBoolean(this.arguments.get(0));","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" String toDoName \u003d this.arguments.get(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" ToDo newToDo \u003d taskList.addToDo(isDone, toDoName);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" if (!isInFile) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.addToDo(newToDo);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" logger.log(\"Got it. I\u0027ve added this task: \\n\\t\\t\" + newToDo +","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" \"\\n\\tNow you have \" + this.taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":47}},{"path":"src/main/java/kevin/evaluator/UnmarkStrategy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.evaluator;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.ui.Logger;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.storage.FileStorage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" * A class responsible for the logic for UNMARK command.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"public class UnmarkStrategy extends BaseStrategy {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize UnmarkStrategy.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" * @param taskList This is the TaskList where the tasks are stored and operations are defined.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" * @param arguments This is an ArrayList where all the needed arguments are stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" public UnmarkStrategy(TaskList taskList, ArrayList\u003cString\u003e arguments) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" super(taskList, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" * Handles the logic of the UNMARK command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" * @param logger This is the Logger that handles System.out.println.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" * @param fileStorage This is the FileStorage that handles the storage in the local computer.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" * @param isInFile This is the boolean to show whether the task is in the local computer\u0027s file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a boolean that determines the continuation of the evaluation.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" public boolean evaluate(Logger logger, FileStorage fileStorage, boolean isInFile) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" int index \u003d Integer.parseInt(this.arguments.get(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" Task newTask \u003d this.taskList.unmark(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" if (!isInFile) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" fileStorage.overwriteTask(newTask, index);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" logger.log(\"OK, I\u0027ve marked this task as not done yet: \\n\\t\\t\" + newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" return true;","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":45}},{"path":"src/main/java/kevin/exception/KevinException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":" * A class responsible for the exceptions for Kevin.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"public class KevinException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to intialize KevinException.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" * @param errorMessage This is the message that will be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" public KevinException(String errorMessage) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns the detail message string of this throwable.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" return \"☹ OOPS!!! \" + super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aliciamichellew":23}},{"path":"src/main/java/kevin/parser/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":" * Enums for all the different commands in Kevin.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"public enum Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" BYE,","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" LIST,","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" MARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" UNMARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" TODO,","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" EVENT,","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" DEADLINE,","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" DELETE,","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" FIND,","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":16}},{"path":"src/main/java/kevin/parser/FileParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" * A class to handle the parsing of text from the kevin.txt file.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"public class FileParser {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" * Parses the text that is taken from the kevin.txt file to make it a QueryObject.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" * @param input This is the text input that needs to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a QueryObject containing the Command and arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" public QueryObject parseLine(String input) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" String[] querySplit \u003d input.trim().split(\" - \", 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Command is not found.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" Command command;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" ArrayList\u003cString\u003e args \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" command \u003d Command.valueOf(querySplit[0].toUpperCase());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" isDone \u003d Boolean.parseBoolean(querySplit[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" args.add(String.valueOf(isDone));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" } catch (IllegalArgumentException err) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Command is invalid.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" if (command \u003d\u003d Command.TODO) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length !\u003d 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Todo command needs to follow \\\"Todo - {isDone} - {todo name}.\\\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" args.add(querySplit[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Command.DEADLINE) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentSplit \u003d querySplit[2].split(\" - \");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" if (argumentSplit.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Deadline command needs to follow \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" \"\\\"Deadline - {isDone} - {deadline name} - {deadline date}\\\".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentSplit[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentSplit[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Command.EVENT) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentGetName \u003d querySplit[2].split(\" - \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" if (argumentGetName.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Event command needs to follow \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":" \"\\\"Event - {isDone} - {deadline name} - {event start time} - {event end time}\\\".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentGetDate \u003d argumentGetName[2].split(\" - \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":" if (argumentGetDate.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Event command needs to follow \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"aliciamichellew"},"content":" \"\\\"Event - {isDone} -{deadline name} - {event start time} - {event end time}\\\".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentGetName[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentGetDate[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentGetDate[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"aliciamichellew"},"content":" return new QueryObject(command, args);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"aliciamichellew":66}},{"path":"src/main/java/kevin/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" * A class to handle the parsing of text from the user\u0027s input.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"public class Parser {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" * Parses the text from the user to make it a QueryObject.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" * @param userInput This is the user input that needs to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a QueryObject containing the Command and arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" public QueryObject prepareArguments(String userInput) throws KevinException {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" String[] querySplit \u003d userInput.trim().split(\" \", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length \u003d\u003d 0) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Please input a command.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" Command command;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" ArrayList\u003cString\u003e args \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" args.add(String.valueOf(isDone));","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" command \u003d Command.valueOf(querySplit[0].toUpperCase());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" } catch (IllegalArgumentException err) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Command is invalid.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" if (command \u003d\u003d Command.BYE || command \u003d\u003d Command.LIST) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length \u003e 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(command.name() + \" command does not take any input.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Command.MARK || command \u003d\u003d Command.UNMARK || command \u003d\u003d Command.DELETE) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(command.name() + \" command needs to take one input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentSplit \u003d querySplit[1].split(\" \");","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" if (argumentSplit.length \u003e 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(command.name() + \" command only takes one input.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" Integer.parseInt(argumentSplit[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" } catch (NumberFormatException err) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(command.name() + \" input must be an integer.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentSplit[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Command.TODO) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length !\u003d 2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Todo command needs to follow \\\"todo {todo name}.\\\"\");","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":" args.add(querySplit[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Command.DEADLINE) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentSplit \u003d querySplit[1].split(\" /by\");","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"aliciamichellew"},"content":" if (argumentSplit.length !\u003d 2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Deadline command needs to follow \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"aliciamichellew"},"content":" \"\\\"deadline {deadline name} /by {deadline date}\\\".\");","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentSplit[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentSplit[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Command.EVENT) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentGetName \u003d querySplit[1].split(\" /from\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"aliciamichellew"},"content":" if (argumentGetName.length !\u003d 2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Event command needs to follow \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"aliciamichellew"},"content":" \"\\\"event {deadline name} /from {event start time} /to {event end time}\\\".\");","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"aliciamichellew"},"content":" String[] argumentGetDate \u003d argumentGetName[1].split(\" /to\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"aliciamichellew"},"content":" if (argumentGetDate.length !\u003d 2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Event command needs to follow \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"aliciamichellew"},"content":" \"\\\"event {deadline name} /from {event start time} /to {event end time}\\\".\");","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentGetName[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentGetDate[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"aliciamichellew"},"content":" args.add(argumentGetDate[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"aliciamichellew"},"content":" } else if (command \u003d\u003d Command.FIND) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"aliciamichellew"},"content":" if (querySplit.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Find command needs to follow \\\"find {keyword}.\\\"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"aliciamichellew"},"content":" args.add(querySplit[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"aliciamichellew"},"content":" return new QueryObject(command, args);","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":87}},{"path":"src/main/java/kevin/parser/QueryObject.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":" * A class that contains the Command and arguments to be passed to the Evaluator.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"public class QueryObject {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" private final Command commandType;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" private final ArrayList\u003cString\u003e args;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize QueryObject","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" * @param commandType This is the Command for the query object.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" * @param args This is the arguments needed to run the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" public QueryObject(Command commandType, ArrayList\u003cString\u003e args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" this.args \u003d args;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" * Gets the command of the query object.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" public Command getCommandType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" return commandType;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" * Gets the arguments of the query object.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" public ArrayList\u003cString\u003e getArgs() {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" return args;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a string representation of the object.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" StringBuilder result \u003d new StringBuilder(this.commandType.name());","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" for (int i \u003d 0; i \u003c args.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" result.append(args.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" return result.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"aliciamichellew":48}},{"path":"src/main/java/kevin/storage/FileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import kevin.taskList.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" * A class that is responsible to write to kevin.txt.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":"public class FileStorage {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" public static final String FILE_LOCATION \u003d \"./data/kevin.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize FileStorage.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" public FileStorage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" * Makes the file to be written on if it does not exist.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" public void initialize() throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" storage.createFile(FILE_LOCATION);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" * Adds todo task to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" * @param newToDo This is the todo task to be written to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" public void addToDo(ToDo newToDo) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" storage.appendFile(FILE_LOCATION, newToDo.toText());","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" * Adds event task to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" * @param newEvent This is the event task to be written to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" public void addEvent(Event newEvent) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" storage.appendFile(FILE_LOCATION, newEvent.toText());","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":" * Overwrites a specific line with the new task.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":" * @param newTask This is the new task to be written to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":" * @param index This is the line number to be overwritten.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aliciamichellew"},"content":" public void overwriteTask(Task newTask, int index) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"aliciamichellew"},"content":" storage.overwriteLine(FILE_LOCATION, newTask.toText(), index);","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"aliciamichellew"},"content":" * Delete a specific line.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"aliciamichellew"},"content":" * @param index This is the line number to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"aliciamichellew"},"content":" public void deleteTask(int index) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"aliciamichellew"},"content":" storage.overwriteLine(FILE_LOCATION, \"\", index);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"aliciamichellew"},"content":" * Adds deadline task to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"aliciamichellew"},"content":" * @param newDeadline This is the deadline task to be written to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"aliciamichellew"},"content":" public void addDeadline(Deadline newDeadline) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"aliciamichellew"},"content":" storage.appendFile(FILE_LOCATION, newDeadline.toText());","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"aliciamichellew"},"content":" * Divides the String to become ArrayList of String on new line.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"aliciamichellew"},"content":" * @param tasks This is the String of tasks to be divided","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns an ArrayList of String.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"aliciamichellew"},"content":" public ArrayList\u003cString\u003e makeStringToList(String tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"aliciamichellew"},"content":" String[] tasksSplit \u003d tasks.split(System.lineSeparator());","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"aliciamichellew"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(tasksSplit));","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"aliciamichellew"},"content":" * Gets the tasks from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns an ArrayList of Task String.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"aliciamichellew"},"content":" public ArrayList\u003cString\u003e getTasksFromFile() throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"aliciamichellew"},"content":" String fileContent \u003d storage.readFile(FILE_LOCATION);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"aliciamichellew"},"content":" return makeStringToList(fileContent);","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"aliciamichellew":99}},{"path":"src/main/java/kevin/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" * A class that is responsible for file input output.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" public static final String FILE_FOLDER_NAME \u003d \"data\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" * Creates a new file to local computer if it does not exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" * @param fileLocation This is the location of the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" public void createFile(String fileLocation) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" File fileFolder \u003d new File(FILE_FOLDER_NAME);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" if (!fileFolder.isDirectory()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" fileFolder.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" File dataFile \u003d new File(fileLocation);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" if (!dataFile.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" dataFile.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception err) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Fail to make new file: \" + err.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" * Appends text to the local file.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" * @param fileLocation This is the location of the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" * @param text This is the text that will be appended to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" public void appendFile(String fileLocation, String text) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" FileWriter fileWriter \u003d new FileWriter(fileLocation, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" fileWriter.write(text);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" } catch (java.io.IOException err) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Fail to append text to file: \" + err.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"aliciamichellew"},"content":" * Overwrites a single line with text based on line number.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aliciamichellew"},"content":" * @param fileLocation This is the location of the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"aliciamichellew"},"content":" * @param text This is the text that will overwrite the old line.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"aliciamichellew"},"content":" * @param index The line number to be overwritten.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"aliciamichellew"},"content":" public void overwriteLine(String fileLocation, String text, int index) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"aliciamichellew"},"content":" Scanner sc \u003d new Scanner(new File(fileLocation));","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"aliciamichellew"},"content":" StringBuffer buffer \u003d new StringBuffer();","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"aliciamichellew"},"content":" String toBeReplaced \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"aliciamichellew"},"content":" for (int i \u003d 0; i \u003c index; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"aliciamichellew"},"content":" toBeReplaced \u003d sc.nextLine() + System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"aliciamichellew"},"content":" buffer.append(toBeReplaced);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"aliciamichellew"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"aliciamichellew"},"content":" buffer.append(sc.nextLine() + System.lineSeparator());","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"aliciamichellew"},"content":" String fileContents \u003d buffer.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"aliciamichellew"},"content":" sc.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"aliciamichellew"},"content":" fileContents \u003d fileContents.replaceAll(toBeReplaced, text);","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"aliciamichellew"},"content":" FileWriter writer \u003d new FileWriter(fileLocation);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"aliciamichellew"},"content":" writer.append(fileContents);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"aliciamichellew"},"content":" writer.flush();","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"aliciamichellew"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"aliciamichellew"},"content":" * Reads from the local file.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"aliciamichellew"},"content":" * @param fileLocation This is the location of the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a String of the file content.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"aliciamichellew"},"content":" * @throws KevinException On the detection of errors.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"aliciamichellew"},"content":" public String readFile(String fileLocation) throws KevinException {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"aliciamichellew"},"content":" String data \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"aliciamichellew"},"content":" data \u003d new String(Files.readAllBytes(Paths.get(fileLocation)));","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"aliciamichellew"},"content":" return data;","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception err) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"aliciamichellew"},"content":" throw new KevinException(\"Fail to read text to file: \" + err.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"aliciamichellew":101}},{"path":"src/main/java/kevin/taskList/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" * A class to represent the Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" private final LocalDateTime deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" * @param isDone This is a boolean to mark whether the Deadline is done or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" * @param name This is the name description of the deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" * @param deadline This is the deadline date for the deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" public Deadline(Boolean isDone, String name, LocalDateTime deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" super(isDone, name);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" * Changes the date format to be shown.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" * @param deadline This is the date that wants to be formatted.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a string of the new date format.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" public String changeDeadlineFormat(LocalDateTime deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" return deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" * Returns a string representation of the Deadline Object to be written to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" public String toText() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" return \"Deadline - \" + isDone + \" - \" + name + \" - \" + deadline + System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a string representation of the Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" return \"[D]\" + super.toString() + \" (by:\" + changeDeadlineFormat(deadline) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":47}},{"path":"src/main/java/kevin/taskList/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":" * A class to represent the Event Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" private final String startTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" private final String endTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" * @param isDone This is a boolean to mark whether the Event is done or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" * @param name This is the name description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" * @param startTime This is a string for the event start time.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" * @param endTime This is a string for the event end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" public Event(Boolean isDone, String name, String startTime, String endTime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" super(isDone, name);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" * Returns a string representation of the Event Object to be written to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" public String toText() {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" return \"Event - \" + isDone + \" - \" + name + \" -\" + startTime + \" -\" + endTime + System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a string representation of the Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" return \"[E]\" + super.toString() + \" (from:\" + this.startTime + \" to:\" + this.endTime + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":38}},{"path":"src/main/java/kevin/taskList/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":" * A class to represent the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" protected final String name;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" * @param isDone This is a boolean to mark whether the Task is done or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" * @param name This is the name description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" public Task(Boolean isDone, String name) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" * Sets isDone based on the boolean passed.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" * @param isDone This is a boolean to store to isDone.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" public void setIsDone(boolean isDone) {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" * Changes isDone to true.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" public void mark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" this.setIsDone(true);","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" * Changes isDone to false.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" public void unmark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" this.setIsDone(false);","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" * Returns string representation of the isDone status.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" public String isDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" return this.isDone ? \"X\" : \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" * Returns a string representation of the Task Object to be written to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" public String toText() {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":" return \"Task - \" + isDone + \" - \" + name + System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"aliciamichellew"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a string representation of the Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"aliciamichellew"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"aliciamichellew"},"content":" return \"[\" + this.isDone() + \"] \" + this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":64}},{"path":"src/main/java/kevin/taskList/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" * A class where Kevin stores the list of Task and the actions done to the tasks based on the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" public TaskList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" this.taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" * Adds ToDo task to the taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" * @param isDone This is a boolean to mark whether the ToDo is done or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" * @param name This is the name description of the ToDo.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns the new ToDo Object.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" public ToDo addToDo(Boolean isDone, String name) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" ToDo newToDo \u003d new ToDo(isDone, name);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" this.taskList.add(newToDo);","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" return newToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" * Adds Event task to the taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" * @param isDone This is a boolean to mark whether the Event is done or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" * @param name This is the name description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" * @param startTime This is the start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" * @param endTime This is the end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns the new Event Object.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" public Event addEvent(Boolean isDone, String name, String startTime, String endTime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" Event newEvent \u003d new Event(isDone, name, startTime, endTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" this.taskList.add(newEvent);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" return newEvent;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" * Adds Deadline task to the taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" * @param isDone This is a boolean to mark whether the Deadline is done or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" * @param name This is the name description of the deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" * @param deadline This is the deadline date of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns the new Deadline Object.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":" public Deadline addDeadline(Boolean isDone, String name, LocalDateTime deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"aliciamichellew"},"content":" Deadline newDeadline \u003d new Deadline(isDone, name, deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"aliciamichellew"},"content":" this.taskList.add(newDeadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"aliciamichellew"},"content":" return newDeadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"aliciamichellew"},"content":" * Returns the string representation of all the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"aliciamichellew"},"content":" public String list() {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"aliciamichellew"},"content":" StringBuilder listOutput \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"aliciamichellew"},"content":" listOutput.append(\"Here are the tasks in your list: \");","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"aliciamichellew"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"aliciamichellew"},"content":" listOutput.append(\"\\n\\t\").","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"aliciamichellew"},"content":" append((i + 1)).","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"aliciamichellew"},"content":" append(\".\").","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"aliciamichellew"},"content":" append(this.taskList.get(i));","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"aliciamichellew"},"content":" return listOutput.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"aliciamichellew"},"content":" * Marks the task according the index given to be done.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"aliciamichellew"},"content":" * @param toDoIndex This is the index of the task in the TaskList to be updated.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns the updated Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"aliciamichellew"},"content":" public Task mark(int toDoIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"aliciamichellew"},"content":" this.taskList.get(toDoIndex - 1).mark();","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"aliciamichellew"},"content":" return this.taskList.get(toDoIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"aliciamichellew"},"content":" * Marks the task according the index given to be not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"aliciamichellew"},"content":" * @param toDoIndex This is the index of the task in the TaskList to be updated.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns the updated Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"aliciamichellew"},"content":" public Task unmark(int toDoIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"aliciamichellew"},"content":" this.taskList.get(toDoIndex - 1).unmark();","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"aliciamichellew"},"content":" return this.taskList.get(toDoIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"aliciamichellew"},"content":" * Delete the task according the index given to be done.","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"aliciamichellew"},"content":" * @param deleteIndex This is the index of the task in the TaskList to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns the deleted Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"aliciamichellew"},"content":" public Task delete(int deleteIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"aliciamichellew"},"content":" Task deletedTask \u003d this.taskList.get(deleteIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"aliciamichellew"},"content":" this.taskList.remove(deleteIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"aliciamichellew"},"content":" return deletedTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"aliciamichellew"},"content":" * Returns the current size of the taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"aliciamichellew"},"content":" public int size() {","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"aliciamichellew"},"content":" return this.taskList.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"aliciamichellew"},"content":" * Finds tasks based on the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"aliciamichellew"},"content":" * @param keyword This is the keyword to be checked.","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a list of task that contains the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"aliciamichellew"},"content":" public String find(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"aliciamichellew"},"content":" StringBuilder listOutput \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"aliciamichellew"},"content":" Integer number \u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"aliciamichellew"},"content":" listOutput.append(\"Here are the matching tasks in your list: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"aliciamichellew"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"aliciamichellew"},"content":" if (this.taskList.get(i).toString().contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"aliciamichellew"},"content":" listOutput.append(\"\\n\\t\").","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"aliciamichellew"},"content":" append((number)).","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"aliciamichellew"},"content":" append(\".\").","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"aliciamichellew"},"content":" append(this.taskList.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"aliciamichellew"},"content":" number +\u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"aliciamichellew"},"content":" return listOutput.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"aliciamichellew"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a string representation of the TaskList object.","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"aliciamichellew"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"aliciamichellew"},"content":" return this.taskList.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":144}},{"path":"src/main/java/kevin/taskList/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":" * A class to represent the ToDo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" * Constructor to initialize ToDo.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" * @param isDone This is a boolean to mark whether the ToDo is done or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" * @param name This is the name description of the ToDo.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" public ToDo(Boolean isDone, String name) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" super(isDone, name);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" * Returns a string representation of the ToDo Object to be written to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" public String toText() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" return \"Todo - \" + isDone + \" - \" + name + System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" * @return Returns a string representation of the ToDo object.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"aliciamichellew":31}},{"path":"src/main/java/kevin/ui/Logger.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":" * A class responsible to output to the console.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"public class Logger {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":" * Prints the text wrapped in horizontal lines.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" * @param str","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" public void log(String str) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" System.out.println(\"\\t\" + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" System.out.println(\"\\t\" + str);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" System.out.println(\"\\t\" + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" public static final String HORIZONTAL_LINE \u003d \"_\".repeat(70);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":" public static final String BOT_NAME \u003d \"\\t \\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" \"\\t\" + \" _ __ _____ _ _ _____ _ _ \\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" \"\\t\" +\"| | / /| ___| | | |_ _| \\\\ | |\\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" \"\\t\" +\"| |/ / | |__ | | | | | | | \\\\| |\\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" \"\\t\" +\"| \\\\ | __|| | | | | | | . ` |\\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" \"\\t\" +\"| |\\\\ \\\\| |___\\\\ \\\\_/ /_| |_| |\\\\ |\\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" \"\\t\" +\"\\\\_| \\\\_/\\\\____/ \\\\___/ \\\\___/\\\\_| \\\\_/\\n\";","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" * Prints the hello message when the program first runs.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":" public void hello() {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" String welcomeMessage \u003d \"Hello! I\u0027m\" + BOT_NAME + \"\\n\\t\" + \"What can I do for you?\";","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" this.log(welcomeMessage);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" * Prints the bye message before the program ends.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" public void bye() {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" String goodbyeMessage \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" this.log(goodbyeMessage);","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aliciamichellew":42}},{"path":"src/test/java/kevin/parser/FileParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"public class FileParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" public void parseLine_invalidCommand_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"invalidCommand\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" FileParser fileParser \u003d new FileParser();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" fileParser.parseLine(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" public void parseLine_invalidToDoInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"Todo - \";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" FileParser fileParser \u003d new FileParser();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" fileParser.parseLine(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" public void parseLine_invalidDeadlineInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"Deadline - cs2103 - today\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" FileParser fileParser \u003d new FileParser();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" fileParser.parseLine(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" public void parseLine_invalidEventInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"Event - lecture - 2pm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" FileParser fileParser \u003d new FileParser();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" fileParser.parseLine(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"aliciamichellew":52}},{"path":"src/test/java/kevin/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"package kevin.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"import kevin.exception.KevinException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":" public void prepareArguments_invalidCommand_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"invalidCommand\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"aliciamichellew"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"aliciamichellew"},"content":" parser.prepareArguments(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"aliciamichellew"},"content":" public void prepareArguments_invalidToDoInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"todo \";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"aliciamichellew"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"aliciamichellew"},"content":" parser.prepareArguments(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"aliciamichellew"},"content":" public void prepareArguments_invalidDeadlineInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"deadline cs2103 by today\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"aliciamichellew"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"aliciamichellew"},"content":" parser.prepareArguments(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"aliciamichellew"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"aliciamichellew"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"aliciamichellew"},"content":" public void prepareArguments_invalidEventInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"aliciamichellew"},"content":" String input \u003d \"event lecture /from 2pm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"aliciamichellew"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"aliciamichellew"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"aliciamichellew"},"content":" parser.prepareArguments(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"aliciamichellew"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"aliciamichellew"},"content":" assertTrue(ex instanceof KevinException);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"aliciamichellew"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"aliciamichellew"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"aliciamichellew":52}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"aliciamichellew"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"aliciamichellew"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"aliciamichellew"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"aliciamichellew"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"aliciamichellew"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aliciamichellew"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aliciamichellew"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aliciamichellew"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aliciamichellew"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aliciamichellew"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aliciamichellew":10}},{"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":"aliciamichellew"},"content":"java -classpath ..\\bin kevin.Kevin \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"-":20,"aliciamichellew":1}},{"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":"aliciamichellew"},"content":"java -classpath ../bin Kevin \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":{"-":37,"aliciamichellew":1}}] diff --git a/aliciamichellew_ip_master/commits.json b/aliciamichellew_ip_master/commits.json index a6789622..c4085090 100644 --- a/aliciamichellew_ip_master/commits.json +++ b/aliciamichellew_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"aliciamichellew":[{"date":"2023-08-23","commitResults":[{"hash":"75311bd6e968c7111f7cd57d4be0fc6a4ed307e5","isMergeCommit":false,"messageTitle":"Change bot name and add greetings","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"76faac895c5323abb711978e37940d9e99d65c92","isMergeCommit":false,"messageTitle":"Abstract out horizontal lines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":5}}},{"hash":"29c2ed931b2dd1d0bb5ab4d87443fb150c537a8e","isMergeCommit":false,"messageTitle":"Add echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":11}}},{"hash":"02af6189fc834edafb29d851a4063f38b21a529b","isMergeCommit":false,"messageTitle":"Add ToDoList functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":1}}},{"hash":"495aaa0a4a08f420aa6ee5c216cd2e57ea83ebb2","isMergeCommit":false,"messageTitle":"Add mark as done functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":8}}},{"hash":"011765fad984a6cbb5d3b765da3287ecff771bd4","isMergeCommit":false,"messageTitle":"Refactor ToDo to Task and ToDoList to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":27}}},{"hash":"36e3909680b45d00e47782a69154c5c8aecd522a","isMergeCommit":false,"messageTitle":"Make ToDo, Event, Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":0}}},{"hash":"8e56c4c4e37adaaa4ad61066e1d5bc962a9d2929","isMergeCommit":false,"messageTitle":"Add ToDo, Event, Deadline functionalities","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":5}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0f44dcfa9b3589b5208a764eafda31e0928fe7a0","isMergeCommit":false,"messageTitle":"Add testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"367056276b2ff81cf44002c0b0e5e41f5ccdac92","isMergeCommit":false,"messageTitle":"Intialise exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":1}}},{"hash":"d358e7f6adfd9ebb230340c31ab72bb526ed5792","isMergeCommit":false,"messageTitle":"Initialise enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"16f94018fcb2c74b79bfc6d3f4ac8d4be18c807f","isMergeCommit":false,"messageTitle":"Refactor and add error catch","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":68}}},{"hash":"22c3dc136925f7f99f8a49b1404688e16323984d","isMergeCommit":false,"messageTitle":"Add delete functionality","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"242f17ce4a371ca26bfa7f49f589a1e4c0141f4d","isMergeCommit":false,"messageTitle":"Initialise logger","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"2b8d670f9f2690dd85bf02b1571e9a95f98b9aab","isMergeCommit":false,"messageTitle":"Remove unused functions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}}]},{"date":"2023-08-29","commitResults":[{"hash":"23211a9fbf12911aec0d055d4a18ff18b7785caf","isMergeCommit":false,"messageTitle":"Refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":469,"deletions":110}}},{"hash":"6d2e2fb753c211ee7819ead1065490328eb0cff8","isMergeCommit":false,"messageTitle":"Delete unused exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":35}}},{"hash":"11f68282fa7228ea50b218fd11383e12ad6ac615","isMergeCommit":false,"messageTitle":"Clean up import lines and comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":140}}},{"hash":"622d60a81e8d627fc993bd38e8e549fe7b1168f6","isMergeCommit":false,"messageTitle":"Refactor evaluator","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":29}}}]},{"date":"2023-08-30","commitResults":[{"hash":"ba52c14442de2b8093fd3072f865fab07453c696","isMergeCommit":false,"messageTitle":"Initialise storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"90fb5b35b8d9e3c5f872b575a9dbd0e85bd8b147","isMergeCommit":false,"messageTitle":"Add save file functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":375,"deletions":79}}},{"hash":"804c6e509c8cb9a25c33b0627f7c94639b786961","isMergeCommit":false,"messageTitle":"Remove unused function","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":11}}}]},{"date":"2023-08-31","commitResults":[{"hash":"0f36b0d0611c220350881b8e0f7cde157c8de234","isMergeCommit":false,"messageTitle":"Add change deadline to datetime","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":26,"deletions":7}}},{"hash":"c3391878694394a1c5c31524dc12887c8836338f","isMergeCommit":false,"messageTitle":"Fix datetime bug","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":18,"deletions":11}}},{"hash":"00f7eda3ea9a4a90677bb094969afb32cbce2037","isMergeCommit":false,"messageTitle":"Change Logger package to Ui package","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":11}}},{"hash":"a221cc1d2da6050b57d269ad76c921e2ceb47c50","isMergeCommit":false,"messageTitle":"Move packages to kevin package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":87,"deletions":91},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"9fb8c904f0a6feaea47f73a83298153f4511429e","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"dfa0814e8b72b8e3ffda566f7c388d8573d27914","isMergeCommit":false,"messageTitle":"Add JUnit test case","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":104,"deletions":0}}},{"hash":"279035a4748a75367f3a4065164a82a14f310ae8","isMergeCommit":false,"messageTitle":"Modify build gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"aliciamichellew":{"java":967,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":2,"txt":14}},"authorContributionVariance":{"aliciamichellew":62063.52},"authorDisplayNameMap":{"aliciamichellew":"CS2103T-W10-2 ALIC..WANG"}} +{"authorDailyContributionsMap":{"aliciamichellew":[{"date":"2023-08-23","commitResults":[{"hash":"75311bd6e968c7111f7cd57d4be0fc6a4ed307e5","isMergeCommit":false,"messageTitle":"Change bot name and add greetings","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"76faac895c5323abb711978e37940d9e99d65c92","isMergeCommit":false,"messageTitle":"Abstract out horizontal lines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":5}}},{"hash":"29c2ed931b2dd1d0bb5ab4d87443fb150c537a8e","isMergeCommit":false,"messageTitle":"Add echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":11}}},{"hash":"02af6189fc834edafb29d851a4063f38b21a529b","isMergeCommit":false,"messageTitle":"Add ToDoList functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":1}}},{"hash":"495aaa0a4a08f420aa6ee5c216cd2e57ea83ebb2","isMergeCommit":false,"messageTitle":"Add mark as done functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":8}}},{"hash":"011765fad984a6cbb5d3b765da3287ecff771bd4","isMergeCommit":false,"messageTitle":"Refactor ToDo to Task and ToDoList to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":27}}},{"hash":"36e3909680b45d00e47782a69154c5c8aecd522a","isMergeCommit":false,"messageTitle":"Make ToDo, Event, Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":0}}},{"hash":"8e56c4c4e37adaaa4ad61066e1d5bc962a9d2929","isMergeCommit":false,"messageTitle":"Add ToDo, Event, Deadline functionalities","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":5}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0f44dcfa9b3589b5208a764eafda31e0928fe7a0","isMergeCommit":false,"messageTitle":"Add testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"367056276b2ff81cf44002c0b0e5e41f5ccdac92","isMergeCommit":false,"messageTitle":"Intialise exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":1}}},{"hash":"d358e7f6adfd9ebb230340c31ab72bb526ed5792","isMergeCommit":false,"messageTitle":"Initialise enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"16f94018fcb2c74b79bfc6d3f4ac8d4be18c807f","isMergeCommit":false,"messageTitle":"Refactor and add error catch","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":68}}},{"hash":"22c3dc136925f7f99f8a49b1404688e16323984d","isMergeCommit":false,"messageTitle":"Add delete functionality","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"242f17ce4a371ca26bfa7f49f589a1e4c0141f4d","isMergeCommit":false,"messageTitle":"Initialise logger","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"2b8d670f9f2690dd85bf02b1571e9a95f98b9aab","isMergeCommit":false,"messageTitle":"Remove unused functions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}}]},{"date":"2023-08-29","commitResults":[{"hash":"23211a9fbf12911aec0d055d4a18ff18b7785caf","isMergeCommit":false,"messageTitle":"Refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":469,"deletions":110}}},{"hash":"6d2e2fb753c211ee7819ead1065490328eb0cff8","isMergeCommit":false,"messageTitle":"Delete unused exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":35}}},{"hash":"11f68282fa7228ea50b218fd11383e12ad6ac615","isMergeCommit":false,"messageTitle":"Clean up import lines and comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":140}}},{"hash":"622d60a81e8d627fc993bd38e8e549fe7b1168f6","isMergeCommit":false,"messageTitle":"Refactor evaluator","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":29}}}]},{"date":"2023-08-30","commitResults":[{"hash":"ba52c14442de2b8093fd3072f865fab07453c696","isMergeCommit":false,"messageTitle":"Initialise storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"90fb5b35b8d9e3c5f872b575a9dbd0e85bd8b147","isMergeCommit":false,"messageTitle":"Add save file functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":375,"deletions":79}}},{"hash":"804c6e509c8cb9a25c33b0627f7c94639b786961","isMergeCommit":false,"messageTitle":"Remove unused function","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":11}}}]},{"date":"2023-08-31","commitResults":[{"hash":"0f36b0d0611c220350881b8e0f7cde157c8de234","isMergeCommit":false,"messageTitle":"Add change deadline to datetime","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":26,"deletions":7}}},{"hash":"c3391878694394a1c5c31524dc12887c8836338f","isMergeCommit":false,"messageTitle":"Fix datetime bug","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":18,"deletions":11}}},{"hash":"00f7eda3ea9a4a90677bb094969afb32cbce2037","isMergeCommit":false,"messageTitle":"Change Logger package to Ui package","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":11}}},{"hash":"a221cc1d2da6050b57d269ad76c921e2ceb47c50","isMergeCommit":false,"messageTitle":"Move packages to kevin package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":87,"deletions":91},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"9fb8c904f0a6feaea47f73a83298153f4511429e","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"dfa0814e8b72b8e3ffda566f7c388d8573d27914","isMergeCommit":false,"messageTitle":"Add JUnit test case","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":104,"deletions":0}}},{"hash":"279035a4748a75367f3a4065164a82a14f310ae8","isMergeCommit":false,"messageTitle":"Modify build gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"5df8e44dda2be8d56804e38a0c4bd43e121264d3","isMergeCommit":false,"messageTitle":"Add JavaDoc for BaseStrategy","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"6f3880db675e1facaa7fbac5f591285c4ad8255a","isMergeCommit":false,"messageTitle":"Add JavaDoc for ByeStrategy","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"69ba838a2e4b2d2ee2c117cff1ea91ee3bf5fb94","isMergeCommit":false,"messageTitle":"Add JavaDoc for DeadlineStrategy","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"44e40e6872e721e82e09fcc6893d228dfc1c1caa","isMergeCommit":false,"messageTitle":"Add JavaDoc for DeleteStrategy","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"63e19657cd3a12a72aff0381008403977e345d06","isMergeCommit":false,"messageTitle":"Add JavaDoc for Evaluator","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"d96911849c293b7df6482efe7703c2733fd31d1f","isMergeCommit":false,"messageTitle":"Add JavaDoc for EventStrategy","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"e2094444f89fee67ce3e6fdaa3382b6ba1a60a9d","isMergeCommit":false,"messageTitle":"Add JavaDoc for ListStrategy","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"2613cba34377416df7954ced2017d8889e1b1b65","isMergeCommit":false,"messageTitle":"Add JavaDoc for MarkStrategy","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"b2807ead46837346183bff7ea24f56df0e7675d5","isMergeCommit":false,"messageTitle":"Add JavaDoc for ToDoStrategy","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"5f4c6f8400968463e4fe35ad349dd376c068c617","isMergeCommit":false,"messageTitle":"Add JavaDoc for UnmarkStrategy","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"7adb62433f5c4d345f6b7143e4efb3bb5cabbfd6","isMergeCommit":false,"messageTitle":"Add JavaDoc for KevinException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"fe15ea2fb8a5520d748cbabcda88eb1262f5ea0b","isMergeCommit":false,"messageTitle":"Add JavaDoc for Commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"01bb8ec8ed2ac4ec2c05b83937dd54d083a9c49d","isMergeCommit":false,"messageTitle":"Add JavaDoc for FileParser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"7b76ecf443df172d94b4e1417dd173f4eb5e8258","isMergeCommit":false,"messageTitle":"Add JavaDoc for Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"9d93a8726ab7f8a97c3d8ccad03869b369efbd17","isMergeCommit":false,"messageTitle":"Add JavaDoc for QueryObject","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"d1b4113b291e70b4754de92c1472efc0e7cb80bc","isMergeCommit":false,"messageTitle":"Add JavaDoc for FileStorage and Storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":0}}},{"hash":"7ecf457b5d0228142e564cf708edf2eb8184e066","isMergeCommit":false,"messageTitle":"Add JavaDoc for Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"1993dd9e950ed1b9a0d139d91461a1ed174d31b0","isMergeCommit":false,"messageTitle":"Add JavaDoc for Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"63c1956f660555fa5a3554d1c54b25b43b936074","isMergeCommit":false,"messageTitle":"Add JavaDoc for Task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":0}}},{"hash":"5da75f1c8206bbd5588c6e351135544915936515","isMergeCommit":false,"messageTitle":"Add JavaDoc for TaskList","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":53,"deletions":1}}},{"hash":"39bb9e87637e5b396427e70062ce44c77aceb569","isMergeCommit":false,"messageTitle":"Add JavaDoc for ToDo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"58fb2bb0883528e93ff90e86cd274f5ae141389e","isMergeCommit":false,"messageTitle":"Add JavaDoc for Logger","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"6cf4a6b3714732e52be627e7884481fe248ce98e","isMergeCommit":false,"messageTitle":"Add JavaDoc for Kevin","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"e2ec3325d93f647c04fc4f7187ae40b235d2e168","isMergeCommit":false,"messageTitle":"Change Commands to Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":27}}},{"hash":"e4a7caf23666f79fcab755002d8f287d73d291d6","isMergeCommit":false,"messageTitle":"Add find functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":47,"deletions":1}}},{"hash":"eec0bbce6ec42acc18ade23d79f93a10c07e6665","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"02f13c0c92709e1f8f7cfa823fe5993babfd3c67","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b1ddf796d29f64fe0cc5bde634a31d43e47c4b60","isMergeCommit":false,"messageTitle":"Change Commands to Command in Find","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":1}}},{"hash":"afa2c4629414c429e3a96e90ddf1fbda0f894d4e","isMergeCommit":false,"messageTitle":"Add JavaDoc for FindStrategy","messageBody":"","tags":["Level-9","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"aliciamichellew":{"java":1458,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":2,"txt":15}},"authorContributionVariance":{"aliciamichellew":67407.29},"authorDisplayNameMap":{"aliciamichellew":"CS2103T-W10-2 ALIC..WANG"}} diff --git a/alyssaongyx_ip_master/authorship.json b/alyssaongyx_ip_master/authorship.json index 9c19b992..7d08e5b5 100644 --- a/alyssaongyx_ip_master/authorship.json +++ b/alyssaongyx_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Ally.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"alyssaongyx"},"content":"public class Ally {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"alyssaongyx"},"content":" private static final String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"alyssaongyx"},"content":" private static final String greeting \u003d \"Hello! I\u0027m ALLY\\nWhat can I do for you?\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"alyssaongyx"},"content":" private static final String bye \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"alyssaongyx"},"content":" * Function that provides the starting message and greeting.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"alyssaongyx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"alyssaongyx"},"content":" public static void start() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"alyssaongyx"},"content":" * Function that provides the bye message when the user","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"alyssaongyx"},"content":" * ends the chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"alyssaongyx"},"content":" public static void bye() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(bye);","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"alyssaongyx"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"alyssaongyx"},"content":"// String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"alyssaongyx"},"content":"// + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"alyssaongyx"},"content":"// + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"alyssaongyx"},"content":"// + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"alyssaongyx"},"content":"// + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"alyssaongyx"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"alyssaongyx"},"content":" String filePath \u003d \"./data/ally.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"alyssaongyx"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"alyssaongyx"},"content":" AllyList ally \u003d new AllyList();","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"alyssaongyx"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"alyssaongyx"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"alyssaongyx"},"content":" tasks \u003d readData(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"alyssaongyx"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"alyssaongyx"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"alyssaongyx"},"content":" start();","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"alyssaongyx"},"content":" String ipt;","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"alyssaongyx"},"content":" while(true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"alyssaongyx"},"content":" ipt \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"alyssaongyx"},"content":" String[] split \u003d ipt.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"alyssaongyx"},"content":" if (split[0].equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"alyssaongyx"},"content":" bye();","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"alyssaongyx"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"alyssaongyx"},"content":" ally.printElements();","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"alyssaongyx"},"content":" int index \u003d Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"alyssaongyx"},"content":" ally.markAsDone(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"alyssaongyx"},"content":" int index \u003d Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"alyssaongyx"},"content":" ally.unMarkDone(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"alyssaongyx"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"alyssaongyx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"alyssaongyx"},"content":" ally.addTodo(split[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"alyssaongyx"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"alyssaongyx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"alyssaongyx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"alyssaongyx"},"content":" String[] deadline \u003d split[1].split(\" /\");","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"alyssaongyx"},"content":" ally.addDeadline(deadline[0], deadline[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"alyssaongyx"},"content":" } catch (AllyException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(e.getMessage() + e.getLocalizedMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"alyssaongyx"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"alyssaongyx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"alyssaongyx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"alyssaongyx"},"content":" String[] event \u003d split[1].split(\" /\");","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"alyssaongyx"},"content":" ally.addEvent(event[0], event[1], event[2]);","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"alyssaongyx"},"content":" } catch (AllyException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(e.getMessage() + e.getLocalizedMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"alyssaongyx"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"☹ OOPS!!! The description of a delete cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"alyssaongyx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"alyssaongyx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"alyssaongyx"},"content":" int index \u003d Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"alyssaongyx"},"content":" ally.deleteElement(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"alyssaongyx"},"content":" } catch (AllyException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(e.getMessage() + e.getLocalizedMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"alyssaongyx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"alyssaongyx"},"content":" ally.addElements(ipt);","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"alyssaongyx"},"content":" scanner.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"alyssaongyx"},"content":" public static Task constructTaskFromFile(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"alyssaongyx"},"content":" String type \u003d line.substring(1, 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"alyssaongyx"},"content":" String doneString \u003d line.substring(4, 5);","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"alyssaongyx"},"content":" String text \u003d line.substring(7);","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"alyssaongyx"},"content":" String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"alyssaongyx"},"content":" Task newTask \u003d new Task(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"alyssaongyx"},"content":" switch (type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"alyssaongyx"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"alyssaongyx"},"content":" description \u003d text;","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"alyssaongyx"},"content":" newTask \u003d new Todo(text);","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"alyssaongyx"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"alyssaongyx"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"alyssaongyx"},"content":" int OpenBracketIndex \u003d text.indexOf(\"(by: \");","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"alyssaongyx"},"content":" description \u003d text.substring(0, OpenBracketIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"alyssaongyx"},"content":" String by \u003d text.substring(OpenBracketIndex + 5, text.length() - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"alyssaongyx"},"content":" newTask \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"alyssaongyx"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"alyssaongyx"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"alyssaongyx"},"content":" int fromIndex \u003d text.indexOf(\"(from: \");","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"alyssaongyx"},"content":" int toIndex \u003d text.indexOf(\"to: \");","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"alyssaongyx"},"content":" description \u003d text.substring(0, fromIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"alyssaongyx"},"content":" String from \u003d text.substring(fromIndex + 7, toIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"alyssaongyx"},"content":" String to \u003d text.substring(toIndex + 4, text.length() - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"alyssaongyx"},"content":" newTask \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"alyssaongyx"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"alyssaongyx"},"content":" boolean done \u003d doneString.equals(\"X\");","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"alyssaongyx"},"content":" newTask.setMarked();","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"alyssaongyx"},"content":" return newTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"alyssaongyx"},"content":" public static ArrayList\u003cTask\u003e readData(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"alyssaongyx"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"alyssaongyx"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"alyssaongyx"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"alyssaongyx"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"alyssaongyx"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"alyssaongyx"},"content":" tasks.add(constructTaskFromFile(line));","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"alyssaongyx"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"alyssaongyx"},"content":" public static void writeToFile(ArrayList\u003cTask\u003e tasks, String filepath) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"alyssaongyx"},"content":" File file \u003d new File(filepath);","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(System.getProperty(\"user.dir\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"alyssaongyx"},"content":" if (!file.getParentFile().exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"FILE does not exists\");","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"alyssaongyx"},"content":" file.getParentFile().mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"alyssaongyx"},"content":" FileWriter fileWriter \u003d new FileWriter(filepath);","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"alyssaongyx"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"alyssaongyx"},"content":" String line \u003d task.toString() + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"alyssaongyx"},"content":" fileWriter.write(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"alyssaongyx"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":193}},{"path":"src/main/java/AllyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"public class AllyException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":" public AllyException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":5}},{"path":"src/main/java/AllyList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"alyssaongyx"},"content":"public class AllyList {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"alyssaongyx"},"content":" ArrayList\u003cTask\u003e arr;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"alyssaongyx"},"content":" public AllyList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"alyssaongyx"},"content":" arr \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"alyssaongyx"},"content":" * Function to add tasks from the input into the arraylist.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"alyssaongyx"},"content":" * @param str","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"alyssaongyx"},"content":" public void addElements(String str) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"alyssaongyx"},"content":" Task task \u003d new Task(str);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"alyssaongyx"},"content":" arr.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"alyssaongyx"},"content":" * Function to mark the task as done.","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"alyssaongyx"},"content":" * @param index","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"alyssaongyx"},"content":" public void markAsDone(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"alyssaongyx"},"content":" Task task \u003d arr.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"alyssaongyx"},"content":" task.setMarked();","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"alyssaongyx"},"content":" * Function to unmark the task to undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"alyssaongyx"},"content":" * @param index","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"alyssaongyx"},"content":" public void unMarkDone(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"alyssaongyx"},"content":" Task task \u003d arr.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"alyssaongyx"},"content":" task.notDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"alyssaongyx"},"content":" * Prints the current list of tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"alyssaongyx"},"content":" public void printElements() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"alyssaongyx"},"content":" for (int i \u003d 0, len \u003d arr.size(); i \u003c len; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"alyssaongyx"},"content":" System.out.println((i + 1) +\". \" + arr.get(i).toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"alyssaongyx"},"content":" * Prints the task added to the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"alyssaongyx"},"content":" * @param task","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"alyssaongyx"},"content":" public void printNewList(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"Now you have \" + arr.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"alyssaongyx"},"content":" * Function to add a todo into the arr.","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"alyssaongyx"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"alyssaongyx"},"content":" public void addTodo(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"alyssaongyx"},"content":" Todo todo \u003d new Todo(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"alyssaongyx"},"content":" arr.add(todo);","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"alyssaongyx"},"content":" printNewList(todo);","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"alyssaongyx"},"content":" * Function to add a deadline to the arr.","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"alyssaongyx"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"alyssaongyx"},"content":" * @param time","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"alyssaongyx"},"content":" * @throws AllyException","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"alyssaongyx"},"content":" public void addDeadline(String input, String time) throws AllyException {","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"alyssaongyx"},"content":" Deadline ddline \u003d new Deadline(input, time);","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"alyssaongyx"},"content":" arr.add(ddline);","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"alyssaongyx"},"content":" printNewList(ddline);","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"alyssaongyx"},"content":" * Function to add an event to the list or array.","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"alyssaongyx"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"alyssaongyx"},"content":" * @param from","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"alyssaongyx"},"content":" * @param to","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"alyssaongyx"},"content":" * @throws AllyException","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"alyssaongyx"},"content":" public void addEvent(String input, String from, String to) throws AllyException {","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"alyssaongyx"},"content":" Event event \u003d new Event(input, from, to);","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"alyssaongyx"},"content":" arr.add(event);","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"alyssaongyx"},"content":" printNewList(event);","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"alyssaongyx"},"content":" * Function to delete a task from the list or array.","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"alyssaongyx"},"content":" * @param index","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"alyssaongyx"},"content":" * @throws AllyException","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"alyssaongyx"},"content":" public void deleteElement(int index) throws AllyException {","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"\\t\" + arr.get(index));","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"alyssaongyx"},"content":" arr.remove(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"Now you have \" + arr.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":113}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":" * Constructor for Deadline.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"alyssaongyx"},"content":" * @param description","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"alyssaongyx"},"content":" * @param by","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"alyssaongyx"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"alyssaongyx"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"alyssaongyx"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"alyssaongyx"},"content":" * Overrides the toString() method in Task.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"alyssaongyx"},"content":" * @return the string","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"alyssaongyx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"alyssaongyx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"alyssaongyx"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":23}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":" * Constructor for Event.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"alyssaongyx"},"content":" * @param description","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"alyssaongyx"},"content":" * @param from","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"alyssaongyx"},"content":" * @param to","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"alyssaongyx"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"alyssaongyx"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"alyssaongyx"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"alyssaongyx"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"alyssaongyx"},"content":" * Overrides the toString() method in Task.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"alyssaongyx"},"content":" * @return the string","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"alyssaongyx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"alyssaongyx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"alyssaongyx"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to:\" + \" 4pm\" + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":25}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":" * Constructor for Task.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"alyssaongyx"},"content":" * @param description","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"alyssaongyx"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"alyssaongyx"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"alyssaongyx"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"alyssaongyx"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"alyssaongyx"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"alyssaongyx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"alyssaongyx"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"alyssaongyx"},"content":" public void setMarked() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"alyssaongyx"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"alyssaongyx"},"content":" public void notDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"alyssaongyx"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"alyssaongyx"},"content":" //...","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":31}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":" * Constructor for todo.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":" * @param description","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"alyssaongyx"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"alyssaongyx"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"alyssaongyx"},"content":" * Overrides the toString() method in Task.","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"alyssaongyx"},"content":" * @return the string","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"alyssaongyx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"alyssaongyx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"alyssaongyx"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":6}},{"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":"alyssaongyx"},"content":"java -classpath ../bin Ally \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"alyssaongyx":1,"-":37}}] +[{"path":"data/saved.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"T | 0 | return book","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"alyssaongyx":1}},{"path":"src/main/java/Ally.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"alyssaongyx"},"content":"public class Ally {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"alyssaongyx"},"content":" private static final String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"alyssaongyx"},"content":" private static final String greeting \u003d \"Hello! I\u0027m ALLY\\nWhat can I do for you?\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"alyssaongyx"},"content":" private static final String bye \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"alyssaongyx"},"content":" private static final String FILEPATH \u003d \"./data/saved.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"alyssaongyx"},"content":" * Function that provides the starting message and greeting.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"alyssaongyx"},"content":" public static void start() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"alyssaongyx"},"content":" * Function that provides the bye message when the user","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"alyssaongyx"},"content":" * ends the chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"alyssaongyx"},"content":" public static void bye() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(bye);","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"alyssaongyx"},"content":" public static void main(String[] args) throws AllyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"alyssaongyx"},"content":"// String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"alyssaongyx"},"content":"// + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"alyssaongyx"},"content":"// + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"alyssaongyx"},"content":"// + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"alyssaongyx"},"content":"// + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"alyssaongyx"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"alyssaongyx"},"content":" AllyList ally \u003d new AllyList(FILEPATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"alyssaongyx"},"content":" start();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"alyssaongyx"},"content":" String ipt;","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"alyssaongyx"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"alyssaongyx"},"content":" ipt \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"alyssaongyx"},"content":" String[] split \u003d ipt.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"alyssaongyx"},"content":" if (split[0].equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"alyssaongyx"},"content":" bye();","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"alyssaongyx"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"alyssaongyx"},"content":" ally.printElements();","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"alyssaongyx"},"content":" int index \u003d Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"alyssaongyx"},"content":" ally.markAsDone(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"alyssaongyx"},"content":" int index \u003d Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"alyssaongyx"},"content":" ally.unMarkDone(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"alyssaongyx"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"alyssaongyx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"alyssaongyx"},"content":" ally.addTodo(split[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"alyssaongyx"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"alyssaongyx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"alyssaongyx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"alyssaongyx"},"content":" String[] deadline \u003d split[1].split(\" /\");","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"alyssaongyx"},"content":" ally.addDeadline(deadline[0], deadline[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"alyssaongyx"},"content":" } catch (AllyException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(e.getMessage() + e.getLocalizedMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"alyssaongyx"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"alyssaongyx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"alyssaongyx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"alyssaongyx"},"content":" String[] event \u003d split[1].split(\" /\");","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"alyssaongyx"},"content":" ally.addEvent(event[0], event[1], event[2]);","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"alyssaongyx"},"content":" } catch (AllyException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(e.getMessage() + e.getLocalizedMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"alyssaongyx"},"content":" } else if (split[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"alyssaongyx"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"☹ OOPS!!! The description of a delete cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"alyssaongyx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"alyssaongyx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"alyssaongyx"},"content":" int index \u003d Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"alyssaongyx"},"content":" ally.deleteElement(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"alyssaongyx"},"content":" } catch (AllyException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(e.getMessage() + e.getLocalizedMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"alyssaongyx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"alyssaongyx"},"content":" ally.addElements(ipt);","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"alyssaongyx"},"content":" scanner.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"alyssaongyx":128}},{"path":"src/main/java/AllyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"public class AllyException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":" public AllyException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":5}},{"path":"src/main/java/AllyList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"alyssaongyx"},"content":"public class AllyList {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"alyssaongyx"},"content":" ArrayList\u003cTask\u003e arr;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"alyssaongyx"},"content":" String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"alyssaongyx"},"content":" public AllyList(String filePath) throws AllyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"alyssaongyx"},"content":" arr \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"alyssaongyx"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"alyssaongyx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"alyssaongyx"},"content":" load();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"alyssaongyx"},"content":" } catch (AllyException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"alyssaongyx"},"content":" throw new AllyException(\"Unable to load\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"alyssaongyx"},"content":" public void createFile() throws AllyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"alyssaongyx"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"alyssaongyx"},"content":" File dir \u003d new File(f.getParent());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"alyssaongyx"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"alyssaongyx"},"content":" dir.mkdir();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"alyssaongyx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"alyssaongyx"},"content":" if (!f.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"alyssaongyx"},"content":" f.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"alyssaongyx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"alyssaongyx"},"content":" throw new AllyException(\"Ohnos, you can\u0027t create the file :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"alyssaongyx"},"content":" public void appendToFile(Task task) throws AllyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"alyssaongyx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"alyssaongyx"},"content":" FileWriter fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"alyssaongyx"},"content":" fw.write(task.formatFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"alyssaongyx"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"alyssaongyx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"alyssaongyx"},"content":" throw new AllyException(\"Can\u0027t write your file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"alyssaongyx"},"content":" public Task readData(String data) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"alyssaongyx"},"content":" String[] splits \u003d data.split(\" | \");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"alyssaongyx"},"content":" Task savedTasks \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"alyssaongyx"},"content":" if (splits[0].equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"alyssaongyx"},"content":" savedTasks \u003d new Todo(splits[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"alyssaongyx"},"content":" } else if (splits[0].equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"alyssaongyx"},"content":" savedTasks \u003d new Deadline(splits[2], splits[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"alyssaongyx"},"content":" } else if (splits[0].equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"alyssaongyx"},"content":" savedTasks \u003d new Event(splits[2], splits[3], splits[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"alyssaongyx"},"content":" if (splits[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"alyssaongyx"},"content":" savedTasks.setMarked();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"alyssaongyx"},"content":" return savedTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"alyssaongyx"},"content":" public void load() throws AllyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"alyssaongyx"},"content":" ArrayList\u003cTask\u003e loadTasks \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"alyssaongyx"},"content":" createFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"alyssaongyx"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"alyssaongyx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"alyssaongyx"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"alyssaongyx"},"content":" while(s.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"alyssaongyx"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"alyssaongyx"},"content":" loadTasks.add(readData(line));","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"alyssaongyx"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"alyssaongyx"},"content":" throw new AllyException(\"Not able to scan!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"alyssaongyx"},"content":" * Function to add tasks from the input into the arraylist.","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"alyssaongyx"},"content":" * @param str","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"alyssaongyx"},"content":" public void addElements(String str) throws AllyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"alyssaongyx"},"content":" Task task \u003d new Task(str);","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"alyssaongyx"},"content":" arr.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"alyssaongyx"},"content":" appendToFile(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"alyssaongyx"},"content":" * Function to mark the task as done.","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"alyssaongyx"},"content":" * @param index","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"alyssaongyx"},"content":" public void markAsDone(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"alyssaongyx"},"content":" Task task \u003d arr.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"alyssaongyx"},"content":" task.setMarked();","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"alyssaongyx"},"content":" * Function to unmark the task to undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"alyssaongyx"},"content":" * @param index","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"alyssaongyx"},"content":" public void unMarkDone(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"alyssaongyx"},"content":" Task task \u003d arr.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"alyssaongyx"},"content":" task.notDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"alyssaongyx"},"content":" * Prints the current list of tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"alyssaongyx"},"content":" public void printElements() {","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"alyssaongyx"},"content":" for (int i \u003d 0, len \u003d arr.size(); i \u003c len; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"alyssaongyx"},"content":" System.out.println((i + 1) +\". \" + arr.get(i).toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"alyssaongyx"},"content":" * Prints the task added to the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"alyssaongyx"},"content":" * @param task","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"alyssaongyx"},"content":" public void printNewList(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"Now you have \" + arr.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"alyssaongyx"},"content":" * Function to add a todo into the arr.","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"alyssaongyx"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"alyssaongyx"},"content":" public void addTodo(String input) throws AllyException {","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"alyssaongyx"},"content":" Todo todo \u003d new Todo(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"alyssaongyx"},"content":" arr.add(todo);","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"alyssaongyx"},"content":" appendToFile(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"alyssaongyx"},"content":" printNewList(todo);","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"alyssaongyx"},"content":" * Function to add a deadline to the arr.","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"alyssaongyx"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"alyssaongyx"},"content":" * @param time","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"alyssaongyx"},"content":" * @throws AllyException","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"alyssaongyx"},"content":" public void addDeadline(String input, String time) throws AllyException {","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"alyssaongyx"},"content":" Deadline ddline \u003d new Deadline(input, time);","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"alyssaongyx"},"content":" arr.add(ddline);","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"alyssaongyx"},"content":" appendToFile(ddline);","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"alyssaongyx"},"content":" printNewList(ddline);","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"alyssaongyx"},"content":" * Function to add an event to the list or array.","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"alyssaongyx"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"alyssaongyx"},"content":" * @param from","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"alyssaongyx"},"content":" * @param to","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"alyssaongyx"},"content":" * @throws AllyException","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"alyssaongyx"},"content":" public void addEvent(String input, String from, String to) throws AllyException {","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"alyssaongyx"},"content":" Event event \u003d new Event(input, from, to);","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"alyssaongyx"},"content":" arr.add(event);","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"alyssaongyx"},"content":" appendToFile(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"alyssaongyx"},"content":" printNewList(event);","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"alyssaongyx"},"content":" * Function to delete a task from the list or array.","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"alyssaongyx"},"content":" * @param index","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"alyssaongyx"},"content":" * @throws AllyException","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"alyssaongyx"},"content":" public void deleteElement(int index) throws AllyException {","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"\\t\" + arr.get(index));","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"alyssaongyx"},"content":" arr.remove(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"alyssaongyx"},"content":" System.out.println(\"Now you have \" + arr.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":183}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":" protected LocalDateTime byDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"alyssaongyx"},"content":" * Constructor for Deadline.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"alyssaongyx"},"content":" * @param description","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"alyssaongyx"},"content":" * @param by","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"alyssaongyx"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"alyssaongyx"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"alyssaongyx"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"\u0027by \u0027yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"alyssaongyx"},"content":" byDateTime \u003d LocalDateTime.parse(by, inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"alyssaongyx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"alyssaongyx"},"content":" public String formatFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"alyssaongyx"},"content":" return \"D\" + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"alyssaongyx"},"content":" + byDateTime.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\u0027T\u0027HH:mm:ss\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"alyssaongyx"},"content":" * Overrides the toString() method in Task.","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"alyssaongyx"},"content":" * @return the string","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"alyssaongyx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"alyssaongyx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"alyssaongyx"},"content":" return \"[D]\" + super.toString() + \" (by: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"alyssaongyx"},"content":" + byDateTime.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy ha\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":36}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"alyssaongyx"},"content":" * Constructor for Event.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"alyssaongyx"},"content":" * @param description","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"alyssaongyx"},"content":" * @param from","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"alyssaongyx"},"content":" * @param to","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"alyssaongyx"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"alyssaongyx"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"alyssaongyx"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"alyssaongyx"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"alyssaongyx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"alyssaongyx"},"content":" public String formatFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"alyssaongyx"},"content":" return \"E\" + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"alyssaongyx"},"content":" + from + \" | \" + to;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"alyssaongyx"},"content":" * Overrides the toString() method in Task.","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"alyssaongyx"},"content":" * @return the string","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"alyssaongyx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"alyssaongyx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"alyssaongyx"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":34}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":" * Constructor for Task.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"alyssaongyx"},"content":" * @param description","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"alyssaongyx"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"alyssaongyx"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"alyssaongyx"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"alyssaongyx"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"alyssaongyx"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"alyssaongyx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"alyssaongyx"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"alyssaongyx"},"content":" public void setMarked() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"alyssaongyx"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"alyssaongyx"},"content":" public void notDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"alyssaongyx"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"alyssaongyx"},"content":" public String formatFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"alyssaongyx"},"content":" return \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":33}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":" * Constructor for todo.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":" * @param description","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"alyssaongyx"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"alyssaongyx"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"alyssaongyx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"alyssaongyx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"alyssaongyx"},"content":" public String formatFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"alyssaongyx"},"content":" return \"T\" + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"alyssaongyx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"alyssaongyx"},"content":" * Overrides the toString() method in Task.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"alyssaongyx"},"content":" * @return the string","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"alyssaongyx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"alyssaongyx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"alyssaongyx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"alyssaongyx"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"alyssaongyx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"alyssaongyx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":23}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"alyssaongyx"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"alyssaongyx"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"alyssaongyx"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"alyssaongyx"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"alyssaongyx"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"alyssaongyx"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"alyssaongyx":6}},{"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":"alyssaongyx"},"content":"java -classpath ../bin Ally \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"alyssaongyx":1,"-":37}}] diff --git a/alyssaongyx_ip_master/commits.json b/alyssaongyx_ip_master/commits.json index e527b0cf..75556cb1 100644 --- a/alyssaongyx_ip_master/commits.json +++ b/alyssaongyx_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"alyssaongyx":[{"date":"2023-08-23","commitResults":[{"hash":"c42497f2d88692fa470d0b04ec7f0bbade9cec33","isMergeCommit":false,"messageTitle":"Increment to Level-0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":10}}},{"hash":"eb43445f23690f14c016dbdf2b21788c43aa9160","isMergeCommit":false,"messageTitle":"Increment to Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":5}}},{"hash":"bac18bc0a90cd7987b1da4e5c8c0b8c5b7cb57bf","isMergeCommit":false,"messageTitle":"Increment to Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":0}}},{"hash":"9b94382cdba17549eb97fdb3aca8ff08eb042581","isMergeCommit":false,"messageTitle":"New update","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"f64f12e5bb18b344926d191e6a6b395de600a031","isMergeCommit":false,"messageTitle":"Updated","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":23}}},{"hash":"531bc3e99f96793562b8fca6ff9b18b687fa9f48","isMergeCommit":false,"messageTitle":"Increment to Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":7}}},{"hash":"87e0717fc58f0a28c5faa08ea5e405451a8e3981","isMergeCommit":false,"messageTitle":"Increment to Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":8}}},{"hash":"f4fd8a70fdadddbf571d8b29b31bce0fe83416fc","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":6}}},{"hash":"ca66bf06d7589ddbce4b8f0ff808076ac910c576","isMergeCommit":false,"messageTitle":"A-TextUiTesting initial commit","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"66abb301858c399f5abc08ec5e4a5ec349aa7864","isMergeCommit":false,"messageTitle":"Increment to Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":7}}},{"hash":"d5e63a2dccb9ce5381b10b3076be939412851376","isMergeCommit":false,"messageTitle":"Increment to Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"af7b164e1627ae01025b293af59a3a7fe2118753","isMergeCommit":false,"messageTitle":"Updated the print statements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2023-08-24","commitResults":[{"hash":"8236e766b750d93ab33141d9656a8172ec774aba","isMergeCommit":false,"messageTitle":"Added comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":148,"deletions":15}}}]},{"date":"2023-08-30","commitResults":[{"hash":"6be4aa8f2c9ac11e6e6d1f1ccb5d29354a11a704","isMergeCommit":false,"messageTitle":"level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"alyssaongyx":{"java":409,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":6}},"authorContributionVariance":{"alyssaongyx":9147.313},"authorDisplayNameMap":{"alyssaongyx":"CS2103T-W10-2 ALYS..XIAN"}} +{"authorDailyContributionsMap":{"alyssaongyx":[{"date":"2023-08-23","commitResults":[{"hash":"c42497f2d88692fa470d0b04ec7f0bbade9cec33","isMergeCommit":false,"messageTitle":"Increment to Level-0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":10}}},{"hash":"eb43445f23690f14c016dbdf2b21788c43aa9160","isMergeCommit":false,"messageTitle":"Increment to Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":5}}},{"hash":"bac18bc0a90cd7987b1da4e5c8c0b8c5b7cb57bf","isMergeCommit":false,"messageTitle":"Increment to Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":0}}},{"hash":"9b94382cdba17549eb97fdb3aca8ff08eb042581","isMergeCommit":false,"messageTitle":"New update","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"f64f12e5bb18b344926d191e6a6b395de600a031","isMergeCommit":false,"messageTitle":"Updated","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":23}}},{"hash":"531bc3e99f96793562b8fca6ff9b18b687fa9f48","isMergeCommit":false,"messageTitle":"Increment to Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":7}}},{"hash":"87e0717fc58f0a28c5faa08ea5e405451a8e3981","isMergeCommit":false,"messageTitle":"Increment to Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":8}}},{"hash":"f4fd8a70fdadddbf571d8b29b31bce0fe83416fc","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":6}}},{"hash":"ca66bf06d7589ddbce4b8f0ff808076ac910c576","isMergeCommit":false,"messageTitle":"A-TextUiTesting initial commit","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"66abb301858c399f5abc08ec5e4a5ec349aa7864","isMergeCommit":false,"messageTitle":"Increment to Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":7}}},{"hash":"d5e63a2dccb9ce5381b10b3076be939412851376","isMergeCommit":false,"messageTitle":"Increment to Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"af7b164e1627ae01025b293af59a3a7fe2118753","isMergeCommit":false,"messageTitle":"Updated the print statements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2023-08-24","commitResults":[{"hash":"8236e766b750d93ab33141d9656a8172ec774aba","isMergeCommit":false,"messageTitle":"Added comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":148,"deletions":15}}}]},{"date":"2023-08-30","commitResults":[{"hash":"6be4aa8f2c9ac11e6e6d1f1ccb5d29354a11a704","isMergeCommit":false,"messageTitle":"level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"515406cd915e5082fac5a164008565eda2632844","isMergeCommit":false,"messageTitle":"Update Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":106,"deletions":80}}},{"hash":"26f9f3b9760c3ced701f909027071186e25ccdf1","isMergeCommit":false,"messageTitle":"Update deadline file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"alyssaongyx":{"java":442,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":7}},"authorContributionVariance":{"alyssaongyx":9658.194},"authorDisplayNameMap":{"alyssaongyx":"CS2103T-W10-2 ALYS..XIAN"}} diff --git a/antonTan96_ip_master/authorship.json b/antonTan96_ip_master/authorship.json index d8759e12..c5fd5e17 100644 --- a/antonTan96_ip_master/authorship.json +++ b/antonTan96_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"# Cracker project template","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":"3. After that, locate the `src/main/java/Cracker.java` file, right-click it, and choose `Run Cracker.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"antonTan96":2,"-":22}},{"path":"src/main/java/Cracker.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"import Exceptions.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":"public class Cracker {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":" private TodoList list \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":" private Reply reply \u003d new Reply();","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":" enum Type {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":" MARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":" TASK,","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" DELETE","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" private static File getfile(){","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" File file \u003d new File(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":" try{","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":" file.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":" file \u003d new File(\"./data/list.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":" } catch(Exception e){","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":" return file;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"antonTan96"},"content":" public void startService(){","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"antonTan96"},"content":" boolean talking \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"antonTan96"},"content":" FileWriter writer \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"antonTan96"},"content":" try{","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"antonTan96"},"content":" File taskFile \u003d Cracker.getfile();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"antonTan96"},"content":" Scanner setup \u003d new Scanner(taskFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"antonTan96"},"content":" setup.hasNext();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"antonTan96"},"content":" writer \u003d new FileWriter(taskFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"antonTan96"},"content":" list \u003d new TodoList(writer);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"antonTan96"},"content":" while(setup.hasNext()){","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"antonTan96"},"content":" String task \u003d setup.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"antonTan96"},"content":" list.load(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"antonTan96"},"content":" setup.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"antonTan96"},"content":" } catch (Exception e){","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"antonTan96"},"content":" System.out.println(\"This should not be triggered\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"antonTan96"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"antonTan96"},"content":" reply.echo(\"What can I do for you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"antonTan96"},"content":" ArrayList\u003cObject\u003e inLine \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"antonTan96"},"content":" while(talking){","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"antonTan96"},"content":" Type t \u003d null;","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"antonTan96"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"antonTan96"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"antonTan96"},"content":" if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"antonTan96"},"content":" t \u003d Type.MARK;","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"antonTan96"},"content":" int index \u003d Integer.parseInt(input.replace(\"mark\", \"\").trim()) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"antonTan96"},"content":" list.markDone(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"antonTan96"},"content":" inLine.add(list.getTask(index));","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"antonTan96"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"antonTan96"},"content":" t \u003d Type.MARK;","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"antonTan96"},"content":" int index \u003d Integer.parseInt(input.replace(\"unmark\", \"\").trim()) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"antonTan96"},"content":" list.markUndone(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"antonTan96"},"content":" inLine.add(list.getTask(index));","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"antonTan96"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"antonTan96"},"content":" t \u003d Type.TASK;","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"antonTan96"},"content":" list.store(new Deadline(input.replace(\"deadline\", \"\").trim()));","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"antonTan96"},"content":" inLine.add(list.getTask(list.size() - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"antonTan96"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"antonTan96"},"content":" t \u003d Type.TASK;","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"antonTan96"},"content":" list.store(new Event(input.replace(\"event\", \"\").trim()));","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"antonTan96"},"content":" inLine.add(list.getTask(list.size() - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"antonTan96"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"antonTan96"},"content":" t \u003d Type.TASK;","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"antonTan96"},"content":" list.store(new Todo(input.replace(\"todo\", \"\").trim()));","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"antonTan96"},"content":" inLine.add(list.getTask(list.size() - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"antonTan96"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"antonTan96"},"content":" t \u003d Type.DELETE;","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"antonTan96"},"content":" int index \u003d Integer.parseInt(input.replace(\"delete\", \"\").trim()) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"antonTan96"},"content":" inLine.add(list.getTask(index));","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"antonTan96"},"content":" list.deleteTask(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"antonTan96"},"content":" }else {","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"antonTan96"},"content":" switch (input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"antonTan96"},"content":" case \"bye\":","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"antonTan96"},"content":" sc.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"antonTan96"},"content":" talking \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"antonTan96"},"content":" try{","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"antonTan96"},"content":" list.saveToFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"antonTan96"},"content":" } catch (IOException e){","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"antonTan96"},"content":" System.out.println(\"Something wrong happened when saving your tasks\");","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"antonTan96"},"content":" case \"list\":","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"antonTan96"},"content":" reply.iterate(list);","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"antonTan96"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"antonTan96"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"antonTan96"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"antonTan96"},"content":" } catch (UnknownCommandException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"antonTan96"},"content":" reply.echo(e.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":121,"author":{"gitId":"antonTan96"},"content":" if(t \u003d\u003d Type.MARK){","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"antonTan96"},"content":" reply.add(\"Operation Successful: This is the current state of your task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"antonTan96"},"content":" for(int i \u003d 0; i \u003c inLine.size();i++){","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"antonTan96"},"content":" reply.add(inLine.get(i).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"antonTan96"},"content":" reply.echo();","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"antonTan96"},"content":" } else if(t \u003d\u003d Type.TASK){","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"antonTan96"},"content":" reply.add(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"antonTan96"},"content":" reply.add(inLine.get(0).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"antonTan96"},"content":" reply.add(\"Now you have \" + list.size() + \" task(s) in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"antonTan96"},"content":" reply.echo();","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"antonTan96"},"content":" } else if(t \u003d\u003d Type.DELETE){","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"antonTan96"},"content":" reply.add(\"Got it. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"antonTan96"},"content":" reply.add(inLine.get(0).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"antonTan96"},"content":" reply.add(\"Now you have \" + list.size() + \" task(s) in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"antonTan96"},"content":" reply.echo();","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"antonTan96"},"content":" inLine.removeAll(inLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"antonTan96"},"content":" } catch (EmptyDescriptionException e){","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"antonTan96"},"content":" reply.echo(e.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"antonTan96"},"content":" } catch (IndexOutOfBoundsException e){","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"antonTan96"},"content":" reply.echo(\"The index you provided does not exist\");","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"antonTan96"},"content":" } catch (IllegalFormatException e){","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"antonTan96"},"content":" reply.echo(e.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"antonTan96"},"content":" reply.echo(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"antonTan96"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"antonTan96"},"content":" Cracker bot \u003d new Cracker();","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"antonTan96"},"content":" bot.startService();","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":165,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"antonTan96":166}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"import Exceptions.EmptyDescriptionException;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"import Exceptions.IllegalFormatException;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":" private LocalDate deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":" Deadline(String s) throws EmptyDescriptionException, IllegalFormatException {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":" super(s.split(\"/by\",0)[0].trim());","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" if(!s.contains(\"/by\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"Missing \\\"/by\\\" after task description\");","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":" try{","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":" this.deadline \u003d LocalDate.parse(s.split(\"/by\",0)[1].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":" } catch (Exception e){","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"please enter date in yyyy-mm-dd format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" Deadline(String desc,String deadline) throws EmptyDescriptionException {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":" super(desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":" this.deadline \u003d LocalDate.parse(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":" return \"[D]\" + super.toString() + \" (by: \" + getDeadline() +\")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":" public String getDeadline(){ return deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));}","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":30}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"import Exceptions.EmptyDescriptionException;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"import Exceptions.IllegalFormatException;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":" private LocalDate from;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":" private LocalDate to;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" Event(String s) throws EmptyDescriptionException, IllegalFormatException {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":" super(s.split(\"/from\")[0]);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":" //Checking if format is correct","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":" if(!s.contains(\"/from\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"Missing \\\"/from\\\" after Event Description\");","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" } else if(!s.contains(\"/to\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"Missing \\\"/to\\\" after Event Description\");","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":" } else if(s.indexOf(\"/from\") \u003e s.indexOf(\"/to\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"Format of Adding Event is: \\nevent eventDescription /from start /to end \");","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" } else if(s.split(\"/to\").length \u003c\u003d 1){","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"end time is empty\");","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":" //initialize variables","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" try{","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":" this.from \u003d LocalDate.parse(s.split(\"/from\")[1].split(\"/to\")[0].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" this.to \u003d LocalDate.parse(s.split(\"/to\")[1].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":" if(from.isAfter(to)){","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"end time is earlier than start time\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"antonTan96"},"content":" } catch (IllegalFormatException e){","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"antonTan96"},"content":" throw e;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"antonTan96"},"content":" } catch (Exception e){","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"please enter date in yyyy-mm-dd format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"antonTan96"},"content":" //check if they are empty strings","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"antonTan96"},"content":" if(this.from.equals(\"\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"Missing start time\");","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"antonTan96"},"content":" public Event(String desc, String from, String to) throws EmptyDescriptionException{","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"antonTan96"},"content":" super(desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"antonTan96"},"content":" this.from \u003d LocalDate.parse(from);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"antonTan96"},"content":" this.to \u003d LocalDate.parse(to);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"antonTan96"},"content":" public String getStart(){ return from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));}","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"antonTan96"},"content":" public String getEnd(){return to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));}","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"antonTan96"},"content":" return \"[E]\" + super.toString() + \" (from: \" + getStart() +\" to: \"+ getEnd() +\")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":57}},{"path":"src/main/java/Exceptions/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package Exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"public class EmptyDescriptionException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":" return \"Description cannot be empty\";","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":7}},{"path":"src/main/java/Exceptions/IllegalFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package Exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"public class IllegalFormatException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":" String msg;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":" public IllegalFormatException(String s){","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":" msg \u003d s;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":" return msg;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":12}},{"path":"src/main/java/Exceptions/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package Exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"public class UnknownCommandException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":" public UnknownCommandException(){","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":" return \"I have no idea what that means\";","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":10}},{"path":"src/main/java/Reply.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"public class Reply {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":" private String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":" private ArrayList\u003cString\u003e lines;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":" Reply(){","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":" this.lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":" public void echo(String content){","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":" System.out.println(content);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" public void echo(){","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" for(int i \u003d 0;i\u003c lines.size();i++){","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" System.out.println(lines.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":" lines.removeAll(lines);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" public void add(String s){","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":" lines.add(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":" public void iterate(TodoList list){","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"antonTan96"},"content":" this.add(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"antonTan96"},"content":" for(int i \u003d 0 ; i\u003c list.size(); i++){","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"antonTan96"},"content":" this.add((i+1) + \". \" + list.getTask(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"antonTan96"},"content":" echo();","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"antonTan96":38}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"import Exceptions.EmptyDescriptionException;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"public class Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":" private String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":" Task(String s) throws EmptyDescriptionException {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":" if(s.isBlank()){","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" this.description \u003d s;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":" public void markDone(){","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" public void markUndone(){","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" public String getDesc(){","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" return description;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":" public boolean getStatus(){","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":" return isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":" return \"[\" + (isDone?\"X\":\" \") + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":29}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"import Exceptions.EmptyDescriptionException;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":" Todo(String s) throws EmptyDescriptionException {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":11}},{"path":"src/main/java/TodoList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"public class TodoList {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" FileWriter writer;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":" ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":" TodoList(FileWriter f){","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" this.writer \u003d f;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":" public void store(Task s){","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" list.add(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":" public void load(String taskString){","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":" String[] arr \u003d taskString.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" try{","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" switch (taskString.charAt(0)){","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":" case \u0027T\u0027 :","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":" task \u003d new Todo(arr[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"antonTan96"},"content":" case \u0027E\u0027:","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"antonTan96"},"content":" task \u003d new Event(arr[2], arr[3], arr[4]);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"antonTan96"},"content":" case \u0027D\u0027:","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"antonTan96"},"content":" task \u003dnew Deadline(arr[2], arr[3]) ;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"antonTan96"},"content":" default :","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"antonTan96"},"content":" System.out.println(\"Corrupt file detected\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"antonTan96"},"content":" if(Boolean.parseBoolean(arr[1])){","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"antonTan96"},"content":" task.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"antonTan96"},"content":" store(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"antonTan96"},"content":" } catch (Exception e){","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"antonTan96"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"antonTan96"},"content":" System.out.println(\"something bad when loading\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"antonTan96"},"content":" public void markDone(int index){","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"antonTan96"},"content":" list.get(index).markDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"antonTan96"},"content":" public void markUndone(int index){","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"antonTan96"},"content":" list.get(index).markUndone();","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"antonTan96"},"content":" public void deleteTask(int index) {list.remove(index);}","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"antonTan96"},"content":" public String getTask(int index){","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"antonTan96"},"content":" return list.get(index).toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"antonTan96"},"content":" public int size(){ return list.size();}","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"antonTan96"},"content":" public void saveToFile() throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"antonTan96"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"antonTan96"},"content":" for(int i \u003d 0 ; i \u003c list.size();i++){","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"antonTan96"},"content":" StringBuilder taskString \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"antonTan96"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"antonTan96"},"content":" taskString.append(task.toString().charAt(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"antonTan96"},"content":" taskString.append(\u0027|\u0027);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"antonTan96"},"content":" taskString.append(task.getStatus());","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"antonTan96"},"content":" taskString.append(\u0027|\u0027);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"antonTan96"},"content":" taskString.append(task.getDesc());","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"antonTan96"},"content":" taskString.append(\u0027|\u0027);","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"antonTan96"},"content":" if(task instanceof Event){","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"antonTan96"},"content":" taskString.append(LocalDate.parse(((Event) task).getStart(), formatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"antonTan96"},"content":" taskString.append(\u0027|\u0027);","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"antonTan96"},"content":" taskString.append(LocalDate.parse(((Event) task).getEnd(), formatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"antonTan96"},"content":" taskString.append(\u0027|\u0027);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"antonTan96"},"content":" } else if (task instanceof Deadline){","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"antonTan96"},"content":" taskString.append(LocalDate.parse(((Deadline) task).getDeadline(), formatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"antonTan96"},"content":" taskString.append(\u0027|\u0027);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"antonTan96"},"content":" writer.write(taskString + System.lineSeparator());","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"antonTan96"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"antonTan96":92}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"event asd /from 123 /to 321","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":3}},{"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":"antonTan96"},"content":"java -classpath ..\\bin Cracker \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-22"},{"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":{"antonTan96":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"# CrackerPackage.Cracker project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":"3. After that, locate the `src/main/java/CrackerPackage.Cracker.java` file, right-click it, and choose `Run CrackerPackage.Cracker.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"antonTan96":2,"-":22}},{"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":"antonTan96"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"antonTan96"},"content":" mainClass.set(\"CrackerPackage.Cracker\")","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"antonTan96":5,"-":41}},{"path":"src/main/java/CrackerPackage/Cracker.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package CrackerPackage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import Exceptions.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"import UIComponents.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"import UIComponents.Reply;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":"public class Cracker {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":" private TodoList list \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":" private Reply reply \u003d new Reply();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" public enum Type {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":" MARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" UNMARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" TASK,","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":" DELETE,","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":" UNKNOWN,","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":" LIST,","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":" QUIT","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" public void startService(){","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":" boolean talking \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":" FileWriter writer \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"antonTan96"},"content":" storage \u003d new Storage(\"./data/list.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"antonTan96"},"content":" list \u003d storage.load();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"antonTan96"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"antonTan96"},"content":" reply.echo(\"What can I do for you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"antonTan96"},"content":" ArrayList\u003cObject\u003e inLine \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"antonTan96"},"content":" while(talking){","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"antonTan96"},"content":" Type t \u003d null;","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"antonTan96"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"antonTan96"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"antonTan96"},"content":" Type command \u003d Parser.parseCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"antonTan96"},"content":" switch(command){","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"antonTan96"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"antonTan96"},"content":" list.markDone(Parser.parseIndex(input));","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"antonTan96"},"content":" reply.modifyTaskReply(list.getTask(Parser.parseIndex(input)));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"antonTan96"},"content":" case DELETE:","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"antonTan96"},"content":" list.markUndone(Parser.parseIndex(input));","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"antonTan96"},"content":" reply.modifyTaskReply(list.getTask(Parser.parseIndex(input)));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"antonTan96"},"content":" case TASK:","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"antonTan96"},"content":" Task newTask \u003d Parser.parseTask(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"antonTan96"},"content":" list.store(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"antonTan96"},"content":" reply.storeTaskReply(newTask, list.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"antonTan96"},"content":" case UNKNOWN:","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"antonTan96"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"antonTan96"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"antonTan96"},"content":" } catch (UnknownCommandException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"antonTan96"},"content":" reply.echo(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"antonTan96"},"content":" case LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"antonTan96"},"content":" reply.iterate(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"antonTan96"},"content":" case QUIT:","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"antonTan96"},"content":" sc.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"antonTan96"},"content":" talking \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"antonTan96"},"content":" try{","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"antonTan96"},"content":" storage.save(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"antonTan96"},"content":" } catch (IOException e){","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"antonTan96"},"content":" System.out.println(\"Something wrong happened when saving your tasks\");","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"antonTan96"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"antonTan96"},"content":" } catch (EmptyDescriptionException e){","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"antonTan96"},"content":" reply.echo(e.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"antonTan96"},"content":" } catch (IndexOutOfBoundsException e){","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"antonTan96"},"content":" reply.echo(\"The index you provided does not exist\");","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"antonTan96"},"content":" } catch (IllegalFormatException e){","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"antonTan96"},"content":" reply.echo(e.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"antonTan96"},"content":" reply.echo(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"antonTan96"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"antonTan96"},"content":" Cracker bot \u003d new Cracker();","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"antonTan96"},"content":" bot.startService();","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"antonTan96":110}},{"path":"src/main/java/CrackerPackage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package CrackerPackage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"import java.nio.file.FileSystems;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":"import tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" private File file;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":" public Storage(String fileString){","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" this.file \u003d new File(fileString);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":" public void save(TodoList list) throws IOException{","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":" FileWriter writer \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":" if(!this.file.exists()){","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" Path path \u003d FileSystems.getDefault().getPath(\"data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":" Files.createDirectory(path);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" this.file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":" writer \u003d new FileWriter(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"antonTan96"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"antonTan96"},"content":" for(int i \u003d 0 ; i \u003c list.size();i++){","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"antonTan96"},"content":" StringBuilder taskString \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"antonTan96"},"content":" Task task \u003d list.getTask(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"antonTan96"},"content":" taskString.append(list.getTaskString(i).charAt(1));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"antonTan96"},"content":" taskString.append(\u0027|\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"antonTan96"},"content":" taskString.append(task.getStatus());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"antonTan96"},"content":" taskString.append(\u0027|\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"antonTan96"},"content":" taskString.append(task.getDesc());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"antonTan96"},"content":" taskString.append(\u0027|\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"antonTan96"},"content":" if(task instanceof Event){","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"antonTan96"},"content":" taskString.append(LocalDate.parse(((Event) task).getStart(), formatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"antonTan96"},"content":" taskString.append(\u0027|\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"antonTan96"},"content":" taskString.append(LocalDate.parse(((Event) task).getEnd(), formatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"antonTan96"},"content":" taskString.append(\u0027|\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"antonTan96"},"content":" } else if (task instanceof Deadline){","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"antonTan96"},"content":" taskString.append(LocalDate.parse(((Deadline) task).getDeadline(), formatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"antonTan96"},"content":" taskString.append(\u0027|\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"antonTan96"},"content":" writer.write(taskString + System.lineSeparator());","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"antonTan96"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"antonTan96"},"content":" public TodoList load(){","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"antonTan96"},"content":" TodoList list \u003d new TodoList();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"antonTan96"},"content":" Scanner sc \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"antonTan96"},"content":" try{","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"antonTan96"},"content":" sc \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"antonTan96"},"content":" } catch( FileNotFoundException e){","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"antonTan96"},"content":" return list;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"antonTan96"},"content":" while(sc.hasNext()){","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"antonTan96"},"content":" String taskString \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"antonTan96"},"content":" String[] arr \u003d taskString.split(\"\\\\|\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"antonTan96"},"content":" try{","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"antonTan96"},"content":" Task task \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"antonTan96"},"content":" switch (taskString.charAt(0)){","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"antonTan96"},"content":" case \u0027T\u0027 :","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"antonTan96"},"content":" task \u003d new Todo(arr[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"antonTan96"},"content":" case \u0027E\u0027:","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"antonTan96"},"content":" task \u003d new Event(arr[2], arr[3], arr[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"antonTan96"},"content":" case \u0027D\u0027:","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"antonTan96"},"content":" task \u003dnew Deadline(arr[2], arr[3]) ;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"antonTan96"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"antonTan96"},"content":" default :","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"antonTan96"},"content":" System.out.println(\"Corrupt file detected\");","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"antonTan96"},"content":" if(Boolean.parseBoolean(arr[1])){","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"antonTan96"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"antonTan96"},"content":" list.store(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"antonTan96"},"content":" } catch (Exception e){","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"antonTan96"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"antonTan96"},"content":" System.out.println(\"something bad when loading\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"antonTan96"},"content":" return list;","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"antonTan96":96}},{"path":"src/main/java/CrackerPackage/TodoList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package CrackerPackage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":"import tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":"public class TodoList {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":" FileWriter writer;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":" ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" TodoList(){","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" public void store(Task s){","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" list.add(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":" public void markDone(int index){","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" list.get(index).markDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" public void markUndone(int index){","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":" list.get(index).markUndone();","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"antonTan96"},"content":" public void deleteTask(int index) {list.remove(index);}","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"antonTan96"},"content":" public String getTaskString(int index){","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"antonTan96"},"content":" return list.get(index).toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"antonTan96"},"content":" public int size(){ return list.size();}","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"antonTan96"},"content":" public Task getTask(int i){","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"antonTan96"},"content":" return list.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"antonTan96":43}},{"path":"src/main/java/Exceptions/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package Exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"public class EmptyDescriptionException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":" return \"Description cannot be empty\";","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":7}},{"path":"src/main/java/Exceptions/IllegalFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package Exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"public class IllegalFormatException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":" String msg;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":" public IllegalFormatException(String s){","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":" msg \u003d s;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":" return msg;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":12}},{"path":"src/main/java/Exceptions/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package Exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"public class UnknownCommandException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":" public UnknownCommandException(){","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":" return \"I have no idea what that means\";","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":10}},{"path":"src/main/java/UIComponents/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package UIComponents;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import CrackerPackage.Cracker;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"import Exceptions.EmptyDescriptionException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"import Exceptions.IllegalFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"import tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":"import tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":" private String input ;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":" public static Cracker.Type parseCommand(String input){","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" switch(input.split(\" \")[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" return Cracker.Type.MARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":" return Cracker.Type.TASK;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" return Cracker.Type.DELETE;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" return Cracker.Type.LIST;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":" return Cracker.Type.QUIT;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"antonTan96"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"antonTan96"},"content":" return Cracker.Type.UNKNOWN;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"antonTan96"},"content":" public static Task parseTask(String input) throws EmptyDescriptionException, IllegalFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"antonTan96"},"content":" String command \u003d input.split(\" \")[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"antonTan96"},"content":" switch (command.toLowerCase()){","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"antonTan96"},"content":" case \"todo\" :","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"antonTan96"},"content":" return new Todo(input.replaceFirst(command,\"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"antonTan96"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"antonTan96"},"content":" return new Event(input.replaceFirst(command,\"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"antonTan96"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"antonTan96"},"content":" return new Deadline(input.replaceFirst(command,\"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"antonTan96"},"content":" default :","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"antonTan96"},"content":" System.out.println(\"should not be triggered\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"antonTan96"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"antonTan96"},"content":" public static int parseIndex(String input){","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"antonTan96"},"content":" return Integer.parseInt(input.replace(input.split(\" \")[0], \"\").trim()) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"antonTan96":57}},{"path":"src/main/java/UIComponents/Reply.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package UIComponents;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import CrackerPackage.TodoList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"public class Reply {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":" private String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":" private ArrayList\u003cString\u003e lines;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" public Reply(){","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":" this.lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" public void echo(String content){","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":" System.out.println(content);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":" private void echo(){","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":" for(int i \u003d 0;i\u003c lines.size();i++){","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" System.out.println(lines.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":" lines.removeAll(lines);","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"antonTan96"},"content":" private void add(String s){","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"antonTan96"},"content":" lines.add(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"antonTan96"},"content":" public void iterate(TodoList list){","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"antonTan96"},"content":" this.add(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"antonTan96"},"content":" for(int i \u003d 0 ; i\u003c list.size(); i++){","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"antonTan96"},"content":" this.add((i+1) + \". \" + list.getTaskString(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"antonTan96"},"content":" echo();","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"antonTan96"},"content":" public void storeTaskReply(Task t,int size){","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"antonTan96"},"content":" this.add(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"antonTan96"},"content":" this.add(t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"antonTan96"},"content":" this.add(\"Now you have \" + size + \" task(s) in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"antonTan96"},"content":" echo();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"antonTan96"},"content":" public void deleteTaskReply(Task t, int size){","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"antonTan96"},"content":" this.add(\"Got it. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"antonTan96"},"content":" this.add(t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"antonTan96"},"content":" this.add(\"Now you have \" + size + \" task(s) in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"antonTan96"},"content":" echo();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"antonTan96"},"content":" public void modifyTaskReply(Task t){","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"antonTan96"},"content":" this.add(\"Operation done. This is the current state of your task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"antonTan96"},"content":" this.add(t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"antonTan96"},"content":" echo();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"antonTan96":69}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import Exceptions.EmptyDescriptionException;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"import Exceptions.IllegalFormatException;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":" private LocalDate deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" public Deadline(String s) throws EmptyDescriptionException, IllegalFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":" super(s.split(\"/by\",0)[0].trim());","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":" if(!s.contains(\"/by\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"Missing \\\"/by\\\" after task description\");","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":" try{","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" this.deadline \u003d LocalDate.parse(s.split(\"/by\",0)[1].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" } catch (Exception e){","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"please enter date in yyyy-mm-dd format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":" public Deadline(String desc, String deadline) throws EmptyDescriptionException {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":" super(desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":" this.deadline \u003d LocalDate.parse(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":" return \"[D]\" + super.toString() + \" (by: \" + getDeadline() +\")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"antonTan96"},"content":" public String getDeadline(){ return deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));}","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":32}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import Exceptions.EmptyDescriptionException;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"import Exceptions.IllegalFormatException;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":" private LocalDate from;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" private LocalDate to;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":" public Event(String s) throws EmptyDescriptionException, IllegalFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":" super(s.split(\"/from\")[0]);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":" //Checking if format is correct","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" if(!s.contains(\"/from\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"Missing \\\"/from\\\" after tasks.Event Description\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":" } else if(!s.contains(\"/to\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"Missing \\\"/to\\\" after tasks.Event Description\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" } else if(s.indexOf(\"/from\") \u003e s.indexOf(\"/to\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"Format of Adding tasks.Event is: \\nevent eventDescription /from start /to end \");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":" } else if(s.split(\"/to\").length \u003c\u003d 1){","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"end time is empty\");","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":" //initialize variables","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" try{","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":" this.from \u003d LocalDate.parse(s.split(\"/from\")[1].split(\"/to\")[0].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":" this.to \u003d LocalDate.parse(s.split(\"/to\")[1].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"antonTan96"},"content":" if(from.isAfter(to)){","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"end time is earlier than start time\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"antonTan96"},"content":" } catch (IllegalFormatException e){","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"antonTan96"},"content":" throw e;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"antonTan96"},"content":" } catch (Exception e){","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"please enter date in yyyy-mm-dd format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"antonTan96"},"content":" //check if they are empty strings","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"antonTan96"},"content":" if(this.from.equals(\"\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"antonTan96"},"content":" throw new IllegalFormatException(\"Missing start time\");","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"antonTan96"},"content":" public Event(String desc, String from, String to) throws EmptyDescriptionException{","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"antonTan96"},"content":" super(desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"antonTan96"},"content":" this.from \u003d LocalDate.parse(from);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"antonTan96"},"content":" this.to \u003d LocalDate.parse(to);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"antonTan96"},"content":" public String getStart(){ return from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));}","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"antonTan96"},"content":" public String getEnd(){return to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));}","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"antonTan96"},"content":" return \"[E]\" + super.toString() + \" (from: \" + getStart() +\" to: \"+ getEnd() +\")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":59}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import Exceptions.EmptyDescriptionException;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"abstract public class Task{","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":" private String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":" Task(String s) throws EmptyDescriptionException {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":" if(s.isBlank()){","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":" this.description \u003d s;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":" public void markDone(){","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"antonTan96"},"content":" public void markUndone(){","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"antonTan96"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"antonTan96"},"content":" public String getDesc(){","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"antonTan96"},"content":" return description;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"antonTan96"},"content":" public boolean getStatus(){","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"antonTan96"},"content":" return isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"antonTan96"},"content":" return \"[\" + (isDone?\"X\":\" \") + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":31}},{"path":"src/main/java/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import Exceptions.EmptyDescriptionException;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":" public Todo(String s) throws EmptyDescriptionException {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":13}},{"path":"src/test/java/CrackerPackage/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package CrackerPackage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":" public void dummyTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"antonTan96"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"antonTan96"},"content":" public void anotherDummyTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"antonTan96"},"content":" assertEquals(4, 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"antonTan96":17}},{"path":"src/test/java/CrackerPackage/Test1.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"package CrackerPackage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"antonTan96"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"antonTan96"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"antonTan96"},"content":"public class Test1 {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"antonTan96"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"antonTan96"},"content":" public void test1() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"antonTan96"},"content":" assertEquals(1, 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"antonTan96"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"antonTan96"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"antonTan96":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"antonTan96"},"content":"event asd /from 123 /to 321","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"antonTan96"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"antonTan96"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"antonTan96":3}},{"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":"antonTan96"},"content":"java -classpath ..\\bin CrackerPackage.Cracker \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"antonTan96":1,"-":20}}] diff --git a/antonTan96_ip_master/commits.json b/antonTan96_ip_master/commits.json index d3be1c5b..65eac8b5 100644 --- a/antonTan96_ip_master/commits.json +++ b/antonTan96_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"antonTan96":[{"date":"2023-08-22","commitResults":[{"hash":"cfb8cd8df6aa93eadebe6d02a1221664ed321c73","isMergeCommit":false,"messageTitle":"Experimental push","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"56cd741c78363bff01fc846fbb999054ad2fc369","isMergeCommit":false,"messageTitle":"Level-0 Implemeted skeletal version of Cracker(formally Duke)","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":25},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-23","commitResults":[{"hash":"8146ea017cef2333e5418c0ccddcbef56eacdd02","isMergeCommit":false,"messageTitle":"Level-1 added echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":13}}},{"hash":"3cb2fbb84ecb7416fbf09d89aea09e98b98aa434","isMergeCommit":false,"messageTitle":"Level-2 Added ability to store task and list task","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":23}}},{"hash":"930a383d3c4fe6053d9fdf25635efadefb86b402","isMergeCommit":false,"messageTitle":"Level-3 Added ability to mark tasks as done and undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":24}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b1b383f62e1ea944e4ff5448dd1ee1623516b472","isMergeCommit":false,"messageTitle":"Level-4 Added types of Tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":102,"deletions":31}}},{"hash":"f79aab15cbf203fb1a60e77f9b7a331c6e3597cb","isMergeCommit":false,"messageTitle":"A-TextUiTesting Fixed bug for automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"8d3fae62ad955cbe81d0b60beb8f608bd62a6f48","isMergeCommit":false,"messageTitle":"Level-5 Added error Handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":48}}},{"hash":"8f3583dc4efa3bb542df10f4f3cc4f66224bec52","isMergeCommit":false,"messageTitle":"A-Enums Added enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":17}}},{"hash":"80d79025554d745b90d0810e0ac67cea8777310d","isMergeCommit":false,"messageTitle":"Level-5 Added Exceptions handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":2}}},{"hash":"9ea9973859995ac62a0dc95560e7d384e142b324","isMergeCommit":false,"messageTitle":"Level-6 Added ability to delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":5}}}]},{"date":"2023-08-30","commitResults":[{"hash":"054381982316803f7e8cae00ed6cf5d14f866170","isMergeCommit":false,"messageTitle":"Add Save Feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":4}}},{"hash":"c307269d9b6f80bd77a77e47d08b3c11e7778763","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"935676826cbf47379f4e49fd20f2fa05f4478e1c","isMergeCommit":false,"messageTitle":"Add Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":21}}},{"hash":"ada898b198b1245be8b1ac02317f8d9b4be494ae","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"antonTan96":{"java":452,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":3}},"authorContributionVariance":{"antonTan96":11884.197},"authorDisplayNameMap":{"antonTan96":"CS2103T-T08-3 ANTO.. ZHI"}} +{"authorDailyContributionsMap":{"antonTan96":[{"date":"2023-08-22","commitResults":[{"hash":"cfb8cd8df6aa93eadebe6d02a1221664ed321c73","isMergeCommit":false,"messageTitle":"Experimental push","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"56cd741c78363bff01fc846fbb999054ad2fc369","isMergeCommit":false,"messageTitle":"Level-0 Implemeted skeletal version of Cracker(formally Duke)","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":25},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-23","commitResults":[{"hash":"8146ea017cef2333e5418c0ccddcbef56eacdd02","isMergeCommit":false,"messageTitle":"Level-1 added echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":13}}},{"hash":"3cb2fbb84ecb7416fbf09d89aea09e98b98aa434","isMergeCommit":false,"messageTitle":"Level-2 Added ability to store task and list task","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":23}}},{"hash":"930a383d3c4fe6053d9fdf25635efadefb86b402","isMergeCommit":false,"messageTitle":"Level-3 Added ability to mark tasks as done and undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":24}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b1b383f62e1ea944e4ff5448dd1ee1623516b472","isMergeCommit":false,"messageTitle":"Level-4 Added types of Tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":102,"deletions":31}}},{"hash":"f79aab15cbf203fb1a60e77f9b7a331c6e3597cb","isMergeCommit":false,"messageTitle":"A-TextUiTesting Fixed bug for automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"8d3fae62ad955cbe81d0b60beb8f608bd62a6f48","isMergeCommit":false,"messageTitle":"Level-5 Added error Handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":48}}},{"hash":"8f3583dc4efa3bb542df10f4f3cc4f66224bec52","isMergeCommit":false,"messageTitle":"A-Enums Added enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":17}}},{"hash":"80d79025554d745b90d0810e0ac67cea8777310d","isMergeCommit":false,"messageTitle":"Level-5 Added Exceptions handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":2}}},{"hash":"9ea9973859995ac62a0dc95560e7d384e142b324","isMergeCommit":false,"messageTitle":"Level-6 Added ability to delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":5}}}]},{"date":"2023-08-30","commitResults":[{"hash":"054381982316803f7e8cae00ed6cf5d14f866170","isMergeCommit":false,"messageTitle":"Add Save Feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":4}}},{"hash":"c307269d9b6f80bd77a77e47d08b3c11e7778763","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"935676826cbf47379f4e49fd20f2fa05f4478e1c","isMergeCommit":false,"messageTitle":"Add Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":21}}},{"hash":"ada898b198b1245be8b1ac02317f8d9b4be494ae","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c83e2b32f4a70302f1695219417d7d187cf8c2cc","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":98}}},{"hash":"d3c1ae1af07a543fe8a7cc46d8d8fd7fc7d5982b","isMergeCommit":false,"messageTitle":"Add Parser and Refactor code","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":129,"deletions":77}}},{"hash":"c8eec1e7256923a712644dba2478f1a1f9ad1023","isMergeCommit":false,"messageTitle":"Revert \"Refactor code\"","messageBody":"This reverts commit c83e2b32f4a70302f1695219417d7d187cf8c2cc.\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":19},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"f8b8fd776819da94741a9b7209729aa35b1f7ee4","isMergeCommit":true,"messageTitle":"Merge pull request #1 from antonTan96/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}},{"hash":"1334d7c1b2e48a914a3f12dcfd8085fc96e1ff36","isMergeCommit":false,"messageTitle":"Add dependancies","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":1}}},{"hash":"a265b610dbf604b55729f15ca5cf0780a614b082","isMergeCommit":false,"messageTitle":"Add JUnit Test","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":9},"java":{"insertions":15,"deletions":0}}},{"hash":"5261c707c14032cc4127c39e65d677e40d7cdd84","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":9,"deletions":0},"java":{"insertions":16,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"antonTan96":{"java":568,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":5,"txt":3}},"authorContributionVariance":{"antonTan96":30558.771},"authorDisplayNameMap":{"antonTan96":"CS2103T-T08-3 ANTO.. ZHI"}} diff --git a/archive.zip b/archive.zip index e52ae599..6c4b75ae 100644 Binary files a/archive.zip and b/archive.zip differ diff --git a/aslam341_ip_master/authorship.json b/aslam341_ip_master/authorship.json index 9ee8218e..030b7f95 100644 --- a/aslam341_ip_master/authorship.json +++ b/aslam341_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"aslam341":2,"-":22}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"aslam341":1}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" ui.printMessageWithSeparator(\"Error loading duke.tasks from file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" String filePath \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" Duke duke \u003d new Duke(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" duke.run();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" this.ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" Command command \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":" while (true) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" command \u003d Parser.parse(userInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" command.execute(taskList, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":" ui.printMessageWithSeparator(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":" if (command instanceof Command.Exit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":" userInput \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"aslam341":47,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":7}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" public static class Exit extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" ui.showGoodbye();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" throw new DukeException(\"Error saving duke.tasks to file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" public static class List extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":" tasks.list();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" public static class Mark extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" public Mark(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":" int index \u003d taskNumber - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" tasks.markTaskAsDone(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aslam341"},"content":" public static class Unmark extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"aslam341"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"aslam341"},"content":" public Unmark(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"aslam341"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"aslam341"},"content":" int index \u003d taskNumber - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aslam341"},"content":" tasks.unmarkTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"aslam341"},"content":" public static class Delete extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"aslam341"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"aslam341"},"content":" public Delete(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"aslam341"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"aslam341"},"content":" int index \u003d taskNumber - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"aslam341"},"content":" tasks.deleteTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"aslam341"},"content":" public static class Add extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"aslam341"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"aslam341"},"content":" public Add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"aslam341"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"aslam341"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"aslam341"},"content":" public static class Invalid extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"aslam341"},"content":" private String message;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"aslam341"},"content":" public Invalid(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"aslam341"},"content":" this.message \u003d message;","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"aslam341"},"content":" throw new DukeException(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aslam341":101}},{"path":"src/main/java/duke/commands/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"public enum CommandType {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":" BYE,","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":" LIST,","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" MARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":" UNMARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":" DELETE,","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":" ADD_TODO,","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" ADD_DEADLINE,","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" ADD_EVENT,","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" INVALID;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" public static CommandType getCommandType(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" return CommandType.BYE;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" return CommandType.LIST;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" return CommandType.MARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" return CommandType.UNMARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" return CommandType.DELETE;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" return CommandType.ADD_TODO;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" return CommandType.ADD_DEADLINE;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" return CommandType.ADD_EVENT;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" return CommandType.INVALID;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aslam341":36}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"import duke.commands.CommandType;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"import duke.tasks.DeadlineTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"import duke.tasks.EventTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"import duke.tasks.ToDoTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" private static final DateTimeFormatter DATE_INPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" private static final DateTimeFormatter DATE_OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy hh:mm a\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" public static Command parse(String userInput) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" String[] userInputArray \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" String command \u003d userInputArray[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" String commandDetails \u003d userInputArray.length \u003e 1 ? userInputArray[1] : \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" CommandType commandType \u003d CommandType.getCommandType(command);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" switch (commandType) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" case BYE:","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" return new Command.Exit();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" case LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" return new Command.List();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":" if (commandDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a task number to mark as done.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" int taskNumber \u003d Integer.parseInt(commandDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":" return new Command.Mark(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a valid task number to mark as done.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":" case UNMARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"aslam341"},"content":" if (commandDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a task number to unmark.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":" int taskNumber \u003d Integer.parseInt(commandDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":" return new Command.Unmark(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a valid task number to unmark.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"aslam341"},"content":" case DELETE:","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"aslam341"},"content":" if (commandDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a task number to delete.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"aslam341"},"content":" int taskNumber \u003d Integer.parseInt(commandDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"aslam341"},"content":" return new Command.Delete(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aslam341"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a valid task number to delete.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"aslam341"},"content":" case ADD_TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"aslam341"},"content":" if (commandDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"aslam341"},"content":" return new Command.Add(new ToDoTask(commandDetails));","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"aslam341"},"content":" case ADD_DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"aslam341"},"content":" if (commandDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"aslam341"},"content":" } else if (!commandDetails.contains(\"/by\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a deadline in the format: deadline \u003ctask\u003e /by \u003cdate\u003e \u003ctime\u003e\");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"aslam341"},"content":" String[] taskDetailsArray \u003d commandDetails.split(\"/by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"aslam341"},"content":" if (taskDetailsArray.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! The deadline of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"aslam341"},"content":" String taskName \u003d taskDetailsArray[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"aslam341"},"content":" String stringDeadline \u003d taskDetailsArray[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"aslam341"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(stringDeadline, DATE_INPUT_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"aslam341"},"content":" return new Command.Add(new DeadlineTask(taskName, deadline));","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"aslam341"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a valid date and time in the format: dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"aslam341"},"content":" case ADD_EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"aslam341"},"content":" if (commandDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"aslam341"},"content":" } else if (!commandDetails.contains(\"/from\") || !commandDetails.contains(\"/to\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter an event in the format: event \u003ctask\u003e /from \u003cdate\u003e \u003ctime\u003e /to \u003cdate\u003e \u003ctime\u003e\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"aslam341"},"content":" String[] taskDetailsArray \u003d commandDetails.split(\"/from\");","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"aslam341"},"content":" if (taskDetailsArray.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! The start time of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"aslam341"},"content":" String taskName \u003d taskDetailsArray[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"aslam341"},"content":" String[] taskDetailsArray2 \u003d taskDetailsArray[1].split(\"/to\");","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"aslam341"},"content":" if (taskDetailsArray2.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! The end time of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"aslam341"},"content":" String stringStartTime \u003d taskDetailsArray2[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"aslam341"},"content":" String stringEndTime \u003d taskDetailsArray2[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"aslam341"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(stringStartTime, DATE_INPUT_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"aslam341"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(stringEndTime, DATE_INPUT_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"aslam341"},"content":" return new Command.Add(new EventTask(taskName, startTime, endTime));","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"aslam341"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a valid date and time in the format: dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"aslam341"},"content":" case INVALID:","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aslam341":120}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"import duke.tasks.DeadlineTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"import duke.tasks.EventTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"import duke.tasks.ToDoTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" getFile(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" throw e;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" private void getFile(String filePath) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" File directory \u003d file.getParentFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" if (directory.mkdirs()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" System.out.println(\"Directory created: \" + directory.getAbsolutePath());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":" System.out.println(\"Failed to create directory.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":" System.out.println(\"File created: \" + file.getAbsolutePath());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aslam341"},"content":" System.out.println(\"Failed to create file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"aslam341"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"aslam341"},"content":" throw new DukeException(\"Error creating file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"aslam341"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"aslam341"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"aslam341"},"content":" tasks \u003d loadTasksFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"aslam341"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"aslam341"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"aslam341"},"content":" throw new DukeException(\"Error loading duke.tasks from file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"aslam341"},"content":" public ArrayList\u003cTask\u003e loadTasksFromFile() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"aslam341"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"aslam341"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath));","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"aslam341"},"content":" String line;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"aslam341"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"aslam341"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"aslam341"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"aslam341"},"content":" boolean isDone \u003d parts[1].equals(\"X\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"aslam341"},"content":" String taskDescription \u003d parts[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"aslam341"},"content":" Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"aslam341"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"aslam341"},"content":" task \u003d new ToDoTask(taskDescription);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"aslam341"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"aslam341"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(parts[3], Task.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"aslam341"},"content":" task \u003d new DeadlineTask(taskDescription, deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"aslam341"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"aslam341"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], Task.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"aslam341"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], Task.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"aslam341"},"content":" task \u003d new EventTask(taskDescription, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"aslam341"},"content":" throw new IOException(\"Invalid task type found in file. Data file may be corrupted.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"aslam341"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"aslam341"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"aslam341"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"aslam341"},"content":" reader.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"aslam341"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"aslam341"},"content":" public void saveTasksToFile(TaskList taskList) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"aslam341"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"aslam341"},"content":" ArrayList\u003cTask\u003e tasks \u003d taskList.getTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"aslam341"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"aslam341"},"content":" fileWriter.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"aslam341"},"content":" fileWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aslam341":111}},{"path":"src/main/java/duke/tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":" public DeadlineTask(String name, LocalDateTime deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" return \"[D]\" + super.getDescription() + \" (by: \" + deadline.format(super.getDateOutputFormat()) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" return \"D | \" + super.toFileString() + \" | \" + deadline.format(super.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" return super.toString() + \" | \" + deadline.format(super.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":27}},{"path":"src/main/java/duke/tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":" public EventTask(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" return \"[E]\" + super.getDescription() + \" (from: \" + from.format(super.getDateOutputFormat()) + \" to: \" + to.format(super.getDateOutputFormat()) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" return \"E | \" + super.toFileString() + \" | \" + from.format(super.getDateOutputFormat()) + \" | \" + to.format(super.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" return super.toString() + \" | \" + from.format(super.getDateOutputFormat()) + \" | \" + to.format(super.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":29}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" private String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":" private static final DateTimeFormatter OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy hh:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" return this.getStatusIcon() + \" | \" + this.name;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" public static DateTimeFormatter getDateOutputFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" return OUTPUT_FORMAT;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"aslam341"},"content":" return name;","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":43}},{"path":"src/main/java/duke/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"public class TaskList {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"Got it. I\u0027ve added this task:\\n\" + task.getDescription()","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" + \"\\nNow you have \" + tasks.size() + \" duke.tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"Please enter a valid number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"Noted. I\u0027ve removed this task:\\n\" + task.getDescription()","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" + \"\\nNow you have \" + tasks.size() + \" duke.tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" public void markTaskAsDone(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"Please enter a valid number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"Nice! I\u0027ve marked this task as done:\\n\" + task.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"aslam341"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"Please enter a valid number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":" task.unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"OK, I\u0027ve marked this task as not done yet:\\n\" + task.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"aslam341"},"content":" public void list() {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"aslam341"},"content":" System.out.println(Ui.LINE_SEPARATOR);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aslam341"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"aslam341"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"aslam341"},"content":" System.out.println((i + 1) + \". \" + task.getDescription());","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"aslam341"},"content":" System.out.println(Ui.LINE_SEPARATOR);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"aslam341"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"aslam341"},"content":" return this.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":64}},{"path":"src/main/java/duke/tasks/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":" public ToDoTask(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" return \"[T]\" + super.getDescription();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" return \"T | \" + super.toFileString();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" return super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":22}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" public static final String LINE_SEPARATOR \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":" Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" System.out.println(messageWithSeparator(\"Hello! I\u0027m David\\nWhat can I do for you?\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" public void showGoodbye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" System.out.println(messageWithSeparator(\"Bye. Hope to see you again soon!\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" public static String messageWithSeparator(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" return LINE_SEPARATOR+ \"\\n\" + message + \"\\n\" + LINE_SEPARATOR;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":" public static void printMessageWithSeparator(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" System.out.println(messageWithSeparator(message));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aslam341":33}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"deadlne return book /by June 6th (note that first word is misspelled)","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"todo go out and play","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":"mark 5","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":"delete 5","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":16}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"aslam341":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"aslam341":1,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" ui.printMessageWithSeparator(\"Error loading duke.tasks from file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" String filePath \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" Duke duke \u003d new Duke(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" duke.run();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" this.ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" Command command \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":" while (true) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" command \u003d Parser.parse(userInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" command.execute(taskList, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":" ui.printMessageWithSeparator(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":" if (command instanceof Command.Exit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":" userInput \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"aslam341"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"aslam341"},"content":" return taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"aslam341":51,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":7}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" public abstract CommandType getType();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" public static class Exit extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" ui.showGoodbye();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" throw new DukeException(\"Error saving duke.tasks to file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" public CommandType getType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":" return CommandType.BYE;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" public static class List extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" tasks.list();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"aslam341"},"content":" public CommandType getType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":" return CommandType.LIST;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":" public static class Mark extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"aslam341"},"content":" public Mark(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"aslam341"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"aslam341"},"content":" int index \u003d taskNumber - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"aslam341"},"content":" tasks.markTaskAsDone(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"aslam341"},"content":" public CommandType getType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"aslam341"},"content":" return CommandType.MARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"aslam341"},"content":" public static class Unmark extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"aslam341"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"aslam341"},"content":" public Unmark(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"aslam341"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"aslam341"},"content":" int index \u003d taskNumber - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"aslam341"},"content":" tasks.unmarkTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"aslam341"},"content":" public CommandType getType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"aslam341"},"content":" return CommandType.UNMARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"aslam341"},"content":" public static class Delete extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"aslam341"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"aslam341"},"content":" public Delete(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"aslam341"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"aslam341"},"content":" int index \u003d taskNumber - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"aslam341"},"content":" tasks.deleteTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"aslam341"},"content":" public CommandType getType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"aslam341"},"content":" return CommandType.DELETE;","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"aslam341"},"content":" public static class Add extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"aslam341"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"aslam341"},"content":" private CommandType commandType;","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"aslam341"},"content":" public Add(Task task, CommandType commandType) {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"aslam341"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"aslam341"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"aslam341"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"aslam341"},"content":" public CommandType getType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"aslam341"},"content":" return this.commandType;","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"aslam341"},"content":" public static class Invalid extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"aslam341"},"content":" private String message;","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"aslam341"},"content":" public Invalid(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"aslam341"},"content":" this.message \u003d message;","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"aslam341"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"aslam341"},"content":" throw new DukeException(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"aslam341"},"content":" public CommandType getType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"aslam341"},"content":" return CommandType.INVALID;","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aslam341":141}},{"path":"src/main/java/duke/commands/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"public enum CommandType {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":" BYE,","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":" LIST,","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" MARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":" UNMARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":" DELETE,","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":" ADD_TODO,","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" ADD_DEADLINE,","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" ADD_EVENT,","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" INVALID;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" public static CommandType getCommandType(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" return CommandType.BYE;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" return CommandType.LIST;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" return CommandType.MARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" return CommandType.UNMARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" return CommandType.DELETE;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" return CommandType.ADD_TODO;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" return CommandType.ADD_DEADLINE;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" return CommandType.ADD_EVENT;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" return CommandType.INVALID;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aslam341":36}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"import duke.commands.CommandType;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"import duke.tasks.DeadlineTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"import duke.tasks.EventTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"import duke.tasks.ToDoTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" private static final DateTimeFormatter DATE_INPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" private static final DateTimeFormatter DATE_OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy hh:mm a\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" public static Command parse(String userInput) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" String[] userInputArray \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" String command \u003d userInputArray[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" String commandDetails \u003d userInputArray.length \u003e 1 ? userInputArray[1] : \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" CommandType commandType \u003d CommandType.getCommandType(command);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" switch (commandType) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" case BYE:","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" return new Command.Exit();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" case LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" return new Command.List();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":" if (commandDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a task number to mark as done.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" int taskNumber \u003d Integer.parseInt(commandDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":" return new Command.Mark(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a valid task number to mark as done.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":" case UNMARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"aslam341"},"content":" if (commandDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a task number to unmark.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":" int taskNumber \u003d Integer.parseInt(commandDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":" return new Command.Unmark(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a valid task number to unmark.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"aslam341"},"content":" case DELETE:","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"aslam341"},"content":" if (commandDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a task number to delete.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"aslam341"},"content":" int taskNumber \u003d Integer.parseInt(commandDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"aslam341"},"content":" return new Command.Delete(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aslam341"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a valid task number to delete.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"aslam341"},"content":" case ADD_TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"aslam341"},"content":" if (commandDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"aslam341"},"content":" return new Command.Add(new ToDoTask(commandDetails), CommandType.ADD_TODO);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"aslam341"},"content":" case ADD_DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"aslam341"},"content":" if (commandDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"aslam341"},"content":" } else if (!commandDetails.contains(\"/by\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a deadline in the format: deadline \u003ctask\u003e /by \u003cdate\u003e \u003ctime\u003e\");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"aslam341"},"content":" String[] taskDetailsArray \u003d commandDetails.split(\"/by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"aslam341"},"content":" if (taskDetailsArray.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! The deadline of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"aslam341"},"content":" String taskName \u003d taskDetailsArray[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"aslam341"},"content":" String stringDeadline \u003d taskDetailsArray[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"aslam341"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(stringDeadline, DATE_INPUT_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"aslam341"},"content":" return new Command.Add(new DeadlineTask(taskName, deadline), CommandType.ADD_DEADLINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"aslam341"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a valid date and time in the format: dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"aslam341"},"content":" case ADD_EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"aslam341"},"content":" if (commandDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"aslam341"},"content":" } else if (!commandDetails.contains(\"/from\") || !commandDetails.contains(\"/to\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter an event in the format: event \u003ctask\u003e /from \u003cdate\u003e \u003ctime\u003e /to \u003cdate\u003e \u003ctime\u003e\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"aslam341"},"content":" String[] taskDetailsArray \u003d commandDetails.split(\"/from\");","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"aslam341"},"content":" if (taskDetailsArray.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! The start time of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"aslam341"},"content":" String taskName \u003d taskDetailsArray[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"aslam341"},"content":" String[] taskDetailsArray2 \u003d taskDetailsArray[1].split(\"/to\");","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"aslam341"},"content":" if (taskDetailsArray2.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! The end time of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"aslam341"},"content":" String stringStartTime \u003d taskDetailsArray2[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"aslam341"},"content":" String stringEndTime \u003d taskDetailsArray2[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"aslam341"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(stringStartTime, DATE_INPUT_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"aslam341"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(stringEndTime, DATE_INPUT_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"aslam341"},"content":" return new Command.Add(new EventTask(taskName, startTime, endTime), CommandType.ADD_EVENT);","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"aslam341"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! Please enter a valid date and time in the format: dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"aslam341"},"content":" case INVALID:","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"aslam341"},"content":" return new Command.Invalid(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aslam341":120}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"import duke.tasks.DeadlineTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"import duke.tasks.EventTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"import duke.tasks.ToDoTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" getFile(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" throw e;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" private void getFile(String filePath) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" File directory \u003d file.getParentFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" if (directory.mkdirs()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" System.out.println(\"Directory created: \" + directory.getAbsolutePath());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":" System.out.println(\"Failed to create directory.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":" System.out.println(\"File created: \" + file.getAbsolutePath());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aslam341"},"content":" System.out.println(\"Failed to create file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"aslam341"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"aslam341"},"content":" throw new DukeException(\"Error creating file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"aslam341"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"aslam341"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aslam341"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"aslam341"},"content":" tasks \u003d loadTasksFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"aslam341"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"aslam341"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"aslam341"},"content":" throw new DukeException(\"Error loading duke.tasks from file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"aslam341"},"content":" public ArrayList\u003cTask\u003e loadTasksFromFile() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"aslam341"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"aslam341"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath));","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"aslam341"},"content":" String line;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"aslam341"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"aslam341"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"aslam341"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"aslam341"},"content":" boolean isDone \u003d parts[1].equals(\"X\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"aslam341"},"content":" String taskDescription \u003d parts[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"aslam341"},"content":" Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"aslam341"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"aslam341"},"content":" task \u003d new ToDoTask(taskDescription);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"aslam341"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"aslam341"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(parts[3], Task.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"aslam341"},"content":" task \u003d new DeadlineTask(taskDescription, deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"aslam341"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"aslam341"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], Task.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"aslam341"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], Task.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"aslam341"},"content":" task \u003d new EventTask(taskDescription, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"aslam341"},"content":" throw new IOException(\"Invalid task type found in file. Data file may be corrupted.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"aslam341"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"aslam341"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"aslam341"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"aslam341"},"content":" reader.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"aslam341"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"aslam341"},"content":" public void saveTasksToFile(TaskList taskList) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"aslam341"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"aslam341"},"content":" ArrayList\u003cTask\u003e tasks \u003d taskList.getTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"aslam341"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"aslam341"},"content":" fileWriter.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"aslam341"},"content":" fileWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aslam341":111}},{"path":"src/main/java/duke/tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":" public DeadlineTask(String name, LocalDateTime deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" return \"[D]\" + super.getDescription() + \" (by: \" + deadline.format(super.getDateOutputFormat()) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" return \"D | \" + super.toFileString() + \" | \" + deadline.format(super.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" return super.toString() + \" | \" + deadline.format(super.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":27}},{"path":"src/main/java/duke/tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":" public EventTask(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" return \"[E]\" + super.getDescription() + \" (from: \" + from.format(super.getDateOutputFormat()) + \" to: \" + to.format(super.getDateOutputFormat()) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" return \"E | \" + super.toFileString() + \" | \" + from.format(super.getDateOutputFormat()) + \" | \" + to.format(super.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" return super.toString() + \" | \" + from.format(super.getDateOutputFormat()) + \" | \" + to.format(super.getDateOutputFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":29}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" private String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":" private static final DateTimeFormatter OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy hh:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" public boolean isDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" return this.isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" return this.getStatusIcon() + \" | \" + this.name;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":" public static DateTimeFormatter getDateOutputFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"aslam341"},"content":" return OUTPUT_FORMAT;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":" return name;","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":47}},{"path":"src/main/java/duke/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"public class TaskList {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"Got it. I\u0027ve added this task:\\n\" + task.getDescription()","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" + \"\\nNow you have \" + tasks.size() + \" duke.tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"Please enter a valid number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"Noted. I\u0027ve removed this task:\\n\" + task.getDescription()","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" + \"\\nNow you have \" + tasks.size() + \" duke.tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" public void markTaskAsDone(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"Please enter a valid number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"Nice! I\u0027ve marked this task as done:\\n\" + task.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"aslam341"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"Please enter a valid number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":" task.unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":" Ui.printMessageWithSeparator(\"OK, I\u0027ve marked this task as not done yet:\\n\" + task.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"aslam341"},"content":" public void list() {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"aslam341"},"content":" System.out.println(Ui.LINE_SEPARATOR);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aslam341"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"aslam341"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"aslam341"},"content":" System.out.println((i + 1) + \". \" + task.getDescription());","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"aslam341"},"content":" System.out.println(Ui.LINE_SEPARATOR);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"aslam341"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"aslam341"},"content":" return this.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":64}},{"path":"src/main/java/duke/tasks/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":" public ToDoTask(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" return \"[T]\" + super.getDescription();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" return \"T | \" + super.toFileString();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" return super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":22}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":" public static final String LINE_SEPARATOR \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":" Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" System.out.println(messageWithSeparator(\"Hello! I\u0027m David\\nWhat can I do for you?\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" public void showGoodbye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" System.out.println(messageWithSeparator(\"Bye. Hope to see you again soon!\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" public static String messageWithSeparator(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" return LINE_SEPARATOR+ \"\\n\" + message + \"\\n\" + LINE_SEPARATOR;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":" public static void printMessageWithSeparator(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" System.out.println(messageWithSeparator(message));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aslam341":33}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import duke.commands.CommandType;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":" public void testParseByeCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.BYE, Parser.parse(\"bye\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" public void testParseListCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.LIST, Parser.parse(\"list\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" public void testParseAddTodoCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.ADD_TODO, Parser.parse(\"todo Task\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" public void testParseAddDeadlineCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.ADD_DEADLINE, Parser.parse(\"deadline Task /by 01/01/2023 1200\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" public void testParseAddEventCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.ADD_EVENT, Parser.parse(\"event Task /from 01/01/2023 1200 /to 01/01/2023 1400\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" public void testParseMarkCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.MARK, Parser.parse(\"mark 1\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":" public void testParseUnmarkCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.UNMARK, Parser.parse(\"unmark 1\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" public void testParseDeleteCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.DELETE, Parser.parse(\"delete 1\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"aslam341"},"content":" public void testParseInvalidCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.INVALID, Parser.parse(\"invalid\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"aslam341"},"content":" public void testParseInvalidTodoCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.INVALID, Parser.parse(\"todo\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"aslam341"},"content":" public void testParseInvalidDeadlineCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.INVALID, Parser.parse(\"deadline Task\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"aslam341"},"content":" public void testParseInvalidEventCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.INVALID, Parser.parse(\"event Task /from 01/01/2023 1200\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"aslam341"},"content":" public void testParseInvalidMarkCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.INVALID, Parser.parse(\"mark\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"aslam341"},"content":" public void testParseInvalidDeleteCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"aslam341"},"content":" assertEquals(CommandType.INVALID, Parser.parse(\"delete\").getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aslam341":77}},{"path":"src/test/java/duke/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":" private Duke duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":" public void setUp() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":" duke \u003d new Duke(\"./data/test.txt\"); // Use a test file path","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"aslam341"},"content":" public void testAddTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"aslam341"},"content":" Task task \u003d new ToDoTask(\"Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"aslam341"},"content":" duke.getTaskList().addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"aslam341"},"content":" ArrayList\u003cTask\u003e tasks \u003d duke.getTaskList().getTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"aslam341"},"content":" assertEquals(1, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"aslam341"},"content":" assertEquals(task, tasks.get(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"aslam341"},"content":" public void testDeleteTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"aslam341"},"content":" Task task1 \u003d new ToDoTask(\"Task1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"aslam341"},"content":" Task task2 \u003d new ToDoTask(\"Task2\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"aslam341"},"content":" duke.getTaskList().addTask(task1);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"aslam341"},"content":" duke.getTaskList().addTask(task2);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"aslam341"},"content":" duke.getTaskList().deleteTask(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"aslam341"},"content":" ArrayList\u003cTask\u003e tasks \u003d duke.getTaskList().getTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"aslam341"},"content":" assertEquals(1, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"aslam341"},"content":" assertEquals(task2, tasks.get(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"aslam341"},"content":" public void testMarkTaskAsDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"aslam341"},"content":" Task task \u003d new ToDoTask(\"Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"aslam341"},"content":" duke.getTaskList().addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"aslam341"},"content":" duke.getTaskList().markTaskAsDone(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"aslam341"},"content":" ArrayList\u003cTask\u003e tasks \u003d duke.getTaskList().getTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"aslam341"},"content":" assertEquals(true, tasks.get(0).isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"aslam341"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"aslam341"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"aslam341"},"content":" public void testUnmarkTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"aslam341"},"content":" Task task \u003d new ToDoTask(\"Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"aslam341"},"content":" duke.getTaskList().addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"aslam341"},"content":" duke.getTaskList().markTaskAsDone(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"aslam341"},"content":" duke.getTaskList().unmarkTask(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"aslam341"},"content":" ArrayList\u003cTask\u003e tasks \u003d duke.getTaskList().getTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"aslam341"},"content":" assertEquals(false, tasks.get(0).isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"aslam341"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"aslam341"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"aslam341":57}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"aslam341"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"aslam341"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"aslam341"},"content":"deadlne return book /by June 6th (note that first word is misspelled)","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"aslam341"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"aslam341"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"aslam341"},"content":"todo go out and play","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"aslam341"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"aslam341"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"aslam341"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"aslam341"},"content":"mark 5","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"aslam341"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"aslam341"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"aslam341"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"aslam341"},"content":"delete 5","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"aslam341"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"aslam341"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"aslam341":16}}] diff --git a/aslam341_ip_master/commits.json b/aslam341_ip_master/commits.json index 9dd5effa..cb762b85 100644 --- a/aslam341_ip_master/commits.json +++ b/aslam341_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"aslam341":[{"date":"2023-08-24","commitResults":[{"hash":"a041286202e928e2ee016bb0426e344dd51e58b8","isMergeCommit":false,"messageTitle":"Rename chatbot to David","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":6}}},{"hash":"84cd062b797ff6928af840bbb4ec20e68d59e8c7","isMergeCommit":false,"messageTitle":"Implement initial skeleton version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"d78465d27414e474e455515bec92b815d4a39f1e","isMergeCommit":false,"messageTitle":"Echoes user commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":4}}},{"hash":"f236ed7acffad09ab9df861c46e173cde7e2eef5","isMergeCommit":false,"messageTitle":"Use existing function to greet","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":4}}},{"hash":"c5a0938c72d78784a78bd6cf21c077bd2ac7d9e9","isMergeCommit":false,"messageTitle":"Add ability to store and display tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":1}}},{"hash":"b2fe9eaf2dafb3133ab6b3a792b997dbf53ebf0f","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"93fab9cf42dfefd4323a777d2a91305860afe147","isMergeCommit":false,"messageTitle":"Added mark and unmark task function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":15}}},{"hash":"cdaf50201a8f7034c54254f2455cb7d9575e6abd","isMergeCommit":false,"messageTitle":"Implement three types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":12}}},{"hash":"adb6a759646029d7f30235ba642d2b845c58c5c2","isMergeCommit":false,"messageTitle":"Add automated text UI test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"f2268f7117a57cf027add68cb2554b87b7833cfc","isMergeCommit":false,"messageTitle":"Handle incorrect inputs by users","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":21}}},{"hash":"906b0c4499a3a204d7002b72ed3af6ddd708e72a","isMergeCommit":false,"messageTitle":"Add ability to delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":8}}},{"hash":"908163458771defdb224341219986882e0bfdd4d","isMergeCommit":false,"messageTitle":"Update automated text UI test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":3}}}]},{"date":"2023-08-30","commitResults":[{"hash":"57b99f5cc110b06d3d1f5e82df1ab1a8b8bc7a89","isMergeCommit":false,"messageTitle":"Add file string format for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"4d73207ccbe7bc22d142fe9c2d981813e26c5bce","isMergeCommit":false,"messageTitle":"Add save tasks to file feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":19,"deletions":0}}},{"hash":"50addd7ce7f8b3ce8e92bea8e7ad46668db81fed","isMergeCommit":false,"messageTitle":"Add load tasks from file feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":1}}},{"hash":"39537667255090921b45e76594b18d4f18fb4a5b","isMergeCommit":false,"messageTitle":"Handle case where data folder or file not found","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"18e24dd04f55b82aac3f0a2eff4ad687ef99a207","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"81d86598899d0909619ee6272d77a11a8f6c8da2","isMergeCommit":false,"messageTitle":"Add date and time to deadline and event tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":19}}},{"hash":"1ee720637c557d88881551d65e0fcec617ee792f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"a19d7c5dab55fe15dbba58aa509398a036f64161","isMergeCommit":false,"messageTitle":"Add Storage and Ui classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":0}}},{"hash":"26a63f13aaf14ef2609ad4b65aeb30c44dd7c74f","isMergeCommit":false,"messageTitle":"Add Parser and Command classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":239,"deletions":0}}},{"hash":"980f451e7ec7b61ecd80df5e0fc3152a2a574843","isMergeCommit":false,"messageTitle":"Update Storage and Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":7}}},{"hash":"e0a47bb3d1ddc03d5aab8e7037292368754af1a5","isMergeCommit":false,"messageTitle":"Update main and tasks to use new classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":232}}},{"hash":"e6f71bc192722bb229440fa5714d39edfa5a7c05","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"ac829e66e015a58f2c6814617bf3aa0e9a110681","isMergeCommit":false,"messageTitle":"Shift java files into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":5},"md":{"insertions":2,"deletions":2}}},{"hash":"413b6e3b07338f7dc5964e2fb5e6d2df7b0d6d53","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"aslam341":{"java":640,"md":2,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":17}},"authorContributionVariance":{"aslam341":40325.555},"authorDisplayNameMap":{"aslam341":"CS2103T-T08-3 ASLA..SLAM"}} +{"authorDailyContributionsMap":{"aslam341":[{"date":"2023-08-24","commitResults":[{"hash":"a041286202e928e2ee016bb0426e344dd51e58b8","isMergeCommit":false,"messageTitle":"Rename chatbot to David","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":6}}},{"hash":"84cd062b797ff6928af840bbb4ec20e68d59e8c7","isMergeCommit":false,"messageTitle":"Implement initial skeleton version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"d78465d27414e474e455515bec92b815d4a39f1e","isMergeCommit":false,"messageTitle":"Echoes user commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":4}}},{"hash":"f236ed7acffad09ab9df861c46e173cde7e2eef5","isMergeCommit":false,"messageTitle":"Use existing function to greet","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":4}}},{"hash":"c5a0938c72d78784a78bd6cf21c077bd2ac7d9e9","isMergeCommit":false,"messageTitle":"Add ability to store and display tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":1}}},{"hash":"b2fe9eaf2dafb3133ab6b3a792b997dbf53ebf0f","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"93fab9cf42dfefd4323a777d2a91305860afe147","isMergeCommit":false,"messageTitle":"Added mark and unmark task function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":15}}},{"hash":"cdaf50201a8f7034c54254f2455cb7d9575e6abd","isMergeCommit":false,"messageTitle":"Implement three types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":12}}},{"hash":"adb6a759646029d7f30235ba642d2b845c58c5c2","isMergeCommit":false,"messageTitle":"Add automated text UI test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"f2268f7117a57cf027add68cb2554b87b7833cfc","isMergeCommit":false,"messageTitle":"Handle incorrect inputs by users","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":21}}},{"hash":"906b0c4499a3a204d7002b72ed3af6ddd708e72a","isMergeCommit":false,"messageTitle":"Add ability to delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":8}}},{"hash":"908163458771defdb224341219986882e0bfdd4d","isMergeCommit":false,"messageTitle":"Update automated text UI test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":3}}}]},{"date":"2023-08-30","commitResults":[{"hash":"57b99f5cc110b06d3d1f5e82df1ab1a8b8bc7a89","isMergeCommit":false,"messageTitle":"Add file string format for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"4d73207ccbe7bc22d142fe9c2d981813e26c5bce","isMergeCommit":false,"messageTitle":"Add save tasks to file feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":19,"deletions":0}}},{"hash":"50addd7ce7f8b3ce8e92bea8e7ad46668db81fed","isMergeCommit":false,"messageTitle":"Add load tasks from file feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":1}}},{"hash":"39537667255090921b45e76594b18d4f18fb4a5b","isMergeCommit":false,"messageTitle":"Handle case where data folder or file not found","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"18e24dd04f55b82aac3f0a2eff4ad687ef99a207","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"81d86598899d0909619ee6272d77a11a8f6c8da2","isMergeCommit":false,"messageTitle":"Add date and time to deadline and event tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":19}}},{"hash":"1ee720637c557d88881551d65e0fcec617ee792f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"a19d7c5dab55fe15dbba58aa509398a036f64161","isMergeCommit":false,"messageTitle":"Add Storage and Ui classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":0}}},{"hash":"26a63f13aaf14ef2609ad4b65aeb30c44dd7c74f","isMergeCommit":false,"messageTitle":"Add Parser and Command classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":239,"deletions":0}}},{"hash":"980f451e7ec7b61ecd80df5e0fc3152a2a574843","isMergeCommit":false,"messageTitle":"Update Storage and Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":7}}},{"hash":"e0a47bb3d1ddc03d5aab8e7037292368754af1a5","isMergeCommit":false,"messageTitle":"Update main and tasks to use new classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":232}}},{"hash":"e6f71bc192722bb229440fa5714d39edfa5a7c05","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"ac829e66e015a58f2c6814617bf3aa0e9a110681","isMergeCommit":false,"messageTitle":"Shift java files into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":5},"md":{"insertions":2,"deletions":2}}},{"hash":"413b6e3b07338f7dc5964e2fb5e6d2df7b0d6d53","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"df24bfbe75e57a0d53a623b6063e2eef5c4e4bf4","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 into branch-A-gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6c6b4dd0d8a700f43cc95fc6c1c700a9761617a7","isMergeCommit":false,"messageTitle":"Change mainClass property","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":1}}},{"hash":"4ab06c28bf67d481c519c9002dfe282ee52e7d2a","isMergeCommit":false,"messageTitle":"Add skeleton code for unit test","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"4c6589a49e0df4025b6ffe7c81aabf8d715a6d3c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"ef0e2e589d718ce0dc82e58fb89e3d816407105c","isMergeCommit":false,"messageTitle":"Add ParserTest JUnit test","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":21}}},{"hash":"8f234be893afad6796d3e3551f22f7207b2a0954","isMergeCommit":false,"messageTitle":"Modify import statement in ParserTest","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"9e768603f1b55a6412c8ad2be07b8fa5a74af9b2","isMergeCommit":false,"messageTitle":"Add TaskListTest JUnit test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":65,"deletions":0}}},{"hash":"f3784ab30d88acb4ef5628bc82d44c8128f74cdf","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"aslam341":{"java":822,"md":2,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":16}},"authorContributionVariance":{"aslam341":63292.727},"authorDisplayNameMap":{"aslam341":"CS2103T-T08-3 ASLA..SLAM"}} diff --git a/awhb_ip_master/authorship.json b/awhb_ip_master/authorship.json index b4ad0637..5282c587 100644 --- a/awhb_ip_master/authorship.json +++ b/awhb_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/ChadBod.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":"public class ChadBod {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" private static final String FILE_PATH \u003d \"./data/tasks.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" private static void saveTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" // Create necessary directories and files","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"awhb"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"awhb"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"awhb"},"content":" writer.write(task.toFileString());","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"awhb"},"content":" writer.newLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"awhb"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"awhb"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"awhb"},"content":" System.out.println(\"Error saving tasks to file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"awhb"},"content":" } catch (SecurityException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"awhb"},"content":" System.out.println(\"Error writing to file. Check permissions.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"awhb"},"content":" private static ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"awhb"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"awhb"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(FILE_PATH))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"awhb"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"awhb"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"awhb"},"content":" Task task \u003d Task.fromString(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"awhb"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"awhb"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"awhb"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"awhb"},"content":" System.out.println(\"File content invalid. Skipping this task.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"awhb"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"awhb"},"content":" System.out.println(\"Task storage file not found. Starting with an empty task list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"awhb"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"awhb"},"content":" System.out.println(\"Error parsing task storage file. Starting with an empty task list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"awhb"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"awhb"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"awhb"},"content":" ArrayList\u003cTask\u003e tasks \u003d loadTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"awhb"},"content":" System.out.println(\"Hello! I\u0027m ChadBod.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"awhb"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"awhb"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"awhb"},"content":" boolean shouldExit \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"awhb"},"content":" while (!shouldExit) {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"awhb"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"awhb"},"content":" // may need try catch here","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"awhb"},"content":" String[] commandArray \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"awhb"},"content":" Command command \u003d null;","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"awhb"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"awhb"},"content":" if (commandArray.length \u003e 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"awhb"},"content":" String commandString \u003d commandArray[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"awhb"},"content":" for (Command cmd : Command.values()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"awhb"},"content":" if (cmd.getValue().equals(commandString)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"awhb"},"content":" command \u003d cmd;","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"awhb"},"content":" if (command \u003d\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"awhb"},"content":" throw new InvalidInputException();","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"awhb"},"content":" switch (command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"awhb"},"content":" case BYE:","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"awhb"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"awhb"},"content":" shouldExit \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"awhb"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"awhb"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"awhb"},"content":" System.out.println(\"There are no tasks in your list!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"awhb"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"awhb"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"awhb"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i ++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"awhb"},"content":" System.out.printf(\"%d.%s\\n\", i + 1, tasks.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"awhb"},"content":" case MARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"awhb"},"content":" int markTaskNumber \u003d Integer.parseInt(commandArray[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"awhb"},"content":" if (markTaskNumber \u003c 1 || markTaskNumber \u003e tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"awhb"},"content":" throw new TaskIndexOutOfBoundsException();","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"awhb"},"content":" Task markedTask \u003d tasks.get(markTaskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"awhb"},"content":" markedTask.markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"awhb"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"awhb"},"content":" System.out.printf(\"%s\\n\", markedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"awhb"},"content":" saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"awhb"},"content":" case UNMARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"awhb"},"content":" int unmarkTaskNumber \u003d Integer.parseInt(commandArray[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"awhb"},"content":" if (unmarkTaskNumber \u003c 1 || unmarkTaskNumber \u003e tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"awhb"},"content":" throw new TaskIndexOutOfBoundsException();","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"awhb"},"content":" Task unmarkedTask \u003d tasks.get(unmarkTaskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"awhb"},"content":" unmarkedTask.markUndone();","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"awhb"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"awhb"},"content":" System.out.printf(\"%s\\n\", unmarkedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"awhb"},"content":" saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"awhb"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"awhb"},"content":" if (commandArray.length \u003c 2 || commandArray[1].isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Description of todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"awhb"},"content":" Todo newTodo \u003d new Todo(commandArray[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"awhb"},"content":" tasks.add(newTodo);","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"awhb"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"awhb"},"content":" System.out.println(newTodo);","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"awhb"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", tasks.size());","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"awhb"},"content":" saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"awhb"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"awhb"},"content":" if (commandArray.length \u003c 2 || commandArray[1].isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Description of deadline cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"awhb"},"content":" String[] deadlineDetails \u003d commandArray[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"awhb"},"content":" if (deadlineDetails.length \u003c 2 || deadlineDetails[1].isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Deadline due date cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"awhb"},"content":" LocalDateTime byDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"awhb"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"awhb"},"content":" byDate \u003d LocalDateTime.parse(deadlineDetails[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"awhb"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Deadline due date/time not in ISO format. (e.g. 2007-12-03T10:15:30)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"awhb"},"content":" Deadline newDeadline \u003d new Deadline(deadlineDetails[0], byDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"awhb"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"awhb"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"awhb"},"content":" System.out.println(newDeadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"awhb"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", tasks.size());","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"awhb"},"content":" saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"awhb"},"content":" case EVENT:","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"awhb"},"content":" if (commandArray.length \u003c 2 || commandArray[1].isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Description of event cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"awhb"},"content":" String[] eventDetails \u003d commandArray[1].split(\" /from \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"awhb"},"content":" if (eventDetails.length \u003c 2 || eventDetails[1].isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Event timings cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"awhb"},"content":" String[] eventTimings \u003d eventDetails[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"awhb"},"content":" if (eventTimings.length \u003c 2 || eventTimings[1].isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Event from and to timings cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"awhb"},"content":" LocalDateTime fromDate, toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"awhb"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"awhb"},"content":" fromDate \u003d LocalDateTime.parse(eventTimings[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"awhb"},"content":" toDate \u003d LocalDateTime.parse(eventTimings[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"awhb"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Deadline due date/time not in ISO format. (e.g. 2007-12-03T10:15:30)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"awhb"},"content":" Event newEvent \u003d new Event(eventDetails[0], fromDate, toDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"awhb"},"content":" tasks.add(newEvent);","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"awhb"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"awhb"},"content":" System.out.println(newEvent);","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"awhb"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", tasks.size());","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"awhb"},"content":" saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"awhb"},"content":" case DELETE:","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"awhb"},"content":" int taskNumber \u003d Integer.parseInt(commandArray[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"awhb"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"awhb"},"content":" throw new TaskIndexOutOfBoundsException();","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"awhb"},"content":" Task deletedTask \u003d tasks.remove(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"awhb"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"awhb"},"content":" System.out.printf(\"%s\\n\", deletedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"awhb"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", tasks.size());","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"awhb"},"content":" saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"awhb"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"awhb"},"content":" throw new InvalidInputException();","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"awhb"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"awhb"},"content":" System.out.println(\"☹ OOPS!!! Invalid task index.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"awhb"},"content":" } catch (ChadBodException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"awhb"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":199,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":201,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"awhb":201}},{"path":"src/main/java/ChadBodException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"public class ChadBodException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" public ChadBodException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" super(\"☹ OOPS!!! \" + message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"awhb":7}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"enum Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" BYE(\"bye\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" MARK(\"mark\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":" TODO(\"todo\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" DEADLINE(\"deadline\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" EVENT(\"event\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" DELETE(\"delete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":" private final String value;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" Command(String value) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" this.value \u003d value;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":" public String getValue() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" return value;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"awhb":22}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm:ss\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" return String.format(\"D | %d | %s | %s\", this.isDone ? 1 : 0, this.description,","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" this.by);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"awhb":25}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":" this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm:ss\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm:ss\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"awhb"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"awhb"},"content":" return String.format(\"E | %d | %s | %s | %s\", this.isDone ? 1 : 0, this.description, this.from, this.to);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"awhb":29}},{"path":"src/main/java/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"public class InvalidInputException extends ChadBodException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" public InvalidInputException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" super(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"awhb":7}},{"path":"src/main/java/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"public class InvalidTaskException extends ChadBodException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" public InvalidTaskException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"awhb":7}},{"path":"src/main/java/ParsedCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;public class ParsedCommand {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"awhb":2}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"awhb":2}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"awhb":2}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" public void markDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"awhb"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"awhb"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"awhb"},"content":" public static Task fromString(String line) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"awhb"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"awhb"},"content":" if (parts.length \u003e\u003d 3 \u0026\u0026 parts[0].equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"awhb"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"awhb"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"awhb"},"content":" Task t \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"awhb"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"awhb"},"content":" t.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"awhb"},"content":" return t;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"awhb"},"content":" } else if (parts.length \u003e\u003d 4 \u0026\u0026 parts[0].equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"awhb"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"awhb"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"awhb"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(parts[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"awhb"},"content":" Task t \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"awhb"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"awhb"},"content":" t.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"awhb"},"content":" return t;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"awhb"},"content":" } else if (parts.length \u003e\u003d 5 \u0026\u0026 parts[0].equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"awhb"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"awhb"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"awhb"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"awhb"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"awhb"},"content":" Task t \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"awhb"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"awhb"},"content":" t.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"awhb"},"content":" return t;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"awhb"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"awhb"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"awhb"},"content":" public abstract String toFileString();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"awhb":66}},{"path":"src/main/java/TaskIndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"public class TaskIndexOutOfBoundsException extends ChadBodException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" public TaskIndexOutOfBoundsException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" super(\"Invalid task index.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"awhb":7}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"awhb":2}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" return String.format(\"T | %d | %s\", this.isDone ? 1 : 0, this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"awhb":17}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package main.java;public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"awhb":2}},{"path":"text-ui-test/data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"T | 1 | read book","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"D | 0 | return book | 2023-06-06T00:00","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"E | 0 | project meeting | 2023-08-06T14:00 | 2023-08-06T16:00","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"T | 1 | join sports club","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"T | 0 | borrow book","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"awhb":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"deadline return book /by 2023-06-06T00:00:00","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"event project meeting /from 2023-08-06T14:00:00 /to 2023-08-06T16:00:00","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"todo join sports club","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"awhb":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":"awhb"},"content":"java -classpath ../bin main.java.ChadBod \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":{"-":37,"awhb":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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"awhb"},"content":" mainClass.set(\"chadbod.ChadBod\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"awhb"},"content":" archiveBaseName \u003d \"chadbod\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"awhb"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":40,"awhb":3}},{"path":"src/main/java/chadbod/ChadBod.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":" * The ChadBod class represents a task management application.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":"public class ChadBod {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" private static final String FILE_PATH \u003d \"./data/tasks.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" private static final int TASKLIST_DISPLAY_OFFSET \u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" * Constructs a ChadBod instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" * @param filePath The file path for storing task data.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" public ChadBod(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"awhb"},"content":" tasks \u003d storage.loadTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"awhb"},"content":" } catch (ChadBodException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"awhb"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"awhb"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"awhb"},"content":" * Starts the ChadBod application.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"awhb"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"awhb"},"content":" ui.showGreeting();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"awhb"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"awhb"},"content":" boolean shouldExit \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"awhb"},"content":" while (!shouldExit) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"awhb"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"awhb"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"awhb"},"content":" ParsedCommand parsedCommand \u003d Parser.parseCommand(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"awhb"},"content":" String details \u003d parsedCommand.getDetails();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"awhb"},"content":" switch (parsedCommand.getCommand()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"awhb"},"content":" case BYE:","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"awhb"},"content":" ui.showFarewell();","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"awhb"},"content":" shouldExit \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"awhb"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"awhb"},"content":" ui.printTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"awhb"},"content":" case MARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"awhb"},"content":" int markTaskNumber \u003d getTaskNumber(details);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"awhb"},"content":" Task markedTask \u003d tasks.getTask(markTaskNumber);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"awhb"},"content":" markedTask.markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"awhb"},"content":" ui.printStatusUpdate(true, markedTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"awhb"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"awhb"},"content":" case UNMARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"awhb"},"content":" int unmarkTaskNumber \u003d getTaskNumber(details);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"awhb"},"content":" Task unmarkedTask \u003d tasks.getTask(unmarkTaskNumber);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"awhb"},"content":" unmarkedTask.markUndone();","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"awhb"},"content":" ui.printStatusUpdate(false, unmarkedTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"awhb"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"awhb"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"awhb"},"content":" if (details.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Description of todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"awhb"},"content":" Todo newTodo \u003d new Todo(details);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"awhb"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"awhb"},"content":" ui.printTaskAddedMessage(newTodo, tasks.getTaskCount());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"awhb"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"awhb"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"awhb"},"content":" Deadline newDeadline \u003d createDeadline(details);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"awhb"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"awhb"},"content":" ui.printTaskAddedMessage(newDeadline, tasks.getTaskCount());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"awhb"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"awhb"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"awhb"},"content":" Event newEvent \u003d createEvent(details);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"awhb"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"awhb"},"content":" ui.printTaskAddedMessage(newEvent, tasks.getTaskCount());","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"awhb"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"awhb"},"content":" case DELETE:","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"awhb"},"content":" int taskNumber \u003d getTaskNumber(details);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"awhb"},"content":" Task removedTask \u003d tasks.removeTask(taskNumber);","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"awhb"},"content":" ui.printTaskRemovedMessage(removedTask, tasks.getTaskCount());","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"awhb"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"awhb"},"content":" case FIND:","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"awhb"},"content":" TaskList matchingTasks \u003d tasks.findTasksByKeyword(details);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"awhb"},"content":" ui.printTasks(matchingTasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"awhb"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"awhb"},"content":" throw new InvalidInputException();","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"awhb"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"awhb"},"content":" ui.printErrorMessage(\"☹ OOPS!!! Invalid task index.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"awhb"},"content":" } catch (ChadBodException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"awhb"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"awhb"},"content":" * Retrieves the task number from the input details.","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"awhb"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"awhb"},"content":" * @param details The input details containing the task number.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"awhb"},"content":" * @return The task number.","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"awhb"},"content":" * @throws NumberFormatException If the task number cannot be parsed as an integer.","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"awhb"},"content":" * @throws TaskIndexOutOfBoundsException If the task number is out of bounds.","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"awhb"},"content":" private int getTaskNumber(String details) throws NumberFormatException, TaskIndexOutOfBoundsException {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"awhb"},"content":" int unmarkTaskNumber \u003d Integer.parseInt(details);","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"awhb"},"content":" if (unmarkTaskNumber \u003c ChadBod.TASKLIST_DISPLAY_OFFSET ||","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"awhb"},"content":" unmarkTaskNumber \u003e tasks.getTaskCount() - 1 + TASKLIST_DISPLAY_OFFSET) {","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"awhb"},"content":" throw new TaskIndexOutOfBoundsException();","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"awhb"},"content":" return unmarkTaskNumber - TASKLIST_DISPLAY_OFFSET;","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"awhb"},"content":" * Creates a Deadline task from the given details.","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"awhb"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"awhb"},"content":" * @param details The input details containing the deadline information.","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"awhb"},"content":" * @return The created Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"awhb"},"content":" * @throws InvalidTaskException If the details are invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"awhb"},"content":" private static Deadline createDeadline(String details) throws InvalidTaskException {","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"awhb"},"content":" if (details.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Description of deadline cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"awhb"},"content":" String[] deadlineDetails \u003d details.split(\" /by \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"awhb"},"content":" if (deadlineDetails.length \u003c 2 || deadlineDetails[1].isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Deadline due date cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"awhb"},"content":" LocalDateTime byDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"awhb"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"awhb"},"content":" byDate \u003d LocalDateTime.parse(deadlineDetails[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"awhb"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Deadline due date/time not in ISO format. (e.g. 2007-12-03T10:15:30)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"awhb"},"content":" return new Deadline(deadlineDetails[0], byDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"awhb"},"content":" * Creates an Event task from the given details.","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"awhb"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"awhb"},"content":" * @param details The input details containing the event information.","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"awhb"},"content":" * @return The created Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"awhb"},"content":" * @throws InvalidTaskException If the details are invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"awhb"},"content":" public static Event createEvent(String details) throws InvalidTaskException {","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"awhb"},"content":" if (details.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Description of event cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"awhb"},"content":" String[] eventDetails \u003d details.split(\" /from \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"awhb"},"content":" if (eventDetails.length \u003c 2 || eventDetails[1].isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Event timings cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"awhb"},"content":" String[] eventTimings \u003d eventDetails[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"awhb"},"content":" if (eventTimings.length \u003c 2 || eventTimings[1].isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Event from and to timings cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"awhb"},"content":" LocalDateTime fromDate, toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"awhb"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"awhb"},"content":" fromDate \u003d LocalDateTime.parse(eventTimings[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"awhb"},"content":" toDate \u003d LocalDateTime.parse(eventTimings[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"awhb"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"awhb"},"content":" throw new InvalidTaskException(\"Deadline due date/time not in ISO format. (e.g. 2007-12-03T10:15:30)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"awhb"},"content":" return new Event(eventDetails[0], fromDate, toDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"awhb"},"content":" * The entry point for the ChadBod application.","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"awhb"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"awhb"},"content":" * @param args Command-line arguments (not used in this application).","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"awhb"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"awhb"},"content":" new ChadBod(FILE_PATH).run();","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"awhb":188}},{"path":"src/main/java/chadbod/ChadBodException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"public class ChadBodException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" public ChadBodException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" super(\"☹ OOPS!!! \" + message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"awhb":7}},{"path":"src/main/java/chadbod/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"enum Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" BYE(\"bye\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" MARK(\"mark\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":" TODO(\"todo\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" DEADLINE(\"deadline\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" EVENT(\"event\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" FIND(\"find\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" private final String value;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" Command(String value) {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" this.value \u003d value;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" public String getValue() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":" return value;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"awhb":23}},{"path":"src/main/java/chadbod/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm:ss\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" return String.format(\"D | %d | %s | %s\", this.isDone ? 1 : 0, this.description,","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" this.by);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"awhb":25}},{"path":"src/main/java/chadbod/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm:ss\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":" this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm:ss\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"awhb"},"content":" return String.format(\"E | %d | %s | %s | %s\", this.isDone ? 1 : 0, this.description, this.from, this.to);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"awhb":28}},{"path":"src/main/java/chadbod/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"public class InvalidInputException extends ChadBodException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" public InvalidInputException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" super(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"awhb":7}},{"path":"src/main/java/chadbod/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"public class InvalidTaskException extends ChadBodException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" public InvalidTaskException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"awhb":7}},{"path":"src/main/java/chadbod/ParsedCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"public class ParsedCommand {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" private final Command command;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" private final String details;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":" public ParsedCommand(Command command, String details) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" this.details \u003d details;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" public Command getCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":" return this.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" public String getDetails() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" return this.details;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"awhb":19}},{"path":"src/main/java/chadbod/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" public static ParsedCommand parseCommand(String userInput) throws InvalidInputException {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" Command command \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":" String[] commandSegments \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":" if (commandSegments.length \u003e 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" String commandString \u003d commandSegments[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" for (Command cmd : Command.values()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" if (cmd.getValue().equals(commandString)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" command \u003d cmd;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" if (command \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" throw new InvalidInputException();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" String details \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":" if (commandSegments.length \u003e 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" details \u003d commandSegments[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" return new ParsedCommand(command, details);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"awhb":26}},{"path":"src/main/java/chadbod/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":" public void saveTasks(TaskList tasks) throws ChadBodException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" // Create necessary directories and files","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"awhb"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"awhb"},"content":" for (int i \u003d 0; i \u003c tasks.getTaskCount(); i ++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"awhb"},"content":" writer.write(tasks.getTask(i).toFileString());","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"awhb"},"content":" writer.newLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"awhb"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"awhb"},"content":" } catch (IOException | SecurityException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"awhb"},"content":" throw new ChadBodException(\"Error saving tasks to file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"awhb"},"content":" public TaskList loadTasks() throws ChadBodException {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"awhb"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"awhb"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(this.filePath))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"awhb"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"awhb"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"awhb"},"content":" Task task \u003d Task.fromString(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"awhb"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"awhb"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"awhb"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"awhb"},"content":" throw new ChadBodException(\"File content invalid. Skipping this task.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"awhb"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"awhb"},"content":" throw new ChadBodException(\"Task storage file not found. Starting with an empty task list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"awhb"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"awhb"},"content":" throw new ChadBodException(\"Error parsing task storage file. Starting with an empty task list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"awhb"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"awhb":58}},{"path":"src/main/java/chadbod/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" public void markDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"awhb"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"awhb"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"awhb"},"content":" public static Task fromString(String line) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"awhb"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"awhb"},"content":" if (parts.length \u003e\u003d 3 \u0026\u0026 parts[0].equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"awhb"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"awhb"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"awhb"},"content":" Task t \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"awhb"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"awhb"},"content":" t.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"awhb"},"content":" return t;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"awhb"},"content":" } else if (parts.length \u003e\u003d 4 \u0026\u0026 parts[0].equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"awhb"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"awhb"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"awhb"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(parts[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"awhb"},"content":" Task t \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"awhb"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"awhb"},"content":" t.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"awhb"},"content":" return t;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"awhb"},"content":" } else if (parts.length \u003e\u003d 5 \u0026\u0026 parts[0].equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"awhb"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"awhb"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"awhb"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"awhb"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"awhb"},"content":" Task t \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"awhb"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"awhb"},"content":" t.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"awhb"},"content":" return t;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"awhb"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"awhb"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"awhb"},"content":" public boolean containsKeyword(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"awhb"},"content":" return description.contains(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"awhb"},"content":" public abstract String toFileString();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"awhb":70}},{"path":"src/main/java/chadbod/TaskIndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"public class TaskIndexOutOfBoundsException extends ChadBodException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" public TaskIndexOutOfBoundsException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" super(\"Invalid task index.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"awhb":7}},{"path":"src/main/java/chadbod/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":" private static final int TASKLIST_DISPLAY_OFFSET \u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" public Task getTask(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":" return tasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"awhb"},"content":" public Task removeTask(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"awhb"},"content":" return tasks.remove(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"awhb"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"awhb"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"awhb"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"awhb"},"content":" output \u003d new StringBuilder(\"There are no tasks in your list!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"awhb"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"awhb"},"content":" output.append(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"awhb"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i ++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"awhb"},"content":" output.append(String.format(\"%d.%s\\n\", i + TASKLIST_DISPLAY_OFFSET, tasks.get(i)));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"awhb"},"content":" return String.valueOf(output);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"awhb"},"content":" public TaskList findTasksByKeyword(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"awhb"},"content":" TaskList matchingTasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"awhb"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"awhb"},"content":" if (task.containsKeyword(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"awhb"},"content":" matchingTasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"awhb"},"content":" return matchingTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"awhb":53}},{"path":"src/main/java/chadbod/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" return String.format(\"T | %d | %s\", this.isDone ? 1 : 0, this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"awhb":17}},{"path":"src/main/java/chadbod/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":" * The Ui class handles user interface interactions and displays messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":" * Displays a greeting message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" public void showGreeting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" System.out.println(\"Hello! I\u0027m ChadBod.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" * Displays a farewell message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" public void showFarewell() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" * Prints an error message to the console.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":" * @param str The error message to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"awhb"},"content":" public void printErrorMessage(String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"awhb"},"content":" System.out.println(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"awhb"},"content":" * Prints a status update message for a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"awhb"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"awhb"},"content":" * @param done If true, the task is marked as done; if false, marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"awhb"},"content":" * @param task The task for which the status update is displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"awhb"},"content":" public void printStatusUpdate(Boolean done, Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"awhb"},"content":" if (done) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"awhb"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"awhb"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"awhb"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"awhb"},"content":" System.out.printf(\"%s\\n\", task);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"awhb"},"content":" * Prints a message indicating that a task has been added.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"awhb"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"awhb"},"content":" * @param newTask The task that has been added.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"awhb"},"content":" * @param taskCount The total number of tasks in the list after adding the new task.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"awhb"},"content":" public void printTaskAddedMessage(Task newTask, int taskCount) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"awhb"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"awhb"},"content":" System.out.println(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"awhb"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", taskCount);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"awhb"},"content":" * Prints a message indicating that a task has been removed.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"awhb"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"awhb"},"content":" * @param removedTask The task that has been removed.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"awhb"},"content":" * @param taskCount The total number of tasks in the list after removing the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"awhb"},"content":" public void printTaskRemovedMessage(Task removedTask, int taskCount) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"awhb"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"awhb"},"content":" System.out.printf(\"%s\\n\", removedTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"awhb"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", taskCount);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"awhb"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"awhb"},"content":" * Prints the list of tasks to the console.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"awhb"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"awhb"},"content":" * @param tasks The list of tasks to be printed.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"awhb"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"awhb"},"content":" public void printTasks(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"awhb"},"content":" System.out.print(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"awhb":78}},{"path":"src/test/java/chadbod/ChadBodTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":"public class ChadBodTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" public void createEvent_validEvent_success() throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":" Event expected \u003d new Event(\"party\", LocalDateTime.parse(\"2023-08-28T00:00:00\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" LocalDateTime.parse(\"2023-08-28T02:00:00\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":" Event actual \u003d ChadBod.createEvent(\"party /from 2023-08-28T00:00:00 /to 2023-08-28T02:00:00\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" assertEquals(expected.toString(), actual.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" assertEquals(expected.toFileString(), actual.toFileString());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":" public void parseCommand_invalidTask_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" ChadBod.createEvent(\"party from 2023-08-28T00:00:00 /to 2023-08-28T02:00:00\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"awhb"},"content":" assertEquals(\"☹ OOPS!!! Event timings cannot be empty.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"awhb":29}},{"path":"src/test/java/chadbod/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"package chadbod;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":" public void parseCommand_todoTask_success() throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"awhb"},"content":" ParsedCommand expected \u003d new ParsedCommand(Command.TODO, \"cry\");","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"awhb"},"content":" ParsedCommand actual \u003d Parser.parseCommand(\"todo cry\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"awhb"},"content":" assertEquals(expected.getCommand(), actual.getCommand());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"awhb"},"content":" assertEquals(expected.getCommand(), actual.getCommand());","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"awhb"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"awhb"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"awhb"},"content":" public void parseCommand_invalidTask_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"awhb"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"awhb"},"content":" Parser.parseCommand(\"hello bye\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"awhb"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"awhb"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"awhb"},"content":" assertEquals(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"awhb"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"awhb"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"awhb":25}},{"path":"text-ui-test/data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"T | 1 | read book","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"D | 0 | return book | 2023-06-06T00:00","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"E | 0 | project meeting | 2023-08-06T14:00 | 2023-08-06T16:00","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"T | 1 | join sports club","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"T | 0 | borrow book","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"awhb":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"awhb"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"awhb"},"content":"deadline return book /by 2023-06-06T00:00:00","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"awhb"},"content":"event project meeting /from 2023-08-06T14:00:00 /to 2023-08-06T16:00:00","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"awhb"},"content":"todo join sports club","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"awhb"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"awhb"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"awhb"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"awhb"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"awhb"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"awhb":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":"awhb"},"content":"if ! javac -cp ../src/main/java/chadbod -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2023-09-01"},{"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":"awhb"},"content":"java -classpath ../bin main.java.ChadBod \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":{"-":36,"awhb":2}}] diff --git a/awhb_ip_master/commits.json b/awhb_ip_master/commits.json index f3255685..042ab98e 100644 --- a/awhb_ip_master/commits.json +++ b/awhb_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"awhb":[{"date":"2023-08-23","commitResults":[{"hash":"e3c248c809987c4488f6c9d74abe2ff31c882eec","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":10}}},{"hash":"7d9be1ea5e7c67c3965a59d533b354f58f523bc4","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"dd92c27076aa6d5417d31ac1e252ce499737a19f","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"2c64fc6ebb90d155c03e8ac116f01f9da23d2608","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":21}}},{"hash":"594de9b258c1dc2793a6f033fe9e7e88ad07ebc8","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":10}}}]},{"date":"2023-08-24","commitResults":[{"hash":"c26706f0fb201999981a04ab8fffeea475f4d934","isMergeCommit":false,"messageTitle":"Week 2 - Duke A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"5cc3a9e3884bd9517655cf80a39cd8ae203de6d0","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":58}}},{"hash":"e1d75e39aaccbc6dedd289b224ca5c479507d026","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"cc4fc2891773ebee164c469f0693e8d8398c3fd6","isMergeCommit":false,"messageTitle":"Week 2 - A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":138}}}]},{"date":"2023-08-31","commitResults":[{"hash":"0cafbd0b3eb63f8671b573f5f2a69aeea81738df","isMergeCommit":false,"messageTitle":"Week 3 - Duke Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":111,"deletions":4}}}]},{"date":"2023-09-01","commitResults":[{"hash":"723f8efd192dca893dd35fce78f1e29dd95870cd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"831d007473ec2adcb516716989b59540a3edbe57","isMergeCommit":false,"messageTitle":"Week 3 - Duke Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":9},"java":{"insertions":41,"deletions":13}}},{"hash":"b25c8f5db03415d4d73d77a55d74f12da089504f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6bb26d5db1922a18aa409d0468071f7572a9f9e0","isMergeCommit":false,"messageTitle":"Duke A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"awhb":{"java":398,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":14}},"authorContributionVariance":{"awhb":17917.955},"authorDisplayNameMap":{"awhb":"CS2103T-T08-2 AW H.. BIN"}} +{"authorDailyContributionsMap":{"awhb":[{"date":"2023-08-23","commitResults":[{"hash":"e3c248c809987c4488f6c9d74abe2ff31c882eec","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":10}}},{"hash":"7d9be1ea5e7c67c3965a59d533b354f58f523bc4","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"dd92c27076aa6d5417d31ac1e252ce499737a19f","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"2c64fc6ebb90d155c03e8ac116f01f9da23d2608","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":21}}},{"hash":"594de9b258c1dc2793a6f033fe9e7e88ad07ebc8","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":10}}}]},{"date":"2023-08-24","commitResults":[{"hash":"c26706f0fb201999981a04ab8fffeea475f4d934","isMergeCommit":false,"messageTitle":"Week 2 - Duke A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"5cc3a9e3884bd9517655cf80a39cd8ae203de6d0","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":58}}},{"hash":"e1d75e39aaccbc6dedd289b224ca5c479507d026","isMergeCommit":false,"messageTitle":"Week 2 - Duke Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"cc4fc2891773ebee164c469f0693e8d8398c3fd6","isMergeCommit":false,"messageTitle":"Week 2 - A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":138}}}]},{"date":"2023-08-31","commitResults":[{"hash":"0cafbd0b3eb63f8671b573f5f2a69aeea81738df","isMergeCommit":false,"messageTitle":"Week 3 - Duke Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":111,"deletions":4}}}]},{"date":"2023-09-01","commitResults":[{"hash":"723f8efd192dca893dd35fce78f1e29dd95870cd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"831d007473ec2adcb516716989b59540a3edbe57","isMergeCommit":false,"messageTitle":"Week 3 - Duke Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":9},"java":{"insertions":41,"deletions":13}}},{"hash":"b25c8f5db03415d4d73d77a55d74f12da089504f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6bb26d5db1922a18aa409d0468071f7572a9f9e0","isMergeCommit":false,"messageTitle":"Duke A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"f3f6f1d780efcd7a822e20e3c8d1a7fbf63a09cb","isMergeCommit":false,"messageTitle":"Week 3 - Duke A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":300,"deletions":180}}},{"hash":"ba58c376ed0e793fd62bfd1a151cb19dd42674a9","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f0742d3dceb32864136060895a7a65c10854e695","isMergeCommit":false,"messageTitle":"Week 3 - Duke A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2},"java":{"insertions":15,"deletions":16},"sh":{"insertions":1,"deletions":1}}},{"hash":"824209000bf69b55aa70c10dca8881c251e61bb3","isMergeCommit":false,"messageTitle":"Week 3 - A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":55,"deletions":1}}},{"hash":"21c669543b493d7caf47363b5cf99c23aad4bd40","isMergeCommit":false,"messageTitle":"Week 3 - Duke A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":50}}},{"hash":"7e5ad642aa33d0a93d7c332f62434597932786de","isMergeCommit":false,"messageTitle":"Week 3 - Duke A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"85bd868a57983f2d89b1e13827692ab5c2db91db","isMergeCommit":false,"messageTitle":"Week 3 - Duke Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":1}}},{"hash":"9acc8f088b1460bde008a6832ea91913e36a795b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"57db60b8a16c83e448c3375cbe24ab10a55539a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f1ebf32c61bab10129c8dbae4fc2717201e12e26","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"awhb":{"java":667,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":3,"txt":14}},"authorContributionVariance":{"awhb":57860.734},"authorDisplayNameMap":{"awhb":"CS2103T-T08-2 AW H.. BIN"}} diff --git a/beatricecst_ip_master/authorship.json b/beatricecst_ip_master/authorship.json index ddc368bb..cac4dd36 100644 --- a/beatricecst_ip_master/authorship.json +++ b/beatricecst_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"beatricecst":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"beatricecst":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"0 | [T] [ ] kill myself","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"1 | [T] [X] run","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"beatricecst":2}},{"path":"duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"linelineline","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"beatricecst":1}},{"path":"java/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"0 | [T] [ ] make tiramisu","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"beatricecst":1}},{"path":"src/main/java/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"0 | [T] [ ] make tiramisu","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"0 | [T] [ ] borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"0 | [D] [ ] return book (by:21 of October 2023, 5:30PM)","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"0 | [D] [ ] make brownies (by:21 of October 2023, 5:30PM)","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"0 | [T] [ ] eat ","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"beatricecst":5}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import duke.task.DukeList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":" private DukeList dukelist;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" private Ui ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":" private Storage storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" private static final String FILE_PATH \u003d \"data/duke.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" this.dukelist \u003d new DukeList(this.storage.getData());","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" this.dukelist \u003d new DukeList();","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"error\");","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" new Duke(FILE_PATH).froggie();","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" public void froggie() {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" this.ui.hello();","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" parser.parse(this.storage, dukelist, ui);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"beatricecst":29,"-":2}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":" public DukeException(String msg) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":" super(msg);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" return \"OOPS!!! \" + super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"beatricecst":12}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import duke.task.DukeList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"public class Parser {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" Scanner scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" boolean notBye;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" public Parser() {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" notBye \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" public void parse(Storage storage, DukeList dukelist, Ui ui) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" while (notBye) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" String[] splited \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" if (splited[0].equals(\"bye\") \u0026\u0026 splited.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" notBye \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" ui.bye();","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"list\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" dukelist.printList();","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"find\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":" String desc \u003d splited[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" DukeList newList \u003d new DukeList();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Here are the matching tasks in the list:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":" for (int i \u003d 0; i \u003c dukelist.getList().size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":" int count \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" if (dukelist.getList().get(i).description.contains(desc)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":" System.out.println(String.valueOf(count) + \". \" + dukelist.getList().get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"beatricecst"},"content":" count++;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"beatricecst"},"content":" int number \u003d Integer.parseInt(splited[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"beatricecst"},"content":" dukelist.setDone(number);","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"beatricecst"},"content":" storage.saveData(dukelist.getList());","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"beatricecst"},"content":" int number \u003d Integer.parseInt(splited[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"beatricecst"},"content":" dukelist.setUndone(number);","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"beatricecst"},"content":" storage.saveData(dukelist.getList());","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"beatricecst"},"content":" if (splited.length \u003e 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"beatricecst"},"content":" String[] job \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"beatricecst"},"content":" dukelist.addTodo(job[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"beatricecst"},"content":" storage.saveData(dukelist.getList());","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"beatricecst"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"beatricecst"},"content":" if (splited.length \u003e 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"beatricecst"},"content":" String[] splitted \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"beatricecst"},"content":" String[] deadline \u003d splitted[1].split(\"/by\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"beatricecst"},"content":" LocalDateTime by \u003d formatData(deadline[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"beatricecst"},"content":" dukelist.addDeadline(deadline[0], by);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"beatricecst"},"content":" storage.saveData(dukelist.getList());","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"beatricecst"},"content":" throw new DukeException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"event\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"beatricecst"},"content":" if (splited.length \u003e 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"beatricecst"},"content":" String[] splitted \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"beatricecst"},"content":" String[] from \u003d splitted[1].split(\"/from\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"beatricecst"},"content":" String[] to \u003d from[1].split(\"/to\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"beatricecst"},"content":" LocalDateTime start \u003d formatData(to[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"beatricecst"},"content":" LocalDateTime end \u003d formatData(to[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"beatricecst"},"content":" dukelist.addEvent(from[0], start, end);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"beatricecst"},"content":" storage.saveData(dukelist.getList());","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"beatricecst"},"content":" throw new DukeException(\"The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"delete\")){","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"beatricecst"},"content":" int num \u003d Integer.parseInt(splited[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"beatricecst"},"content":" dukelist.deleteTask(num - 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"beatricecst"},"content":" storage.saveData(dukelist.getList());","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"beatricecst"},"content":" else {","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"beatricecst"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"beatricecst"},"content":" } catch (DukeException error) {","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"beatricecst"},"content":" System.out.println(error.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"beatricecst"},"content":" public LocalDateTime formatData(String data) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"beatricecst"},"content":" String trimmed \u003d data.trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"beatricecst"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ISO_LOCAL_DATE_TIME;","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"beatricecst"},"content":" LocalDateTime localDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"beatricecst"},"content":" return localDate \u003d LocalDateTime.parse(trimmed, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"beatricecst":102}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":"import java.io.*;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" private File file;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" String[] splited \u003d filePath.split(\"/\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" File dir \u003d new File(splited[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" dir.mkdir();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" File content \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" if (!content.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" content.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":" this.file \u003d content;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"beatricecst"},"content":" public ArrayList\u003cTask\u003e getData() throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"beatricecst"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"beatricecst"},"content":" ArrayList\u003cTask\u003e oldTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"beatricecst"},"content":" Scanner fileScanner \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"beatricecst"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"beatricecst"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"beatricecst"},"content":" String[] splited \u003d line.split(\" \", 6);","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"beatricecst"},"content":" if (splited[2].equals(\"[T]\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"beatricecst"},"content":" Task todo \u003d new Todo(splited[5]);","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"beatricecst"},"content":" oldTasks.add(todo);","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"beatricecst"},"content":" if (splited[0].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"beatricecst"},"content":" todo.markDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"beatricecst"},"content":" todo.markUndone();","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"beatricecst"},"content":" if (splited[2].equals(\"[D]\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"beatricecst"},"content":" String[] desc \u003d splited[5].split(\"\\\\(by:\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"beatricecst"},"content":" String time \u003d desc[1].split(\"\\\\)\", 2)[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"beatricecst"},"content":" LocalDateTime by \u003d formatData(time);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"beatricecst"},"content":" Task deadline \u003d new Deadline(desc[0], by);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"beatricecst"},"content":" oldTasks.add(deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"beatricecst"},"content":" if (splited[0].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"beatricecst"},"content":" deadline.markDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"beatricecst"},"content":" deadline.markUndone();","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"beatricecst"},"content":" if (splited[2].equals(\"[E]\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"beatricecst"},"content":" String[] description \u003d splited[5].split(\"\\\\(from:\");","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"beatricecst"},"content":" String start \u003d description[1].split(\"to:\", 2)[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"beatricecst"},"content":" String end \u003d description[1].split(\"to:\", 2)[1];","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"beatricecst"},"content":" LocalDateTime from \u003d formatData(start);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"beatricecst"},"content":" LocalDateTime to \u003d formatData(end);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"beatricecst"},"content":" Task event \u003d new Event(description[0], from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"beatricecst"},"content":" oldTasks.add(event);","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"beatricecst"},"content":" if (splited[0].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"beatricecst"},"content":" event.markDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"beatricecst"},"content":" event.markUndone();","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"beatricecst"},"content":" return oldTasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"beatricecst"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"beatricecst"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"beatricecst"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"beatricecst"},"content":" public void saveData(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"beatricecst"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"beatricecst"},"content":" FileWriter writer \u003d new FileWriter(this.file);","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"beatricecst"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"beatricecst"},"content":" int isDone \u003d task.getStatus() ? 1 : 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"beatricecst"},"content":" String description \u003d task.toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"beatricecst"},"content":" String line \u003d String.format(\"%d | %s%n\", isDone, description);","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"beatricecst"},"content":" writer.write(line);","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"beatricecst"},"content":" writer.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"beatricecst"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"beatricecst"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"beatricecst"},"content":" public LocalDateTime formatData(String data) {","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"beatricecst"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d \u0027of\u0027 MMMM uuuu, h:mma\", Locale.ENGLISH);","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"beatricecst"},"content":" LocalDateTime localDateTime \u003d LocalDateTime.parse(data, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"beatricecst"},"content":" return localDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"beatricecst":108}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"public class Ui {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":" public void hello() {","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Hello! I\u0027m froggie!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" public void bye() {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"beatricecst":12}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" return \"[D] \" + super.toString() + \" (by:\" + super.localDateTimeToString(by) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"beatricecst":18}},{"path":"src/main/java/duke/task/DukeList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"public class DukeList {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" ArrayList\u003cTask\u003e arr;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" public DukeList(ArrayList\u003cTask\u003e dukelist) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" this.arr \u003d dukelist;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" public DukeList() {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" this.arr \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" return this.arr;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" public void showList (Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Now you have \" + arr.size() + \" tasks in the list\");","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" public void deleteTask (int number) {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" Task chosenTask \u003d arr.get(number);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"\\t\" + chosenTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" arr.remove(number);","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Now you have \" + arr.size() + \" tasks in the list\");","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"beatricecst"},"content":" public void addTodo(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"beatricecst"},"content":" Todo todo \u003d new Todo(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"beatricecst"},"content":" arr.add(todo);","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"beatricecst"},"content":" showList(todo);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"beatricecst"},"content":" public void addDeadline(String input, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"beatricecst"},"content":" Deadline deadline \u003d new Deadline(input, by);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"beatricecst"},"content":" arr.add(deadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"beatricecst"},"content":" showList(deadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"beatricecst"},"content":" public void addEvent(String input, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"beatricecst"},"content":" Event event \u003d new Event(input, start, end);","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"beatricecst"},"content":" arr.add(event);","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"beatricecst"},"content":" showList(event);","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"beatricecst"},"content":" public void printList() {","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"beatricecst"},"content":" int arrSize \u003d arr.size();","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"beatricecst"},"content":" for (int i \u003d 0; i \u003c arrSize; i++) {","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"beatricecst"},"content":" int num \u003d i + 1;","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"beatricecst"},"content":" Task chosenTask \u003d arr.get(i);","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"beatricecst"},"content":" System.out.println(num + \". \" + chosenTask.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"beatricecst"},"content":" public void setDone(int number) {","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"beatricecst"},"content":" Task chosenTask \u003d arr.get(number);","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"beatricecst"},"content":" chosenTask.markDone();","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"\\t\" + chosenTask.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"beatricecst"},"content":" public void setUndone(int number) {","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"beatricecst"},"content":" Task chosenTask \u003d arr.get(number);","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"beatricecst"},"content":" chosenTask.markUndone();","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"\\t\" + chosenTask.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"beatricecst":78}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" public Event (String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" return \"[E] \" + super.toString() + \"(from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"beatricecst":20}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" public String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" public boolean getStatus() {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" return this.isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" public void markDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" public String localDateTimeToString(LocalDateTime data) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":" String day \u003d String.valueOf(data.getDayOfMonth());","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"beatricecst"},"content":" String month \u003d data.getMonth().toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"beatricecst"},"content":" month \u003d month.substring(0,1).toUpperCase() + month.substring(1).toLowerCase();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"beatricecst"},"content":" String year \u003d String.valueOf(data.getYear());","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"beatricecst"},"content":" String hour \u003d data.format(DateTimeFormatter.ofPattern(\"h\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"beatricecst"},"content":" String minute \u003d data.format(DateTimeFormatter.ofPattern(\"mm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"beatricecst"},"content":" String amPm \u003d data.format(DateTimeFormatter.ofPattern(\"a\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"beatricecst"},"content":" return String.format(\"%s of %s %s, %s:%s%s\", day, month, year, hour, minute, amPm);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"beatricecst":46}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"beatricecst":13}},{"path":"src/test/java/duke/task/DukeListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import duke.task.DukeList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":"public class DukeListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" private DukeList dukeList;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" public void setup() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" dukeList \u003d new DukeList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" public void testAddTodo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" dukeList.addTodo(\"cook curry\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" assertEquals(1, dukeList.getList().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" public void testAddDeadline() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" LocalDateTime by \u003d LocalDateTime.now().plusDays(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" dukeList.addDeadline(\"make tiramisu\", by);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" assertEquals(1, dukeList.getList().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" public void testAddEvent() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":" LocalDateTime start \u003d LocalDateTime.now();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":" LocalDateTime end \u003d start.plusHours(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" dukeList.addEvent(\"Team meeting\", start, end);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":" assertEquals(1, dukeList.getList().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"beatricecst"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"beatricecst"},"content":" public void testDeleteTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"beatricecst"},"content":" dukeList.addTodo(\"Do something\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"beatricecst"},"content":" dukeList.deleteTask(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"beatricecst"},"content":" assertEquals(0, dukeList.getList().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"beatricecst":46}},{"path":"src/test/java/duke/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" public void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" Todo todo \u003d new Todo(\"Buy groceries\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" assertEquals(\"[T] [ ] Buy groceries\", todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"beatricecst":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"beatricecst":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":"beatricecst"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"beatricecst":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"beatricecst":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"beatricecst":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"0 | [T] [ ] kill myself","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"1 | [T] [X] run","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"beatricecst":2}},{"path":"duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"linelineline","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"beatricecst":1}},{"path":"java/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"0 | [T] [ ] make tiramisu","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"beatricecst":1}},{"path":"src/main/java/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"0 | [T] [ ] make tiramisu","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"0 | [T] [ ] borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"0 | [D] [ ] return book (by:21 of October 2023, 5:30PM)","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"0 | [D] [ ] make brownies (by:21 of October 2023, 5:30PM)","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"0 | [T] [ ] eat ","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"beatricecst":5}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import duke.task.DukeList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":" * Represents the main class for the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" * Initializes and coordinates various components of the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" private DukeList dukelist;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" private Ui ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" private Storage storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" private static final String FILE_PATH \u003d \"data/duke.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" * Constructs a Duke object with the specified file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" * @param filePath The path to the data file for storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" this.dukelist \u003d new DukeList(this.storage.getData());","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" this.dukelist \u003d new DukeList();","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"error\");","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" * The main method that initializes the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":" * @param args Command-line arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" * @throws DukeException If there\u0027s an exception during initialization or execution.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"beatricecst"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"beatricecst"},"content":" new Duke(FILE_PATH).froggie();","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"beatricecst"},"content":" * Initiates the Duke application by displaying a greeting and starting the parsing process.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"beatricecst"},"content":" public void froggie() {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"beatricecst"},"content":" this.ui.hello();","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"beatricecst"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"beatricecst"},"content":" parser.parse(this.storage, dukelist, ui);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"beatricecst":47,"-":2}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":" * Represents an exception specific to the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":" * Extends the Exception class to handle Duke-related exceptions.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" * Constructs a DukeException object with the specified error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" * @param msg The error message associated with the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" public DukeException(String msg) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" super(msg);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" * Retrieves the formatted error message for the DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" * @return The formatted error message with a prefix (\"OOPS!!!\").","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" return \"OOPS!!! \" + super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"beatricecst":27}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import duke.task.DukeList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" * Handles the parsing of user input and executes corresponding actions.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":"public class Parser {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" Scanner scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" boolean notBye;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" * Constructs a Parser object and initializes the Scanner and notBye flag.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" public Parser() {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" notBye \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" * Parses user input, executes commands, and interacts with DukeList, Storage, and Ui objects.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" * @param storage The Storage object for data persistence.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" * @param dukelist The DukeList object to manage tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" * @param ui The Ui object for user interactions.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" public void parse(Storage storage, DukeList dukelist, Ui ui) {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" while (notBye) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"beatricecst"},"content":" String[] splited \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"beatricecst"},"content":" if (splited[0].equals(\"bye\") \u0026\u0026 splited.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"beatricecst"},"content":" notBye \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"beatricecst"},"content":" ui.bye();","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"list\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"beatricecst"},"content":" dukelist.printList();","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"find\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"beatricecst"},"content":" if (splited.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"beatricecst"},"content":" String desc \u003d splited[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"beatricecst"},"content":" DukeList newList \u003d new DukeList();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Here are the matching tasks in the list:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"beatricecst"},"content":" for (int i \u003d 0; i \u003c dukelist.getList().size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"beatricecst"},"content":" int count \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"beatricecst"},"content":" if (dukelist.getList().get(i).description.contains(desc)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"beatricecst"},"content":" System.out.println(String.valueOf(count) + \". \" + dukelist.getList().get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"beatricecst"},"content":" count++;","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"beatricecst"},"content":" throw new DukeException(\"The description of find cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"beatricecst"},"content":" int number \u003d Integer.parseInt(splited[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"beatricecst"},"content":" dukelist.setDone(number);","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"beatricecst"},"content":" storage.saveData(dukelist.getList());","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"beatricecst"},"content":" int number \u003d Integer.parseInt(splited[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"beatricecst"},"content":" dukelist.setUndone(number);","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"beatricecst"},"content":" storage.saveData(dukelist.getList());","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"beatricecst"},"content":" if (splited.length \u003e 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"beatricecst"},"content":" String[] job \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"beatricecst"},"content":" dukelist.addTodo(job[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"beatricecst"},"content":" storage.saveData(dukelist.getList());","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"beatricecst"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"beatricecst"},"content":" if (splited.length \u003e 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"beatricecst"},"content":" String[] splitted \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"beatricecst"},"content":" String[] deadline \u003d splitted[1].split(\"/by\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"beatricecst"},"content":" LocalDateTime by \u003d formatData(deadline[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"beatricecst"},"content":" dukelist.addDeadline(deadline[0], by);","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"beatricecst"},"content":" storage.saveData(dukelist.getList());","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"beatricecst"},"content":" throw new DukeException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"event\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"beatricecst"},"content":" if (splited.length \u003e 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"beatricecst"},"content":" String[] splitted \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"beatricecst"},"content":" String[] from \u003d splitted[1].split(\"/from\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"beatricecst"},"content":" String[] to \u003d from[1].split(\"/to\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"beatricecst"},"content":" LocalDateTime start \u003d formatData(to[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"beatricecst"},"content":" LocalDateTime end \u003d formatData(to[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"beatricecst"},"content":" dukelist.addEvent(from[0], start, end);","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"beatricecst"},"content":" storage.saveData(dukelist.getList());","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"beatricecst"},"content":" throw new DukeException(\"The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"beatricecst"},"content":" } else if (splited[0].equals(\"delete\")){","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"beatricecst"},"content":" int num \u003d Integer.parseInt(splited[1]);","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"beatricecst"},"content":" dukelist.deleteTask(num - 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"beatricecst"},"content":" storage.saveData(dukelist.getList());","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"beatricecst"},"content":" else {","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"beatricecst"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"beatricecst"},"content":" } catch (DukeException error) {","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"beatricecst"},"content":" System.out.println(error.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"beatricecst"},"content":" * Converts a formatted string into a LocalDateTime object.","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"beatricecst"},"content":" * @param data The formatted string representing a date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"beatricecst"},"content":" * @return A LocalDateTime object parsed from the input string.","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"beatricecst"},"content":" public LocalDateTime formatData(String data) {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"beatricecst"},"content":" String trimmed \u003d data.trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"beatricecst"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ISO_LOCAL_DATE_TIME;","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"beatricecst"},"content":" LocalDateTime localDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"beatricecst"},"content":" return localDate \u003d LocalDateTime.parse(trimmed, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"beatricecst":127}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":"import java.io.*;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" * Handles data storage and retrieval.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" private File file;","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" * Constructs a Storage object and creates the necessary directories and files.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" * @param filePath The path to the file for data storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" String[] splited \u003d filePath.split(\"/\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":" File dir \u003d new File(splited[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" dir.mkdir();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":" File content \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" if (!content.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":" content.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"beatricecst"},"content":" this.file \u003d content;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"beatricecst"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"beatricecst"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"beatricecst"},"content":" * Retrieves data from the storage file and converts it into an Array list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"beatricecst"},"content":" * @return An ArrayList of Task objects loaded from the storage file.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"beatricecst"},"content":" * @throws DukeException If there are any issues during data retrieval.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"beatricecst"},"content":" public ArrayList\u003cTask\u003e getData() throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"beatricecst"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"beatricecst"},"content":" ArrayList\u003cTask\u003e oldTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"beatricecst"},"content":" Scanner fileScanner \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"beatricecst"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"beatricecst"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"beatricecst"},"content":" String[] splited \u003d line.split(\" \", 6);","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"beatricecst"},"content":" if (splited[2].equals(\"[T]\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"beatricecst"},"content":" Task todo \u003d new Todo(splited[5]);","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"beatricecst"},"content":" oldTasks.add(todo);","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"beatricecst"},"content":" if (splited[0].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"beatricecst"},"content":" todo.markDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"beatricecst"},"content":" todo.markUndone();","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"beatricecst"},"content":" if (splited[2].equals(\"[D]\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"beatricecst"},"content":" String[] desc \u003d splited[5].split(\"\\\\(by:\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"beatricecst"},"content":" String time \u003d desc[1].split(\"\\\\)\", 2)[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"beatricecst"},"content":" LocalDateTime by \u003d formatData(time);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"beatricecst"},"content":" Task deadline \u003d new Deadline(desc[0], by);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"beatricecst"},"content":" oldTasks.add(deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"beatricecst"},"content":" if (splited[0].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"beatricecst"},"content":" deadline.markDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"beatricecst"},"content":" deadline.markUndone();","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"beatricecst"},"content":" if (splited[2].equals(\"[E]\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"beatricecst"},"content":" String[] description \u003d splited[5].split(\"\\\\(from:\");","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"beatricecst"},"content":" String start \u003d description[1].split(\"to:\", 2)[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"beatricecst"},"content":" String end \u003d description[1].split(\"to:\", 2)[1];","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"beatricecst"},"content":" LocalDateTime from \u003d formatData(start);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"beatricecst"},"content":" LocalDateTime to \u003d formatData(end);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"beatricecst"},"content":" Task event \u003d new Event(description[0], from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"beatricecst"},"content":" oldTasks.add(event);","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"beatricecst"},"content":" if (splited[0].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"beatricecst"},"content":" event.markDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"beatricecst"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"beatricecst"},"content":" event.markUndone();","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"beatricecst"},"content":" return oldTasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"beatricecst"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"beatricecst"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"beatricecst"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"beatricecst"},"content":" * Saves the list of tasks into the storage txt file.","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"beatricecst"},"content":" * @param tasks The list of Task objects to be saved.","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"beatricecst"},"content":" public void saveData(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"beatricecst"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"beatricecst"},"content":" FileWriter writer \u003d new FileWriter(this.file);","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"beatricecst"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"beatricecst"},"content":" int isDone \u003d task.getStatus() ? 1 : 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"beatricecst"},"content":" String description \u003d task.toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"beatricecst"},"content":" String line \u003d String.format(\"%d | %s%n\", isDone, description);","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"beatricecst"},"content":" writer.write(line);","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"beatricecst"},"content":" writer.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"beatricecst"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"beatricecst"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":121,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"beatricecst"},"content":" * Converts a formatted date and time string into a LocalDateTime object.","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"beatricecst"},"content":" * @param data The formatted date and time string.","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"beatricecst"},"content":" * @return A LocalDateTime object parsed from the input string.","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"beatricecst"},"content":" public LocalDateTime formatData(String data) {","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"beatricecst"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d \u0027of\u0027 MMMM uuuu, h:mma\", Locale.ENGLISH);","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"beatricecst"},"content":" LocalDateTime localDateTime \u003d LocalDateTime.parse(data, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"beatricecst"},"content":" return localDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"beatricecst":133}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":" * Handles user interactions and displays messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"public class Ui {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":" * Displays a greeting message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" public void hello() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Hello! I\u0027m froggie!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" * Displays a goodbye message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" public void bye() {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"beatricecst":21}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":" * Represents a task with a specific deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" * Inherits properties and methods from the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" * The deadline for the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" * Constructs a Deadline object with the given description and deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" * @param by The deadline for the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" * Returns a string representation of the Deadline task, including its type, completion status, description, and deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":" * @return A string representation of the Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":" return \"[D] \" + super.toString() + \" (by:\" + super.localDateTimeToString(by) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"beatricecst":36}},{"path":"src/main/java/duke/task/DukeList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" * Represents a list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":" * Provides methods to add, delete, and manipulate tasks within the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":"public class DukeList {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" ArrayList\u003cTask\u003e arr;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" * Constructs a DukeList object with the given initial list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" * @param dukelist The initial list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" public DukeList(ArrayList\u003cTask\u003e dukelist) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" this.arr \u003d dukelist;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" * Constructs a DukeList object with an empty initial list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" public DukeList() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" this.arr \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":" * Retrieves the list of tasks stored in the DukeList.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" * @return The list of tasks stored in the DukeList.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" return this.arr;","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"beatricecst"},"content":" * Displays a message indicating the addition of a new task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"beatricecst"},"content":" * @param task The task that was added.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"beatricecst"},"content":" public void showList(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Now you have \" + arr.size() + \" tasks in the list\");","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"beatricecst"},"content":" * Deletes a task from the list by its index.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"beatricecst"},"content":" * @param number The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"beatricecst"},"content":" public void deleteTask(int number) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"beatricecst"},"content":" Task chosenTask \u003d arr.get(number);","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"\\t\" + chosenTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"beatricecst"},"content":" arr.remove(number);","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Now you have \" + arr.size() + \" tasks in the list\");","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"beatricecst"},"content":" * Adds a Todo task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"beatricecst"},"content":" * @param input The description of the Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"beatricecst"},"content":" public void addTodo(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"beatricecst"},"content":" Todo todo \u003d new Todo(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"beatricecst"},"content":" arr.add(todo);","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"beatricecst"},"content":" showList(todo);","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"beatricecst"},"content":" * Adds a Deadline task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"beatricecst"},"content":" * @param input The description of the Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"beatricecst"},"content":" * @param by The deadline for the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"beatricecst"},"content":" public void addDeadline(String input, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"beatricecst"},"content":" Deadline deadline \u003d new Deadline(input, by);","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"beatricecst"},"content":" arr.add(deadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"beatricecst"},"content":" showList(deadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"beatricecst"},"content":" * Adds an Event task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"beatricecst"},"content":" * @param input The description of the Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"beatricecst"},"content":" * @param start The start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"beatricecst"},"content":" * @param end The end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"beatricecst"},"content":" public void addEvent(String input, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"beatricecst"},"content":" Event event \u003d new Event(input, start, end);","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"beatricecst"},"content":" arr.add(event);","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"beatricecst"},"content":" showList(event);","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"beatricecst"},"content":" * Prints the list of tasks stored in the DukeList.","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"beatricecst"},"content":" public void printList() {","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"beatricecst"},"content":" int arrSize \u003d arr.size();","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"beatricecst"},"content":" for (int i \u003d 0; i \u003c arrSize; i++) {","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"beatricecst"},"content":" int num \u003d i + 1;","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"beatricecst"},"content":" Task chosenTask \u003d arr.get(i);","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"beatricecst"},"content":" System.out.println(num + \". \" + chosenTask.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"beatricecst"},"content":" * Marks a task as done by its index.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"beatricecst"},"content":" * @param number The index of the task to be marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"beatricecst"},"content":" public void setDone(int number) {","lastModifiedDate":"2023-08-22"},{"lineNumber":118,"author":{"gitId":"beatricecst"},"content":" Task chosenTask \u003d arr.get(number);","lastModifiedDate":"2023-08-22"},{"lineNumber":119,"author":{"gitId":"beatricecst"},"content":" chosenTask.markDone();","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":121,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"\\t\" + chosenTask.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":123,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":124,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"beatricecst"},"content":" * Marks a task as not done by its index.","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"beatricecst"},"content":" * @param number The index of the task to be marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"beatricecst"},"content":" public void setUndone(int number) {","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"beatricecst"},"content":" Task chosenTask \u003d arr.get(number);","lastModifiedDate":"2023-08-22"},{"lineNumber":131,"author":{"gitId":"beatricecst"},"content":" chosenTask.markUndone();","lastModifiedDate":"2023-08-22"},{"lineNumber":132,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"beatricecst"},"content":" System.out.println(\"\\t\" + chosenTask.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":135,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"beatricecst":135}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":" * Represents an event task with a start and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" * Inherits properties and methods from the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" * The start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" * The end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" * Constructs an Event object with the given description, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" * @param start The start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" * @param end The end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" * Returns a string representation of the Event task, including its type, completion status, description, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"beatricecst"},"content":" * @return A string representation of the Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"beatricecst"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"beatricecst"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"beatricecst"},"content":" return \"[E] \" + super.toString() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"beatricecst":43}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":" * Represents a task with a description and completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" * The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" public String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" * The completion status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" * Constructs a Task object with the given description and sets completion status to false.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" * Returns the icon representing the completion status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":" * @return An \"X\" if the task is done, or a space if the task is not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"beatricecst"},"content":" * Retrieves the completion status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"beatricecst"},"content":" * @return True if the task is done, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"beatricecst"},"content":" public boolean getStatus() {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"beatricecst"},"content":" return this.isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"beatricecst"},"content":" * Returns a string representation of the Task, including its completion status and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"beatricecst"},"content":" * @return A string representation of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"beatricecst"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"beatricecst"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"beatricecst"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"beatricecst"},"content":" public void markDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"beatricecst"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"beatricecst"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"beatricecst"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"beatricecst"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"beatricecst"},"content":" * Converts a LocalDateTime object to a formatted string.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"beatricecst"},"content":" * @param data The LocalDateTime object to be converted.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"beatricecst"},"content":" * @return A formatted string representing the date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"beatricecst"},"content":" public String localDateTimeToString(LocalDateTime data) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"beatricecst"},"content":" String day \u003d String.valueOf(data.getDayOfMonth());","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"beatricecst"},"content":" String month \u003d data.getMonth().toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"beatricecst"},"content":" month \u003d month.substring(0, 1).toUpperCase() + month.substring(1).toLowerCase();","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"beatricecst"},"content":" String year \u003d String.valueOf(data.getYear());","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"beatricecst"},"content":" String hour \u003d data.format(DateTimeFormatter.ofPattern(\"h\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"beatricecst"},"content":" String minute \u003d data.format(DateTimeFormatter.ofPattern(\"mm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"beatricecst"},"content":" String amPm \u003d data.format(DateTimeFormatter.ofPattern(\"a\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"beatricecst"},"content":" return String.format(\"%s of %s %s, %s:%s%s\", day, month, year, hour, minute, amPm);","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"beatricecst":88}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":" * Represents a todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":" * Inherits properties and methods from the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" * Constructs a Todo object with the given description.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" * @param description The description of the todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" * Returns a string representation of the Todo task, including its type, completion status, and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" * @return A string representation of the Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"beatricecst":27}},{"path":"src/test/java/duke/task/DukeListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import duke.task.DukeList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":"public class DukeListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" private DukeList dukeList;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":" public void setup() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"beatricecst"},"content":" dukeList \u003d new DukeList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"beatricecst"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"beatricecst"},"content":" public void testAddTodo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"beatricecst"},"content":" dukeList.addTodo(\"cook curry\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"beatricecst"},"content":" assertEquals(1, dukeList.getList().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"beatricecst"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"beatricecst"},"content":" public void testAddDeadline() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"beatricecst"},"content":" LocalDateTime by \u003d LocalDateTime.now().plusDays(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"beatricecst"},"content":" dukeList.addDeadline(\"make tiramisu\", by);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"beatricecst"},"content":" assertEquals(1, dukeList.getList().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"beatricecst"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"beatricecst"},"content":" public void testAddEvent() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"beatricecst"},"content":" LocalDateTime start \u003d LocalDateTime.now();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"beatricecst"},"content":" LocalDateTime end \u003d start.plusHours(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"beatricecst"},"content":" dukeList.addEvent(\"Team meeting\", start, end);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"beatricecst"},"content":" assertEquals(1, dukeList.getList().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"beatricecst"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"beatricecst"},"content":" public void testDeleteTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"beatricecst"},"content":" dukeList.addTodo(\"Do something\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"beatricecst"},"content":" dukeList.deleteTask(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"beatricecst"},"content":" assertEquals(0, dukeList.getList().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"beatricecst":46}},{"path":"src/test/java/duke/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"beatricecst"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"beatricecst"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"beatricecst"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"beatricecst"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"beatricecst"},"content":" public void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"beatricecst"},"content":" Todo todo \u003d new Todo(\"Buy groceries\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"beatricecst"},"content":" assertEquals(\"[T] [ ] Buy groceries\", todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"beatricecst"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"beatricecst"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"beatricecst":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"beatricecst"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"beatricecst"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"beatricecst"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"beatricecst"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"beatricecst":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":"beatricecst"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"beatricecst":1,"-":20}}] diff --git a/beatricecst_ip_master/commits.json b/beatricecst_ip_master/commits.json index 88005eb3..841abce8 100644 --- a/beatricecst_ip_master/commits.json +++ b/beatricecst_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"beatricecst":[{"date":"2023-08-22","commitResults":[{"hash":"8357c1646c25356ababcedc0f5008bab8a4875b3","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"5a897ac200136d5f3e9e3f3af5f7473f3ad0c276","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"b645bbdeb4f7a7e245d73964ae1f94fd8c97d416","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":4}}},{"hash":"7aa3fc71bdf09334eea715c75090c77867e0bbb2","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":6}}}]},{"date":"2023-08-23","commitResults":[{"hash":"90366a9d60be9e50fbdb7b27c474633f968e0945","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":13}}}]},{"date":"2023-08-24","commitResults":[{"hash":"d9b6a8a5933569f4e8a2b0ff23494befa210d8ee","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":38}}},{"hash":"0c0db0b6242a8be62d82779793df22c92a504fbc","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":15,"deletions":2}}}]},{"date":"2023-08-26","commitResults":[{"hash":"bc638ed43f6721d19e07efe9c451c6960c4e0ba6","isMergeCommit":false,"messageTitle":"edit some stuff","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"070d8d0d76af8bef5f6eb3ff9857a460e6dfe8b9","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":233,"deletions":70}}}]},{"date":"2023-08-30","commitResults":[{"hash":"66c4224aa8a78a8a53ec3b1b8de1bc05d6f435e5","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":58,"deletions":19}}},{"hash":"fa1ec0d8cc79662977223d386a1885520509819f","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"550ac863d146e5a8a18aa41067af2f85556e2d25","isMergeCommit":false,"messageTitle":"A-moreOOP","messageBody":"","tags":["A-moreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":14,"deletions":35}}},{"hash":"5e5988e1cf3acac36b92214bc0c9dd7811ff68ad","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":29,"deletions":1},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"a9c8bf3800923baad36c38b55903a9a25fb23e17","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 merge branch level-8 to master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"723f23881fab473a050e07bd60d1a4caee483324","isMergeCommit":false,"messageTitle":"change access modifier","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"4efea25fba83128e92c594d2fe428b32bdbcf03d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 merge add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5236256a77e219889c9c2c83231a45266e03065c","isMergeCommit":false,"messageTitle":"Add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"e32efd00554694f7ca17343c3c765903171402c4","isMergeCommit":false,"messageTitle":"Add Junit testing","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"beatricecst":{"java":498,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":13}},"authorContributionVariance":{"beatricecst":6750.933},"authorDisplayNameMap":{"beatricecst":"CS2103T-W10-4 BEAT..TING"}} +{"authorDailyContributionsMap":{"beatricecst":[{"date":"2023-08-22","commitResults":[{"hash":"8357c1646c25356ababcedc0f5008bab8a4875b3","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"5a897ac200136d5f3e9e3f3af5f7473f3ad0c276","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"b645bbdeb4f7a7e245d73964ae1f94fd8c97d416","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":4}}},{"hash":"7aa3fc71bdf09334eea715c75090c77867e0bbb2","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":6}}}]},{"date":"2023-08-23","commitResults":[{"hash":"90366a9d60be9e50fbdb7b27c474633f968e0945","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":13}}}]},{"date":"2023-08-24","commitResults":[{"hash":"d9b6a8a5933569f4e8a2b0ff23494befa210d8ee","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":38}}},{"hash":"0c0db0b6242a8be62d82779793df22c92a504fbc","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":15,"deletions":2}}}]},{"date":"2023-08-26","commitResults":[{"hash":"bc638ed43f6721d19e07efe9c451c6960c4e0ba6","isMergeCommit":false,"messageTitle":"edit some stuff","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"070d8d0d76af8bef5f6eb3ff9857a460e6dfe8b9","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":233,"deletions":70}}}]},{"date":"2023-08-30","commitResults":[{"hash":"66c4224aa8a78a8a53ec3b1b8de1bc05d6f435e5","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":58,"deletions":19}}},{"hash":"fa1ec0d8cc79662977223d386a1885520509819f","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"550ac863d146e5a8a18aa41067af2f85556e2d25","isMergeCommit":false,"messageTitle":"A-moreOOP","messageBody":"","tags":["A-moreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":14,"deletions":35}}},{"hash":"5e5988e1cf3acac36b92214bc0c9dd7811ff68ad","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":29,"deletions":1},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"a9c8bf3800923baad36c38b55903a9a25fb23e17","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 merge branch level-8 to master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"723f23881fab473a050e07bd60d1a4caee483324","isMergeCommit":false,"messageTitle":"change access modifier","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"4efea25fba83128e92c594d2fe428b32bdbcf03d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 merge add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5236256a77e219889c9c2c83231a45266e03065c","isMergeCommit":false,"messageTitle":"Add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"e32efd00554694f7ca17343c3c765903171402c4","isMergeCommit":false,"messageTitle":"Add Junit testing","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":0}}},{"hash":"3c9bfe7aee85044551392daedaebb1374794cb23","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":255,"deletions":14}}},{"hash":"2b4c1d57553a301f6bce23319a060f78fc30f909","isMergeCommit":false,"messageTitle":"Make some small changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"3dc2039409c4396a9cec49161f50274650c4783d","isMergeCommit":false,"messageTitle":"Make super small changes","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"fe3138ddf30656dd949f54ecacd5d1a782b445ab","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":8}}},{"hash":"3979c9572b277d5191d8789c33383aa5859b97c8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"beatricecst":{"java":744,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":13}},"authorContributionVariance":{"beatricecst":12129.173},"authorDisplayNameMap":{"beatricecst":"CS2103T-W10-4 BEAT..TING"}} diff --git a/bhnuka_ip_master/commits.json b/bhnuka_ip_master/commits.json index 1f65af74..c07ca208 100644 --- a/bhnuka_ip_master/commits.json +++ b/bhnuka_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"bhnuka":[{"date":"2023-08-23","commitResults":[{"hash":"62f8d82eadb076e0790ecb80a2d08b6ccf6faf5a","isMergeCommit":false,"messageTitle":"\u003e Gave chatbot a new name (Eva), to differentiate it from the placeholder name Duke \u003e Changed the ASCII Logo to Eva\u0027s \u003e Implemented an initial skeletal version such that it simply greets the user and exits \u003e Removed the initial Duke.java file","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"12442f1a396fe0db997c21c49c314361d8bb4e79","isMergeCommit":false,"messageTitle":"\u003e Improved the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":6}}},{"hash":"79c3c5db7cf3cec2708747f7821b1c513f5fa753","isMergeCommit":false,"messageTitle":"\u003e Added the ability to store whatever text entered by the user and display them back to the user when requested. \u003e Assumed there will be no more than 100 tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"effbd4d7f1d49c58fec075fec059a5394b440fe8","isMergeCommit":false,"messageTitle":"\u003e Added the ability to mark tasks as done and to change the status back to not done. \u003e Used a Task class to represent tasks.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":4}}},{"hash":"1a734ca7edc940186df76852c73a0f7dca5df7e2","isMergeCommit":false,"messageTitle":"\u003e Added support for tracking three types of tasks: \u003e ToDos: tasks without any date/time attached to it e.g., visit new theme park \u003e Deadlines: tasks that need to be done before a specific date/time e.g., submit report by 11/10/2019 5pm \u003e Events: tasks that start at a specific date/time and ends at a specific date/time e.g., (a) team project meeting 2/10/2019 2-4pm (b) orientation week 4/10/2019 to 11/10/2019","messageBody":"\u003e Used Inheritance to support multiple task types\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":3}}},{"hash":"f86b0bbff6fb2f4b03e32037a6c87fe2ce33cd98","isMergeCommit":false,"messageTitle":"\u003e Used the input/output redirection technique to semi-automate the testing of Duke.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"bat":{"insertions":2,"deletions":2}}},{"hash":"4fc73ec7ce19fc631ed477bb3884df46e4f6c688","isMergeCommit":false,"messageTitle":"\u003e Taught the chatbot to deal with errors such as incorrect inputs entered by the user. \u003e Used exceptions to handle errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":12}}},{"hash":"e5afc6b31ad8e65d34809e8006ebd8ee07800f1a","isMergeCommit":false,"messageTitle":"\u003e Added support for deleting tasks from the list. \u003e Used ArrayList\u003cTask\u003e to store tasks.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":12}}}]},{"date":"2023-08-24","commitResults":[{"hash":"e067eacee2e4eb10c06302d98a55059efb55eed6","isMergeCommit":false,"messageTitle":"\u003e Used Java Enums \u003e Added Javadoc comments where necessary","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":13}}},{"hash":"b5a7476570a6a9d384f1826b926dc4253d5b27e8","isMergeCommit":false,"messageTitle":"\u003e Cleaned up the formatting","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}}]},{"date":"2023-08-29","commitResults":[{"hash":"59cd45b70324c56a0659a6bc9702f80910a0a677","isMergeCommit":false,"messageTitle":"Add save feature and duke.txt","messageBody":"Tasks added will be forgotten once the program is exited\n\nNot ideal for a list to be lost each time\n\nSaves list to textfile before program is exited\n\nAllows the program to remember the list upon next start up\n","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":125,"deletions":14}}},{"hash":"a3d14803693221a20626e3f311771cea72b899e2","isMergeCommit":false,"messageTitle":"Add date recognition","messageBody":"Currently difficult to differentiate dates\n\nAdded date recognition using LocalDate and DateTimeFormatter\n\nLibraries already available\n","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":24,"deletions":14}}}]},{"date":"2023-08-31","commitResults":[{"hash":"ed378e6096c19764802dc2aa791dcca6fc7db05a","isMergeCommit":false,"messageTitle":"Refactor the code to extract out closely related code as classes","messageBody":"Difficult to understand as a chunk\n\nRefactored the code\n\nEasier to read\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":3},"java":{"insertions":596,"deletions":436}}},{"hash":"89ea2b743bce152ed6f02cd775add9db8e0d92dd","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"Currently unorganized\n\nOrganized into packages Eva, Task and Command\n\nEasier to import\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":89,"deletions":0}}},{"hash":"af2188aad3fc16ce7851de403386803158a07ec1","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7a497df0749b20716cfde82f73623a664d7f11be","isMergeCommit":false,"messageTitle":"Automate project builds using Gradle","messageBody":"Currently manual test\n\nAdded Gradle support\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":1},"java":{"insertions":74,"deletions":78}}},{"hash":"9aa9f5192844f80c6eca9eb862e5dec7e00c0236","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"bhnuka":{"java":758,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":9}},"authorContributionVariance":{"bhnuka":119569.18},"authorDisplayNameMap":{"bhnuka":"CS2103T-W09-1 BHAN..YAKE"}} +{"authorDailyContributionsMap":{"bhnuka":[{"date":"2023-08-23","commitResults":[{"hash":"62f8d82eadb076e0790ecb80a2d08b6ccf6faf5a","isMergeCommit":false,"messageTitle":"\u003e Gave chatbot a new name (Eva), to differentiate it from the placeholder name Duke \u003e Changed the ASCII Logo to Eva\u0027s \u003e Implemented an initial skeletal version such that it simply greets the user and exits \u003e Removed the initial Duke.java file","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"12442f1a396fe0db997c21c49c314361d8bb4e79","isMergeCommit":false,"messageTitle":"\u003e Improved the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":6}}},{"hash":"79c3c5db7cf3cec2708747f7821b1c513f5fa753","isMergeCommit":false,"messageTitle":"\u003e Added the ability to store whatever text entered by the user and display them back to the user when requested. \u003e Assumed there will be no more than 100 tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"effbd4d7f1d49c58fec075fec059a5394b440fe8","isMergeCommit":false,"messageTitle":"\u003e Added the ability to mark tasks as done and to change the status back to not done. \u003e Used a Task class to represent tasks.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":4}}},{"hash":"1a734ca7edc940186df76852c73a0f7dca5df7e2","isMergeCommit":false,"messageTitle":"\u003e Added support for tracking three types of tasks: \u003e ToDos: tasks without any date/time attached to it e.g., visit new theme park \u003e Deadlines: tasks that need to be done before a specific date/time e.g., submit report by 11/10/2019 5pm \u003e Events: tasks that start at a specific date/time and ends at a specific date/time e.g., (a) team project meeting 2/10/2019 2-4pm (b) orientation week 4/10/2019 to 11/10/2019","messageBody":"\u003e Used Inheritance to support multiple task types\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":3}}},{"hash":"f86b0bbff6fb2f4b03e32037a6c87fe2ce33cd98","isMergeCommit":false,"messageTitle":"\u003e Used the input/output redirection technique to semi-automate the testing of Duke.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"bat":{"insertions":2,"deletions":2}}},{"hash":"4fc73ec7ce19fc631ed477bb3884df46e4f6c688","isMergeCommit":false,"messageTitle":"\u003e Taught the chatbot to deal with errors such as incorrect inputs entered by the user. \u003e Used exceptions to handle errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":12}}},{"hash":"e5afc6b31ad8e65d34809e8006ebd8ee07800f1a","isMergeCommit":false,"messageTitle":"\u003e Added support for deleting tasks from the list. \u003e Used ArrayList\u003cTask\u003e to store tasks.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":12}}}]},{"date":"2023-08-24","commitResults":[{"hash":"e067eacee2e4eb10c06302d98a55059efb55eed6","isMergeCommit":false,"messageTitle":"\u003e Used Java Enums \u003e Added Javadoc comments where necessary","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":13}}},{"hash":"b5a7476570a6a9d384f1826b926dc4253d5b27e8","isMergeCommit":false,"messageTitle":"\u003e Cleaned up the formatting","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}}]},{"date":"2023-08-29","commitResults":[{"hash":"59cd45b70324c56a0659a6bc9702f80910a0a677","isMergeCommit":false,"messageTitle":"Add save feature and duke.txt","messageBody":"Tasks added will be forgotten once the program is exited\n\nNot ideal for a list to be lost each time\n\nSaves list to textfile before program is exited\n\nAllows the program to remember the list upon next start up\n","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":125,"deletions":14}}},{"hash":"a3d14803693221a20626e3f311771cea72b899e2","isMergeCommit":false,"messageTitle":"Add date recognition","messageBody":"Currently difficult to differentiate dates\n\nAdded date recognition using LocalDate and DateTimeFormatter\n\nLibraries already available\n","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":24,"deletions":14}}}]},{"date":"2023-08-31","commitResults":[{"hash":"ed378e6096c19764802dc2aa791dcca6fc7db05a","isMergeCommit":false,"messageTitle":"Refactor the code to extract out closely related code as classes","messageBody":"Difficult to understand as a chunk\n\nRefactored the code\n\nEasier to read\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":3},"java":{"insertions":596,"deletions":436}}},{"hash":"89ea2b743bce152ed6f02cd775add9db8e0d92dd","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"Currently unorganized\n\nOrganized into packages Eva, Task and Command\n\nEasier to import\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":89,"deletions":0}}},{"hash":"af2188aad3fc16ce7851de403386803158a07ec1","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7a497df0749b20716cfde82f73623a664d7f11be","isMergeCommit":false,"messageTitle":"Automate project builds using Gradle","messageBody":"Currently manual test\n\nAdded Gradle support\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":1},"java":{"insertions":74,"deletions":78}}},{"hash":"9aa9f5192844f80c6eca9eb862e5dec7e00c0236","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"bhnuka":{"java":758,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":9}},"authorContributionVariance":{"bhnuka":119569.18},"authorDisplayNameMap":{"bhnuka":"CS2103T-W09-1 BHAN..YAKE"}} diff --git a/billieboy7_ip_master/authorship.json b/billieboy7_ip_master/authorship.json index d314b495..05559457 100644 --- a/billieboy7_ip_master/authorship.json +++ b/billieboy7_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":" private String time;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":" public Deadline(String description, String time) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":" this.time \u003d time;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":" public String storeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" String taskType \u003d \"D\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" String isTaskDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":" isTaskDone \u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" isTaskDone \u003d \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" return (taskType + \" | \" + isTaskDone + \" | \" + this.description + \" | \" + this.time);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), time);","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"billieboy7":27}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" duke.start();","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" static void line() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" private void start() {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" System.out.println(\" Hello! I\u0027m JARVIS\");","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":" this.loadList();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":" } catch (DukeException | IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":" String input \u003d userInput.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" exit();","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":" tasks.list();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":" testMarkAndDelete(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" tasks.mark(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"billieboy7"},"content":" testMarkAndDelete(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"billieboy7"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"billieboy7"},"content":" tasks.unmark(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"billieboy7"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":" String description \u003d input.substring(4).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":" // test whether the todo is valid","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":" testToDo(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"billieboy7"},"content":" tasks.addToDo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"billieboy7"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"billieboy7"},"content":" testEvent(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"billieboy7"},"content":" tasks.addEvent(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"billieboy7"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"billieboy7"},"content":" testDeadline(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"billieboy7"},"content":" tasks.addDeadline(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"billieboy7"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"billieboy7"},"content":" testMarkAndDelete(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"billieboy7"},"content":" tasks.deleteTask(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"billieboy7"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"billieboy7"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"billieboy7"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"billieboy7"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"billieboy7"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"billieboy7"},"content":" private void exit() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"billieboy7"},"content":" this.saveList();","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"billieboy7"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"billieboy7"},"content":" private void testToDo(String description) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"billieboy7"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"billieboy7"},"content":" private void testMarkAndDelete(String description) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"billieboy7"},"content":" String[] words \u003d description.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"billieboy7"},"content":" String index \u003d String.join(\" \", Arrays.copyOfRange(words, 1, words.length));","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"billieboy7"},"content":" if (index.isEmpty() || !index.matches(\"-?(0|[1-9]\\\\d*)\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"Following \\\"mark\\\" or \\\"unmark\\\" or \\\"delete\\\", an integer value is expected. Blanks or\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"billieboy7"},"content":" \" non-integer values are invalid.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"billieboy7"},"content":" int intIndex \u003d Integer.parseInt(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"billieboy7"},"content":" // Passing the first case means the index is an integer","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"billieboy7"},"content":" if (intIndex \u003c 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"The index following \\\"mark\\\" or \\\"unmark\\\" should start from 1.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"billieboy7"},"content":" } else if (intIndex \u003e tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"The index following \\\"mark\\\" or \\\"unmark\\\" should not exceed the total number of \"","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"billieboy7"},"content":" + \"tasks in the list\");","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"billieboy7"},"content":" private void testEvent(String description) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"billieboy7"},"content":" String[] list \u003d description.split(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"billieboy7"},"content":" if (list.length !\u003d 3) {","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"Invalid input. Fill up all fields. Do not forget the \\\"/\\\" symbol before your\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"billieboy7"},"content":" \" start and end time.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"billieboy7"},"content":" String title \u003d list[0].substring(6);","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"billieboy7"},"content":" String start \u003d list[1].substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"billieboy7"},"content":" String end \u003d list[2].substring(3);","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"billieboy7"},"content":" if (start.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"\\\"from\\\" time missing!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"billieboy7"},"content":" } else if (end.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"\\\"to\\\" time missing!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"billieboy7"},"content":" private void testDeadline(String description) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"billieboy7"},"content":" String[] list \u003d description.split(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"billieboy7"},"content":" if (list.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"Invalid input. Fill up all fields. Do not forget the \\\"/\\\" symbol before your\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"billieboy7"},"content":" \" end time.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"billieboy7"},"content":" String time \u003d list[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"billieboy7"},"content":" if (!time.startsWith(\"by\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"Invalid input. Start with \\\"by\\\".\");","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"billieboy7"},"content":" } else if (time.substring(2).equals(\" \") || time.substring(2).isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"Invalid input. Field Empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"billieboy7"},"content":" private void loadList() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"billieboy7"},"content":" File file \u003d new File(\"./data/data.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"billieboy7"},"content":" FileReader fileReader \u003d new FileReader(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"billieboy7"},"content":" BufferedReader reader \u003d new BufferedReader(fileReader); // BufferedReader wraps the fileReader","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"billieboy7"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"billieboy7"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"billieboy7"},"content":" String[] inputArray \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"billieboy7"},"content":" switch(inputArray[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"billieboy7"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"billieboy7"},"content":" ToDo toDo \u003d new ToDo(inputArray[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"billieboy7"},"content":" if (inputArray[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"billieboy7"},"content":" toDo.taskDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"billieboy7"},"content":" tasks.addTask(toDo);","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"billieboy7"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"billieboy7"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"billieboy7"},"content":" Event event \u003d new Event(inputArray[2], inputArray[3], inputArray[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"billieboy7"},"content":" if (inputArray[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"billieboy7"},"content":" event.taskDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"billieboy7"},"content":" tasks.addTask(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"billieboy7"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"billieboy7"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"billieboy7"},"content":" Deadline deadline \u003d new Deadline(inputArray[2], inputArray[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"billieboy7"},"content":" if (inputArray[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"billieboy7"},"content":" deadline.taskDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"billieboy7"},"content":" tasks.addTask(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"billieboy7"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":210,"author":{"gitId":"billieboy7"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":211,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"An unexpected error occurred while reading the text file. Error Code:\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"billieboy7"},"content":" \" 01\");","lastModifiedDate":"2023-08-31"},{"lineNumber":213,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":214,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":215,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"billieboy7"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"billieboy7"},"content":" this.saveList();","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"billieboy7"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"IO error occurred. Check the formatting of the text file - data.txt.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":220,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"billieboy7"},"content":" private void saveList() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":224,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":225,"author":{"gitId":"billieboy7"},"content":" File file \u003d new File(\"./data/data.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"billieboy7"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":227,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"billieboy7"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2023-08-31"},{"lineNumber":229,"author":{"gitId":"billieboy7"},"content":" writer \u003d tasks.printStoreFormat(writer);","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"billieboy7"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"billieboy7"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"IO exception occurred.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"billieboy7":225,"-":11}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":" DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"billieboy7":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":" private String startTime;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":" private String endTime;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" public String storeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":" String taskType \u003d \"D\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" String isTaskDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" isTaskDone \u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" isTaskDone \u003d \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":" return (taskType + \" | \" + isTaskDone + \" | \" + this.description + \" | \" + this.startTime + \" | \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" this.endTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), startTime, endTime);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"billieboy7":30}},{"path":"src/main/java/FileReader.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"public class FileReader {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":" private static void printFileContents(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":" File f \u003d new File(filePath); // create a File for the given file path","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":" Scanner s \u003d new Scanner(f); // create a Scanner using the File as the source","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" printFileContents(\"data/data.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"billieboy7":24}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" public void taskDone(boolean status) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":" this.isDone \u003d status;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" if (status) {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" System.out.println(this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" public String storeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"billieboy7":32}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import java.lang.reflect.Array;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":" public TaskList() {}","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" public void deleteTask(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" System.out.println(taskList.get(taskIndex));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":" taskList.remove(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" public void addEvent(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" String[] list \u003d input.split(\"/\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":" String title \u003d list[0].substring(6);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" String start \u003d list[1].substring(5);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" String end \u003d list[2].substring(3);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" Event event \u003d new Event(title, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" System.out.println(event.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" taskList.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" public void addDeadline(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":" String[] list \u003d input.split(\"/\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":" String title \u003d list[0].substring(9);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" String time \u003d list[1].substring(3);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" Deadline deadline \u003d new Deadline(title, time);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" System.out.println(deadline.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" taskList.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" public void addToDo(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" ToDo toDo \u003d new ToDo(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":" System.out.println(toDo.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":" taskList.add(toDo);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" // method to quickly load up tasks into the tasklist during loading","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" public void list() {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":" Duke.line();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"There are no tasks in your list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"billieboy7"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"billieboy7"},"content":" Task t \u003d taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"billieboy7"},"content":" System.out.println(index + \".\" + t.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"billieboy7"},"content":" Duke.line();","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":" public void mark(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"billieboy7"},"content":" Task currTask \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"billieboy7"},"content":" currTask.taskDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"billieboy7"},"content":" public void unmark(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"billieboy7"},"content":" Task currTask \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"billieboy7"},"content":" currTask.taskDone(false);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"billieboy7"},"content":" public BufferedWriter printStoreFormat(BufferedWriter writer) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"billieboy7"},"content":" for (Task t : taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"billieboy7"},"content":" writer.append(t.storeFormat()).append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"billieboy7"},"content":" return writer;","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"billieboy7"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"billieboy7"},"content":" return taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"billieboy7":92}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":" public ToDo(String description) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":" public String storeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":" String taskType \u003d \"T\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":" String isTaskDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" isTaskDone \u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":" isTaskDone \u003d \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" return (taskType + \" | \" + isTaskDone + \" | \" + this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"billieboy7":22}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":" private String time;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":" DateTimeFormatter outputFormatWithTime \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mma\");","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":" public Deadline(String description, String time) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" this.time \u003d time;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" public Deadline(String description, LocalDateTime dateTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" public String storeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" String taskType \u003d \"D\";","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" String isTaskDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" isTaskDone \u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" isTaskDone \u003d \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" return (taskType + \" | \" + isTaskDone + \" | \" + this.description + \" | \" + this.time);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" if (dateTime \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), time);","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), dateTime.format(outputFormatWithTime));","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"billieboy7":46}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":" duke.start();","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" static void line() {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" private void start() {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":" System.out.println(\" Hello! I\u0027m JARVIS\");","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":" this.loadList();","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" } catch (DukeException | IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" String input \u003d userInput.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":" exit();","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"billieboy7"},"content":" tasks.list();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"billieboy7"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"billieboy7"},"content":" testMarkAndDelete(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"billieboy7"},"content":" tasks.mark(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"billieboy7"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":" testMarkAndDelete(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":" tasks.unmark(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"billieboy7"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"billieboy7"},"content":" String description \u003d input.substring(4).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"billieboy7"},"content":" // test whether the todo is valid","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"billieboy7"},"content":" testToDo(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"billieboy7"},"content":" tasks.addToDo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"billieboy7"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"billieboy7"},"content":" testEvent(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"billieboy7"},"content":" tasks.addEvent(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"billieboy7"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"billieboy7"},"content":" testDeadline(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"billieboy7"},"content":" tasks.addDeadline(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"billieboy7"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"billieboy7"},"content":" testMarkAndDelete(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"billieboy7"},"content":" tasks.deleteTask(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"billieboy7"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"billieboy7"},"content":" } catch (DukeException exception) {","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"billieboy7"},"content":" System.out.println(exception.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"billieboy7"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"billieboy7"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"billieboy7"},"content":" private void exit() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"billieboy7"},"content":" this.saveList();","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"billieboy7"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"billieboy7"},"content":" private void testToDo(String description) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"billieboy7"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"billieboy7"},"content":" private void testMarkAndDelete(String description) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"billieboy7"},"content":" String[] words \u003d description.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"billieboy7"},"content":" String index \u003d String.join(\" \", Arrays.copyOfRange(words, 1, words.length));","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"billieboy7"},"content":" if (index.isEmpty() || !index.matches(\"-?(0|[1-9]\\\\d*)\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"Following \\\"mark\\\" or \\\"unmark\\\" or \\\"delete\\\", an integer value is expected. Blanks or\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"billieboy7"},"content":" \" non-integer values are invalid.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"billieboy7"},"content":" int intIndex \u003d Integer.parseInt(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"billieboy7"},"content":" // Passing the first case means the index is an integer","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"billieboy7"},"content":" if (intIndex \u003c 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"The index following \\\"mark\\\" or \\\"unmark\\\" should start from 1.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"billieboy7"},"content":" } else if (intIndex \u003e tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"The index following \\\"mark\\\" or \\\"unmark\\\" should not exceed the total number of \"","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"billieboy7"},"content":" + \"tasks in the list\");","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"billieboy7"},"content":" private void testEvent(String description) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"billieboy7"},"content":" String[] list \u003d description.split(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"billieboy7"},"content":" if (list.length !\u003d 3) {","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"Invalid input. Fill up all fields. Do not forget the \\\"/\\\" symbol before your\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"billieboy7"},"content":" \" start and end time.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"billieboy7"},"content":" String title \u003d list[0].substring(6);","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"billieboy7"},"content":" String start \u003d list[1].substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"billieboy7"},"content":" String end \u003d list[2].substring(3);","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"billieboy7"},"content":" if (start.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"\\\"from\\\" time missing!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"billieboy7"},"content":" } else if (end.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"\\\"to\\\" time missing!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"billieboy7"},"content":" private void testDeadline(String description) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"billieboy7"},"content":" String[] list \u003d description.split(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"billieboy7"},"content":" if (list.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"Invalid input. Fill up all fields. Do not forget the \\\"/\\\" symbol before your\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"billieboy7"},"content":" \" end time.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"billieboy7"},"content":" String time \u003d list[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"billieboy7"},"content":" if (!time.startsWith(\"by\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"Invalid input. Start with \\\"by\\\".\");","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"billieboy7"},"content":" } else if (time.substring(2).equals(\" \") || time.substring(2).isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"Invalid input. Field Empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"billieboy7"},"content":" private void loadList() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"billieboy7"},"content":" File file \u003d new File(\"./data/data.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"billieboy7"},"content":" FileReader fileReader \u003d new FileReader(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"billieboy7"},"content":" BufferedReader reader \u003d new BufferedReader(fileReader); // BufferedReader wraps the fileReader","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"billieboy7"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"billieboy7"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"billieboy7"},"content":" String[] inputArray \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"billieboy7"},"content":" switch(inputArray[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"billieboy7"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"billieboy7"},"content":" ToDo toDo \u003d new ToDo(inputArray[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"billieboy7"},"content":" if (inputArray[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"billieboy7"},"content":" toDo.taskDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"billieboy7"},"content":" tasks.addTask(toDo);","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"billieboy7"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"billieboy7"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"billieboy7"},"content":" Event event \u003d new Event(inputArray[2], inputArray[3], inputArray[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"billieboy7"},"content":" if (inputArray[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"billieboy7"},"content":" event.taskDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"billieboy7"},"content":" tasks.addTask(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"billieboy7"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"billieboy7"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"billieboy7"},"content":" Deadline deadline \u003d new Deadline(inputArray[2], inputArray[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":210,"author":{"gitId":"billieboy7"},"content":" if (inputArray[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":211,"author":{"gitId":"billieboy7"},"content":" deadline.taskDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":213,"author":{"gitId":"billieboy7"},"content":" tasks.addTask(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":214,"author":{"gitId":"billieboy7"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":215,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"billieboy7"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"An unexpected error occurred while reading the text file. Error Code:\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"billieboy7"},"content":" \" 01\");","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":220,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"billieboy7"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"billieboy7"},"content":" this.saveList();","lastModifiedDate":"2023-08-31"},{"lineNumber":224,"author":{"gitId":"billieboy7"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":225,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"IO error occurred. Check the formatting of the text file - data.txt.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":227,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":229,"author":{"gitId":"billieboy7"},"content":" private void saveList() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"billieboy7"},"content":" File file \u003d new File(\"./data/data.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"billieboy7"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"billieboy7"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"billieboy7"},"content":" writer \u003d tasks.printStoreFormat(writer);","lastModifiedDate":"2023-08-31"},{"lineNumber":236,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":237,"author":{"gitId":"billieboy7"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":238,"author":{"gitId":"billieboy7"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":239,"author":{"gitId":"billieboy7"},"content":" throw new DukeException(\"IO exception occurred.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":240,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"billieboy7":231,"-":11}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":" DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"billieboy7":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":" private String startTime;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":" private String endTime;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":" private LocalDateTime startDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":" private LocalDateTime endDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":" DateTimeFormatter outputFormatWithTime \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mma\");","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" public Event(String description, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" public String storeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" String taskType \u003d \"D\";","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" String isTaskDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" isTaskDone \u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" isTaskDone \u003d \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" return (taskType + \" | \" + isTaskDone + \" | \" + this.description + \" | \" + this.startTime + \" | \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" this.endTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" if (startDateTime \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), startTime, endTime);","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), startDateTime.format(outputFormatWithTime)","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" , endDateTime.format(outputFormatWithTime));","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"billieboy7":49}},{"path":"src/main/java/FileReader.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"public class FileReader {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":" private static void printFileContents(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":" File f \u003d new File(filePath); // create a File for the given file path","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":" Scanner s \u003d new Scanner(f); // create a Scanner using the File as the source","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" printFileContents(\"data/data.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"billieboy7":24}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" public void taskDone(boolean status) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":" this.isDone \u003d status;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" if (status) {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" System.out.println(this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":" public String storeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"billieboy7":32}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"import java.text.ParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" public TaskList() {}","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" public void deleteTask(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" System.out.println(taskList.get(taskIndex));","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" taskList.remove(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"billieboy7"},"content":" public void addEvent(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"billieboy7"},"content":" String[] list \u003d input.split(\"/\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"billieboy7"},"content":" String title \u003d list[0].substring(6);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"billieboy7"},"content":" String start \u003d list[1].substring(5).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"billieboy7"},"content":" String end \u003d list[2].substring(3).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"billieboy7"},"content":" // returns 1 if correct datetime","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"billieboy7"},"content":" // returns 0 if random string input","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"billieboy7"},"content":" int startTimeFormat \u003d this.computeDateTimeFormat(start);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"billieboy7"},"content":" int endTimeFormat \u003d this.computeDateTimeFormat(end);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"billieboy7"},"content":" if (startTimeFormat !\u003d 1 || endTimeFormat !\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"billieboy7"},"content":" Event event \u003d new Event(title, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"billieboy7"},"content":" System.out.println(event.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"billieboy7"},"content":" taskList.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"billieboy7"},"content":" DateTimeFormatter inputFormatWithTime \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"billieboy7"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(start, inputFormatWithTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"billieboy7"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(end, inputFormatWithTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"billieboy7"},"content":" Event event \u003d new Event(title, startDateTime, endDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"billieboy7"},"content":" System.out.println(event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"billieboy7"},"content":" taskList.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"billieboy7"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Invalid date-time format. Stick to the given format of dd-MM-yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"billieboy7"},"content":" public void addDeadline(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"billieboy7"},"content":" String[] list \u003d input.split(\"/\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"billieboy7"},"content":" String title \u003d list[0].substring(9);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"billieboy7"},"content":" String time \u003d list[1].substring(3).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"billieboy7"},"content":" // returns 1 if correct datetime","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"billieboy7"},"content":" // returns 0 if random string input","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"billieboy7"},"content":" int timeFormat \u003d this.computeDateTimeFormat(time);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"billieboy7"},"content":" if (timeFormat \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"billieboy7"},"content":" Deadline deadline \u003d new Deadline(title, time);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"billieboy7"},"content":" System.out.println(deadline.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"billieboy7"},"content":" taskList.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"billieboy7"},"content":" DateTimeFormatter inputFormatWithTime \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"billieboy7"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(time, inputFormatWithTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"billieboy7"},"content":" Deadline deadline \u003d new Deadline(title, dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"billieboy7"},"content":" System.out.println(deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"billieboy7"},"content":" taskList.add(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"billieboy7"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Invalid date-time format. Stick to the given format of dd-MM-yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"billieboy7"},"content":" public void addToDo(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"billieboy7"},"content":" ToDo toDo \u003d new ToDo(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"billieboy7"},"content":" System.out.println(toDo.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"billieboy7"},"content":" taskList.add(toDo);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"billieboy7"},"content":" // method to quickly load up tasks into the tasklist during loading","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"billieboy7"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"billieboy7"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"billieboy7"},"content":" public void list() {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"billieboy7"},"content":" Duke.line();","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"billieboy7"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"There are no tasks in your list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"billieboy7"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"billieboy7"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"billieboy7"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"billieboy7"},"content":" Task t \u003d taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"billieboy7"},"content":" System.out.println(index + \".\" + t.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"billieboy7"},"content":" Duke.line();","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"billieboy7"},"content":" public void mark(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"billieboy7"},"content":" Task currTask \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"billieboy7"},"content":" currTask.taskDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"billieboy7"},"content":" public void unmark(int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"billieboy7"},"content":" Task currTask \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"billieboy7"},"content":" currTask.taskDone(false);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"billieboy7"},"content":" public BufferedWriter printStoreFormat(BufferedWriter writer) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"billieboy7"},"content":" for (Task t : taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"billieboy7"},"content":" writer.append(t.storeFormat()).append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"billieboy7"},"content":" return writer;","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"billieboy7"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"billieboy7"},"content":" return taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"billieboy7"},"content":" public static boolean isNumeric(String strNum) {","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"billieboy7"},"content":" if (strNum \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"billieboy7"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"billieboy7"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"billieboy7"},"content":" double d \u003d Double.parseDouble(strNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"billieboy7"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"billieboy7"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"billieboy7"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"billieboy7"},"content":" private int computeDateTimeFormat(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"billieboy7"},"content":" // returns 1 if correct datetime","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"billieboy7"},"content":" // returns 2 if correct date","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"billieboy7"},"content":" // returns 0 if random string input","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"billieboy7"},"content":" // Assume that the date input is dd/MM/yyyy 16-08-1977 1800","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"billieboy7"},"content":" String[] blankArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"billieboy7"},"content":" // Check for datetime input","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"billieboy7"},"content":" if (blankArray.length \u003d\u003d 2 \u0026\u0026 isNumeric(blankArray[1])) {","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"billieboy7"},"content":" String[] slashArray \u003d blankArray[0].split(\"-\");","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"billieboy7"},"content":" boolean isAllNumeric \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"billieboy7"},"content":" for (String s : slashArray) {","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"billieboy7"},"content":" if (!isNumeric(s)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"billieboy7"},"content":" isAllNumeric \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"billieboy7"},"content":" if (slashArray.length \u003d\u003d 3 \u0026\u0026 isAllNumeric) {","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"billieboy7"},"content":" return 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"billieboy7"},"content":"// } else if (blankArray.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"billieboy7"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"billieboy7"},"content":"// String[] slashArray \u003d blankArray[0].split(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"billieboy7"},"content":"// boolean isAllNumeric \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"billieboy7"},"content":"// for (String s : slashArray) {","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"billieboy7"},"content":"// if (!isNumeric(s)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"billieboy7"},"content":"// isAllNumeric \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"billieboy7"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"billieboy7"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"billieboy7"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"billieboy7"},"content":"// if (slashArray.length \u003d\u003d 3 \u0026\u0026 isAllNumeric) {","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"billieboy7"},"content":"// return 2;","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"billieboy7"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"billieboy7"},"content":" return 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"billieboy7":190}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billieboy7"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"billieboy7"},"content":" public ToDo(String description) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"billieboy7"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"billieboy7"},"content":" public String storeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"billieboy7"},"content":" String taskType \u003d \"T\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"billieboy7"},"content":" String isTaskDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"billieboy7"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"billieboy7"},"content":" isTaskDone \u003d \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"billieboy7"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"billieboy7"},"content":" isTaskDone \u003d \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"billieboy7"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"billieboy7"},"content":" return (taskType + \" | \" + isTaskDone + \" | \" + this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"billieboy7"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"billieboy7"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"billieboy7"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"billieboy7"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"billieboy7"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"billieboy7":22}}] diff --git a/billieboy7_ip_master/commits.json b/billieboy7_ip_master/commits.json index c76d0879..cf742aba 100644 --- a/billieboy7_ip_master/commits.json +++ b/billieboy7_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"billieboy7":[{"date":"2023-08-23","commitResults":[{"hash":"fcf1031860e9fc7b36c730d2ceb1e43356dc7eb9","isMergeCommit":false,"messageTitle":"test","messageBody":"","tags":["test"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"c7313997e4c0e361cad9c064f654ba4c51f30652","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"c1ec3f1335043175c02f5cdef10b165694911ea4","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":6}}},{"hash":"d8a3f888fbfb53d47ae8574cfb2fb7e240ca4805","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"4f65a093ad90f407f3c9271ce3025f19a2483983","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":8}}},{"hash":"5280c6a2c2532345cb8b5582b3fb13f5072603d2","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":31}}},{"hash":"ba568193134f1f65e5d325c829c9e18d6ae1c130","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":135,"deletions":39}}},{"hash":"31e51bbc016eb9772f642f6d6fd385ac2f1a4624","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"ae06ae9e5e09639e0e981c9b9ae5bebbb72b8357","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}}]},{"date":"2023-08-29","commitResults":[{"hash":"838dc430c0205bcae1f6fd961517653050fe862c","isMergeCommit":false,"messageTitle":"test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":9},"java":{"insertions":5,"deletions":3},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"a29ce9cb05b5773e18e1fc4ca7ed0f9a20654dd0","isMergeCommit":false,"messageTitle":"branch-Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":256,"deletions":56}}},{"hash":"5d66dcef38afcbe87fdcfd76ab8882b265049bc0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"billieboy7":{"java":457,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"billieboy7":19764.346},"authorDisplayNameMap":{"billieboy7":"CS2103T-T08-4 STAL..UMAR"}} +{"authorDailyContributionsMap":{"billieboy7":[{"date":"2023-08-23","commitResults":[{"hash":"fcf1031860e9fc7b36c730d2ceb1e43356dc7eb9","isMergeCommit":false,"messageTitle":"test","messageBody":"","tags":["test"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"c7313997e4c0e361cad9c064f654ba4c51f30652","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"c1ec3f1335043175c02f5cdef10b165694911ea4","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":6}}},{"hash":"d8a3f888fbfb53d47ae8574cfb2fb7e240ca4805","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"4f65a093ad90f407f3c9271ce3025f19a2483983","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":8}}},{"hash":"5280c6a2c2532345cb8b5582b3fb13f5072603d2","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":31}}},{"hash":"ba568193134f1f65e5d325c829c9e18d6ae1c130","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":135,"deletions":39}}},{"hash":"31e51bbc016eb9772f642f6d6fd385ac2f1a4624","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"ae06ae9e5e09639e0e981c9b9ae5bebbb72b8357","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}}]},{"date":"2023-08-29","commitResults":[{"hash":"838dc430c0205bcae1f6fd961517653050fe862c","isMergeCommit":false,"messageTitle":"test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":9},"java":{"insertions":5,"deletions":3},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"a29ce9cb05b5773e18e1fc4ca7ed0f9a20654dd0","isMergeCommit":false,"messageTitle":"branch-Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":256,"deletions":56}}},{"hash":"5d66dcef38afcbe87fdcfd76ab8882b265049bc0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"5ae3a1f9ccceaeb6b3971ad6039cd3a03ebb90aa","isMergeCommit":false,"messageTitle":"branch-Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":158,"deletions":16}}},{"hash":"3a82580fd9c06ec181d89ac540a6205a07cf5d53","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"billieboy7":{"java":599,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"billieboy7":19288.117},"authorDisplayNameMap":{"billieboy7":"CS2103T-T08-4 STAL..UMAR"}} diff --git a/cheeggered_ip_master/authorship.json b/cheeggered_ip_master/authorship.json index b6923ef4..b0c44294 100644 --- a/cheeggered_ip_master/authorship.json +++ b/cheeggered_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"[T][ ] ip","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"[D][X] assignment (by: 2359)","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"[E][ ] eat (from: 12pm to: 2pm)","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":3}},{"path":"src/main/java/CheeChat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"public class CheeChat {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" File f \u003d new File(\"./data/duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" if (!f.getParentFile().isDirectory()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" f.mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":" } if (!f.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"cheeggered"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cheeggered"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cheeggered"},"content":" while (s.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cheeggered"},"content":" String task \u003d s.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cheeggered"},"content":" System.out.println(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cheeggered"},"content":" Task instance \u003d Task.readFile(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cheeggered"},"content":" tasks.add(instance);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cheeggered"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"error file not found\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":45,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Hello! I\u0027m CheeChat\");","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"cheeggered"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"cheeggered"},"content":" String cmd \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"cheeggered"},"content":" while(!cmd.equals(\"bye\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"cheeggered"},"content":" int counter \u003d tasks.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"cheeggered"},"content":" if (cmd.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"cheeggered"},"content":" for (int x \u003d 0; x \u003c counter; x++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"cheeggered"},"content":" int index \u003d x + 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"cheeggered"},"content":" System.out.println(index + \".\" + tasks.get(x).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"cheeggered"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"cheeggered"},"content":" if (cmd.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"cheeggered"},"content":" int index \u003d cmd.length() - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"cheeggered"},"content":" char c \u003d cmd.charAt(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"cheeggered"},"content":" int number \u003d c - 48 - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"cheeggered"},"content":" System.out.println(\" \" + tasks.get(number).description(0));","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"cheeggered"},"content":" FileWriter fw;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"cheeggered"},"content":" try{","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"cheeggered"},"content":" fw \u003d new FileWriter(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"cheeggered"},"content":" String toBeWritten \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"cheeggered"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"cheeggered"},"content":" toBeWritten \u003d toBeWritten.concat(tasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"cheeggered"},"content":" toBeWritten +\u003d System.lineSeparator();","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"cheeggered"},"content":" fw.write(toBeWritten);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"cheeggered"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"cheeggered"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"cheeggered"},"content":" } else if (cmd.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"cheeggered"},"content":" int index \u003d cmd.length() - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"cheeggered"},"content":" char c \u003d cmd.charAt(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"cheeggered"},"content":" int number \u003d c - 48 - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"cheeggered"},"content":" System.out.println(\" \" + tasks.get(number).description(1));","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"cheeggered"},"content":" FileWriter fw;","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"cheeggered"},"content":" try{","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"cheeggered"},"content":" fw \u003d new FileWriter(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"cheeggered"},"content":" String toBeWritten \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"cheeggered"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"cheeggered"},"content":" toBeWritten \u003d toBeWritten.concat(tasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"cheeggered"},"content":" toBeWritten +\u003d System.lineSeparator();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"cheeggered"},"content":" fw.write(toBeWritten);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"cheeggered"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"cheeggered"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"cheeggered"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"cheeggered"},"content":" if (cmd.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"cheeggered"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"cheeggered"},"content":" if (cmd.substring(4).isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"cheeggered"},"content":" throw new CheeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"cheeggered"},"content":" String desc \u003d cmd.substring(4);","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"cheeggered"},"content":" Task instance \u003d new Todo(desc);","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"cheeggered"},"content":" tasks.add(instance);","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"cheeggered"},"content":" System.out.println(\" \" + instance);","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"cheeggered"},"content":" FileWriter fw;","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"cheeggered"},"content":" try{","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"cheeggered"},"content":" fw \u003d new FileWriter(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"cheeggered"},"content":" String toBeWritten \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"cheeggered"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"cheeggered"},"content":" toBeWritten \u003d toBeWritten.concat(tasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"cheeggered"},"content":" toBeWritten +\u003d System.lineSeparator();","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"cheeggered"},"content":" fw.write(toBeWritten);","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"cheeggered"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"cheeggered"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"cheeggered"},"content":" } catch (CheeException e){","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"cheeggered"},"content":" } else if (cmd.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"cheeggered"},"content":" int index \u003d cmd.indexOf(47);","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"cheeggered"},"content":" String description \u003d cmd.substring(8, index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"cheeggered"},"content":" String time \u003d cmd.substring(index + 4);","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"cheeggered"},"content":" Task instance \u003d new Deadline(description, time);","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"cheeggered"},"content":" tasks.add(instance);","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"cheeggered"},"content":" System.out.println(\" \" + instance);","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"cheeggered"},"content":" FileWriter fw;","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"cheeggered"},"content":" try{","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"cheeggered"},"content":" fw \u003d new FileWriter(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"cheeggered"},"content":" String toBeWritten \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"cheeggered"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"cheeggered"},"content":" toBeWritten \u003d toBeWritten.concat(tasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"cheeggered"},"content":" toBeWritten +\u003d System.lineSeparator();","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"cheeggered"},"content":" fw.write(toBeWritten);","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"cheeggered"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"cheeggered"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"cheeggered"},"content":" } else if (cmd.startsWith(\"event\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"cheeggered"},"content":" int index1 \u003d cmd.indexOf(47);","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"cheeggered"},"content":" String description \u003d cmd.substring(5, index1 - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"cheeggered"},"content":" String duration \u003d cmd.substring(index1 + 5);","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"cheeggered"},"content":" int index2 \u003d duration.indexOf(47);","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"cheeggered"},"content":" String from \u003d duration.substring(0, index2);","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"cheeggered"},"content":" String to \u003d duration.substring(index2 + 3);","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"cheeggered"},"content":" Task instance \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"cheeggered"},"content":" tasks.add(instance);","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"cheeggered"},"content":" System.out.println(\" \" + instance);","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"cheeggered"},"content":" FileWriter fw;","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"cheeggered"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"cheeggered"},"content":" fw \u003d new FileWriter(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"cheeggered"},"content":" String toBeWritten \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"cheeggered"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"cheeggered"},"content":" toBeWritten \u003d toBeWritten.concat(tasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"cheeggered"},"content":" toBeWritten +\u003d System.lineSeparator();","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"cheeggered"},"content":" fw.write(toBeWritten);","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"cheeggered"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"cheeggered"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"cheeggered"},"content":" } else if (cmd.startsWith(\"delete\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"cheeggered"},"content":" int index \u003d cmd.length() - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"cheeggered"},"content":" char c \u003d cmd.charAt(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"cheeggered"},"content":" int number \u003d c - 48 - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"cheeggered"},"content":" System.out.println(\" \" + tasks.get(number));","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"cheeggered"},"content":" tasks.remove(number);","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"cheeggered"},"content":" int x \u003d tasks.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Now you have \" + x + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"cheeggered"},"content":" FileWriter fw;","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"cheeggered"},"content":" try{","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"cheeggered"},"content":" fw \u003d new FileWriter(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"cheeggered"},"content":" String toBeWritten \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"cheeggered"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"cheeggered"},"content":" toBeWritten \u003d toBeWritten.concat(tasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"cheeggered"},"content":" toBeWritten +\u003d System.lineSeparator();","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"cheeggered"},"content":" fw.write(toBeWritten);","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"cheeggered"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"cheeggered"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"cheeggered"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"cheeggered"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"cheeggered"},"content":" throw new CheeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"cheeggered"},"content":" } catch (CheeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"cheeggered"},"content":" cmd \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":212,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"-":9,"cheeggered":203}},{"path":"src/main/java/CheeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"public class CheeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":" public CheeException(String message){","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"cheeggered":6}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"cheeggered":14}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" return \"[E]\" + super.toString() + \" (from:\" + this.from + \"to:\" + this.to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"cheeggered":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" private void mark(){","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" private void unmark(){","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":" public String description(int m) {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":" String s;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":" if (m \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":" // mark","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"cheeggered"},"content":" mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"cheeggered"},"content":" s \u003d this.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"cheeggered"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"cheeggered"},"content":" unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"cheeggered"},"content":" s \u003d this.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"cheeggered"},"content":" return s;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"cheeggered"},"content":" public static Task readFile(String nextLine) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cheeggered"},"content":" String next \u003d nextLine.substring(3);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cheeggered"},"content":" Task t;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cheeggered"},"content":" if(nextLine.startsWith(\"[T]\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cheeggered"},"content":" String desc \u003d next.substring(4);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cheeggered"},"content":" t \u003d new Todo(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cheeggered"},"content":" } else if (nextLine.startsWith(\"[D]\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"cheeggered"},"content":" int endDesc \u003d next.indexOf(\"(by: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"cheeggered"},"content":" String desc \u003d next.substring(4, endDesc);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"cheeggered"},"content":" int len \u003d next.length();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"cheeggered"},"content":" String time \u003d next.substring(5, len - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"cheeggered"},"content":" t \u003d new Deadline(desc, time);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"cheeggered"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"cheeggered"},"content":" int endDesc \u003d next.indexOf(\"(from: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"cheeggered"},"content":" String desc \u003d next.substring(4, endDesc);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"cheeggered"},"content":" int endFrom \u003d next.indexOf(\"to: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"cheeggered"},"content":" String from \u003d next.substring(endDesc - 6, endFrom);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"cheeggered"},"content":" String to \u003d next.substring(endFrom - 3, next.length() - 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"cheeggered"},"content":" t \u003d new Event(desc, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"cheeggered"},"content":" if (next.startsWith(\"[X]\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"cheeggered"},"content":" t.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"cheeggered"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"cheeggered"},"content":" t.unmark();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"cheeggered"},"content":" return t;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"cheeggered"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"cheeggered"},"content":" return \"[\" + getStatusIcon() + \"]\" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"cheeggered":68}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"cheeggered":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"todo read","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"event meeting /from 1pm /to 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"deadline ip /by 2359","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"cheeggered":6}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"cheeggered"},"content":" mainClass.set(\"duke.CheeChat\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"cheeggered"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"cheeggered":2}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"[T][ ] ip","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"[D][X] assignment (by: 2019-10-15)","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"[D][ ] vote (by: 2023-09-01)","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"[E][ ] repair (from: 2023-09-01 to: 2023-09-02)","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"[D][ ] 2101 script (by: 2023-09-04)","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":5}},{"path":"src/main/java/duke/CheeChat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import duke.util.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"public class CheeChat {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" public CheeChat(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":" new CheeChat(\"data/duke.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"cheeggered"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cheeggered"},"content":" ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cheeggered"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cheeggered"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cheeggered"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"cheeggered"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cheeggered"},"content":" ui.showLine(); // show the divider line (\"_______\")","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cheeggered"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cheeggered"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cheeggered"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cheeggered"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cheeggered"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cheeggered"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cheeggered"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":45,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"-":2,"cheeggered":43}},{"path":"src/main/java/duke/CheeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"public class CheeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":" public CheeException(String message){","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"cheeggered":8}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":" Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" // add task into tasks, input coming from Parse class, Parse class is supposed to make the String into a duke.task.Task","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" // print in ui","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" // write in storage","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" taskList.add(this.task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":" ui.printAddedTask(this.task, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" String toBeWritten \u003d taskList.toWrite();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":" storage.write(toBeWritten);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cheeggered"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":28}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":12}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" private int num;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" public DeleteCommand(int num) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" this.num \u003d num;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" Task task \u003d taskList.delete(this.num);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" ui.printDeletedTask(task, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":" String toBeWritten \u003d taskList.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" storage.write(toBeWritten);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":" public boolean isExit(){","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":29}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" ui.printExitMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":18}},{"path":"src/main/java/duke/command/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" ui.printInvalidMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" public boolean isExit(){","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":19}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" ui.printList(taskList.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" public boolean isExit(){","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":17}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" private int num;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" public MarkCommand(int num) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" this.num \u003d num;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":" Task task \u003d taskList.mark(num);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" ui.printMarkMessage(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":" String toBeWritten \u003d taskList.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":" storage.write(toBeWritten);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cheeggered"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cheeggered"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":29}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":" private int num;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" public UnmarkCommand(int num) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" this.num \u003d num;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" Task task \u003d taskList.unmark(num);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":" ui.printMarkMessage(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" String toBeWritten \u003d taskList.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":" storage.write(toBeWritten);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cheeggered"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":28}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":" protected LocalDate by;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" public String toWrite() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" return \"[D]\" + super.toWrite() + \" (by: \" + this.by.toString() + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"cheeggered":24}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":" protected LocalDate from;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":" protected LocalDate to;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" public String toWrite() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":" return \"[E]\" + super.toWrite() + \"(from: \" + this.from.toString() + \" to: \" + this.to.toString() + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":" return \"[E]\" + super.toString() + \"(from: \" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \" to: \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"cheeggered":25}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" public Task description(boolean status) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" isDone \u003d status;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":" return this;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":" public String toWrite() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cheeggered"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"cheeggered"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"cheeggered":30}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" public String toWrite() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" return \"[T]\" + super.toWrite();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"cheeggered":19}},{"path":"src/main/java/duke/util/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.util;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.CheeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import duke.command.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" public static Command parse(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" } else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" int index \u003d command.length() - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":" char c \u003d command.charAt(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" int number \u003d c - 48 - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":" return new MarkCommand(number);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":" int index \u003d command.length() - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":" char c \u003d command.charAt(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":" int number \u003d c - 48 - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cheeggered"},"content":" return new UnmarkCommand(number);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cheeggered"},"content":" } else if (command.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cheeggered"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cheeggered"},"content":" if (command.substring(4).isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cheeggered"},"content":" throw new CheeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cheeggered"},"content":" String desc \u003d command.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cheeggered"},"content":" Task instance \u003d new Todo(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cheeggered"},"content":" return new AddCommand(instance);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cheeggered"},"content":" } catch (CheeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cheeggered"},"content":" } else if (command.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cheeggered"},"content":" int index \u003d command.indexOf(47);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cheeggered"},"content":" String description \u003d command.substring(9, index - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cheeggered"},"content":" String time \u003d command.substring(index + 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"cheeggered"},"content":" LocalDate day \u003d LocalDate.parse(time);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"cheeggered"},"content":" Task instance \u003d new Deadline(description, day);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"cheeggered"},"content":" return new AddCommand(instance);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"cheeggered"},"content":" } else if (command.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"cheeggered"},"content":" int index1 \u003d command.indexOf(47);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"cheeggered"},"content":" String description \u003d command.substring(6, index1);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"cheeggered"},"content":" String duration \u003d command.substring(index1 + 6);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"cheeggered"},"content":" int index2 \u003d duration.indexOf(47);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"cheeggered"},"content":" String from \u003d duration.substring(0, index2 - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"cheeggered"},"content":" String to \u003d duration.substring(index2 + 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"cheeggered"},"content":" LocalDate d1 \u003d LocalDate.parse(from);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"cheeggered"},"content":" LocalDate d2 \u003d LocalDate.parse(to);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"cheeggered"},"content":" Task instance \u003d new Event(description, d1, d2);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"cheeggered"},"content":" return new AddCommand(instance);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"cheeggered"},"content":" } else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"cheeggered"},"content":" int index \u003d command.length() - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"cheeggered"},"content":" char c \u003d command.charAt(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"cheeggered"},"content":" int number \u003d c - 48 - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"cheeggered"},"content":" return new DeleteCommand(number);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"cheeggered"},"content":" } else if (command.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"cheeggered"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"cheeggered"},"content":" return new InvalidCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":69}},{"path":"src/main/java/duke/util/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.util;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" private File file;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":" if (!file.getParentFile().exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cheeggered"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cheeggered"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cheeggered"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cheeggered"},"content":" public void write(String task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cheeggered"},"content":" FileWriter fw;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cheeggered"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cheeggered"},"content":" fw \u003d new FileWriter(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cheeggered"},"content":" fw.write(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cheeggered"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cheeggered"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"cheeggered"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"cheeggered"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"cheeggered"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"cheeggered"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"cheeggered"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"cheeggered"},"content":" String task \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"cheeggered"},"content":" Task instance \u003d Storage.readFile(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"cheeggered"},"content":" tasks.add(instance);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"cheeggered"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"error file not found\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"cheeggered"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"cheeggered"},"content":" public static Task readFile(String nextLine) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"cheeggered"},"content":" String next \u003d nextLine.substring(3);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"cheeggered"},"content":" Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"cheeggered"},"content":" if(nextLine.startsWith(\"[T]\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"cheeggered"},"content":" String desc \u003d next.substring(4);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"cheeggered"},"content":" task \u003d new Todo(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"cheeggered"},"content":" } else if (nextLine.startsWith(\"[D]\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"cheeggered"},"content":" int endDesc \u003d next.indexOf(\"(by: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"cheeggered"},"content":" String desc \u003d next.substring(4, endDesc);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"cheeggered"},"content":" int len \u003d next.length();","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"cheeggered"},"content":" String time \u003d next.substring(endDesc + 5, len - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"cheeggered"},"content":" LocalDate d1 \u003d LocalDate.parse(time);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"cheeggered"},"content":" task \u003d new Deadline(desc, d1);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"cheeggered"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"cheeggered"},"content":" int endDesc \u003d next.indexOf(\"(from: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"cheeggered"},"content":" String desc \u003d next.substring(4, endDesc);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"cheeggered"},"content":" int endFrom \u003d next.indexOf(\"to: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"cheeggered"},"content":" String from \u003d next.substring(endDesc + 7, endFrom - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"cheeggered"},"content":" String to \u003d next.substring(endFrom + 4, next.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"cheeggered"},"content":" LocalDate d1 \u003d LocalDate.parse(from);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"cheeggered"},"content":" LocalDate d2 \u003d LocalDate.parse(to);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"cheeggered"},"content":" task \u003d new Event(desc, d1, d2);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"cheeggered"},"content":" Task toReturn;","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"cheeggered"},"content":" if (next.startsWith(\"[X]\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"cheeggered"},"content":" toReturn \u003d task.description(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"cheeggered"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"cheeggered"},"content":" toReturn \u003d task.description(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"cheeggered"},"content":" return toReturn;","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":95}},{"path":"src/main/java/duke/util/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.util;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":" private ArrayList\u003cTask\u003e arr;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":" public TaskList(ArrayList\u003cTask\u003e arr) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" // arr is given from the duke.util.Storage.load()","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" this.arr \u003d arr;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" public void add(Task instance) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" this.arr.add(instance);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":" public Task delete(int num) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":" if (num \u003e\u003d this.arr.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":" Task task \u003d this.arr.get(num);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":" this.arr.remove(num);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cheeggered"},"content":" public Task mark(int num) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cheeggered"},"content":" return arr.get(num).description(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cheeggered"},"content":" public Task unmark(int num){","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cheeggered"},"content":" return arr.get(num).description(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cheeggered"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cheeggered"},"content":" return this.arr.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cheeggered"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cheeggered"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cheeggered"},"content":" String toBePrinted \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"cheeggered"},"content":" for (int i \u003d 0; i \u003c arr.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"cheeggered"},"content":" toBePrinted \u003d toBePrinted.concat(arr.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"cheeggered"},"content":" toBePrinted +\u003d System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"cheeggered"},"content":" return toBePrinted;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"cheeggered"},"content":" public String toWrite() {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"cheeggered"},"content":" String toBeWritten \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"cheeggered"},"content":" for (int i \u003d 0; i \u003c arr.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"cheeggered"},"content":" toBeWritten \u003d toBeWritten.concat(arr.get(i).toWrite());","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"cheeggered"},"content":" toBeWritten +\u003d System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"cheeggered"},"content":" return toBeWritten;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":59}},{"path":"src/main/java/duke/util/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.util;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import duke.CheeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":" private Scanner input;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" public Ui(){","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" input \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" public void showError(String error) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" System.out.println(error);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cheeggered"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cheeggered"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cheeggered"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cheeggered"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cheeggered"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cheeggered"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cheeggered"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Hello! I\u0027m duke.CheeChat\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cheeggered"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cheeggered"},"content":" return input.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cheeggered"},"content":" public void printAddedTask(Task task, int size) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cheeggered"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"cheeggered"},"content":" public void printDeletedTask(Task task, int size) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"cheeggered"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"cheeggered"},"content":" public void printExitMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"cheeggered"},"content":" public void printMarkMessage(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"cheeggered"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"cheeggered"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"cheeggered"},"content":" public void printInvalidMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"cheeggered"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"cheeggered"},"content":" throw new CheeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"cheeggered"},"content":" } catch (CheeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"cheeggered"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"cheeggered"},"content":" public void printList(String list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"cheeggered"},"content":" System.out.println(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":69}},{"path":"src/test/java/duke/util/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.util;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" public void load_emptyFile_emptyArrayListReturned() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" Storage storage \u003d new Storage(\"./data/empty.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" ArrayList\u003cTask\u003e tasks \u003d storage.load();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" int size \u003d tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" assertEquals(0, size);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":17}},{"path":"src/test/java/duke/util/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"package duke.util;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cheeggered"},"content":"public class TaskListTest{","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cheeggered"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cheeggered"},"content":" public void delete_indexOutOfBound_nullReturned() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cheeggered"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cheeggered"},"content":" TaskList tasklist \u003d new TaskList(arr);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cheeggered"},"content":" Task deleted \u003d tasklist.delete(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cheeggered"},"content":" assertNull(deleted);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cheeggered"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cheeggered"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cheeggered"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cheeggered":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cheeggered"},"content":"todo read","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"cheeggered"},"content":"event meeting /from 1pm /to 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"cheeggered"},"content":"deadline ip /by 2359","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"cheeggered"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"cheeggered"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"cheeggered"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"cheeggered":6}}] diff --git a/cheeggered_ip_master/commits.json b/cheeggered_ip_master/commits.json index a9f00c18..5dc9434f 100644 --- a/cheeggered_ip_master/commits.json +++ b/cheeggered_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"cheeggered":[{"date":"2023-08-24","commitResults":[{"hash":"d13a479720da860469a5910d9b7804dda3b784d3","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"bb0761fc09af7e1bbb780ab77d077297a8e8c913","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"c7194789107829aaced84fd3111123e62291f8d4","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"c33412f00337f679cf8c51969ae9dfbd1a755a9c","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":6}}},{"hash":"65258f0f73401a1a95c2931f38bf9bbb895faac3","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}},{"hash":"74ce41debc8a1933723936cc517b492c22e84bf3","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":3}}},{"hash":"aaa4b759de1afd856b8dcec2378aeb8ec4a25669","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":8}}},{"hash":"19dec21a8c06a8f3fb8c34ceff83074e954afd02","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"44ea53f2bd65faff08d9166a7672c97600cc47e1","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"c5181935dc49ca0c9b091c175c2b84ace68e9882","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"d6fb3174e84110d24a8c1b616cae6cf9d7436694","isMergeCommit":false,"messageTitle":"Level 7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":99,"deletions":0}}},{"hash":"9c2ee9eed7ee92968d47df77fd4e3ea96aadb211","isMergeCommit":false,"messageTitle":"Revert \"Level 7\"","messageBody":"This reverts commit d6fb3174e84110d24a8c1b616cae6cf9d7436694.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":0,"deletions":99}}},{"hash":"f18d2f850460a0911805eef012f05f9ceaca7965","isMergeCommit":false,"messageTitle":"Implement: save memory to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":0}}},{"hash":"95323d2950fc7396626ca86f3767b1bb4e98163e","isMergeCommit":false,"messageTitle":"Amendments to implementation of save List locally","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":3,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"0fb21a289a55aeee18ae435daa37d89d5bcfe680","isMergeCommit":false,"messageTitle":"Implement load function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"81243693b3dfd56d4dccf5f3f66bac40351526f0","isMergeCommit":false,"messageTitle":"Add readFile method to load past data","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"b6b3d61048c4afec5997075a75369001256dc417","isMergeCommit":false,"messageTitle":"Update data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"cheeggered":{"java":319,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"cheeggered":8538.373},"authorDisplayNameMap":{"cheeggered":"CS2103T-T08-1 MAH ..TENG"}} +{"authorDailyContributionsMap":{"cheeggered":[{"date":"2023-08-24","commitResults":[{"hash":"d13a479720da860469a5910d9b7804dda3b784d3","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"bb0761fc09af7e1bbb780ab77d077297a8e8c913","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"c7194789107829aaced84fd3111123e62291f8d4","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"c33412f00337f679cf8c51969ae9dfbd1a755a9c","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":6}}},{"hash":"65258f0f73401a1a95c2931f38bf9bbb895faac3","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}},{"hash":"74ce41debc8a1933723936cc517b492c22e84bf3","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":3}}},{"hash":"aaa4b759de1afd856b8dcec2378aeb8ec4a25669","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":8}}},{"hash":"19dec21a8c06a8f3fb8c34ceff83074e954afd02","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"44ea53f2bd65faff08d9166a7672c97600cc47e1","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"c5181935dc49ca0c9b091c175c2b84ace68e9882","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"d6fb3174e84110d24a8c1b616cae6cf9d7436694","isMergeCommit":false,"messageTitle":"Level 7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":99,"deletions":0}}},{"hash":"9c2ee9eed7ee92968d47df77fd4e3ea96aadb211","isMergeCommit":false,"messageTitle":"Revert \"Level 7\"","messageBody":"This reverts commit d6fb3174e84110d24a8c1b616cae6cf9d7436694.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":0,"deletions":99}}},{"hash":"f18d2f850460a0911805eef012f05f9ceaca7965","isMergeCommit":false,"messageTitle":"Implement: save memory to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":0}}},{"hash":"95323d2950fc7396626ca86f3767b1bb4e98163e","isMergeCommit":false,"messageTitle":"Amendments to implementation of save List locally","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":3,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"0fb21a289a55aeee18ae435daa37d89d5bcfe680","isMergeCommit":false,"messageTitle":"Implement load function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"81243693b3dfd56d4dccf5f3f66bac40351526f0","isMergeCommit":false,"messageTitle":"Add readFile method to load past data","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"b6b3d61048c4afec5997075a75369001256dc417","isMergeCommit":false,"messageTitle":"Update data file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}},{"hash":"8517fa9f8bc82a1bfd79410f55fa062c51308d5d","isMergeCommit":false,"messageTitle":"Update data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2}}},{"hash":"a05e9314715236b326281189a15db306a7b5c6b7","isMergeCommit":false,"messageTitle":"Implement LocalDate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":14}}},{"hash":"cbf9902c0908558aa5c714bd7117d77e00dffdd8","isMergeCommit":false,"messageTitle":"Update Deadline class to store and deal with LocalDate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":3}}},{"hash":"282f81e35481af7dad7021dcf16e65646348aa33","isMergeCommit":false,"messageTitle":"Update Event class to store and deal with LocalDate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":4}}},{"hash":"0991d67d9756735ee1f053706270bfcff7230e02","isMergeCommit":false,"messageTitle":"Update Task class to store and deal with LocalDate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"a3b9b041a7a8a487f2451b64a55e69b26a011fc6","isMergeCommit":false,"messageTitle":"Update Todo class to store and deal with LocalDate","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"25760e7a1c31be3e9ef85b784e24773aea21d8a3","isMergeCommit":false,"messageTitle":"Add AddCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"3561cdedad6c1b38a90505c6b819f09392926aac","isMergeCommit":false,"messageTitle":"Add Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"0d59c7ec2077d4d34bd11516b41bedd067ae847f","isMergeCommit":false,"messageTitle":"Add DeleteCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"2f374f0c372e6656803086178159682089644ce2","isMergeCommit":false,"messageTitle":"Add ExitCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"6054d2f06464bbba0ca9aca1ab3976903507efc3","isMergeCommit":false,"messageTitle":"Add InvalidCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"a5f68d732d3ca88391f5fa52bd3f9152866870aa","isMergeCommit":false,"messageTitle":"Add ListCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"d63a30a83ec9b36bb925b0d72fcc53ee23bafe39","isMergeCommit":false,"messageTitle":"Add MarkCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"2ccd23196ed233d35ec5a9e1cba53802ffaebbe4","isMergeCommit":false,"messageTitle":"Add UnmarkCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"d2fa711ddebaedd0c2cecdc39814f958d9eb316d","isMergeCommit":false,"messageTitle":"Add Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":0}}},{"hash":"1b2359e55d2c58abbd6be624b7ab2554d25ed05b","isMergeCommit":false,"messageTitle":"Add Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":0}}},{"hash":"6338cc9c953f03d09b18916a7c610944a508984f","isMergeCommit":false,"messageTitle":"Add Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":0}}},{"hash":"312232bc54b9cdfb6da3197e2f44af33dc0fca50","isMergeCommit":false,"messageTitle":"Add TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":0}}},{"hash":"32bb531ab4967fe3f7dabe9bda1d1e102a0ddd37","isMergeCommit":false,"messageTitle":"Update Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":51}}},{"hash":"5fc687e8b2a418da048cecd3eec5842c83821f71","isMergeCommit":false,"messageTitle":"Update CheeChat class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":204}}},{"hash":"b05523d3c15175d39cbbf483a377ce560a95e9a7","isMergeCommit":false,"messageTitle":"Update data file","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":4}}},{"hash":"7f3974dbf5d862173f622ebab5512d8b5573e2f1","isMergeCommit":false,"messageTitle":"Add packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":3}}},{"hash":"eaf489e361bd86e24bef7f3f83b7f12670bb497a","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"* add-gradle-support:\n Bump gradle and lib version\n Add Gradle support\n","fileTypesAndContributionMap":{}},{"hash":"61bff61742246ab23fe9be7f0710176a72d55e22","isMergeCommit":false,"messageTitle":"Update main class","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"e2a1ce791cde9bb278f97317807886c516ecbde4","isMergeCommit":false,"messageTitle":"Update data file","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3}}},{"hash":"0d22669e109d8f5f8b5a2415e583ce9251a567ac","isMergeCommit":false,"messageTitle":"Update TaskList class to handle IndexOutOfBound for delete method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"81da03d8465bdc887cfff0b210bb7a8f96ca6883","isMergeCommit":false,"messageTitle":"Add empty data file for testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"189a8cc3a43a48b74b21d9bdffecb00d03c77f95","isMergeCommit":false,"messageTitle":"Add StorageTest class to test load() with empty file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"f6191eff5412bcb71530322f04f3726030046c57","isMergeCommit":false,"messageTitle":"Add TaskListTest class to test delete() with indexOutOfBound","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"97a163cf112bb8377022c58bce4d19bb0258463d","isMergeCommit":false,"messageTitle":"Fix Storage class constructor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":15}}},{"hash":"5bdd1a69a6627314d33b4f64b77e8d6ff3b240b6","isMergeCommit":false,"messageTitle":"Update shadowJar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"cheeggered":{"java":656,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":11}},"authorContributionVariance":{"cheeggered":66396.06},"authorDisplayNameMap":{"cheeggered":"CS2103T-T08-1 MAH ..TENG"}} diff --git a/cmHuang777_ip_master/authorship.json b/cmHuang777_ip_master/authorship.json index 06e5015a..efade2eb 100644 --- a/cmHuang777_ip_master/authorship.json +++ b/cmHuang777_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":" private static String TYPE \u003d \"[D]\";","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":" protected LocalDate deadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":" public Deadline(String task, String deadline) throws DateTimeParseException {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":" super(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" this.deadline \u003d LocalDate.parse(deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":" public boolean isOnDate(LocalDate date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" return date.isEqual(this.deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":" return this.TYPE + super.toString() + \" (by: \" + this.deadline.format(","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":25}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":"import java.util.Map;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" private static final String CHAT_BOT_NAME \u003d \"Genos\";","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" private static final HashMap\u003cString, Command\u003e commandMap \u003d new HashMap\u003c\u003e(","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":" Map.of(\"todo\", Command.TODO, \"event\", Command.EVENT, \"mark\", Command.MARK,","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":" \"unmark\", Command.UNMARK, \"list\", Command.LIST, \"bye\", Command.EXIT,","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":" \"deadline\", Command.DEADLINE, \"delete\", Command.DELETE)","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" );","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":" private enum Command {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" MARK, UNMARK, LIST, EXIT, TODO, DEADLINE, EVENT, INVALID, DELETE","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" public Duke() {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":" private static void greet() {","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\"Hello I\u0027m \" + Duke.CHAT_BOT_NAME);","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\"Please type your command below, I will store what you said\");","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\"Usage: \\\"list\\\" to see the list of text stored, \\\"bye\\\" to exit\");","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\"\\\"mark [number]\\\" to mark task no. [number] to be done, \"","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"cmHuang777"},"content":" + \"\\\"unmark [number]\\\" to mark it as undone\");","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\"\\\"todo [description]\\\" to add todo, \\\"event [description] /from \"","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"cmHuang777"},"content":" + \"[date] /to [date]\\\"\"","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"cmHuang777"},"content":" + \" to add event, \\\"deadline [description] /by [date]\\\" to add deadline\");","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"cmHuang777"},"content":" private void converse() {","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"cmHuang777"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"cmHuang777"},"content":" while (true) {","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"cmHuang777"},"content":" String text \u003d sc.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"cmHuang777"},"content":" if (text.isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\"Sorry, empty command is not supported\");","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"cmHuang777"},"content":" continue;","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"cmHuang777"},"content":" Command cmd \u003d textToCommand(text);","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"cmHuang777"},"content":" // non tasks command.","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"cmHuang777"},"content":" if (cmd \u003d\u003d Command.EXIT) {","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" Goodbye, Hope to see you again soon.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"cmHuang777"},"content":" return;","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"cmHuang777"},"content":" } else if (cmd \u003d\u003d Command.LIST) {","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"cmHuang777"},"content":" // if command also includes the date, list the tasks on that date","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"cmHuang777"},"content":" if (text.split(\" \").length \u003d\u003d 2) {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"cmHuang777"},"content":" this.findTasksOnDate(LocalDate.parse(text.split(\" \")[1]));","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"cmHuang777"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\"Wrong date format! Please use yyyy-mm-dd format\");","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"cmHuang777"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"cmHuang777"},"content":" this.listTasks();","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"cmHuang777"},"content":" continue;","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"cmHuang777"},"content":" } else if (cmd \u003d\u003d Command.INVALID) {","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" Command given is invalid! You must start with a \"","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"cmHuang777"},"content":" + \"todo/event/deadline to add tasks, \"","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"cmHuang777"},"content":" + \"or list/mark/unmark/bye for other purposes\");","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"cmHuang777"},"content":" continue; // retype commands","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"cmHuang777"},"content":" // adding tasks or marking tasks","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"cmHuang777"},"content":" if (text.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"cmHuang777"},"content":" throw new RuntimeException(\" Description cannot be empty!\");","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"cmHuang777"},"content":" Task task;","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"cmHuang777"},"content":" switch (cmd) {","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"cmHuang777"},"content":" case MARK:","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"cmHuang777"},"content":" int num \u003d Integer.parseInt(text.split(\" \")[1]);","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"cmHuang777"},"content":" // index out of bounds error will be caught below","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"cmHuang777"},"content":" task \u003d this.tasks.get(num - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"cmHuang777"},"content":" task.doTask();","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"cmHuang777"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"cmHuang777"},"content":" case UNMARK:","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"cmHuang777"},"content":" int num2 \u003d Integer.parseInt(text.split(\" \")[1]);","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"cmHuang777"},"content":" // index out of bounds error will be caught below","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"cmHuang777"},"content":" task \u003d this.tasks.get(num2 - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"cmHuang777"},"content":" task.undoTask();","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":93,"author":{"gitId":"cmHuang777"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":94,"author":{"gitId":"cmHuang777"},"content":" case DELETE:","lastModifiedDate":"2023-08-22"},{"lineNumber":95,"author":{"gitId":"cmHuang777"},"content":" int num3 \u003d Integer.parseInt(text.split(\" \")[1]);","lastModifiedDate":"2023-08-22"},{"lineNumber":96,"author":{"gitId":"cmHuang777"},"content":" task \u003d this.tasks.remove(num3);","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"cmHuang777"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"cmHuang777"},"content":" case TODO:","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"cmHuang777"},"content":" String description \u003d text.substring(5);","lastModifiedDate":"2023-08-22"},{"lineNumber":101,"author":{"gitId":"cmHuang777"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"cmHuang777"},"content":" throw new RuntimeException(\"Description of todo cannot be empty\");","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"cmHuang777"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"cmHuang777"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" Added Todo to the list of tasks:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"cmHuang777"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"cmHuang777"},"content":" case EVENT:","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"cmHuang777"},"content":" String[] parts \u003d (text.substring(6)).split(\"/\");","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"cmHuang777"},"content":" if (parts.length !\u003d 3 || !parts[1].startsWith(\"from \") ||","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"cmHuang777"},"content":" !parts[2].startsWith(\"to \")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"cmHuang777"},"content":" throw new RuntimeException(\" Invalid format for adding an event! \"","lastModifiedDate":"2023-08-22"},{"lineNumber":113,"author":{"gitId":"cmHuang777"},"content":" + \"Please enter in this format:\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":114,"author":{"gitId":"cmHuang777"},"content":" + \"event [description] /from [date] /to [date]\");","lastModifiedDate":"2023-08-22"},{"lineNumber":115,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":116,"author":{"gitId":"cmHuang777"},"content":" String fromTime \u003d parts[1].split(\" \")[1]; // remove the \"from \"","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"cmHuang777"},"content":" String toTime \u003d parts[2].split(\" \")[1]; // remove the \"to \"","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"cmHuang777"},"content":" task \u003d new Event(parts[0], fromTime, toTime);","lastModifiedDate":"2023-08-22"},{"lineNumber":119,"author":{"gitId":"cmHuang777"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" Added Event to the list of tasks:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":121,"author":{"gitId":"cmHuang777"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":122,"author":{"gitId":"cmHuang777"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-22"},{"lineNumber":123,"author":{"gitId":"cmHuang777"},"content":" String[] parts2 \u003d (text.substring(9)).split(\"/\");","lastModifiedDate":"2023-08-22"},{"lineNumber":124,"author":{"gitId":"cmHuang777"},"content":" if (parts2.length !\u003d 2 || !parts2[1].startsWith(\"by \")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":125,"author":{"gitId":"cmHuang777"},"content":" throw new RuntimeException(\" Invalid format for adding a deadline! \"","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"cmHuang777"},"content":" + \"Please enter in this format:\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":127,"author":{"gitId":"cmHuang777"},"content":" + \"deadline [description] /by [date]\");","lastModifiedDate":"2023-08-22"},{"lineNumber":128,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":129,"author":{"gitId":"cmHuang777"},"content":" String by \u003d parts2[1].substring(3); // remove the \"by \"","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"cmHuang777"},"content":" task \u003d new Deadline(parts2[0], by);","lastModifiedDate":"2023-08-22"},{"lineNumber":131,"author":{"gitId":"cmHuang777"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":132,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" Added Deadline to the list of tasks:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"cmHuang777"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":135,"author":{"gitId":"cmHuang777"},"content":" default:","lastModifiedDate":"2023-08-22"},{"lineNumber":136,"author":{"gitId":"cmHuang777"},"content":" throw new RuntimeException(\" There seems to be some error here\");","lastModifiedDate":"2023-08-22"},{"lineNumber":137,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":138,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":139,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" You currently have \" + this.tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":140,"author":{"gitId":"cmHuang777"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":141,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" Invalid task number. Please enter a valid number to mark/unmark\");","lastModifiedDate":"2023-08-22"},{"lineNumber":142,"author":{"gitId":"cmHuang777"},"content":" } catch (IndexOutOfBoundsException e) { // for when task number is out of bounds","lastModifiedDate":"2023-08-22"},{"lineNumber":143,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" The task number you are trying to mark/unmark/delete \"","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"cmHuang777"},"content":" + \"does not exist yet.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":145,"author":{"gitId":"cmHuang777"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":146,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\"Wrong date format! Please use yyyy-mm-dd format\");","lastModifiedDate":"2023-08-29"},{"lineNumber":147,"author":{"gitId":"cmHuang777"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":148,"author":{"gitId":"cmHuang777"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-22"},{"lineNumber":149,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":150,"author":{"gitId":"cmHuang777"},"content":" // if it reaches here, there must be a change in tasks","lastModifiedDate":"2023-08-28"},{"lineNumber":151,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":152,"author":{"gitId":"cmHuang777"},"content":" this.saveToDisk();","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"cmHuang777"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":154,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\"Something went wrong while trying to save the tasks to the disk!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":155,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":157,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":158,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":159,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":160,"author":{"gitId":"cmHuang777"},"content":" private void listTasks() {","lastModifiedDate":"2023-08-22"},{"lineNumber":161,"author":{"gitId":"cmHuang777"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-22"},{"lineNumber":162,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" \" + (i + 1) + \". \" + this.tasks.get(i));","lastModifiedDate":"2023-08-22"},{"lineNumber":163,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":164,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":165,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":166,"author":{"gitId":"cmHuang777"},"content":" private Command textToCommand(String text) {","lastModifiedDate":"2023-08-22"},{"lineNumber":167,"author":{"gitId":"cmHuang777"},"content":" String cmd \u003d text.split(\" \")[0];","lastModifiedDate":"2023-08-22"},{"lineNumber":168,"author":{"gitId":"cmHuang777"},"content":" return Duke.commandMap.getOrDefault(cmd, Command.INVALID);","lastModifiedDate":"2023-08-22"},{"lineNumber":169,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":170,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":171,"author":{"gitId":"cmHuang777"},"content":" private void saveToDisk() throws IOException {","lastModifiedDate":"2023-08-28"},{"lineNumber":172,"author":{"gitId":"cmHuang777"},"content":" // create a new directory if it does not exist yet","lastModifiedDate":"2023-08-28"},{"lineNumber":173,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":174,"author":{"gitId":"cmHuang777"},"content":" new File(\"./data\").mkdir();","lastModifiedDate":"2023-08-28"},{"lineNumber":175,"author":{"gitId":"cmHuang777"},"content":" } catch (SecurityException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":176,"author":{"gitId":"cmHuang777"},"content":" // error in creating the directory","lastModifiedDate":"2023-08-28"},{"lineNumber":177,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\"There was an error creating the diretory when trying to save tasks\");","lastModifiedDate":"2023-08-28"},{"lineNumber":178,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":179,"author":{"gitId":"cmHuang777"},"content":" StringBuilder content \u003d new StringBuilder();","lastModifiedDate":"2023-08-28"},{"lineNumber":180,"author":{"gitId":"cmHuang777"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":181,"author":{"gitId":"cmHuang777"},"content":" content.append(task.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":182,"author":{"gitId":"cmHuang777"},"content":" content.append(System.lineSeparator());","lastModifiedDate":"2023-08-28"},{"lineNumber":183,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":184,"author":{"gitId":"cmHuang777"},"content":" FileWriter fw \u003d new FileWriter(\"data/tasks.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":185,"author":{"gitId":"cmHuang777"},"content":" fw.write(content.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":186,"author":{"gitId":"cmHuang777"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":187,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":188,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":189,"author":{"gitId":"cmHuang777"},"content":" // takes in date input and prints the list of tasks on that date","lastModifiedDate":"2023-08-29"},{"lineNumber":190,"author":{"gitId":"cmHuang777"},"content":" // No todos will be printed, since there is no dates","lastModifiedDate":"2023-08-29"},{"lineNumber":191,"author":{"gitId":"cmHuang777"},"content":" // Events will be printed only if the input date is within the date range of Event","lastModifiedDate":"2023-08-29"},{"lineNumber":192,"author":{"gitId":"cmHuang777"},"content":" // Deadline will be printed if the deadline is the same as date input","lastModifiedDate":"2023-08-29"},{"lineNumber":193,"author":{"gitId":"cmHuang777"},"content":" private void findTasksOnDate(LocalDate date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":194,"author":{"gitId":"cmHuang777"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-29"},{"lineNumber":195,"author":{"gitId":"cmHuang777"},"content":" if (this.tasks.get(i).isOnDate(date)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":196,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\" \" + (i + 1) + \". \" + this.tasks.get(i));","lastModifiedDate":"2023-08-29"},{"lineNumber":197,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":198,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":199,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":200,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":202,"author":{"gitId":"cmHuang777"},"content":" Duke bot \u003d new Duke();","lastModifiedDate":"2023-08-21"},{"lineNumber":203,"author":{"gitId":"cmHuang777"},"content":" Duke.greet();","lastModifiedDate":"2023-08-22"},{"lineNumber":204,"author":{"gitId":"cmHuang777"},"content":" bot.converse();","lastModifiedDate":"2023-08-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"cmHuang777":202,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":" private static String TYPE \u003d \"[E]\";","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":" protected LocalDate fromTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":" protected LocalDate toTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":" public Event(String task, String fromTime, String toTime) throws DateTimeParseException {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" super(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" this.fromTime \u003d LocalDate.parse(fromTime);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":" this.toTime \u003d LocalDate.parse(toTime);","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" public boolean isOnDate(LocalDate date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":" return (date.isAfter(this.fromTime) || date.isEqual(this.fromTime))","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":" \u0026\u0026 (date.isBefore(this.toTime) || date.isEqual(this.toTime));","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":" return this.TYPE + super.toString() + \" (from: \"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":" + this.fromTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":" + \" to: \" + this.toTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":31}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":" protected final String task;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":" protected boolean done;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":" protected Task(String task) {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" public void doTask() {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" public void undoTask() {","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" public abstract boolean isOnDate(LocalDate date);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":" String mark \u003d done ? \"X\" : \" \";","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":" return String.format(\"[%s] %s\", mark, this.task);","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":29}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":" private static String TYPE \u003d \"[T]\";","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":" public Todo(String task) {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":" super(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" public boolean isOnDate(LocalDate date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" return false;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" return this.TYPE + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"todo borrow book","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"deadline return book /by 2023-09-01","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"event project meeting /from 2023-09-01 /to 2023-09-01","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":"mark 3","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":"unmark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":"abcd","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":"todo","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":"event abcd","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":"event abcd from","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":"event abcd /from","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":"event abcd /from /to","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":"event abcd /from asdf to","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":"event abcd /from asdf /to","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":"event abcd /from 2023-09-01 /to 2023-09-01","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":"deadline","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":"deadline abcd","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":"deadline abcd by","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":"deadline abcd /by","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":"deadline abcd /by 2023-09-01","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":"delete","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":"delete abc","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":"delete 123","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":"delete 4","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"cmHuang777"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"cmHuang777"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":32}},{"path":"text-ui-test/result.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"Comparing files ACTUAL.TXT and EXPECTED.TXT","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"FC: no differences encountered","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":3}},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":"cmHuang777"},"content":"FC ACTUAL.TXT EXPECTED.TXT \u003e result.txt","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":1,"-":20}}] +[{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":"public class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":" private static final HashMap\u003cString, Cmd\u003e COMMAND_MAP \u003d new HashMap\u003c\u003e(","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":" Map.of(\"todo\", Cmd.TODO, \"event\", Cmd.EVENT, \"mark\", Cmd.MARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":" \"unmark\", Cmd.UNMARK, \"list\", Cmd.LIST, \"bye\", Cmd.EXIT,","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" \"deadline\", Cmd.DEADLINE, \"delete\", Cmd.DELETE)","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":" private enum Cmd {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":" MARK, UNMARK, LIST, EXIT, TODO, DEADLINE, EVENT, INVALID, DELETE","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":" private String date1;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":" private String date2;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":" private Cmd action;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" public Command(ArrayList\u003cString\u003e parts) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":" this.action \u003d COMMAND_MAP.getOrDefault(parts.get(0), Cmd.INVALID);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":" if (parts.size() \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":" description \u003d parts.get(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":" if (parts.size() \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":" this.date1 \u003d parts.get(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cmHuang777"},"content":" if (parts.size() \u003e 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cmHuang777"},"content":" this.date2 \u003d parts.get(3);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cmHuang777"},"content":" // returns whether this command is to exit, if not continue to carry out the required command","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cmHuang777"},"content":" // and return false","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cmHuang777"},"content":" public boolean execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cmHuang777"},"content":" Task task \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cmHuang777"},"content":" switch (this.action) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"cmHuang777"},"content":" case INVALID:","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Command given is invalid! You must start with a \"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"cmHuang777"},"content":" + \"todo/event/deadline to add tasks, \"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"cmHuang777"},"content":" + \"or list/mark/unmark/bye for other purposes\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"cmHuang777"},"content":" case EXIT:","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"cmHuang777"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"cmHuang777"},"content":" case LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"cmHuang777"},"content":" if (this.description !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"cmHuang777"},"content":" // description field can only be used when we try to list tasks on certain date","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"cmHuang777"},"content":" String content \u003d tasks.findTasksOnDate(LocalDate.parse(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"cmHuang777"},"content":" ui.display(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"cmHuang777"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Wrong date format! Please use yyyy-mm-dd format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"cmHuang777"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"cmHuang777"},"content":" ui.display(tasks.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"cmHuang777"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"cmHuang777"},"content":" // tasks related commands below","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"cmHuang777"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"cmHuang777"},"content":" if (this.description \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"You must enter a number to indicate the task to \"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"cmHuang777"},"content":" + \"mark\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"cmHuang777"},"content":" task \u003d tasks.doTask(Integer.parseInt(this.description) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"cmHuang777"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Invalid task number. Please enter a valid number to \"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"cmHuang777"},"content":" + \"mark/unmark\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"cmHuang777"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"The task number you are trying to mark \"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"cmHuang777"},"content":" + \"does not exist yet.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"cmHuang777"},"content":" ui.display(\" I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"cmHuang777"},"content":" ui.display(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"cmHuang777"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"cmHuang777"},"content":" case UNMARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"cmHuang777"},"content":" if (this.description \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"You must enter a number to indicate the task to \"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"cmHuang777"},"content":" + \"unmark\");","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"cmHuang777"},"content":" task \u003d tasks.undoTask(Integer.parseInt(this.description) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"cmHuang777"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Invalid task number. Please enter a valid number to \"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"cmHuang777"},"content":" + \"mark/unmark\");","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"cmHuang777"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"The task number you are trying to unmark \"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"cmHuang777"},"content":" + \"does not exist yet.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"cmHuang777"},"content":" ui.display(\" I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"cmHuang777"},"content":" ui.display(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"cmHuang777"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"cmHuang777"},"content":" case DELETE:","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"cmHuang777"},"content":" if (this.description \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"You must enter a number to indicate the task to \"","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"cmHuang777"},"content":" + \"delete\");","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"cmHuang777"},"content":" task \u003d tasks.deleteTask(Integer.parseInt(this.description) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"cmHuang777"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Invalid task number. Please enter a valid number to \"","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"cmHuang777"},"content":" + \"mark/unmark\");","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"cmHuang777"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"The task number you are trying to delete \"","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"cmHuang777"},"content":" + \"does not exist yet.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"cmHuang777"},"content":" ui.display(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"cmHuang777"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"cmHuang777"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"cmHuang777"},"content":" if (this.description \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Description of todo cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"cmHuang777"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"cmHuang777"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"cmHuang777"},"content":" ui.display(\" Added Todo to the list of tasks:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"cmHuang777"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"cmHuang777"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"cmHuang777"},"content":" if (this.description \u003d\u003d null || this.date1 \u003d\u003d null || this.date2 \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Invalid format for adding an event! \"","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"cmHuang777"},"content":" + \"Please enter in this format:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"cmHuang777"},"content":" + \"event [description] /from [date] /to [date]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"cmHuang777"},"content":" task \u003d new Event(this.description, this.date1, this.date2);","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"cmHuang777"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Wrong date format! Please use yyyy-mm-dd format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"cmHuang777"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"cmHuang777"},"content":" ui.display(\" Added Event to the list of tasks:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"cmHuang777"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"cmHuang777"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"cmHuang777"},"content":" if (this.description \u003d\u003d null || this.date1 \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Invalid format for adding a deadline! \"","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"cmHuang777"},"content":" + \"Please enter in this format:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"cmHuang777"},"content":" + \"deadline [description] /by [date]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"cmHuang777"},"content":" task \u003d new Deadline(this.description, this.date1);","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"cmHuang777"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Wrong date format! Please use yyyy-mm-dd format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"cmHuang777"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"cmHuang777"},"content":" ui.display(\" Added Deadline to the list of tasks:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"cmHuang777"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"cmHuang777"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"There seems to be some error here\");","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"cmHuang777"},"content":" if (task \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"There might be an error somewhere. The task was not \"","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"cmHuang777"},"content":" + \"extracted properly.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"cmHuang777"},"content":" ui.display(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"cmHuang777"},"content":" ui.display(\" You currently have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"cmHuang777"},"content":" storage.save(tasks.saveToStorage());","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"cmHuang777"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"cmHuang777"},"content":" \"Something went wrong while trying to save the tasks to the disk!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"cmHuang777"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cmHuang777":167}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":" private static final String TYPE \u003d \"[D]\";","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":" protected LocalDate deadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":" public Deadline(String task, String deadline) throws DateTimeParseException {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":" super(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" this.deadline \u003d LocalDate.parse(deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":" public boolean isOnDate(LocalDate date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" return date.isEqual(this.deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":" return \"Deadline | \" + super.toSaveFormat() + \" | \" + this.deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":" return Deadline.TYPE + super.toString() + \" (by: \" + this.deadline.format(","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":30}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":" this.tasks \u003d new TaskList(this.storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" this.ui.greet();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" // ui reads in one line of input","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":" String text \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":" if (text.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Sorry, empty command is not supported\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":" Command c \u003d Parser.parse(text);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":" isExit \u003d c.execute(this.tasks, this.ui, this.storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cmHuang777"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"cmHuang777"},"content":" ui.goodBye();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"cmHuang777"},"content":" Duke bot \u003d new Duke(\"data/tasks.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cmHuang777"},"content":" bot.run();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"cmHuang777":37,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":" public DukeException(String msg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":" super(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cmHuang777":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":" private static final String TYPE \u003d \"[E]\";","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":" protected LocalDate fromTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":" protected LocalDate toTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":" public Event(String task, String fromTime, String toTime) throws DateTimeParseException {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" super(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" this.fromTime \u003d LocalDate.parse(fromTime);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":" this.toTime \u003d LocalDate.parse(toTime);","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" public boolean isOnDate(LocalDate date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":" return (date.isAfter(this.fromTime) || date.isEqual(this.fromTime))","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":" \u0026\u0026 (date.isBefore(this.toTime) || date.isEqual(this.toTime));","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":" return \"Event | \" + super.toSaveFormat() + \" | \" + this.fromTime + \" | \" + this.toTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":" return Event.TYPE + super.toString() + \" (from: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cmHuang777"},"content":" + this.fromTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"cmHuang777"},"content":" + \" to: \" + this.toTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":36}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"// deals with making sense of user command","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":" public Parser() {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":" // takes in a line of text, split into different parts and covert them to a task","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":" public static Command parse(String text) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":" ArrayList\u003cString\u003e result \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" String[] parts \u003d text.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" // add first action string","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":" result.add(parts[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":" // continue parsing if there are more valid words, such as description, dates","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":" if (parts.length \u003e\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" parts \u003d parts[1].split(\" /\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" // add description","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":" result.add(parts[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" if (parts.length \u003e\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":" // if able to reach here, the command must be for deadline or Event","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":" // attempt to split the string after description","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" // but only need to split the /from and /to in case of event","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":" parts \u003d parts[1].split(\" /to \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":" if (parts.length \u003d\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":" // it must be for Event","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":" // Event has /from for first string, need to remove it","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":" result.add(parts[0].substring(5));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":" result.add(parts[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cmHuang777"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cmHuang777"},"content":" // it must be for deadline which only has /by","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cmHuang777"},"content":" // need to remove the by","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cmHuang777"},"content":" parts \u003d parts[0].split(\"by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cmHuang777"},"content":" if (parts.length \u003e\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cmHuang777"},"content":" result.add(parts[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cmHuang777"},"content":" return new Command(result);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"cmHuang777"},"content":" public static Task parseTask(String[] parts) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"cmHuang777"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"cmHuang777"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"cmHuang777"},"content":" if (taskType.equals(\"Event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"cmHuang777"},"content":" return new Event(parts[2], parts[3], parts[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"cmHuang777"},"content":" } else if (taskType.equals(\"Todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"cmHuang777"},"content":" return new Todo(parts[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"cmHuang777"},"content":" } else if (taskType.equals(\"Deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"cmHuang777"},"content":" return new Deadline(parts[2], parts[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"cmHuang777"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Wrong storing format in storage\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"cmHuang777"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Wrong storing format in storage\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cmHuang777":62}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":"// deals with loading tasks from the file and saving tasks in the file","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":" private final File file;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" // finds the file at filePath, creates the file if is not already there","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":" boolean isNewDir \u003d this.file.getParentFile().mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" boolean isNewFile \u003d this.file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":" throw new DukeException(\"Error creating new file to store the task list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":" Scanner sc \u003d new Scanner(this.file);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":" String line \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":" tasks.add(Parser.parseTask(parts));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cmHuang777"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cmHuang777"},"content":" System.out.println(\"Error while loading tasks from storage\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cmHuang777"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cmHuang777"},"content":" public void save(String content) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cmHuang777"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cmHuang777"},"content":" fw.write(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"cmHuang777"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cmHuang777":44}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":" protected final String task;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":" protected boolean done;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":" protected Task(String task) {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" public void doTask() {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" public void undoTask() {","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" public abstract boolean isOnDate(LocalDate date);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":" // returns \"done | task description\", can be added with task type for subtypes","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":" return (this.done ? 1 : 0) + \" | \" + this.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":" String mark \u003d done ? \"X\" : \" \";","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"cmHuang777"},"content":" return String.format(\"[%s] %s\", mark, this.task);","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":34}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"// contains the tasks list, it has operations to add/delete tasks in the list","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" // add task in parameter into the arraylist of tasks in this instance","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" // delete the task at index taskNum of the arraylist of tasks in this instance","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" // return the deleted task if successfully deleted","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":" public Task deleteTask(int taskNum) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":" return this.tasks.remove(taskNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":" // mark task at index taskNum as done","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" // returns false if index out of bounds else true.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":" public Task doTask(int taskNum) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":" Task task \u003d this.tasks.get(taskNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":" task.doTask();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cmHuang777"},"content":" // mark task at index taskNum as not done","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cmHuang777"},"content":" // returns false if index out of bounds else true.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cmHuang777"},"content":" public Task undoTask(int taskNum) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cmHuang777"},"content":" Task task \u003d this.tasks.get(taskNum);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cmHuang777"},"content":" task.undoTask();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cmHuang777"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cmHuang777"},"content":" public int getSize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cmHuang777"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"cmHuang777"},"content":" public String saveToStorage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"cmHuang777"},"content":" StringBuilder content \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"cmHuang777"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"cmHuang777"},"content":" content.append(task.toSaveFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"cmHuang777"},"content":" content.append(System.lineSeparator());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"cmHuang777"},"content":" return content.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"cmHuang777"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"cmHuang777"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"cmHuang777"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"cmHuang777"},"content":" sb.append(\" \" + (i + 1) + \". \" + this.tasks.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"cmHuang777"},"content":" if (i !\u003d this.tasks.size() - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"cmHuang777"},"content":" sb.append(System.lineSeparator());","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"cmHuang777"},"content":" return sb.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"cmHuang777"},"content":" // takes in date input and output the list of tasks on that date (in the form of","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"cmHuang777"},"content":" // taskList\u0027s toString())","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"cmHuang777"},"content":" // No todos will be printed, since there is no dates","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"cmHuang777"},"content":" // Events will be printed only if the input date is within the date range of Event","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"cmHuang777"},"content":" // Deadline will be printed if the deadline is the same as date input","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"cmHuang777"},"content":" public String findTasksOnDate(LocalDate date) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"cmHuang777"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"cmHuang777"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"cmHuang777"},"content":" if (this.tasks.get(i).isOnDate(date)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"cmHuang777"},"content":" sb.append(\" \" + (i + 1) + \". \" + this.tasks.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"cmHuang777"},"content":" sb.append(System.lineSeparator());","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"cmHuang777"},"content":" return sb.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cmHuang777":80}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":" private static final String TYPE \u003d \"[T]\";","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":" public Todo(String task) {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":" super(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" public boolean isOnDate(LocalDate date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" return false;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" return \"Todo | \" + super.toSaveFormat();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":" return Todo.TYPE + super.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":25}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"// deals with interactions with the user","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":" private static final String CHAT_BOT_NAME \u003d \"Genos\";","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":" private final Scanner in;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":" private final PrintStream out;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":" this.in \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":" this.out \u003d System.out;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":" public void greet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":" String msg \u003d \"Hello I\u0027m \" + Ui.CHAT_BOT_NAME + \".\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":" + \"Please type your command below, I will store what you said\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":" + \"Usage: \\\"list\\\" to see the list of text stored, \\\"bye\\\" to exit\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":" + \"\\\"mark [number]\\\" to mark task no. [number] to be done, \"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":" + \"\\\"unmark [number]\\\" to mark it as undone\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":" + \"\\\"todo [description]\\\" to add todo, \\\"event [description] /from [date] /to [date]\\\" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":" + \"to add event,\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":" + \"\\\"deadline [description] /by [date]\\\" to add deadline\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":" out.println(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":" public void goodBye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":" out.println(\" Goodbye, Hope to see you again soon.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cmHuang777"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cmHuang777"},"content":" out.println(\"--------------------------------------------\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cmHuang777"},"content":" public void showError(String msg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cmHuang777"},"content":" out.println(\"There was an error: \" + msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cmHuang777"},"content":" // takes the line of user input until the next line character is given.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cmHuang777"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cmHuang777"},"content":" return in.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"cmHuang777"},"content":" public void display(String msg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"cmHuang777"},"content":" out.println(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"cmHuang777"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"cmHuang777"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cmHuang777":49}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"todo borrow book","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"cmHuang777"},"content":"deadline return book /by 2023-09-01","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"cmHuang777"},"content":"event project meeting /from 2023-09-01 /to 2023-09-01","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"cmHuang777"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"cmHuang777"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"cmHuang777"},"content":"mark 3","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"cmHuang777"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"cmHuang777"},"content":"unmark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"cmHuang777"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"cmHuang777"},"content":"abcd","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"cmHuang777"},"content":"todo","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"cmHuang777"},"content":"event abcd","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"cmHuang777"},"content":"event abcd from","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"cmHuang777"},"content":"event abcd /from","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"cmHuang777"},"content":"event abcd /from /to","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"cmHuang777"},"content":"event abcd /from asdf to","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"cmHuang777"},"content":"event abcd /from asdf /to","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"cmHuang777"},"content":"event abcd /from 2023-09-01 /to 2023-09-01","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"cmHuang777"},"content":"deadline","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"cmHuang777"},"content":"deadline abcd","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"cmHuang777"},"content":"deadline abcd by","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"cmHuang777"},"content":"deadline abcd /by","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"cmHuang777"},"content":"deadline abcd /by 2023-09-01","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"cmHuang777"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"cmHuang777"},"content":"delete","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"cmHuang777"},"content":"delete abc","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"cmHuang777"},"content":"delete 123","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"cmHuang777"},"content":"delete 4","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"cmHuang777"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"cmHuang777"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":32}},{"path":"text-ui-test/result.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cmHuang777"},"content":"Comparing files ACTUAL.TXT and EXPECTED.TXT","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"cmHuang777"},"content":"FC: no differences encountered","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"cmHuang777"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":3}},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":"cmHuang777"},"content":"FC ACTUAL.TXT EXPECTED.TXT \u003e result.txt","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cmHuang777":1,"-":20}}] diff --git a/cmHuang777_ip_master/commits.json b/cmHuang777_ip_master/commits.json index 9c1f1a09..8cfaf639 100644 --- a/cmHuang777_ip_master/commits.json +++ b/cmHuang777_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"cmHuang777":[{"date":"2023-08-21","commitResults":[{"hash":"582ec3d1972dc3bba914375b0e05e0726eaf5bd3","isMergeCommit":false,"messageTitle":"Modified greetings and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"2f49964fd4985bdb225398d79b2fe88455ecf595","isMergeCommit":false,"messageTitle":"added function to echo command","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":2}}},{"hash":"ee3829cce0135e0b5430aaadcffb3910386c1b53","isMergeCommit":false,"messageTitle":"Added function to store text and list them","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":5}}}]},{"date":"2023-08-22","commitResults":[{"hash":"05c519a9d64b927c4f5ede8f0671916005b50291","isMergeCommit":false,"messageTitle":"Added functions mark tasks as done or undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":13}}},{"hash":"edf6531d2328e238cd296ceaf8a3829fe6a361b9","isMergeCommit":false,"messageTitle":"added toDos,, Events, Deadlines to the type of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":30}}},{"hash":"a92d6a7daab2598c7feef496411bbe9695a6246b","isMergeCommit":false,"messageTitle":"Added Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":1,"deletions":1},"bat":{"insertions":1,"deletions":1}}},{"hash":"d2dbc0433262d8ae693a4c00f8c8a8dba246b1e1","isMergeCommit":false,"messageTitle":"Added Error Handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"java":{"insertions":86,"deletions":70}}},{"hash":"024ac047609e23262bd10b8d66753123a2480f0c","isMergeCommit":false,"messageTitle":"Added function to delete tasks","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":12,"deletions":7}}}]},{"date":"2023-08-28","commitResults":[{"hash":"afef33d056ef221ca69086736ce975959cdfcbc6","isMergeCommit":false,"messageTitle":"Add function to save tasks to disk","messageBody":"Tasks list will be stored in a file locally. Any modification to the list of tasks will also update the file.\n","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":7}}},{"hash":"54ae8e72769551dd17b5f519f5a1ab4fe1f64040","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"59d423aa63092774f9c3ff17d262c7b42a4a88c2","isMergeCommit":false,"messageTitle":"Change the date format to java LocalDate","messageBody":"Previously the date format is in String, users can just type anything.\nThere was no input checking/ or was difficult. Changing the date format\nmakes the date more standardised.\n\nThe input String for event /from, /to and deadline /by,\nnow only take in the format of \"yyyy-mm-dd\".\nOther format will be considered as invalid input.\nThe valid string will be parsed as java LocalDateObject.\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":76,"deletions":18}}},{"hash":"a99ea096edf483de8f0c23e0801e08a71774b874","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"cmHuang777":{"java":307,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":35}},"authorContributionVariance":{"cmHuang777":15600.5},"authorDisplayNameMap":{"cmHuang777":"CS2103T-T09-3 HUAN..MING"}} +{"authorDailyContributionsMap":{"cmHuang777":[{"date":"2023-08-21","commitResults":[{"hash":"582ec3d1972dc3bba914375b0e05e0726eaf5bd3","isMergeCommit":false,"messageTitle":"Modified greetings and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"2f49964fd4985bdb225398d79b2fe88455ecf595","isMergeCommit":false,"messageTitle":"added function to echo command","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":2}}},{"hash":"ee3829cce0135e0b5430aaadcffb3910386c1b53","isMergeCommit":false,"messageTitle":"Added function to store text and list them","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":5}}}]},{"date":"2023-08-22","commitResults":[{"hash":"05c519a9d64b927c4f5ede8f0671916005b50291","isMergeCommit":false,"messageTitle":"Added functions mark tasks as done or undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":13}}},{"hash":"edf6531d2328e238cd296ceaf8a3829fe6a361b9","isMergeCommit":false,"messageTitle":"added toDos,, Events, Deadlines to the type of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":30}}},{"hash":"a92d6a7daab2598c7feef496411bbe9695a6246b","isMergeCommit":false,"messageTitle":"Added Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":1,"deletions":1},"bat":{"insertions":1,"deletions":1}}},{"hash":"d2dbc0433262d8ae693a4c00f8c8a8dba246b1e1","isMergeCommit":false,"messageTitle":"Added Error Handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"java":{"insertions":86,"deletions":70}}},{"hash":"024ac047609e23262bd10b8d66753123a2480f0c","isMergeCommit":false,"messageTitle":"Added function to delete tasks","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":12,"deletions":7}}}]},{"date":"2023-08-28","commitResults":[{"hash":"afef33d056ef221ca69086736ce975959cdfcbc6","isMergeCommit":false,"messageTitle":"Add function to save tasks to disk","messageBody":"Tasks list will be stored in a file locally. Any modification to the list of tasks will also update the file.\n","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":7}}},{"hash":"54ae8e72769551dd17b5f519f5a1ab4fe1f64040","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"59d423aa63092774f9c3ff17d262c7b42a4a88c2","isMergeCommit":false,"messageTitle":"Change the date format to java LocalDate","messageBody":"Previously the date format is in String, users can just type anything.\nThere was no input checking/ or was difficult. Changing the date format\nmakes the date more standardised.\n\nThe input String for event /from, /to and deadline /by,\nnow only take in the format of \"yyyy-mm-dd\".\nOther format will be considered as invalid input.\nThe valid string will be parsed as java LocalDateObject.\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":76,"deletions":18}}},{"hash":"a99ea096edf483de8f0c23e0801e08a71774b874","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"d4ae5aff38f055892653cf6102bf9f58cb70e4c2","isMergeCommit":false,"messageTitle":"Add more classes to support OOP","messageBody":"Previously all logic is done in the Duke class. More OOP style was needed.\n\nThis commit adds the following classes:\n- Command\n- DukeException\n- Parser\n- Storage\n- TaskList\n- Ui\n\nThe respective logic is moved to the respective classes, to support OOP.\nThe Duke class is now a class that handles the main logic of the program.\n\nHowever, Command could still be broken down into more classes, and there\nmay also be other classes that could be added to better support OOP.\n","fileTypesAndContributionMap":{"java":{"insertions":461,"deletions":199}}},{"hash":"3d334cc0115f5cc01674a47965888cdb01ba4d62","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"cmHuang777":{"java":569,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":35}},"authorContributionVariance":{"cmHuang777":36196.4},"authorDisplayNameMap":{"cmHuang777":"CS2103T-T09-3 HUAN..MING"}} diff --git a/conradsoon_ip_master/authorship.json b/conradsoon_ip_master/authorship.json index 22a7fba9..51ac694d 100644 --- a/conradsoon_ip_master/authorship.json +++ b/conradsoon_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/DeterministicParrot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":"import java.util.*;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":"class DeterministicParrotException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":" public DeterministicParrotException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":" super(message);","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":"@FunctionalInterface","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":"interface CheckedConsumer\u003cT\u003e {","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" void accept(T t) throws DeterministicParrotException;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":"public class DeterministicParrot {","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":" //static variable storing the path to data file","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":" private static final String DATA_FILE_PATH \u003d \"./data/data.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":" private class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":" private String name;","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"conradsoon"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"conradsoon"},"content":" Task(String description){","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"conradsoon"},"content":" this.name \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"conradsoon"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":" public String getName(){","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"conradsoon"},"content":" return this.name;","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":" public boolean getIsDone(){","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":" return this.isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"conradsoon"},"content":" public void markAsDone(){","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"conradsoon"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"conradsoon"},"content":" public void markAsUndone(){","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"conradsoon"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"conradsoon"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"conradsoon"},"content":" public String toString(){","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"conradsoon"},"content":" return \"[\" + (this.isDone ? \"X\" : \" \") + \"] \" + this.name;","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"conradsoon"},"content":" private class ToDo extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"conradsoon"},"content":" ToDo(String s){","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"conradsoon"},"content":" super(s);","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"conradsoon"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"conradsoon"},"content":" public String toString(){","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"conradsoon"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"conradsoon"},"content":" private class Deadline extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"conradsoon"},"content":" private LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"conradsoon"},"content":" Deadline(String s, String by) throws DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"conradsoon"},"content":" super(s);","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"conradsoon"},"content":" this.by \u003d dPTryParseDateTime(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"conradsoon"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"conradsoon"},"content":" throw new IllegalArgumentException(\"Invalid date format for \u0027by\u0027. Please provide a valid date format.\", e);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"conradsoon"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":68,"author":{"gitId":"conradsoon"},"content":" public String toString(){","lastModifiedDate":"2023-08-21"},{"lineNumber":69,"author":{"gitId":"conradsoon"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), dPFormatDateTime(this.by));","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":71,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":72,"author":{"gitId":"conradsoon"},"content":" private class Event extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":73,"author":{"gitId":"conradsoon"},"content":" private LocalDateTime timeStart;","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"conradsoon"},"content":" private LocalDateTime timeEnd;","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"conradsoon"},"content":" Event(String name, String timeStart, String timeEnd) throws DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"conradsoon"},"content":" super(name);","lastModifiedDate":"2023-08-21"},{"lineNumber":77,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"conradsoon"},"content":" this.timeStart \u003d dPTryParseDateTime(timeStart);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"conradsoon"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"conradsoon"},"content":" throw new IllegalArgumentException(\"Invalid date format for \u0027timeStart\u0027. Please provide a valid date.\", e);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"conradsoon"},"content":" this.timeEnd \u003d dPTryParseDateTime(timeEnd);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"conradsoon"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"conradsoon"},"content":" throw new IllegalArgumentException(\"Invalid date format for \u0027timeEnd\u0027. Please provide a valid date.\", e);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"conradsoon"},"content":" //add a catch for if timeStart is after timeEnd","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"conradsoon"},"content":" if(this.timeStart.isAfter(this.timeEnd)){","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"conradsoon"},"content":" throw new IllegalArgumentException(\"\u0027timeStart\u0027 cannot be after \u0027timeEnd\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":93,"author":{"gitId":"conradsoon"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":94,"author":{"gitId":"conradsoon"},"content":" public String toString(){","lastModifiedDate":"2023-08-21"},{"lineNumber":95,"author":{"gitId":"conradsoon"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), dPFormatDateTime(this.timeStart), dPFormatDateTime(this.timeEnd));","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":97,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":98,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":99,"author":{"gitId":"conradsoon"},"content":" //init by setting input and output","lastModifiedDate":"2023-08-21"},{"lineNumber":100,"author":{"gitId":"conradsoon"},"content":" private Scanner s;","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"conradsoon"},"content":" private PrintWriter pw;","lastModifiedDate":"2023-08-21"},{"lineNumber":102,"author":{"gitId":"conradsoon"},"content":" private List\u003cTask\u003e list;","lastModifiedDate":"2023-08-21"},{"lineNumber":103,"author":{"gitId":"conradsoon"},"content":" private Map\u003cString, CheckedConsumer\u003cString[]\u003e\u003e commandHandlers \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-08-21"},{"lineNumber":104,"author":{"gitId":"conradsoon"},"content":" DeterministicParrot(){","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"conradsoon"},"content":" this.list \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2023-08-21"},{"lineNumber":106,"author":{"gitId":"conradsoon"},"content":" try{","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"conradsoon"},"content":" loadData();","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"conradsoon"},"content":" catch (Exception e){","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"conradsoon"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"conradsoon"},"content":" s \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-21"},{"lineNumber":113,"author":{"gitId":"conradsoon"},"content":" pw \u003d new PrintWriter(System.out, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":114,"author":{"gitId":"conradsoon"},"content":" this.initCommandHandlers();","lastModifiedDate":"2023-08-21"},{"lineNumber":115,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":116,"author":{"gitId":"conradsoon"},"content":" DeterministicParrot(Scanner s, PrintWriter pw){","lastModifiedDate":"2023-08-21"},{"lineNumber":117,"author":{"gitId":"conradsoon"},"content":" this.list \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2023-08-21"},{"lineNumber":118,"author":{"gitId":"conradsoon"},"content":" this.s \u003d s;","lastModifiedDate":"2023-08-21"},{"lineNumber":119,"author":{"gitId":"conradsoon"},"content":" this.pw \u003d pw;","lastModifiedDate":"2023-08-21"},{"lineNumber":120,"author":{"gitId":"conradsoon"},"content":" this.initCommandHandlers();","lastModifiedDate":"2023-08-21"},{"lineNumber":121,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":122,"author":{"gitId":"conradsoon"},"content":" //takes a datetime and prints it in a certain format","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"conradsoon"},"content":" public String dPFormatDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"conradsoon"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"conradsoon"},"content":" public String saveFormatDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"conradsoon"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"conradsoon"},"content":" public LocalDateTime dPTryParseDateTime(String dateTime) throws DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"conradsoon"},"content":" //TODO: add different formats","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"conradsoon"},"content":" return LocalDateTime.parse(dateTime+ \"T00:00:00\");","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"conradsoon"},"content":" private void loadData() throws FileNotFoundException, DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"conradsoon"},"content":" File file \u003d new File(DATA_FILE_PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"conradsoon"},"content":" if (file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"conradsoon"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"conradsoon"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"conradsoon"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"conradsoon"},"content":" String[] data \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"conradsoon"},"content":" switch (data[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"conradsoon"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"conradsoon"},"content":" ToDo todo \u003d new ToDo(data[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"conradsoon"},"content":" if (data[1].equals(\"1\")) todo.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"conradsoon"},"content":" list.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"conradsoon"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"conradsoon"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"conradsoon"},"content":" Deadline deadline \u003d new Deadline(data[2], data[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"conradsoon"},"content":" if (data[1].equals(\"1\")) deadline.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"conradsoon"},"content":" list.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"conradsoon"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"conradsoon"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"conradsoon"},"content":" String[] time \u003d data[3].split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"conradsoon"},"content":" Event event \u003d new Event(data[2], time[0], time[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"conradsoon"},"content":" if (data[1].equals(\"1\")) event.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"conradsoon"},"content":" list.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"conradsoon"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"conradsoon"},"content":" //TODO: might be redundant? might suffcie to just check if file exists.","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"conradsoon"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\"File not found. Creating new file...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"conradsoon"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"conradsoon"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"conradsoon"},"content":" private void saveData() {","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"conradsoon"},"content":" try (PrintWriter fileWriter \u003d new PrintWriter(DATA_FILE_PATH)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"conradsoon"},"content":" for (Task task : list) {","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"conradsoon"},"content":" if (task instanceof ToDo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"conradsoon"},"content":" fileWriter.println(\"T | \" + (task.getIsDone() ? \"1\" : \"0\") + \" | \" + task.getName());","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"conradsoon"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"conradsoon"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"conradsoon"},"content":" fileWriter.println(\"D | \" + (task.getIsDone() ? \"1\" : \"0\") + \" | \" + task.getName() + \" | \" + saveFormatDateTime(deadline.by));","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"conradsoon"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"conradsoon"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"conradsoon"},"content":" fileWriter.println(\"E | \" + (task.getIsDone() ? \"1\" : \"0\") + \" | \" + task.getName() + \" | \" + saveFormatDateTime(event.timeStart)+ \" \" + saveFormatDateTime(event.timeEnd));","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"conradsoon"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"conradsoon"},"content":" // handle error","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"conradsoon"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"conradsoon"},"content":" private void initCommandHandlers() {","lastModifiedDate":"2023-08-21"},{"lineNumber":188,"author":{"gitId":"conradsoon"},"content":" commandHandlers.put(\"list\", args -\u003e printList());","lastModifiedDate":"2023-08-21"},{"lineNumber":189,"author":{"gitId":"conradsoon"},"content":" commandHandlers.put(\"bye\", args -\u003e bye());","lastModifiedDate":"2023-08-21"},{"lineNumber":190,"author":{"gitId":"conradsoon"},"content":" commandHandlers.put(\"mark\", args -\u003e {","lastModifiedDate":"2023-08-21"},{"lineNumber":191,"author":{"gitId":"conradsoon"},"content":" markAsDone(args);","lastModifiedDate":"2023-08-21"},{"lineNumber":192,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-08-21"},{"lineNumber":193,"author":{"gitId":"conradsoon"},"content":" commandHandlers.put(\"unmark\", args -\u003e {","lastModifiedDate":"2023-08-21"},{"lineNumber":194,"author":{"gitId":"conradsoon"},"content":" markAsUndone(args);","lastModifiedDate":"2023-08-21"},{"lineNumber":195,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-08-21"},{"lineNumber":196,"author":{"gitId":"conradsoon"},"content":" commandHandlers.put(\"todo\", args -\u003e {","lastModifiedDate":"2023-08-21"},{"lineNumber":197,"author":{"gitId":"conradsoon"},"content":" addToDo(args);","lastModifiedDate":"2023-08-21"},{"lineNumber":198,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-08-21"},{"lineNumber":199,"author":{"gitId":"conradsoon"},"content":" commandHandlers.put(\"deadline\", args -\u003e {","lastModifiedDate":"2023-08-21"},{"lineNumber":200,"author":{"gitId":"conradsoon"},"content":" addDeadline(args);","lastModifiedDate":"2023-08-21"},{"lineNumber":201,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-08-21"},{"lineNumber":202,"author":{"gitId":"conradsoon"},"content":" commandHandlers.put(\"event\", args -\u003e {","lastModifiedDate":"2023-08-21"},{"lineNumber":203,"author":{"gitId":"conradsoon"},"content":" addEvent(args);","lastModifiedDate":"2023-08-21"},{"lineNumber":204,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-08-21"},{"lineNumber":205,"author":{"gitId":"conradsoon"},"content":" commandHandlers.put(\"delete\", args -\u003e {","lastModifiedDate":"2023-08-21"},{"lineNumber":206,"author":{"gitId":"conradsoon"},"content":" deleteTask(args);","lastModifiedDate":"2023-08-21"},{"lineNumber":207,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-08-21"},{"lineNumber":208,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":209,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":210,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":211,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":212,"author":{"gitId":"conradsoon"},"content":" private void printDash() {","lastModifiedDate":"2023-08-21"},{"lineNumber":213,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-21"},{"lineNumber":214,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":215,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":216,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":217,"author":{"gitId":"conradsoon"},"content":" * Hello! I\u0027m [YOUR CHATBOT NAME]","lastModifiedDate":"2023-08-21"},{"lineNumber":218,"author":{"gitId":"conradsoon"},"content":" * What can I do for you?","lastModifiedDate":"2023-08-21"},{"lineNumber":219,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":220,"author":{"gitId":"conradsoon"},"content":" private void greet() {","lastModifiedDate":"2023-08-21"},{"lineNumber":221,"author":{"gitId":"conradsoon"},"content":" printDash();","lastModifiedDate":"2023-08-21"},{"lineNumber":222,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Hello! I\u0027m DeterministicParrot\");","lastModifiedDate":"2023-08-21"},{"lineNumber":223,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" +\"What can I do for you?\");","lastModifiedDate":"2023-08-21"},{"lineNumber":224,"author":{"gitId":"conradsoon"},"content":" printDash();","lastModifiedDate":"2023-08-21"},{"lineNumber":225,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":226,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":227,"author":{"gitId":"conradsoon"},"content":" private void echo(String s) {","lastModifiedDate":"2023-08-21"},{"lineNumber":228,"author":{"gitId":"conradsoon"},"content":" printDash();","lastModifiedDate":"2023-08-21"},{"lineNumber":229,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + s);","lastModifiedDate":"2023-08-21"},{"lineNumber":230,"author":{"gitId":"conradsoon"},"content":" printDash();","lastModifiedDate":"2023-08-21"},{"lineNumber":231,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":232,"author":{"gitId":"conradsoon"},"content":" private void bye() {","lastModifiedDate":"2023-08-21"},{"lineNumber":233,"author":{"gitId":"conradsoon"},"content":" printDash();","lastModifiedDate":"2023-08-21"},{"lineNumber":234,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-21"},{"lineNumber":235,"author":{"gitId":"conradsoon"},"content":" printDash();","lastModifiedDate":"2023-08-21"},{"lineNumber":236,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":237,"author":{"gitId":"conradsoon"},"content":" private void printList(){","lastModifiedDate":"2023-08-21"},{"lineNumber":238,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":239,"author":{"gitId":"conradsoon"},"content":" for(int i \u003d 0; i \u003c this.list.size(); i++){","lastModifiedDate":"2023-08-21"},{"lineNumber":240,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + (i+1) + \". \" + this.list.get(i));","lastModifiedDate":"2023-08-21"},{"lineNumber":241,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":242,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":243,"author":{"gitId":"conradsoon"},"content":" private void addToList(Task t){","lastModifiedDate":"2023-08-31"},{"lineNumber":244,"author":{"gitId":"conradsoon"},"content":" this.list.add(t);","lastModifiedDate":"2023-08-21"},{"lineNumber":245,"author":{"gitId":"conradsoon"},"content":" saveData();","lastModifiedDate":"2023-08-31"},{"lineNumber":246,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":247,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + t);","lastModifiedDate":"2023-08-31"},{"lineNumber":248,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Now you have \" + this.list.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":249,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":250,"author":{"gitId":"conradsoon"},"content":" private void markAsDone(String args[]) throws DeterministicParrotException {","lastModifiedDate":"2023-08-21"},{"lineNumber":251,"author":{"gitId":"conradsoon"},"content":" if(args.length \u003c 2){","lastModifiedDate":"2023-08-21"},{"lineNumber":252,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":253,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":254,"author":{"gitId":"conradsoon"},"content":" int i;","lastModifiedDate":"2023-08-21"},{"lineNumber":255,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":256,"author":{"gitId":"conradsoon"},"content":" i \u003d Integer.parseInt(args[1]);","lastModifiedDate":"2023-08-21"},{"lineNumber":257,"author":{"gitId":"conradsoon"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":258,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":259,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":260,"author":{"gitId":"conradsoon"},"content":" if (i \u003c\u003d 0 || i \u003e list.size()) {","lastModifiedDate":"2023-08-21"},{"lineNumber":261,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Invalid task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":262,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":263,"author":{"gitId":"conradsoon"},"content":" this.list.get(i-1).markAsDone();","lastModifiedDate":"2023-08-21"},{"lineNumber":264,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":265,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + this.list.get(i-1));","lastModifiedDate":"2023-08-21"},{"lineNumber":266,"author":{"gitId":"conradsoon"},"content":" saveData();","lastModifiedDate":"2023-08-31"},{"lineNumber":267,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":268,"author":{"gitId":"conradsoon"},"content":" private void markAsUndone(String toks[]) throws DeterministicParrotException {","lastModifiedDate":"2023-08-21"},{"lineNumber":269,"author":{"gitId":"conradsoon"},"content":" if(toks.length \u003c 2){","lastModifiedDate":"2023-08-21"},{"lineNumber":270,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":271,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":272,"author":{"gitId":"conradsoon"},"content":" int i;","lastModifiedDate":"2023-08-21"},{"lineNumber":273,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":274,"author":{"gitId":"conradsoon"},"content":" i \u003d Integer.parseInt(toks[1]);","lastModifiedDate":"2023-08-21"},{"lineNumber":275,"author":{"gitId":"conradsoon"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":276,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":277,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":278,"author":{"gitId":"conradsoon"},"content":" if (i \u003c\u003d 0 || i \u003e list.size()) {","lastModifiedDate":"2023-08-21"},{"lineNumber":279,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Invalid task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":280,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":281,"author":{"gitId":"conradsoon"},"content":" this.list.get(i-1).markAsUndone();","lastModifiedDate":"2023-08-21"},{"lineNumber":282,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"OK, I\u0027ve marked this task as not done yet:\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":283,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + this.list.get(i-1));","lastModifiedDate":"2023-08-21"},{"lineNumber":284,"author":{"gitId":"conradsoon"},"content":" saveData();","lastModifiedDate":"2023-08-31"},{"lineNumber":285,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":286,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":287,"author":{"gitId":"conradsoon"},"content":" private void addToDo(String[] args) throws DeterministicParrotException {","lastModifiedDate":"2023-08-21"},{"lineNumber":288,"author":{"gitId":"conradsoon"},"content":" if (args.length \u003c 2) {","lastModifiedDate":"2023-08-21"},{"lineNumber":289,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":290,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":291,"author":{"gitId":"conradsoon"},"content":" String taskDescription \u003d String.join(\" \", Arrays.copyOfRange(args, 1, args.length));","lastModifiedDate":"2023-08-21"},{"lineNumber":292,"author":{"gitId":"conradsoon"},"content":" ToDo t \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-21"},{"lineNumber":293,"author":{"gitId":"conradsoon"},"content":" addToList(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":294,"author":{"gitId":"conradsoon"},"content":" /*","lastModifiedDate":"2023-08-31"},{"lineNumber":295,"author":{"gitId":"conradsoon"},"content":" this.list.add(t);","lastModifiedDate":"2023-08-21"},{"lineNumber":296,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":297,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + t);","lastModifiedDate":"2023-08-21"},{"lineNumber":298,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Now you have \" + this.list.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":299,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":300,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":301,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":302,"author":{"gitId":"conradsoon"},"content":" private void addDeadline(String[] args) throws DeterministicParrotException {","lastModifiedDate":"2023-08-21"},{"lineNumber":303,"author":{"gitId":"conradsoon"},"content":" int byIndex \u003d Arrays.asList(args).indexOf(\"/by\");","lastModifiedDate":"2023-08-21"},{"lineNumber":304,"author":{"gitId":"conradsoon"},"content":" if (byIndex \u003d\u003d -1 || byIndex \u003d\u003d args.length - 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":305,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Invalid deadline format. Use /by to specify deadline time.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":306,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":307,"author":{"gitId":"conradsoon"},"content":" String taskName \u003d String.join(\" \", Arrays.copyOfRange(args, 1, byIndex));","lastModifiedDate":"2023-08-21"},{"lineNumber":308,"author":{"gitId":"conradsoon"},"content":" String deadline \u003d String.join(\" \", Arrays.copyOfRange(args, byIndex + 1, args.length));","lastModifiedDate":"2023-08-21"},{"lineNumber":309,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":310,"author":{"gitId":"conradsoon"},"content":" Deadline t \u003d new Deadline(taskName, deadline);","lastModifiedDate":"2023-08-21"},{"lineNumber":311,"author":{"gitId":"conradsoon"},"content":" /*","lastModifiedDate":"2023-08-31"},{"lineNumber":312,"author":{"gitId":"conradsoon"},"content":" this.list.add(t);","lastModifiedDate":"2023-08-21"},{"lineNumber":313,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":314,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + t);","lastModifiedDate":"2023-08-21"},{"lineNumber":315,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Now you have \" + this.list.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":316,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":317,"author":{"gitId":"conradsoon"},"content":" addToList(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":318,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":319,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":320,"author":{"gitId":"conradsoon"},"content":" private void addEvent(String[] args) throws DeterministicParrotException {","lastModifiedDate":"2023-08-21"},{"lineNumber":321,"author":{"gitId":"conradsoon"},"content":" int fromIndex \u003d Arrays.asList(args).indexOf(\"/from\");","lastModifiedDate":"2023-08-21"},{"lineNumber":322,"author":{"gitId":"conradsoon"},"content":" int toIndex \u003d Arrays.asList(args).indexOf(\"/to\");","lastModifiedDate":"2023-08-21"},{"lineNumber":323,"author":{"gitId":"conradsoon"},"content":" if (fromIndex \u003d\u003d -1 || toIndex \u003d\u003d -1 || toIndex \u003c\u003d fromIndex || fromIndex \u003d\u003d args.length - 1 || toIndex \u003d\u003d args.length - 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":324,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Invalid event format. Use /from and /to to specify event time.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":325,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":326,"author":{"gitId":"conradsoon"},"content":" String eventName \u003d String.join(\" \", Arrays.copyOfRange(args, 1, fromIndex));","lastModifiedDate":"2023-08-21"},{"lineNumber":327,"author":{"gitId":"conradsoon"},"content":" String startTime \u003d String.join(\" \", Arrays.copyOfRange(args, fromIndex + 1, toIndex));","lastModifiedDate":"2023-08-21"},{"lineNumber":328,"author":{"gitId":"conradsoon"},"content":" String endTime \u003d String.join(\" \", Arrays.copyOfRange(args, toIndex + 1, args.length));","lastModifiedDate":"2023-08-21"},{"lineNumber":329,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":330,"author":{"gitId":"conradsoon"},"content":" Event t \u003d new Event(eventName, startTime, endTime);","lastModifiedDate":"2023-08-21"},{"lineNumber":331,"author":{"gitId":"conradsoon"},"content":" /*","lastModifiedDate":"2023-08-31"},{"lineNumber":332,"author":{"gitId":"conradsoon"},"content":" this.list.add(t);","lastModifiedDate":"2023-08-21"},{"lineNumber":333,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":334,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + t);","lastModifiedDate":"2023-08-21"},{"lineNumber":335,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Now you have \" + this.list.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":336,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":337,"author":{"gitId":"conradsoon"},"content":" addToList(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":338,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":339,"author":{"gitId":"conradsoon"},"content":" private void deleteTask(String args[]) throws DeterministicParrotException {","lastModifiedDate":"2023-08-21"},{"lineNumber":340,"author":{"gitId":"conradsoon"},"content":" if(args.length \u003c 2){","lastModifiedDate":"2023-08-21"},{"lineNumber":341,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":342,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":343,"author":{"gitId":"conradsoon"},"content":" int i;","lastModifiedDate":"2023-08-21"},{"lineNumber":344,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":345,"author":{"gitId":"conradsoon"},"content":" i \u003d Integer.parseInt(args[1]);","lastModifiedDate":"2023-08-21"},{"lineNumber":346,"author":{"gitId":"conradsoon"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":347,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":348,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":349,"author":{"gitId":"conradsoon"},"content":" if (i \u003c\u003d 0 || i \u003e list.size()) {","lastModifiedDate":"2023-08-21"},{"lineNumber":350,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Invalid task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":351,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":352,"author":{"gitId":"conradsoon"},"content":" Task t \u003d this.list.remove(i-1);","lastModifiedDate":"2023-08-21"},{"lineNumber":353,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":354,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + t);","lastModifiedDate":"2023-08-21"},{"lineNumber":355,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Now you have \" + this.list.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":356,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":357,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":358,"author":{"gitId":"conradsoon"},"content":" private void handleCommand(String input){","lastModifiedDate":"2023-08-21"},{"lineNumber":359,"author":{"gitId":"conradsoon"},"content":" String[] tokens \u003d input.split(\" \");","lastModifiedDate":"2023-08-21"},{"lineNumber":360,"author":{"gitId":"conradsoon"},"content":" CheckedConsumer\u003cString[]\u003e cmdHandler \u003d this.commandHandlers.get(tokens[0]);","lastModifiedDate":"2023-08-21"},{"lineNumber":361,"author":{"gitId":"conradsoon"},"content":" this.printDash();","lastModifiedDate":"2023-08-21"},{"lineNumber":362,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":363,"author":{"gitId":"conradsoon"},"content":" if (cmdHandler !\u003d null) {","lastModifiedDate":"2023-08-21"},{"lineNumber":364,"author":{"gitId":"conradsoon"},"content":" cmdHandler.accept(tokens);","lastModifiedDate":"2023-08-21"},{"lineNumber":365,"author":{"gitId":"conradsoon"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":366,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-21"},{"lineNumber":367,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":368,"author":{"gitId":"conradsoon"},"content":" } catch (Exception de) {","lastModifiedDate":"2023-08-31"},{"lineNumber":369,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + de.getMessage());","lastModifiedDate":"2023-08-21"},{"lineNumber":370,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + de.getCause());","lastModifiedDate":"2023-08-31"},{"lineNumber":371,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":372,"author":{"gitId":"conradsoon"},"content":" finally{","lastModifiedDate":"2023-08-21"},{"lineNumber":373,"author":{"gitId":"conradsoon"},"content":" this.printDash();","lastModifiedDate":"2023-08-21"},{"lineNumber":374,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":375,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":376,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":377,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":378,"author":{"gitId":"conradsoon"},"content":" private void poll() {","lastModifiedDate":"2023-08-21"},{"lineNumber":379,"author":{"gitId":"conradsoon"},"content":" this.greet();","lastModifiedDate":"2023-08-21"},{"lineNumber":380,"author":{"gitId":"conradsoon"},"content":" while (true) {","lastModifiedDate":"2023-08-21"},{"lineNumber":381,"author":{"gitId":"conradsoon"},"content":" String input \u003d this.s.nextLine().trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":382,"author":{"gitId":"conradsoon"},"content":" if (input.isEmpty()) {","lastModifiedDate":"2023-08-21"},{"lineNumber":383,"author":{"gitId":"conradsoon"},"content":" continue; // Skip empty input","lastModifiedDate":"2023-08-21"},{"lineNumber":384,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":385,"author":{"gitId":"conradsoon"},"content":" if(input.equals(\"bye\")){","lastModifiedDate":"2023-08-21"},{"lineNumber":386,"author":{"gitId":"conradsoon"},"content":" bye();","lastModifiedDate":"2023-08-21"},{"lineNumber":387,"author":{"gitId":"conradsoon"},"content":" saveData();","lastModifiedDate":"2023-08-31"},{"lineNumber":388,"author":{"gitId":"conradsoon"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":389,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":390,"author":{"gitId":"conradsoon"},"content":" handleCommand(input);","lastModifiedDate":"2023-08-21"},{"lineNumber":391,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":392,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":393,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":394,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":395,"author":{"gitId":"conradsoon"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":396,"author":{"gitId":"conradsoon"},"content":" DeterministicParrot parrot \u003d new DeterministicParrot();","lastModifiedDate":"2023-08-21"},{"lineNumber":397,"author":{"gitId":"conradsoon"},"content":" parrot.poll();","lastModifiedDate":"2023-08-21"},{"lineNumber":398,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":399,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"conradsoon":399}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"conradsoon":5}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"#!/usr/bin/env zsh","lastModifiedDate":"2023-08-21"},{"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":"conradsoon"},"content":"java -classpath ../bin DeterministicParrot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-21"},{"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":{"conradsoon":2,"-":36}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":" mainClass.set(\"deterministicparrot.DeterministicParrot\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":"mainClassName \u003d \u0027deterministicparrot.DeterministicParrot\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"conradsoon"},"content":" archiveBaseName \u003d \"deterministicparrot\"","lastModifiedDate":"2023-09-01"},{"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":{"conradsoon":5,"-":40}},{"path":"src/main/java/deterministicparrot/DPUtils.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":" * Utility class for date and time formatting and parsing in the Deterministic Parrot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":"public class DPUtils {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":" * Formats a LocalDateTime object into a string representation using the pattern \"MMM d yyyy\".","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":" * @param dateTime The LocalDateTime object to be formatted.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":" * @return A formatted string representation of the LocalDateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":" public static String dPFormatDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":" * Formats a LocalDateTime object into a string representation using the pattern \"yyyy-MM-dd\".","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":" * This format is suitable for saving dates in files.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":" * @param dateTime The LocalDateTime object to be formatted.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"conradsoon"},"content":" * @return A formatted string representation of the LocalDateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"conradsoon"},"content":" public static String saveFormatDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"conradsoon"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"conradsoon"},"content":" * Tries to parse a string representation of a date and time into a LocalDateTime object.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":" * The supported format is \"yyyy-MM-dd\u0027T\u0027HH:mm:ss\".","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":" * @param dateTime The string representation of the date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"conradsoon"},"content":" * @return A LocalDateTime object parsed from the input string.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"conradsoon"},"content":" * @throws DateTimeParseException If the input string is not in the expected format.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"conradsoon"},"content":" public static LocalDateTime dPTryParseDateTime(String dateTime) throws DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"conradsoon"},"content":" return LocalDateTime.parse(dateTime + \"T00:00:00\", DateTimeFormatter.ISO_LOCAL_DATE_TIME);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"conradsoon":43}},{"path":"src/main/java/deterministicparrot/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":" * Represents a task with a specific deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":" * The deadline for this task.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":" * Constructs a Deadline object with the given task description and deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":" * @param by The deadline of the task in string format.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":" * @throws DateTimeParseException If the provided deadline is in an invalid date format.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":" public Deadline(String description, String by) throws DateTimeParseException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":" this.by \u003d DPUtils.dPTryParseDateTime(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"conradsoon"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"conradsoon"},"content":" throw new IllegalArgumentException(\"Invalid date format for \u0027by\u0027. Please provide a valid date format.\", e);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"conradsoon"},"content":" * Returns a string representation of the Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":" * @return A string containing the task type, description, and deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"conradsoon"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"conradsoon"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), DPUtils.dPFormatDateTime(this.by));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"conradsoon":40}},{"path":"src/main/java/deterministicparrot/DeterministicParrot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"import java.util.*;","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":" * Main class for the Deterministic Parrot task management application.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":"public class DeterministicParrot {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":" //static variable storing the path to data file","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":" //init by setting input and output","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":" private Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":" private Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" private boolean endParrot \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":" * Constructs a DeterministicParrot object.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":" * Initializes the task list and sets up command handlers.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":" public DeterministicParrot(){","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":" this.initCommandHandlers();","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"conradsoon"},"content":" * Initializes command handlers for various user commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"conradsoon"},"content":" private void initCommandHandlers() {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":" parser.registerHandler(\"list\", args -\u003e printList());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"conradsoon"},"content":" parser.registerHandler(\"bye\", args -\u003e bye());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"conradsoon"},"content":" parser.registerHandler(\"mark\", args -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":" markAsDone(args);","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":" parser.registerHandler(\"unmark\", args -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"conradsoon"},"content":" markAsUndone(args);","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"conradsoon"},"content":" parser.registerHandler(\"todo\", args -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"conradsoon"},"content":" addToDo(args);","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"conradsoon"},"content":" parser.registerHandler(\"deadline\", args -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"conradsoon"},"content":" addDeadline(args);","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"conradsoon"},"content":" parser.registerHandler(\"event\", args -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"conradsoon"},"content":" addEvent(args);","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"conradsoon"},"content":" parser.registerHandler(\"delete\", args -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"conradsoon"},"content":" deleteTask(args);","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"conradsoon"},"content":" parser.registerHandler(\"find\", args -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"conradsoon"},"content":" findTask(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"conradsoon"},"content":" * Saves the task list to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"conradsoon"},"content":" * @throws FileNotFoundException If the file is not found.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"conradsoon"},"content":" private void dumpTaskListToFile() throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"conradsoon"},"content":" storage.save(this.taskList.serialize());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"conradsoon"},"content":" * Adds a task to the list and updates the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"conradsoon"},"content":" * @param t The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"conradsoon"},"content":" * @throws Exception If an error occurs while adding the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"conradsoon"},"content":" private void addToList(Task t) throws Exception{","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"conradsoon"},"content":" this.taskList.addTask(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + t);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + \"Now you have \" + this.taskList.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"conradsoon"},"content":" dumpTaskListToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":79,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"conradsoon"},"content":" * Marks a task as done and updates the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"conradsoon"},"content":" * @param args The arguments passed to the mark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"conradsoon"},"content":" * @throws Exception If an error occurs while marking the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"conradsoon"},"content":" private void markAsDone(String args[]) throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"conradsoon"},"content":" if(args.length \u003c 2){","lastModifiedDate":"2023-08-21"},{"lineNumber":87,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":88,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":89,"author":{"gitId":"conradsoon"},"content":" int i;","lastModifiedDate":"2023-08-21"},{"lineNumber":90,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":91,"author":{"gitId":"conradsoon"},"content":" i \u003d Integer.parseInt(args[1]);","lastModifiedDate":"2023-08-21"},{"lineNumber":92,"author":{"gitId":"conradsoon"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":93,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":94,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":95,"author":{"gitId":"conradsoon"},"content":" Task t \u003d this.taskList.markAsDone(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + t);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"conradsoon"},"content":" dumpTaskListToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":100,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"conradsoon"},"content":" * Marks a task as undone and updates the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"conradsoon"},"content":" * @param toks The arguments passed to the unmark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"conradsoon"},"content":" * @throws Exception If an error occurs while marking the task as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"conradsoon"},"content":" private void markAsUndone(String toks[]) throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"conradsoon"},"content":" if(toks.length \u003c 2){","lastModifiedDate":"2023-08-21"},{"lineNumber":108,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":109,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":110,"author":{"gitId":"conradsoon"},"content":" int i;","lastModifiedDate":"2023-08-21"},{"lineNumber":111,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":112,"author":{"gitId":"conradsoon"},"content":" i \u003d Integer.parseInt(toks[1]);","lastModifiedDate":"2023-08-21"},{"lineNumber":113,"author":{"gitId":"conradsoon"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":114,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":115,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":116,"author":{"gitId":"conradsoon"},"content":" Task t \u003d this.taskList.markAsUndone(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + \"OK, I\u0027ve marked this task as not done yet:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + t);","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"conradsoon"},"content":" dumpTaskListToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":121,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":122,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"conradsoon"},"content":" * Adds a \"ToDo\" task to the list and updates the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"conradsoon"},"content":" * @param args The arguments passed to the todo command.","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"conradsoon"},"content":" * @throws Exception If an error occurs while adding the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"conradsoon"},"content":" private void addToDo(String[] args) throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"conradsoon"},"content":" if (args.length \u003c 2) {","lastModifiedDate":"2023-08-21"},{"lineNumber":130,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":131,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":132,"author":{"gitId":"conradsoon"},"content":" String taskDescription \u003d String.join(\" \", Arrays.copyOfRange(args, 1, args.length));","lastModifiedDate":"2023-08-21"},{"lineNumber":133,"author":{"gitId":"conradsoon"},"content":" ToDo t \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-21"},{"lineNumber":134,"author":{"gitId":"conradsoon"},"content":" addToList(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":136,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":137,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"conradsoon"},"content":" * Adds a \"Deadline\" task to the list and updates the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"conradsoon"},"content":" * @param args The arguments passed to the deadline command.","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"conradsoon"},"content":" * @throws Exception If an error occurs while adding the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"conradsoon"},"content":" private void addDeadline(String[] args) throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"conradsoon"},"content":" int byIndex \u003d Arrays.asList(args).indexOf(\"/by\");","lastModifiedDate":"2023-08-21"},{"lineNumber":145,"author":{"gitId":"conradsoon"},"content":" if (byIndex \u003d\u003d -1 || byIndex \u003d\u003d args.length - 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":146,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Invalid deadline format. Use /by to specify deadline time.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":147,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":148,"author":{"gitId":"conradsoon"},"content":" String taskName \u003d String.join(\" \", Arrays.copyOfRange(args, 1, byIndex));","lastModifiedDate":"2023-08-21"},{"lineNumber":149,"author":{"gitId":"conradsoon"},"content":" String deadline \u003d String.join(\" \", Arrays.copyOfRange(args, byIndex + 1, args.length));","lastModifiedDate":"2023-08-21"},{"lineNumber":150,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":151,"author":{"gitId":"conradsoon"},"content":" Deadline t \u003d new Deadline(taskName, deadline);","lastModifiedDate":"2023-08-21"},{"lineNumber":152,"author":{"gitId":"conradsoon"},"content":" addToList(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":154,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":155,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"conradsoon"},"content":" * Adds an \"Event\" task to the list and updates the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"conradsoon"},"content":" * @param args The arguments passed to the event command.","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"conradsoon"},"content":" * @throws Exception If an error occurs while adding the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"conradsoon"},"content":" private void addEvent(String[] args) throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"conradsoon"},"content":" int fromIndex \u003d Arrays.asList(args).indexOf(\"/from\");","lastModifiedDate":"2023-08-21"},{"lineNumber":163,"author":{"gitId":"conradsoon"},"content":" int toIndex \u003d Arrays.asList(args).indexOf(\"/to\");","lastModifiedDate":"2023-08-21"},{"lineNumber":164,"author":{"gitId":"conradsoon"},"content":" if (fromIndex \u003d\u003d -1 || toIndex \u003d\u003d -1 || toIndex \u003c\u003d fromIndex || fromIndex \u003d\u003d args.length - 1 || toIndex \u003d\u003d args.length - 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":165,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Invalid event format. Use /from and /to to specify event time.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":166,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":167,"author":{"gitId":"conradsoon"},"content":" String eventName \u003d String.join(\" \", Arrays.copyOfRange(args, 1, fromIndex));","lastModifiedDate":"2023-08-21"},{"lineNumber":168,"author":{"gitId":"conradsoon"},"content":" String startTime \u003d String.join(\" \", Arrays.copyOfRange(args, fromIndex + 1, toIndex));","lastModifiedDate":"2023-08-21"},{"lineNumber":169,"author":{"gitId":"conradsoon"},"content":" String endTime \u003d String.join(\" \", Arrays.copyOfRange(args, toIndex + 1, args.length));","lastModifiedDate":"2023-08-21"},{"lineNumber":170,"author":{"gitId":"conradsoon"},"content":" Event t \u003d new Event(eventName, startTime, endTime);","lastModifiedDate":"2023-08-21"},{"lineNumber":171,"author":{"gitId":"conradsoon"},"content":" addToList(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":173,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"conradsoon"},"content":" * Deletes a task from the list and updates the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"conradsoon"},"content":" * @param args The arguments passed to the delete command.","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"conradsoon"},"content":" * @throws Exception If an error occurs while deleting the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"conradsoon"},"content":" private void deleteTask(String args[]) throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"conradsoon"},"content":" if(args.length \u003c 2){","lastModifiedDate":"2023-08-21"},{"lineNumber":182,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":183,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":184,"author":{"gitId":"conradsoon"},"content":" int i;","lastModifiedDate":"2023-08-21"},{"lineNumber":185,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":186,"author":{"gitId":"conradsoon"},"content":" i \u003d Integer.parseInt(args[1]);","lastModifiedDate":"2023-08-21"},{"lineNumber":187,"author":{"gitId":"conradsoon"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":188,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":189,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":190,"author":{"gitId":"conradsoon"},"content":" Task t \u003d this.taskList.deleteTask(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + t);","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + \"Now you have \" + this.taskList.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"conradsoon"},"content":" dumpTaskListToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":196,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"conradsoon"},"content":" * Displays the list of tasks in the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"conradsoon"},"content":" private void printList(){","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"conradsoon"},"content":" this.ui.println(this.taskList.formatAsString());","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":203,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"conradsoon"},"content":" * Performs necessary actions before exiting the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"conradsoon"},"content":" * @throws Exception If an error occurs during the exit process.","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":209,"author":{"gitId":"conradsoon"},"content":" private void bye() throws Exception{","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"conradsoon"},"content":" dumpTaskListToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"conradsoon"},"content":" this.endParrot \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"conradsoon"},"content":" this.ui.bye();","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":214,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":215,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"conradsoon"},"content":" * Polls for user input and handles commands until the application is exited.","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"conradsoon"},"content":" private void poll() {","lastModifiedDate":"2023-08-21"},{"lineNumber":219,"author":{"gitId":"conradsoon"},"content":" this.ui.greet();","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"conradsoon"},"content":" try{","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"conradsoon"},"content":" this.taskList \u003d TaskList.deserialize(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"conradsoon"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + \"No saved task list found. Starting with empty task list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"conradsoon"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"conradsoon"},"content":" while (true) {","lastModifiedDate":"2023-08-21"},{"lineNumber":228,"author":{"gitId":"conradsoon"},"content":" if(this.endParrot){","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"conradsoon"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"conradsoon"},"content":" String input \u003d this.ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"conradsoon"},"content":" if (input.isEmpty()) {","lastModifiedDate":"2023-08-21"},{"lineNumber":233,"author":{"gitId":"conradsoon"},"content":" continue; // Skip empty input","lastModifiedDate":"2023-08-21"},{"lineNumber":234,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":235,"author":{"gitId":"conradsoon"},"content":" this.ui.printDash();","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"conradsoon"},"content":" this.parser.handleCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"conradsoon"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"conradsoon"},"content":" this.ui.printError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":241,"author":{"gitId":"conradsoon"},"content":" this.ui.printDash();","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":243,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":244,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"conradsoon"},"content":" private void findTask(String args[]) throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":246,"author":{"gitId":"conradsoon"},"content":" if(args.length \u003c 2){","lastModifiedDate":"2023-09-01"},{"lineNumber":247,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Please provide a search term.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"conradsoon"},"content":" String searchTerm \u003d String.join(\" \", Arrays.copyOfRange(args, 1, args.length));","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"conradsoon"},"content":" List\u003cTaskList.SearchResult\u003e results \u003d this.taskList.findTask(searchTerm);","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"conradsoon"},"content":" this.ui.println(\" \" + \"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"conradsoon"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"conradsoon"},"content":" for(int i \u003d 0; i \u003c results.size(); i++){","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"conradsoon"},"content":" sb.append(\" \" + results.get(i).index + \". \" + results.get(i).task + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":256,"author":{"gitId":"conradsoon"},"content":" this.ui.println(sb.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"conradsoon"},"content":" * Main method to start the Deterministic Parrot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":260,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"conradsoon"},"content":" * @param args Command line arguments (not used).","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":263,"author":{"gitId":"conradsoon"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":264,"author":{"gitId":"conradsoon"},"content":" DeterministicParrot parrot \u003d new DeterministicParrot();","lastModifiedDate":"2023-08-21"},{"lineNumber":265,"author":{"gitId":"conradsoon"},"content":" parrot.poll();","lastModifiedDate":"2023-08-21"},{"lineNumber":266,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":267,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"conradsoon":267}},{"path":"src/main/java/deterministicparrot/DeterministicParrotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":" * Custom exception class for the Deterministic Parrot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":" * This exception is thrown to indicate errors specific to the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":"public class DeterministicParrotException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":" * Constructs a new DeterministicParrotException with the specified detail message.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":" * @param message The detail message that describes the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":" public DeterministicParrotException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"conradsoon":16}},{"path":"src/main/java/deterministicparrot/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":" * Represents an event task in the Deterministic Parrot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":" * An event task has a name and start and end date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":" protected LocalDateTime timeStart;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":" protected LocalDateTime timeEnd;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":" * Constructs an Event object with the specified name, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":" * @param name The name of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" * @param timeStart The start time of the event in string format.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":" * @param timeEnd The end time of the event in string format.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":" * @throws DateTimeParseException If the input time strings are not in the expected format.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":" * @throws IllegalArgumentException If the start time is after the end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":" public Event(String name, String timeStart, String timeEnd) throws DateTimeParseException {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":" super(name);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"conradsoon"},"content":" this.timeStart \u003d DPUtils.dPTryParseDateTime(timeStart);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"conradsoon"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"conradsoon"},"content":" throw new IllegalArgumentException(\"Invalid date format for \u0027timeStart\u0027. Please provide a valid date.\", e);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"conradsoon"},"content":" this.timeEnd \u003d DPUtils.dPTryParseDateTime(timeEnd);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"conradsoon"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":" throw new IllegalArgumentException(\"Invalid date format for \u0027timeEnd\u0027. Please provide a valid date.\", e);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"conradsoon"},"content":" if (this.timeStart.isAfter(this.timeEnd)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"conradsoon"},"content":" throw new IllegalArgumentException(\"\u0027timeStart\u0027 cannot be after \u0027timeEnd\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"conradsoon"},"content":" * Returns a string representation of the Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"conradsoon"},"content":" * @return A formatted string containing the task type, name, and start and end times.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"conradsoon"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"conradsoon"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"conradsoon"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), DPUtils.dPFormatDateTime(this.timeStart), DPUtils.dPFormatDateTime(this.timeEnd));","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"conradsoon":51}},{"path":"src/main/java/deterministicparrot/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":" * Parser class for handling user commands in the Deterministic Parrot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":" public Parser() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":" * Functional interface for a checked consumer that can throw exceptions.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":" * @param \u003cT\u003e The type of input to the consumer.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":" @FunctionalInterface","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":" interface CheckedConsumer\u003cT\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":" void accept(T t) throws Exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":" private Map\u003cString, CheckedConsumer\u003cString[]\u003e\u003e commandHandlers \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"conradsoon"},"content":" * Registers a command handler for a specific command.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"conradsoon"},"content":" * @param command The command to be registered.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"conradsoon"},"content":" * @param handler The command handler function.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"conradsoon"},"content":" public void registerHandler(String command, CheckedConsumer\u003cString[]\u003e handler) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"conradsoon"},"content":" this.commandHandlers.put(command, handler);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"conradsoon"},"content":" * Handles a user command by invoking the appropriate command handler.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"conradsoon"},"content":" * @param input The user input containing the command and arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"conradsoon"},"content":" * @throws Exception If an error occurs while handling the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"conradsoon"},"content":" public void handleCommand(String input) throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"conradsoon"},"content":" String[] tokens \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"conradsoon"},"content":" CheckedConsumer\u003cString[]\u003e cmdHandler \u003d this.commandHandlers.get(tokens[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"conradsoon"},"content":" if (cmdHandler !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"conradsoon"},"content":" cmdHandler.accept(tokens);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"conradsoon"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"conradsoon":51}},{"path":"src/main/java/deterministicparrot/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":" * Storage class for loading and saving data to/from files in the Deterministic Parrot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":" private static final String DATA_FILE_PATH \u003d \"./data/data.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":" * Constructs a new Storage object.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" public Storage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":" * Loads data from the file and returns the raw string content.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":" * @return The raw string content read from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":" * @throws FileNotFoundException If the data file cannot be found.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"conradsoon"},"content":" public String load() throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"conradsoon"},"content":" File file \u003d new File(DATA_FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"conradsoon"},"content":" StringBuilder rawData \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":" if (file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"conradsoon"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"conradsoon"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":" rawData.append(fileScanner.nextLine()).append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"conradsoon"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"conradsoon"},"content":" createEmptyDataFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"conradsoon"},"content":" return rawData.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"conradsoon"},"content":" * Writes the provided raw string content to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"conradsoon"},"content":" * @param rawData The raw string content to be saved to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"conradsoon"},"content":" * @throws FileNotFoundException If the data file cannot be found.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"conradsoon"},"content":" public void save(String rawData) throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"conradsoon"},"content":" try (PrintWriter fileWriter \u003d new PrintWriter(DATA_FILE_PATH)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"conradsoon"},"content":" fileWriter.print(rawData); // Using print to avoid adding an additional newline","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"conradsoon"},"content":" * Creates the necessary directories and an empty data file if they don\u0027t exist.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"conradsoon"},"content":" * @throws FileNotFoundException If the data file cannot be created.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"conradsoon"},"content":" private void createEmptyDataFile() throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"conradsoon"},"content":" File file \u003d new File(DATA_FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"conradsoon"},"content":" if (!file.getParentFile().exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"conradsoon"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"conradsoon"},"content":" try (PrintWriter fileWriter \u003d new PrintWriter(DATA_FILE_PATH)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"conradsoon"},"content":" // Create an empty file","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"conradsoon":69}},{"path":"src/main/java/deterministicparrot/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":" * Represents a task in the Deterministic Parrot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":" * This is an abstract class that serves as the base for different types of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":"abstract public class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":" private String name;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":" * Constructs a Task object with the given description.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":" public Task(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":" this.name \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":" * Gets the name (description) of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"conradsoon"},"content":" * @return The name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"conradsoon"},"content":" public String getName() {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"conradsoon"},"content":" return this.name;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":" * Gets the completion status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":" * @return True if the task is marked as done, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"conradsoon"},"content":" public boolean getIsDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"conradsoon"},"content":" return this.isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"conradsoon"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"conradsoon"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"conradsoon"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"conradsoon"},"content":" * Marks the task as not done (undone).","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"conradsoon"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"conradsoon"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"conradsoon"},"content":" * Returns a string representation of the task, including its completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"conradsoon"},"content":" * @return A formatted string indicating the completion status and name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"conradsoon"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"conradsoon"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"conradsoon"},"content":" return \"[\" + (this.isDone ? \"X\" : \" \") + \"] \" + this.name;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"conradsoon":65}},{"path":"src/main/java/deterministicparrot/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":" * Represents a list of tasks that can be managed and manipulated.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":"class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":" public class SearchResult{","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":" public int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":" public Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":" private List\u003cTask\u003e list;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":" * Constructs a TaskList with the given list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"conradsoon"},"content":" * @param tasks The list of tasks to initialize the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"conradsoon"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"conradsoon"},"content":" this.list \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"conradsoon"},"content":" * Formats the tasks in the TaskList as a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":" * @return A formatted string representing the tasks in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"conradsoon"},"content":" public String formatAsString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"conradsoon"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"conradsoon"},"content":" for (int i \u003d 0; i \u003c this.list.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"conradsoon"},"content":" sb.append(\" \" + (i + 1) + \". \" + this.list.get(i) + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"conradsoon"},"content":" return sb.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"conradsoon"},"content":" * Serializes the TaskList to a string format.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"conradsoon"},"content":" * @return A serialized string representation of the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"conradsoon"},"content":" public String serialize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"conradsoon"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"conradsoon"},"content":" for (Task task : this.list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"conradsoon"},"content":" if (task instanceof ToDo) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"conradsoon"},"content":" sb.append(\"T | \").append(task.getIsDone() ? \"1\" : \"0\").append(\" | \").append(task.getName()).append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"conradsoon"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"conradsoon"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"conradsoon"},"content":" sb.append(\"D | \").append(task.getIsDone() ? \"1\" : \"0\").append(\" | \").append(task.getName()).append(\" | \").append(DPUtils.saveFormatDateTime(deadline.by)).append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"conradsoon"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"conradsoon"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"conradsoon"},"content":" sb.append(\"E | \").append(task.getIsDone() ? \"1\" : \"0\").append(\" | \").append(task.getName()).append(\" | \").append(DPUtils.saveFormatDateTime(event.timeStart)).append(\" \").append(DPUtils.saveFormatDateTime(event.timeEnd)).append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"conradsoon"},"content":" return sb.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"conradsoon"},"content":" * Deserializes a string representation to create a TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"conradsoon"},"content":" * @param rawData The serialized string representing the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"conradsoon"},"content":" * @return A deserialized TaskList object.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"conradsoon"},"content":" * @throws Exception If there\u0027s an error during deserialization.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"conradsoon"},"content":" public static TaskList deserialize(String rawData) throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"conradsoon"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"conradsoon"},"content":" String[] lines \u003d rawData.split(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"conradsoon"},"content":" for (String line : lines) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"conradsoon"},"content":" String[] data \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"conradsoon"},"content":" switch (data[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"conradsoon"},"content":" case \"T\":","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"conradsoon"},"content":" ToDo todo \u003d new ToDo(data[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"conradsoon"},"content":" if (data[1].equals(\"1\")) todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"conradsoon"},"content":" tasks.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"conradsoon"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"conradsoon"},"content":" case \"D\":","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"conradsoon"},"content":" Deadline deadline \u003d new Deadline(data[2], data[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"conradsoon"},"content":" if (data[1].equals(\"1\")) deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"conradsoon"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"conradsoon"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"conradsoon"},"content":" case \"E\":","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"conradsoon"},"content":" String[] time \u003d data[3].split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"conradsoon"},"content":" Event event \u003d new Event(data[2], time[0], time[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"conradsoon"},"content":" if (data[1].equals(\"1\")) event.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"conradsoon"},"content":" tasks.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"conradsoon"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"conradsoon"},"content":" return new TaskList(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"conradsoon"},"content":" * Gets the number of tasks in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"conradsoon"},"content":" * @return The number of tasks in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"conradsoon"},"content":" public int getSize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"conradsoon"},"content":" return this.list.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"conradsoon"},"content":" * Checks if the provided index is valid and throws an exception if not.","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"conradsoon"},"content":" * @param idx The index to check.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"conradsoon"},"content":" * @throws DeterministicParrotException If the index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"conradsoon"},"content":" private void checkIfValidIdx(int idx) throws DeterministicParrotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"conradsoon"},"content":" if (idx \u003c\u003d 0 || idx \u003e list.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"conradsoon"},"content":" throw new DeterministicParrotException(\"Invalid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"conradsoon"},"content":" * Gets a task at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"conradsoon"},"content":" * @param idx The index of the task to retrieve.","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"conradsoon"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"conradsoon"},"content":" * @throws DeterministicParrotException If the index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"conradsoon"},"content":" public Task getTask(int idx) throws DeterministicParrotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"conradsoon"},"content":" checkIfValidIdx(idx);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"conradsoon"},"content":" return this.list.get(idx - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"conradsoon"},"content":" * Deletes a task at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"conradsoon"},"content":" * @param idx The index of the task to delete.","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"conradsoon"},"content":" * @return The deleted task.","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"conradsoon"},"content":" * @throws DeterministicParrotException If the index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"conradsoon"},"content":" public Task deleteTask(int idx) throws DeterministicParrotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"conradsoon"},"content":" checkIfValidIdx(idx);","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"conradsoon"},"content":" Task t \u003d this.list.remove(idx - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"conradsoon"},"content":" return t;","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"conradsoon"},"content":" * Adds a task to the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"conradsoon"},"content":" * @param t The task to add.","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"conradsoon"},"content":" * @return The new size of the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"conradsoon"},"content":" public int addTask(Task t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"conradsoon"},"content":" this.list.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"conradsoon"},"content":" return getSize();","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"conradsoon"},"content":" * Marks a task at the specified index as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"conradsoon"},"content":" * @param idx The index of the task to mark as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"conradsoon"},"content":" * @return The task that was marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"conradsoon"},"content":" * @throws DeterministicParrotException If the index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"conradsoon"},"content":" public Task markAsDone(int idx) throws DeterministicParrotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"conradsoon"},"content":" Task t \u003d getTask(idx);","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"conradsoon"},"content":" t.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"conradsoon"},"content":" return t;","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"conradsoon"},"content":" * Marks a task at the specified index as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"conradsoon"},"content":" * @param idx The index of the task to mark as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"conradsoon"},"content":" * @return The task that was marked as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"conradsoon"},"content":" * @throws DeterministicParrotException If the index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"conradsoon"},"content":" public Task markAsUndone(int idx) throws DeterministicParrotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"conradsoon"},"content":" Task t \u003d getTask(idx);","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"conradsoon"},"content":" t.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"conradsoon"},"content":" return t;","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"conradsoon"},"content":" public List\u003cSearchResult\u003e findTask(String keyword){","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"conradsoon"},"content":" List\u003cSearchResult\u003e results \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"conradsoon"},"content":" for(int i \u003d 0; i \u003c this.list.size(); i++){","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"conradsoon"},"content":" Task t \u003d this.list.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"conradsoon"},"content":" if(t.getName().contains(keyword)){","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"conradsoon"},"content":" SearchResult sr \u003d new SearchResult();","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"conradsoon"},"content":" sr.index \u003d i+1;","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"conradsoon"},"content":" sr.task \u003d t;","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"conradsoon"},"content":" results.add(sr);","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"conradsoon"},"content":" return results;","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"conradsoon":196}},{"path":"src/main/java/deterministicparrot/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":" * Represents a task of type \"To-Do\".","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":" * Constructs a ToDo task with the given description.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":" * @param s The description of the ToDo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":" public ToDo(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":" super(s);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":" * Returns a formatted string representation of the ToDo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":" * @return A string representation of the ToDo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"conradsoon":25}},{"path":"src/main/java/deterministicparrot/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"import java.util.LinkedList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":" * Represents the user interface for interacting with the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":" private Scanner s;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":" private PrintWriter pw;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":" * Constructs a Ui instance with the provided Scanner and PrintWriter.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":" * @param s The Scanner to read input from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" * @param pw The PrintWriter to output messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":" public Ui(Scanner s, PrintWriter pw) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":" this.s \u003d s;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":" this.pw \u003d pw;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"conradsoon"},"content":" * Constructs a Ui instance with default System.in and System.out.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"conradsoon"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"conradsoon"},"content":" this.s \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"conradsoon"},"content":" this.pw \u003d new PrintWriter(System.out, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":" * Reads a command input from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":" * @return The user\u0027s input command.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"conradsoon"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"conradsoon"},"content":" return s.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"conradsoon"},"content":" * Displays a greeting message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"conradsoon"},"content":" public void greet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"conradsoon"},"content":" this.printDash();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Hello! I\u0027m deterministicparrot.DeterministicParrot\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"conradsoon"},"content":" this.printDash();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"conradsoon"},"content":" * Displays a goodbye message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"conradsoon"},"content":" public void bye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" \" + \"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"conradsoon"},"content":" * Reads and trims a line of input from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"conradsoon"},"content":" * @return The trimmed user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"conradsoon"},"content":" public String readLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"conradsoon"},"content":" return this.s.nextLine().trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"conradsoon"},"content":" * Prints a string followed by a new line.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"conradsoon"},"content":" * @param s The string to be printed.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"conradsoon"},"content":" public void println(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"conradsoon"},"content":" this.pw.println(s);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"conradsoon"},"content":" * Prints an error message from an exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"conradsoon"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"conradsoon"},"content":" * @param e The exception containing the error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"conradsoon"},"content":" public void printError(Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"conradsoon"},"content":" this.pw.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"conradsoon"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"conradsoon"},"content":" * Prints a dashed line separator.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"conradsoon"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"conradsoon"},"content":" public void printDash() {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"conradsoon"},"content":" this.pw.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"conradsoon":92}},{"path":"src/test/java/deterministicparrot/DeterministicParrotIntegrationTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"import java.io.ByteArrayInputStream;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":"public class DeterministicParrotIntegrationTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":" private final ByteArrayOutputStream outContent \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":" private final PrintStream originalOut \u003d System.out;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":" private final PrintStream originalErr \u003d System.err;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":" public void setUpStreams() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":" System.setOut(new PrintStream(outContent));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":" @AfterEach","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":" public void restoreStreams() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":" System.setOut(originalOut);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"conradsoon"},"content":" System.setErr(originalErr);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"conradsoon"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"conradsoon"},"content":" public void testDeterministicParrotFlow() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":" //TODO: make this test run in a temporary directory","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"conradsoon"},"content":" String simulatedUserInput \u003d \"todo test\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"conradsoon"},"content":" \"deadline test2 /by 2023-01-02\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":" \"event test3 /from 2020-01-01 /to 2020-01-02\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":" \"list\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":" \"bye\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"conradsoon"},"content":" System.setIn(new ByteArrayInputStream(simulatedUserInput.getBytes()));","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"conradsoon"},"content":" DeterministicParrot.main(new String[]{});","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"conradsoon"},"content":" String expectedOutput \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"conradsoon"},"content":" \" Hello! I\u0027m deterministicparrot.DeterministicParrot\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"conradsoon"},"content":" \" What can I do for you?\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"conradsoon"},"content":" \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"conradsoon"},"content":" \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"conradsoon"},"content":" \" Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"conradsoon"},"content":" \" [T][ ] test\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"conradsoon"},"content":" \" Now you have 1 tasks in the list.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"conradsoon"},"content":" \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"conradsoon"},"content":" \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"conradsoon"},"content":" \" Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"conradsoon"},"content":" \" [D][ ] test2 (by: Jan 2 2023)\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"conradsoon"},"content":" \" Now you have 2 tasks in the list.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"conradsoon"},"content":" \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"conradsoon"},"content":" \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"conradsoon"},"content":" \" Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"conradsoon"},"content":" \" [E][ ] test3 (from: Jan 1 2020 to: Jan 2 2020)\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"conradsoon"},"content":" \" Now you have 3 tasks in the list.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"conradsoon"},"content":" \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"conradsoon"},"content":" \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"conradsoon"},"content":" \" Here are the tasks in your list:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"conradsoon"},"content":" \" 1. [T][ ] test\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"conradsoon"},"content":" \" 2. [D][ ] test2 (by: Jan 2 2023)\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"conradsoon"},"content":" \" 3. [E][ ] test3 (from: Jan 1 2020 to: Jan 2 2020)\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"conradsoon"},"content":" \"\\n\"+","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"conradsoon"},"content":" \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"conradsoon"},"content":" \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"conradsoon"},"content":" \" Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"conradsoon"},"content":" \" ____________________________________________________________\\n\"; // the entire expected output as shown in your example","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"conradsoon"},"content":" assertEquals(expectedOutput, outContent.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"conradsoon":72}},{"path":"src/test/java/deterministicparrot/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"package deterministicparrot;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"conradsoon"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"conradsoon"},"content":"public class EventTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"conradsoon"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"conradsoon"},"content":" public void createEvent_validInput_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"conradsoon"},"content":" Event event \u003d new Event(\"Birthday Party\", \"2023-09-02\", \"2023-09-02\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"conradsoon"},"content":" assertEquals(\"[E][ ] Birthday Party (from: Sep 2 2023 to: Sep 2 2023)\", event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"conradsoon"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"conradsoon"},"content":" public void createEvent_invalidTimeStartFormat_throwsIllegalArgumentException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"conradsoon"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"conradsoon"},"content":" Event event \u003d new Event(\"Birthday Party\", \"02-09-2023\", \"2023-09-02\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"conradsoon"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"conradsoon"},"content":" public void createEvent_invalidTimeEndFormat_throwsIllegalArgumentException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"conradsoon"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"conradsoon"},"content":" Event event \u003d new Event(\"Birthday Party\", \"2023-09-02\", \"02-09-2023\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"conradsoon"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"conradsoon"},"content":" public void createEvent_timeStartAfterTimeEnd_throwsIllegalArgumentException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"conradsoon"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"conradsoon"},"content":" Event event \u003d new Event(\"Birthday Party\", \"2023-09-03\", \"2023-09-02\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"conradsoon"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"conradsoon"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"conradsoon"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"conradsoon"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"conradsoon":37}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"conradsoon"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"conradsoon"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"conradsoon"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"conradsoon"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"conradsoon":5}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"conradsoon"},"content":"#!/usr/bin/env zsh","lastModifiedDate":"2023-08-21"},{"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":"conradsoon"},"content":"java -classpath ../bin DeterministicParrot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-21"},{"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":{"conradsoon":2,"-":36}}] diff --git a/conradsoon_ip_master/commits.json b/conradsoon_ip_master/commits.json index feaf5325..8b5a5eea 100644 --- a/conradsoon_ip_master/commits.json +++ b/conradsoon_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"conradsoon":[{"date":"2023-08-21","commitResults":[{"hash":"daf54a45b11a305a55a82eba646059491ff3c872","isMergeCommit":false,"messageTitle":"Renamed Duke to DeterministicParrot, added basic greeting and goodbye functionality.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":10}}},{"hash":"4da38ea9f2c0efcfc3378edf669802922c9f99b8","isMergeCommit":false,"messageTitle":"Added echo command functionality, added some indentations for responses.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":4}}},{"hash":"3086dfd8b43670728c507983d9031e13bf5ec448","isMergeCommit":false,"messageTitle":"Added the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":16}}},{"hash":"7edf5c8b5350f36854b4b9968e6202628faf056a","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done and the ability to change the status back to not done.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":3}}},{"hash":"78ea5cc2f5fdbc0723e7cebedf6a5dc145a8abb3","isMergeCommit":false,"messageTitle":"Refactor into shell-style command handling.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":30}}},{"hash":"54aa7101b2dac435afb406eef70204c6547c539e","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks: todos, events, deadlines.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":0}}},{"hash":"021c7f5a5d54e866f130e2806d63efb7d815aa4b","isMergeCommit":false,"messageTitle":"Added automated testing for MacOS.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"sh":{"insertions":2,"deletions":2}}},{"hash":"f7545caaa8551b35c3551465bbabadce246b6061","isMergeCommit":false,"messageTitle":"Added error checking.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":33}}},{"hash":"2f731975776c8cd37e977cdd839d7f02f6ab53c0","isMergeCommit":false,"messageTitle":"Added delete functionality.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"e88ab7570dd349d843171fd8700cb3b6145ea220","isMergeCommit":false,"messageTitle":"Added save and load functionality.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":7}}},{"hash":"1a23bce766e2d8d8621a6dbd2a43fa37d033f49b","isMergeCommit":true,"messageTitle":"Merge branch-Level-7 into master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"4b79f948aeb260c8f708ef688aa70109948a0cf8","isMergeCommit":false,"messageTitle":"Implemented datetime support.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":16}}},{"hash":"bc5d556690353b6cabb4e42be5b66651a89b45ba","isMergeCommit":true,"messageTitle":"Merge branch-Level-8 into master","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"conradsoon":{"java":399,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"conradsoon":16224.813},"authorDisplayNameMap":{"conradsoon":"CS2103T-T13-2 SOON..NRAD"}} +{"authorDailyContributionsMap":{"conradsoon":[{"date":"2023-08-21","commitResults":[{"hash":"daf54a45b11a305a55a82eba646059491ff3c872","isMergeCommit":false,"messageTitle":"Renamed Duke to DeterministicParrot, added basic greeting and goodbye functionality.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":10}}},{"hash":"4da38ea9f2c0efcfc3378edf669802922c9f99b8","isMergeCommit":false,"messageTitle":"Added echo command functionality, added some indentations for responses.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":4}}},{"hash":"3086dfd8b43670728c507983d9031e13bf5ec448","isMergeCommit":false,"messageTitle":"Added the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":16}}},{"hash":"7edf5c8b5350f36854b4b9968e6202628faf056a","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done and the ability to change the status back to not done.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":3}}},{"hash":"78ea5cc2f5fdbc0723e7cebedf6a5dc145a8abb3","isMergeCommit":false,"messageTitle":"Refactor into shell-style command handling.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":30}}},{"hash":"54aa7101b2dac435afb406eef70204c6547c539e","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks: todos, events, deadlines.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":0}}},{"hash":"021c7f5a5d54e866f130e2806d63efb7d815aa4b","isMergeCommit":false,"messageTitle":"Added automated testing for MacOS.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"sh":{"insertions":2,"deletions":2}}},{"hash":"f7545caaa8551b35c3551465bbabadce246b6061","isMergeCommit":false,"messageTitle":"Added error checking.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":33}}},{"hash":"2f731975776c8cd37e977cdd839d7f02f6ab53c0","isMergeCommit":false,"messageTitle":"Added delete functionality.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"e88ab7570dd349d843171fd8700cb3b6145ea220","isMergeCommit":false,"messageTitle":"Added save and load functionality.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":7}}},{"hash":"1a23bce766e2d8d8621a6dbd2a43fa37d033f49b","isMergeCommit":true,"messageTitle":"Merge branch-Level-7 into master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"4b79f948aeb260c8f708ef688aa70109948a0cf8","isMergeCommit":false,"messageTitle":"Implemented datetime support.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":16}}},{"hash":"bc5d556690353b6cabb4e42be5b66651a89b45ba","isMergeCommit":true,"messageTitle":"Merge branch-Level-8 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c539a7c539e1cc7a6eeba6f78d0719a7ab5adc17","isMergeCommit":false,"messageTitle":"Refactored Task, Event, Deadline and Todo into their own classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":86}}},{"hash":"887c8a7759326bb4057053b8eab14eea11ea1570","isMergeCommit":false,"messageTitle":"Took out DeterministicParrotException into its own class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}}]},{"date":"2023-09-01","commitResults":[{"hash":"3baed53c30b1e9d8b0a945303084ea10f0218988","isMergeCommit":false,"messageTitle":"Refactored into Parser, Storage, Tasklist and Ui.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":288,"deletions":202}}},{"hash":"f0960a5b1eb75a693ba2521b39b5d530604bfd80","isMergeCommit":true,"messageTitle":"Merge A-MoreOOP into master","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"7e8aa2678527be2a2ce2312db34d3354226a5a78","isMergeCommit":false,"messageTitle":"Moved into deterministicparrot package.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":3}}},{"hash":"18397cfec5341c6569648963e1ecfb5f858af3f7","isMergeCommit":true,"messageTitle":"Merge branch-A-Packages into master","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"68d053b8b8bcaf2822ef2dc642ef88661de11417","isMergeCommit":false,"messageTitle":"Added gradle support to project.","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"7c11a69f647c297cdee7c1f321ee05a13cbcb131","isMergeCommit":true,"messageTitle":"Merge add-gradle-support into master","messageBody":"","tags":["A-Gradle","A-Grade"],"fileTypesAndContributionMap":{}},{"hash":"77bb8dd7a29cfbf5a29de71ed31fdca0711d4fe4","isMergeCommit":false,"messageTitle":"Add unit tests for Event.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"c2b51b3dd571e123e8cbd551e7bc642600f72384","isMergeCommit":false,"messageTitle":"Add integration test for entire DeterministicParrot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":0}}},{"hash":"a96312291aac95c1fa12d61f6225d5b702bc9429","isMergeCommit":true,"messageTitle":"Merge branch-A-JUnit into master","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"d6ebc70e5edbaebe6ba1db2767dbdd60c0a25dc1","isMergeCommit":false,"messageTitle":"Add shadowJar","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":4,"deletions":1}}},{"hash":"55350bc01ca387f2cf058d9f39b8db44125832b9","isMergeCommit":true,"messageTitle":"Merge branch-A-Jar into master","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"4c0089abcb8b58eb24f76e749a3f70d04a821b96","isMergeCommit":false,"messageTitle":"Added JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":388,"deletions":36}}},{"hash":"d4020c819dade7844b9c9cc37381248215c9c5ef","isMergeCommit":false,"messageTitle":"Add missing access specifiers to constructors.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"e6cc5109f75dee51be1d7aca10c5ef44c3c247d9","isMergeCommit":false,"messageTitle":"Add find command for finding task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":0}}},{"hash":"cad7e4bd9019d8ce33cbdf0e04f5d38eb82ab0ee","isMergeCommit":true,"messageTitle":"Merge branch-A-JavaDoc into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9f5de980d46d4407fce5d4a99300c9c841f6f47e","isMergeCommit":true,"messageTitle":"Merged codingstandard into main.","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ae865983ce1d9a4fed165329b3e01c9750009b29","isMergeCommit":true,"messageTitle":"Merge branch-level-9 into main","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"conradsoon":{"java":1024,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":5,"txt":5}},"authorContributionVariance":{"conradsoon":88750.87},"authorDisplayNameMap":{"conradsoon":"CS2103T-T13-2 SOON..NRAD"}} diff --git a/cxo05_ip_master/authorship.json b/cxo05_ip_master/authorship.json index 77dabaed..b44512cd 100644 --- a/cxo05_ip_master/authorship.json +++ b/cxo05_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"# Horo project template","lastModifiedDate":"2023-08-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"This is a project template for a greenfield Java project. It\u0027s named after a character in Spice and Wolf _Horo_. Given below are instructions on how to use it.","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"1. After that, locate the `src/main/java/Horo.java` file, right-click it, and choose `Run Horo.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" _ _","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" | | | |","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" | |__| | ___ _ __ ___","lastModifiedDate":"2023-08-19"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" | __ |/ _ \\| \u0027__/ _ \\","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" | | | | (_) | | | (_) |","lastModifiedDate":"2023-08-19"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" |_| |_|\\___/|_| \\___/","lastModifiedDate":"2023-08-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"cxo05":9,"-":16}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" mainClass.set(\"horo.Horo\")","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" archiveBaseName \u003d \"horo\"","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"cxo05":2,"-":40}},{"path":"src/main/java/horo/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"public enum Command {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":" BYE(\"^bye\",","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":" \"bye\"),","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":" LIST(\"^list\",","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" \"list\"),","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" MARK(\"^mark ([0-9]+)\",","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" \"mark \u003cnumber\u003e\"),","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" UNMARK(\"^unmark ([0-9]+)\",","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" \"unmark \u003cnumber\u003e\"),","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" DELETE(\"^delete ([0-9]+)\",","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" \"delete \u003cnumber\u003e\"),","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" TODO(\"^todo ([\\\\w ]+)\",","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" \"todo \u003cdescription\u003e\"),","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" DEADLINE(\"^deadline ([\\\\w ]+) \\\\/by (\\\\d{4}/\\\\d{2}/\\\\d{2} \\\\d{2}:\\\\d{2})\",","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" \"deadline \u003cdescription\u003e /by yyyy/mm/dd HH:mm\"),","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" EVENT(\"^event ([\\\\w ]+) \\\\/from (\\\\d{4}/\\\\d{2}/\\\\d{2} \\\\d{2}:\\\\d{2}) \\\\/to (\\\\d{4}/\\\\d{2}/\\\\d{2} \\\\d{2}:\\\\d{2})\",","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" \"event \u003cdescription\u003e /from yyyy/mm/dd HH:mm /to yyyy/mm/dd HH:mm\"),","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" FIND(\"^find ([\\\\w ]+)\",","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" \"find \u003cquery\u003e\");","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" private final Pattern pattern;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" private final String format;","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" private static final Pattern commandPattern \u003d Pattern","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" .compile(\"^(deadline|todo|event|bye|mark|unmark|list|delete|find)\");","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" Command(String regex, String format) {","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" this.pattern \u003d Pattern.compile(regex);","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" this.format \u003d format;","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" * Returns the Command the input string matches","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" * ","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" * @param input Input string","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" * @return Command","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" * @throws HoroException If input does not match any commands","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" public static Command commandParser(String input) throws HoroException {","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" Matcher m \u003d commandPattern.matcher(input);","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" if (!m.find()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Invalid Command\");","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"cxo05"},"content":" String s \u003d m.group(1);","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"cxo05"},"content":" Command c \u003d Command.valueOf(s.toUpperCase());","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"cxo05"},"content":" return c;","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"cxo05"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"cxo05"},"content":" * Returns regex groups of the input as a matcher","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"cxo05"},"content":" * ","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"cxo05"},"content":" * @param input Input string","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"cxo05"},"content":" * @return Matcher","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"cxo05"},"content":" * @throws HoroException If input does not match the regex pattern","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"cxo05"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"cxo05"},"content":" public Matcher getMatcher(String input) throws HoroException {","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"cxo05"},"content":" Matcher m \u003d pattern.matcher(input);","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"cxo05"},"content":" if (!m.find()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Wrong command format\\n\" + format);","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"cxo05"},"content":" return m;","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"cxo05":73}},{"path":"src/main/java/horo/Horo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-19"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.data.Deadline;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import horo.data.Event;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"import horo.data.Todo;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"public class Horo {","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" private Storage storage;","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" private Ui ui;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" private static Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" public Horo(String filePath) {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" taskList \u003d storage.load();","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" public void run() {","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" while (true) {","lastModifiedDate":"2023-08-19"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" System.out.print(\"\u003e\");","lastModifiedDate":"2023-08-19"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-19"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" Matcher m;","lastModifiedDate":"2023-08-19"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" Command command;","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-19"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" command \u003d Command.commandParser(input);","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" m \u003d command.getMatcher(input);","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" } catch (HoroException e) {","lastModifiedDate":"2023-08-19"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-19"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" continue;","lastModifiedDate":"2023-08-19"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" switch (command) {","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" case BYE:","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" exit();","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" case LIST:","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" taskList.showTasks();","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" case MARK:","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" taskList.markTaskDone(Integer.parseInt(m.group(1)) - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":" storage.updateTaskData(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"cxo05"},"content":" case UNMARK:","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"cxo05"},"content":" taskList.markTaskDone(Integer.parseInt(m.group(1)) - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"cxo05"},"content":" storage.updateTaskData(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"cxo05"},"content":" case DELETE:","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"cxo05"},"content":" taskList.removeTask(Integer.parseInt(m.group(1)) - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"cxo05"},"content":" storage.updateTaskData(taskList);","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"cxo05"},"content":" case TODO:","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-19"},{"lineNumber":62,"author":{"gitId":"cxo05"},"content":" taskList.addTask(new Todo(m.group(1)));","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"cxo05"},"content":" } catch (HoroException e) {","lastModifiedDate":"2023-08-19"},{"lineNumber":64,"author":{"gitId":"cxo05"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-19"},{"lineNumber":65,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":67,"author":{"gitId":"cxo05"},"content":" storage.updateTaskData(taskList);","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"cxo05"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-19"},{"lineNumber":71,"author":{"gitId":"cxo05"},"content":" taskList.addTask(new Deadline(m.group(1), m.group(2)));","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"cxo05"},"content":" } catch (HoroException e) {","lastModifiedDate":"2023-08-19"},{"lineNumber":73,"author":{"gitId":"cxo05"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-19"},{"lineNumber":74,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":76,"author":{"gitId":"cxo05"},"content":" storage.updateTaskData(taskList);","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"cxo05"},"content":" case EVENT:","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-19"},{"lineNumber":80,"author":{"gitId":"cxo05"},"content":" taskList.addTask(new Event(m.group(1), m.group(2), m.group(3)));","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"cxo05"},"content":" } catch (HoroException e) {","lastModifiedDate":"2023-08-19"},{"lineNumber":82,"author":{"gitId":"cxo05"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-19"},{"lineNumber":83,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":85,"author":{"gitId":"cxo05"},"content":" storage.updateTaskData(taskList);","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"cxo05"},"content":" case FIND:","lastModifiedDate":"2023-08-26"},{"lineNumber":88,"author":{"gitId":"cxo05"},"content":" taskList.findTask(Arrays.asList(m.group(1).split(\" \")));","lastModifiedDate":"2023-08-26"},{"lineNumber":89,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"cxo05"},"content":" default:","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":93,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":94,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":95,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":96,"author":{"gitId":"cxo05"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-25"},{"lineNumber":97,"author":{"gitId":"cxo05"},"content":" new Horo(\"./data/tasks.txt\").run();","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":100,"author":{"gitId":"cxo05"},"content":" private static void exit() {","lastModifiedDate":"2023-08-22"},{"lineNumber":101,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"cxo05"},"content":" scanner.close();","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"cxo05"},"content":" System.exit(0);","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":105,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":106}},{"path":"src/main/java/horo/HoroException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"public class HoroException extends Exception {","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":" public HoroException(String str) {","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":" super(str);","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":8}},{"path":"src/main/java/horo/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import horo.data.Deadline;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import horo.data.Event;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import horo.data.Task;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import horo.data.Todo;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"public class Parser {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":" public Parser() {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" * Returns a task by parsing string from data file","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" * ","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" * @param s Input string from data file","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" * @return Task","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" * @throws HoroException","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" public static Task parseDataString(String s) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" String[] arguments \u003d s.split(\",\");","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" Task t;","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" switch (arguments[0]) {","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" case \"T\":","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" t \u003d new Todo(arguments[2]);","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" case \"D\":","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" t \u003d new Deadline(arguments[2], arguments[3]);","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" case \"E\":","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" t \u003d new Event(arguments[2], arguments[3], arguments[4]);","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" default:","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Bad Command\");","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" if (arguments[1].equals(\"1\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" t.markDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" return t;","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"cxo05":41}},{"path":"src/main/java/horo/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.io.File;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import horo.data.Task;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"public class Storage {","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" private static final String DEFAULT_STORAGE_FILEPATH \u003d \"./data/tasks.txt\";","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" public final String filePath;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" public Storage() {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" this(DEFAULT_STORAGE_FILEPATH);","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" * Load data file","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" * ","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" * @return TaskList populated from data file","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" public TaskList load() {","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" ArrayList\u003cTask\u003e tList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" File taskFile \u003d new File(filePath);","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" if (!taskFile.exists()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" taskFile.mkdirs();","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" if (taskFile.createNewFile()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" System.out.println(\"File created: \" + taskFile.getName());","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" Scanner scanner \u003d new Scanner(taskFile);","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" tList.add(Parser.parseDataString(data));","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" scanner.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Error writing to file\");","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"cxo05"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"cxo05"},"content":" } catch (HoroException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"cxo05"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"cxo05"},"content":" return new TaskList(tList);","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"cxo05"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"cxo05"},"content":" * Update data file with given taskList","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"cxo05"},"content":" * ","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"cxo05"},"content":" * @param taskList TaskList to be stored in data file","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"cxo05"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"cxo05"},"content":" public void updateTaskData(TaskList taskList) {","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"cxo05"},"content":" FileWriter writer \u003d new FileWriter(filePath, false);","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"cxo05"},"content":" for (Task t : taskList.getTasks()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"cxo05"},"content":" writer.write(t.getDataString() + \"\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"cxo05"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"cxo05"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"cxo05"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"cxo05"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"cxo05":76}},{"path":"src/main/java/horo/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"public class Ui {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":" public Ui() {","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":" String logo \u003d \" _ _ \\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":" + \"| | | |\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" + \"| |__| | ___ _ __ ___\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" + \"| __ |/ _ \\\\| \u0027__/ _ \\\\\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" + \"| | | | (_) | | | (_) |\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" + \"|_| |_|\\\\___/|_| \\\\___/\\n\";","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" String introduction \u003d \"Hello! I\u0027m Horo\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" + \"Usage: \\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" + \" todo \u003cdescription\u003e\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" + \" deadline \u003cdescription\u003e /by \u003ctime\u003e\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" + \" event \u003cdescription\u003e /from \u003ctime\u003e /to \u003ctime\u003e\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" + \" list\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" + \" mark \u003cnumber\u003e\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" + \" unmark \u003cnumber\u003e\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" + \" delete \u003cnumber\u003e\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" + \" bye\\n\";","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" System.out.println(introduction);","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"cxo05":30}},{"path":"src/main/java/horo/data/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.data;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" public Deadline(String description, LocalDateTime deadline) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" public Deadline(String description, String deadline) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" this.deadline \u003d LocalDateTime.parse(deadline, DATE_TIME_FORMAT);","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Wrong Date Time Format\");","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" return \"[D]\"","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" + super.toString()","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" + \" (by: \"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy H:mm\"))","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" public String getDataString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" return \"D,\"","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" + (super.isDone() ? \"1\" : \"0\") + \",\"","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" + super.getDescription() + \",\"","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" + this.deadline.format(DATE_TIME_FORMAT);","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":44}},{"path":"src/main/java/horo/data/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.data;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" public Event(String description, String start, String end) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" this.start \u003d LocalDateTime.parse(start, DATE_TIME_FORMAT);","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" this.end \u003d LocalDateTime.parse(end, DATE_TIME_FORMAT);","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Wrong Date Time Format\");","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" return \"[E]\"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" + super.toString()","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" + \" (from: \"","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" + this.start.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy H:mm\"))","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" + \" to: \"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" + this.end.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy H:mm\"))","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" public String getDataString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" return \"D,\"","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" + (super.isDone() ? \"1\" : \"0\") + \",\"","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" + super.getDescription() + \",\"","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" + start.format(DATE_TIME_FORMAT)","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":" + \",\"","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" + end.format(DATE_TIME_FORMAT);","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":50}},{"path":"src/main/java/horo/data/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.data;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" protected static final DateTimeFormatter DATE_TIME_FORMAT \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" .appendPattern(\"yyyy/MM/dd[ [HH][:mm]]\")","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" .toFormatter();","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" private String description \u003d \"\";","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" public Task(String description) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" if (description \u003d\u003d null || description.isBlank()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Task description cannot be empty\");","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" public void markDone() {","lastModifiedDate":"2023-08-19"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-19"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" public void markNotDone() {","lastModifiedDate":"2023-08-19"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-19"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" public Boolean isDone() {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" return isDone;","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" return this.description;","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" public abstract String getDataString();","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" return (isDone ? \"[X] \" : \"[ ] \") + getDescription();","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":50}},{"path":"src/main/java/horo/data/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.data;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.util.Collection;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import java.util.Collections;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import java.util.Set;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"public class TaskList {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" public TaskList() {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" public void addTask(Task newTask) {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" taskList.add(newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Added: \");","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" System.out.println(newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" public void markTaskDone(int i) {","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" System.out.println(\"No tasks available\");","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" return;","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" taskList.get(i).markDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Task marked as done\");","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Please enter a valid number from 1 - \" + taskList.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" public void markTaskNotDone(int i) {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" System.out.println(\"No tasks available\");","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" return;","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" taskList.get(i).markNotDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Task marked as not done\");","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Please enter a valid number from 1 - \" + taskList.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"cxo05"},"content":" public void removeTask(int i) {","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"cxo05"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"cxo05"},"content":" System.out.println(\"No tasks available\");","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"cxo05"},"content":" return;","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"cxo05"},"content":" Task t \u003d taskList.remove(i);","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Removed task: \");","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"cxo05"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"cxo05"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Please enter a valid number from 1 - \" + taskList.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"cxo05"},"content":" public void findTask(Collection\u003cString\u003e keywords) {","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"cxo05"},"content":" ArrayList\u003cTask\u003e matchedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"cxo05"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"cxo05"},"content":" final Set\u003cString\u003e wordsInDescription \u003d new HashSet\u003c\u003e(Arrays.asList(task.getDescription().split(\" \")));","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"cxo05"},"content":" if (!Collections.disjoint(wordsInDescription, keywords)) {","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"cxo05"},"content":" matchedTasks.add(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"cxo05"},"content":" if (matchedTasks.isEmpty()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"cxo05"},"content":" System.out.println(\"No tasks found\");","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"cxo05"},"content":" return;","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"cxo05"},"content":" for (int i \u003d 0; i \u003c matchedTasks.size(); i++) {","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"cxo05"},"content":" System.out.println((i + 1) + \". \" + matchedTasks.get(i));","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":88,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":89,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"cxo05"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-25"},{"lineNumber":91,"author":{"gitId":"cxo05"},"content":" return taskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":94,"author":{"gitId":"cxo05"},"content":" public void showTasks() {","lastModifiedDate":"2023-08-25"},{"lineNumber":95,"author":{"gitId":"cxo05"},"content":" System.out.println(\"-----Tasks-----\");","lastModifiedDate":"2023-08-25"},{"lineNumber":96,"author":{"gitId":"cxo05"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-25"},{"lineNumber":97,"author":{"gitId":"cxo05"},"content":" System.out.println((i + 1) + \". \" + taskList.get(i));","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":100,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"cxo05":100}},{"path":"src/main/java/horo/data/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.data;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":" public Todo(String description) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" public String getDataString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" return \"T,\" + (super.isDone() ? \"1\" : \"0\") + \",\" + super.getDescription();","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":20}},{"path":"src/test/java/horo/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.data.Deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" @Test","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" public void parse_Deadline_parsedCorrectly() throws Exception {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" final String input \u003d \"D,1,return book,2019/10/15 13:10\";","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" assertEquals(Parser.parseDataString(input).getClass(), Deadline.class);","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"cxo05":17}},{"path":"src/test/java/horo/data/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.data;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" private Task todoTask;","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" private Task deadlineTask;","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" private Task eventTask;","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" private final PrintStream standardOut \u003d System.out;","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" private final ByteArrayOutputStream outputStreamCaptor \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" @BeforeEach","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" public void setUp() throws HoroException {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" todoTask \u003d new Todo(\"Todo Description\");","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" deadlineTask \u003d new Deadline(\"Deadline Description\", \"2023/01/01 13:00\");","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" eventTask \u003d new Event(\"Event Description\", \"2023/01/01 13:00\", \"2023/01/01 15:00\");","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" ArrayList\u003cTask\u003e t \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" t.add(todoTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" t.add(deadlineTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" t.add(eventTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" taskList \u003d new TaskList(t);","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" System.setOut(new PrintStream(outputStreamCaptor));","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" @AfterEach","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" public void tearDown() {","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" System.setOut(standardOut);","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" @Test","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" public void removeTask_taskExists_removesNormally() throws Exception {","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":" int numberOfTasksBeforeRemoval \u003d taskList.getTasks().size();","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"cxo05"},"content":" taskList.removeTask(0);","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"cxo05"},"content":" assertFalse(taskList.getTasks().contains(todoTask));","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"cxo05"},"content":" int numberOfTasksAfterRemoval \u003d taskList.getTasks().size();","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"cxo05"},"content":" assertTrue(numberOfTasksAfterRemoval \u003d\u003d numberOfTasksBeforeRemoval - 1);","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"cxo05"},"content":" @Test","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"cxo05"},"content":" public void markTaskDone_taskExists_markNormally() throws Exception {","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"cxo05"},"content":" taskList.markTaskDone(0);","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"cxo05"},"content":" assertTrue(todoTask.isDone());","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"cxo05"},"content":" @Test","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"cxo05"},"content":" public void markTaskDone_taskNotExists_throwMessage() throws Exception {","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"cxo05"},"content":" taskList.markTaskDone(10);","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"cxo05"},"content":" assertEquals(","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"cxo05"},"content":" \"Please enter a valid number from 1 - \" + taskList.getTasks().size(),","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"cxo05"},"content":" outputStreamCaptor.toString().trim());","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"cxo05":74}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"todo New Todo","lastModifiedDate":"2023-08-19"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"deadline return book /by 2023/10/15 13:10","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"event project meeting /from 2023/10/16 13:00 /to 2023/10/16 16:00","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"mark 1","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"mark 3","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"unmark 1","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"mark 4","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"todo","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"deadline wrong asd asd","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"event wrong /from asd /from asd","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"delete 3","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":"bye","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":15}},{"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":"cxo05"},"content":"java -classpath ..\\bin Horo \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-19"},{"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":{"cxo05":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":"cxo05"},"content":"cd \"$(dirname \"$0\")\"","lastModifiedDate":"2023-08-19"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/horo/*.java","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"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":24,"author":{"gitId":"cxo05"},"content":"java -classpath ../bin Horo \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":"if [ -e \"./data/tasks.txt\" ]","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":"then","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" rm ./data/tasks.txt","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":"fi","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"cxo05":8,"-":36}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"# Horo project template","lastModifiedDate":"2023-08-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"This is a project template for a greenfield Java project. It\u0027s named after a character in Spice and Wolf _Horo_. Given below are instructions on how to use it.","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"1. After that, locate the `src/main/java/Horo.java` file, right-click it, and choose `Run Horo.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" _ _","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" | | | |","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" | |__| | ___ _ __ ___","lastModifiedDate":"2023-08-19"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" | __ |/ _ \\| \u0027__/ _ \\","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" | | | | (_) | | | (_) |","lastModifiedDate":"2023-08-19"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" |_| |_|\\___/|_| \\___/","lastModifiedDate":"2023-08-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"cxo05":9,"-":16}},{"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":"cxo05"},"content":" id \u0027org.openjfx.javafxplugin\u0027 version \u00270.0.13\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"javafx {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" version \u003d \"17.0.1\"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" modules \u003d [ \u0027javafx.controls\u0027, \u0027javafx.fxml\u0027 ]","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","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":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" mainClass.set(\"horo.Horo\")","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" archiveBaseName \u003d \"horo\"","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"cxo05":8,"-":36}},{"path":"settings.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"/*","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":" * This file was generated by the Gradle \u0027init\u0027 task.","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":" * The settings file is used to specify which projects to include in your build.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":" * ","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":" * Detailed information about configuring a multi-project build in Gradle can be found","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":" * in the user guide at https://docs.gradle.org/4.10.2/userguide/multi_project_builds.html","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"rootProject.name \u003d \u0027IP\u0027","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"cxo05":10}},{"path":"src/main/java/horo/Horo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import horo.components.MainWindow;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"public class Horo extends Application {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" public Horo() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" public void start(Stage stage) throws Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Horo.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" Storage s \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setUp(s);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" stage.show();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" launch(args);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":37}},{"path":"src/main/java/horo/HoroException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"public class HoroException extends Exception {","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":" public HoroException(String str) {","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":" super(str);","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":8}},{"path":"src/main/java/horo/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import horo.commands.AddDeadlineCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.commands.AddEventCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import horo.commands.AddTodoCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import horo.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"import horo.commands.DeleteCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"import horo.commands.ExitCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"import horo.commands.FindCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"import horo.commands.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"import horo.commands.MarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":"import horo.commands.UnmarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"import horo.data.Deadline;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"import horo.data.Event;","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":"import horo.data.Task;","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":"import horo.data.Todo;","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":"public class Parser {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" private static final Pattern commandPattern \u003d Pattern","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" .compile(\"^(deadline|todo|event|bye|mark|unmark|list|delete|find)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" public Parser() {","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" * Returns a task by parsing string from data file","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" * ","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" * @param s Input string from data file","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" * @return Task","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" * @throws HoroException","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" public static Task parseDataString(String s) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" String[] arguments \u003d s.split(\",\");","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" Task t;","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" switch (arguments[0]) {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" case \"T\":","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" t \u003d new Todo(arguments[2]);","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" case \"D\":","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" t \u003d new Deadline(arguments[2], arguments[3]);","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" case \"E\":","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":" t \u003d new Event(arguments[2], arguments[3], arguments[4]);","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" default:","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Bad Command\");","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"cxo05"},"content":" if (arguments[1].equals(\"1\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"cxo05"},"content":" t.markDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"cxo05"},"content":" return t;","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"cxo05"},"content":" public static Command parse(String input) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"cxo05"},"content":" Matcher m \u003d commandPattern.matcher(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"cxo05"},"content":" if (!m.find()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Invalid Command\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"cxo05"},"content":" String s \u003d m.group(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"cxo05"},"content":" Command c;","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"cxo05"},"content":" switch (s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"cxo05"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"cxo05"},"content":" c \u003d new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"cxo05"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"cxo05"},"content":" c \u003d new ListCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"cxo05"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"cxo05"},"content":" c \u003d new MarkCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"cxo05"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"cxo05"},"content":" c \u003d new UnmarkCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"cxo05"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"cxo05"},"content":" c \u003d new DeleteCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"cxo05"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"cxo05"},"content":" c \u003d new AddTodoCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"cxo05"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"cxo05"},"content":" c \u003d new AddDeadlineCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"cxo05"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"cxo05"},"content":" c \u003d new AddEventCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"cxo05"},"content":" case \"find\":","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"cxo05"},"content":" c \u003d new FindCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"cxo05"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"cxo05"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Invalid Command\");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"cxo05"},"content":" return c;","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"cxo05":103}},{"path":"src/main/java/horo/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.io.File;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import horo.data.Task;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"public class Storage {","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" private static final String DEFAULT_STORAGE_FILEPATH \u003d \"./data/tasks.txt\";","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" public final String filePath;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" public Storage() {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" this(DEFAULT_STORAGE_FILEPATH);","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" * Load data file","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" * ","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" * @return TaskList populated from data file","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" public TaskList load() {","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" ArrayList\u003cTask\u003e tList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" File taskFile \u003d new File(filePath);","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" if (!taskFile.exists()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" taskFile.mkdirs();","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" if (taskFile.createNewFile()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" System.out.println(\"File created: \" + taskFile.getName());","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" Scanner scanner \u003d new Scanner(taskFile);","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" tList.add(Parser.parseDataString(data));","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" scanner.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Error writing to file\");","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"cxo05"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"cxo05"},"content":" } catch (HoroException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"cxo05"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"cxo05"},"content":" return new TaskList(tList);","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"cxo05"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"cxo05"},"content":" * Update data file with given taskList","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"cxo05"},"content":" * ","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"cxo05"},"content":" * @param taskList TaskList to be stored in data file","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"cxo05"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"cxo05"},"content":" public void updateTaskData(TaskList taskList) {","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"cxo05"},"content":" FileWriter writer \u003d new FileWriter(filePath, false);","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"cxo05"},"content":" for (Task t : taskList.getTasks()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"cxo05"},"content":" writer.write(t.getDataString() + \"\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"cxo05"},"content":" writer.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"cxo05"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"cxo05"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"cxo05"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"cxo05":76}},{"path":"src/main/java/horo/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import horo.components.DialogBox;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"public class Ui {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":" private Image user \u003d new Image(this.getClass().getResourceAsStream(\"/images/profile.jpg\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" public Ui(VBox dialogContainer) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" this.dialogContainer \u003d dialogContainer;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" horoOutput(getWelcome());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" public void userOutput(String output) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" DialogBox.getUserDialog(output, user));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" public void horoOutput(String output) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" DialogBox.getDukeDialog(output, user));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" private String getWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" String logo \u003d \" _ _ \\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" + \"| | | |\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" + \"| |__| | ___ _ __ ___\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" + \"| __ |/ _ \\\\| \u0027__/ _ \\\\\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" + \"| | | | (_) | | | (_) |\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" + \"|_| |_|\\\\___/|_| \\\\___/\\n\";","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" String introduction \u003d \"Hello! I\u0027m Horo\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" + \"Usage: \\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" + \" todo \u003cdescription\u003e\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" + \" deadline \u003cdescription\u003e /by \u003ctime\u003e\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" + \" event \u003cdescription\u003e /from \u003ctime\u003e /to \u003ctime\u003e\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" + \" list\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" + \" mark \u003cnumber\u003e\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" + \" unmark \u003cnumber\u003e\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" + \" delete \u003cnumber\u003e\\n\"","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" + \" bye\\n\";","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" return logo + introduction;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"cxo05"},"content":" public void handleExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"cxo05"},"content":" System.exit(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"cxo05":54}},{"path":"src/main/java/horo/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.util.regex.MatchResult;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import horo.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import horo.data.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" private static final String NAME \u003d \"deadline\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" private static final String REGEX \u003d \"^deadline ([\\\\w ]+) \\\\/by (\\\\d{4}/\\\\d{2}/\\\\d{2} \\\\d{2}:\\\\d{2})\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" private static final String DISPLAY_FORMAT \u003d \"deadline \u003cdescription\u003e /by yyyy/mm/dd HH:mm\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" private String by;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" public AddDeadlineCommand(String input) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" super(NAME, REGEX, DISPLAY_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" MatchResult m \u003d validateAndParse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" description \u003d m.group(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" by \u003d m.group(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" taskList.addTask(new Deadline(description, by));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" storage.updateTaskData(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" ui.horoOutput(\"New Deadline added\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":32}},{"path":"src/main/java/horo/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.util.regex.MatchResult;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import horo.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import horo.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.data.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" private static final String NAME \u003d \"event\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" private static final String REGEX \u003d \"^event ([\\\\w ]+) \\\\/from (\\\\d{4}/\\\\d{2}/\\\\d{2} \\\\d{2}:\\\\d{2}) \\\\/to (\\\\d{4}/\\\\d{2}/\\\\d{2} \\\\d{2}:\\\\d{2})\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" private static final String DISPLAY_FORMAT \u003d \"event \u003cdescription\u003e /from yyyy/mm/dd HH:mm /to yyyy/mm/dd HH:mm\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" private String from;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" private String to;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" public AddEventCommand(String input) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" super(NAME, REGEX, DISPLAY_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" MatchResult m \u003d validateAndParse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" description \u003d m.group(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" from \u003d m.group(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" to \u003d m.group(3);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" taskList.addTask(new Event(description, from, to));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" storage.updateTaskData(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" ui.horoOutput(\"New Event added\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":33}},{"path":"src/main/java/horo/commands/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.util.regex.MatchResult;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import horo.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import horo.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import horo.data.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"public class AddTodoCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" private static final String NAME \u003d \"todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" private static final String REGEX \u003d \"^todo ([\\\\w ]+)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" private static final String DISPLAY_FORMAT \u003d \"todo \u003cdescription\u003e\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" public AddTodoCommand(String input) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" super(NAME, REGEX, DISPLAY_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" MatchResult m \u003d validateAndParse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" description \u003d m.group(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" taskList.addTask(new Todo(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" storage.updateTaskData(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" ui.horoOutput(\"New Todo added\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":29}},{"path":"src/main/java/horo/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.util.regex.MatchResult;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import horo.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import horo.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" protected String name;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" protected String regex;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" protected String displayFormat;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" public Command(String name, String regex, String displayFormat) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" this.regex \u003d regex;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" this.displayFormat \u003d displayFormat;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" * Executes the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" * @param tasks The TaskList to be worked on.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" * @param storage The Storage to be worked on.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" * @throws HoroException Error.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws HoroException;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" public MatchResult validateAndParse(String input) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" Pattern pattern \u003d Pattern.compile(regex);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" Matcher m \u003d pattern.matcher(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" if (!m.find()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Wrong command format\\n\" + displayFormat);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" return m.toMatchResult();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":41}},{"path":"src/main/java/horo/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import horo.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import horo.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":" private static final String NAME \u003d \"delete\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":" private static final String REGEX \u003d \"^delete ([0-9]+)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" private static final String DISPLAY_FORMAT \u003d \"delete \u003cnumber\u003e\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" private Integer index;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" public DeleteCommand(String input) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" super(NAME, REGEX, DISPLAY_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" index \u003d Integer.parseInt(validateAndParse(input).group(1)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" taskList.removeTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" storage.updateTaskData(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" ui.horoOutput(\"Removed task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":26}},{"path":"src/main/java/horo/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import horo.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import horo.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":" private static final String NAME \u003d \"bye\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":" private static final String REGEX \u003d \"^bye\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" private static final String DISPLAY_FORMAT \u003d \"bye\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" public ExitCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" super(NAME, REGEX, DISPLAY_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" ui.horoOutput(\"See U!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" ui.handleExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":21}},{"path":"src/main/java/horo/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.util.regex.MatchResult;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import horo.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import horo.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"import horo.data.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" private static final String NAME \u003d \"find\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" private static final String REGEX \u003d \"^find ([\\\\w ]+)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" private static final String DISPLAY_FORMAT \u003d \"find \u003cquery\u003e\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" private String query;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" public FindCommand(String input) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" super(NAME, REGEX, DISPLAY_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" MatchResult m \u003d validateAndParse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" query \u003d m.group(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" ArrayList\u003cTask\u003e matchedTasks \u003d taskList.findTasks(Arrays.asList(query.split(\" \")));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" if (matchedTasks.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" ui.horoOutput(\"No tasks found\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" StringBuilder sb \u003d new StringBuilder(\"Here are the matching tasks in your list:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" for (int i \u003d 0; i \u003c matchedTasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" sb.append((i + 1) + \". \" + matchedTasks.get(i) + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" ui.horoOutput(sb.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":42}},{"path":"src/main/java/horo/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import horo.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import horo.data.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" private static final String NAME \u003d \"list\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" private static final String REGEX \u003d \"^list\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" private static final String DISPLAY_FORMAT \u003d \"list\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" public ListCommand(String input) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" super(NAME, REGEX, DISPLAY_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" validateAndParse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" StringBuilder sb \u003d new StringBuilder(\"-----Tasks-----\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" ArrayList\u003cTask\u003e tasks \u003d taskList.getTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" sb.append((i + 1) + \". \" + tasks.get(i) + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" ui.horoOutput(sb.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":34}},{"path":"src/main/java/horo/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import horo.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import horo.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":" private static final String NAME \u003d \"mark\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":" private static final String REGEX \u003d \"^mark ([0-9]+)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" private static final String DISPLAY_FORMAT \u003d \"mark \u003cnumber\u003e\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" private Integer index;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" public MarkCommand(String input) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" super(NAME, REGEX, DISPLAY_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" index \u003d Integer.parseInt(validateAndParse(input).group(1)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" taskList.markTaskDone(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" storage.updateTaskData(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" ui.horoOutput(\"Task marked as done\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":26}},{"path":"src/main/java/horo/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import horo.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import horo.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":" private static final String NAME \u003d \"unmark\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":" private static final String REGEX \u003d \"^unmark ([0-9]+)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" private static final String DISPLAY_FORMAT \u003d \"unmark \u003cnumber\u003e\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" private Integer index;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" public UnmarkCommand(String input) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" super(NAME, REGEX, DISPLAY_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" index \u003d Integer.parseInt(validateAndParse(input).group(1)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws HoroException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" taskList.markTaskNotDone(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" storage.updateTaskData(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" ui.horoOutput(\"Task marked as not done\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":26}},{"path":"src/main/java/horo/components/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.components;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" @FXML","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" private Label dialog;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" @FXML","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" private void flip() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" this.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" FXCollections.reverse(tmp);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" this.getChildren().setAll(tmp);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" db.flip();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":" return db;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"cxo05":52}},{"path":"src/main/java/horo/components/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.components;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import horo.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import horo.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import horo.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import horo.data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" @FXML","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" @FXML","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" @FXML","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" @FXML","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" @FXML","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" public void initialize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" public void setUp(Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" this.taskList \u003d storage.load();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" this.ui \u003d new Ui(dialogContainer);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" @FXML","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" ui.userOutput(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"cxo05"},"content":" Command c \u003d Parser.parse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"cxo05"},"content":" c.execute(taskList, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"cxo05"},"content":" } catch (HoroException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"cxo05"},"content":" ui.horoOutput(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"cxo05"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"cxo05"},"content":" e.printStackTrace(System.out);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"cxo05"},"content":" userInput.clear();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":61}},{"path":"src/main/java/horo/data/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.data;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" public Deadline(String description, LocalDateTime deadline) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" public Deadline(String description, String deadline) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" this.deadline \u003d LocalDateTime.parse(deadline, DATE_TIME_FORMAT);","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Wrong Date Time Format\");","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" return \"[D]\"","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" + super.toString()","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" + \" (by: \"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy H:mm\"))","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" public String getDataString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" return \"D,\"","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" + (super.isDone() ? \"1\" : \"0\") + \",\"","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" + super.getDescription() + \",\"","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" + this.deadline.format(DATE_TIME_FORMAT);","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":44}},{"path":"src/main/java/horo/data/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.data;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" public Event(String description, String start, String end) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" this.start \u003d LocalDateTime.parse(start, DATE_TIME_FORMAT);","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" this.end \u003d LocalDateTime.parse(end, DATE_TIME_FORMAT);","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Wrong Date Time Format\");","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" return \"[E]\"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" + super.toString()","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" + \" (from: \"","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" + this.start.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy H:mm\"))","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" + \" to: \"","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" + this.end.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy H:mm\"))","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" public String getDataString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" return \"D,\"","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" + (super.isDone() ? \"1\" : \"0\") + \",\"","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" + super.getDescription() + \",\"","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" + start.format(DATE_TIME_FORMAT)","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":" + \",\"","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" + end.format(DATE_TIME_FORMAT);","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":50}},{"path":"src/main/java/horo/data/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.data;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" protected static final DateTimeFormatter DATE_TIME_FORMAT \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" .appendPattern(\"yyyy/MM/dd[ [HH][:mm]]\")","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" .toFormatter();","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" private String description \u003d \"\";","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" public Task(String description) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" if (description \u003d\u003d null || description.isBlank()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" throw new HoroException(\"Task description cannot be empty\");","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" public void markDone() {","lastModifiedDate":"2023-08-19"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-19"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":" public void markNotDone() {","lastModifiedDate":"2023-08-19"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-19"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" public Boolean isDone() {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" return isDone;","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" return this.description;","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" public abstract String getDataString();","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" return (isDone ? \"[X] \" : \"[ ] \") + getDescription();","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":50}},{"path":"src/main/java/horo/data/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.data;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import java.util.Collection;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"import java.util.Collections;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import java.util.HashSet;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import java.util.Set;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"public class TaskList {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" public TaskList() {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":" public void addTask(Task newTask) {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" taskList.add(newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Added: \");","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" System.out.println(newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" public void markTaskDone(int i) {","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" System.out.println(\"No tasks available\");","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" return;","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" taskList.get(i).markDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Task marked as done\");","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Please enter a valid number from 1 - \" + taskList.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" public void markTaskNotDone(int i) {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" System.out.println(\"No tasks available\");","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" return;","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" taskList.get(i).markNotDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Task marked as not done\");","lastModifiedDate":"2023-08-25"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Please enter a valid number from 1 - \" + taskList.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"cxo05"},"content":" public void removeTask(int i) {","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"cxo05"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"cxo05"},"content":" System.out.println(\"No tasks available\");","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"cxo05"},"content":" return;","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"cxo05"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"cxo05"},"content":" Task t \u003d taskList.remove(i);","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Removed task: \");","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"cxo05"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"cxo05"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"cxo05"},"content":" System.out.println(\"Please enter a valid number from 1 - \" + taskList.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"cxo05"},"content":" public ArrayList\u003cTask\u003e findTasks(Collection\u003cString\u003e keywords) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"cxo05"},"content":" ArrayList\u003cTask\u003e matchedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"cxo05"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"cxo05"},"content":" final Set\u003cString\u003e wordsInDescription \u003d new HashSet\u003c\u003e(Arrays.asList(task.getDescription().split(\" \")));","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"cxo05"},"content":" if (!Collections.disjoint(wordsInDescription, keywords)) {","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"cxo05"},"content":" matchedTasks.add(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"cxo05"},"content":" return matchedTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"cxo05"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"cxo05"},"content":" return taskList;","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"cxo05"},"content":" public void showTasks() {","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"cxo05":88}},{"path":"src/main/java/horo/data/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.data;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":" public Todo(String description) throws HoroException {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" public String getDataString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" return \"T,\" + (super.isDone() ? \"1\" : \"0\") + \",\" + super.getDescription();","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"cxo05":20}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"horo.components.MainWindow\"\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"cxo05":19}},{"path":"src/test/java/horo/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import horo.data.Deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":" @Test","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":" public void parse_Deadline_parsedCorrectly() throws Exception {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":" final String input \u003d \"D,1,return book,2019/10/15 13:10\";","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":" assertEquals(Parser.parseDataString(input).getClass(), Deadline.class);","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"cxo05":17}},{"path":"src/test/java/horo/data/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cxo05"},"content":"package horo.data;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"cxo05"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"cxo05"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"cxo05"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"cxo05"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"cxo05"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"cxo05"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"cxo05"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"cxo05"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"cxo05"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"cxo05"},"content":"import horo.HoroException;","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"cxo05"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"cxo05"},"content":" private Task todoTask;","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"cxo05"},"content":" private Task deadlineTask;","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"cxo05"},"content":" private Task eventTask;","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"cxo05"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"cxo05"},"content":" private final PrintStream standardOut \u003d System.out;","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"cxo05"},"content":" private final ByteArrayOutputStream outputStreamCaptor \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"cxo05"},"content":" @BeforeEach","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"cxo05"},"content":" public void setUp() throws HoroException {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"cxo05"},"content":" todoTask \u003d new Todo(\"Todo Description\");","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"cxo05"},"content":" deadlineTask \u003d new Deadline(\"Deadline Description\", \"2023/01/01 13:00\");","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"cxo05"},"content":" eventTask \u003d new Event(\"Event Description\", \"2023/01/01 13:00\", \"2023/01/01 15:00\");","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"cxo05"},"content":" ArrayList\u003cTask\u003e t \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"cxo05"},"content":" t.add(todoTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"cxo05"},"content":" t.add(deadlineTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"cxo05"},"content":" t.add(eventTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"cxo05"},"content":" taskList \u003d new TaskList(t);","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"cxo05"},"content":" System.setOut(new PrintStream(outputStreamCaptor));","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"cxo05"},"content":" @AfterEach","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"cxo05"},"content":" public void tearDown() {","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"cxo05"},"content":" System.setOut(standardOut);","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"cxo05"},"content":" @Test","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"cxo05"},"content":" public void removeTask_taskExists_removesNormally() throws Exception {","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"cxo05"},"content":" int numberOfTasksBeforeRemoval \u003d taskList.getTasks().size();","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"cxo05"},"content":" taskList.removeTask(0);","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"cxo05"},"content":" assertFalse(taskList.getTasks().contains(todoTask));","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"cxo05"},"content":" int numberOfTasksAfterRemoval \u003d taskList.getTasks().size();","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"cxo05"},"content":" assertTrue(numberOfTasksAfterRemoval \u003d\u003d numberOfTasksBeforeRemoval - 1);","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"cxo05"},"content":" @Test","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"cxo05"},"content":" public void markTaskDone_taskExists_markNormally() throws Exception {","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"cxo05"},"content":" taskList.markTaskDone(0);","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"cxo05"},"content":" assertTrue(todoTask.isDone());","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"cxo05"},"content":" @Test","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"cxo05"},"content":" public void markTaskDone_taskNotExists_throwMessage() throws Exception {","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"cxo05"},"content":" taskList.markTaskDone(10);","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"cxo05"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"cxo05"},"content":" assertEquals(","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"cxo05"},"content":" \"Please enter a valid number from 1 - \" + taskList.getTasks().size(),","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"cxo05"},"content":" outputStreamCaptor.toString().trim());","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"cxo05"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"cxo05"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"cxo05":74}}] diff --git a/cxo05_ip_master/commits.json b/cxo05_ip_master/commits.json index 054b47e2..36331f21 100644 --- a/cxo05_ip_master/commits.json +++ b/cxo05_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"cxo05":[{"date":"2023-08-19","commitResults":[{"hash":"bb2627503fccbb043924fe9537630b4767cab311","isMergeCommit":false,"messageTitle":"Rename ChatBot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":9,"deletions":8}}},{"hash":"2aa285e00525962744331fe3f264324c32bb4c1e","isMergeCommit":false,"messageTitle":"Implement skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"941dcc1616b18a1f4047f8ba646aa185b4a767c0","isMergeCommit":false,"messageTitle":"Implement echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"c3efa5e9979da9f042f6757621ecc0610d1cbfdb","isMergeCommit":false,"messageTitle":"Implement text storing","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}},{"hash":"5af97bf54839efd4360c28f9a67c5cdd83353477","isMergeCommit":false,"messageTitle":"Add mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":37}}},{"hash":"443d29384d81f8c86aa54c44d085669f1d69069c","isMergeCommit":false,"messageTitle":"Add Todo, Events and Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":104,"deletions":31}}},{"hash":"46c1f94ebaf4e3db35138e3161e6a32baa65f295","isMergeCommit":false,"messageTitle":"Add testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"sh":{"insertions":1,"deletions":0}}},{"hash":"0b855270cf60335af0bd0e332154d22306b151db","isMergeCommit":false,"messageTitle":"Handle errors, update tests","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":147,"deletions":64}}},{"hash":"227575b7f04afe82363774b7f47bb76f909d773b","isMergeCommit":false,"messageTitle":"Implement delete, update tests","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":20,"deletions":3}}}]},{"date":"2023-08-22","commitResults":[{"hash":"a79a30edff7c2f5ccc848ba879068e4a18b4821e","isMergeCommit":false,"messageTitle":"Use enums for command parsing","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":159,"deletions":150}}}]},{"date":"2023-08-23","commitResults":[{"hash":"617de7e5c34ea90c7d822585fea3aff8c5c0aba3","isMergeCommit":false,"messageTitle":"Add task file loading and parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":0}}}]},{"date":"2023-08-25","commitResults":[{"hash":"6e1e88e7af02736b8d749f4f921a17fadc3c0570","isMergeCommit":false,"messageTitle":"Update data file when handling tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":18}}},{"hash":"793e2b5aa722be8728211dee0328d68bebefaa9f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"e12dddf93d40aac27c645e4cd995f8065dfb8352","isMergeCommit":false,"messageTitle":"Replace string with LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":23}}},{"hash":"c398ecaacc2663130759d71d1f9f33c782581370","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"42116353a68e2d95375a68acf598f60820c88acf","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":210,"deletions":135}}},{"hash":"9ce9c6dfc3bcad6787e0e84c8809b4ddc13f3398","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"sh":{"insertions":5,"deletions":0}}},{"hash":"43a90717dea153583a2efb00740e56c374c48ef8","isMergeCommit":false,"messageTitle":"Split into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":0}}},{"hash":"baf92480aaa8446137d51384d6d8a0aa891384d6","isMergeCommit":false,"messageTitle":"Update test file path","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"817c0af5777634b49061fef0dbc4b295f1f07ecc","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9678750c8882a02a64bc8d51868965545627c766","isMergeCommit":false,"messageTitle":"Update build.gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":3}}}]},{"date":"2023-08-26","commitResults":[{"hash":"25d1ae3a2a244eb3b43aff09368f5f12fae5b6ed","isMergeCommit":false,"messageTitle":"Implement JUnit tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":94,"deletions":3}}},{"hash":"6358ee34a72dc0db5ddbd8f7da7804ea446ab6e7","isMergeCommit":false,"messageTitle":"Fix task adding not being saved","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"c9a8b4ef19cb6a6473103cc43f49d1818f2153d1","isMergeCommit":false,"messageTitle":"Add some javadocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"94d14bbc22b1451d07b00d7ad36c8c90d252ee6c","isMergeCommit":false,"messageTitle":"Update coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":18}}},{"hash":"9a965b980ccb7b658bb06d60699b04251e38585e","isMergeCommit":false,"messageTitle":"Add find command","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":2}}},{"hash":"a57b372e0744657cc891266fa25422ef1366af17","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b0a4c8fa0d08574150adc4e57182946e2e421cad","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"413001c4675bb85e19b57f48f68f605379866758","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"cxo05":{"java":689,"md":9,"fxml":0,"sh":8,"bat":1,"gradle":2,"txt":15}},"authorContributionVariance":{"cxo05":54710.89},"authorDisplayNameMap":{"cxo05":"CS2103T-W13-3 XAVI..HENG"}} +{"authorDailyContributionsMap":{"cxo05":[{"date":"2023-08-19","commitResults":[{"hash":"bb2627503fccbb043924fe9537630b4767cab311","isMergeCommit":false,"messageTitle":"Rename ChatBot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":9,"deletions":8}}},{"hash":"2aa285e00525962744331fe3f264324c32bb4c1e","isMergeCommit":false,"messageTitle":"Implement skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"941dcc1616b18a1f4047f8ba646aa185b4a767c0","isMergeCommit":false,"messageTitle":"Implement echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"c3efa5e9979da9f042f6757621ecc0610d1cbfdb","isMergeCommit":false,"messageTitle":"Implement text storing","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}},{"hash":"5af97bf54839efd4360c28f9a67c5cdd83353477","isMergeCommit":false,"messageTitle":"Add mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":37}}},{"hash":"443d29384d81f8c86aa54c44d085669f1d69069c","isMergeCommit":false,"messageTitle":"Add Todo, Events and Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":104,"deletions":31}}},{"hash":"46c1f94ebaf4e3db35138e3161e6a32baa65f295","isMergeCommit":false,"messageTitle":"Add testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"sh":{"insertions":1,"deletions":0}}},{"hash":"0b855270cf60335af0bd0e332154d22306b151db","isMergeCommit":false,"messageTitle":"Handle errors, update tests","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":147,"deletions":64}}},{"hash":"227575b7f04afe82363774b7f47bb76f909d773b","isMergeCommit":false,"messageTitle":"Implement delete, update tests","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":20,"deletions":3}}}]},{"date":"2023-08-22","commitResults":[{"hash":"a79a30edff7c2f5ccc848ba879068e4a18b4821e","isMergeCommit":false,"messageTitle":"Use enums for command parsing","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":159,"deletions":150}}}]},{"date":"2023-08-23","commitResults":[{"hash":"617de7e5c34ea90c7d822585fea3aff8c5c0aba3","isMergeCommit":false,"messageTitle":"Add task file loading and parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":0}}}]},{"date":"2023-08-25","commitResults":[{"hash":"6e1e88e7af02736b8d749f4f921a17fadc3c0570","isMergeCommit":false,"messageTitle":"Update data file when handling tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":18}}},{"hash":"793e2b5aa722be8728211dee0328d68bebefaa9f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"e12dddf93d40aac27c645e4cd995f8065dfb8352","isMergeCommit":false,"messageTitle":"Replace string with LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":23}}},{"hash":"c398ecaacc2663130759d71d1f9f33c782581370","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"42116353a68e2d95375a68acf598f60820c88acf","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":210,"deletions":135}}},{"hash":"9ce9c6dfc3bcad6787e0e84c8809b4ddc13f3398","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"sh":{"insertions":5,"deletions":0}}},{"hash":"43a90717dea153583a2efb00740e56c374c48ef8","isMergeCommit":false,"messageTitle":"Split into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":0}}},{"hash":"baf92480aaa8446137d51384d6d8a0aa891384d6","isMergeCommit":false,"messageTitle":"Update test file path","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"817c0af5777634b49061fef0dbc4b295f1f07ecc","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9678750c8882a02a64bc8d51868965545627c766","isMergeCommit":false,"messageTitle":"Update build.gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":3}}}]},{"date":"2023-08-26","commitResults":[{"hash":"25d1ae3a2a244eb3b43aff09368f5f12fae5b6ed","isMergeCommit":false,"messageTitle":"Implement JUnit tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":94,"deletions":3}}},{"hash":"6358ee34a72dc0db5ddbd8f7da7804ea446ab6e7","isMergeCommit":false,"messageTitle":"Fix task adding not being saved","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"c9a8b4ef19cb6a6473103cc43f49d1818f2153d1","isMergeCommit":false,"messageTitle":"Add some javadocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"94d14bbc22b1451d07b00d7ad36c8c90d252ee6c","isMergeCommit":false,"messageTitle":"Update coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":18}}},{"hash":"9a965b980ccb7b658bb06d60699b04251e38585e","isMergeCommit":false,"messageTitle":"Add find command","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":2}}},{"hash":"a57b372e0744657cc891266fa25422ef1366af17","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b0a4c8fa0d08574150adc4e57182946e2e421cad","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"413001c4675bb85e19b57f48f68f605379866758","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"2822b9c8337795c343566371a700fba509fc1324","isMergeCommit":false,"messageTitle":"Remove text UI tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":15},"bat":{"insertions":0,"deletions":21},"sh":{"insertions":0,"deletions":44}}},{"hash":"1770a13c307f9ee72802a2793f7d0c6042196bae","isMergeCommit":false,"messageTitle":"Add javafx to gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":16,"deletions":4},"java":{"insertions":69,"deletions":3}}},{"hash":"8c2a369d1082e2f0d906221842347820d32e66e9","isMergeCommit":false,"messageTitle":"Implement javafx dialogbox","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"8e38b7ab813d2a981e765577fcfae9e1d0dbad3e","isMergeCommit":false,"messageTitle":"Refactor command parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":424,"deletions":201}}},{"hash":"5d75526f797ee2a008c96a1965a70be0d023aa5f","isMergeCommit":false,"messageTitle":"Use fxml and implement their controllers","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":101,"deletions":116}}},{"hash":"cd7a7397eb8bb097c974e61e2e05b678a6e15739","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"cxo05":{"java":1044,"md":9,"fxml":35,"sh":0,"bat":0,"gradle":18,"txt":0}},"authorContributionVariance":{"cxo05":74369.66},"authorDisplayNameMap":{"cxo05":"CS2103T-W13-3 XAVI..HENG"}} diff --git a/derekjxtan_ip_master/authorship.json b/derekjxtan_ip_master/authorship.json index 9a916cfd..c5787f20 100644 --- a/derekjxtan_ip_master/authorship.json +++ b/derekjxtan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"derekjxtan":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"derekjxtan":1,"-":41}},{"path":"data/state.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"todo / 1 / read book","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"deadline / 0 / return book / 2023-06-06 1200","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"event / 0 / project meeting / 2023-08-06 1400 / 2023-08-06 1600","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"todo / 1 / join sports club","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"event / 0 / tutorial / 2023-08-27 1200 / 2023-08-27 1400","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"deadline / 0 / chem homework / 2023-08-06 1600","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"todo / 1 / run","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"derekjxtan":7}},{"path":"src/main/java/duke/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"public enum Command {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":" MARK(\"mark\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":" BYE(\"bye\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" TODO(\"todo\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" DEADLINE(\"deadline\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" EVENT(\"event\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" ON(\"on\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" FIND(\"find\");","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" private final String command;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" private Command(final String command) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" public String getCommand() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" return command;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":25}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" * Date and time that the deadline must be done by","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime by;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the Deadline class.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" * @param name Name of the Deadline.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" * @param by DateTime that the deadline must be completed by.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" public Deadline(String name, LocalDateTime by) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the deadline.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(dateTimeOutputFormatter) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the task to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the deadline to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" public String toSaveStateString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" String[] state \u003d new String[]{ Command.DEADLINE.getCommand(), this.getDone() ? \"1\" : \"0\", this.getTaskName(),","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" this.by.format(Duke.dateTimeInputFormatter) };","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" return String.join(\" / \", state);","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" * Returns whether the event is on a date.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" * @return A boolean representation of whether the event is on a given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" public boolean isOnDate(LocalDate date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" return date.isEqual(this.by.toLocalDate());","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":55}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" private UI ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" private static final String NAME \u003d \"DEREK\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" private static final String DATETIME_INPUT_FORMAT \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" public static final DateTimeFormatter dateTimeInputFormatter \u003d DateTimeFormatter.ofPattern(DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" this.ui \u003d new UI(NAME);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" this.tasks \u003d new TaskList(storage.loadData());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" ui.printLoadingErrorMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" ui.printWelcomeMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" String input;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" input \u003d ui.readCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cString\u003e parsedInput \u003d Parser.parseUserInput(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" String command \u003d parsedInput.get(0);","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" if (command.equals(Command.MARK.getCommand())) {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" int index \u003d Integer.parseInt(parsedInput.get(1)) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d tasks.mark(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" ui.printTaskMarkedMessage(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" tasks.saveState(storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" if (command.equals(Command.UNMARK.getCommand())) {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" int index \u003d Integer.parseInt(parsedInput.get(1)) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d tasks.unmark(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" ui.printTaskUnmarkedMessage(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" tasks.saveState(storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" if (command.equals(Command.LIST.getCommand())) {","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" tasks.printContents();","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" if (command.equals(Command.BYE.getCommand())) {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" ui.printGoodbyeMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" ui.closeUi();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" if (command.equals(Command.TODO.getCommand())) {","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" ToDo newTodo \u003d new ToDo(parsedInput.get(1));","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d tasks.add(newTodo);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":" ui.printTaskAddedMessage(task, tasks.getTaskCount());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" tasks.saveState(storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":" if (command.equals(Command.DEADLINE.getCommand())) {","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"derekjxtan"},"content":" Deadline newDeadline \u003d new Deadline(parsedInput.get(1),","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(parsedInput.get(2), dateTimeInputFormatter));","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d tasks.add(newDeadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"derekjxtan"},"content":" ui.printTaskAddedMessage(task, tasks.getTaskCount());","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"derekjxtan"},"content":" tasks.saveState(storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"derekjxtan"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"derekjxtan"},"content":" if (command.equals(Command.EVENT.getCommand())) {","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"derekjxtan"},"content":" Event newEvent \u003d new Event(parsedInput.get(1),","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(parsedInput.get(2), dateTimeInputFormatter),","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(parsedInput.get(3), dateTimeInputFormatter));","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d tasks.add(newEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"derekjxtan"},"content":" ui.printTaskAddedMessage(task, tasks.getTaskCount());","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"derekjxtan"},"content":" tasks.saveState(storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"derekjxtan"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"derekjxtan"},"content":" if (command.equals(Command.DELETE.getCommand())) {","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"derekjxtan"},"content":" int index \u003d Integer.parseInt(parsedInput.get(1)) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d tasks.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"derekjxtan"},"content":" ui.printTaskDeletedMessage(task, tasks.getTaskCount());","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"derekjxtan"},"content":" tasks.saveState(storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"derekjxtan"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"derekjxtan"},"content":" if (command.equals(Command.ON.getCommand())) {","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"derekjxtan"},"content":" LocalDate date \u003d LocalDate.parse(parsedInput.get(1));","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cTask\u003e tasksOnDate \u003d tasks.getTasksOn(date);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"derekjxtan"},"content":" ui.printTasksOn(tasksOnDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"derekjxtan"},"content":" continue;","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"derekjxtan"},"content":" if (command.equals(Command.FIND.getCommand())) {","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cTask\u003e tasksContainingKeyword \u003d tasks.getTasksContainingKeyword(parsedInput.get(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"derekjxtan"},"content":" ui.printTasksMatching(tasksContainingKeyword);","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"derekjxtan"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"derekjxtan"},"content":" } catch (InvalidCommandException | StorageException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"derekjxtan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":111,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"derekjxtan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"derekjxtan"},"content":" new Duke(\"./data/state.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"derekjxtan":112,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":" public DukeException(String msg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":" super(msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":7}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" * Date and time that the event starts.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime from;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * Date and time that the event ends.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime to;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the Deadline class.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" * @param name Name of the Deadline.","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" * @param from DateTime that the event starts.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" * @param from DateTime that the event ends.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" public Event(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(dateTimeOutputFormatter)","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" + \" to: \" + this.to.format(dateTimeOutputFormatter) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the event to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" public String toSaveStateString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" String[] state \u003d new String[]{ Command.EVENT.getCommand(), this.getDone() ? \"1\" : \"0\", this.getTaskName(),","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" this.from.format(Duke.dateTimeInputFormatter), this.to.format(Duke.dateTimeInputFormatter) };","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" return String.join(\" / \", state);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" public boolean isOnDate(LocalDate date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" return date.isEqual(this.from.toLocalDate()) || date.isEqual(this.to.toLocalDate()) ||","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" (date.isAfter(this.from.toLocalDate()) \u0026\u0026 date.isBefore(this.to.toLocalDate()));","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":59}},{"path":"src/main/java/duke/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"public class InvalidCommandException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":" public InvalidCommandException(String msg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":" super(msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":7}},{"path":"src/main/java/duke/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"public class InvalidTaskException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":" public InvalidTaskException(String msg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":" super(msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":7}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.util.Collections;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" private static final String DELIMITER_COMMAND \u003d \" \";","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" private static final String DELIMITER_DATE \u003d \" /\";","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" private static final String DELIMITER_INPUT \u003d \" / \";","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * Returns parsed input from the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" * @param input Input from user.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" * @throws InvalidCommandException If the input is not of the recognised form.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" public static ArrayList\u003cString\u003e parseUserInput(String input) throws InvalidCommandException {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cString\u003e parsedInput\u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" String[] splitInputByDateDelimiter \u003d input.split(DELIMITER_DATE);","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 1; i \u003c splitInputByDateDelimiter.length; i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" String[] split \u003d splitInputByDateDelimiter[i].split(DELIMITER_COMMAND);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Invalid input for date\");","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" splitInputByDateDelimiter[i] \u003d String.join(\" \", Arrays.copyOfRange(split, 1, split.length));","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" String commandString \u003d splitInputByDateDelimiter[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" String[] splitCommandStringByCommandDelimiter \u003d commandString.split(DELIMITER_COMMAND);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" String command \u003d splitCommandStringByCommandDelimiter[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" parsedInput.add(command);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" if (splitCommandStringByCommandDelimiter.length \u003e 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" String commandInput \u003d String.join(\" \", Arrays.copyOfRange(splitCommandStringByCommandDelimiter,","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" 1, splitCommandStringByCommandDelimiter.length));","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" parsedInput.add(commandInput);","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" Collections.addAll(parsedInput, Arrays.copyOfRange(splitInputByDateDelimiter, 1,","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" splitInputByDateDelimiter.length));","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" return parsedInput;","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" * Returns parsed input from the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" * @param input Input from file.","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" * @throws InvalidCommandException If the input is not of the recognised form.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" public static ArrayList\u003cString\u003e parseFileInput(String input) throws InvalidCommandException {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cString\u003e parsedInput \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" String[] split \u003d input.split(DELIMITER_INPUT);","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" Collections.addAll(parsedInput, split);","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" return parsedInput;","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"derekjxtan":62}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":"public class Storage {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" /** Relative path of the location of the file that stores the data **/","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the Storage class.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" * @param filePath Relative path of the file that stores the data.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" * Saves data to the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" * @param data ArrayList of the string representation of the data to be stored.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" * @throws IOException If the named file exists but is a directory rather than a regular file, does not exist","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" * but cannot be created, or cannot be opened for any other reason","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" public void saveData(ArrayList\u003cString\u003e data) throws StorageException {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" String[] splitFilePath \u003d filePath.split(\"/\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" String directories \u003d String.join(\"/\", Arrays.copyOfRange(splitFilePath, 0,","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" splitFilePath.length - 1));","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" File dir \u003d new File(directories);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" if (!dir.mkdirs()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" throw new StorageException(\"Error Saving data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c data.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" fw.write(data.get(i) + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" throw new StorageException(\"Error Saving data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" * Returns the data stored in the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" * @returns Stored Data","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" * @throws FileNotFoundException If the named file does not exist","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" public ArrayList\u003cString\u003e loadData() throws FileNotFoundException {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cString\u003e data \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" data.add(line);","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"derekjxtan"},"content":" return data;","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"derekjxtan":73}},{"path":"src/main/java/duke/StorageException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"public class StorageException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":" public StorageException(String msg) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":" super(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"derekjxtan":7}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" * Name of task.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" private String taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * Boolean to track whether the task has been marked as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" * format of output.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" private static final String DATETIME_OUTPUT_FORMAT \u003d \"dd-MM-yyyy HH:mm\";","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" * Formatter object to format output.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" public static final DateTimeFormatter dateTimeOutputFormatter \u003d DateTimeFormatter.ofPattern(DATETIME_OUTPUT_FORMAT);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the task class.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" * Tasks are initialised as not done.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" * @param name Name of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" this.taskName \u003d name;","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" * Marks the task as undone.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" return \"[X] \" + taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" return \"[ ] \" + taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the task to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the task to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"derekjxtan"},"content":" public abstract String toSaveStateString();","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"derekjxtan"},"content":" * Returns the done state of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"derekjxtan"},"content":" * @return A boolean representation of whether the task is done.","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"derekjxtan"},"content":" public boolean getDone() {","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"derekjxtan"},"content":" return this.isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"derekjxtan"},"content":" * Returns the name of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"derekjxtan"},"content":" * @return The name of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"derekjxtan"},"content":" public String getTaskName() {","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"derekjxtan"},"content":" return this.taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"derekjxtan"},"content":" * Returns whether the task contains a keyword.","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"derekjxtan"},"content":" * @return A boolean representation of whether the task contains a keyword.","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"derekjxtan"},"content":" public boolean containsKeyword(String keyword) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"derekjxtan"},"content":" if (this.taskName.contains(keyword)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"derekjxtan"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"derekjxtan"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"derekjxtan"},"content":" * Returns whether the task is on a date.","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"derekjxtan"},"content":" * @return A boolean representation of whether the task is on a given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"derekjxtan"},"content":" public abstract boolean isOnDate(LocalDate date);","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"derekjxtan":110}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"public class TaskList {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" private static final String DATETIME_INPUT_FORMAT \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" private static final DateTimeFormatter dateTimeInputFormatter \u003d DateTimeFormatter.ofPattern(DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the TaskList class.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" * @param storedData Data stored in a file.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" public TaskList(ArrayList\u003cString\u003e storedData) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" loadState(storedData);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the TaskList class.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" public TaskList() {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" * Returns the total number of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" * @return Total number of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" * Adds a task to the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" * @return Task added to the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" public Task add(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" * Removes a task to the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" * @param index Index of the task to remove.","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" * @return Task removed from the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" * @throws InvalidCommandException If the provided index is out of range.","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" public Task remove(int index) throws InvalidCommandException {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" if (!isTaskValid(index)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"☹ OOPS!!! The task index in invalid\");","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d this.tasks.remove(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" * Prints all tasks in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":" public void printContents() {","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"derekjxtan"},"content":" System.out.println((i + 1) + \".\" + this.tasks.get(i));","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"derekjxtan"},"content":" * Return a list tasks on a given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"derekjxtan"},"content":" * @param date Date of interest to search for.","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"derekjxtan"},"content":" * @return List of tasks on the given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"derekjxtan"},"content":" public ArrayList\u003cTask\u003e getTasksOn(LocalDate date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cTask\u003e tasksOn \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"derekjxtan"},"content":" if (this.tasks.get(i).isOnDate(date)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"derekjxtan"},"content":" tasksOn.add(this.tasks.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"derekjxtan"},"content":" return tasksOn;","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"derekjxtan"},"content":" * Return a list tasks on a given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"derekjxtan"},"content":" * @param keyword The keyword to match with in the task name.","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"derekjxtan"},"content":" * @return List of tasks on the given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"derekjxtan"},"content":" public ArrayList\u003cTask\u003e getTasksContainingKeyword(String keyword) {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cTask\u003e tasksOn \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"derekjxtan"},"content":" if (this.tasks.get(i).containsKeyword(keyword)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"derekjxtan"},"content":" tasksOn.add(this.tasks.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"derekjxtan"},"content":" return tasksOn;","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"derekjxtan"},"content":" * Marks a task to in the list as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"derekjxtan"},"content":" * @param index Index of the task to mark.","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"derekjxtan"},"content":" * @return Task marked in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"derekjxtan"},"content":" * @throws InvalidCommandException If the provided index is out of range.","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"derekjxtan"},"content":" public Task mark(int index) throws InvalidCommandException {","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"derekjxtan"},"content":" if (!isTaskValid(index)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"☹ OOPS!!! The task index in invalid\");","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d this.tasks.get(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"derekjxtan"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"derekjxtan"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"derekjxtan"},"content":" * Unmarks a task to in the list as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"derekjxtan"},"content":" * @param index Index of the task to unmark.","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"derekjxtan"},"content":" * @return Task unmarked in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"derekjxtan"},"content":" * @throws InvalidCommandException If the provided index is out of range.","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"derekjxtan"},"content":" public Task unmark(int index) throws InvalidCommandException {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"derekjxtan"},"content":" if (!isTaskValid(index)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"☹ OOPS!!! The task index in invalid\");","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d this.tasks.get(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"derekjxtan"},"content":" task.markAsUndone();","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"derekjxtan"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"derekjxtan"},"content":" * Saves the tasks to a file.","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"derekjxtan"},"content":" * @param storage storage object to save the tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"derekjxtan"},"content":" public void saveState(Storage storage) throws StorageException {","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cString\u003e stringRepresentation \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":147,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":148,"author":{"gitId":"derekjxtan"},"content":" stringRepresentation.add(this.tasks.get(i).toSaveStateString());","lastModifiedDate":"2023-08-28"},{"lineNumber":149,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":150,"author":{"gitId":"derekjxtan"},"content":" storage.saveData(stringRepresentation);","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":152,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"derekjxtan"},"content":" * Loads the tasks from a file.","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"derekjxtan"},"content":" * @param storedData data stored in a file.","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"derekjxtan"},"content":" private void loadState(ArrayList\u003cString\u003e storedData) {","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c storedData.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":160,"author":{"gitId":"derekjxtan"},"content":" String[] taskArray \u003d storedData.get(i).split(\" / \");","lastModifiedDate":"2023-08-28"},{"lineNumber":161,"author":{"gitId":"derekjxtan"},"content":" Task task;","lastModifiedDate":"2023-08-28"},{"lineNumber":162,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":163,"author":{"gitId":"derekjxtan"},"content":" if (taskArray[0].equals(Command.TODO.getCommand())) {","lastModifiedDate":"2023-08-28"},{"lineNumber":164,"author":{"gitId":"derekjxtan"},"content":" task \u003d new ToDo(taskArray[2]);","lastModifiedDate":"2023-08-28"},{"lineNumber":165,"author":{"gitId":"derekjxtan"},"content":" } else if (taskArray[0].equals(Command.DEADLINE.getCommand())) {","lastModifiedDate":"2023-08-28"},{"lineNumber":166,"author":{"gitId":"derekjxtan"},"content":" task \u003d new Deadline(taskArray[2], LocalDateTime.parse(taskArray[3], dateTimeInputFormatter));","lastModifiedDate":"2023-08-28"},{"lineNumber":167,"author":{"gitId":"derekjxtan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":168,"author":{"gitId":"derekjxtan"},"content":" task \u003d new Event(taskArray[2], LocalDateTime.parse(taskArray[3], dateTimeInputFormatter),","lastModifiedDate":"2023-08-28"},{"lineNumber":169,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(taskArray[4], dateTimeInputFormatter));","lastModifiedDate":"2023-08-28"},{"lineNumber":170,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":171,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":172,"author":{"gitId":"derekjxtan"},"content":" if (taskArray[1].equals(\"1\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":173,"author":{"gitId":"derekjxtan"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":174,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":175,"author":{"gitId":"derekjxtan"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":176,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":177,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Successfully loaded saved state\");","lastModifiedDate":"2023-08-28"},{"lineNumber":178,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":179,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":180,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"derekjxtan"},"content":" * Checks if a index is valid.","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"derekjxtan"},"content":" * @param index Index of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"derekjxtan"},"content":" * @return A boolean representation of whether the index is valid.","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"derekjxtan"},"content":" private boolean isTaskValid(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":187,"author":{"gitId":"derekjxtan"},"content":" return index \u003e\u003d 0 \u0026\u0026 index \u003c this.tasks.size();","lastModifiedDate":"2023-08-28"},{"lineNumber":188,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":189,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"derekjxtan":189}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the ToDo class.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" * @param name Name of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" public ToDo(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the todo.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the task to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the todo to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" public String toSaveStateString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" String[] state \u003d new String[]{ Command.TODO.getCommand(), this.getDone() ? \"1\" : \"0\", this.getTaskName() };","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" return String.join(\" / \", state);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" * Returns whether the task is on a date.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" * @return A boolean representation of whether the task is on a given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" public boolean isOnDate(LocalDate date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":45}},{"path":"src/main/java/duke/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"public class UI {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" private String name;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the UI class.","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * @param name Name of the chatbot.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" public UI(String name) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" * Reads and returns user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" * @return User input.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" return line;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" * Prints a welcome message.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" public void printWelcomeMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Hello! I\u0027m \" + this.name);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" * Prints a goodbye message.","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" public void printGoodbyeMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" * Prints a task added message.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" * @param task Task added.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" * @param taskCount Total number of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" public void printTaskAddedMessage(Task task, int taskCount) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" this.printTaskCount(taskCount);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" * Prints a task deleted message.","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" * @param task Task deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" * @param taskCount Total number of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" public void printTaskDeletedMessage(Task task, int taskCount) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" this.printTaskCount(taskCount);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"derekjxtan"},"content":" * Prints a task marked message.","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"derekjxtan"},"content":" * @param task Task marked.","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"derekjxtan"},"content":" public void printTaskMarkedMessage(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"derekjxtan"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"derekjxtan"},"content":" * Prints a task unmarked message.","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"derekjxtan"},"content":" * @param task Task unmarked.","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"derekjxtan"},"content":" public void printTaskUnmarkedMessage(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"derekjxtan"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"derekjxtan"},"content":" * Prints the tasks on a date.","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks on a date","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"derekjxtan"},"content":" public void printTasksOn(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"derekjxtan"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"derekjxtan"},"content":" * Prints the tasks matching a keyword.","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks matching a keyword","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"derekjxtan"},"content":" public void printTasksMatching(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"derekjxtan"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"derekjxtan"},"content":" * Prints a loading error message.","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"derekjxtan"},"content":" public void printLoadingErrorMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Stored data could not be loaded\");","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"derekjxtan"},"content":" * Closes scanner object used to read input","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"derekjxtan"},"content":" public void closeUi() {","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"derekjxtan"},"content":" this.scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"derekjxtan"},"content":" * Prints a task count message.","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"derekjxtan"},"content":" * @param taskCount Total number of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"derekjxtan"},"content":" private void printTaskCount(int taskCount) {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Now you have \" + taskCount + (taskCount \u003d\u003d 1 ? \" task\" : \" tasks\") + \" in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"derekjxtan":135}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" public void parseUserInput_validInput_success() throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new ArrayList\u003c\u003e(Arrays.asList(\"list\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"list\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new ArrayList\u003c\u003e(Arrays.asList(\"mark\", \"2\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"mark 2\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new ArrayList\u003c\u003e(Arrays.asList(\"unmark\", \"3\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"unmark 3\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new ArrayList\u003c\u003e(Arrays.asList(\"todo\", \"run\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"todo run\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new ArrayList\u003c\u003e(Arrays.asList(\"deadline\", \"chemistry homework\", \"2023-10-26 15:30\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"deadline chemistry homework /by 2023-10-26 15:30\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new ArrayList\u003c\u003e(Arrays.asList(\"event\", \"movie screening\", \"2023-11-16 18:00\", \"2023-11-16 20:00\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"event movie screening /from 2023-11-16 18:00 /to 2023-11-16 20:00\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new ArrayList\u003c\u003e(Arrays.asList(\"on\", \"2023-08-30\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"on 2023-08-30\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new ArrayList\u003c\u003e(Arrays.asList(\"delete\", \"1\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"delete 1\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" public void parseUserInput_invalidDate_exceptionThrown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new ArrayList\u003c\u003e(Arrays.asList(\"event\", \"movie screening\", \"2023-11-16\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"event movie screening /from /to 2023-11-16\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" assertEquals(\"Invalid input for date\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new ArrayList\u003c\u003e(Arrays.asList(\"event\", \"movie screening\", \"2023-11-16\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"event movie screening /from 2023-11-16 /to\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" assertEquals(\"Invalid input for date\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"derekjxtan":59}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" private static final String DATETIME_INPUT_FORMAT \u003d \"yyyy-MM-dd HH:mm\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" public static final DateTimeFormatter dateTimeInputFormatter \u003d DateTimeFormatter.ofPattern(DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" public void remove_indexWithinRange_success() throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" Deadline deadline \u003d new Deadline(\"chemistry homework\",","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(\"2023-08-15 18:00\", dateTimeInputFormatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" ToDo todo \u003d new ToDo(\"read book\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" Event event \u003d new Event(\"marathon\", LocalDateTime.parse(\"2023-08-16 05:00\", dateTimeInputFormatter),","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(\"2023-08-16 07:00\", dateTimeInputFormatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" assertEquals(todo, tasks.remove(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" assertEquals(deadline, tasks.remove(0));","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" assertEquals(event, tasks.remove(0));","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" public void remove_indexOutOfRange_exceptionThrown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" Deadline deadline \u003d new Deadline(\"chemistry homework\",","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(\"2023-08-15 18:00\", dateTimeInputFormatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" ToDo todo \u003d new ToDo(\"read book\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" Event event \u003d new Event(\"marathon\", LocalDateTime.parse(\"2023-08-16 05:00\", dateTimeInputFormatter),","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(\"2023-08-16 07:00\", dateTimeInputFormatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" assertEquals(todo, tasks.remove(5));","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" assertEquals(\"☹ OOPS!!! The task index in invalid\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" assertEquals(todo, tasks.remove(3));","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" assertEquals(\"☹ OOPS!!! The task index in invalid\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" assertEquals(todo, tasks.remove(-1));","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":" assertEquals(\"☹ OOPS!!! The task index in invalid\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"derekjxtan":69}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":"deadline math homework","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"deadline /by Jan 2nd","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":"event","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":"event marathon","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":"event marathon /from: 3pm","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":"event /from: 3pm /to: 7pm","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":"delete 3","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":"delete 3","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":22}},{"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":"derekjxtan"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"derekjxtan":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"derekjxtan":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"derekjxtan":1,"-":41}},{"path":"data/state.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"todo / 1 / read book","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"deadline / 0 / return book / 2023-06-06 1200","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"event / 0 / project meeting / 2023-08-06 1400 / 2023-08-06 1600","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"todo / 1 / join sports club","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"event / 0 / tutorial / 2023-08-27 1200 / 2023-08-27 1400","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"deadline / 0 / chem homework / 2023-08-06 1600","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"todo / 1 / run","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"derekjxtan":7}},{"path":"src/main/java/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" * Command to add a todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" public static final String COMMAND_ADD_TODO \u003d \"todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" * Command to add a deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" public static final String COMMAND_ADD_DEADLINE \u003d \"deadline\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" * Command to add an event.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" public static final String COMMAND_ADD_EVENT \u003d \"event\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" * Format of input.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" private static final String DATETIME_INPUT_FORMAT \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" * Formatter object to format user datetime inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" public static final DateTimeFormatter dateTimeInputFormatter \u003d DateTimeFormatter.ofPattern(DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the Add Command class.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" * @param params Parsed user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" public AddCommand(ArrayList\u003cString\u003e params) throws InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" super(params);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" if (params.get(0).equals(COMMAND_ADD_TODO)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" if (params.size() !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Add todo command format is wrong\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" if (params.get(0).equals(COMMAND_ADD_DEADLINE)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" if (params.size() !\u003d 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Add deadline command format is wrong\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" if (params.get(0).equals(COMMAND_ADD_EVENT)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" if (params.size() !\u003d 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Add event command format is wrong\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" * Executes the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" * @param ui UI of the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" * @param storage Object to handle data storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" * @throws DukeException If error encountered when saving data.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":" public void execute(TaskList tasks, UI ui, Storage storage) throws StorageException {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":" switch (super.params.get(0)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" case AddCommand.COMMAND_ADD_TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" ToDo newTodo \u003d new ToDo(params.get(1));","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d tasks.add(newTodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":" ui.printTaskAddedMessage(task, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"derekjxtan"},"content":" tasks.saveState(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"derekjxtan"},"content":" case AddCommand.COMMAND_ADD_DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"derekjxtan"},"content":" Deadline newDeadline \u003d new Deadline(params.get(1),","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(params.get(2), dateTimeInputFormatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"derekjxtan"},"content":" task \u003d tasks.add(newDeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"derekjxtan"},"content":" ui.printTaskAddedMessage(task, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"derekjxtan"},"content":" tasks.saveState(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"derekjxtan"},"content":" case AddCommand.COMMAND_ADD_EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"derekjxtan"},"content":" Event newEvent \u003d new Event(params.get(1),","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(params.get(2), dateTimeInputFormatter),","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(params.get(3), dateTimeInputFormatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"derekjxtan"},"content":" task \u003d tasks.add(newEvent);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"derekjxtan"},"content":" ui.printTaskAddedMessage(task, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"derekjxtan"},"content":" tasks.saveState(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"derekjxtan"},"content":" * Returns a boolean representing whether the command requires the application to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"derekjxtan"},"content":" * @return Boolean representing whether the command exits the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"derekjxtan"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"derekjxtan"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"derekjxtan":100}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import duke.UI;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" * Parsed form of user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" protected ArrayList\u003cString\u003e params;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the Command class.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" * @param params Parsed user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" public Command(ArrayList\u003cString\u003e params) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" this.params \u003d params;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" * Executes the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" * @param ui UI of the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" * @param storage Object to handle data storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" * @throws DukeException If error is encountered during execution","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" public abstract void execute(TaskList tasks, UI ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" * Returns a boolean representing whether the command requires the application to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" * @return Boolean representing whether the command exits the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" if (!(o instanceof Command)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" return params.equals(((Command) o).params);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"derekjxtan":49}},{"path":"src/main/java/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" * Command to delete a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" public static final String COMMAND_DELETE \u003d \"delete\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the DeleteCommand class.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" * @param params Parsed user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" public DeleteCommand(ArrayList\u003cString\u003e params) throws InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" super(params);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" if (params.size() !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Add todo command format is wrong\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" * Executes the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" * @param ui UI of the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" * @param storage Object to handle data storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" * @throws DukeException If index is out of range.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" public void execute(TaskList tasks, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" int index \u003d Integer.parseInt(params.get(1)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" ui.printTaskDeletedMessage(task, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" tasks.saveState(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" * Returns a boolean representing whether the command requires the application to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" * @return Boolean representing whether the command exits the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"derekjxtan":50}},{"path":"src/main/java/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import duke.UI;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" * Command to exit the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" public static final String COMMAND_EXIT \u003d \"bye\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the ExitCommand class.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" * @param params Parsed user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" public ExitCommand(ArrayList\u003cString\u003e params) throws InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" super(params);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" if (params.size() !\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Add todo command format is wrong\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" * Executes the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" * @param ui UI of the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" * @param storage Object to handle data storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" public void execute(TaskList tasks, UI ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" ui.printGoodbyeMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" ui.closeUi();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" * Returns a boolean representing whether the command requires the application to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" * @return Boolean representing whether the command exits the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"derekjxtan":50}},{"path":"src/main/java/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"public class FindCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" * Command to fina tasks by keywords.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" public static final String COMMAND_FIND \u003d \"find\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the FindCommand class.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" * @param params Parsed user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" public FindCommand(ArrayList\u003cString\u003e params) throws InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" super(params);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" if (params.size() !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Add todo command format is wrong\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" * Executes the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" * @param ui UI of the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" * @param storage Object to handle data storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" public void execute(TaskList tasks, UI ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cTask\u003e tasksContainingKeyword \u003d tasks.getTasksContainingKeyword(params.get(1));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" ui.printTasksMatching(tasksContainingKeyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" * Returns a boolean representing whether the command requires the application to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" * @return Boolean representing whether the command exits the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"derekjxtan":47}},{"path":"src/main/java/command/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":" public InvalidCommandException(String msg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":" super(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"derekjxtan":9}},{"path":"src/main/java/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import duke.UI;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" * Command to list all tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" public static final String COMMAND_LIST \u003d \"list\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the ListCommand class.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" * @param params Parsed user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" public ListCommand(ArrayList\u003cString\u003e params) throws InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" super(params);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" if (params.size() !\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Add todo command format is wrong\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" * Executes the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" * @param ui UI of the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" * @param storage Object to handle data storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" public void execute(TaskList tasks, UI ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" tasks.printContents();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" * Returns a boolean representing whether the command requires the application to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" * @return Boolean representing whether the command exits the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"derekjxtan":49}},{"path":"src/main/java/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" * Command to mark a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" public static final String COMMAND_MARK \u003d \"mark\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the MarkCommand class.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" * @param params Parsed user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" public MarkCommand(ArrayList\u003cString\u003e params) throws InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" super(params);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" if (params.size() !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Add todo command format is wrong\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" * Executes the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" * @param ui UI of the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" * @param storage Object to handle data storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" * @throws DukeException If error encountered when saving data.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" public void execute(TaskList tasks, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" int index \u003d Integer.parseInt(params.get(1)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d tasks.mark(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" ui.printTaskMarkedMessage(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" tasks.saveState(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" * Returns a boolean representing whether the command requires the application to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" * @return Boolean representing whether the command exits the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"derekjxtan":50}},{"path":"src/main/java/command/OnCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"public class OnCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" * Command to search for tasks on a date.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" public static final String COMMAND_ON \u003d \"on\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the OnCommand class.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" * @param params Parsed user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" public OnCommand(ArrayList\u003cString\u003e params) throws InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" super(params);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" if (params.size() !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Add todo command format is wrong\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" * Executes the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" * @param ui UI of the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" * @param storage Object to handle data storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" public void execute(TaskList tasks, UI ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" LocalDate date \u003d LocalDate.parse(params.get(1));","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cTask\u003e tasksOnDate \u003d tasks.getTasksOn(date);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" ui.printTasksOn(tasksOnDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" * Returns a boolean representing whether the command requires the application to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" * @return Boolean representing whether the command exits the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"derekjxtan":49}},{"path":"src/main/java/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"public class UnmarkCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" * Command to unmark a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" public static final String COMMAND_UNMARK \u003d \"unmark\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the UnmarkCommand class.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" * @param params Parsed user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" public UnmarkCommand(ArrayList\u003cString\u003e params) throws InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" super(params);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" if (params.size() !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Add todo command format is wrong\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" * Executes the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" * @param ui UI of the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" * @param storage Object to handle data storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" * @throws DukeException If error encountered when saving data.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" public void execute(TaskList tasks, UI ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" int index \u003d Integer.parseInt(params.get(1)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d tasks.unmark(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" ui.printTaskUnmarkedMessage(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" tasks.saveState(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" * Returns a boolean representing whether the command requires the application to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" * @return Boolean representing whether the command exits the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"derekjxtan":50}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" * Date and time that the deadline must be done by","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime by;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the Deadline class.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" * @param name Name of the Deadline.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" * @param by DateTime that the deadline must be completed by.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" public Deadline(String name, LocalDateTime by) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the deadline.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(dateTimeOutputFormatter) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the task to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the deadline to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" public String toSaveStateString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" String[] state \u003d new String[]{ \"deadline\", this.getDone() ? \"1\" : \"0\", this.getTaskName(),","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" this.by.format(Duke.dateTimeInputFormatter) };","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" return String.join(\" / \", state);","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" * Returns whether the event is on a date.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" * @return A boolean representation of whether the event is on a given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" public boolean isOnDate(LocalDate date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" return date.isEqual(this.by.toLocalDate());","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":55}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" private UI ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" private static final String NAME \u003d \"DEREK\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" private static final String DATETIME_INPUT_FORMAT \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" public static final DateTimeFormatter dateTimeInputFormatter \u003d DateTimeFormatter.ofPattern(DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" this.ui \u003d new UI(NAME);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" this.tasks \u003d new TaskList(storage.loadData());","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" ui.printLoadingErrorMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" ui.printWelcomeMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" String input;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" input \u003d ui.readCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" Command command \u003d Parser.parseUserInput(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" if (command.isExit()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" new Duke(\"./data/state.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"derekjxtan":46,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":" public DukeException(String msg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":" super(msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":7}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" * Date and time that the event starts.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime from;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * Date and time that the event ends.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime to;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the Deadline class.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" * @param name Name of the Deadline.","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" * @param from DateTime that the event starts.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" * @param from DateTime that the event ends.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" public Event(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(dateTimeOutputFormatter)","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" + \" to: \" + this.to.format(dateTimeOutputFormatter) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the event to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" public String toSaveStateString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" String[] state \u003d new String[]{ \"event\", this.getDone() ? \"1\" : \"0\", this.getTaskName(),","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" this.from.format(Duke.dateTimeInputFormatter), this.to.format(Duke.dateTimeInputFormatter) };","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" return String.join(\" / \", state);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" public boolean isOnDate(LocalDate date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" return date.isEqual(this.from.toLocalDate()) || date.isEqual(this.to.toLocalDate()) ||","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" (date.isAfter(this.from.toLocalDate()) \u0026\u0026 date.isBefore(this.to.toLocalDate()));","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":59}},{"path":"src/main/java/duke/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"public class InvalidTaskException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":" public InvalidTaskException(String msg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":" super(msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":7}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import command.AddCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import command.DeleteCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import command.ExitCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"import command.FindCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"import command.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"import command.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"import command.MarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":"import command.OnCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"import command.UnmarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":"import java.util.Collections;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" private static final String DELIMITER_COMMAND \u003d \" \";","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" private static final String DELIMITER_DATE \u003d \" /\";","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" private static final String DELIMITER_INPUT \u003d \" / \";","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" * Returns parsed input from the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" * @param input Input from user.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" * @throws InvalidCommandException If the input is not of the recognised form.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" public static Command parseUserInput(String input) throws InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cString\u003e parsedInput\u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" String[] splitInputByDateDelimiter \u003d input.split(DELIMITER_DATE);","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 1; i \u003c splitInputByDateDelimiter.length; i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" String[] split \u003d splitInputByDateDelimiter[i].split(DELIMITER_COMMAND);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Invalid input for date\");","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" splitInputByDateDelimiter[i] \u003d String.join(\" \", Arrays.copyOfRange(split, 1, split.length));","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" String commandString \u003d splitInputByDateDelimiter[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" String[] splitCommandStringByCommandDelimiter \u003d commandString.split(DELIMITER_COMMAND);","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" String command \u003d splitCommandStringByCommandDelimiter[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" parsedInput.add(command);","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" if (splitCommandStringByCommandDelimiter.length \u003e 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" String commandInput \u003d String.join(\" \", Arrays.copyOfRange(splitCommandStringByCommandDelimiter,","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" 1, splitCommandStringByCommandDelimiter.length));","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" parsedInput.add(commandInput);","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" Collections.addAll(parsedInput, Arrays.copyOfRange(splitInputByDateDelimiter, 1,","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" splitInputByDateDelimiter.length));","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" return parsedInputToCommand(parsedInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" * Returns parsed input from the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" * @param input Input from file.","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" * @throws InvalidCommandException If the input is not of the recognised form.","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":" public static ArrayList\u003cString\u003e parseFileInput(String input) throws InvalidCommandException {","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cString\u003e parsedInput \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" String[] split \u003d input.split(DELIMITER_INPUT);","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":" Collections.addAll(parsedInput, split);","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":" return parsedInput;","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"derekjxtan"},"content":" private static Command parsedInputToCommand(ArrayList\u003cString\u003e parsedInput) throws InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"derekjxtan"},"content":" if (parsedInput.size() \u003c 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"Command cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"derekjxtan"},"content":" Command command;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"derekjxtan"},"content":" switch(parsedInput.get(0)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"derekjxtan"},"content":" case MarkCommand.COMMAND_MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"derekjxtan"},"content":" command \u003d new MarkCommand(parsedInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"derekjxtan"},"content":" case UnmarkCommand.COMMAND_UNMARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"derekjxtan"},"content":" command \u003d new UnmarkCommand(parsedInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"derekjxtan"},"content":" case ListCommand.COMMAND_LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"derekjxtan"},"content":" command \u003d new ListCommand(parsedInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"derekjxtan"},"content":" case ExitCommand.COMMAND_EXIT:","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"derekjxtan"},"content":" command \u003d new ExitCommand(parsedInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"derekjxtan"},"content":" case DeleteCommand.COMMAND_DELETE:","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"derekjxtan"},"content":" command \u003d new DeleteCommand(parsedInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"derekjxtan"},"content":" case OnCommand.COMMAND_ON:","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"derekjxtan"},"content":" command \u003d new OnCommand(parsedInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"derekjxtan"},"content":" case FindCommand.COMMAND_FIND:","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"derekjxtan"},"content":" command \u003d new FindCommand(parsedInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"derekjxtan"},"content":" case AddCommand.COMMAND_ADD_TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"derekjxtan"},"content":" case AddCommand.COMMAND_ADD_DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"derekjxtan"},"content":" case AddCommand.COMMAND_ADD_EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"derekjxtan"},"content":" command \u003d new AddCommand(parsedInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"derekjxtan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"derekjxtan"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"derekjxtan"},"content":" return command;","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"derekjxtan":113}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":"public class Storage {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" /** Relative path of the location of the file that stores the data **/","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the Storage class.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" * @param filePath Relative path of the file that stores the data.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" * Saves data to the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" * @param data ArrayList of the string representation of the data to be stored.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" * @throws IOException If the named file exists but is a directory rather than a regular file, does not exist","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" * but cannot be created, or cannot be opened for any other reason","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" public void saveData(ArrayList\u003cString\u003e data) throws StorageException {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" String[] splitFilePath \u003d filePath.split(\"/\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" String directories \u003d String.join(\"/\", Arrays.copyOfRange(splitFilePath, 0,","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" splitFilePath.length - 1));","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" File dir \u003d new File(directories);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" if (!dir.mkdirs()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" throw new StorageException(\"Error Saving data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c data.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" fw.write(data.get(i) + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" throw new StorageException(\"Error Saving data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" * Returns the data stored in the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" * @returns Stored Data","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" * @throws FileNotFoundException If the named file does not exist","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" public ArrayList\u003cString\u003e loadData() throws FileNotFoundException {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cString\u003e data \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" data.add(line);","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"derekjxtan"},"content":" return data;","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"derekjxtan":73}},{"path":"src/main/java/duke/StorageException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"public class StorageException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":" public StorageException(String msg) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":" super(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"derekjxtan":7}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" * Name of task.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" private String taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * Boolean to track whether the task has been marked as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" * format of output.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" private static final String DATETIME_OUTPUT_FORMAT \u003d \"dd-MM-yyyy HH:mm\";","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" * Formatter object to format output.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" public static final DateTimeFormatter dateTimeOutputFormatter \u003d DateTimeFormatter.ofPattern(DATETIME_OUTPUT_FORMAT);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the task class.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" * Tasks are initialised as not done.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" * @param name Name of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" this.taskName \u003d name;","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" * Marks the task as undone.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" return \"[X] \" + taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" return \"[ ] \" + taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the task to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the task to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"derekjxtan"},"content":" public abstract String toSaveStateString();","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"derekjxtan"},"content":" * Returns the done state of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"derekjxtan"},"content":" * @return A boolean representation of whether the task is done.","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"derekjxtan"},"content":" public boolean getDone() {","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"derekjxtan"},"content":" return this.isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"derekjxtan"},"content":" * Returns the name of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"derekjxtan"},"content":" * @return The name of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"derekjxtan"},"content":" public String getTaskName() {","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"derekjxtan"},"content":" return this.taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"derekjxtan"},"content":" * Returns whether the task contains a keyword.","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"derekjxtan"},"content":" * @return A boolean representation of whether the task contains a keyword.","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"derekjxtan"},"content":" public boolean containsKeyword(String keyword) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"derekjxtan"},"content":" if (this.taskName.contains(keyword)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"derekjxtan"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"derekjxtan"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"derekjxtan"},"content":" * Returns whether the task is on a date.","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"derekjxtan"},"content":" * @return A boolean representation of whether the task is on a given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"derekjxtan"},"content":" public abstract boolean isOnDate(LocalDate date);","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"derekjxtan":110}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import command.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"public class TaskList {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" private static final String DATETIME_INPUT_FORMAT \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" private static final DateTimeFormatter dateTimeInputFormatter \u003d DateTimeFormatter.ofPattern(DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the TaskList class.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" * @param storedData Data stored in a file.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" public TaskList(ArrayList\u003cString\u003e storedData) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" loadState(storedData);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the TaskList class.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" public TaskList() {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" * Returns the total number of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" * @return Total number of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" * Adds a task to the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" * @return Task added to the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" public Task add(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" * Removes a task to the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" * @param index Index of the task to remove.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" * @return Task removed from the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" * @throws InvalidCommandException If the provided index is out of range.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" public Task remove(int index) throws InvalidCommandException {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" if (!isTaskValid(index)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"☹ OOPS!!! The task index in invalid\");","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d this.tasks.remove(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" * Prints all tasks in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":" public void printContents() {","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"derekjxtan"},"content":" System.out.println((i + 1) + \".\" + this.tasks.get(i));","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"derekjxtan"},"content":" * Return a list tasks on a given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"derekjxtan"},"content":" * @param date Date of interest to search for.","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"derekjxtan"},"content":" * @return List of tasks on the given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"derekjxtan"},"content":" public ArrayList\u003cTask\u003e getTasksOn(LocalDate date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cTask\u003e tasksOn \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"derekjxtan"},"content":" if (this.tasks.get(i).isOnDate(date)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"derekjxtan"},"content":" tasksOn.add(this.tasks.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"derekjxtan"},"content":" return tasksOn;","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"derekjxtan"},"content":" * Return a list tasks on a given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"derekjxtan"},"content":" * @param keyword The keyword to match with in the task name.","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"derekjxtan"},"content":" * @return List of tasks on the given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"derekjxtan"},"content":" public ArrayList\u003cTask\u003e getTasksContainingKeyword(String keyword) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cTask\u003e tasksOn \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"derekjxtan"},"content":" if (this.tasks.get(i).containsKeyword(keyword)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"derekjxtan"},"content":" tasksOn.add(this.tasks.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"derekjxtan"},"content":" return tasksOn;","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"derekjxtan"},"content":" * Marks a task to in the list as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"derekjxtan"},"content":" * @param index Index of the task to mark.","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"derekjxtan"},"content":" * @return Task marked in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"derekjxtan"},"content":" * @throws InvalidCommandException If the provided index is out of range.","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"derekjxtan"},"content":" public Task mark(int index) throws InvalidCommandException {","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"derekjxtan"},"content":" if (!isTaskValid(index)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"☹ OOPS!!! The task index in invalid\");","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d this.tasks.get(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"derekjxtan"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"derekjxtan"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"derekjxtan"},"content":" * Unmarks a task to in the list as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"derekjxtan"},"content":" * @param index Index of the task to unmark.","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"derekjxtan"},"content":" * @return Task unmarked in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"derekjxtan"},"content":" * @throws InvalidCommandException If the provided index is out of range.","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"derekjxtan"},"content":" public Task unmark(int index) throws InvalidCommandException {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"derekjxtan"},"content":" if (!isTaskValid(index)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"derekjxtan"},"content":" throw new InvalidCommandException(\"☹ OOPS!!! The task index in invalid\");","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"derekjxtan"},"content":" Task task \u003d this.tasks.get(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"derekjxtan"},"content":" task.markAsUndone();","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"derekjxtan"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":141,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"derekjxtan"},"content":" * Saves the tasks to a file.","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"derekjxtan"},"content":" * @param storage storage object to save the tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"derekjxtan"},"content":" public void saveState(Storage storage) throws StorageException {","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cString\u003e stringRepresentation \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":148,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":149,"author":{"gitId":"derekjxtan"},"content":" stringRepresentation.add(this.tasks.get(i).toSaveStateString());","lastModifiedDate":"2023-08-28"},{"lineNumber":150,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":151,"author":{"gitId":"derekjxtan"},"content":" storage.saveData(stringRepresentation);","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":154,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"derekjxtan"},"content":" * Loads the tasks from a file.","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"derekjxtan"},"content":" * @param storedData data stored in a file.","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"derekjxtan"},"content":" private void loadState(ArrayList\u003cString\u003e storedData) {","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c storedData.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":161,"author":{"gitId":"derekjxtan"},"content":" String[] taskArray \u003d storedData.get(i).split(\" / \");","lastModifiedDate":"2023-08-28"},{"lineNumber":162,"author":{"gitId":"derekjxtan"},"content":" Task task;","lastModifiedDate":"2023-08-28"},{"lineNumber":163,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":164,"author":{"gitId":"derekjxtan"},"content":" if (taskArray[0].equals(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"derekjxtan"},"content":" task \u003d new ToDo(taskArray[2]);","lastModifiedDate":"2023-08-28"},{"lineNumber":166,"author":{"gitId":"derekjxtan"},"content":" } else if (taskArray[0].equals(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"derekjxtan"},"content":" task \u003d new Deadline(taskArray[2], LocalDateTime.parse(taskArray[3], dateTimeInputFormatter));","lastModifiedDate":"2023-08-28"},{"lineNumber":168,"author":{"gitId":"derekjxtan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":169,"author":{"gitId":"derekjxtan"},"content":" task \u003d new Event(taskArray[2], LocalDateTime.parse(taskArray[3], dateTimeInputFormatter),","lastModifiedDate":"2023-08-28"},{"lineNumber":170,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(taskArray[4], dateTimeInputFormatter));","lastModifiedDate":"2023-08-28"},{"lineNumber":171,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":172,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":173,"author":{"gitId":"derekjxtan"},"content":" if (taskArray[1].equals(\"1\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":174,"author":{"gitId":"derekjxtan"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":175,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":176,"author":{"gitId":"derekjxtan"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":177,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":178,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Successfully loaded saved state\");","lastModifiedDate":"2023-08-28"},{"lineNumber":179,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":180,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":181,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"derekjxtan"},"content":" * Checks if a index is valid.","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"derekjxtan"},"content":" * @param index Index of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"derekjxtan"},"content":" * @return A boolean representation of whether the index is valid.","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"derekjxtan"},"content":" private boolean isTaskValid(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":188,"author":{"gitId":"derekjxtan"},"content":" return index \u003e\u003d 0 \u0026\u0026 index \u003c this.tasks.size();","lastModifiedDate":"2023-08-28"},{"lineNumber":189,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":190,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"derekjxtan":190}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the ToDo class.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" * @param name Name of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" public ToDo(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the todo.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" * Returns a string representation of the task to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" * @return A string representing the todo to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" public String toSaveStateString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" String[] state \u003d new String[]{ \"todo\", this.getDone() ? \"1\" : \"0\", this.getTaskName() };","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" return String.join(\" / \", state);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" * Returns whether the task is on a date.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" * @return A boolean representation of whether the task is on a given date.","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" public boolean isOnDate(LocalDate date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":45}},{"path":"src/main/java/duke/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"public class UI {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":" private String name;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":" * Constructor for the UI class.","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" * @param name Name of the chatbot.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" public UI(String name) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" * Reads and returns user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" * @return User input.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" return line;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" * Prints a welcome message.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" public void printWelcomeMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Hello! I\u0027m \" + this.name);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" * Prints a goodbye message.","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" public void printGoodbyeMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" * Prints a task added message.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" * @param task Task added.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" * @param taskCount Total number of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" public void printTaskAddedMessage(Task task, int taskCount) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":" this.printTaskCount(taskCount);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" * Prints a task deleted message.","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" * @param task Task deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" * @param taskCount Total number of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" public void printTaskDeletedMessage(Task task, int taskCount) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" this.printTaskCount(taskCount);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"derekjxtan"},"content":" * Prints a task marked message.","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"derekjxtan"},"content":" * @param task Task marked.","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"derekjxtan"},"content":" public void printTaskMarkedMessage(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"derekjxtan"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"derekjxtan"},"content":" * Prints a task unmarked message.","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"derekjxtan"},"content":" * @param task Task unmarked.","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"derekjxtan"},"content":" public void printTaskUnmarkedMessage(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"derekjxtan"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"derekjxtan"},"content":" * Prints the tasks on a date.","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks on a date","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"derekjxtan"},"content":" public void printTasksOn(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"derekjxtan"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"derekjxtan"},"content":" * Prints the tasks matching a keyword.","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"derekjxtan"},"content":" * @param tasks List of tasks matching a keyword","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"derekjxtan"},"content":" public void printTasksMatching(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"derekjxtan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"derekjxtan"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"derekjxtan"},"content":" * Prints a loading error message.","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"derekjxtan"},"content":" public void printLoadingErrorMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Stored data could not be loaded\");","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"derekjxtan"},"content":" * Closes scanner object used to read input","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"derekjxtan"},"content":" public void closeUi() {","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"derekjxtan"},"content":" this.scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"derekjxtan"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"derekjxtan"},"content":" * Prints a task count message.","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"derekjxtan"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"derekjxtan"},"content":" * @param taskCount Total number of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"derekjxtan"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"derekjxtan"},"content":" private void printTaskCount(int taskCount) {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"derekjxtan"},"content":" System.out.println(\"Now you have \" + taskCount + (taskCount \u003d\u003d 1 ? \" task\" : \" tasks\") + \" in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"derekjxtan":135}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import command.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.lang.reflect.Array;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" public void parseUserInput_validInput_success() throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cString\u003e params \u003d new ArrayList\u003c\u003e(Arrays.asList(\"list\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new AddCommand(params),","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"list\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" params \u003d new ArrayList\u003c\u003e(Arrays.asList(\"mark\", \"2\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new MarkCommand(params),","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"mark 2\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":" params \u003d new ArrayList\u003c\u003e(Arrays.asList(\"unmark\", \"3\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new UnmarkCommand(params),","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"unmark 3\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":" params \u003d new ArrayList\u003c\u003e(Arrays.asList(\"todo\", \"run\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new AddCommand(params),","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"todo run\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":" params \u003d new ArrayList\u003c\u003e(Arrays.asList(\"deadline\", \"chemistry homework\", \"2023-10-26 15:30\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new AddCommand(params),","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"deadline chemistry homework /by 2023-10-26 15:30\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" params \u003d new ArrayList\u003c\u003e(Arrays.asList(\"event\", \"movie screening\", \"2023-11-16 18:00\", \"2023-11-16 20:00\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new AddCommand(params),","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"event movie screening /from 2023-11-16 18:00 /to 2023-11-16 20:00\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" params \u003d new ArrayList\u003c\u003e(Arrays.asList(\"on\", \"2023-08-30\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new OnCommand(params),","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"on 2023-08-30\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":" params \u003d new ArrayList\u003c\u003e(new ArrayList\u003c\u003e(Arrays.asList(\"delete\", \"1\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new DeleteCommand(params),","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"delete 1\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" public void parseUserInput_invalidDate_exceptionThrown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cString\u003e params \u003d new ArrayList\u003c\u003e(Arrays.asList(\"event\", \"movie screening\", \"2023-11-16\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new AddCommand(params),","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"event movie screening /from /to 2023-11-16\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" assertEquals(\"Add event command format is wrong\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":" ArrayList\u003cString\u003e params \u003d new ArrayList\u003c\u003e(Arrays.asList(\"event\", \"movie screening\", \"2023-11-16\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" assertEquals(new AddCommand(params),","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" Parser.parseUserInput(\"event movie screening /from 2023-11-16 /to\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" assertEquals(\"Add event command format is wrong\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"derekjxtan":71}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"import command.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":" private static final String DATETIME_INPUT_FORMAT \u003d \"yyyy-MM-dd HH:mm\";","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":" public static final DateTimeFormatter dateTimeInputFormatter \u003d DateTimeFormatter.ofPattern(DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":" public void remove_indexWithinRange_success() throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":" Deadline deadline \u003d new Deadline(\"chemistry homework\",","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(\"2023-08-15 18:00\", dateTimeInputFormatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":" ToDo todo \u003d new ToDo(\"read book\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":" Event event \u003d new Event(\"marathon\", LocalDateTime.parse(\"2023-08-16 05:00\", dateTimeInputFormatter),","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(\"2023-08-16 07:00\", dateTimeInputFormatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"derekjxtan"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"derekjxtan"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"derekjxtan"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"derekjxtan"},"content":" assertEquals(todo, tasks.remove(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"derekjxtan"},"content":" assertEquals(deadline, tasks.remove(0));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"derekjxtan"},"content":" assertEquals(event, tasks.remove(0));","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"derekjxtan"},"content":" public void remove_indexOutOfRange_exceptionThrown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"derekjxtan"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"derekjxtan"},"content":" Deadline deadline \u003d new Deadline(\"chemistry homework\",","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(\"2023-08-15 18:00\", dateTimeInputFormatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"derekjxtan"},"content":" ToDo todo \u003d new ToDo(\"read book\");","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"derekjxtan"},"content":" Event event \u003d new Event(\"marathon\", LocalDateTime.parse(\"2023-08-16 05:00\", dateTimeInputFormatter),","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"derekjxtan"},"content":" LocalDateTime.parse(\"2023-08-16 07:00\", dateTimeInputFormatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"derekjxtan"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"derekjxtan"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"derekjxtan"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"derekjxtan"},"content":" assertEquals(todo, tasks.remove(5));","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"derekjxtan"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"derekjxtan"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"derekjxtan"},"content":" assertEquals(\"☹ OOPS!!! The task index in invalid\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"derekjxtan"},"content":" assertEquals(todo, tasks.remove(3));","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"derekjxtan"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"derekjxtan"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"derekjxtan"},"content":" assertEquals(\"☹ OOPS!!! The task index in invalid\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"derekjxtan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"derekjxtan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"derekjxtan"},"content":" assertEquals(todo, tasks.remove(-1));","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"derekjxtan"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"derekjxtan"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"derekjxtan"},"content":" assertEquals(\"☹ OOPS!!! The task index in invalid\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"derekjxtan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"derekjxtan"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"derekjxtan":70}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"derekjxtan"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"derekjxtan"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"derekjxtan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"derekjxtan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"derekjxtan"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"derekjxtan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"derekjxtan"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"derekjxtan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"derekjxtan"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"derekjxtan"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"derekjxtan"},"content":"deadline math homework","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"derekjxtan"},"content":"deadline /by Jan 2nd","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"derekjxtan"},"content":"event","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"derekjxtan"},"content":"event marathon","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"derekjxtan"},"content":"event marathon /from: 3pm","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"derekjxtan"},"content":"event /from: 3pm /to: 7pm","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"derekjxtan"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"derekjxtan"},"content":"delete 3","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"derekjxtan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"derekjxtan"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"derekjxtan"},"content":"delete 3","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"derekjxtan"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"derekjxtan":22}},{"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":"derekjxtan"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"derekjxtan":1,"-":20}}] diff --git a/derekjxtan_ip_master/commits.json b/derekjxtan_ip_master/commits.json index 3b0111ce..95db9503 100644 --- a/derekjxtan_ip_master/commits.json +++ b/derekjxtan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"derekjxtan":[{"date":"2023-08-22","commitResults":[{"hash":"96fca51fcda6b133a2872537f43a61630c84c77d","isMergeCommit":false,"messageTitle":"completed level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"5e916ca266b8c3712644041727767471d7f585b5","isMergeCommit":false,"messageTitle":"completed level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"5ac12c99d5c3ae5033fde906d4e62676ab2d9fb8","isMergeCommit":false,"messageTitle":"completed level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"2fbcc21d00c8cdf675cf5deae7b840ce87e8d76d","isMergeCommit":false,"messageTitle":"completed level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":5}}}]},{"date":"2023-08-23","commitResults":[{"hash":"00a4e343288ce6dd2cc90e00e08e7beee7ac6e2a","isMergeCommit":false,"messageTitle":"level 4 completed","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":4}}},{"hash":"e0af2942a0ad89ee2154ae3f0a0e2724df31728d","isMergeCommit":false,"messageTitle":"completed TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"8cb560af5bd9dd65d30eea9d8358819521d6dd39","isMergeCommit":false,"messageTitle":"completed level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":84,"deletions":51}}},{"hash":"9d1468f602898017fe300838446eecd55c4171b9","isMergeCommit":false,"messageTitle":"completed level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":15,"deletions":0}}},{"hash":"e0b6b049862a696d11024c0f3b59556fb8b45046","isMergeCommit":false,"messageTitle":"refactored Duke class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":18}}},{"hash":"7d2f23518fc9c157973e2bc1ec3d6cbef77f6eba","isMergeCommit":false,"messageTitle":"Added invalidCommand exceptions for mark unmark and delete","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":13,"deletions":0}}},{"hash":"9ed70e9294aa064d4f00d45b3e9fdc6639d45d25","isMergeCommit":false,"messageTitle":"Add Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":65}}}]},{"date":"2023-08-27","commitResults":[{"hash":"fd4bd81e02d536036ee3f25b159d2e8ea3a9a78d","isMergeCommit":false,"messageTitle":"Add load state from file functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":32,"deletions":0}}},{"hash":"6ff454d0044aceaa2a4608799b4e2bd485498ced","isMergeCommit":false,"messageTitle":"Update Task to a abstract class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"37dc233261189e8e2f98056c189b4e7bd59c2f1a","isMergeCommit":false,"messageTitle":"Task class: Add abstract function toSaveStateString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"57ce1eefeb37be068eef26407a9d7cc84ab62399","isMergeCommit":false,"messageTitle":"Task class: Add getters for done and task name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"66bb829ffc3405ce8c7c759b488fbdd69ea446bc","isMergeCommit":false,"messageTitle":"ToDo class: Add implementation of toSaveStateString function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"73fdb46e155863b47218313b5d2563d5cecf06bd","isMergeCommit":false,"messageTitle":"Deadline class: Add implementation of toSaveStateString function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"2fe609d569d68e189fb8868c9b0fb952ca9c8fb3","isMergeCommit":false,"messageTitle":"Event class: Add implementation of toSaveStateString function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"a30686ed13a3e0e7c6a20474ad4ac90e44ed8340","isMergeCommit":false,"messageTitle":"Duke class: Implement saveState function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"dcc0156cd830b5904b52825ff1c00e95909eeae1","isMergeCommit":false,"messageTitle":"bug fix: Edit Deadline and Event class to save with the correct task type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"34d95a8318e5bfea3178462c6ad97311471933e6","isMergeCommit":false,"messageTitle":"Duke class: Add log to indicate state has been successfully loaded","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":1,"deletions":0}}},{"hash":"451d1c1de1ff993deddc4dfa02ff863061831680","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"a9a54ffffaeab04c1e6b585ceb24c68ebbea799a","isMergeCommit":false,"messageTitle":"Deadline class: Change by attribute type from String to LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":16,"deletions":8}}},{"hash":"1875b33db9ac6e32765143d4174b24a96a532e15","isMergeCommit":false,"messageTitle":"Event class: Change from and to attributes type from String to LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":12,"deletions":7}}},{"hash":"5dd7e5cb80034cd94ed0e18456dee8a6dcce5c34","isMergeCommit":false,"messageTitle":"Task class: Add abstract function isOnDate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"9bac20250ea578bac4dc313bb5d996183f196dce","isMergeCommit":false,"messageTitle":"Deadline class: Add isOnDate implementation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"2e08841be84ef5ea7614ae8e2d086eb4d807a138","isMergeCommit":false,"messageTitle":"Event class: Add isOnDate implementation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"ed858dfad3baf94b07b0a57ff6fe6545c3dc279a","isMergeCommit":false,"messageTitle":"Duke class: Add on command functionality to list deadlines/events on a date","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":13,"deletions":1}}},{"hash":"14521b44fdc2b4512e7afc0997d124111fe999d4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-28","commitResults":[{"hash":"0363f91edcfc0b54b4ef7507d425b4d13f555914","isMergeCommit":false,"messageTitle":"Parser class: Add class skeleton","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"f161d54b3bce73747cd21c217fe531ad4e98048c","isMergeCommit":false,"messageTitle":"Parser class: Add implementation for parseUserInput","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":2}}},{"hash":"b993f1520b6f9d370f297236beefbdf689963484","isMergeCommit":false,"messageTitle":"Parser class: Update parseUserInput to throw InvalidCommandException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"1fcb842d95ee6c1ec87ff760394c0fa74f2de00c","isMergeCommit":false,"messageTitle":"Parser class: Add parseFileInput function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"63132a0bd2f7c2be65362f5877593c17015f0345","isMergeCommit":false,"messageTitle":"Duke class: Update main function to use Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":16}}},{"hash":"025766e9c710374c371f2d1e49e8b40d783435cf","isMergeCommit":false,"messageTitle":"Add TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"9e3e73f325d705eeb806029a727759e32193a5eb","isMergeCommit":false,"messageTitle":"TaskList class: Add add task functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"b814e5555d66b8a4ab58007821b0dcc9080bbf9e","isMergeCommit":false,"messageTitle":"TaskList class: Add remove task functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"bc523e173fb6dd0de2e8a42f1961b3a3a995c26f","isMergeCommit":false,"messageTitle":"TaskList class: Add print contents functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"c5113a5beb9ff93a8eff95c91b0a2a0994e76048","isMergeCommit":false,"messageTitle":"TaskList class: Add print tasks on a date functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"d490aa3fdb73a5d55f0f3f7f35bbc46f36881355","isMergeCommit":false,"messageTitle":"TaskList class: Add mark done functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"b00d171aab0b3646eea3e26fa8dfef9113eae9ee","isMergeCommit":false,"messageTitle":"TaskList class: Add unmark as done functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"d9b69f8a5d9d2c71b06eb3a4e066c3355fcca894","isMergeCommit":false,"messageTitle":"mend","messageBody":"TaskList class: Add print statements to mark function\n","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"6cae6da0b9f8552c196e4fb8300877ef9888d26b","isMergeCommit":false,"messageTitle":"mend","messageBody":"TaskList class: Add print statements to unmark function\n","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"cd2b0637f3788148864388b360d069dfed040c35","isMergeCommit":false,"messageTitle":"mend","messageBody":"TaskList class: Add functionality to check if index is valid\n","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"18dceab76db38c297b80b65f5c490c82921bee47","isMergeCommit":false,"messageTitle":"mend","messageBody":"TaskList class: Add index valid checks to functions\n","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":3}}},{"hash":"839002df2b605e2aa70004427260675ab047b1ff","isMergeCommit":false,"messageTitle":"Duke class: Update to use TaskList class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":86,"deletions":110}}},{"hash":"a0d382a9bb53fc802a424e2c8e2b00641476d76a","isMergeCommit":false,"messageTitle":"Add Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"bc1cdfffc8862783bbd78e6124679dab648d67b9","isMergeCommit":false,"messageTitle":"Storage class: Add implementation for saveData function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"122f18cde53514289b8cf15562a33ef82aa9c88b","isMergeCommit":false,"messageTitle":"Storage class: Add implementation for loadData function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"405a207438b9fd87bb434088dd3a5c76504ab551","isMergeCommit":false,"messageTitle":"TaskList class: Update to use Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":11}}}]},{"date":"2023-08-29","commitResults":[{"hash":"ae7ea72ada1c8c8692e4bc9cddb1a9d10a32221b","isMergeCommit":false,"messageTitle":"Add UI class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"fa9d0abdb86c23cff4d99743d38a0660651aa2df","isMergeCommit":false,"messageTitle":"UI class: implement print welcome message functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":2}}},{"hash":"9e6683e84ab824657cb374f54e32d1b62491a6b6","isMergeCommit":false,"messageTitle":"UI class: implement print Goodbye message functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"2f4101fb9104dd84d3f7a042ee4f2804ed77da40","isMergeCommit":false,"messageTitle":"UI class: implement print task added, deleted, marked, unmarked functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":2}}},{"hash":"75aced32703208461d3dcddc2349448f325b0dc9","isMergeCommit":false,"messageTitle":"Duke class: update to use UI class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"3ffc1e15d1a24e7202f0dd7f738173c3363ea7ef","isMergeCommit":false,"messageTitle":"TaskList class: Move output statements to UI class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":39}}},{"hash":"e22afb1831d5ba755c7828653fea473992dc89bc","isMergeCommit":false,"messageTitle":"TaskList class: Move print tasks on functionality to UI class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":13,"deletions":3}}},{"hash":"f3a30bfee6ebc33a2107312630d48c4803ab271e","isMergeCommit":false,"messageTitle":"Refactor Duke class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":60,"deletions":34}}},{"hash":"ecb4a7bb537c8ef021605a1ab91daff5a0ed1964","isMergeCommit":false,"messageTitle":"Add packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":2},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"d492e7cf164a055f88fdc017a98ef54c073ca5e5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-more-oop\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"57585c9bcba5c75049d59ad1e3d009b82ee2fc29","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"8fec1041119d960117a76561c6a52cf22448857c","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"65b4f2f987f3ed383d6209d58e740ead5905e60b","isMergeCommit":false,"messageTitle":"Fix build.gradle configurations","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"da5a67c19e0bcc903825afcd119b56c99305d5f4","isMergeCommit":false,"messageTitle":"Add ParserTest class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":0}}},{"hash":"5b31a66625b2799d43973cf239b09568f6ad9adf","isMergeCommit":false,"messageTitle":"Add TaskListTest class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":0}}},{"hash":"be51471c24b21b3a3cc28c4f3cacb6c26f5bdb3c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-junit\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2f24cf02010402d2ac442704d34a8840d442fb5a","isMergeCommit":false,"messageTitle":"Storage class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"12d6287a4bc9dcc40898908ce69be241c4916c1f","isMergeCommit":false,"messageTitle":"Parser class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"032ba72c2b21e454619316cb401da0ff1b217360","isMergeCommit":false,"messageTitle":"TaskList class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":1}}},{"hash":"ff15a1909a3645dbd38001449d0a702db529a676","isMergeCommit":false,"messageTitle":"UI class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":1}}},{"hash":"959ea7769a3ed8e6ebb603788851071666e707d8","isMergeCommit":false,"messageTitle":"Task class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":39}}},{"hash":"6752669696f6cb05d25c4dfa91da7cb3c8ad61a4","isMergeCommit":false,"messageTitle":"ToDo class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"34e093d21672c202ced2acb90750102f6f1ee245","isMergeCommit":false,"messageTitle":"Deadline class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":1}}},{"hash":"338ded81cc58b291d1e68355b1ac47907e0f988b","isMergeCommit":false,"messageTitle":"Event class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":2}}},{"hash":"935517b86e7d6d4c2c7b32d9a8549653fa9f53a2","isMergeCommit":false,"messageTitle":"Task class: Rename done to isDone","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"29a9292b1bf7b5fb313142b87d954594ae77b0b9","isMergeCommit":false,"messageTitle":"Task class: Add containsKeyword function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"109e82c22189832bdcc0f294ea93fc00bd8d4b5e","isMergeCommit":false,"messageTitle":"TaskList class: Add getTasksContainingKeyword function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"141c8e932378717f014bd916b8ff45e9f353f38c","isMergeCommit":false,"messageTitle":"Duke class: Add functionality to search by keyword","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"74e5903c98aaa2843658e8bf29666aca39751d0d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"629a2da6b1b9ea97a4ab5713fe480135e5bc6169","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-javaDoc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"883cfa64d022154451cdab0d7c26b1e084c9720a","isMergeCommit":false,"messageTitle":"Add JavaDocs for newly added commits","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"591422b15de4e70d69d21f0cddfbe10e52488df2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-javaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"d56f4765c73614a97c858d2f4d42b4f22eac7882","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"77fef576e61600cb5aff12f83bd0591ad739b8ed","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"db665e7f2f5162136c1d62381fedb7f8cfb0e15f","isMergeCommit":false,"messageTitle":"bug fix: Create directory and file to save data","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":28,"deletions":7}}},{"hash":"68babf8e790c3767682487065c7bed547682175d","isMergeCommit":false,"messageTitle":"bug fix: Save tasks to file on change","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":17,"deletions":14}}},{"hash":"149f1830e763a22a9809aa6088f1073bf6030b5d","isMergeCommit":false,"messageTitle":"Move read user input functionality to UI class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":5}}},{"hash":"ae3969f3642e0869375c8256a248e6b09e042c23","isMergeCommit":false,"messageTitle":"UI class: Remove datatime formatter","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"derekjxtan":{"java":1021,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":29}},"authorContributionVariance":{"derekjxtan":66167.92},"authorDisplayNameMap":{"derekjxtan":"CS2103T-T08-1 TAN ..EREK"}} +{"authorDailyContributionsMap":{"derekjxtan":[{"date":"2023-08-22","commitResults":[{"hash":"96fca51fcda6b133a2872537f43a61630c84c77d","isMergeCommit":false,"messageTitle":"completed level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"5e916ca266b8c3712644041727767471d7f585b5","isMergeCommit":false,"messageTitle":"completed level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"5ac12c99d5c3ae5033fde906d4e62676ab2d9fb8","isMergeCommit":false,"messageTitle":"completed level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"2fbcc21d00c8cdf675cf5deae7b840ce87e8d76d","isMergeCommit":false,"messageTitle":"completed level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":5}}}]},{"date":"2023-08-23","commitResults":[{"hash":"00a4e343288ce6dd2cc90e00e08e7beee7ac6e2a","isMergeCommit":false,"messageTitle":"level 4 completed","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":4}}},{"hash":"e0af2942a0ad89ee2154ae3f0a0e2724df31728d","isMergeCommit":false,"messageTitle":"completed TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"8cb560af5bd9dd65d30eea9d8358819521d6dd39","isMergeCommit":false,"messageTitle":"completed level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":84,"deletions":51}}},{"hash":"9d1468f602898017fe300838446eecd55c4171b9","isMergeCommit":false,"messageTitle":"completed level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":15,"deletions":0}}},{"hash":"e0b6b049862a696d11024c0f3b59556fb8b45046","isMergeCommit":false,"messageTitle":"refactored Duke class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":18}}},{"hash":"7d2f23518fc9c157973e2bc1ec3d6cbef77f6eba","isMergeCommit":false,"messageTitle":"Added invalidCommand exceptions for mark unmark and delete","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":13,"deletions":0}}},{"hash":"9ed70e9294aa064d4f00d45b3e9fdc6639d45d25","isMergeCommit":false,"messageTitle":"Add Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":65}}}]},{"date":"2023-08-27","commitResults":[{"hash":"fd4bd81e02d536036ee3f25b159d2e8ea3a9a78d","isMergeCommit":false,"messageTitle":"Add load state from file functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":32,"deletions":0}}},{"hash":"6ff454d0044aceaa2a4608799b4e2bd485498ced","isMergeCommit":false,"messageTitle":"Update Task to a abstract class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"37dc233261189e8e2f98056c189b4e7bd59c2f1a","isMergeCommit":false,"messageTitle":"Task class: Add abstract function toSaveStateString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"57ce1eefeb37be068eef26407a9d7cc84ab62399","isMergeCommit":false,"messageTitle":"Task class: Add getters for done and task name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"66bb829ffc3405ce8c7c759b488fbdd69ea446bc","isMergeCommit":false,"messageTitle":"ToDo class: Add implementation of toSaveStateString function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"73fdb46e155863b47218313b5d2563d5cecf06bd","isMergeCommit":false,"messageTitle":"Deadline class: Add implementation of toSaveStateString function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"2fe609d569d68e189fb8868c9b0fb952ca9c8fb3","isMergeCommit":false,"messageTitle":"Event class: Add implementation of toSaveStateString function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"a30686ed13a3e0e7c6a20474ad4ac90e44ed8340","isMergeCommit":false,"messageTitle":"Duke class: Implement saveState function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"dcc0156cd830b5904b52825ff1c00e95909eeae1","isMergeCommit":false,"messageTitle":"bug fix: Edit Deadline and Event class to save with the correct task type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"34d95a8318e5bfea3178462c6ad97311471933e6","isMergeCommit":false,"messageTitle":"Duke class: Add log to indicate state has been successfully loaded","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":1,"deletions":0}}},{"hash":"451d1c1de1ff993deddc4dfa02ff863061831680","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"a9a54ffffaeab04c1e6b585ceb24c68ebbea799a","isMergeCommit":false,"messageTitle":"Deadline class: Change by attribute type from String to LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":16,"deletions":8}}},{"hash":"1875b33db9ac6e32765143d4174b24a96a532e15","isMergeCommit":false,"messageTitle":"Event class: Change from and to attributes type from String to LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":12,"deletions":7}}},{"hash":"5dd7e5cb80034cd94ed0e18456dee8a6dcce5c34","isMergeCommit":false,"messageTitle":"Task class: Add abstract function isOnDate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"9bac20250ea578bac4dc313bb5d996183f196dce","isMergeCommit":false,"messageTitle":"Deadline class: Add isOnDate implementation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"2e08841be84ef5ea7614ae8e2d086eb4d807a138","isMergeCommit":false,"messageTitle":"Event class: Add isOnDate implementation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"ed858dfad3baf94b07b0a57ff6fe6545c3dc279a","isMergeCommit":false,"messageTitle":"Duke class: Add on command functionality to list deadlines/events on a date","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":13,"deletions":1}}},{"hash":"14521b44fdc2b4512e7afc0997d124111fe999d4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-28","commitResults":[{"hash":"0363f91edcfc0b54b4ef7507d425b4d13f555914","isMergeCommit":false,"messageTitle":"Parser class: Add class skeleton","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"f161d54b3bce73747cd21c217fe531ad4e98048c","isMergeCommit":false,"messageTitle":"Parser class: Add implementation for parseUserInput","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":2}}},{"hash":"b993f1520b6f9d370f297236beefbdf689963484","isMergeCommit":false,"messageTitle":"Parser class: Update parseUserInput to throw InvalidCommandException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"1fcb842d95ee6c1ec87ff760394c0fa74f2de00c","isMergeCommit":false,"messageTitle":"Parser class: Add parseFileInput function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"63132a0bd2f7c2be65362f5877593c17015f0345","isMergeCommit":false,"messageTitle":"Duke class: Update main function to use Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":16}}},{"hash":"025766e9c710374c371f2d1e49e8b40d783435cf","isMergeCommit":false,"messageTitle":"Add TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"9e3e73f325d705eeb806029a727759e32193a5eb","isMergeCommit":false,"messageTitle":"TaskList class: Add add task functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"b814e5555d66b8a4ab58007821b0dcc9080bbf9e","isMergeCommit":false,"messageTitle":"TaskList class: Add remove task functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"bc523e173fb6dd0de2e8a42f1961b3a3a995c26f","isMergeCommit":false,"messageTitle":"TaskList class: Add print contents functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"c5113a5beb9ff93a8eff95c91b0a2a0994e76048","isMergeCommit":false,"messageTitle":"TaskList class: Add print tasks on a date functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"d490aa3fdb73a5d55f0f3f7f35bbc46f36881355","isMergeCommit":false,"messageTitle":"TaskList class: Add mark done functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"b00d171aab0b3646eea3e26fa8dfef9113eae9ee","isMergeCommit":false,"messageTitle":"TaskList class: Add unmark as done functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"d9b69f8a5d9d2c71b06eb3a4e066c3355fcca894","isMergeCommit":false,"messageTitle":"mend","messageBody":"TaskList class: Add print statements to mark function\n","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"6cae6da0b9f8552c196e4fb8300877ef9888d26b","isMergeCommit":false,"messageTitle":"mend","messageBody":"TaskList class: Add print statements to unmark function\n","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"cd2b0637f3788148864388b360d069dfed040c35","isMergeCommit":false,"messageTitle":"mend","messageBody":"TaskList class: Add functionality to check if index is valid\n","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"18dceab76db38c297b80b65f5c490c82921bee47","isMergeCommit":false,"messageTitle":"mend","messageBody":"TaskList class: Add index valid checks to functions\n","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":3}}},{"hash":"839002df2b605e2aa70004427260675ab047b1ff","isMergeCommit":false,"messageTitle":"Duke class: Update to use TaskList class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":86,"deletions":110}}},{"hash":"a0d382a9bb53fc802a424e2c8e2b00641476d76a","isMergeCommit":false,"messageTitle":"Add Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"bc1cdfffc8862783bbd78e6124679dab648d67b9","isMergeCommit":false,"messageTitle":"Storage class: Add implementation for saveData function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"122f18cde53514289b8cf15562a33ef82aa9c88b","isMergeCommit":false,"messageTitle":"Storage class: Add implementation for loadData function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"405a207438b9fd87bb434088dd3a5c76504ab551","isMergeCommit":false,"messageTitle":"TaskList class: Update to use Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":11}}}]},{"date":"2023-08-29","commitResults":[{"hash":"ae7ea72ada1c8c8692e4bc9cddb1a9d10a32221b","isMergeCommit":false,"messageTitle":"Add UI class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"fa9d0abdb86c23cff4d99743d38a0660651aa2df","isMergeCommit":false,"messageTitle":"UI class: implement print welcome message functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":2}}},{"hash":"9e6683e84ab824657cb374f54e32d1b62491a6b6","isMergeCommit":false,"messageTitle":"UI class: implement print Goodbye message functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"2f4101fb9104dd84d3f7a042ee4f2804ed77da40","isMergeCommit":false,"messageTitle":"UI class: implement print task added, deleted, marked, unmarked functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":2}}},{"hash":"75aced32703208461d3dcddc2349448f325b0dc9","isMergeCommit":false,"messageTitle":"Duke class: update to use UI class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"3ffc1e15d1a24e7202f0dd7f738173c3363ea7ef","isMergeCommit":false,"messageTitle":"TaskList class: Move output statements to UI class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":39}}},{"hash":"e22afb1831d5ba755c7828653fea473992dc89bc","isMergeCommit":false,"messageTitle":"TaskList class: Move print tasks on functionality to UI class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":13,"deletions":3}}},{"hash":"f3a30bfee6ebc33a2107312630d48c4803ab271e","isMergeCommit":false,"messageTitle":"Refactor Duke class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":60,"deletions":34}}},{"hash":"ecb4a7bb537c8ef021605a1ab91daff5a0ed1964","isMergeCommit":false,"messageTitle":"Add packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":2},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"d492e7cf164a055f88fdc017a98ef54c073ca5e5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-more-oop\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"57585c9bcba5c75049d59ad1e3d009b82ee2fc29","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"8fec1041119d960117a76561c6a52cf22448857c","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"65b4f2f987f3ed383d6209d58e740ead5905e60b","isMergeCommit":false,"messageTitle":"Fix build.gradle configurations","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"da5a67c19e0bcc903825afcd119b56c99305d5f4","isMergeCommit":false,"messageTitle":"Add ParserTest class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":0}}},{"hash":"5b31a66625b2799d43973cf239b09568f6ad9adf","isMergeCommit":false,"messageTitle":"Add TaskListTest class","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":0}}},{"hash":"be51471c24b21b3a3cc28c4f3cacb6c26f5bdb3c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-junit\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2f24cf02010402d2ac442704d34a8840d442fb5a","isMergeCommit":false,"messageTitle":"Storage class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"12d6287a4bc9dcc40898908ce69be241c4916c1f","isMergeCommit":false,"messageTitle":"Parser class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"032ba72c2b21e454619316cb401da0ff1b217360","isMergeCommit":false,"messageTitle":"TaskList class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":1}}},{"hash":"ff15a1909a3645dbd38001449d0a702db529a676","isMergeCommit":false,"messageTitle":"UI class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":1}}},{"hash":"959ea7769a3ed8e6ebb603788851071666e707d8","isMergeCommit":false,"messageTitle":"Task class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":39}}},{"hash":"6752669696f6cb05d25c4dfa91da7cb3c8ad61a4","isMergeCommit":false,"messageTitle":"ToDo class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"34e093d21672c202ced2acb90750102f6f1ee245","isMergeCommit":false,"messageTitle":"Deadline class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":1}}},{"hash":"338ded81cc58b291d1e68355b1ac47907e0f988b","isMergeCommit":false,"messageTitle":"Event class: Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":2}}},{"hash":"935517b86e7d6d4c2c7b32d9a8549653fa9f53a2","isMergeCommit":false,"messageTitle":"Task class: Rename done to isDone","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"29a9292b1bf7b5fb313142b87d954594ae77b0b9","isMergeCommit":false,"messageTitle":"Task class: Add containsKeyword function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"109e82c22189832bdcc0f294ea93fc00bd8d4b5e","isMergeCommit":false,"messageTitle":"TaskList class: Add getTasksContainingKeyword function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"141c8e932378717f014bd916b8ff45e9f353f38c","isMergeCommit":false,"messageTitle":"Duke class: Add functionality to search by keyword","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"74e5903c98aaa2843658e8bf29666aca39751d0d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"629a2da6b1b9ea97a4ab5713fe480135e5bc6169","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-javaDoc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"883cfa64d022154451cdab0d7c26b1e084c9720a","isMergeCommit":false,"messageTitle":"Add JavaDocs for newly added commits","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"591422b15de4e70d69d21f0cddfbe10e52488df2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-javaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"d56f4765c73614a97c858d2f4d42b4f22eac7882","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"77fef576e61600cb5aff12f83bd0591ad739b8ed","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"db665e7f2f5162136c1d62381fedb7f8cfb0e15f","isMergeCommit":false,"messageTitle":"bug fix: Create directory and file to save data","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":28,"deletions":7}}},{"hash":"68babf8e790c3767682487065c7bed547682175d","isMergeCommit":false,"messageTitle":"bug fix: Save tasks to file on change","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":17,"deletions":14}}},{"hash":"149f1830e763a22a9809aa6088f1073bf6030b5d","isMergeCommit":false,"messageTitle":"Move read user input functionality to UI class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":5}}},{"hash":"ae3969f3642e0869375c8256a248e6b09e042c23","isMergeCommit":false,"messageTitle":"UI class: Remove datatime formatter","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"83b5b29898661c71e26415aef560ae0e47162d7d","isMergeCommit":false,"messageTitle":"Remove Command enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":40}}},{"hash":"a6c62854339e4509255b80248f31366c8d3b6709","isMergeCommit":false,"messageTitle":"Add Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"71bb6414ea935d2087e9773cfba9cdebc66a626d","isMergeCommit":false,"messageTitle":"Add AddCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":1}}},{"hash":"0f4f4cc35996951e6d45436dffaf6351a003884b","isMergeCommit":false,"messageTitle":"Add DeleteCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"bfdacb9b6e2260edb904320257f52d4e51ea5ae3","isMergeCommit":false,"messageTitle":"Add ExitCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"2f0db49d51d15c2fc4b98874b34a3af0d5bb72c1","isMergeCommit":false,"messageTitle":"Add MarkCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"3e9110538365f17535fa3470106cd8289723aa01","isMergeCommit":false,"messageTitle":"Add UnmarkCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"9ac7ac0e000debb62a4fba18430c0104478c85ba","isMergeCommit":false,"messageTitle":"Add ListCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"204d52bd2dee8ac295d3c6342d7a72ced419aec1","isMergeCommit":false,"messageTitle":"Add OnCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"949f4c7e34694dd16fd9b4dbf9796812450758e5","isMergeCommit":false,"messageTitle":"Add FindCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"1c061e41964023270cd999c1e4d9122bb87a4ee2","isMergeCommit":false,"messageTitle":"Rename FinaCommand file to FindCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"039697680072e0aeaca29efed3565e2ecfe729b4","isMergeCommit":false,"messageTitle":"Duke class: Update to use Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":72}}},{"hash":"e35c5faf91d6b77d0e94841c1025155b29a86b4c","isMergeCommit":false,"messageTitle":"Command class: Add isExit function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":0}}},{"hash":"8f6fbfd7b847839cfdcde950758936262d21f20c","isMergeCommit":false,"messageTitle":"Move Command classes to Command package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":22}}},{"hash":"db8c8321803c9531f5fde3f684db079855d86612","isMergeCommit":false,"messageTitle":"Rename Command package to command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":24}}},{"hash":"028694083d74462082bf9e6d1202c7fc940c5021","isMergeCommit":false,"messageTitle":"Add javadocs to command classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":205,"deletions":9}}},{"hash":"0ac956b3401f0452f5d9d7e542a665c36ec3c9e9","isMergeCommit":false,"messageTitle":"Add exception throwing to constructors in command classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":8}}},{"hash":"f4776c38005d7537c2e1ea4fd3c81bcaef57bfae","isMergeCommit":false,"messageTitle":"Command class: Override equals method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"fc1704c0a6ff8bb5c7d448dc89704593a653755c","isMergeCommit":false,"messageTitle":"ParserTest class: Update tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":13}}},{"hash":"aee92495ef80d211d6d11ae88e28543b25d67f74","isMergeCommit":true,"messageTitle":"Merge branch \u0027command-abstraction\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"derekjxtan":{"java":1491,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":29}},"authorContributionVariance":{"derekjxtan":90170.09},"authorDisplayNameMap":{"derekjxtan":"CS2103T-T08-1 TAN ..EREK"}} diff --git a/dinde2004_ip_master/authorship.json b/dinde2004_ip_master/authorship.json index 3c5adb00..878e42e9 100644 --- a/dinde2004_ip_master/authorship.json +++ b/dinde2004_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dinde2004":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":" private static ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":" private static final String HORIZONTAL_LINE \u003d \" _______________________________________________________________\";","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":" public static void bye() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":" public static void printList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":" int index \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":" for (Task task: arr) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + (++index) + \".\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":" public static void addTask(String task) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"dinde2004"},"content":" if (task.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"dinde2004"},"content":" if (task.length() \u003c 6) throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"dinde2004"},"content":" arr.add(new Todo(task.substring(5)));","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + arr.get(arr.size() - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Now you have \" + arr.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"dinde2004"},"content":" else if (task.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"dinde2004"},"content":" if (task.length() \u003c 10) throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"dinde2004"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"dinde2004"},"content":" String by \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"dinde2004"},"content":" for (int i \u003d 9; i \u003c task.length(); ++i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"dinde2004"},"content":" if (task.charAt(i) \u003d\u003d \u0027/\u0027) {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"dinde2004"},"content":" description \u003d task.substring(9, i - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"dinde2004"},"content":" by \u003d task.substring(i + 4);","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"dinde2004"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"dinde2004"},"content":" arr.add(new Deadline(description, by));","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + arr.get(arr.size() - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Now you have \" + arr.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"dinde2004"},"content":" else if (task.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"dinde2004"},"content":" if (task.length() \u003c 7) throw new DukeException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"dinde2004"},"content":" int slash1 \u003d -1;","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"dinde2004"},"content":" int slash2 \u003d -1;","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"dinde2004"},"content":" for (int i \u003d 0; i \u003c task.length(); ++i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"dinde2004"},"content":" if (task.charAt(i) \u003d\u003d \u0027/\u0027) {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"dinde2004"},"content":" if (slash1 \u003d\u003d -1) slash1 \u003d i;","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"dinde2004"},"content":" else slash2 \u003d i;","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"dinde2004"},"content":" String description \u003d task.substring(6, slash1 - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"dinde2004"},"content":" String from \u003d task.substring(slash1 + 6, slash2 - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"dinde2004"},"content":" String to \u003d task.substring(slash2 + 4);","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"dinde2004"},"content":" arr.add(new Event(description, from, to));","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + arr.get(arr.size() - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Now you have \" + arr.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"dinde2004"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"dinde2004"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"dinde2004"},"content":" public static void deleteTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + arr.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"dinde2004"},"content":" arr.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Now you have \" + arr.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"dinde2004"},"content":" public static void markTaskDone(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"dinde2004"},"content":" arr.get(index - 1).markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + arr.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"dinde2004"},"content":" public static void markTaskNotDone(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"dinde2004"},"content":" arr.get(index - 1).markAsNotDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + arr.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"dinde2004"},"content":" public static void processCommand(String command) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"dinde2004"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"dinde2004"},"content":" bye();","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"dinde2004"},"content":" else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"dinde2004"},"content":" printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"dinde2004"},"content":" else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"dinde2004"},"content":" int index \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"dinde2004"},"content":" for (int i \u003d 5; i \u003c command.length(); ++i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"dinde2004"},"content":" index *\u003d 10;","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"dinde2004"},"content":" index +\u003d command.charAt(i) - 48;","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"dinde2004"},"content":" markTaskDone(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"dinde2004"},"content":" else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"dinde2004"},"content":" int index \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"dinde2004"},"content":" for (int i \u003d 7; i \u003c command.length(); ++i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"dinde2004"},"content":" index *\u003d 10;","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"dinde2004"},"content":" index +\u003d command.charAt(i) - 48;","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"dinde2004"},"content":" markTaskNotDone(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"dinde2004"},"content":" else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"dinde2004"},"content":" int index \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"dinde2004"},"content":" for (int i \u003d 7; i \u003c command.length(); ++i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"dinde2004"},"content":" index *\u003d 10;","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"dinde2004"},"content":" index +\u003d command.charAt(i) - 48;","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"dinde2004"},"content":" deleteTask(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"dinde2004"},"content":" else {","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"dinde2004"},"content":" addTask(command);","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":122,"author":{"gitId":"dinde2004"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Hello! I\u0027m Thinh\u0027s chatbot\\n What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"dinde2004"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"dinde2004"},"content":" Scanner in \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"dinde2004"},"content":" String inputStr;","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"dinde2004"},"content":" do {","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"dinde2004"},"content":" inputStr \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"dinde2004"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"dinde2004"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"dinde2004"},"content":" processCommand(inputStr);","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"dinde2004"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"dinde2004"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"dinde2004"},"content":" } while (!inputStr.equals(\"bye\"));","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"dinde2004":134,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dinde2004":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dinde2004":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":" return isDone ? \"X\" : \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"dinde2004"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"dinde2004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"dinde2004"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dinde2004":26}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dinde2004":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":"deadline return book /by Monday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dinde2004":3}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":" public String writeFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":" return \"D | \" + super.writeFile() + \" | \" + this.by;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dinde2004":18}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":" private static ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":" private static String dataPath \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":" private static final String HORIZONTAL_LINE \u003d \" _______________________________________________________________\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":" public static void bye() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":" public static void printList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":" int index \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":" for (Task task: arr) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + (++index) + \".\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"dinde2004"},"content":" public static void addTask(String task) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"dinde2004"},"content":" if (task.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"dinde2004"},"content":" if (task.length() \u003c 6) throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"dinde2004"},"content":" arr.add(new Todo(task.substring(5)));","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + arr.get(arr.size() - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Now you have \" + arr.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"dinde2004"},"content":" else if (task.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"dinde2004"},"content":" if (task.length() \u003c 10) throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"dinde2004"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"dinde2004"},"content":" String by \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"dinde2004"},"content":" for (int i \u003d 9; i \u003c task.length(); ++i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"dinde2004"},"content":" if (task.charAt(i) \u003d\u003d \u0027/\u0027) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"dinde2004"},"content":" description \u003d task.substring(9, i - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"dinde2004"},"content":" by \u003d task.substring(i + 4);","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"dinde2004"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"dinde2004"},"content":" arr.add(new Deadline(description, by));","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + arr.get(arr.size() - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Now you have \" + arr.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"dinde2004"},"content":" else if (task.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"dinde2004"},"content":" if (task.length() \u003c 7) throw new DukeException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"dinde2004"},"content":" int slash1 \u003d -1;","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"dinde2004"},"content":" int slash2 \u003d -1;","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"dinde2004"},"content":" for (int i \u003d 0; i \u003c task.length(); ++i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"dinde2004"},"content":" if (task.charAt(i) \u003d\u003d \u0027/\u0027) {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"dinde2004"},"content":" if (slash1 \u003d\u003d -1) slash1 \u003d i;","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"dinde2004"},"content":" else slash2 \u003d i;","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"dinde2004"},"content":" String description \u003d task.substring(6, slash1 - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"dinde2004"},"content":" String from \u003d task.substring(slash1 + 6, slash2 - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"dinde2004"},"content":" String to \u003d task.substring(slash2 + 4);","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"dinde2004"},"content":" arr.add(new Event(description, from, to));","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + arr.get(arr.size() - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Now you have \" + arr.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"dinde2004"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"dinde2004"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"dinde2004"},"content":" public static void deleteTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + arr.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"dinde2004"},"content":" arr.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Now you have \" + arr.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"dinde2004"},"content":" public static void markTaskDone(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"dinde2004"},"content":" arr.get(index - 1).markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + arr.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"dinde2004"},"content":" public static void markTaskNotDone(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"dinde2004"},"content":" arr.get(index - 1).markAsNotDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + arr.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"dinde2004"},"content":" public static void processCommand(String command) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"dinde2004"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"dinde2004"},"content":" bye();","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"dinde2004"},"content":" else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"dinde2004"},"content":" printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"dinde2004"},"content":" else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"dinde2004"},"content":" int index \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"dinde2004"},"content":" for (int i \u003d 5; i \u003c command.length(); ++i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"dinde2004"},"content":" index *\u003d 10;","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"dinde2004"},"content":" index +\u003d command.charAt(i) - 48;","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"dinde2004"},"content":" markTaskDone(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"dinde2004"},"content":" else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"dinde2004"},"content":" int index \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"dinde2004"},"content":" for (int i \u003d 7; i \u003c command.length(); ++i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"dinde2004"},"content":" index *\u003d 10;","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"dinde2004"},"content":" index +\u003d command.charAt(i) - 48;","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"dinde2004"},"content":" markTaskNotDone(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"dinde2004"},"content":" else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"dinde2004"},"content":" int index \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"dinde2004"},"content":" for (int i \u003d 7; i \u003c command.length(); ++i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"dinde2004"},"content":" index *\u003d 10;","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"dinde2004"},"content":" index +\u003d command.charAt(i) - 48;","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"dinde2004"},"content":" deleteTask(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"dinde2004"},"content":" else {","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"dinde2004"},"content":" addTask(command);","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"dinde2004"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"dinde2004"},"content":" if (!command.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"dinde2004"},"content":" writeFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"dinde2004"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + ioe.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"dinde2004"},"content":" public static void writeFile() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"dinde2004"},"content":" FileWriter fw \u003d new FileWriter(dataPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"dinde2004"},"content":" for (Task t: arr) {","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"dinde2004"},"content":" fw.write(t.writeFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"dinde2004"},"content":" fw.write(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"dinde2004"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"dinde2004"},"content":" public static void readFile() throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"dinde2004"},"content":" File file \u003d new File(dataPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"dinde2004"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"dinde2004"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"dinde2004"},"content":" String input \u003d s.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"dinde2004"},"content":" if (input.startsWith(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"dinde2004"},"content":" String description \u003d input.substring(8);","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"dinde2004"},"content":" Todo todo \u003d new Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"dinde2004"},"content":" if (input.charAt(4) \u003d\u003d \u00271\u0027) todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"dinde2004"},"content":" arr.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"dinde2004"},"content":" else if (input.startsWith(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"dinde2004"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"dinde2004"},"content":" String by \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"dinde2004"},"content":" int count \u003d 0, slash1 \u003d -1, slash2 \u003d -1;","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"dinde2004"},"content":" for (int i \u003d 0; i \u003c input.length(); ++i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"dinde2004"},"content":" if (input.charAt(i) \u003d\u003d \u0027|\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"dinde2004"},"content":" ++count;","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"dinde2004"},"content":" if (count \u003d\u003d 2) slash1 \u003d i;","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"dinde2004"},"content":" if (count \u003d\u003d 3) slash2 \u003d i;","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"dinde2004"},"content":" description \u003d input.substring(slash1 + 2, slash2 - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"dinde2004"},"content":" by \u003d input.substring(slash2 + 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"dinde2004"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"dinde2004"},"content":" if (input.charAt(4) \u003d\u003d \u00271\u0027) deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"dinde2004"},"content":" arr.add(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"dinde2004"},"content":" else if (input.startsWith(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"dinde2004"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"dinde2004"},"content":" String from \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"dinde2004"},"content":" String to \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"dinde2004"},"content":" int count \u003d 0, slash1 \u003d -1, slash2 \u003d -1, slash3 \u003d -1;","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"dinde2004"},"content":" for (int i \u003d 0; i \u003c input.length(); ++i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"dinde2004"},"content":" if (input.charAt(i) \u003d\u003d \u0027|\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"dinde2004"},"content":" ++count;","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"dinde2004"},"content":" if (count \u003d\u003d 2) slash1 \u003d i;","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"dinde2004"},"content":" if (count \u003d\u003d 3) slash2 \u003d i;","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"dinde2004"},"content":" if (count \u003d\u003d 4) slash3 \u003d i;","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"dinde2004"},"content":" description \u003d input.substring(slash1 + 2, slash2 - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"dinde2004"},"content":" from \u003d input.substring(slash2 + 2, slash3 - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"dinde2004"},"content":" to \u003d input.substring(slash3 + 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"dinde2004"},"content":" Event event \u003d new Event(description, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"dinde2004"},"content":" if (input.charAt(4) \u003d\u003d \u00271\u0027) event.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"dinde2004"},"content":" arr.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":194,"author":{"gitId":"dinde2004"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Hello! I\u0027m Thinh\u0027s chatbot\\n What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"dinde2004"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"dinde2004"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"dinde2004"},"content":" readFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"dinde2004"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"dinde2004"},"content":" File dir \u003d new File(\"./data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"dinde2004"},"content":" dir.mkdir();","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"dinde2004"},"content":" File dataFile \u003d new File (\"./data/duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"dinde2004"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"dinde2004"},"content":" dataFile.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" Created new data file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"dinde2004"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + ioe.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"dinde2004"},"content":" Scanner in \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"dinde2004"},"content":" String inputStr;","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"dinde2004"},"content":" do {","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"dinde2004"},"content":" inputStr \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"dinde2004"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"dinde2004"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"dinde2004"},"content":" processCommand(inputStr);","lastModifiedDate":"2023-08-24"},{"lineNumber":217,"author":{"gitId":"dinde2004"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":218,"author":{"gitId":"dinde2004"},"content":" System.out.println(\" \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"dinde2004"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":221,"author":{"gitId":"dinde2004"},"content":" } while (!inputStr.equals(\"bye\"));","lastModifiedDate":"2023-08-24"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"dinde2004":219,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dinde2004":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":" public String writeFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":" return \"E | \" + super.writeFile() + \" | from: \" + this.from + \" | to: \" + this.to;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dinde2004":20}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":" return isDone ? \"X\" : \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":" public int getStatusInteger() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":" return isDone ? 1 : 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"dinde2004"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"dinde2004"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"dinde2004"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"dinde2004"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"dinde2004"},"content":" public String writeFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"dinde2004"},"content":" return this.getStatusInteger() + \" | \" + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"dinde2004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"dinde2004"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dinde2004":34}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"dinde2004"},"content":" public String writeFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"dinde2004"},"content":" return \"T | \" + super.writeFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"dinde2004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"dinde2004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"dinde2004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"dinde2004"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"dinde2004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"dinde2004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dinde2004":15}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dinde2004"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"dinde2004"},"content":"deadline return book /by Monday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"dinde2004"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dinde2004":3}}] diff --git a/dinde2004_ip_master/commits.json b/dinde2004_ip_master/commits.json index 2d3dfdfe..1da35497 100644 --- a/dinde2004_ip_master/commits.json +++ b/dinde2004_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"dinde2004":[{"date":"2023-08-24","commitResults":[{"hash":"aa49ad72382cee54092d2fca2316b0a20bc5a22b","isMergeCommit":false,"messageTitle":"Add new name to chatbot. Implement greetings and exits.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"c37c3c1975666e4aa778f1104cbf4ecf6972d258","isMergeCommit":false,"messageTitle":"Add the ability to echo commands to chatbot.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":5}}},{"hash":"7156b4c81e218033d734b16dcadddf5394f16d90","isMergeCommit":false,"messageTitle":"Add list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":7}}},{"hash":"0b3ac1025d32ececdf1d8281143e868d1eb68c7b","isMergeCommit":false,"messageTitle":"tasks now can mark done/not done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":21}}},{"hash":"454644b78569f1358ddf0a17d56faf67d1f039c3","isMergeCommit":false,"messageTitle":"add 3 types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":9}}},{"hash":"adf63cf24cb02b1475ee79e1dba43fda2feac67f","isMergeCommit":false,"messageTitle":"text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"7242ee9892202ecf95c17afeb2189b1c94c1859d","isMergeCommit":false,"messageTitle":"handle Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"f587a6e85607c289957ef1a4a28fc9841fbc4436","isMergeCommit":false,"messageTitle":"add delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"dinde2004":{"java":203,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":3}},"authorContributionVariance":{"dinde2004":11167.837},"authorDisplayNameMap":{"dinde2004":"CS2103T-T08-4 DOAN..HINH"}} +{"authorDailyContributionsMap":{"dinde2004":[{"date":"2023-08-24","commitResults":[{"hash":"aa49ad72382cee54092d2fca2316b0a20bc5a22b","isMergeCommit":false,"messageTitle":"Add new name to chatbot. Implement greetings and exits.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"c37c3c1975666e4aa778f1104cbf4ecf6972d258","isMergeCommit":false,"messageTitle":"Add the ability to echo commands to chatbot.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":5}}},{"hash":"7156b4c81e218033d734b16dcadddf5394f16d90","isMergeCommit":false,"messageTitle":"Add list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":7}}},{"hash":"0b3ac1025d32ececdf1d8281143e868d1eb68c7b","isMergeCommit":false,"messageTitle":"tasks now can mark done/not done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":21}}},{"hash":"454644b78569f1358ddf0a17d56faf67d1f039c3","isMergeCommit":false,"messageTitle":"add 3 types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":9}}},{"hash":"adf63cf24cb02b1475ee79e1dba43fda2feac67f","isMergeCommit":false,"messageTitle":"text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"7242ee9892202ecf95c17afeb2189b1c94c1859d","isMergeCommit":false,"messageTitle":"handle Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"f587a6e85607c289957ef1a4a28fc9841fbc4436","isMergeCommit":false,"messageTitle":"add delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"050b2d641fcaf1012f2c9862b8fdc8ab497bbeb5","isMergeCommit":false,"messageTitle":"add function to save and load data in hard disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":0}}},{"hash":"3ecbfccff49067cb3342e7740afcbf6634f1c82b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"dinde2004":{"java":311,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":3}},"authorContributionVariance":{"dinde2004":6110.7544},"authorDisplayNameMap":{"dinde2004":"CS2103T-T08-4 DOAN..HINH"}} diff --git a/dishenggg_ip_master/authorship.json b/dishenggg_ip_master/authorship.json index 29c15b5e..f54241c7 100644 --- a/dishenggg_ip_master/authorship.json +++ b/dishenggg_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/joe/Joe.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"public class Joe {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" public Joe(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" tasks \u003d storage.readTasks();","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" ui.print(\"No saved task list was found.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" } catch (IOException | JoeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" ui.print(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" ui.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" ui.greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":" ui.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"dishenggg"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"dishenggg"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"dishenggg"},"content":" Command c \u003d Parser.parse(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"dishenggg"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"dishenggg"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"dishenggg"},"content":" } catch (JoeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"dishenggg"},"content":" ui.print(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"dishenggg"},"content":" } finally {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"dishenggg"},"content":" ui.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"dishenggg"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"dishenggg"},"content":" new Joe(\"joe.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"dishenggg":48,"-":1}},{"path":"src/main/java/joe/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"import joe.commands.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" private enum CommandType {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" LIST,","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" TODO,","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" DEADLINE,","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" EVENT,","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" MARK,","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" UNMARK,","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" DELETE,","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" BYE,","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" INVALID","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" private static final Pattern commandPattern \u003d Pattern.compile(\"^(\\\\S+)\\\\s?(.*)$\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" private static final String DATETIME_FORMAT \u003d \"d/M/yyyy HHmm\";","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":" public static Command parse(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d commandPattern.matcher(input.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":" if (!m.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(\"Invalid Command Format\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"dishenggg"},"content":" CommandType type \u003d parseType(m.group(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"dishenggg"},"content":" String args \u003d m.group(2);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"dishenggg"},"content":" switch (type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"dishenggg"},"content":" case BYE:","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"dishenggg"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"dishenggg"},"content":" case LIST:","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"dishenggg"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"dishenggg"},"content":" case MARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"dishenggg"},"content":" return handleMark(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"dishenggg"},"content":" case UNMARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"dishenggg"},"content":" return handleUnmark(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"dishenggg"},"content":" case TODO:","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"dishenggg"},"content":" return handleTodo(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"dishenggg"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"dishenggg"},"content":" return handleDeadline(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"dishenggg"},"content":" case EVENT:","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"dishenggg"},"content":" return handleEvent(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"dishenggg"},"content":" case DELETE:","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"dishenggg"},"content":" return handleDelete(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"dishenggg"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"dishenggg"},"content":" return handleInvalidKeyword();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"dishenggg"},"content":" private static CommandType parseType(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"dishenggg"},"content":" return CommandType.valueOf(input.toUpperCase());","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"dishenggg"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"dishenggg"},"content":" return CommandType.INVALID;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"dishenggg"},"content":" private static Command handleMark(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"dishenggg"},"content":" int idx \u003d parseIndexArgs(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"dishenggg"},"content":" return new MarkCommand(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"dishenggg"},"content":" } catch (JoeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(\"Invalid arguments for mark\\nPlease follow: mark \u003ctask_num\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"dishenggg"},"content":" private static Command handleUnmark(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"dishenggg"},"content":" int idx \u003d parseIndexArgs(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"dishenggg"},"content":" return new UnmarkCommand(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"dishenggg"},"content":" } catch (JoeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(\"Invalid arguments for unmark\\nPlease follow: unmark \u003ctask_num\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"dishenggg"},"content":" private static Command handleTodo(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"dishenggg"},"content":" Pattern p \u003d Pattern.compile(\"(\\\\S.+)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d p.matcher(args.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"dishenggg"},"content":" if (!m.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(\"Invalid arguments for todo\\nPlease follow: todo \u003ctask\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"dishenggg"},"content":" return new TodoCommand(m.group(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"dishenggg"},"content":" private static Command handleDeadline(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"dishenggg"},"content":" Pattern p \u003d Pattern.compile(\"(\\\\S.+)\\\\s+/by\\\\s+(\\\\d{1,2}/\\\\d{1,2}/\\\\d{4} \\\\d{4})\");","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d p.matcher(args.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"dishenggg"},"content":" if (!m.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"dishenggg"},"content":" \"Invalid arguments for deadline\\nPlease follow: deadline \u003ctask\u003e /by \u003cd/M/yyyy HHmm\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"dishenggg"},"content":" LocalDateTime by \u003d","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"dishenggg"},"content":" LocalDateTime.parse(m.group(2), DateTimeFormatter.ofPattern(DATETIME_FORMAT));","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"dishenggg"},"content":" return new DeadlineCommand(m.group(1), by);","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"dishenggg"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"dishenggg"},"content":" \"Failed to parse the date.\\nPlease ensure it is a valid datetime following the format \u003cd/M/yyyy HHmm\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"dishenggg"},"content":" private static Command handleEvent(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"dishenggg"},"content":" Pattern p \u003d","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"dishenggg"},"content":" Pattern.compile(","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"dishenggg"},"content":" \"(\\\\S.+)\\\\s+/from\\\\s+(\\\\d{1,2}/\\\\d{1,2}/\\\\d{4} \\\\d{4})\\\\s+/to\\\\s+(\\\\d{1,2}/\\\\d{1,2}/\\\\d{4} \\\\d{4})\");","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d p.matcher(args.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"dishenggg"},"content":" if (!m.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"dishenggg"},"content":" \"Invalid arguments for event\\nPlease follow: event \u003ctask\u003e /from \u003cd/M/yyyy HHmm\u003e /to \u003cd/M/yyyy HHmm\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"dishenggg"},"content":" LocalDateTime from \u003d","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"dishenggg"},"content":" LocalDateTime.parse(m.group(2), DateTimeFormatter.ofPattern(DATETIME_FORMAT));","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"dishenggg"},"content":" LocalDateTime to \u003d","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"dishenggg"},"content":" LocalDateTime.parse(m.group(3), DateTimeFormatter.ofPattern(DATETIME_FORMAT));","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"dishenggg"},"content":" return new EventCommand(m.group(1), from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"dishenggg"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"dishenggg"},"content":" \"Failed to parse the date.\\nPlease ensure it is a valid datetime following the format \u003cd/M/yyyy HHmm\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"dishenggg"},"content":" private static Command handleDelete(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"dishenggg"},"content":" int idx \u003d parseIndexArgs(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"dishenggg"},"content":" return new DeleteCommand(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"dishenggg"},"content":" } catch (JoeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(\"Invalid arguments for delete\\nPlease follow: delete \u003ctask_num\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"dishenggg"},"content":" private static Command handleInvalidKeyword() {","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"dishenggg"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"dishenggg"},"content":" for (CommandType cmd : CommandType.values()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"dishenggg"},"content":" if (CommandType.INVALID.equals(cmd)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"dishenggg"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"dishenggg"},"content":" sb.append(cmd.toString().toLowerCase());","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"dishenggg"},"content":" sb.append(\", \");","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"dishenggg"},"content":" sb.setLength(sb.length() - 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"dishenggg"},"content":" String msg \u003d","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"dishenggg"},"content":" String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"dishenggg"},"content":" \"Invalid Command Keyword!%nHere is a list of valid commands: %s\", sb);","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"dishenggg"},"content":" private static int parseIndexArgs(String args) throws JoeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"dishenggg"},"content":" Pattern indexPattern \u003d Pattern.compile(\"^(\\\\d+)$\");","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d indexPattern.matcher(args.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"dishenggg"},"content":" if (!m.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"dishenggg"},"content":" throw new JoeException(\"Failed to parse index\");","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"dishenggg"},"content":" String idx \u003d m.group(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"dishenggg"},"content":" return Integer.parseInt(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":167}},{"path":"src/main/java/joe/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"import java.util.List;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"import joe.tasks.TodoTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" private final Path taskFilePath;","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" public Storage(String fileName) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" this.taskFilePath \u003d Paths.get(fileName);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" private static final Pattern taskPattern \u003d Pattern.compile(\"^\\\\[([TDE])\\\\]\\\\[[X\\\\s]\\\\]\\\\s(.+)\");","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" private static final Pattern todoPattern \u003d Pattern.compile(\"^\\\\[T\\\\]\\\\[[X\\\\s]\\\\]\\\\s+(.+)$\");","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" private static final Pattern deadlinePattern \u003d","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" Pattern.compile(\"^\\\\[D\\\\]\\\\[[X\\\\s]\\\\]\\\\s+(.+)\\\\s+\\\\(by:\\\\s+(.+)\\\\)$\");","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":" private static final Pattern eventPattern \u003d","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":" Pattern.compile(\"^\\\\[E\\\\]\\\\[[X\\\\s]\\\\]\\\\s+(.+)\\\\s+\\\\(from:\\\\s+(.+)\\\\s+to:\\\\s+(.+)\\\\)$\");","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" private void handleTodo(String input, TaskList tasks) throws JoeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d todoPattern.matcher(input);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":" if (m.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"dishenggg"},"content":" TodoTask newTask \u003d new TodoTask(m.group(1));","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"dishenggg"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"dishenggg"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"dishenggg"},"content":" throw new JoeException(\"Todo in task file is corrupt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"dishenggg"},"content":" private void handleDeadline(String input, TaskList tasks) throws JoeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d deadlinePattern.matcher(input);","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"dishenggg"},"content":" if (m.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"dishenggg"},"content":" TodoTask newTask \u003d new TodoTask(m.group(1));","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"dishenggg"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"dishenggg"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"dishenggg"},"content":" throw new JoeException(\"Deadline in task file is corrupt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"dishenggg"},"content":" private void handleEvent(String input, TaskList tasks) throws JoeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d eventPattern.matcher(input);","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"dishenggg"},"content":" if (m.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"dishenggg"},"content":" TodoTask newTask \u003d new TodoTask(m.group(1));","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"dishenggg"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"dishenggg"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"dishenggg"},"content":" throw new JoeException(\"Event in task file is corrupt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"dishenggg"},"content":" public TaskList readTasks() throws JoeException, IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"dishenggg"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"dishenggg"},"content":" if (!Files.exists(taskFilePath)) {","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"dishenggg"},"content":" throw new FileNotFoundException();","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"dishenggg"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(taskFilePath);","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"dishenggg"},"content":" for (String line : lines) {","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d taskPattern.matcher(line);","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"dishenggg"},"content":" if (!m.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"dishenggg"},"content":" throw new JoeException(\"Task file is corrupt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"dishenggg"},"content":" String type \u003d m.group(1);","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"dishenggg"},"content":" switch (type) {","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"dishenggg"},"content":" case \"T\":","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"dishenggg"},"content":" handleTodo(line, tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"dishenggg"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"dishenggg"},"content":" case \"D\":","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"dishenggg"},"content":" handleDeadline(line, tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"dishenggg"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"dishenggg"},"content":" case \"E\":","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"dishenggg"},"content":" handleEvent(line, tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"dishenggg"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"dishenggg"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"dishenggg"},"content":" throw new JoeException(\"Task file is corrupt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"dishenggg"},"content":" return tasks;","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":88,"author":{"gitId":"dishenggg"},"content":" public void saveToFile(TaskList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"dishenggg"},"content":" List\u003cString\u003e taskStrings \u003d tasks.getStringList();","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"dishenggg"},"content":" Files.write(","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"dishenggg"},"content":" taskFilePath,","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"dishenggg"},"content":" taskStrings,","lastModifiedDate":"2023-08-26"},{"lineNumber":94,"author":{"gitId":"dishenggg"},"content":" StandardOpenOption.CREATE,","lastModifiedDate":"2023-08-26"},{"lineNumber":95,"author":{"gitId":"dishenggg"},"content":" StandardOpenOption.TRUNCATE_EXISTING);","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"dishenggg"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":97,"author":{"gitId":"dishenggg"},"content":" System.out.println(\"Failed to save to file: \" + e);","lastModifiedDate":"2023-08-26"},{"lineNumber":98,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":99,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":100,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"dishenggg":100}},{"path":"src/main/java/joe/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" public Task get(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" return tasks.get(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" public void remove(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" tasks.remove(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":" public int size() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" return tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":" public List\u003cString\u003e getStringList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"dishenggg"},"content":" return tasks.stream().map(Task::toString).collect(Collectors.toList());","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"dishenggg"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"dishenggg"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"dishenggg"},"content":" sb.append(\"Here are your tasks:\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"dishenggg"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"dishenggg"},"content":" sb.append(i + 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"dishenggg"},"content":" sb.append(\".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"dishenggg"},"content":" sb.append(tasks.get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"dishenggg"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"dishenggg"},"content":" sb.setLength(sb.length() - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"dishenggg"},"content":" return sb.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":47}},{"path":"src/main/java/joe/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" public void greet() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" System.out.println(\"Hello! I\u0027m Joe\\nWhat can i do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" public void newLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" System.out.println();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" public void exit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" public void print(String msg) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":31}},{"path":"src/main/java/joe/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":" public ByeCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" this.isExit \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" ui.print(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" ui.exit();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":18}},{"path":"src/main/java/joe/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeIndexOutOfBoundsException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" protected boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage)","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" throws JoeIndexOutOfBoundsException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" return isExit;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":17}},{"path":"src/main/java/joe/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"import joe.tasks.DeadlineTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" private final String taskDetails;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" private final LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" public DeadlineCommand(String taskDetails, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" this.taskDetails \u003d taskDetails;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" DeadlineTask newTask \u003d new DeadlineTask(taskDetails, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" ui.print(","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" \"Got it, I\u0027ve added this task:%n %s%nNow you have %d tasks in the list.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" newTask, tasks.size()));","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":29}},{"path":"src/main/java/joe/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeIndexOutOfBoundsException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"import joe.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" private final int idx;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" public DeleteCommand(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" this.idx \u003d idx;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JoeIndexOutOfBoundsException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" if (idx \u003c 0 || idx \u003e tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" throw new JoeIndexOutOfBoundsException(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" Task deletedTask \u003d tasks.get(idx - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" tasks.remove(idx - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" ui.print(","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" \"Noted. I\u0027ve removed this task:%n %s%nNow you have %d tasks in the list.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":" deletedTask, tasks.size()));","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":30}},{"path":"src/main/java/joe/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"import joe.tasks.EventTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" private final String taskDetails;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" private final LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" private final LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" public EventCommand(String taskDetails, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" this.taskDetails \u003d taskDetails;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" EventTask newTask \u003d new EventTask(taskDetails, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" ui.print(","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":" \"Got it, I\u0027ve added this task:%n %s%nNow you have %d tasks in the list.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":" newTask, tasks.size()));","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":31}},{"path":"src/main/java/joe/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":" private final String msg;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" public InvalidCommand(String msg) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" this.msg \u003d msg;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" ui.print(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":18}},{"path":"src/main/java/joe/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" ui.print(tasks.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":13}},{"path":"src/main/java/joe/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeIndexOutOfBoundsException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" private int idx;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" public MarkCommand(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" this.idx \u003d idx;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JoeIndexOutOfBoundsException {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" if (idx \u003c 0 || idx \u003e tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" throw new JoeIndexOutOfBoundsException(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" tasks.get(idx - 1).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" ui.print(String.format(\"Nice! I\u0027ve marked this task as done:%n %s\", tasks.get(idx - 1)));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":26}},{"path":"src/main/java/joe/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.tasks.TodoTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" private final String taskDetails;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" public TodoCommand(String taskDetails) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" this.taskDetails \u003d taskDetails;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" TodoTask newTask \u003d new TodoTask(taskDetails);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" ui.print(","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" \"Got it, I\u0027ve added this task:%n %s%nNow you have %d tasks in the list.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" newTask, tasks.size()));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":25}},{"path":"src/main/java/joe/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeIndexOutOfBoundsException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" private int idx;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" public UnmarkCommand(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" this.idx \u003d idx;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JoeIndexOutOfBoundsException {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" if (idx \u003c 0 || idx \u003e tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" throw new JoeIndexOutOfBoundsException(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" tasks.get(idx - 1).markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" ui.print(String.format(\"OK! I\u0027ve marked this task as not done:%n %s\", tasks.get(idx - 1)));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":26}},{"path":"src/main/java/joe/exceptions/JoeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"public class JoeException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":" public JoeException(String error) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":" super(error);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":7}},{"path":"src/main/java/joe/exceptions/JoeIndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"public class JoeIndexOutOfBoundsException extends JoeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":" public JoeIndexOutOfBoundsException(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":" super(\"Task \" + idx + \" does not exist\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":7}},{"path":"src/main/java/joe/tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":" private final LocalDateTime deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" public DeadlineTask(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" String deadlineString \u003d this.deadline.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), deadlineString);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"dishenggg":19}},{"path":"src/main/java/joe/tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":" private final LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":" private final LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" public EventTask(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" String fromString \u003d this.from.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" String toString \u003d this.to.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), fromString, toString);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"dishenggg":22}},{"path":"src/main/java/joe/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":" protected String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" return description;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.getDescription());","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"dishenggg":32}},{"path":"src/main/java/joe/tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":" public TodoTask(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"dishenggg":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"todo borrow book","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"deadline return book /by 26/8/2023 1200","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"event project meeting /from 22/8/2023 2359 /to 31/12/2100 0000","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"mark 2","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"mark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":"unmark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":"unmark 1","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":"todo todo","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":"mark 4","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":"unmark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":"mark a","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":"unmark a","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":"mark 1 1","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":"unmark 1 1","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":"markk 1","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":"unmarkk 1","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"mark","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":"unmark","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":"markk","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":"unmarkk","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"dishenggg"},"content":"deadline space test /by 22/8/2100 1111","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"dishenggg"},"content":"event many spaces /from 22/8/2500 1111 /to 22/8/2800 2222","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"dishenggg"},"content":"todo spaces","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"dishenggg"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"dishenggg"},"content":"delete 4","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"dishenggg"},"content":"deletee 1","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"dishenggg"},"content":"delete 1 1","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"dishenggg"},"content":"todo","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"dishenggg"},"content":"deadline","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"dishenggg"},"content":"event","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"dishenggg"},"content":"mark","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"dishenggg"},"content":"unmark","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"dishenggg"},"content":"delete","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"dishenggg"},"content":"deadline test no deadline /by","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"dishenggg"},"content":"event test no from /from /to tomorrow","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"dishenggg"},"content":"event test no to /from today /to","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"dishenggg"},"content":"deadline test bad date /by 33/12/1000 2000","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"dishenggg"},"content":"deadline test bad time /by 31/12/1000 2401","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"dishenggg"},"content":"bye","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"dishenggg":53}},{"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":"dishenggg"},"content":"REM delete saved task list from previous run","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"if exist joe.TXT del joe.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"javac -cp ..\\src\\main\\java\\ -Xlint:none -d ..\\bin ..\\src\\main\\java\\joe\\*.java ..\\src\\main\\java\\joe\\commands\\*.java ..\\src\\main\\java\\joe\\exceptions\\*.java ..\\src\\main\\java\\joe\\tasks\\*.java","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"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":21,"author":{"gitId":"dishenggg"},"content":"java -classpath ..\\bin Joe \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dishenggg":5,"-":19}},{"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":"dishenggg"},"content":"# delete saved task list from previous run","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":"if [ -e \"./joe.TXT\" ]","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":"then","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" rm joe.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":"fi","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"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":29,"author":{"gitId":"dishenggg"},"content":"java -classpath ../bin Joe \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dishenggg":7,"-":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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":" mainClass.set(\"joe.Joe\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"dishenggg"},"content":" archiveBaseName \u003d \"joe\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dishenggg":2,"-":40}},{"path":"src/main/java/joe/Joe.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"public class Joe {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" public Joe(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" tasks \u003d storage.readTasks();","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" ui.print(\"No saved task list was found.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" } catch (IOException | JoeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" ui.print(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" ui.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" ui.greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":" ui.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"dishenggg"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"dishenggg"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"dishenggg"},"content":" Command c \u003d Parser.parse(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"dishenggg"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"dishenggg"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"dishenggg"},"content":" } catch (JoeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"dishenggg"},"content":" ui.print(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"dishenggg"},"content":" } finally {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"dishenggg"},"content":" ui.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"dishenggg"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"dishenggg"},"content":" new Joe(\"joe.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"dishenggg":48,"-":1}},{"path":"src/main/java/joe/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"import joe.commands.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" private enum CommandType {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" LIST,","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" TODO,","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" DEADLINE,","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" EVENT,","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" MARK,","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" UNMARK,","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" DELETE,","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" BYE,","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" INVALID","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" private static final Pattern commandPattern \u003d Pattern.compile(\"^(\\\\S+)\\\\s?(.*)$\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" private static final String DATETIME_FORMAT \u003d \"d/M/yyyy HHmm\";","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":" public static Command parse(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d commandPattern.matcher(input.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":" if (!m.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(\"Invalid Command Format\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"dishenggg"},"content":" CommandType type \u003d parseType(m.group(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"dishenggg"},"content":" String args \u003d m.group(2);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"dishenggg"},"content":" switch (type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"dishenggg"},"content":" case BYE:","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"dishenggg"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"dishenggg"},"content":" case LIST:","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"dishenggg"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"dishenggg"},"content":" case MARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"dishenggg"},"content":" return handleMark(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"dishenggg"},"content":" case UNMARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"dishenggg"},"content":" return handleUnmark(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"dishenggg"},"content":" case TODO:","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"dishenggg"},"content":" return handleTodo(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"dishenggg"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"dishenggg"},"content":" return handleDeadline(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"dishenggg"},"content":" case EVENT:","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"dishenggg"},"content":" return handleEvent(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"dishenggg"},"content":" case DELETE:","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"dishenggg"},"content":" return handleDelete(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"dishenggg"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"dishenggg"},"content":" return handleInvalidKeyword();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"dishenggg"},"content":" private static CommandType parseType(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"dishenggg"},"content":" return CommandType.valueOf(input.toUpperCase());","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"dishenggg"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"dishenggg"},"content":" return CommandType.INVALID;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"dishenggg"},"content":" private static Command handleMark(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"dishenggg"},"content":" int idx \u003d parseIndexArgs(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"dishenggg"},"content":" return new MarkCommand(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"dishenggg"},"content":" } catch (JoeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(\"Invalid arguments for mark\\nPlease follow: mark \u003ctask_num\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"dishenggg"},"content":" private static Command handleUnmark(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"dishenggg"},"content":" int idx \u003d parseIndexArgs(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"dishenggg"},"content":" return new UnmarkCommand(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"dishenggg"},"content":" } catch (JoeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(\"Invalid arguments for unmark\\nPlease follow: unmark \u003ctask_num\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"dishenggg"},"content":" private static Command handleTodo(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"dishenggg"},"content":" Pattern p \u003d Pattern.compile(\"(\\\\S.+)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d p.matcher(args.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"dishenggg"},"content":" if (!m.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(\"Invalid arguments for todo\\nPlease follow: todo \u003ctask\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"dishenggg"},"content":" return new TodoCommand(m.group(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"dishenggg"},"content":" private static Command handleDeadline(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"dishenggg"},"content":" Pattern p \u003d Pattern.compile(\"(\\\\S.+)\\\\s+/by\\\\s+(\\\\d{1,2}/\\\\d{1,2}/\\\\d{4} \\\\d{4})\");","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d p.matcher(args.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"dishenggg"},"content":" if (!m.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"dishenggg"},"content":" \"Invalid arguments for deadline\\nPlease follow: deadline \u003ctask\u003e /by \u003cd/M/yyyy HHmm\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"dishenggg"},"content":" LocalDateTime by \u003d","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"dishenggg"},"content":" LocalDateTime.parse(m.group(2), DateTimeFormatter.ofPattern(DATETIME_FORMAT));","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"dishenggg"},"content":" return new DeadlineCommand(m.group(1), by);","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"dishenggg"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"dishenggg"},"content":" \"Failed to parse the date.\\nPlease ensure it is a valid datetime following the format \u003cd/M/yyyy HHmm\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"dishenggg"},"content":" private static Command handleEvent(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"dishenggg"},"content":" Pattern p \u003d","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"dishenggg"},"content":" Pattern.compile(","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"dishenggg"},"content":" \"(\\\\S.+)\\\\s+/from\\\\s+(\\\\d{1,2}/\\\\d{1,2}/\\\\d{4} \\\\d{4})\\\\s+/to\\\\s+(\\\\d{1,2}/\\\\d{1,2}/\\\\d{4} \\\\d{4})\");","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d p.matcher(args.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"dishenggg"},"content":" if (!m.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"dishenggg"},"content":" \"Invalid arguments for event\\nPlease follow: event \u003ctask\u003e /from \u003cd/M/yyyy HHmm\u003e /to \u003cd/M/yyyy HHmm\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"dishenggg"},"content":" LocalDateTime from \u003d","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"dishenggg"},"content":" LocalDateTime.parse(m.group(2), DateTimeFormatter.ofPattern(DATETIME_FORMAT));","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"dishenggg"},"content":" LocalDateTime to \u003d","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"dishenggg"},"content":" LocalDateTime.parse(m.group(3), DateTimeFormatter.ofPattern(DATETIME_FORMAT));","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"dishenggg"},"content":" return new EventCommand(m.group(1), from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"dishenggg"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"dishenggg"},"content":" \"Failed to parse the date.\\nPlease ensure it is a valid datetime following the format \u003cd/M/yyyy HHmm\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"dishenggg"},"content":" private static Command handleDelete(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"dishenggg"},"content":" int idx \u003d parseIndexArgs(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"dishenggg"},"content":" return new DeleteCommand(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"dishenggg"},"content":" } catch (JoeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(\"Invalid arguments for delete\\nPlease follow: delete \u003ctask_num\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"dishenggg"},"content":" private static Command handleInvalidKeyword() {","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"dishenggg"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"dishenggg"},"content":" for (CommandType cmd : CommandType.values()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"dishenggg"},"content":" if (CommandType.INVALID.equals(cmd)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"dishenggg"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"dishenggg"},"content":" sb.append(cmd.toString().toLowerCase());","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"dishenggg"},"content":" sb.append(\", \");","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"dishenggg"},"content":" sb.setLength(sb.length() - 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"dishenggg"},"content":" String msg \u003d","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"dishenggg"},"content":" String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"dishenggg"},"content":" \"Invalid Command Keyword!%nHere is a list of valid commands: %s\", sb);","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"dishenggg"},"content":" return new InvalidCommand(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"dishenggg"},"content":" private static int parseIndexArgs(String args) throws JoeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"dishenggg"},"content":" Pattern indexPattern \u003d Pattern.compile(\"^(\\\\d+)$\");","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d indexPattern.matcher(args.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"dishenggg"},"content":" if (!m.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"dishenggg"},"content":" throw new JoeException(\"Failed to parse index\");","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"dishenggg"},"content":" String idx \u003d m.group(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"dishenggg"},"content":" return Integer.parseInt(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":167}},{"path":"src/main/java/joe/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"import java.util.List;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"import joe.tasks.TodoTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" private final Path taskFilePath;","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" public Storage(String fileName) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" this.taskFilePath \u003d Paths.get(fileName);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" private static final Pattern taskPattern \u003d Pattern.compile(\"^\\\\[([TDE])\\\\]\\\\[[X\\\\s]\\\\]\\\\s(.+)\");","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" private static final Pattern todoPattern \u003d Pattern.compile(\"^\\\\[T\\\\]\\\\[[X\\\\s]\\\\]\\\\s+(.+)$\");","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" private static final Pattern deadlinePattern \u003d","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" Pattern.compile(\"^\\\\[D\\\\]\\\\[[X\\\\s]\\\\]\\\\s+(.+)\\\\s+\\\\(by:\\\\s+(.+)\\\\)$\");","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":" private static final Pattern eventPattern \u003d","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":" Pattern.compile(\"^\\\\[E\\\\]\\\\[[X\\\\s]\\\\]\\\\s+(.+)\\\\s+\\\\(from:\\\\s+(.+)\\\\s+to:\\\\s+(.+)\\\\)$\");","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" private void handleTodo(String input, TaskList tasks) throws JoeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d todoPattern.matcher(input);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":" if (m.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"dishenggg"},"content":" TodoTask newTask \u003d new TodoTask(m.group(1));","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"dishenggg"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"dishenggg"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"dishenggg"},"content":" throw new JoeException(\"Todo in task file is corrupt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"dishenggg"},"content":" private void handleDeadline(String input, TaskList tasks) throws JoeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d deadlinePattern.matcher(input);","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"dishenggg"},"content":" if (m.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"dishenggg"},"content":" TodoTask newTask \u003d new TodoTask(m.group(1));","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"dishenggg"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"dishenggg"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"dishenggg"},"content":" throw new JoeException(\"Deadline in task file is corrupt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"dishenggg"},"content":" private void handleEvent(String input, TaskList tasks) throws JoeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d eventPattern.matcher(input);","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"dishenggg"},"content":" if (m.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"dishenggg"},"content":" TodoTask newTask \u003d new TodoTask(m.group(1));","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"dishenggg"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"dishenggg"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"dishenggg"},"content":" throw new JoeException(\"Event in task file is corrupt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"dishenggg"},"content":" public TaskList readTasks() throws JoeException, IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"dishenggg"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"dishenggg"},"content":" if (!Files.exists(taskFilePath)) {","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"dishenggg"},"content":" throw new FileNotFoundException();","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"dishenggg"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(taskFilePath);","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"dishenggg"},"content":" for (String line : lines) {","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"dishenggg"},"content":" Matcher m \u003d taskPattern.matcher(line);","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"dishenggg"},"content":" if (!m.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"dishenggg"},"content":" throw new JoeException(\"Task file is corrupt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"dishenggg"},"content":" String type \u003d m.group(1);","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"dishenggg"},"content":" switch (type) {","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"dishenggg"},"content":" case \"T\":","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"dishenggg"},"content":" handleTodo(line, tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"dishenggg"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"dishenggg"},"content":" case \"D\":","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"dishenggg"},"content":" handleDeadline(line, tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"dishenggg"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"dishenggg"},"content":" case \"E\":","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"dishenggg"},"content":" handleEvent(line, tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"dishenggg"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"dishenggg"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"dishenggg"},"content":" throw new JoeException(\"Task file is corrupt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"dishenggg"},"content":" return tasks;","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":88,"author":{"gitId":"dishenggg"},"content":" public void saveToFile(TaskList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"dishenggg"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"dishenggg"},"content":" List\u003cString\u003e taskStrings \u003d tasks.getStringList();","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"dishenggg"},"content":" Files.write(","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"dishenggg"},"content":" taskFilePath,","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"dishenggg"},"content":" taskStrings,","lastModifiedDate":"2023-08-26"},{"lineNumber":94,"author":{"gitId":"dishenggg"},"content":" StandardOpenOption.CREATE,","lastModifiedDate":"2023-08-26"},{"lineNumber":95,"author":{"gitId":"dishenggg"},"content":" StandardOpenOption.TRUNCATE_EXISTING);","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"dishenggg"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":97,"author":{"gitId":"dishenggg"},"content":" System.out.println(\"Failed to save to file: \" + e);","lastModifiedDate":"2023-08-26"},{"lineNumber":98,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":99,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":100,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"dishenggg":100}},{"path":"src/main/java/joe/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" public Task get(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" return tasks.get(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" public void remove(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" tasks.remove(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":" public int size() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" return tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":" public List\u003cString\u003e getStringList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"dishenggg"},"content":" return tasks.stream().map(Task::toString).collect(Collectors.toList());","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"dishenggg"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"dishenggg"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"dishenggg"},"content":" sb.append(\"Here are your tasks:\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"dishenggg"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"dishenggg"},"content":" sb.append(i + 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"dishenggg"},"content":" sb.append(\".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"dishenggg"},"content":" sb.append(tasks.get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"dishenggg"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"dishenggg"},"content":" sb.setLength(sb.length() - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"dishenggg"},"content":" return sb.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":47}},{"path":"src/main/java/joe/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" public void greet() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" System.out.println(\"Hello! I\u0027m Joe\\nWhat can i do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" public void newLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" System.out.println();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" public void exit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" public void print(String msg) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":31}},{"path":"src/main/java/joe/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":" public ByeCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" this.isExit \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" ui.print(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" ui.exit();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":18}},{"path":"src/main/java/joe/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeIndexOutOfBoundsException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" protected boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage)","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" throws JoeIndexOutOfBoundsException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" return isExit;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":17}},{"path":"src/main/java/joe/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"import joe.tasks.DeadlineTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" private final String taskDetails;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" private final LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" public DeadlineCommand(String taskDetails, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" this.taskDetails \u003d taskDetails;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" DeadlineTask newTask \u003d new DeadlineTask(taskDetails, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" ui.print(","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" \"Got it, I\u0027ve added this task:%n %s%nNow you have %d tasks in the list.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" newTask, tasks.size()));","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":29}},{"path":"src/main/java/joe/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeIndexOutOfBoundsException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"import joe.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" private final int idx;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" public DeleteCommand(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" this.idx \u003d idx;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JoeIndexOutOfBoundsException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" if (idx \u003c 0 || idx \u003e tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" throw new JoeIndexOutOfBoundsException(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" Task deletedTask \u003d tasks.get(idx - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" tasks.remove(idx - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" ui.print(","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" \"Noted. I\u0027ve removed this task:%n %s%nNow you have %d tasks in the list.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":" deletedTask, tasks.size()));","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":30}},{"path":"src/main/java/joe/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"import joe.tasks.EventTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" private final String taskDetails;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" private final LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" private final LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" public EventCommand(String taskDetails, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" this.taskDetails \u003d taskDetails;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" EventTask newTask \u003d new EventTask(taskDetails, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" ui.print(","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":" \"Got it, I\u0027ve added this task:%n %s%nNow you have %d tasks in the list.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":" newTask, tasks.size()));","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":31}},{"path":"src/main/java/joe/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":" private final String msg;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" public InvalidCommand(String msg) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" this.msg \u003d msg;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" ui.print(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":18}},{"path":"src/main/java/joe/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" ui.print(tasks.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":13}},{"path":"src/main/java/joe/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeIndexOutOfBoundsException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" private int idx;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" public MarkCommand(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" this.idx \u003d idx;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JoeIndexOutOfBoundsException {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" if (idx \u003c 0 || idx \u003e tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" throw new JoeIndexOutOfBoundsException(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" tasks.get(idx - 1).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" ui.print(String.format(\"Nice! I\u0027ve marked this task as done:%n %s\", tasks.get(idx - 1)));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":26}},{"path":"src/main/java/joe/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.tasks.TodoTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" private final String taskDetails;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" public TodoCommand(String taskDetails) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" this.taskDetails \u003d taskDetails;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" TodoTask newTask \u003d new TodoTask(taskDetails);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" ui.print(","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" String.format(","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" \"Got it, I\u0027ve added this task:%n %s%nNow you have %d tasks in the list.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" newTask, tasks.size()));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":25}},{"path":"src/main/java/joe/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import joe.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import joe.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"import joe.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"import joe.exceptions.JoeIndexOutOfBoundsException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" private int idx;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" public UnmarkCommand(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" this.idx \u003d idx;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JoeIndexOutOfBoundsException {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" if (idx \u003c 0 || idx \u003e tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" throw new JoeIndexOutOfBoundsException(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" tasks.get(idx - 1).markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" ui.print(String.format(\"OK! I\u0027ve marked this task as not done:%n %s\", tasks.get(idx - 1)));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":26}},{"path":"src/main/java/joe/exceptions/JoeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"public class JoeException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":" public JoeException(String error) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":" super(error);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":7}},{"path":"src/main/java/joe/exceptions/JoeIndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"public class JoeIndexOutOfBoundsException extends JoeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":" public JoeIndexOutOfBoundsException(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":" super(\"Task \" + idx + \" does not exist\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dishenggg":7}},{"path":"src/main/java/joe/tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":" private final LocalDateTime deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" public DeadlineTask(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" String deadlineString \u003d this.deadline.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), deadlineString);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"dishenggg":19}},{"path":"src/main/java/joe/tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":" private final LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":" private final LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" public EventTask(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" String fromString \u003d this.from.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":" String toString \u003d this.to.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), fromString, toString);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"dishenggg":22}},{"path":"src/main/java/joe/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":" protected String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":" return description;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.getDescription());","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"dishenggg":32}},{"path":"src/main/java/joe/tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"package joe.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":" public TodoTask(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"dishenggg":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"dishenggg"},"content":"todo borrow book","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"dishenggg"},"content":"deadline return book /by 26/8/2023 1200","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"dishenggg"},"content":"event project meeting /from 22/8/2023 2359 /to 31/12/2100 0000","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"dishenggg"},"content":"mark 2","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"dishenggg"},"content":"mark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"dishenggg"},"content":"unmark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"dishenggg"},"content":"unmark 1","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":"todo todo","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":"mark 4","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":"unmark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":"mark a","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"dishenggg"},"content":"unmark a","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"dishenggg"},"content":"mark 1 1","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"dishenggg"},"content":"unmark 1 1","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"dishenggg"},"content":"markk 1","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"dishenggg"},"content":"unmarkk 1","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"dishenggg"},"content":"mark","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"dishenggg"},"content":"unmark","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"dishenggg"},"content":"markk","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"dishenggg"},"content":"unmarkk","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"dishenggg"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"dishenggg"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"dishenggg"},"content":"deadline space test /by 22/8/2100 1111","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"dishenggg"},"content":"event many spaces /from 22/8/2500 1111 /to 22/8/2800 2222","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"dishenggg"},"content":"todo spaces","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"dishenggg"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"dishenggg"},"content":"delete 4","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"dishenggg"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"dishenggg"},"content":"deletee 1","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"dishenggg"},"content":"delete 1 1","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"dishenggg"},"content":"todo","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"dishenggg"},"content":"deadline","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"dishenggg"},"content":"event","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"dishenggg"},"content":"mark","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"dishenggg"},"content":"unmark","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"dishenggg"},"content":"delete","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"dishenggg"},"content":"deadline test no deadline /by","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"dishenggg"},"content":"event test no from /from /to tomorrow","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"dishenggg"},"content":"event test no to /from today /to","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"dishenggg"},"content":"deadline test bad date /by 33/12/1000 2000","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"dishenggg"},"content":"deadline test bad time /by 31/12/1000 2401","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"dishenggg"},"content":"bye","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"dishenggg":53}},{"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":"dishenggg"},"content":"REM delete saved task list from previous run","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"dishenggg"},"content":"if exist joe.TXT del joe.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"dishenggg"},"content":"javac -cp ..\\src\\main\\java\\ -Xlint:none -d ..\\bin ..\\src\\main\\java\\joe\\*.java ..\\src\\main\\java\\joe\\commands\\*.java ..\\src\\main\\java\\joe\\exceptions\\*.java ..\\src\\main\\java\\joe\\tasks\\*.java","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"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":21,"author":{"gitId":"dishenggg"},"content":"java -classpath ..\\bin Joe \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dishenggg":5,"-":19}},{"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":"dishenggg"},"content":"# delete saved task list from previous run","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"dishenggg"},"content":"if [ -e \"./joe.TXT\" ]","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"dishenggg"},"content":"then","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"dishenggg"},"content":" rm joe.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"dishenggg"},"content":"fi","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dishenggg"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"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":29,"author":{"gitId":"dishenggg"},"content":"java -classpath ../bin Joe \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dishenggg":7,"-":37}}] diff --git a/dishenggg_ip_master/commits.json b/dishenggg_ip_master/commits.json index d7373d95..8e66cacc 100644 --- a/dishenggg_ip_master/commits.json +++ b/dishenggg_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"dishenggg":[{"date":"2023-08-20","commitResults":[{"hash":"99e53b6afb476b32b537f9a957f55eaffe19e906","isMergeCommit":false,"messageTitle":"Add greet and exit to chat bot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"e4f88609de39332a6309ef6f2eed49f018944997","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"e8da6b098b21b688497412fd6aba45ab633c8970","isMergeCommit":false,"messageTitle":"Added list to chatbot","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":1}}},{"hash":"0a62e2057853892afd1a65471977ae14d87bf532","isMergeCommit":false,"messageTitle":"Added mark as done to chatbot","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":29}}},{"hash":"aae008f81fbdf6494c0063b2f7dff8314493ee9d","isMergeCommit":false,"messageTitle":"Added Todos, events and deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":144,"deletions":78}}},{"hash":"d7044bc511894fc94597ca489a856fae15df20b2","isMergeCommit":false,"messageTitle":"Added Automated Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":21,"deletions":0},"java":{"insertions":15,"deletions":5}}},{"hash":"38f229731186df511432008978d56b3c84943ba6","isMergeCommit":false,"messageTitle":"Add bye to test input","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}},{"hash":"18215e6da6a2c5494a0d9eeed30762a6696e7525","isMergeCommit":false,"messageTitle":"Clean up","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}}]},{"date":"2023-08-23","commitResults":[{"hash":"53bc19b360af5bc4381fbe1c465ea0fb817a52d8","isMergeCommit":false,"messageTitle":"Added exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":48}}},{"hash":"7dc8e0ebc91407bcc9e31224ffc5e5dd0cb72ac7","isMergeCommit":false,"messageTitle":"Updated tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":22,"deletions":7}}},{"hash":"533c5725a271692cd45a876345500051eba67874","isMergeCommit":false,"messageTitle":"Added delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":1},"java":{"insertions":35,"deletions":9}}},{"hash":"e5f70bfd14c5584d9f62cb5485de74a671ef7bac","isMergeCommit":false,"messageTitle":"Removed DukeException.java and changed formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":53}}},{"hash":"4daff8177566a1f770a06632c981520ecca92a95","isMergeCommit":false,"messageTitle":"Change IOBE to DukeIOBException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"53413baa98d01ec5e7a1312147479cc9f6711667","isMergeCommit":false,"messageTitle":"Changed commands to use enum","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":17}}},{"hash":"cd29ac1f21b3a063aab787625968d7b5da6cd79c","isMergeCommit":false,"messageTitle":"Clean up imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}}]},{"date":"2023-08-26","commitResults":[{"hash":"83b797635aa01bbe931f72a8d0b36a2636faad49","isMergeCommit":false,"messageTitle":"Add saving, update test input.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":159,"deletions":29}}},{"hash":"2e115793dcfbc5b6d9c4d8b74f6c7687fbe3d1ca","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-27","commitResults":[{"hash":"9aef6270b98245e662e608da0d2c2c3592a0d486","isMergeCommit":false,"messageTitle":"Change deadline and event input to datetime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":73}}},{"hash":"59ddf8310b68c0519294356afb82ce037a9dc35b","isMergeCommit":false,"messageTitle":"Update EXPECTED.TXT and input.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":4}}},{"hash":"4884903b57a7bf9754a31fdbcf8f4d046a5adc5b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"a85357a2cdbfda275c2342ef5ce495d06f9c2049","isMergeCommit":false,"messageTitle":"Rename Duke to Joe","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":49},"bat":{"insertions":4,"deletions":1},"sh":{"insertions":7,"deletions":1}}},{"hash":"672b63957a392da27a5dc535a0ee1da0f56d1d53","isMergeCommit":false,"messageTitle":"Split Joe into more objects","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":454,"deletions":252}}},{"hash":"04e19d119f6af98747d4ea98a397956c0007f11a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"38c938e9b5aa4fad6b4f4d0ec83cd83cc977d81b","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":124,"deletions":30},"bat":{"insertions":1,"deletions":1}}},{"hash":"b12c4eae58fcbb63b88d46b6d9a69452ea3f7bbb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"dishenggg":{"java":725,"md":0,"fxml":0,"sh":7,"bat":5,"gradle":0,"txt":53}},"authorContributionVariance":{"dishenggg":77776.39},"authorDisplayNameMap":{"dishenggg":"CS2103T-T17-3 YEO ..HENG"}} +{"authorDailyContributionsMap":{"dishenggg":[{"date":"2023-08-20","commitResults":[{"hash":"99e53b6afb476b32b537f9a957f55eaffe19e906","isMergeCommit":false,"messageTitle":"Add greet and exit to chat bot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"e4f88609de39332a6309ef6f2eed49f018944997","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"e8da6b098b21b688497412fd6aba45ab633c8970","isMergeCommit":false,"messageTitle":"Added list to chatbot","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":1}}},{"hash":"0a62e2057853892afd1a65471977ae14d87bf532","isMergeCommit":false,"messageTitle":"Added mark as done to chatbot","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":29}}},{"hash":"aae008f81fbdf6494c0063b2f7dff8314493ee9d","isMergeCommit":false,"messageTitle":"Added Todos, events and deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":144,"deletions":78}}},{"hash":"d7044bc511894fc94597ca489a856fae15df20b2","isMergeCommit":false,"messageTitle":"Added Automated Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":21,"deletions":0},"java":{"insertions":15,"deletions":5}}},{"hash":"38f229731186df511432008978d56b3c84943ba6","isMergeCommit":false,"messageTitle":"Add bye to test input","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}},{"hash":"18215e6da6a2c5494a0d9eeed30762a6696e7525","isMergeCommit":false,"messageTitle":"Clean up","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}}]},{"date":"2023-08-23","commitResults":[{"hash":"53bc19b360af5bc4381fbe1c465ea0fb817a52d8","isMergeCommit":false,"messageTitle":"Added exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":48}}},{"hash":"7dc8e0ebc91407bcc9e31224ffc5e5dd0cb72ac7","isMergeCommit":false,"messageTitle":"Updated tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":22,"deletions":7}}},{"hash":"533c5725a271692cd45a876345500051eba67874","isMergeCommit":false,"messageTitle":"Added delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":1},"java":{"insertions":35,"deletions":9}}},{"hash":"e5f70bfd14c5584d9f62cb5485de74a671ef7bac","isMergeCommit":false,"messageTitle":"Removed DukeException.java and changed formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":53}}},{"hash":"4daff8177566a1f770a06632c981520ecca92a95","isMergeCommit":false,"messageTitle":"Change IOBE to DukeIOBException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"53413baa98d01ec5e7a1312147479cc9f6711667","isMergeCommit":false,"messageTitle":"Changed commands to use enum","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":17}}},{"hash":"cd29ac1f21b3a063aab787625968d7b5da6cd79c","isMergeCommit":false,"messageTitle":"Clean up imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}}]},{"date":"2023-08-26","commitResults":[{"hash":"83b797635aa01bbe931f72a8d0b36a2636faad49","isMergeCommit":false,"messageTitle":"Add saving, update test input.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":159,"deletions":29}}},{"hash":"2e115793dcfbc5b6d9c4d8b74f6c7687fbe3d1ca","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-27","commitResults":[{"hash":"9aef6270b98245e662e608da0d2c2c3592a0d486","isMergeCommit":false,"messageTitle":"Change deadline and event input to datetime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":73}}},{"hash":"59ddf8310b68c0519294356afb82ce037a9dc35b","isMergeCommit":false,"messageTitle":"Update EXPECTED.TXT and input.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":4}}},{"hash":"4884903b57a7bf9754a31fdbcf8f4d046a5adc5b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"a85357a2cdbfda275c2342ef5ce495d06f9c2049","isMergeCommit":false,"messageTitle":"Rename Duke to Joe","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":49},"bat":{"insertions":4,"deletions":1},"sh":{"insertions":7,"deletions":1}}},{"hash":"672b63957a392da27a5dc535a0ee1da0f56d1d53","isMergeCommit":false,"messageTitle":"Split Joe into more objects","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":454,"deletions":252}}},{"hash":"04e19d119f6af98747d4ea98a397956c0007f11a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"38c938e9b5aa4fad6b4f4d0ec83cd83cc977d81b","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":124,"deletions":30},"bat":{"insertions":1,"deletions":1}}},{"hash":"b12c4eae58fcbb63b88d46b6d9a69452ea3f7bbb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"f719096c1a0765228805d525c8ede0e0fe06268e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"33908579b89c3c87f953d2fd976b84fdde61ac5b","isMergeCommit":false,"messageTitle":"Set up gradle for joe","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"dishenggg":{"java":725,"md":0,"fxml":0,"sh":7,"bat":5,"gradle":2,"txt":53}},"authorContributionVariance":{"dishenggg":70644.336},"authorDisplayNameMap":{"dishenggg":"CS2103T-T17-3 YEO ..HENG"}} diff --git a/dylkaw_ip_master/authorship.json b/dylkaw_ip_master/authorship.json index 36decddb..e05c3e13 100644 --- a/dylkaw_ip_master/authorship.json +++ b/dylkaw_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":"dylkaw"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","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":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":" mainClass.set(\"glub.Glub\")","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":" archiveFileName \u003d \u0027glub.jar\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dylkaw":4,"-":38}},{"path":"src/main/java/glub/Glub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"public class Glub {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":" private Parser parser;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":" public Glub(Storage storage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":" this.taskList \u003d new TaskList(storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" } catch (GlubException ex) {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" Ui.printError(ex.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" this.parser \u003d new Parser(taskList, storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":" public void run() {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" parser.listen();","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" Glub glub \u003d new Glub(new Storage(\"tasks.txt\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" Ui.greet();","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":" glub.run();","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"dylkaw":28}},{"path":"src/main/java/glub/GlubException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"public class GlubException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":" public GlubException(String msg) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":" super(msg);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"dylkaw":7}},{"path":"src/main/java/glub/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"import glub.task.TaskType;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":" TaskList taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":" boolean isListening \u003d true;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" public Parser(TaskList taskList, Storage storage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" public void listen() {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":" Scanner inputScanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" while (isListening) {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":" String command \u003d inputScanner.next();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" switch (command) {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" case \"bye\":","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" isListening \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":" Ui.sayGoodbye();","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":" case \"list\":","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":" Ui.printListMsg(this.taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" case \"mark\":","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" taskList.mark(inputScanner.nextInt());","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"dylkaw"},"content":" taskList.unmark(inputScanner.nextInt());","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"dylkaw"},"content":" case \"delete\":","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":" taskList.deleteTask(inputScanner.nextInt());","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"dylkaw"},"content":" case \"todo\":","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"dylkaw"},"content":" String todo \u003d inputScanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"dylkaw"},"content":" taskList.addTask(todo, TaskType.TODO, false);","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"dylkaw"},"content":" Ui.printAddMsg(taskList.getTaskList());","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(taskList.getTaskList());","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"dylkaw"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"dylkaw"},"content":" String deadline \u003d inputScanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"dylkaw"},"content":" taskList.addTask(deadline, TaskType.DEADLINE, false);","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"dylkaw"},"content":" Ui.printAddMsg(taskList.getTaskList());","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(taskList.getTaskList());","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"dylkaw"},"content":" case \"event\":","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"dylkaw"},"content":" String event \u003d inputScanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"dylkaw"},"content":" taskList.addTask(event, TaskType.EVENT, false);","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"dylkaw"},"content":" Ui.printAddMsg(taskList.getTaskList());","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(taskList.getTaskList());","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"dylkaw"},"content":" default:","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(\"OOPS!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"dylkaw"},"content":" } catch (GlubException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"dylkaw"},"content":" Ui.printError(ex.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"dylkaw":65}},{"path":"src/main/java/glub/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":"public class Storage {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" private String taskListPath;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" public Storage(String taskListPath) {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" this.taskListPath \u003d taskListPath;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" public ArrayList\u003cString\u003e getTaskDetails() throws GlubException{","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" File taskFile \u003d new File(this.taskListPath);","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":" ArrayList\u003cString\u003e taskDetails \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" taskFile.createNewFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" Scanner scanner \u003d new Scanner(taskFile);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" String task \u003d scanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":" taskDetails.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":" scanner.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" } catch (FileNotFoundException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(\"Task list not found!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(\"Task list file creation failed!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"dylkaw"},"content":" return taskDetails;","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":" public void saveTasks(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"dylkaw"},"content":" FileWriter writer \u003d new FileWriter(\"tasks.txt\", false);","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"dylkaw"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"dylkaw"},"content":" writer.write(taskList.get(i).toSaveFormat());","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"dylkaw"},"content":" writer.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"dylkaw"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"dylkaw"},"content":" Ui.printError(\"Saving tasks failed.\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"dylkaw"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"dylkaw":49}},{"path":"src/main/java/glub/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"import glub.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"public class Ui {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":" public static void printHorizontalLine() {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"_________________________________________________\");","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" public static void greet() {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Hello! I\u0027m Glub!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" public static void sayGoodbye() {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" public static void printAddMsg(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":" int size \u003d taskList.size();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" System.out.printf(\" \\t%s%n\", taskList.get(size - 1));","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" System.out.printf(\"Now you have %d %s in the list.%n\", size, size \u003d\u003d 1 ? \"task\" : \"tasks\");","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"dylkaw"},"content":" public static void printDeleteMsg(ArrayList\u003cTask\u003e taskList, Task deleted) {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"dylkaw"},"content":" int size \u003d taskList.size();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"dylkaw"},"content":" System.out.printf(\"\\t%s%n\", deleted);","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"dylkaw"},"content":" System.out.printf(\"Now you have %d %s in the list.%n\", size, size \u003d\u003d 1 ? \"task\" : \"tasks\");","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"dylkaw"},"content":" public static void printListMsg(TaskList taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"dylkaw"},"content":" System.out.println(taskList.showList());","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"dylkaw"},"content":" public static void printMarkMsg(Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"dylkaw"},"content":" System.out.printf(\"\\t%s%n\", task);","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"dylkaw"},"content":" public static void printUnmarkMsg(Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"dylkaw"},"content":" System.out.printf(\"\\t%s%n\", task);","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"dylkaw"},"content":" public static void printError(String msg) {","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"dylkaw"},"content":" System.err.println(msg);","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"dylkaw":70}},{"path":"src/main/java/glub/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":" public Deadline(String task, boolean isDone, LocalDateTime deadline) {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":" super(task, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" return \"D|\" + super.toSaveFormat() + String.format(\"|%s\\n\", super.getSaveDateTime(deadline));","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" return \"[D]\" + super.toString() + String.format(\"(by: %s)\", super.getDisplayDateTime(deadline));","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"dylkaw":21}},{"path":"src/main/java/glub/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":" public Event(String task, boolean isDone, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":" super(task, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" return \"E|\" + super.toSaveFormat()","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" + String.format(\"|%s|%s\\n\", super.getSaveDateTime(start), super.getSaveDateTime(end));","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" return \"[E]\" + super.toString()","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" + String.format(\"(from: %s to: %s)\", super.getDisplayDateTime(start), super.getDisplayDateTime(end));","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"dylkaw":25}},{"path":"src/main/java/glub/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":" private String task;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":" public Task(String task, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" public String getDisplayDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" DateTimeFormatter format \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" return dateTime.format(format);","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" public String getSaveDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" DateTimeFormatter format \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":" return dateTime.format(format);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" public String getDoneIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" return isDone ? \"X\" : \" \";","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" public void setDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" public void setUndone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"dylkaw"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"dylkaw"},"content":" return String.format(\"%s|%s\", getDoneIcon(), task);","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"dylkaw"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"dylkaw"},"content":" return String.format(\"[%s]%s\", getDoneIcon(), task);","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"dylkaw":42}},{"path":"src/main/java/glub/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.GlubException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"import glub.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"import glub.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":"public class TaskList {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" private Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" public TaskList(Storage storage) throws GlubException {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" loadTasks();","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" return this.taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" public void loadTasks() throws GlubException {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":" ArrayList\u003cString\u003e taskDetails \u003d storage.getTaskDetails();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":" for (int i \u003d 0; i \u003c taskDetails.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":" String task \u003d taskDetails.get(i);","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" String[] data \u003d task.split(\"\\\\|\");","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" boolean isDone \u003d data[1].equals(\"X\");","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":" switch (data[0]) {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":" case \"T\":","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"dylkaw"},"content":" addTask(String.format(\"%s\", data[2]), TaskType.TODO, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"dylkaw"},"content":" case \"D\":","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":" addTask(String.format(\"%s /by %s\", data[2], data[3]),","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"dylkaw"},"content":" TaskType.DEADLINE, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"dylkaw"},"content":" case \"E\":","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"dylkaw"},"content":" addTask(String.format(\"%s /from %s /to %s\", data[2], data[3], data[4]),","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"dylkaw"},"content":" TaskType.EVENT, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"dylkaw"},"content":" public void addTask(String task, TaskType taskType, boolean isDone) throws GlubException {","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"dylkaw"},"content":" DateTimeFormatter dateTimeFormat \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"dylkaw"},"content":" if (task.equals(\"\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(String.format(\"OOPS!! The description of a %s cannot be empty.\\n\", taskType));","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"dylkaw"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"dylkaw"},"content":" case TODO:","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"dylkaw"},"content":" taskList.add(new ToDo(task, isDone));","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"dylkaw"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"dylkaw"},"content":" String[] deadlinePortions \u003d task.split(\"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"dylkaw"},"content":" String deadlineDesc \u003d deadlinePortions[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"dylkaw"},"content":" String deadline \u003d deadlinePortions[1].split(\" \", 2)[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"dylkaw"},"content":" LocalDateTime deadlineDateTime \u003d LocalDateTime.parse(deadline, dateTimeFormat);","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"dylkaw"},"content":" taskList.add(new Deadline(deadlineDesc, isDone, deadlineDateTime));","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"dylkaw"},"content":" } catch (ArrayIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(\"OOPS!! Please provide a deadline for your deadline task.\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"dylkaw"},"content":" } catch (DateTimeParseException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(\"Invalid deadline format! Please ensure it is in dd-MM-yyyy HHmm format!\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"dylkaw"},"content":" case EVENT:","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"dylkaw"},"content":" String[] eventPortions \u003d task.split(\"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"dylkaw"},"content":" String eventDesc \u003d eventPortions[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"dylkaw"},"content":" String[] startParts \u003d eventPortions[1].split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"dylkaw"},"content":" String start \u003d startParts[1] + \" \" + startParts[2];","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"dylkaw"},"content":" String[] endParts \u003d eventPortions[2].split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"dylkaw"},"content":" String end \u003d endParts[1] + \" \" + endParts[2];","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"dylkaw"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(start, dateTimeFormat);","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"dylkaw"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(end, dateTimeFormat);","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"dylkaw"},"content":" taskList.add(new Event(eventDesc, isDone, startDateTime, endDateTime));","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"dylkaw"},"content":" } catch (ArrayIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(\"OOPS!! Ensure that your event has a start and end!\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"dylkaw"},"content":" } catch (DateTimeParseException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"dylkaw"},"content":" \"Invalid start/end format! Please ensure they are in dd/MM/yyyy HH:mm format!\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(this.taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"dylkaw"},"content":" public void deleteTask(int taskNum) throws GlubException {","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"dylkaw"},"content":" Task deleted \u003d taskList.remove(taskNum - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"dylkaw"},"content":" Ui.printDeleteMsg(taskList, deleted);","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"dylkaw"},"content":" } catch (IndexOutOfBoundsException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(String.format(\"OOPS!! Glub.Task %d does not exist!\\n\", taskNum));","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(this.taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"dylkaw"},"content":" public String showList() {","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"dylkaw"},"content":" StringBuilder list \u003d new StringBuilder();","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"dylkaw"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"dylkaw"},"content":" list.append(String.format(\" %d. %s\\n\", i + 1, taskList.get(i)));","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"dylkaw"},"content":" return list.toString();","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"dylkaw"},"content":" public void mark(int taskNum) {","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"dylkaw"},"content":" Task task \u003d taskList.get(taskNum - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"dylkaw"},"content":" task.setDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"dylkaw"},"content":" Ui.printMarkMsg(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(this.taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":115,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":116,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"dylkaw"},"content":" public void unmark(int taskNum) {","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"dylkaw"},"content":" Task task \u003d taskList.get(taskNum - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"dylkaw"},"content":" task.setUndone();","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"dylkaw"},"content":" Ui.printUnmarkMsg(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(this.taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"dylkaw":123}},{"path":"src/main/java/glub/task/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"public enum TaskType {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":" TODO,","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":" DEADLINE,","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":" EVENT","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"dylkaw":7}},{"path":"src/main/java/glub/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":" public ToDo(String task, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":" super(task, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":" return \"T|\" + super.toSaveFormat() + \"\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"dylkaw":16}},{"path":"src/test/java/glub/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task; //same package as the class being tested","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.Glub;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"import glub.GlubException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"import glub.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" public void addTask_emptyTask_exceptionThrown(){","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" new TaskList(new Storage(\"dummystorage.txt\")).addTask(\"\", TaskType.TODO, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" } catch (GlubException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":" assertEquals(\"OOPS!! The description of a TODO cannot be empty.\\n\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" public void addTask_noDeadline_exceptionThrown(){","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":" new TaskList(new Storage(\"dummystorage.txt\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" .addTask(\"run\", TaskType.DEADLINE, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":" } catch (GlubException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":" assertEquals(\"OOPS!! Please provide a deadline for your deadline task.\\n\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"dylkaw":32}},{"path":"src/test/java/glub/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task; //same package as the class being tested","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.Glub;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"import glub.GlubException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"import glub.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" public void toSaveFormat_success(){","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" assertEquals(\"T|X|run far\\n\", new ToDo(\"run far\", true).toSaveFormat());","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"dylkaw":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"todo run","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"mark 1","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"unmark 1","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"delete 1","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"bye","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"dylkaw":6}},{"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":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dylkaw":1,"-":33}}] +[{"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":"dylkaw"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","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":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":" mainClass.set(\"glub.Glub\")","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":" archiveFileName \u003d \u0027glub.jar\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dylkaw":4,"-":38}},{"path":"src/main/java/glub/Glub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":" * A task management chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":"public class Glub {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" /** Tasklist of the Glub object. */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" /** Parser of the Glub object. */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" private Parser parser;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" * Create a Glub object with a Storage object to initialise the chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" * @param storage The required storage object.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" public Glub(Storage storage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":" this.taskList \u003d new TaskList(storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" } catch (GlubException ex) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" Ui.printError(ex.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":" this.parser \u003d new Parser(taskList, storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":" * Start the application by beginning to listen to user inputs.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" public void run() {","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":" parser.listen();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"dylkaw"},"content":" * The main method to launch the Glub application.","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"dylkaw"},"content":" * @param args Not used.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"dylkaw"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"dylkaw"},"content":" Glub glub \u003d new Glub(new Storage(\"tasks.txt\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"dylkaw"},"content":" Ui.greet();","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"dylkaw"},"content":" glub.run();","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"dylkaw":46}},{"path":"src/main/java/glub/GlubException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"public class GlubException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":" public GlubException(String msg) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":" super(msg);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"dylkaw":7}},{"path":"src/main/java/glub/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"import glub.task.TaskType;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":" * Parser that handles user inputs.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" /** Tasklist associated to parser. */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" TaskList taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" /** Storage associated to parser. */","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" /** Status of parser. */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" boolean isListening \u003d true;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" * Initialises Parser object.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":" * @param taskList TaskList with all tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" * @param storage Storage object which saves tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" public Parser(TaskList taskList, Storage storage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" * Listen to user input and execute the corresponding command.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":" public void listen() {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":" Scanner inputScanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"dylkaw"},"content":" while (isListening) {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"dylkaw"},"content":" String command \u003d inputScanner.next();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":" switch (command) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"dylkaw"},"content":" case \"bye\":","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"dylkaw"},"content":" isListening \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"dylkaw"},"content":" Ui.sayGoodbye();","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"dylkaw"},"content":" case \"list\":","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"dylkaw"},"content":" Ui.printListMsg(this.taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"dylkaw"},"content":" case \"mark\":","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"dylkaw"},"content":" taskList.mark(inputScanner.nextInt());","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"dylkaw"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"dylkaw"},"content":" taskList.unmark(inputScanner.nextInt());","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"dylkaw"},"content":" case \"delete\":","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"dylkaw"},"content":" taskList.deleteTask(inputScanner.nextInt());","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"dylkaw"},"content":" case \"todo\":","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"dylkaw"},"content":" String todo \u003d inputScanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"dylkaw"},"content":" taskList.addTask(todo, TaskType.TODO, false);","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"dylkaw"},"content":" Ui.printAddMsg(taskList.getTaskList());","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(taskList.getTaskList());","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"dylkaw"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"dylkaw"},"content":" String deadline \u003d inputScanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"dylkaw"},"content":" taskList.addTask(deadline, TaskType.DEADLINE, false);","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"dylkaw"},"content":" Ui.printAddMsg(taskList.getTaskList());","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(taskList.getTaskList());","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"dylkaw"},"content":" case \"event\":","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"dylkaw"},"content":" String event \u003d inputScanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"dylkaw"},"content":" taskList.addTask(event, TaskType.EVENT, false);","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"dylkaw"},"content":" Ui.printAddMsg(taskList.getTaskList());","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(taskList.getTaskList());","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"dylkaw"},"content":" case \"find\":","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"dylkaw"},"content":" String searchString \u003d inputScanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"dylkaw"},"content":" Ui.printFindMsg(taskList, searchString);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"dylkaw"},"content":" default:","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(\"OOPS!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"dylkaw"},"content":" } catch (GlubException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"dylkaw"},"content":" Ui.printError(ex.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"dylkaw":84}},{"path":"src/main/java/glub/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" * Storage handles the reading of existing tasks and saving of new tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":"public class Storage {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" /** File path of existing stored task list. */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" private String taskListPath;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" * Initialises storage object.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":" * @param taskListPath Path of file containing task lists to be read.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" public Storage(String taskListPath) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" this.taskListPath \u003d taskListPath;","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":" * Reads tasks from file. Creates file if one does not already exist.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":" * @return Task details.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" * @throws GlubException If file creation fails.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":" public ArrayList\u003cString\u003e getTaskDetails() throws GlubException{","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":" File taskFile \u003d new File(this.taskListPath);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"dylkaw"},"content":" ArrayList\u003cString\u003e taskDetails \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"dylkaw"},"content":" taskFile.createNewFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":" Scanner scanner \u003d new Scanner(taskFile);","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"dylkaw"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"dylkaw"},"content":" String task \u003d scanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"dylkaw"},"content":" taskDetails.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"dylkaw"},"content":" scanner.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"dylkaw"},"content":" } catch (FileNotFoundException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(\"Task list not found!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"dylkaw"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(\"Task list file creation failed!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"dylkaw"},"content":" return taskDetails;","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"dylkaw"},"content":" * Saves tasks into a file.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"dylkaw"},"content":" * @param taskList List of tasks to be saved.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"dylkaw"},"content":" public void saveTasks(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"dylkaw"},"content":" FileWriter writer \u003d new FileWriter(\"tasks.txt\", false);","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"dylkaw"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"dylkaw"},"content":" writer.write(taskList.get(i).toSaveFormat());","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"dylkaw"},"content":" writer.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"dylkaw"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"dylkaw"},"content":" Ui.printError(\"Saving tasks failed.\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"dylkaw"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"dylkaw":67}},{"path":"src/main/java/glub/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"import glub.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":" * Ui handles all messages that the user will see.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"public class Ui {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" * Print horizontal line.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" public static void printHorizontalLine() {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"_________________________________________________\");","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" * Displays welcome message.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" public static void greet() {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Hello! I\u0027m Glub!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" * Displays farewell message.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":" public static void sayGoodbye() {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"dylkaw"},"content":" * Displays message indicating that a task has been added to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"dylkaw"},"content":" * @param taskList Task list which task has been added to.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"dylkaw"},"content":" public static void printAddMsg(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"dylkaw"},"content":" int size \u003d taskList.size();","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"dylkaw"},"content":" System.out.printf(\" \\t%s%n\", taskList.get(size - 1));","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"dylkaw"},"content":" System.out.printf(\"Now you have %d %s in the list.%n\", size, size \u003d\u003d 1 ? \"task\" : \"tasks\");","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"dylkaw"},"content":" * Displays message indicating that a task has been deleted from the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"dylkaw"},"content":" * @param taskList Task list which task has been deleted from.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"dylkaw"},"content":" * @param deleted Task that has been deleted.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"dylkaw"},"content":" public static void printDeleteMsg(ArrayList\u003cTask\u003e taskList, Task deleted) {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"dylkaw"},"content":" int size \u003d taskList.size();","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"dylkaw"},"content":" System.out.printf(\"\\t%s%n\", deleted);","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"dylkaw"},"content":" System.out.printf(\"Now you have %d %s in the list.%n\", size, size \u003d\u003d 1 ? \"task\" : \"tasks\");","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"dylkaw"},"content":" * Displays all tasks in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"dylkaw"},"content":" * @param taskList Task list containing all the tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"dylkaw"},"content":" public static void printListMsg(TaskList taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"dylkaw"},"content":" System.out.println(taskList.showList());","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"dylkaw"},"content":" * Displays message indicating that a task has been marked.","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"dylkaw"},"content":" * @param task Task that has been marked.","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"dylkaw"},"content":" public static void printMarkMsg(Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"dylkaw"},"content":" System.out.printf(\"\\t%s%n\", task);","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"dylkaw"},"content":" * Displays message indicating that a task has been unmarked.","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"dylkaw"},"content":" * @param task Task that has been unmarked.","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"dylkaw"},"content":" public static void printUnmarkMsg(Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"dylkaw"},"content":" System.out.printf(\"\\t%s%n\", task);","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"dylkaw"},"content":" * Prints tasks that match to the search string.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"dylkaw"},"content":" * @param taskList List of tasks to be searched.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"dylkaw"},"content":" * @param searchString String tasks should match.","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"dylkaw"},"content":" public static void printFindMsg(TaskList taskList, String searchString) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"dylkaw"},"content":" String displayedTasks \u003d taskList.findTasks(searchString);","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"dylkaw"},"content":" if (displayedTasks.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Oops, no tasks match your search :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"dylkaw"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"dylkaw"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"dylkaw"},"content":" System.out.println(displayedTasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"dylkaw"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"dylkaw"},"content":" * Displays error message.","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"dylkaw"},"content":" * @param msg Message to be displayed.","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"dylkaw"},"content":" public static void printError(String msg) {","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"dylkaw"},"content":" System.err.println(msg);","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"dylkaw":123}},{"path":"src/main/java/glub/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":" public Deadline(String task, boolean isDone, LocalDateTime deadline) {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":" super(task, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" return \"D|\" + super.toSaveFormat() + String.format(\"|%s\\n\", super.getSaveDateTime(deadline));","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" return \"[D]\" + super.toString() + String.format(\"(by: %s)\", super.getDisplayDateTime(deadline));","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"dylkaw":21}},{"path":"src/main/java/glub/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":" public Event(String task, boolean isDone, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":" super(task, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" return \"E|\" + super.toSaveFormat()","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" + String.format(\"|%s|%s\\n\", super.getSaveDateTime(start), super.getSaveDateTime(end));","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" return \"[E]\" + super.toString()","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" + String.format(\"(from: %s to: %s)\", super.getDisplayDateTime(start), super.getDisplayDateTime(end));","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"dylkaw":25}},{"path":"src/main/java/glub/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":" * Task for user to be reminded of.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" /** Name of task to be completed. */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":" private String task;","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" /** Status of task. */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" public Task(String task, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" * Converts LocalDateTime object into dd MMM yyyy HH:mm format for display.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":" * @param dateTime LocalDateTime object.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" * @return Date in dd MMM yyyy HH:mm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" public String getDisplayDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":" DateTimeFormatter format \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" return dateTime.format(format);","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" * Converts LocalDateTime object into dd-MM-yyyy HHmm format for saving.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" * @param dateTime LocalDateTime object.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":" * @return Date in dd-MM-yyyy HHmm format.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"dylkaw"},"content":" public String getSaveDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"dylkaw"},"content":" DateTimeFormatter format \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"dylkaw"},"content":" return dateTime.format(format);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"dylkaw"},"content":" * Gets the icon corresponding to the status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"dylkaw"},"content":" * @return Marked or unmarked icon/","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"dylkaw"},"content":" public String getDoneIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"dylkaw"},"content":" return isDone ? \"X\" : \" \";","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"dylkaw"},"content":" public void setDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"dylkaw"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"dylkaw"},"content":" public void setUndone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"dylkaw"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"dylkaw"},"content":" * Checks if task contains the specified search string.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"dylkaw"},"content":" * @param searchString String to be checked against.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"dylkaw"},"content":" * @return Boolean whether task contains search string.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"dylkaw"},"content":" public boolean checkMatch(String searchString) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"dylkaw"},"content":" return this.task.toLowerCase().contains(searchString);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"dylkaw"},"content":" * Gets the task in a string to be saved.","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"dylkaw"},"content":" * @return String to be saved.","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"dylkaw"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"dylkaw"},"content":" return String.format(\"%s|%s\", getDoneIcon(), task);","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"dylkaw"},"content":" * Gets the task string to be displayed.","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"dylkaw"},"content":" * @return Task string to be displayed.","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":76,"author":{"gitId":"dylkaw"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":77,"author":{"gitId":"dylkaw"},"content":" return String.format(\"[%s]%s\", getDoneIcon(), task);","lastModifiedDate":"2023-08-21"},{"lineNumber":78,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":79,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"dylkaw":79}},{"path":"src/main/java/glub/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.GlubException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"import glub.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"import glub.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" * Task list that contains all tasks and reads or writes from a storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":"public class TaskList {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" private Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" * Initialises TaskList object and loads tasks from storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":" * @param storage Storage object which task list loads tasks from.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" * @throws GlubException If loading of tasks fails.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" public TaskList(Storage storage) throws GlubException {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":" loadTasks();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" return this.taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"dylkaw"},"content":" * Adds tasks from storage into task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"dylkaw"},"content":" * @throws GlubException If loading fails.","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"dylkaw"},"content":" public void loadTasks() throws GlubException {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"dylkaw"},"content":" ArrayList\u003cString\u003e taskDetails \u003d storage.getTaskDetails();","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"dylkaw"},"content":" for (int i \u003d 0; i \u003c taskDetails.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"dylkaw"},"content":" String task \u003d taskDetails.get(i);","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"dylkaw"},"content":" String[] data \u003d task.split(\"\\\\|\");","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"dylkaw"},"content":" boolean isDone \u003d data[1].equals(\"X\");","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"dylkaw"},"content":" switch (data[0]) {","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"dylkaw"},"content":" case \"T\":","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"dylkaw"},"content":" addTask(String.format(\"%s\", data[2]), TaskType.TODO, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"dylkaw"},"content":" case \"D\":","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"dylkaw"},"content":" addTask(String.format(\"%s /by %s\", data[2], data[3]),","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"dylkaw"},"content":" TaskType.DEADLINE, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"dylkaw"},"content":" case \"E\":","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"dylkaw"},"content":" addTask(String.format(\"%s /from %s /to %s\", data[2], data[3], data[4]),","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"dylkaw"},"content":" TaskType.EVENT, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"dylkaw"},"content":" * Adds task into task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"dylkaw"},"content":" * @param task Description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"dylkaw"},"content":" * @param taskType Type of task.","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"dylkaw"},"content":" * @param isDone Status of task.","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"dylkaw"},"content":" * @throws GlubException If input is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"dylkaw"},"content":" public void addTask(String task, TaskType taskType, boolean isDone) throws GlubException {","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"dylkaw"},"content":" DateTimeFormatter dateTimeFormat \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"dylkaw"},"content":" if (task.equals(\"\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(String.format(\"OOPS!! The description of a %s cannot be empty.\\n\", taskType));","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"dylkaw"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"dylkaw"},"content":" case TODO:","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"dylkaw"},"content":" taskList.add(new ToDo(task, isDone));","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"dylkaw"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"dylkaw"},"content":" String[] deadlinePortions \u003d task.split(\"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"dylkaw"},"content":" String deadlineDesc \u003d deadlinePortions[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"dylkaw"},"content":" String deadline \u003d deadlinePortions[1].split(\" \", 2)[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"dylkaw"},"content":" LocalDateTime deadlineDateTime \u003d LocalDateTime.parse(deadline, dateTimeFormat);","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"dylkaw"},"content":" taskList.add(new Deadline(deadlineDesc, isDone, deadlineDateTime));","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"dylkaw"},"content":" } catch (ArrayIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(\"OOPS!! Please provide a deadline for your deadline task.\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"dylkaw"},"content":" } catch (DateTimeParseException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(\"Invalid deadline format! Please ensure it is in dd-MM-yyyy HHmm format!\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"dylkaw"},"content":" case EVENT:","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"dylkaw"},"content":" String[] eventPortions \u003d task.split(\"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"dylkaw"},"content":" String eventDesc \u003d eventPortions[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"dylkaw"},"content":" String[] startParts \u003d eventPortions[1].split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"dylkaw"},"content":" String start \u003d startParts[1] + \" \" + startParts[2];","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"dylkaw"},"content":" String[] endParts \u003d eventPortions[2].split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"dylkaw"},"content":" String end \u003d endParts[1] + \" \" + endParts[2];","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"dylkaw"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(start, dateTimeFormat);","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"dylkaw"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(end, dateTimeFormat);","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"dylkaw"},"content":" taskList.add(new Event(eventDesc, isDone, startDateTime, endDateTime));","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"dylkaw"},"content":" } catch (ArrayIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(\"OOPS!! Ensure that your event has a start and end!\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"dylkaw"},"content":" } catch (DateTimeParseException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"dylkaw"},"content":" \"Invalid start/end format! Please ensure they are in dd/MM/yyyy HH:mm format!\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"dylkaw"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(this.taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"dylkaw"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"dylkaw"},"content":" * @param taskNum Index of task to be deleted.","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"dylkaw"},"content":" * @throws GlubException If taskNum indicated is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"dylkaw"},"content":" public void deleteTask(int taskNum) throws GlubException {","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"dylkaw"},"content":" Task deleted \u003d taskList.remove(taskNum - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"dylkaw"},"content":" Ui.printDeleteMsg(taskList, deleted);","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"dylkaw"},"content":" } catch (IndexOutOfBoundsException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"dylkaw"},"content":" throw new GlubException(String.format(\"OOPS!! Task %d does not exist!\\n\", taskNum));","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(this.taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"dylkaw"},"content":" * Displays all tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"dylkaw"},"content":" * @return String of all tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"dylkaw"},"content":" public String showList() {","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"dylkaw"},"content":" StringBuilder list \u003d new StringBuilder();","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"dylkaw"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"dylkaw"},"content":" list.append(String.format(\" %d. %s\\n\", i + 1, taskList.get(i)));","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"dylkaw"},"content":" return list.toString();","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"dylkaw"},"content":" * Marks a task from the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"dylkaw"},"content":" * @param taskNum Index of task to be marked.","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"dylkaw"},"content":" public void mark(int taskNum) {","lastModifiedDate":"2023-08-28"},{"lineNumber":144,"author":{"gitId":"dylkaw"},"content":" Task task \u003d taskList.get(taskNum - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":145,"author":{"gitId":"dylkaw"},"content":" task.setDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":146,"author":{"gitId":"dylkaw"},"content":" Ui.printMarkMsg(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":147,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(this.taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":148,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":149,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":150,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"dylkaw"},"content":" * Unmarks a task from the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"dylkaw"},"content":" * @param taskNum Index of task to be unmarked.","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"dylkaw"},"content":" public void unmark(int taskNum) {","lastModifiedDate":"2023-08-28"},{"lineNumber":155,"author":{"gitId":"dylkaw"},"content":" Task task \u003d taskList.get(taskNum - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"dylkaw"},"content":" task.setUndone();","lastModifiedDate":"2023-08-28"},{"lineNumber":157,"author":{"gitId":"dylkaw"},"content":" Ui.printUnmarkMsg(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":158,"author":{"gitId":"dylkaw"},"content":" storage.saveTasks(this.taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":159,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":160,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"dylkaw"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"dylkaw"},"content":" * Finds all tasks matching search string.","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"dylkaw"},"content":" * @param searchString String to be matched to tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"dylkaw"},"content":" * @return String representation of matching tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"dylkaw"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"dylkaw"},"content":" public String findTasks(String searchString) {","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"dylkaw"},"content":" StringBuilder matchingTasks \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"dylkaw"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"dylkaw"},"content":" if (taskList.get(i).checkMatch(searchString)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"dylkaw"},"content":" matchingTasks.append(String.format(\"\\t%d. %s\\n\", i + 1, taskList.get(i)));","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"dylkaw"},"content":" return matchingTasks.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"dylkaw":175}},{"path":"src/main/java/glub/task/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"public enum TaskType {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":" TODO,","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":" DEADLINE,","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":" EVENT","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"dylkaw":7}},{"path":"src/main/java/glub/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":" public ToDo(String task, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":" super(task, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":" return \"T|\" + super.toSaveFormat() + \"\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"dylkaw":16}},{"path":"src/test/java/glub/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task; //same package as the class being tested","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.Glub;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"import glub.GlubException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"import glub.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" public void addTask_emptyTask_exceptionThrown(){","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" new TaskList(new Storage(\"dummystorage.txt\")).addTask(\"\", TaskType.TODO, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":" } catch (GlubException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"dylkaw"},"content":" assertEquals(\"OOPS!! The description of a TODO cannot be empty.\\n\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"dylkaw"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"dylkaw"},"content":" public void addTask_noDeadline_exceptionThrown(){","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"dylkaw"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"dylkaw"},"content":" new TaskList(new Storage(\"dummystorage.txt\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":" .addTask(\"run\", TaskType.DEADLINE, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"dylkaw"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"dylkaw"},"content":" } catch (GlubException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"dylkaw"},"content":" assertEquals(\"OOPS!! Please provide a deadline for your deadline task.\\n\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"dylkaw":32}},{"path":"src/test/java/glub/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"package glub.task; //same package as the class being tested","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"import glub.Glub;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"import glub.GlubException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"import glub.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"dylkaw"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"dylkaw"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"dylkaw"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"dylkaw"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"dylkaw"},"content":" public void toSaveFormat_success(){","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"dylkaw"},"content":" assertEquals(\"T|X|run far\\n\", new ToDo(\"run far\", true).toSaveFormat());","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"dylkaw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"dylkaw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"dylkaw"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"dylkaw":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dylkaw"},"content":"todo run","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"dylkaw"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"dylkaw"},"content":"mark 1","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"dylkaw"},"content":"unmark 1","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"dylkaw"},"content":"delete 1","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"dylkaw"},"content":"bye","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"dylkaw":6}},{"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":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"dylkaw"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dylkaw":1,"-":33}}] diff --git a/dylkaw_ip_master/commits.json b/dylkaw_ip_master/commits.json index 84ad3b2b..ee4e5541 100644 --- a/dylkaw_ip_master/commits.json +++ b/dylkaw_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"dylkaw":[{"date":"2023-08-21","commitResults":[{"hash":"404661f216aee5251f99e1a67fa91b197055d20e","isMergeCommit":false,"messageTitle":"renaming bot and creating greeting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"b6d7e944e73b1bf7b2bb5ca3e53c2abe11dd6b17","isMergeCommit":false,"messageTitle":"reducing greeting message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"3e86346bb87782bf357f9e015fdaad70e4c1d4a3","isMergeCommit":false,"messageTitle":"adding echo and exit functions","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}},{"hash":"4a80ec24101201928d5cae20dcb4ea02a77b18c0","isMergeCommit":false,"messageTitle":"creating task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"4a1f0a87ee447e78d4fd0b03d64cb4fcaae043ba","isMergeCommit":false,"messageTitle":"creating addTask function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"748c3145437fe242d696a0b44e769bd2d3bc8803","isMergeCommit":false,"messageTitle":"adding list function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"95474419eff6abd9676af2da9b98a2a18e255b0f","isMergeCommit":false,"messageTitle":"adding getDoneIcon, toggleDone methods to Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"82a868f7a90cf7849face5620c686827847dec3f","isMergeCommit":false,"messageTitle":"changing toggleDone to 2 separate methods","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"74aa9a297665d041befbfa5e746e01941b7e8c27","isMergeCommit":false,"messageTitle":"adding mark function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"878b87cb9f0eebb72d4ec8b8797afbf0cf30aec4","isMergeCommit":false,"messageTitle":"adding unmark method","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"acf820df2c080471cb410ff3f5e8d55e08a7f3b3","isMergeCommit":false,"messageTitle":"adding deadline, event, todo classes","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":0}}},{"hash":"75eeda40a6248366e6b43dc9eb12bc236889b07b","isMergeCommit":false,"messageTitle":"improving addTask method to be able to add different tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":12}}},{"hash":"fb5d25b5dea9bc664933a1759225019cd832e1f6","isMergeCommit":false,"messageTitle":"adding exceptions to handle missing inputs or unknown inputs","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":19}}},{"hash":"c58d3d713c206a9f58f5fa05b7515299b008cf68","isMergeCommit":false,"messageTitle":"adding deleteTask method","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}}]},{"date":"2023-08-22","commitResults":[{"hash":"6021cecd35029c9e1f0be8f84e38c941ed44d119","isMergeCommit":false,"messageTitle":"reducing exceptions into single GlubException class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":49}}}]},{"date":"2023-08-26","commitResults":[{"hash":"e3f01ec85924c4b2758498ee32cbc69b49710168","isMergeCommit":false,"messageTitle":"creating automated text tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":19,"deletions":21},"sh":{"insertions":2,"deletions":6}}}]},{"date":"2023-08-27","commitResults":[{"hash":"b56a8f673cc87ed16b2fd87cb73945ef85085aa5","isMergeCommit":false,"messageTitle":"Add isListening variable","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":26}}},{"hash":"89da686ab8f72cfa9b7173f03624a6eb042fb772","isMergeCommit":false,"messageTitle":"Add taskType enum","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":16}}},{"hash":"fa52a0a0d3ba262cd68f301d224e45adf7320ede","isMergeCommit":false,"messageTitle":"List imported classes explicitly","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}},{"hash":"8bcc1a21f962859109f73ffeec8c308105f431ef","isMergeCommit":false,"messageTitle":"Add save and load","messageBody":"Classes have been refactored for loading\n","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":22}}}]},{"date":"2023-08-28","commitResults":[{"hash":"dfce603ffd529159de5fad413095061e0bb22b2d","isMergeCommit":false,"messageTitle":"Add date handling for deadline and event tasks","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":20}}},{"hash":"63cc7dba889ebba9660b6dc6f604be73fdacd984","isMergeCommit":false,"messageTitle":"Extract Parser, Storage, TaskList and UI classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":300,"deletions":213}}},{"hash":"8289e9f05417c1776fa284b673487b507e7fa829","isMergeCommit":false,"messageTitle":"Rename Duke to Glub","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"7af12d89b8cf48483d20c5ff5b640a027ed54e0c","isMergeCommit":false,"messageTitle":"Create glub and glub.task packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":13}}}]},{"date":"2023-08-31","commitResults":[{"hash":"c12cabcff2159811a937483238f84916aa3bbbe5","isMergeCommit":false,"messageTitle":"Set up gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":1}}},{"hash":"246bc62f26c915ac5dc7d8546c04eddbd907daba","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"252d8a74e3a0837b2cd06a589179d2fa0ed782da","isMergeCommit":false,"messageTitle":"Update build.gradle file for Glub","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"7fa807593d425d35625ba058fd822e3c273ba30c","isMergeCommit":false,"messageTitle":"Add TaskList and Todo tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":52,"deletions":3}}},{"hash":"5194eb90203c8e1827fc3b1d6d66ff0e37e49765","isMergeCommit":false,"messageTitle":"Add empty storage file for tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"25748c90478790e24e582facaee46e795c2a030d","isMergeCommit":false,"messageTitle":"Add JAR creation to build.gradle","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"dylkaw":{"java":502,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":4,"txt":6}},"authorContributionVariance":{"dylkaw":32350.24},"authorDisplayNameMap":{"dylkaw":"CS2103T-F11-1 KAW ..YLAN"}} +{"authorDailyContributionsMap":{"dylkaw":[{"date":"2023-08-21","commitResults":[{"hash":"404661f216aee5251f99e1a67fa91b197055d20e","isMergeCommit":false,"messageTitle":"renaming bot and creating greeting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"b6d7e944e73b1bf7b2bb5ca3e53c2abe11dd6b17","isMergeCommit":false,"messageTitle":"reducing greeting message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"3e86346bb87782bf357f9e015fdaad70e4c1d4a3","isMergeCommit":false,"messageTitle":"adding echo and exit functions","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}},{"hash":"4a80ec24101201928d5cae20dcb4ea02a77b18c0","isMergeCommit":false,"messageTitle":"creating task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"4a1f0a87ee447e78d4fd0b03d64cb4fcaae043ba","isMergeCommit":false,"messageTitle":"creating addTask function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"748c3145437fe242d696a0b44e769bd2d3bc8803","isMergeCommit":false,"messageTitle":"adding list function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"95474419eff6abd9676af2da9b98a2a18e255b0f","isMergeCommit":false,"messageTitle":"adding getDoneIcon, toggleDone methods to Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"82a868f7a90cf7849face5620c686827847dec3f","isMergeCommit":false,"messageTitle":"changing toggleDone to 2 separate methods","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"74aa9a297665d041befbfa5e746e01941b7e8c27","isMergeCommit":false,"messageTitle":"adding mark function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"878b87cb9f0eebb72d4ec8b8797afbf0cf30aec4","isMergeCommit":false,"messageTitle":"adding unmark method","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"acf820df2c080471cb410ff3f5e8d55e08a7f3b3","isMergeCommit":false,"messageTitle":"adding deadline, event, todo classes","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":0}}},{"hash":"75eeda40a6248366e6b43dc9eb12bc236889b07b","isMergeCommit":false,"messageTitle":"improving addTask method to be able to add different tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":12}}},{"hash":"fb5d25b5dea9bc664933a1759225019cd832e1f6","isMergeCommit":false,"messageTitle":"adding exceptions to handle missing inputs or unknown inputs","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":19}}},{"hash":"c58d3d713c206a9f58f5fa05b7515299b008cf68","isMergeCommit":false,"messageTitle":"adding deleteTask method","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}}]},{"date":"2023-08-22","commitResults":[{"hash":"6021cecd35029c9e1f0be8f84e38c941ed44d119","isMergeCommit":false,"messageTitle":"reducing exceptions into single GlubException class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":49}}}]},{"date":"2023-08-26","commitResults":[{"hash":"e3f01ec85924c4b2758498ee32cbc69b49710168","isMergeCommit":false,"messageTitle":"creating automated text tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":19,"deletions":21},"sh":{"insertions":2,"deletions":6}}}]},{"date":"2023-08-27","commitResults":[{"hash":"b56a8f673cc87ed16b2fd87cb73945ef85085aa5","isMergeCommit":false,"messageTitle":"Add isListening variable","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":26}}},{"hash":"89da686ab8f72cfa9b7173f03624a6eb042fb772","isMergeCommit":false,"messageTitle":"Add taskType enum","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":16}}},{"hash":"fa52a0a0d3ba262cd68f301d224e45adf7320ede","isMergeCommit":false,"messageTitle":"List imported classes explicitly","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}},{"hash":"8bcc1a21f962859109f73ffeec8c308105f431ef","isMergeCommit":false,"messageTitle":"Add save and load","messageBody":"Classes have been refactored for loading\n","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":22}}}]},{"date":"2023-08-28","commitResults":[{"hash":"dfce603ffd529159de5fad413095061e0bb22b2d","isMergeCommit":false,"messageTitle":"Add date handling for deadline and event tasks","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":20}}},{"hash":"63cc7dba889ebba9660b6dc6f604be73fdacd984","isMergeCommit":false,"messageTitle":"Extract Parser, Storage, TaskList and UI classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":300,"deletions":213}}},{"hash":"8289e9f05417c1776fa284b673487b507e7fa829","isMergeCommit":false,"messageTitle":"Rename Duke to Glub","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"7af12d89b8cf48483d20c5ff5b640a027ed54e0c","isMergeCommit":false,"messageTitle":"Create glub and glub.task packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":13}}}]},{"date":"2023-08-31","commitResults":[{"hash":"c12cabcff2159811a937483238f84916aa3bbbe5","isMergeCommit":false,"messageTitle":"Set up gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":1}}},{"hash":"246bc62f26c915ac5dc7d8546c04eddbd907daba","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"252d8a74e3a0837b2cd06a589179d2fa0ed782da","isMergeCommit":false,"messageTitle":"Update build.gradle file for Glub","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"7fa807593d425d35625ba058fd822e3c273ba30c","isMergeCommit":false,"messageTitle":"Add TaskList and Todo tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":52,"deletions":3}}},{"hash":"5194eb90203c8e1827fc3b1d6d66ff0e37e49765","isMergeCommit":false,"messageTitle":"Add empty storage file for tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"25748c90478790e24e582facaee46e795c2a030d","isMergeCommit":false,"messageTitle":"Add JAR creation to build.gradle","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":3}}},{"hash":"5d5dd12814de33cd24418d320a01eba82e11dd1f","isMergeCommit":false,"messageTitle":"Add JavaDocs","messageBody":"","tags":["A-JavaDocs"],"fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"9a48ae2c3e045d9dbfd6a4acf7be1fdd785c90b0","isMergeCommit":false,"messageTitle":"Adjust case indentation to coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":82}}},{"hash":"95b9c9df561094083b9e40ec6dcba2e73616cb27","isMergeCommit":false,"messageTitle":"Add find command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":36}}},{"hash":"0082c397261cb36d5a9c31ced9e3301f70f42840","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"687583606b42e3cc0f4f72fc3a33bf56147979b3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["A-Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"dylkaw":{"java":699,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":4,"txt":6}},"authorContributionVariance":{"dylkaw":32791.266},"authorDisplayNameMap":{"dylkaw":"CS2103T-F11-1 KAW ..YLAN"}} diff --git a/emzm2023_ip_master/authorship.json b/emzm2023_ip_master/authorship.json index 95240618..338c2af9 100644 --- a/emzm2023_ip_master/authorship.json +++ b/emzm2023_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Chatbot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"content":"import java.io.FileNotFoundException;"},{"lineNumber":3,"content":"import java.io.FileWriter;"},{"lineNumber":4,"content":"import java.io.IOException;"},{"lineNumber":5,"content":"import java.time.LocalDate;"},{"lineNumber":6,"content":"import java.time.format.DateTimeFormatter;"},{"lineNumber":7,"content":"import java.time.format.DateTimeParseException;"},{"lineNumber":8,"content":"import java.util.ArrayList;"},{"lineNumber":9,"content":"import java.util.List;"},{"lineNumber":10,"content":"import java.util.Scanner;"},{"lineNumber":11,"content":""},{"lineNumber":12,"content":"public class Chatbot {"},{"lineNumber":13,"content":" /** Name of the Chatbot. */"},{"lineNumber":14,"content":" private static final String NAME \u003d \"Bro\";"},{"lineNumber":15,"content":""},{"lineNumber":16,"content":" /** Scanner for the Chatbot. */"},{"lineNumber":17,"content":" private Scanner scanner;"},{"lineNumber":18,"content":""},{"lineNumber":19,"content":" /** TaskList for the Chatbot. */"},{"lineNumber":20,"content":" private List\u003cTask\u003e taskList;"},{"lineNumber":21,"content":""},{"lineNumber":22,"content":" /**"},{"lineNumber":23,"content":" * Constructor for the Chatbot."},{"lineNumber":24,"content":" * Loads existing tasks from the hard disk and creates the data file and directory if it does not exist."},{"lineNumber":25,"content":" */"},{"lineNumber":26,"content":" private Chatbot() {"},{"lineNumber":27,"content":" this.scanner \u003d new Scanner(System.in);"},{"lineNumber":28,"content":" this.taskList \u003d new ArrayList\u003c\u003e();"},{"lineNumber":29,"content":" }"},{"lineNumber":30,"content":""},{"lineNumber":31,"content":" /**"},{"lineNumber":32,"content":" * Greets the user."},{"lineNumber":33,"content":" */"},{"lineNumber":34,"content":" private void greet() {"},{"lineNumber":35,"content":" System.out.println(\"Hello! I\u0027m \" + NAME + \"\\n\" + \"What can I do for you?\\n\");"},{"lineNumber":36,"content":" }"},{"lineNumber":37,"content":""},{"lineNumber":38,"content":" /**"},{"lineNumber":39,"content":" * Causes Chatbot to exit."},{"lineNumber":40,"content":" */"},{"lineNumber":41,"content":" private void exit() {"},{"lineNumber":42,"content":" System.out.println(\"Bye. Hope to see you again soon!\");"},{"lineNumber":43,"content":" this.saveTasks();"},{"lineNumber":44,"content":" this.scanner.close();"},{"lineNumber":45,"content":" }"},{"lineNumber":46,"content":""},{"lineNumber":47,"content":" /**"},{"lineNumber":48,"content":" * Adds task inputted by user to taskList. Prints out confirmation."},{"lineNumber":49,"content":" *"},{"lineNumber":50,"content":" * @param input The command inputted by the user."},{"lineNumber":51,"content":" * @throws InvalidTodoException If format of Todo entered is invalid."},{"lineNumber":52,"content":" * @throws InvalidDeadlineException If format of Deadline entered is invalid."},{"lineNumber":53,"content":" * @throws InvalidEventException If format of Event entered is invalid."},{"lineNumber":54,"content":" * @throws InvalidCommandException If format of command entered is invalid."},{"lineNumber":55,"content":" */"},{"lineNumber":56,"content":" private void add(String input) throws InvalidTodoException,"},{"lineNumber":57,"content":" InvalidDeadlineException, InvalidEventException, InvalidCommandException {"},{"lineNumber":58,"content":" Task newTask \u003d null;"},{"lineNumber":59,"content":" String nextInput;"},{"lineNumber":60,"content":""},{"lineNumber":61,"content":" try {"},{"lineNumber":62,"content":" nextInput \u003d input.substring(4);"},{"lineNumber":63,"content":""},{"lineNumber":64,"content":" if (nextInput.isBlank()) {"},{"lineNumber":65,"content":" throw new InvalidCommandException();"},{"lineNumber":66,"content":" }"},{"lineNumber":67,"content":" } catch (StringIndexOutOfBoundsException e) {"},{"lineNumber":68,"content":" throw new InvalidCommandException();"},{"lineNumber":69,"content":" }"},{"lineNumber":70,"content":""},{"lineNumber":71,"content":" if (nextInput.startsWith(\"todo\")) {"},{"lineNumber":72,"content":" try {"},{"lineNumber":73,"content":" String description \u003d nextInput.substring(5);"},{"lineNumber":74,"content":""},{"lineNumber":75,"content":" if (description.isBlank()) {"},{"lineNumber":76,"content":" throw new InvalidTodoException();"},{"lineNumber":77,"content":" } else {"},{"lineNumber":78,"content":" newTask \u003d new Todo(description);"},{"lineNumber":79,"content":" }"},{"lineNumber":80,"content":" } catch (StringIndexOutOfBoundsException e) {"},{"lineNumber":81,"content":" throw new InvalidTodoException();"},{"lineNumber":82,"content":" }"},{"lineNumber":83,"content":" } else if (nextInput.startsWith(\"deadline\")) {"},{"lineNumber":84,"content":" try {"},{"lineNumber":85,"content":" int by \u003d nextInput.indexOf(\"/by\");"},{"lineNumber":86,"content":" String description \u003d nextInput.substring(9, by - 1);"},{"lineNumber":87,"content":" LocalDate deadline \u003d LocalDate.parse(nextInput.substring(by + 4));"},{"lineNumber":88,"content":""},{"lineNumber":89,"content":" if (description.isBlank()) {"},{"lineNumber":90,"content":" throw new InvalidDeadlineException();"},{"lineNumber":91,"content":" } else {"},{"lineNumber":92,"content":" newTask \u003d new Deadline(description, deadline);"},{"lineNumber":93,"content":" }"},{"lineNumber":94,"content":" } catch (StringIndexOutOfBoundsException e) {"},{"lineNumber":95,"content":" throw new InvalidDeadlineException();"},{"lineNumber":96,"content":" } catch (DateTimeParseException e) {"},{"lineNumber":97,"content":" throw new InvalidDeadlineException();"},{"lineNumber":98,"content":" }"},{"lineNumber":99,"content":" } else if (nextInput.startsWith(\"event\")) {"},{"lineNumber":100,"content":" try {"},{"lineNumber":101,"content":" int from \u003d nextInput.indexOf(\"/from\");"},{"lineNumber":102,"content":" int to \u003d nextInput.indexOf(\"/to\");"},{"lineNumber":103,"content":" String description \u003d nextInput.substring(6, from - 1);"},{"lineNumber":104,"content":" LocalDate start \u003d LocalDate.parse(nextInput.substring(from + 6, to - 1));"},{"lineNumber":105,"content":" LocalDate end \u003d LocalDate.parse(nextInput.substring(to + 4));"},{"lineNumber":106,"content":""},{"lineNumber":107,"content":" if (description.isBlank()) {"},{"lineNumber":108,"content":" throw new InvalidEventException();"},{"lineNumber":109,"content":" } else {"},{"lineNumber":110,"content":" newTask \u003d new Event(description, start, end);"},{"lineNumber":111,"content":" }"},{"lineNumber":112,"content":" } catch (StringIndexOutOfBoundsException e) {"},{"lineNumber":113,"content":" throw new InvalidEventException();"},{"lineNumber":114,"content":" } catch (DateTimeParseException e) {"},{"lineNumber":115,"content":" throw new InvalidEventException();"},{"lineNumber":116,"content":" }"},{"lineNumber":117,"content":" } else {"},{"lineNumber":118,"content":" throw new InvalidCommandException();"},{"lineNumber":119,"content":" }"},{"lineNumber":120,"content":""},{"lineNumber":121,"content":" if (newTask !\u003d null) {"},{"lineNumber":122,"content":" this.taskList.add(newTask);"},{"lineNumber":123,"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + newTask);"},{"lineNumber":124,"content":" System.out.println(\"Now you have \" + this.taskList.size() + \" tasks in the list.\\n\");"},{"lineNumber":125,"content":" }"},{"lineNumber":126,"content":" }"},{"lineNumber":127,"content":""},{"lineNumber":128,"content":" /**"},{"lineNumber":129,"content":" * Lists out all the tasks in taskList."},{"lineNumber":130,"content":" */"},{"lineNumber":131,"content":" private void listTasks() {"},{"lineNumber":132,"content":" System.out.println(\"Here are the tasks in your list:\\n\");"},{"lineNumber":133,"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {"},{"lineNumber":134,"content":" int num \u003d i + 1;"},{"lineNumber":135,"content":" System.out.println(num +\". \" + taskList.get(i).toString());"},{"lineNumber":136,"content":" }"},{"lineNumber":137,"content":" System.out.print(\"\\n\");"},{"lineNumber":138,"content":" }"},{"lineNumber":139,"content":""},{"lineNumber":140,"content":" /**"},{"lineNumber":141,"content":" * Marks specified task as done. Prints confirmation."},{"lineNumber":142,"content":" *"},{"lineNumber":143,"content":" * @param input The user input."},{"lineNumber":144,"content":" * @throws InvalidTaskNumberException If there is no task with the task number in the taskList."},{"lineNumber":145,"content":" * @throws InvalidCommandException If format of command entered is invalid."},{"lineNumber":146,"content":" */"},{"lineNumber":147,"content":" private void markTaskStatusTrue(String input) throws InvalidTaskNumberException, InvalidCommandException {"},{"lineNumber":148,"content":" int taskIndex;"},{"lineNumber":149,"content":" try {"},{"lineNumber":150,"content":" String nextInput \u003d input.substring(5);"},{"lineNumber":151,"content":" if (nextInput.isBlank()) {"},{"lineNumber":152,"content":" throw new InvalidCommandException();"},{"lineNumber":153,"content":" } else {"},{"lineNumber":154,"content":" taskIndex \u003d Integer.parseInt(nextInput);"},{"lineNumber":155,"content":" }"},{"lineNumber":156,"content":" } catch (StringIndexOutOfBoundsException e) {"},{"lineNumber":157,"content":" throw new InvalidCommandException();"},{"lineNumber":158,"content":" }"},{"lineNumber":159,"content":""},{"lineNumber":160,"content":" if (taskIndex \u003e this.taskList.size()) {"},{"lineNumber":161,"content":" throw new InvalidTaskNumberException(taskIndex);"},{"lineNumber":162,"content":" } else {"},{"lineNumber":163,"content":" Task task \u003d taskList.get(taskIndex - 1);"},{"lineNumber":164,"content":" task.markStatus(true);"},{"lineNumber":165,"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" + task + \"\\n\");"},{"lineNumber":166,"content":" }"},{"lineNumber":167,"content":" }"},{"lineNumber":168,"content":""},{"lineNumber":169,"content":" /**"},{"lineNumber":170,"content":" * Marks specified task as undone. Prints confirmation."},{"lineNumber":171,"content":" *"},{"lineNumber":172,"content":" * @param input The user input."},{"lineNumber":173,"content":" * @throws InvalidTaskNumberException If there is no task with the task number in the taskList."},{"lineNumber":174,"content":" * @throws InvalidCommandException If format of command entered is invalid."},{"lineNumber":175,"content":" */"},{"lineNumber":176,"content":" private void markTaskStatusFalse(String input) throws InvalidTaskNumberException, InvalidCommandException {"},{"lineNumber":177,"content":" int taskIndex;"},{"lineNumber":178,"content":" try {"},{"lineNumber":179,"content":" String nextInput \u003d input.substring(7);"},{"lineNumber":180,"content":" if (nextInput.isBlank()) {"},{"lineNumber":181,"content":" throw new InvalidCommandException();"},{"lineNumber":182,"content":" } else {"},{"lineNumber":183,"content":" taskIndex \u003d Integer.parseInt(nextInput);"},{"lineNumber":184,"content":" }"},{"lineNumber":185,"content":" } catch (StringIndexOutOfBoundsException e) {"},{"lineNumber":186,"content":" throw new InvalidCommandException();"},{"lineNumber":187,"content":" }"},{"lineNumber":188,"content":""},{"lineNumber":189,"content":" if (taskIndex \u003e this.taskList.size()) {"},{"lineNumber":190,"content":" throw new InvalidTaskNumberException(taskIndex);"},{"lineNumber":191,"content":" } else {"},{"lineNumber":192,"content":" Task task \u003d taskList.get(taskIndex - 1);"},{"lineNumber":193,"content":" task.markStatus(false);"},{"lineNumber":194,"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" + task + \"\\n\");"},{"lineNumber":195,"content":" }"},{"lineNumber":196,"content":" }"},{"lineNumber":197,"content":""},{"lineNumber":198,"content":" /**"},{"lineNumber":199,"content":" * Deletes the specified task in the list."},{"lineNumber":200,"content":" *"},{"lineNumber":201,"content":" * @param input The user input."},{"lineNumber":202,"content":" * @throws InvalidTaskNumberException If there is no task with the task number in the taskList."},{"lineNumber":203,"content":" * @throws InvalidCommandException If format of command entered is invalid."},{"lineNumber":204,"content":" */"},{"lineNumber":205,"content":" public void delete(String input) throws InvalidTaskNumberException, InvalidCommandException {"},{"lineNumber":206,"content":" int taskIndex;"},{"lineNumber":207,"content":" try {"},{"lineNumber":208,"content":" String nextInput \u003d input.substring(7);"},{"lineNumber":209,"content":" if (nextInput.isBlank()) {"},{"lineNumber":210,"content":" throw new InvalidCommandException();"},{"lineNumber":211,"content":" } else {"},{"lineNumber":212,"content":" taskIndex \u003d Integer.parseInt(nextInput);"},{"lineNumber":213,"content":" }"},{"lineNumber":214,"content":" } catch (StringIndexOutOfBoundsException e) {"},{"lineNumber":215,"content":" throw new InvalidCommandException();"},{"lineNumber":216,"content":" }"},{"lineNumber":217,"content":""},{"lineNumber":218,"content":" Task removed;"},{"lineNumber":219,"content":" try {"},{"lineNumber":220,"content":" removed \u003d this.taskList.remove(taskIndex - 1);"},{"lineNumber":221,"content":" } catch (IndexOutOfBoundsException e) {"},{"lineNumber":222,"content":" throw new InvalidTaskNumberException(taskIndex);"},{"lineNumber":223,"content":" }"},{"lineNumber":224,"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + removed + \"\\n\");"},{"lineNumber":225,"content":" }"},{"lineNumber":226,"content":""},{"lineNumber":227,"content":" /**"},{"lineNumber":228,"content":" * Loads file input and adds respective tasks into chatbot taskList."},{"lineNumber":229,"content":" */"},{"lineNumber":230,"content":" private void loadTasksFromFile() {"},{"lineNumber":231,"content":" File directory \u003d new File(\"data\");"},{"lineNumber":232,"content":" if (!directory.exists()) {"},{"lineNumber":233,"content":" directory.mkdir();"},{"lineNumber":234,"content":" }"},{"lineNumber":235,"content":""},{"lineNumber":236,"content":" File data \u003d new File(\"data/tasks.txt\");"},{"lineNumber":237,"content":" try {"},{"lineNumber":238,"content":" if (data.exists()) {"},{"lineNumber":239,"content":" Scanner dataScanner \u003d new Scanner(data);"},{"lineNumber":240,"content":" while (dataScanner.hasNextLine()) {"},{"lineNumber":241,"content":" String task \u003d dataScanner.nextLine();"},{"lineNumber":242,"content":" if (task.startsWith(\"[T]\")) {"},{"lineNumber":243,"content":" String description \u003d task.substring(7);"},{"lineNumber":244,"content":""},{"lineNumber":245,"content":" if (description.isBlank()) {"},{"lineNumber":246,"content":" throw new InvalidFileFormatException();"},{"lineNumber":247,"content":" } else {"},{"lineNumber":248,"content":" this.taskList.add(new Todo(description));"},{"lineNumber":249,"content":" }"},{"lineNumber":250,"content":" } else if (task.startsWith(\"[D]\")) {"},{"lineNumber":251,"content":" int by \u003d task.indexOf(\"(by: \");"},{"lineNumber":252,"content":" String description \u003d task.substring(7, by - 1);"},{"lineNumber":253,"content":" LocalDate deadline \u003d LocalDate.parse(task.substring(by + 5, task.length() - 1),"},{"lineNumber":254,"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\"));"},{"lineNumber":255,"content":""},{"lineNumber":256,"content":" if (description.isBlank()) {"},{"lineNumber":257,"content":" throw new InvalidFileFormatException();"},{"lineNumber":258,"content":" } else {"},{"lineNumber":259,"content":" this.taskList.add(new Deadline(description, deadline));"},{"lineNumber":260,"content":" }"},{"lineNumber":261,"content":" } else if (task.startsWith(\"[E]\")) {"},{"lineNumber":262,"content":" int from \u003d task.indexOf(\"(from: \");"},{"lineNumber":263,"content":" int to \u003d task.indexOf(\"to: \");"},{"lineNumber":264,"content":" String description \u003d task.substring(7, from - 1);"},{"lineNumber":265,"content":" LocalDate start \u003d LocalDate.parse(task.substring(from + 7, to - 1),"},{"lineNumber":266,"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\"));"},{"lineNumber":267,"content":" LocalDate end \u003d LocalDate.parse(task.substring(to + 4, task.length() - 1),"},{"lineNumber":268,"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\"));"},{"lineNumber":269,"content":""},{"lineNumber":270,"content":" if (description.isBlank()) {"},{"lineNumber":271,"content":" throw new InvalidFileFormatException();"},{"lineNumber":272,"content":" } else {"},{"lineNumber":273,"content":" this.taskList.add(new Event(description, start, end));"},{"lineNumber":274,"content":" }"},{"lineNumber":275,"content":" } else {"},{"lineNumber":276,"content":" throw new InvalidFileFormatException();"},{"lineNumber":277,"content":" }"},{"lineNumber":278,"content":" }"},{"lineNumber":279,"content":" dataScanner.close();"},{"lineNumber":280,"content":" } else {"},{"lineNumber":281,"content":" data.createNewFile();"},{"lineNumber":282,"content":" }"},{"lineNumber":283,"content":" } catch (Exception e) {"},{"lineNumber":284,"content":" System.out.println(e.getMessage());"},{"lineNumber":285,"content":" }"},{"lineNumber":286,"content":" }"},{"lineNumber":287,"content":""},{"lineNumber":288,"content":" /**"},{"lineNumber":289,"content":" * Reads user input. Exits if user input is \"bye\", lists tasks if input is \"list\", else, echoes commands."},{"lineNumber":290,"content":" * Update current state of tasks to data file."},{"lineNumber":291,"content":" */"},{"lineNumber":292,"content":" private void readInput() {"},{"lineNumber":293,"content":" System.out.print(\"\u003e \");"},{"lineNumber":294,"content":" String userInput \u003d scanner.nextLine();"},{"lineNumber":295,"content":""},{"lineNumber":296,"content":" try {"},{"lineNumber":297,"content":" if (userInput.equals(\"list\")) {"},{"lineNumber":298,"content":" this.listTasks();"},{"lineNumber":299,"content":" } else if (userInput.equals(\"bye\")) {"},{"lineNumber":300,"content":" this.exit();"},{"lineNumber":301,"content":" } else if (userInput.startsWith(\"add \")) {"},{"lineNumber":302,"content":" this.add(userInput);"},{"lineNumber":303,"content":" } else if (userInput.startsWith(\"mark \")) {"},{"lineNumber":304,"content":" this.markTaskStatusTrue(userInput);"},{"lineNumber":305,"content":" } else if (userInput.startsWith(\"unmark \")) {"},{"lineNumber":306,"content":" this.markTaskStatusFalse(userInput);"},{"lineNumber":307,"content":" } else if (userInput.startsWith(\"delete \")) {"},{"lineNumber":308,"content":" this.delete(userInput);"},{"lineNumber":309,"content":" } else {"},{"lineNumber":310,"content":" throw new InvalidCommandException();"},{"lineNumber":311,"content":" }"},{"lineNumber":312,"content":" this.saveTasks();"},{"lineNumber":313,"content":" } catch (Exception e) {"},{"lineNumber":314,"content":" System.out.println(e.getMessage() + \"\\n\");"},{"lineNumber":315,"content":" } finally {"},{"lineNumber":316,"content":" if (!userInput.equals(\"bye\")) {"},{"lineNumber":317,"content":" this.readInput();"},{"lineNumber":318,"content":" }"},{"lineNumber":319,"content":" }"},{"lineNumber":320,"content":" }"},{"lineNumber":321,"content":""},{"lineNumber":322,"content":" /**"},{"lineNumber":323,"content":" * Saves current taskList to data file."},{"lineNumber":324,"content":" */"},{"lineNumber":325,"content":" public void saveTasks() {"},{"lineNumber":326,"content":" try {"},{"lineNumber":327,"content":" FileWriter fw \u003d new FileWriter(\"data/tasks.txt\");"},{"lineNumber":328,"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {"},{"lineNumber":329,"content":" fw.write(this.taskList.get(i).toString() + \"\\n\");"},{"lineNumber":330,"content":" }"},{"lineNumber":331,"content":" fw.close();"},{"lineNumber":332,"content":" } catch (Exception e) {"},{"lineNumber":333,"content":" System.out.println(e.getMessage());"},{"lineNumber":334,"content":" }"},{"lineNumber":335,"content":" }"},{"lineNumber":336,"content":""},{"lineNumber":337,"content":" public static void main(String[] args) {"},{"lineNumber":338,"content":" Chatbot chatbot \u003d new Chatbot();"},{"lineNumber":339,"content":" chatbot.loadTasksFromFile();"},{"lineNumber":340,"content":" chatbot.greet();"},{"lineNumber":341,"content":" chatbot.readInput();"},{"lineNumber":342,"content":" }"},{"lineNumber":343,"content":"}"}],"authorContributionMap":{"null":342,"emzm2023":1}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":" /** LocalDate deadline for Deadline. */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":" /** Constructor for Deadline.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":" * @param description Description of task.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":" * @param by Deadline for Deadline.","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":" /** toString method for Deadline.","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"emzm2023"},"content":" * @return String representation of Deadline.","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"emzm2023"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"emzm2023"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"emzm2023"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"emzm2023":26}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":" /** Start time of Event. */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":" protected LocalDate start;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":" /** End time of Event. */","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":" protected LocalDate end;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":" /** Constructor for Event.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":" * @param description Description of task.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":" * @param start Start time of Event.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":" * @param end End time of Event.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":" public Event(String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"emzm2023"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"emzm2023"},"content":" /** toString method for Event.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"emzm2023"},"content":" * @return String representation of Event.","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"emzm2023"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"emzm2023"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"emzm2023"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"emzm2023"},"content":" + \" to: \"+ end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"emzm2023":31}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" public InvalidCommandException(){","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" super(\"OOPS!!! Please type a valid command!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"emzm2023":5}},{"path":"src/main/java/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class InvalidDeadlineException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" super(\"OOPS!!! Please specify the description and deadline for this Deadline!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"emzm2023":5}},{"path":"src/main/java/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class InvalidEventException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" public InvalidEventException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" super(\"OOPS!!! Please specify the description, start, and end time for this Event!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"emzm2023":5}},{"path":"src/main/java/InvalidFileFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class InvalidFileFormatException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" public InvalidFileFormatException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" super(\"Error loading tasks from file. Please check the format of the tasks in the data file!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"emzm2023":5}},{"path":"src/main/java/InvalidTaskNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class InvalidTaskNumberException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" public InvalidTaskNumberException(int index){","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" super(\"OOPS!!! There is no task \" + index + \"!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"emzm2023":5}},{"path":"src/main/java/InvalidTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class InvalidTodoException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" public InvalidTodoException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" super(\"OOPS!!! Please specify the description for this Todo!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"emzm2023":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" /** The description of the task. */","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":" /** The done status of the task. */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":" /** Constructor for a task.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":" * @param description The task description.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":" * */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":" /** Returns an X if the task is done.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"emzm2023"},"content":" * @return A string showing if the task has been done or not.","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"emzm2023"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"emzm2023"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":" /** Prints out task done status along with the task description.","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"emzm2023"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"emzm2023"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"emzm2023"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"emzm2023"},"content":" /** Marks the task done status with the boolean argument.","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"emzm2023"},"content":" * @param status The boolean value to represent the task done status with.","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"emzm2023"},"content":" * @return Returns true if successful.","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"emzm2023"},"content":" public boolean markStatus(boolean status) {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"emzm2023"},"content":" this.isDone \u003d status;","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"emzm2023"},"content":" return true;","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"emzm2023":42}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" /** Constructor for Todo.","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" * @param description Description of task.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":" /** toString method for Todo.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":" * @return String representation of Todo.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"emzm2023":18}},{"path":"text-ui-test/data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"[T][ ] study","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":"[T][X] study","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":"[D][ ] read (by: Oct 4 2023)","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"emzm2023":3}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"hi","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":"add","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":"add","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":"add todo","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"add todo study","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":"add deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":"add deadline read","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":"add deadline read /by","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":"add deadline /by 2023-10-04","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":"add deadline read /by 2023-10-04","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":"add event","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":"add event shop","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":"add event shop /from","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":"add event shop /from 2023-09-05","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":"add event shop /from 2023-09-05 /to 2023-09-10","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":"mark","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"emzm2023"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"emzm2023"},"content":"unmark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"emzm2023"},"content":"unmark","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"emzm2023"},"content":"delete 5","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"emzm2023"},"content":"delete 3","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"emzm2023"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"emzm2023":25}},{"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":"emzm2023"},"content":"java -classpath ../bin Chatbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":"## convert to UNIX format","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"emzm2023"},"content":"dos2unix ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"emzm2023"},"content":"dos2unix EXPECTED-UNIX.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":35,"emzm2023":4}}] +[{"path":"src/main/java/Chatbot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"content":"import java.util.ArrayList;"},{"lineNumber":3,"content":"import java.util.List;"},{"lineNumber":4,"content":""},{"lineNumber":5,"content":"public class Chatbot {"},{"lineNumber":6,"content":" /** Name of the Chatbot. */"},{"lineNumber":7,"content":" private static final String NAME \u003d \"Bro\";"},{"lineNumber":8,"content":""},{"lineNumber":9,"content":" /** TaskList for the Chatbot. */"},{"lineNumber":10,"content":" private TaskList taskList;"},{"lineNumber":11,"content":""},{"lineNumber":12,"content":" /** Ui for the Chatbot. */"},{"lineNumber":13,"content":" private Ui ui;"},{"lineNumber":14,"content":""},{"lineNumber":15,"content":" /** Storage for the Chatbot. */"},{"lineNumber":16,"content":" private Storage storage;"},{"lineNumber":17,"content":""},{"lineNumber":18,"content":" /** Parser for the Chatbot. */"},{"lineNumber":19,"content":" private Parser parser;"},{"lineNumber":20,"content":""},{"lineNumber":21,"content":" /**"},{"lineNumber":22,"content":" * Constructor for the Chatbot."},{"lineNumber":23,"content":" */"},{"lineNumber":24,"content":" private Chatbot() {"},{"lineNumber":25,"content":" this.taskList \u003d new TaskList();"},{"lineNumber":26,"content":" this.ui \u003d new Ui(NAME);"},{"lineNumber":27,"content":" this.storage \u003d new Storage();"},{"lineNumber":28,"content":" this.parser \u003d new Parser();"},{"lineNumber":29,"content":" }"},{"lineNumber":30,"content":""},{"lineNumber":31,"content":" /**"},{"lineNumber":32,"content":" * Greets the user."},{"lineNumber":33,"content":" */"},{"lineNumber":34,"content":" private void greet() {"},{"lineNumber":35,"content":" this.ui.greet();"},{"lineNumber":36,"content":" }"},{"lineNumber":37,"content":""},{"lineNumber":38,"content":" /**"},{"lineNumber":39,"content":" * Causes Chatbot to exit."},{"lineNumber":40,"content":" */"},{"lineNumber":41,"content":" private void exit() {"},{"lineNumber":42,"content":" this.ui.exit();"},{"lineNumber":43,"content":" }"},{"lineNumber":44,"content":""},{"lineNumber":45,"content":" /**"},{"lineNumber":46,"content":" * Adds task inputted by user to taskList. Prints out confirmation."},{"lineNumber":47,"content":" *"},{"lineNumber":48,"content":" * @param input The command inputted by the user."},{"lineNumber":49,"content":" * @throws InvalidTodoException If format of Todo entered is invalid."},{"lineNumber":50,"content":" * @throws InvalidDeadlineException If format of Deadline entered is invalid."},{"lineNumber":51,"content":" * @throws InvalidEventException If format of Event entered is invalid."},{"lineNumber":52,"content":" * @throws InvalidCommandException If format of command entered is invalid."},{"lineNumber":53,"content":" */"},{"lineNumber":54,"content":" private void add(String input) throws InvalidTodoException,"},{"lineNumber":55,"content":" InvalidDeadlineException, InvalidEventException, InvalidCommandException {"},{"lineNumber":56,"content":" Task newTask;"},{"lineNumber":57,"content":" List\u003cString\u003e taskArr \u003d this.parser.parseAdd(input);"},{"lineNumber":58,"content":" String type \u003d taskArr.get(0);"},{"lineNumber":59,"content":""},{"lineNumber":60,"content":" if (type.equals(\"todo\")) {"},{"lineNumber":61,"content":" String description \u003d taskArr.get(1);"},{"lineNumber":62,"content":" newTask \u003d new Todo(description);"},{"lineNumber":63,"content":" } else if (type.equals(\"deadline\")) {"},{"lineNumber":64,"content":" try {"},{"lineNumber":65,"content":" String description \u003d taskArr.get(1);"},{"lineNumber":66,"content":" String deadline \u003d taskArr.get(2);"},{"lineNumber":67,"content":" newTask \u003d new Deadline(description, deadline);"},{"lineNumber":68,"content":" } catch (DateTimeParseException e) {"},{"lineNumber":69,"content":" throw new InvalidDeadlineException();"},{"lineNumber":70,"content":" }"},{"lineNumber":71,"content":" } else {"},{"lineNumber":72,"content":" try {"},{"lineNumber":73,"content":" String description \u003d taskArr.get(1);"},{"lineNumber":74,"content":" String start \u003d taskArr.get(2);"},{"lineNumber":75,"content":" String end \u003d taskArr.get(3);"},{"lineNumber":76,"content":""},{"lineNumber":77,"content":" newTask \u003d new Event(description, start, end);"},{"lineNumber":78,"content":" } catch (DateTimeParseException e) {"},{"lineNumber":79,"content":" throw new InvalidEventException();"},{"lineNumber":80,"content":" }"},{"lineNumber":81,"content":" }"},{"lineNumber":82,"content":""},{"lineNumber":83,"content":" this.taskList.add(newTask);"},{"lineNumber":84,"content":" this.ui.printAddConfirmation(this.taskList);"},{"lineNumber":85,"content":" }"},{"lineNumber":86,"content":""},{"lineNumber":87,"content":" /**"},{"lineNumber":88,"content":" * Lists out all the tasks in taskList."},{"lineNumber":89,"content":" */"},{"lineNumber":90,"content":" private void listTasks() {"},{"lineNumber":91,"content":" this.ui.listTasks(this.taskList);"},{"lineNumber":92,"content":" }"},{"lineNumber":93,"content":""},{"lineNumber":94,"content":" /**"},{"lineNumber":95,"content":" * Marks specified task as done. Prints confirmation."},{"lineNumber":96,"content":" *"},{"lineNumber":97,"content":" * @param input The user input."},{"lineNumber":98,"content":" * @throws InvalidTaskNumberException If there is no task with the task number in the taskList."},{"lineNumber":99,"content":" * @throws InvalidCommandException If format of command entered is invalid."},{"lineNumber":100,"content":" */"},{"lineNumber":101,"content":" private void markTaskStatusTrue(String input) throws InvalidTaskNumberException, InvalidCommandException {"},{"lineNumber":102,"content":" int taskNum \u003d parser.parseMarkTaskStatusTrue(input);"},{"lineNumber":103,"content":""},{"lineNumber":104,"content":" if (taskNum \u003e this.taskList.size()) {"},{"lineNumber":105,"content":" throw new InvalidTaskNumberException(taskNum);"},{"lineNumber":106,"content":" } else {"},{"lineNumber":107,"content":" taskList.markTaskTrue(taskNum - 1);"},{"lineNumber":108,"content":" this.ui.printMarkDoneConfirmation(taskNum - 1, this.taskList);"},{"lineNumber":109,"content":" }"},{"lineNumber":110,"content":" }"},{"lineNumber":111,"content":""},{"lineNumber":112,"content":" /**"},{"lineNumber":113,"content":" * Marks specified task as undone. Prints confirmation."},{"lineNumber":114,"content":" *"},{"lineNumber":115,"content":" * @param input The user input."},{"lineNumber":116,"content":" * @throws InvalidTaskNumberException If there is no task with the task number in the taskList."},{"lineNumber":117,"content":" * @throws InvalidCommandException If format of command entered is invalid."},{"lineNumber":118,"content":" */"},{"lineNumber":119,"content":" private void markTaskStatusFalse(String input) throws InvalidTaskNumberException, InvalidCommandException {"},{"lineNumber":120,"content":" int taskNum \u003d parser.parseMarkTaskStatusFalse(input);"},{"lineNumber":121,"content":""},{"lineNumber":122,"content":" if (taskNum \u003e this.taskList.size()) {"},{"lineNumber":123,"content":" throw new InvalidTaskNumberException(taskNum);"},{"lineNumber":124,"content":" } else {"},{"lineNumber":125,"content":" taskList.markTaskFalse(taskNum - 1);"},{"lineNumber":126,"content":" this.ui.printMarkUndoneConfirmation(taskNum - 1, this.taskList);"},{"lineNumber":127,"content":" }"},{"lineNumber":128,"content":" }"},{"lineNumber":129,"content":""},{"lineNumber":130,"content":" /**"},{"lineNumber":131,"content":" * Deletes the specified task in the list."},{"lineNumber":132,"content":" *"},{"lineNumber":133,"content":" * @param input The user input."},{"lineNumber":134,"content":" * @throws InvalidTaskNumberException If there is no task with the task number in the taskList."},{"lineNumber":135,"content":" * @throws InvalidCommandException If format of command entered is invalid."},{"lineNumber":136,"content":" */"},{"lineNumber":137,"content":" public void delete(String input) throws InvalidTaskNumberException, InvalidCommandException {"},{"lineNumber":138,"content":" int taskNum \u003d parser.parseDelete(input);"},{"lineNumber":139,"content":" this.taskList.delete(taskNum - 1);"},{"lineNumber":140,"content":" this.ui.printDeleteConfirmation(taskNum - 1, this.taskList);"},{"lineNumber":141,"content":" }"},{"lineNumber":142,"content":""},{"lineNumber":143,"content":" /**"},{"lineNumber":144,"content":" * Loads file input and adds respective tasks into chatbot taskList."},{"lineNumber":145,"content":" */"},{"lineNumber":146,"content":" private void loadTasksFromFile() {"},{"lineNumber":147,"content":" try {"},{"lineNumber":148,"content":" this.storage.loadTasksFromFile(this.taskList);"},{"lineNumber":149,"content":" } catch (Exception e) {"},{"lineNumber":150,"content":" this.ui.printExceptionMessage(e);"},{"lineNumber":151,"content":" }"},{"lineNumber":152,"content":" }"},{"lineNumber":153,"content":""},{"lineNumber":154,"content":" /**"},{"lineNumber":155,"content":" * Reads user input. Exits if user input is \"bye\", lists tasks if input is \"list\", else, echoes commands."},{"lineNumber":156,"content":" * Update current state of tasks to data file."},{"lineNumber":157,"content":" */"},{"lineNumber":158,"content":" private void readInput() {"},{"lineNumber":159,"content":" String userInput \u003d this.ui.getUserInput();"},{"lineNumber":160,"content":""},{"lineNumber":161,"content":" try {"},{"lineNumber":162,"content":" if (userInput.equals(\"list\")) {"},{"lineNumber":163,"content":" this.listTasks();"},{"lineNumber":164,"content":" } else if (userInput.equals(\"bye\")) {"},{"lineNumber":165,"content":" this.exit();"},{"lineNumber":166,"content":" } else if (userInput.startsWith(\"add \")) {"},{"lineNumber":167,"content":" this.add(userInput);"},{"lineNumber":168,"content":" } else if (userInput.startsWith(\"mark \")) {"},{"lineNumber":169,"content":" this.markTaskStatusTrue(userInput);"},{"lineNumber":170,"content":" } else if (userInput.startsWith(\"unmark \")) {"},{"lineNumber":171,"content":" this.markTaskStatusFalse(userInput);"},{"lineNumber":172,"content":" } else if (userInput.startsWith(\"delete \")) {"},{"lineNumber":173,"content":" this.delete(userInput);"},{"lineNumber":174,"content":" } else {"},{"lineNumber":175,"content":" throw new InvalidCommandException();"},{"lineNumber":176,"content":" }"},{"lineNumber":177,"content":" this.saveTasks();"},{"lineNumber":178,"content":" } catch (Exception e) {"},{"lineNumber":179,"content":" this.ui.printExceptionMessage(e);"},{"lineNumber":180,"content":" } finally {"},{"lineNumber":181,"content":" if (!userInput.equals(\"bye\")) {"},{"lineNumber":182,"content":" this.readInput();"},{"lineNumber":183,"content":" }"},{"lineNumber":184,"content":" }"},{"lineNumber":185,"content":" }"},{"lineNumber":186,"content":""},{"lineNumber":187,"content":" /**"},{"lineNumber":188,"content":" * Saves current taskList to data file."},{"lineNumber":189,"content":" */"},{"lineNumber":190,"content":" public void saveTasks() {"},{"lineNumber":191,"content":" try {"},{"lineNumber":192,"content":" this.storage.saveTasks(this.taskList);"},{"lineNumber":193,"content":" } catch (Exception e) {"},{"lineNumber":194,"content":" this.ui.printExceptionMessage(e);"},{"lineNumber":195,"content":" }"},{"lineNumber":196,"content":" }"},{"lineNumber":197,"content":""},{"lineNumber":198,"content":" public static void main(String[] args) {"},{"lineNumber":199,"content":" Chatbot chatbot \u003d new Chatbot();"},{"lineNumber":200,"content":" chatbot.loadTasksFromFile();"},{"lineNumber":201,"content":" chatbot.greet();"},{"lineNumber":202,"content":" chatbot.readInput();"},{"lineNumber":203,"content":" }"},{"lineNumber":204,"content":"}"}],"authorContributionMap":{"null":203,"emzm2023":1}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":" /** LocalDate deadline for Deadline. */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":" * Constructor for Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":" * @param description Description of task.","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":" * @param by Deadline for Deadline.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"emzm2023"},"content":" * Constructor for Deadline loaded from Storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"emzm2023"},"content":" * @param description Description of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"emzm2023"},"content":" * @param by Deadline for Deadline as LocalDate.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"emzm2023"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"emzm2023"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"emzm2023"},"content":" * toString method for Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"emzm2023"},"content":" * @return String representation of Deadline.","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"emzm2023"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"emzm2023"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"emzm2023"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"emzm2023":39}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":" /** Start time of Event. */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":" protected LocalDate start;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":" /** End time of Event. */","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":" protected LocalDate end;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":" * Constructor for Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":" * @param description Description of task.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":" * @param start Start time of Event.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":" * @param end End time of Event.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"emzm2023"},"content":" this.start \u003d LocalDate.parse(start);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"emzm2023"},"content":" this.end \u003d LocalDate.parse(end);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"emzm2023"},"content":" * Constructor for Event loaded from Storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"emzm2023"},"content":" * @param description Description of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"emzm2023"},"content":" * @param start Start time of Event as LocalDate.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"emzm2023"},"content":" * @param end End time of Event as LocalDate.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"emzm2023"},"content":" * */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"emzm2023"},"content":" public Event(String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"emzm2023"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"emzm2023"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"emzm2023"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"emzm2023"},"content":" * toString method for Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"emzm2023"},"content":" * @return String representation of Event.","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"emzm2023"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"emzm2023"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"emzm2023"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"emzm2023"},"content":" + \" to: \"+ end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"emzm2023":46}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" public InvalidCommandException(){","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" super(\"OOPS!!! Please type a valid command!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"emzm2023":5}},{"path":"src/main/java/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class InvalidDeadlineException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" super(\"OOPS!!! Please specify the description and deadline in the correct format for this Deadline!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"emzm2023":5}},{"path":"src/main/java/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class InvalidEventException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" public InvalidEventException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" super(\"OOPS!!! Please specify the description, start, and end time in the correct format for this Event!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"emzm2023":5}},{"path":"src/main/java/InvalidFileFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class InvalidFileFormatException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" public InvalidFileFormatException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" super(\"Error loading tasks from file. Please check the format of the tasks in the data file!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"emzm2023":5}},{"path":"src/main/java/InvalidTaskNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class InvalidTaskNumberException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" public InvalidTaskNumberException(int index){","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" super(\"OOPS!!! There is no task \" + index + \"!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"emzm2023":5}},{"path":"src/main/java/InvalidTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class InvalidTodoException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" public InvalidTodoException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" super(\"OOPS!!! Please specify the description for this Todo!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"emzm2023":5}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":" * Parses user input for add method. If input is appropriate, returns an array containing the type of task,","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":" * description, and other parameters, in that order.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":" * @param input The command inputted by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":" * @returns An array containing the type and details of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":" * @throws InvalidTodoException If format of Todo entered is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":" * @throws InvalidDeadlineException If format of Deadline entered is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":" * @throws InvalidEventException If format of Event entered is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":" * @throws InvalidCommandException If format of command entered is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":" public List\u003cString\u003e parseAdd(String input) throws InvalidTodoException,","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"emzm2023"},"content":" InvalidDeadlineException, InvalidEventException, InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"emzm2023"},"content":" List\u003cString\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"emzm2023"},"content":" String nextInput;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"emzm2023"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"emzm2023"},"content":" nextInput \u003d input.substring(4);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"emzm2023"},"content":" if (nextInput.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"emzm2023"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"emzm2023"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"emzm2023"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"emzm2023"},"content":" if (nextInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"emzm2023"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"emzm2023"},"content":" String description \u003d nextInput.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"emzm2023"},"content":" if (description.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"emzm2023"},"content":" throw new InvalidTodoException();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"emzm2023"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"emzm2023"},"content":" arr.add(0, \"todo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"emzm2023"},"content":" arr.add(1, description);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"emzm2023"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"emzm2023"},"content":" throw new InvalidTodoException();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"emzm2023"},"content":" } else if (nextInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"emzm2023"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"emzm2023"},"content":" int by \u003d nextInput.indexOf(\"/by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"emzm2023"},"content":" String description \u003d nextInput.substring(9, by - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"emzm2023"},"content":" String deadline \u003d nextInput.substring(by + 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"emzm2023"},"content":" if (description.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"emzm2023"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"emzm2023"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"emzm2023"},"content":" arr.add(0,\"deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"emzm2023"},"content":" arr.add(1, description);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"emzm2023"},"content":" arr.add(2, deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"emzm2023"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"emzm2023"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"emzm2023"},"content":" } else if (nextInput.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"emzm2023"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"emzm2023"},"content":" int from \u003d nextInput.indexOf(\"/from\");","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"emzm2023"},"content":" int to \u003d nextInput.indexOf(\"/to\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"emzm2023"},"content":" String description \u003d nextInput.substring(6, from - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"emzm2023"},"content":" String start \u003d nextInput.substring(from + 6, to - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"emzm2023"},"content":" String end \u003d nextInput.substring(to + 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"emzm2023"},"content":" if (description.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"emzm2023"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"emzm2023"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"emzm2023"},"content":" arr.add(0, \"event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"emzm2023"},"content":" arr.add(1, description);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"emzm2023"},"content":" arr.add(2, start);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"emzm2023"},"content":" arr.add(3, end);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"emzm2023"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"emzm2023"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"emzm2023"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"emzm2023"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"emzm2023"},"content":" return arr;","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"emzm2023"},"content":" * Parses input for markTaskStatusTrue method. If input is appropriate, returns an integer","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"emzm2023"},"content":" * representing the number of the task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"emzm2023"},"content":" * @param input The user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"emzm2023"},"content":" * @returns The number of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"emzm2023"},"content":" * @throws InvalidTaskNumberException If there is no task with the task number in the taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"emzm2023"},"content":" * @throws InvalidCommandException If format of command entered is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"emzm2023"},"content":" public int parseMarkTaskStatusTrue(String input) throws InvalidTaskNumberException, InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"emzm2023"},"content":" int taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"emzm2023"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"emzm2023"},"content":" String nextInput \u003d input.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"emzm2023"},"content":" if (nextInput.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"emzm2023"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"emzm2023"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"emzm2023"},"content":" taskIndex \u003d Integer.parseInt(nextInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"emzm2023"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"emzm2023"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"emzm2023"},"content":" return taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"emzm2023"},"content":" * Parses input for markTaskStatusFalse method. If input is appropriate, returns an integer","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"emzm2023"},"content":" * representing the number of the task to be unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"emzm2023"},"content":" * @param input The user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"emzm2023"},"content":" * @returns The number of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"emzm2023"},"content":" * @throws InvalidTaskNumberException If there is no task with the task number in the taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"emzm2023"},"content":" * @throws InvalidCommandException If format of command entered is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"emzm2023"},"content":" public int parseMarkTaskStatusFalse(String input) throws InvalidTaskNumberException, InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"emzm2023"},"content":" int taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"emzm2023"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"emzm2023"},"content":" String nextInput \u003d input.substring(7);","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"emzm2023"},"content":" if (nextInput.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"emzm2023"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"emzm2023"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"emzm2023"},"content":" taskIndex \u003d Integer.parseInt(nextInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"emzm2023"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"emzm2023"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"emzm2023"},"content":" return taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"emzm2023"},"content":" * Parses input for the delete method. If input is appropriate, returns an integer","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"emzm2023"},"content":" * representing the number of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"emzm2023"},"content":" * @param input The user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"emzm2023"},"content":" * @returns The number of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"emzm2023"},"content":" * @throws InvalidTaskNumberException If there is no task with the task number in the taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"emzm2023"},"content":" * @throws InvalidCommandException If format of command entered is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"emzm2023"},"content":" public int parseDelete(String input) throws InvalidTaskNumberException, InvalidCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"emzm2023"},"content":" int taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"emzm2023"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"emzm2023"},"content":" String nextInput \u003d input.substring(7);","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"emzm2023"},"content":" if (nextInput.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"emzm2023"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"emzm2023"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"emzm2023"},"content":" taskIndex \u003d Integer.parseInt(nextInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"emzm2023"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"emzm2023"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"emzm2023"},"content":" return taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"emzm2023":158}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":" * Loads file input and adds respective tasks into chatbot taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":" public void loadTasksFromFile(TaskList taskList) throws FileNotFoundException, InvalidFileFormatException,","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":" IOException, SecurityException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":" File directory \u003d new File(\"data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":" directory.mkdir();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"emzm2023"},"content":" File data \u003d new File(\"data/tasks.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"emzm2023"},"content":" if (data.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"emzm2023"},"content":" Scanner dataScanner \u003d new Scanner(data);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"emzm2023"},"content":" while (dataScanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":" String task \u003d dataScanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"emzm2023"},"content":" if (task.startsWith(\"[T]\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"emzm2023"},"content":" String description \u003d task.substring(7);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"emzm2023"},"content":" if (description.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"emzm2023"},"content":" throw new InvalidFileFormatException();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"emzm2023"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"emzm2023"},"content":" taskList.add(new Todo(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"emzm2023"},"content":" } else if (task.startsWith(\"[D]\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"emzm2023"},"content":" int by \u003d task.indexOf(\"(by: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"emzm2023"},"content":" String description \u003d task.substring(7, by - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"emzm2023"},"content":" LocalDate deadline \u003d LocalDate.parse(task.substring(by + 5, task.length() - 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"emzm2023"},"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"emzm2023"},"content":" if (description.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"emzm2023"},"content":" throw new InvalidFileFormatException();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"emzm2023"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"emzm2023"},"content":" taskList.add(new Deadline(description, deadline));","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"emzm2023"},"content":" } else if (task.startsWith(\"[E]\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"emzm2023"},"content":" int from \u003d task.indexOf(\"(from: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"emzm2023"},"content":" int to \u003d task.indexOf(\"to: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"emzm2023"},"content":" String description \u003d task.substring(7, from - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"emzm2023"},"content":" LocalDate start \u003d LocalDate.parse(task.substring(from + 7, to - 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"emzm2023"},"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"emzm2023"},"content":" LocalDate end \u003d LocalDate.parse(task.substring(to + 4, task.length() - 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"emzm2023"},"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"emzm2023"},"content":" if (description.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"emzm2023"},"content":" throw new InvalidFileFormatException();","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"emzm2023"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"emzm2023"},"content":" taskList.add(new Event(description, start, end));","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"emzm2023"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"emzm2023"},"content":" throw new InvalidFileFormatException();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"emzm2023"},"content":" dataScanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"emzm2023"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"emzm2023"},"content":" data.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"emzm2023"},"content":" * Saves current taskList to data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"emzm2023"},"content":" public void saveTasks(TaskList taskList) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"emzm2023"},"content":" FileWriter fw \u003d new FileWriter(\"data/tasks.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"emzm2023"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"emzm2023"},"content":" fw.write(taskList.taskRep(i) + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"emzm2023"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"emzm2023":80}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" /** The description of the task. */","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":" /** The done status of the task. */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":" /** Constructor for a task.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":" * @param description The task description.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":" * */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":" /** Returns an X if the task is done.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"emzm2023"},"content":" * @return A string showing if the task has been done or not.","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"emzm2023"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"emzm2023"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":" /** Prints out task done status along with the task description.","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"emzm2023"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"emzm2023"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"emzm2023"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"emzm2023"},"content":" /** Marks the task done status with the boolean argument.","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"emzm2023"},"content":" * @param status The boolean value to represent the task done status with.","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"emzm2023"},"content":" * @return Returns true if successful.","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"emzm2023"},"content":" public boolean markStatus(boolean status) {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"emzm2023"},"content":" this.isDone \u003d status;","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"emzm2023"},"content":" return true;","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"emzm2023":42}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":" /** TaskList for the Chatbot. */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":" private List\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":" * Constructor for the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":" * Adds given task to the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":" * @param newTask The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"emzm2023"},"content":" public void add(Task newTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"emzm2023"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":" * Returns the current size of the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"emzm2023"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"emzm2023"},"content":" return this.taskList.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"emzm2023"},"content":" * Returns the String representation of the task with the given index.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"emzm2023"},"content":" * @param i The index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"emzm2023"},"content":" * @returns The String representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"emzm2023"},"content":" public String taskRep(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"emzm2023"},"content":" return taskList.get(i).toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"emzm2023"},"content":" * Marks the task with the given index as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"emzm2023"},"content":" * @param i The index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"emzm2023"},"content":" public void markTaskTrue(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"emzm2023"},"content":" taskList.get(i).markStatus(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"emzm2023"},"content":" * Marks the task with the given index as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"emzm2023"},"content":" * @param i The index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"emzm2023"},"content":" public void markTaskFalse(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"emzm2023"},"content":" taskList.get(i).markStatus(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"emzm2023"},"content":" * Removes the task with the given index.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"emzm2023"},"content":" * @param i The index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"emzm2023"},"content":" * @throws InvalidTaskNumberException If there is no task with the given index in the taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"emzm2023"},"content":" public void delete(int i) throws InvalidTaskNumberException {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"emzm2023"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"emzm2023"},"content":" this.taskList.remove(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"emzm2023"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"emzm2023"},"content":" throw new InvalidTaskNumberException(i + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"emzm2023":72}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":" /** Constructor for Todo.","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":" * @param description Description of task.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":" /** toString method for Todo.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":" * @return String representation of Todo.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"emzm2023":18}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":" /** Name of the Chatbot associated with the Ui instance. */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":" private String name;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":" /** Scanner for the Ui. */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":" * Constructor for the Chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":" public Ui(String name) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"emzm2023"},"content":" * Greets the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"emzm2023"},"content":" public void greet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"emzm2023"},"content":" System.out.println(\"Hello! I\u0027m \" + this.name + \"\\n\" + \"What can I do for you?\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"emzm2023"},"content":" * Ends user interactions and closes scanner.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"emzm2023"},"content":" public void exit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"emzm2023"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"emzm2023"},"content":" this.scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"emzm2023"},"content":" * Prints confirmation after adding task.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"emzm2023"},"content":" * @param taskList The TaskList containing the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"emzm2023"},"content":" public void printAddConfirmation(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"emzm2023"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + taskList.taskRep(taskList.size() - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"emzm2023"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"emzm2023"},"content":" * Prints confirmation after marking task done status as true.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"emzm2023"},"content":" * @param i The index of the task that is marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"emzm2023"},"content":" * @param taskList The TaskList containing the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"emzm2023"},"content":" public void printMarkDoneConfirmation(int i, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"emzm2023"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" + taskList.taskRep(i) + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"emzm2023"},"content":" * Prints confirmation after marking task done status as false.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"emzm2023"},"content":" * @param i The index of the task that is marked as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"emzm2023"},"content":" * @param taskList The TaskList containing the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"emzm2023"},"content":" public void printMarkUndoneConfirmation(int i, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"emzm2023"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" + taskList.taskRep(i) + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"emzm2023"},"content":" * Prints confirmation after deleting task.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"emzm2023"},"content":" * @param i The index of the task that is deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"emzm2023"},"content":" * @param taskList The TaskList containing the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"emzm2023"},"content":" public void printDeleteConfirmation(int i, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"emzm2023"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + taskList.taskRep(i) + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"emzm2023"},"content":" * Lists out all the tasks in taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"emzm2023"},"content":" public void listTasks(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"emzm2023"},"content":" System.out.println(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"emzm2023"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"emzm2023"},"content":" int num \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"emzm2023"},"content":" System.out.println(num +\". \" + taskList.taskRep(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"emzm2023"},"content":" System.out.print(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"emzm2023"},"content":" * Receives and reads user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"emzm2023"},"content":" * @returns String containing next line of user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"emzm2023"},"content":" public String getUserInput() {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"emzm2023"},"content":" System.out.print(\"\u003e \");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"emzm2023"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"emzm2023"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"emzm2023"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"emzm2023"},"content":" * Prints Exception message.","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"emzm2023"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"emzm2023"},"content":" * @param e The caught Exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"emzm2023"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"emzm2023"},"content":" public void printExceptionMessage(Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"emzm2023"},"content":" System.out.println(e.getMessage() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"emzm2023"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"emzm2023"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"emzm2023":104}},{"path":"text-ui-test/data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"[T][ ] study","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":"[T][X] study","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":"[D][ ] read (by: Oct 4 2023)","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"emzm2023":3}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"emzm2023"},"content":"hi","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"emzm2023"},"content":"add","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"emzm2023"},"content":"add","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"emzm2023"},"content":"add todo","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"emzm2023"},"content":"add todo study","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"emzm2023"},"content":"add deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"emzm2023"},"content":"add deadline read","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"emzm2023"},"content":"add deadline read /by","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"emzm2023"},"content":"add deadline /by 2023-10-04","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"emzm2023"},"content":"add deadline read /by 2023-10-04","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"emzm2023"},"content":"add event","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"emzm2023"},"content":"add event shop","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"emzm2023"},"content":"add event shop /from","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"emzm2023"},"content":"add event shop /from 2023-09-05","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"emzm2023"},"content":"add event shop /from 2023-09-05 /to 2023-09-10","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"emzm2023"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"emzm2023"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"emzm2023"},"content":"mark","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"emzm2023"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"emzm2023"},"content":"unmark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"emzm2023"},"content":"unmark","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"emzm2023"},"content":"delete 5","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"emzm2023"},"content":"delete 3","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"emzm2023"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"emzm2023":25}},{"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":"emzm2023"},"content":"java -classpath ../bin Chatbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"emzm2023"},"content":"## convert to UNIX format","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"emzm2023"},"content":"dos2unix ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"emzm2023"},"content":"dos2unix EXPECTED-UNIX.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":35,"emzm2023":4}}] diff --git a/emzm2023_ip_master/commits.json b/emzm2023_ip_master/commits.json index 88ba5984..42512290 100644 --- a/emzm2023_ip_master/commits.json +++ b/emzm2023_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"emzm2023":[{"date":"2023-08-22","commitResults":[{"hash":"bfc4994f0b7d26b98f3ce6922fcb9d777c4cb803","isMergeCommit":false,"messageTitle":"renamed chatbot, implemented greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"c3477fe85481913482de66b49cca8dbf54bada82","isMergeCommit":false,"messageTitle":"implemented echo and readInput methods.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":2}}}]},{"date":"2023-08-23","commitResults":[{"hash":"3c0d92d285e426c3427eca3c8061c0c188a44587","isMergeCommit":false,"messageTitle":"implemented add and listTasks functionality.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":6}}},{"hash":"4aa321ecebd2f175bd18b83bfe631ae824a35302","isMergeCommit":false,"messageTitle":"renamed Duke class to Chatbot, improved functionality for adding tasks, implemented Task class and ability to mark tasks as done/undone.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":158,"deletions":83}}},{"hash":"092eb23f38c3e088177121a4a6948de57fa02055","isMergeCommit":false,"messageTitle":"added tracking for Event, Deadline, and Todo Tasks.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":109,"deletions":19}}},{"hash":"9202336c69ac0b832451398417d8c1341ee3e01a","isMergeCommit":false,"messageTitle":"edited code in Chatbot.java and implemented semi-automated testing.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"sh":{"insertions":4,"deletions":3}}}]},{"date":"2023-08-24","commitResults":[{"hash":"fe8a11b46a87aae18d98d2bf32b55480b8ce2577","isMergeCommit":false,"messageTitle":"updated functionality of Chatbot and implemented error handling with exceptions.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":4},"java":{"insertions":26,"deletions":138}}},{"hash":"3d0a8c51b2dc53af91ad6c15a5609ce45ad538c9","isMergeCommit":false,"messageTitle":"implemented delete task feature, updated error handling to check for blank inputs.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":6,"deletions":6}}}]},{"date":"2023-08-30","commitResults":[{"hash":"438cce65a6a015b73a0e74e82f3c1026f9da02d1","isMergeCommit":false,"messageTitle":"Edit comments according to coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"12814b9e1d14f49d86e4cd687edc0fe3481bd3b7","isMergeCommit":false,"messageTitle":"Fixed bugs and implemented save function for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":2}}},{"hash":"4a29cb829c924744c4d905bda856c43ed280cb06","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"44090b4052c58c2b9da74e482a13626687b96969","isMergeCommit":false,"messageTitle":"Implemented deadline and event dates feature, fixed bugs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":4},"java":{"insertions":16,"deletions":9}}},{"hash":"252be4e9b03726da6a92881358b6b1bb7000ba92","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"emzm2023":{"java":148,"md":0,"fxml":0,"sh":4,"bat":0,"gradle":0,"txt":28}},"authorContributionVariance":{"emzm2023":13659.228},"authorDisplayNameMap":{"emzm2023":"CS2103T-T09-2 ELIZ.. MIN"}} +{"authorDailyContributionsMap":{"emzm2023":[{"date":"2023-08-22","commitResults":[{"hash":"bfc4994f0b7d26b98f3ce6922fcb9d777c4cb803","isMergeCommit":false,"messageTitle":"renamed chatbot, implemented greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"c3477fe85481913482de66b49cca8dbf54bada82","isMergeCommit":false,"messageTitle":"implemented echo and readInput methods.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":2}}}]},{"date":"2023-08-23","commitResults":[{"hash":"3c0d92d285e426c3427eca3c8061c0c188a44587","isMergeCommit":false,"messageTitle":"implemented add and listTasks functionality.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":6}}},{"hash":"4aa321ecebd2f175bd18b83bfe631ae824a35302","isMergeCommit":false,"messageTitle":"renamed Duke class to Chatbot, improved functionality for adding tasks, implemented Task class and ability to mark tasks as done/undone.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":158,"deletions":83}}},{"hash":"092eb23f38c3e088177121a4a6948de57fa02055","isMergeCommit":false,"messageTitle":"added tracking for Event, Deadline, and Todo Tasks.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":109,"deletions":19}}},{"hash":"9202336c69ac0b832451398417d8c1341ee3e01a","isMergeCommit":false,"messageTitle":"edited code in Chatbot.java and implemented semi-automated testing.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"sh":{"insertions":4,"deletions":3}}}]},{"date":"2023-08-24","commitResults":[{"hash":"fe8a11b46a87aae18d98d2bf32b55480b8ce2577","isMergeCommit":false,"messageTitle":"updated functionality of Chatbot and implemented error handling with exceptions.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":4},"java":{"insertions":26,"deletions":138}}},{"hash":"3d0a8c51b2dc53af91ad6c15a5609ce45ad538c9","isMergeCommit":false,"messageTitle":"implemented delete task feature, updated error handling to check for blank inputs.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":6,"deletions":6}}}]},{"date":"2023-08-30","commitResults":[{"hash":"438cce65a6a015b73a0e74e82f3c1026f9da02d1","isMergeCommit":false,"messageTitle":"Edit comments according to coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"12814b9e1d14f49d86e4cd687edc0fe3481bd3b7","isMergeCommit":false,"messageTitle":"Fixed bugs and implemented save function for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":2}}},{"hash":"4a29cb829c924744c4d905bda856c43ed280cb06","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"44090b4052c58c2b9da74e482a13626687b96969","isMergeCommit":false,"messageTitle":"Implemented deadline and event dates feature, fixed bugs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":4},"java":{"insertions":16,"deletions":9}}},{"hash":"252be4e9b03726da6a92881358b6b1bb7000ba92","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"ba7b3e20c2791cf369882f52763eacde7da8b3e2","isMergeCommit":false,"messageTitle":"Restructured code to implement OOP principles","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":449,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"emzm2023":{"java":590,"md":0,"fxml":0,"sh":4,"bat":0,"gradle":0,"txt":28}},"authorContributionVariance":{"emzm2023":22886.33},"authorDisplayNameMap":{"emzm2023":"CS2103T-T09-2 ELIZ.. MIN"}} diff --git a/erohsikivar_ip_master/authorship.json b/erohsikivar_ip_master/authorship.json index d5bc8c8c..e164287e 100644 --- a/erohsikivar_ip_master/authorship.json +++ b/erohsikivar_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":" return \"[D]\" + super.getStatusIcon() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"erohsikivar"},"content":" return String.format(\"D | %d | %s | %s\", super.isDone ? 1 : 0, super.description, this.by);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"erohsikivar":20}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":" public static void display_list(ArrayList\u003cTask\u003e tasklist) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"erohsikivar"},"content":" System.out .println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"erohsikivar"},"content":" int x \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"erohsikivar"},"content":" for (Task task : tasklist) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"erohsikivar"},"content":" System.out.println(x + \".\" + task.getStatusIcon());","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"erohsikivar"},"content":" x++;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"erohsikivar"},"content":" public static void mark(ArrayList\u003cTask\u003e tasklist, int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"erohsikivar"},"content":" tasklist.get(index).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\\n\" + \" \" + tasklist.get(index).getStatusIcon());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"erohsikivar"},"content":" public static void unmark(ArrayList\u003cTask\u003e tasklist, int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"erohsikivar"},"content":" tasklist.get(index).unmark();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\\n\" + \" \" + tasklist.get(index).getStatusIcon());","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"erohsikivar"},"content":" public static void delete(ArrayList\u003cTask\u003e tasklist, int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\\n\" + \" \" + tasklist.get(index).getStatusIcon());","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"erohsikivar"},"content":" tasklist.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\" Now you have \" + tasklist.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"erohsikivar"},"content":" public static void todo(ArrayList\u003cTask\u003e tasklist, String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"erohsikivar"},"content":" tasklist.add(new Todo(description));","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\\n\" + \" \" + tasklist.get(tasklist.size() - 1).getStatusIcon());","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\" Now you have \" + tasklist.size() +\" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"erohsikivar"},"content":" public static void deadline(ArrayList\u003cTask\u003e tasklist, String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"erohsikivar"},"content":" tasklist.add(new Deadline(description, by));","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\\n\" + \" \" + tasklist.get(tasklist.size() - 1).getStatusIcon());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\" Now you have \" + tasklist.size() +\" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"erohsikivar"},"content":" public static void event(ArrayList\u003cTask\u003e tasklist, String description, LocalDateTime from, LocalTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"erohsikivar"},"content":" tasklist.add(new Event(description, from, to));","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\\n\" + \" \" + tasklist.get(tasklist.size() - 1).getStatusIcon());","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\" Now you have \" + tasklist.size() +\" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"erohsikivar"},"content":" public static void saveTasksToFile(ArrayList\u003cTask\u003e tasklist) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"erohsikivar"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"erohsikivar"},"content":" FileWriter writer \u003d new FileWriter(\"./data/duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"erohsikivar"},"content":" for (Task task : tasklist) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"erohsikivar"},"content":" // Convert task to string format and write to the file","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"erohsikivar"},"content":" writer.write(task.toString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"erohsikivar"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"erohsikivar"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"erohsikivar"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"erohsikivar"},"content":" public static void loadTasksFromFile(ArrayList\u003cTask\u003e tasklist) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"erohsikivar"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"erohsikivar"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(\"./data/duke.txt\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"erohsikivar"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"erohsikivar"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"erohsikivar"},"content":" // Parse the line and create tasks, then add to the list","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"erohsikivar"},"content":" Task task \u003d Task.parseFromString(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"erohsikivar"},"content":" tasklist.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"erohsikivar"},"content":" reader.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"erohsikivar"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"erohsikivar"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":100,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"Hello! I am Nila\");","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"erohsikivar"},"content":" ArrayList\u003cTask\u003e tasklist \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"erohsikivar"},"content":" //When the chatbot starts we load the tasks from the file","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"erohsikivar"},"content":" loadTasksFromFile(tasklist);","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"erohsikivar"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"erohsikivar"},"content":" String str \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"erohsikivar"},"content":" // Hard-coded file path relative to project root","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"erohsikivar"},"content":" String filePath \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"erohsikivar"},"content":" while (!str.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"erohsikivar"},"content":" String[] input \u003d str.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"erohsikivar"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"erohsikivar"},"content":" if (str.equals(\"todo\") || str.equals(\"deadline\") || str.equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"erohsikivar"},"content":" throw new DukeException(\"OOPS!!! The description of a \" + str + \" cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"erohsikivar"},"content":" } else if (str.equals(\"mark\") || str.equals(\"unmark\") || str.equals(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"erohsikivar"},"content":" throw new DukeException(\"OOPS!!! Please specify which task you want to mark, unmark or delete .\");","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"erohsikivar"},"content":" else if (input[0].equals(\"list\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"erohsikivar"},"content":" display_list(tasklist);","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"erohsikivar"},"content":" str \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"erohsikivar"},"content":" } else if (input[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"erohsikivar"},"content":" int index \u003d Integer.parseInt(input[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"erohsikivar"},"content":" mark(tasklist, index);","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"erohsikivar"},"content":" str \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"erohsikivar"},"content":" } else if (input[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"erohsikivar"},"content":" int index \u003d Integer.parseInt(input[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"erohsikivar"},"content":" unmark(tasklist, index);;","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"erohsikivar"},"content":" str \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"erohsikivar"},"content":" } else if (input[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"erohsikivar"},"content":" String description \u003d input[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"erohsikivar"},"content":" todo(tasklist, description);","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"erohsikivar"},"content":" str \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"erohsikivar"},"content":" } else if (input[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"erohsikivar"},"content":" String[] full_desc \u003d input[1].split(\" /by \");","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"erohsikivar"},"content":" String description \u003d full_desc[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"erohsikivar"},"content":" LocalDateTime by \u003d LocalDateTime.parse(full_desc[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"erohsikivar"},"content":" deadline(tasklist, description, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"erohsikivar"},"content":" str \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"erohsikivar"},"content":" } else if (input[0].equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"erohsikivar"},"content":" String[] full_desc \u003d input[1].split(\" /from | /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"erohsikivar"},"content":" String description \u003d full_desc[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"erohsikivar"},"content":" LocalDateTime from \u003d LocalDateTime.parse(full_desc[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"erohsikivar"},"content":" LocalTime to \u003d LocalTime.parse(full_desc[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"erohsikivar"},"content":" event(tasklist, description, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"erohsikivar"},"content":" str \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"erohsikivar"},"content":" } else if (input[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"erohsikivar"},"content":" int index \u003d Integer.parseInt(input[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"erohsikivar"},"content":" delete(tasklist, index);","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"erohsikivar"},"content":" str \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"erohsikivar"},"content":" else {","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"erohsikivar"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"erohsikivar"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"erohsikivar"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"erohsikivar"},"content":" str \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"erohsikivar"},"content":" sc.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"\\nBye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"erohsikivar"},"content":" //Before you exit, save the changes to the file","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"erohsikivar"},"content":" saveTasksToFile(tasklist);","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"erohsikivar":173,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":" public DukeException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"erohsikivar":11}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":" protected LocalTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":" public Event(String description, LocalDateTime from, LocalTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":" return \"[E]\" + super.getStatusIcon() + \"(from: \" + from + \" to: \" + to + \")\" ;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"erohsikivar"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"erohsikivar"},"content":" return String.format(\"E | %d | %s | %s | %s \", super.isDone ? 1 : 0, super.description, this.from, this.to);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"erohsikivar":23}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":" return (isDone ? \"[X] \" + description","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":" : \"[ ] \" + description );","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"erohsikivar"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"erohsikivar"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"erohsikivar"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"erohsikivar"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"erohsikivar"},"content":" public static Task parseFromString(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"erohsikivar"},"content":" String[] parts \u003d input.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"erohsikivar"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"erohsikivar"},"content":" int isDone \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"erohsikivar"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"erohsikivar"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"erohsikivar"},"content":" Task task \u003d new Todo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"erohsikivar"},"content":" if (isDone \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"erohsikivar"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"erohsikivar"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"erohsikivar"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"erohsikivar"},"content":" LocalDateTime by \u003d LocalDateTime.parse(parts[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"erohsikivar"},"content":" Task task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"erohsikivar"},"content":" if (isDone \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"erohsikivar"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"erohsikivar"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"erohsikivar"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"erohsikivar"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"erohsikivar"},"content":" LocalTime to \u003d LocalTime.parse(parts[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"erohsikivar"},"content":" Task task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"erohsikivar"},"content":" if (isDone \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"erohsikivar"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"erohsikivar"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"erohsikivar"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"erohsikivar"},"content":" throw new IllegalArgumentException(\"Invalid task type: \" + type);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"erohsikivar"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"erohsikivar"},"content":" return String.format(\"Task | %d | %s\", isDone ? 1 : 0, description);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"erohsikivar":61}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":" return \"[T]\" + super.getStatusIcon();","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":" return String.format(\"T | %d | %s\", super.isDone ? 1 : 0, super.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"erohsikivar":16}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"deadline finish english /by Today","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"event project meeting /from Mon 4pm /to 6pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"erohsikivar":8}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"erohsikivar"},"content":" mainClass.set(\"Duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"erohsikivar":1,"-":41}},{"path":"src/main/java/Command/UserInterface.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"package Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"import Task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":"public class UserInterface {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":" public void showWelcomeMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"Hello! I am Nila\");","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":" //Method to display command line","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":" public void showCommandLine(){","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - -\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"erohsikivar"},"content":" // Method to display a message","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"erohsikivar"},"content":" public void showMessage(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"erohsikivar"},"content":" System.out.println(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"erohsikivar"},"content":" // Method to display an error message","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"erohsikivar"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"Error: \" + errorMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"erohsikivar"},"content":" // Method to display the list of tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"erohsikivar"},"content":" public void showTaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"Here are your tasks:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"erohsikivar"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"erohsikivar"},"content":" System.out.println((i + 1) + \". \" + taskList.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"erohsikivar"},"content":" // Method to display a task added message","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"erohsikivar"},"content":" public void showTaskAddedMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"Got it! I\u0027ve added the task to your list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"erohsikivar"},"content":" public void showCurrentStatus(ArrayList\u003cTask\u003e taskList){","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"erohsikivar"},"content":" System.out.println(taskList.get(taskList.size() - 1).getStatusIcon());","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\" Now you have \" + taskList.size() +\" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"erohsikivar"},"content":" // Method to display a task deleted message","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"erohsikivar"},"content":" public void showTaskDeletedMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"Noted! I\u0027ve removed the task from your list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"erohsikivar"},"content":" public void showTaskMarkedMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"erohsikivar"},"content":" public void showTaskUnmarkedMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"erohsikivar"},"content":" // Method to display an unknown command message","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"erohsikivar"},"content":" public void showUnknownCommandMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"Sorry, I don\u0027t understand that command.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"erohsikivar"},"content":" // Method to show loading error message","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"erohsikivar"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"Error loading tasks. Starting with an empty list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"erohsikivar"},"content":" // Method to display a goodbye message","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"erohsikivar"},"content":" public void showGoodbyeMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"erohsikivar"},"content":" System.out.println(\"\\nBye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"erohsikivar":75}},{"path":"src/main/java/Duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"package Duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"import Command.UserInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":" private TaskManager taskManager;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":" private UserInterface userInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":" userInterface \u003d new UserInterface();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":" taskManager \u003d new TaskManager(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"erohsikivar"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"erohsikivar"},"content":" userInterface.showWelcomeMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"erohsikivar"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"erohsikivar"},"content":" String command \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"erohsikivar"},"content":" while(!command.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"erohsikivar"},"content":" Parser.parseCommand(command, taskManager, userInterface);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"erohsikivar"},"content":" command \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"erohsikivar"},"content":" userInterface.showGoodbyeMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"erohsikivar"},"content":" storage.save(taskManager.displayList());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"erohsikivar"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"erohsikivar"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"erohsikivar":37,"-":1}},{"path":"src/main/java/Duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"package Duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":" public DukeException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"erohsikivar":13}},{"path":"src/main/java/Duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"package Duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"import Command.UserInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":" public static void parseCommand(String command, TaskManager taskManager, UserInterface userInterface) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":" String[] parts \u003d command.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":" String action \u003d parts[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":" switch (action) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":" userInterface.showError(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"erohsikivar"},"content":" taskManager.todo(parts[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"erohsikivar"},"content":" userInterface.showTaskAddedMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCurrentStatus(taskManager.displayList());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"erohsikivar"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"erohsikivar"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"erohsikivar"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"erohsikivar"},"content":" userInterface.showError(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"erohsikivar"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"erohsikivar"},"content":" String[] full_desc \u003d parts[1].split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"erohsikivar"},"content":" String description \u003d full_desc[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"erohsikivar"},"content":" LocalDateTime by \u003d LocalDateTime.parse(full_desc[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"erohsikivar"},"content":" taskManager.deadline(description, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"erohsikivar"},"content":" userInterface.showTaskAddedMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCurrentStatus(taskManager.displayList());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"erohsikivar"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"erohsikivar"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"erohsikivar"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"erohsikivar"},"content":" userInterface.showError(\"OOPS!!! The description of a event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"erohsikivar"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"erohsikivar"},"content":" full_desc \u003d parts[1].split(\" /from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"erohsikivar"},"content":" description \u003d full_desc[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"erohsikivar"},"content":" LocalDateTime from \u003d LocalDateTime.parse(full_desc[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"erohsikivar"},"content":" LocalTime to \u003d LocalTime.parse(full_desc[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"erohsikivar"},"content":" taskManager.event(description, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"erohsikivar"},"content":" userInterface.showTaskAddedMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCurrentStatus(taskManager.displayList());","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"erohsikivar"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"erohsikivar"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"erohsikivar"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"erohsikivar"},"content":" userInterface.showError(\"OOPS!!! Please specify the task number to delete.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"erohsikivar"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"erohsikivar"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"erohsikivar"},"content":" int taskIndex \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"erohsikivar"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskManager.displayList().size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"erohsikivar"},"content":" userInterface.showError(\"OOPS!!! Invalid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"erohsikivar"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"erohsikivar"},"content":" taskManager.delete(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"erohsikivar"},"content":" userInterface.showTaskDeletedMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCurrentStatus(taskManager.displayList());","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"erohsikivar"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"erohsikivar"},"content":" userInterface.showError(\"OOPS!!! Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"erohsikivar"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"erohsikivar"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"erohsikivar"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"erohsikivar"},"content":" userInterface.showError(\"OOPS!!! Please specify the task number to mark.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"erohsikivar"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"erohsikivar"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"erohsikivar"},"content":" int taskIndex \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"erohsikivar"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskManager.displayList().size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"erohsikivar"},"content":" userInterface.showError(\"OOPS!!! Invalid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"erohsikivar"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"erohsikivar"},"content":" taskManager.mark(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"erohsikivar"},"content":" userInterface.showTaskMarkedMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCurrentStatus(taskManager.displayList());","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"erohsikivar"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"erohsikivar"},"content":" userInterface.showError(\"OOPS!!! Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"erohsikivar"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"erohsikivar"},"content":" case \"umark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"erohsikivar"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"erohsikivar"},"content":" userInterface.showError(\"OOPS!!! Please specify the task number to unmark.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"erohsikivar"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"erohsikivar"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"erohsikivar"},"content":" int taskIndex \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"erohsikivar"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskManager.displayList().size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"erohsikivar"},"content":" userInterface.showError(\"OOPS!!! Invalid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"erohsikivar"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"erohsikivar"},"content":" taskManager.unmark(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"erohsikivar"},"content":" userInterface.showTaskUnmarkedMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCurrentStatus(taskManager.displayList());","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"erohsikivar"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"erohsikivar"},"content":" userInterface.showError(\"OOPS!!! Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"erohsikivar"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"erohsikivar"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"erohsikivar"},"content":" userInterface.showTaskList(taskManager.displayList());","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"erohsikivar"},"content":" userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"erohsikivar"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"erohsikivar"},"content":"// case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"erohsikivar"},"content":"// userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"erohsikivar"},"content":"// userInterface.showGoodbyeMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"erohsikivar"},"content":"// userInterface.showCommandLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"erohsikivar"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"erohsikivar"},"content":" userInterface.showUnknownCommandMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"erohsikivar"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"erohsikivar":134}},{"path":"src/main/java/Duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"package Duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"import Task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":" private String filepath;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":" public Storage(String filepath){","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"erohsikivar"},"content":" public void save(ArrayList\u003cTask\u003e tasklist) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"erohsikivar"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"erohsikivar"},"content":" FileWriter writer \u003d new FileWriter(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"erohsikivar"},"content":" for (Task task : tasklist) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"erohsikivar"},"content":" // Convert task to string format and write to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"erohsikivar"},"content":" writer.write(task.toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"erohsikivar"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"erohsikivar"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"erohsikivar"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"erohsikivar"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"erohsikivar"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"erohsikivar"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"erohsikivar"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filepath));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"erohsikivar"},"content":" String line;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"erohsikivar"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"erohsikivar"},"content":" // Parse the line and create tasks, then add to the list","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"erohsikivar"},"content":" Task task \u003d Task.parseFromString(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"erohsikivar"},"content":" taskList.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"erohsikivar"},"content":" reader.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"erohsikivar"},"content":" return taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"erohsikivar"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"erohsikivar"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"erohsikivar"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"erohsikivar":50}},{"path":"src/main/java/Duke/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"package Duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"import Task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"import Task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":"import Task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":"import Task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":"public class TaskManager {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":" private ArrayList\u003cTask\u003e tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":" public TaskManager(ArrayList\u003cTask\u003e tasklist) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":" this.tasklist \u003d tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"erohsikivar"},"content":" public ArrayList\u003cTask\u003e displayList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"erohsikivar"},"content":" return tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"erohsikivar"},"content":" public void mark(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"erohsikivar"},"content":" tasklist.get(index).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"erohsikivar"},"content":" public void unmark(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"erohsikivar"},"content":" tasklist.get(index).unmark();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"erohsikivar"},"content":" public void delete(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"erohsikivar"},"content":" tasklist.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"erohsikivar"},"content":" public void todo(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"erohsikivar"},"content":" tasklist.add(new Todo(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"erohsikivar"},"content":" public void deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"erohsikivar"},"content":" tasklist.add(new Deadline(description, by));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"erohsikivar"},"content":" public void event(String description, LocalDateTime from, LocalTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"erohsikivar"},"content":" tasklist.add(new Event(description, from, to));","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"erohsikivar":45}},{"path":"src/main/java/Task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"package Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":" return \"[D]\" + super.getStatusIcon() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"erohsikivar"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"erohsikivar"},"content":" return String.format(\"D | %d | %s | %s\", super.isDone ? 1 : 0, super.description, this.by);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"erohsikivar":21}},{"path":"src/main/java/Task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"package Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":" protected LocalTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":" public Event(String description, LocalDateTime from, LocalTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":" return \"[E]\" + super.getStatusIcon() + \"(from: \" + from + \" to: \" + to + \")\" ;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"erohsikivar"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"erohsikivar"},"content":" return String.format(\"E | %d | %s | %s | %s\", super.isDone ? 1 : 0, super.description, this.from, this.to);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"erohsikivar":24}},{"path":"src/main/java/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"package Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":" return (isDone ? \"[X] \" + description","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":" : \"[ ] \" + description );","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"erohsikivar"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"erohsikivar"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"erohsikivar"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"erohsikivar"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"erohsikivar"},"content":" public static Task parseFromString(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"erohsikivar"},"content":" String[] parts \u003d input.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"erohsikivar"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"erohsikivar"},"content":" int isDone \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"erohsikivar"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"erohsikivar"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"erohsikivar"},"content":" Task task \u003d new Todo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"erohsikivar"},"content":" if (isDone \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"erohsikivar"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"erohsikivar"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"erohsikivar"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"erohsikivar"},"content":" LocalDateTime by \u003d LocalDateTime.parse(parts[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"erohsikivar"},"content":" Task task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"erohsikivar"},"content":" if (isDone \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"erohsikivar"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"erohsikivar"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"erohsikivar"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"erohsikivar"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"erohsikivar"},"content":" LocalTime to \u003d LocalTime.parse(parts[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"erohsikivar"},"content":" Task task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"erohsikivar"},"content":" if (isDone \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"erohsikivar"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"erohsikivar"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"erohsikivar"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"erohsikivar"},"content":" throw new IllegalArgumentException(\"Invalid task type: \" + type);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"erohsikivar"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"erohsikivar"},"content":" return String.format(\"Task | %d | %s\", isDone ? 1 : 0, description);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"erohsikivar":63}},{"path":"src/main/java/Task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"package Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"erohsikivar"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"erohsikivar"},"content":" return \"[T]\" + super.getStatusIcon();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"erohsikivar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"erohsikivar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"erohsikivar"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"erohsikivar"},"content":" return String.format(\"T | %d | %s\", super.isDone ? 1 : 0, super.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"erohsikivar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"erohsikivar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"erohsikivar":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"erohsikivar"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"erohsikivar"},"content":"deadline finish article /by 2023-09-04T16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"erohsikivar"},"content":"event project meeting /from 2023-09-04T16:00 /to 18:00","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"erohsikivar"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"erohsikivar"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"erohsikivar"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"erohsikivar"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"erohsikivar"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"erohsikivar":8}}] diff --git a/erohsikivar_ip_master/commits.json b/erohsikivar_ip_master/commits.json index 12fab173..a19b88f1 100644 --- a/erohsikivar_ip_master/commits.json +++ b/erohsikivar_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"erohsikivar":[{"date":"2023-08-24","commitResults":[{"hash":"aca465834eb5f65f3457eaa29524bd404cfadee1","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"137c1492c0933a5fdbb4a04f2512ac023e8b8879","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}},{"hash":"2e3ca75ffcfbc90881c875d2dc179b26c937ee36","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":4}}},{"hash":"115332139829ea8a56052f890d01fd69d84564e7","isMergeCommit":false,"messageTitle":"Mark As Done (new class Task added)","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":9}}},{"hash":"81d21b8f447d010590b81d2cb3aed64476f486df","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines (Added to 3 subclasses for Task)","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":16}}},{"hash":"1863fc5f62eeea22a197454af656724ecb752787","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":3,"deletions":14}}},{"hash":"9f7422873cb5c0d20648e90b46440dc619cc4b4c","isMergeCommit":false,"messageTitle":"Exceptions added","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"f4b7097a1088f89bf73516fb9b56fb828177ee96","isMergeCommit":false,"messageTitle":"Delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":65}}}]},{"date":"2023-08-30","commitResults":[{"hash":"2708528dc6b0b2da2682d0b05455b5bf6070a9b9","isMergeCommit":false,"messageTitle":"Saving and Loading of tasks to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":153,"deletions":39}}},{"hash":"6a9d46bfde3b1b346a955b88b428970f7299d20c","isMergeCommit":false,"messageTitle":"Final branch Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"f48bc00781befa53170df1b912c995c7579436e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"a56e6f12cf73d4e26b825a2d01490452c9e48f1b","isMergeCommit":false,"messageTitle":"Date and TIme","messageBody":"","tags":["branch-Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":13}}},{"hash":"0d2f04285dd645e0564432c595041701580c9798","isMergeCommit":true,"messageTitle":"Merge tag \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"erohsikivar":{"java":304,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":8}},"authorContributionVariance":{"erohsikivar":12580.143},"authorDisplayNameMap":{"erohsikivar":"CS2103T-W11-4 RAVI..HORE"}} +{"authorDailyContributionsMap":{"erohsikivar":[{"date":"2023-08-24","commitResults":[{"hash":"aca465834eb5f65f3457eaa29524bd404cfadee1","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"137c1492c0933a5fdbb4a04f2512ac023e8b8879","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}},{"hash":"2e3ca75ffcfbc90881c875d2dc179b26c937ee36","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":4}}},{"hash":"115332139829ea8a56052f890d01fd69d84564e7","isMergeCommit":false,"messageTitle":"Mark As Done (new class Task added)","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":9}}},{"hash":"81d21b8f447d010590b81d2cb3aed64476f486df","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines (Added to 3 subclasses for Task)","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":16}}},{"hash":"1863fc5f62eeea22a197454af656724ecb752787","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":3,"deletions":14}}},{"hash":"9f7422873cb5c0d20648e90b46440dc619cc4b4c","isMergeCommit":false,"messageTitle":"Exceptions added","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"f4b7097a1088f89bf73516fb9b56fb828177ee96","isMergeCommit":false,"messageTitle":"Delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":65}}}]},{"date":"2023-08-30","commitResults":[{"hash":"2708528dc6b0b2da2682d0b05455b5bf6070a9b9","isMergeCommit":false,"messageTitle":"Saving and Loading of tasks to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":153,"deletions":39}}},{"hash":"6a9d46bfde3b1b346a955b88b428970f7299d20c","isMergeCommit":false,"messageTitle":"Final branch Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"f48bc00781befa53170df1b912c995c7579436e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"a56e6f12cf73d4e26b825a2d01490452c9e48f1b","isMergeCommit":false,"messageTitle":"Date and TIme","messageBody":"","tags":["branch-Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":13}}},{"hash":"0d2f04285dd645e0564432c595041701580c9798","isMergeCommit":true,"messageTitle":"Merge tag \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"e34a30fdac9b0cd18492e2069d53f570f2ef232d","isMergeCommit":false,"messageTitle":"More OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":371,"deletions":163}}},{"hash":"7384957f11c1f0d012eba9ace1b5fe09ccdce50c","isMergeCommit":false,"messageTitle":"Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":135,"deletions":171}}},{"hash":"a997b652328e0fbad61677d5d6fd1b86d8baca3c","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd60b2a8852a66df792a0d3e1ace1be038706918","isMergeCommit":false,"messageTitle":"Using build gradle","messageBody":"","tags":["A-gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"erohsikivar":{"java":479,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":8}},"authorContributionVariance":{"erohsikivar":51563.69},"authorDisplayNameMap":{"erohsikivar":"CS2103T-W11-4 RAVI..HORE"}} diff --git a/feifeiraindrops_ip_master/authorship.json b/feifeiraindrops_ip_master/authorship.json index 4650a248..27bff85f 100644 --- a/feifeiraindrops_ip_master/authorship.json +++ b/feifeiraindrops_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"# BenBen project template","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"feifeiraindrops"},"content":"3. After that, locate the `src/main/java/BenBen.java` file, right-click it, and choose `Run BenBen.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"feifeiraindrops":2,"-":22}},{"path":"src/main/java/BenBen.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.ZoneId;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"feifeiraindrops"},"content":"public class BenBen {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"feifeiraindrops"},"content":" //private static String[] arr;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"feifeiraindrops"},"content":" private static Task[] arr;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"feifeiraindrops"},"content":" private static ArrayList\u003cTask\u003e arrlst;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"feifeiraindrops"},"content":" private static String FILEPATH \u003d \"./src/main/java/tasks.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"feifeiraindrops"},"content":" private static File FILE;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"feifeiraindrops"},"content":" private static final DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\").withZone(ZoneId.systemDefault());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"feifeiraindrops"},"content":" //private static boolean[] bool;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"feifeiraindrops"},"content":" private static final String line \u003d\"_______________________________________\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"feifeiraindrops"},"content":" public static abstract class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"feifeiraindrops"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"feifeiraindrops"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"feifeiraindrops"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"feifeiraindrops"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"feifeiraindrops"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"feifeiraindrops"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"feifeiraindrops"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"feifeiraindrops"},"content":" public void mark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"feifeiraindrops"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"feifeiraindrops"},"content":" public void unmark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"feifeiraindrops"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"feifeiraindrops"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"feifeiraindrops"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"feifeiraindrops"},"content":" public String description() {","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"feifeiraindrops"},"content":" return this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"feifeiraindrops"},"content":" public abstract String getLog() ;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"feifeiraindrops"},"content":" public static class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"feifeiraindrops"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"feifeiraindrops"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"feifeiraindrops"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"feifeiraindrops"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"feifeiraindrops"},"content":" public String getLog() {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"feifeiraindrops"},"content":" return \"T | \" + (isDone? \"1\" : \"0\")","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"feifeiraindrops"},"content":" + \" | \" + this.description + System.lineSeparator();","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"feifeiraindrops"},"content":" public static class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"feifeiraindrops"},"content":" protected LocalDate ddl;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"feifeiraindrops"},"content":" protected final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-mm-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"feifeiraindrops"},"content":" public Deadline(String description, String ddl) {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"feifeiraindrops"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"feifeiraindrops"},"content":" this.ddl \u003d LocalDate.parse(ddl);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"feifeiraindrops"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"feifeiraindrops"},"content":" return \"[D] \" + super.toString() + \" (by: \" + getDdl() + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"feifeiraindrops"},"content":" public String getDdl() {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"feifeiraindrops"},"content":" return this.ddl.getMonth().toString() + \" \" + this.ddl.getDayOfMonth() + \" \" + this.ddl.getYear();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"feifeiraindrops"},"content":" public String getFormattedDdl() {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"feifeiraindrops"},"content":" return ddl.format(formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"feifeiraindrops"},"content":" public String getLog() {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"feifeiraindrops"},"content":" return \"D | \" + (isDone? \"1\" : \"0\")","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"feifeiraindrops"},"content":" + \" | \" + this.description","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"feifeiraindrops"},"content":" + \" | \" + this.getFormattedDdl() + System.lineSeparator();","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"feifeiraindrops"},"content":" public static class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"feifeiraindrops"},"content":" protected LocalDateTime startTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"feifeiraindrops"},"content":" protected LocalDateTime endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"feifeiraindrops"},"content":" protected final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\").withZone(ZoneId.systemDefault());","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"feifeiraindrops"},"content":" public Event(String description,String startTime, String endTime) throws BenBenException {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"feifeiraindrops"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"feifeiraindrops"},"content":" this.startTime \u003d LocalDateTime.parse(startTime, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"feifeiraindrops"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"feifeiraindrops"},"content":" if (this.startTime.isAfter(this.endTime)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The end time should be later than the start time!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"feifeiraindrops"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The date and time is of the wrong format! Please use yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"feifeiraindrops"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"feifeiraindrops"},"content":" return \"[E] \" + super.toString() + \" (from: \" + getStartTime() + \" to: \" + getEndTime() + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"feifeiraindrops"},"content":" public String getStartTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"feifeiraindrops"},"content":" return startTime.getMonth().toString()","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"feifeiraindrops"},"content":" + \" \" + startTime.getDayOfMonth()","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"feifeiraindrops"},"content":" + \" \" + startTime.getYear()","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"feifeiraindrops"},"content":" + \" \" + startTime.getHour() + \":\" + startTime.getMinute();","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"feifeiraindrops"},"content":" public String getEndTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"feifeiraindrops"},"content":" return endTime.getMonth().toString()","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"feifeiraindrops"},"content":" + \" \" + endTime.getDayOfMonth()","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"feifeiraindrops"},"content":" + \" \" + endTime.getYear()","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"feifeiraindrops"},"content":" + \" \" + endTime.getHour() + \":\" + endTime.getMinute();","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"feifeiraindrops"},"content":" public String getFormattedStart() {","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"feifeiraindrops"},"content":" return startTime.format(formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"feifeiraindrops"},"content":" public String getFormattedEnd() {","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"feifeiraindrops"},"content":" return endTime.format(formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"feifeiraindrops"},"content":" public String getLog() {","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"feifeiraindrops"},"content":" return \"E | \" + (isDone? \"1\" : \"0\")","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"feifeiraindrops"},"content":" + \" | \" + this.description","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"feifeiraindrops"},"content":" + \" | \" + getFormattedStart()","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"feifeiraindrops"},"content":" + \" | \" + getFormattedEnd() + System.lineSeparator();","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"feifeiraindrops"},"content":" static class BenBenException extends RuntimeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"feifeiraindrops"},"content":" BenBenException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"feifeiraindrops"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"feifeiraindrops"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"feifeiraindrops"},"content":" return \"WOOF! \" + getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"feifeiraindrops"},"content":" public static void exit() {","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Bye. Hope to see you again soon!\\n\" + line);","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"feifeiraindrops"},"content":" System.exit(0);","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"feifeiraindrops"},"content":" public static void todo(String str) throws BenBenException{","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"feifeiraindrops"},"content":" String des \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"feifeiraindrops"},"content":" for (int i \u003d 1; i \u003c strSplit.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"feifeiraindrops"},"content":" des \u003d des + \" \" + strSplit[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":184,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":185,"author":{"gitId":"feifeiraindrops"},"content":" des \u003d des.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"feifeiraindrops"},"content":" if (des.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please follow the format: todo todo details\");","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"feifeiraindrops"},"content":" Task t \u003d new Todo(des);","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"feifeiraindrops"},"content":" //arr[counter] \u003d t;","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"feifeiraindrops"},"content":" arrlst.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"feifeiraindrops"},"content":" //counter++;","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":196,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":197,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(t.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":198,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Now you have \" + arrlst.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":201,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":202,"author":{"gitId":"feifeiraindrops"},"content":" public static void deadline(String str) throws BenBenException{","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":204,"author":{"gitId":"feifeiraindrops"},"content":" String des \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":205,"author":{"gitId":"feifeiraindrops"},"content":" String ddl \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":206,"author":{"gitId":"feifeiraindrops"},"content":" boolean isDes \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":207,"author":{"gitId":"feifeiraindrops"},"content":" for (int i \u003d 1; i \u003c strSplit.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":208,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":209,"author":{"gitId":"feifeiraindrops"},"content":" isDes \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":210,"author":{"gitId":"feifeiraindrops"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":211,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":212,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":213,"author":{"gitId":"feifeiraindrops"},"content":" if (isDes) {","lastModifiedDate":"2023-08-23"},{"lineNumber":214,"author":{"gitId":"feifeiraindrops"},"content":" des \u003d des + \" \" + strSplit[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":215,"author":{"gitId":"feifeiraindrops"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":216,"author":{"gitId":"feifeiraindrops"},"content":" ddl \u003d ddl + \" \" + strSplit[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":217,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":218,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":219,"author":{"gitId":"feifeiraindrops"},"content":" des \u003d des.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":220,"author":{"gitId":"feifeiraindrops"},"content":" ddl \u003d ddl.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":221,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":222,"author":{"gitId":"feifeiraindrops"},"content":" if (des.length() \u003d\u003d 0 || ddl.length() \u003d\u003d 0 ) {","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please follow the format: deadline deadline details /by yyyy/mm/dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":224,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"feifeiraindrops"},"content":" Task t \u003d new Deadline(des, ddl);","lastModifiedDate":"2023-08-23"},{"lineNumber":227,"author":{"gitId":"feifeiraindrops"},"content":" //arr[counter] \u003d t;","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"feifeiraindrops"},"content":" arrlst.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":230,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":231,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(t.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":232,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Now you have \" + arrlst.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":234,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":235,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":236,"author":{"gitId":"feifeiraindrops"},"content":" public static void event (String str) throws BenBenException{","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":238,"author":{"gitId":"feifeiraindrops"},"content":" String des \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":239,"author":{"gitId":"feifeiraindrops"},"content":" String start \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":240,"author":{"gitId":"feifeiraindrops"},"content":" String end \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":241,"author":{"gitId":"feifeiraindrops"},"content":" boolean isDes \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":242,"author":{"gitId":"feifeiraindrops"},"content":" boolean isStart \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":243,"author":{"gitId":"feifeiraindrops"},"content":" for (int i \u003d 1; i \u003c strSplit.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":244,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":245,"author":{"gitId":"feifeiraindrops"},"content":" isDes \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":246,"author":{"gitId":"feifeiraindrops"},"content":" isStart \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":247,"author":{"gitId":"feifeiraindrops"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":248,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":249,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[i].equals(\"/to\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":250,"author":{"gitId":"feifeiraindrops"},"content":" isStart \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":251,"author":{"gitId":"feifeiraindrops"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":252,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":253,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":254,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":255,"author":{"gitId":"feifeiraindrops"},"content":" if (isDes \u0026\u0026 !isStart) {","lastModifiedDate":"2023-08-23"},{"lineNumber":256,"author":{"gitId":"feifeiraindrops"},"content":" des \u003d des + \" \" + strSplit[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":257,"author":{"gitId":"feifeiraindrops"},"content":" } else if (!isDes \u0026\u0026 isStart) {","lastModifiedDate":"2023-08-23"},{"lineNumber":258,"author":{"gitId":"feifeiraindrops"},"content":" start \u003d start + \" \" + strSplit[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":259,"author":{"gitId":"feifeiraindrops"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":260,"author":{"gitId":"feifeiraindrops"},"content":" end \u003d end + \" \" + strSplit[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":261,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":262,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":263,"author":{"gitId":"feifeiraindrops"},"content":" des \u003d des.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":264,"author":{"gitId":"feifeiraindrops"},"content":" start \u003d start.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":265,"author":{"gitId":"feifeiraindrops"},"content":" end \u003d end.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":266,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":267,"author":{"gitId":"feifeiraindrops"},"content":" if (des.length() \u003d\u003d 0 || start.length() \u003d\u003d 0 || end.length() \u003d\u003d 0 ) {","lastModifiedDate":"2023-08-24"},{"lineNumber":268,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please follow the format: event event details /from yyyy-MM-dd HH-mm /to yyyy-MM-dd HH-mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":269,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":270,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":271,"author":{"gitId":"feifeiraindrops"},"content":" Task t \u003d new Event(des, start, end);","lastModifiedDate":"2023-08-23"},{"lineNumber":272,"author":{"gitId":"feifeiraindrops"},"content":" //arr[counter] \u003d t;","lastModifiedDate":"2023-08-24"},{"lineNumber":273,"author":{"gitId":"feifeiraindrops"},"content":" arrlst.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":274,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":275,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":276,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":277,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":278,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(t.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":279,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Now you have \" + arrlst.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":280,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":281,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":282,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":283,"author":{"gitId":"feifeiraindrops"},"content":" public static void iterList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":284,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"feifeiraindrops"},"content":" if (arrlst.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":286,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":287,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Your list is currently empty! Add a new task now!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":288,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":289,"author":{"gitId":"feifeiraindrops"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":290,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":291,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":292,"author":{"gitId":"feifeiraindrops"},"content":" for (int i \u003d 0; i \u003c arrlst.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":293,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println((i + 1) + \".\" + arrlst.get(i).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":294,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":295,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":296,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":297,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":298,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":299,"author":{"gitId":"feifeiraindrops"},"content":" public static void mark(String str) throws BenBenException{","lastModifiedDate":"2023-08-24"},{"lineNumber":300,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":301,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":302,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please enter a task to mark!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":303,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":304,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":305,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit.length \u003e 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":306,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please only enter one task to mark!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":307,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":308,"author":{"gitId":"feifeiraindrops"},"content":" Integer x \u003d null;","lastModifiedDate":"2023-08-23"},{"lineNumber":309,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":310,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":311,"author":{"gitId":"feifeiraindrops"},"content":" x \u003d Integer.parseInt(strSplit[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":312,"author":{"gitId":"feifeiraindrops"},"content":" //arr[x - 1].mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":313,"author":{"gitId":"feifeiraindrops"},"content":" arrlst.get(x - 1).mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":314,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":315,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":316,"author":{"gitId":"feifeiraindrops"},"content":" \" \" + arrlst.get(x - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":317,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":318,"author":{"gitId":"feifeiraindrops"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":319,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please use an integer value to indicate your task!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":320,"author":{"gitId":"feifeiraindrops"},"content":" } catch(NullPointerException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":321,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The task you are trying to mark does not exist!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":322,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":323,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":324,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":325,"author":{"gitId":"feifeiraindrops"},"content":" public static void unmark(String str) throws BenBenException{","lastModifiedDate":"2023-08-24"},{"lineNumber":326,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":327,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":328,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":329,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":330,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please enter a task to unmark!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":331,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":332,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit.length \u003e 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":333,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please only enter one task to unmark!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":334,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":335,"author":{"gitId":"feifeiraindrops"},"content":" Integer x \u003d null;","lastModifiedDate":"2023-08-23"},{"lineNumber":336,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":337,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":338,"author":{"gitId":"feifeiraindrops"},"content":" x \u003d Integer.parseInt(strSplit[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":339,"author":{"gitId":"feifeiraindrops"},"content":" //[x - 1].unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":340,"author":{"gitId":"feifeiraindrops"},"content":" arrlst.get(x - 1).unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":341,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":342,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":343,"author":{"gitId":"feifeiraindrops"},"content":" \" \" + arrlst.get(x - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":344,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":345,"author":{"gitId":"feifeiraindrops"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":346,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please use an integer value to indicate your task!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":347,"author":{"gitId":"feifeiraindrops"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":348,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The task you are trying to unmark does not exist!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":349,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":350,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":351,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":352,"author":{"gitId":"feifeiraindrops"},"content":" public static void remove(String str) throws BenBenException {","lastModifiedDate":"2023-08-24"},{"lineNumber":353,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-08-24"},{"lineNumber":354,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":355,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":356,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please enter a task to remove!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":357,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":358,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit.length \u003e 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":359,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please only enter one task to remove!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":360,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":361,"author":{"gitId":"feifeiraindrops"},"content":" Integer x \u003d null;","lastModifiedDate":"2023-08-24"},{"lineNumber":362,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":363,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":364,"author":{"gitId":"feifeiraindrops"},"content":" x \u003d Integer.parseInt(strSplit[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":365,"author":{"gitId":"feifeiraindrops"},"content":" //[x - 1].unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":366,"author":{"gitId":"feifeiraindrops"},"content":" Task temp \u003d arrlst.get(x - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":367,"author":{"gitId":"feifeiraindrops"},"content":" arrlst.remove(x - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":368,"author":{"gitId":"feifeiraindrops"},"content":" //counter \u003d counter - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":369,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":370,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":371,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(temp.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":372,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Now you have \" + arrlst.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":373,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":374,"author":{"gitId":"feifeiraindrops"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":375,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please use an integer value to indicate your task!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":376,"author":{"gitId":"feifeiraindrops"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":377,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The task you are trying to remove does not exist!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":378,"author":{"gitId":"feifeiraindrops"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":379,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The task you are trying to remove does not exist!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":380,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":381,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":382,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":383,"author":{"gitId":"feifeiraindrops"},"content":" public static void action(String next) throws BenBenException{","lastModifiedDate":"2023-08-24"},{"lineNumber":384,"author":{"gitId":"feifeiraindrops"},"content":" boolean bool \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":385,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":386,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":387,"author":{"gitId":"feifeiraindrops"},"content":" exit();","lastModifiedDate":"2023-08-23"},{"lineNumber":388,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":389,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":390,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":391,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":392,"author":{"gitId":"feifeiraindrops"},"content":" iterList();","lastModifiedDate":"2023-08-23"},{"lineNumber":393,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":394,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":395,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":396,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":397,"author":{"gitId":"feifeiraindrops"},"content":" mark(next);","lastModifiedDate":"2023-08-23"},{"lineNumber":398,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":399,"author":{"gitId":"feifeiraindrops"},"content":" writeFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":400,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":401,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":402,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":403,"author":{"gitId":"feifeiraindrops"},"content":" unmark(next);","lastModifiedDate":"2023-08-23"},{"lineNumber":404,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":405,"author":{"gitId":"feifeiraindrops"},"content":" writeFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":406,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":407,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":408,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":409,"author":{"gitId":"feifeiraindrops"},"content":" todo(next);","lastModifiedDate":"2023-08-23"},{"lineNumber":410,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":411,"author":{"gitId":"feifeiraindrops"},"content":" writeFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":412,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":413,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":414,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":415,"author":{"gitId":"feifeiraindrops"},"content":" deadline(next);","lastModifiedDate":"2023-08-23"},{"lineNumber":416,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":417,"author":{"gitId":"feifeiraindrops"},"content":" writeFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":418,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":419,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":420,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":421,"author":{"gitId":"feifeiraindrops"},"content":" event(next);","lastModifiedDate":"2023-08-23"},{"lineNumber":422,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":423,"author":{"gitId":"feifeiraindrops"},"content":" writeFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":424,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":425,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":426,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":427,"author":{"gitId":"feifeiraindrops"},"content":" remove(next);","lastModifiedDate":"2023-08-24"},{"lineNumber":428,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":429,"author":{"gitId":"feifeiraindrops"},"content":" writeFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":430,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":431,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":432,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool) {","lastModifiedDate":"2023-08-24"},{"lineNumber":433,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"BenBen does not understand your instruction:(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":434,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":435,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":436,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":437,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":438,"author":{"gitId":"feifeiraindrops"},"content":" public static void writeFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":439,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":440,"author":{"gitId":"feifeiraindrops"},"content":" FileWriter fw \u003d new FileWriter(FILEPATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":441,"author":{"gitId":"feifeiraindrops"},"content":" String content \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":442,"author":{"gitId":"feifeiraindrops"},"content":" for (int i \u003d 0; i \u003c arrlst.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":443,"author":{"gitId":"feifeiraindrops"},"content":" Task t \u003d arrlst.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":444,"author":{"gitId":"feifeiraindrops"},"content":" content \u003d content + t.getLog();","lastModifiedDate":"2023-08-31"},{"lineNumber":445,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":446,"author":{"gitId":"feifeiraindrops"},"content":" fw.write(content);","lastModifiedDate":"2023-08-31"},{"lineNumber":447,"author":{"gitId":"feifeiraindrops"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":448,"author":{"gitId":"feifeiraindrops"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":449,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Failed to write to file!\" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":450,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":451,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":452,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":453,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":454,"author":{"gitId":"feifeiraindrops"},"content":" public static void readFile() throws BenBenException {","lastModifiedDate":"2023-08-31"},{"lineNumber":455,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":456,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":457,"author":{"gitId":"feifeiraindrops"},"content":" FILE \u003d new File(FILEPATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":458,"author":{"gitId":"feifeiraindrops"},"content":" //System.out.println(FILE.exists());","lastModifiedDate":"2023-08-31"},{"lineNumber":459,"author":{"gitId":"feifeiraindrops"},"content":" if (!FILE.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":460,"author":{"gitId":"feifeiraindrops"},"content":" boolean isCreated \u003d FILE.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":461,"author":{"gitId":"feifeiraindrops"},"content":" //System.out.println(isCreated + \"new file created\");","lastModifiedDate":"2023-08-31"},{"lineNumber":462,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":463,"author":{"gitId":"feifeiraindrops"},"content":" Scanner sc \u003d new Scanner(FILE);","lastModifiedDate":"2023-08-31"},{"lineNumber":464,"author":{"gitId":"feifeiraindrops"},"content":" //System.out.println(\"next line? : \" + sc.hasNext());","lastModifiedDate":"2023-08-31"},{"lineNumber":465,"author":{"gitId":"feifeiraindrops"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":466,"author":{"gitId":"feifeiraindrops"},"content":" boolean canRead \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":467,"author":{"gitId":"feifeiraindrops"},"content":" String task \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":468,"author":{"gitId":"feifeiraindrops"},"content":" //System.out.println(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":469,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d task.split(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":470,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":471,"author":{"gitId":"feifeiraindrops"},"content":" for (int i \u003d 0; i \u003c strSplit.length; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":472,"author":{"gitId":"feifeiraindrops"},"content":" strSplit[i] \u003d strSplit[i].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":473,"author":{"gitId":"feifeiraindrops"},"content":" //System.out.println(strSplit[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":474,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":475,"author":{"gitId":"feifeiraindrops"},"content":" //System.out.println(\"length: \" + strSplit.length);","lastModifiedDate":"2023-08-31"},{"lineNumber":476,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[0].startsWith(\"T\") \u0026\u0026 strSplit.length \u003d\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":477,"author":{"gitId":"feifeiraindrops"},"content":" Task nextTask \u003d new Todo(strSplit[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":478,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(strSplit[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":479,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(strSplit[1].equals(\"1\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":480,"author":{"gitId":"feifeiraindrops"},"content":" if(strSplit[1].equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":481,"author":{"gitId":"feifeiraindrops"},"content":" nextTask.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":482,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":483,"author":{"gitId":"feifeiraindrops"},"content":" arrlst.add(nextTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":484,"author":{"gitId":"feifeiraindrops"},"content":" canRead \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":485,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":486,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":487,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[0].startsWith(\"D\") \u0026\u0026 strSplit.length \u003d\u003d 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":488,"author":{"gitId":"feifeiraindrops"},"content":" Task nextTask \u003d new Deadline(strSplit[2], strSplit[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":489,"author":{"gitId":"feifeiraindrops"},"content":" if(strSplit[1].startsWith(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":490,"author":{"gitId":"feifeiraindrops"},"content":" nextTask.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":491,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":492,"author":{"gitId":"feifeiraindrops"},"content":" arrlst.add(nextTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":493,"author":{"gitId":"feifeiraindrops"},"content":" canRead \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":494,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":495,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[0].startsWith(\"E\") \u0026\u0026 strSplit.length \u003d\u003d 5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":496,"author":{"gitId":"feifeiraindrops"},"content":" Task nextTask \u003d new Event(strSplit[2], strSplit[3], strSplit[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":497,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[1].startsWith(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":498,"author":{"gitId":"feifeiraindrops"},"content":" nextTask.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":499,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":500,"author":{"gitId":"feifeiraindrops"},"content":" arrlst.add(nextTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":501,"author":{"gitId":"feifeiraindrops"},"content":" canRead \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":502,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":503,"author":{"gitId":"feifeiraindrops"},"content":" if (!canRead) {","lastModifiedDate":"2023-08-31"},{"lineNumber":504,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The file content is corrupted, please report this to admin\");","lastModifiedDate":"2023-08-31"},{"lineNumber":505,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":506,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":507,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":508,"author":{"gitId":"feifeiraindrops"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":509,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The local file is not found in the directory\");","lastModifiedDate":"2023-08-31"},{"lineNumber":510,"author":{"gitId":"feifeiraindrops"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":511,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"IOException found!\" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":512,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":513,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":514,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":515,"author":{"gitId":"feifeiraindrops"},"content":" public static void main(String[] args) throws BenBenException{","lastModifiedDate":"2023-08-24"},{"lineNumber":516,"author":{"gitId":"feifeiraindrops"},"content":" arrlst \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":517,"author":{"gitId":"feifeiraindrops"},"content":" readFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":518,"author":{"gitId":"feifeiraindrops"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":519,"author":{"gitId":"feifeiraindrops"},"content":" //arr \u003d new Task[100];","lastModifiedDate":"2023-08-24"},{"lineNumber":520,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":521,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":522,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Hello! I\u0027m BenBen.\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":523,"author":{"gitId":"feifeiraindrops"},"content":" \"What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":524,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":525,"author":{"gitId":"feifeiraindrops"},"content":" ;","lastModifiedDate":"2023-08-24"},{"lineNumber":526,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":527,"author":{"gitId":"feifeiraindrops"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":528,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":529,"author":{"gitId":"feifeiraindrops"},"content":" String next \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":530,"author":{"gitId":"feifeiraindrops"},"content":" action(next);","lastModifiedDate":"2023-08-24"},{"lineNumber":531,"author":{"gitId":"feifeiraindrops"},"content":" } catch (BenBenException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":532,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":533,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":534,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":535,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":536,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":537,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":538,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"feifeiraindrops":538}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"feifeiraindrops":2}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":" String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":" TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"feifeiraindrops":9}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"feifeiraindrops":2}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"feifeiraindrops":2}},{"path":"src/main/java/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"E | 1 | meeting | 2023-08-31 00:00 | 2023-09-01 00:00","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"T | 0 | ip","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":"E | 0 | trip | 2023-12-01 23:59 | 2023-12-31 12:12","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"feifeiraindrops":3}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"todo leetcode","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":"list","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"feifeiraindrops":7}},{"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":"feifeiraindrops"},"content":"java -classpath ..\\bin BenBen \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"feifeiraindrops":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":"feifeiraindrops"},"content":"java -classpath ../bin BenBen \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"feifeiraindrops":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"# BenBen project template","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"feifeiraindrops"},"content":"3. After that, locate the `src/main/java/BenBen.java` file, right-click it, and choose `Run BenBen.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"feifeiraindrops":2,"-":22}},{"path":"src/main/java/BenBen/BenBen.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"package BenBen;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.ZoneId;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"feifeiraindrops"},"content":"public class BenBen {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"feifeiraindrops"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"feifeiraindrops"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"feifeiraindrops"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"feifeiraindrops"},"content":" public BenBen(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"feifeiraindrops"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"feifeiraindrops"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"feifeiraindrops"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"feifeiraindrops"},"content":" } catch (BenBenException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"feifeiraindrops"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"feifeiraindrops"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"feifeiraindrops"},"content":" public void todo(String str) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"feifeiraindrops"},"content":" String des \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"feifeiraindrops"},"content":" for (int i \u003d 1; i \u003c strSplit.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"feifeiraindrops"},"content":" des \u003d des + \" \" + strSplit[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"feifeiraindrops"},"content":" des \u003d des.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"feifeiraindrops"},"content":" if (des.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please follow the format: todo todo details\");","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"feifeiraindrops"},"content":" Task t \u003d new Todo(des);","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"feifeiraindrops"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"feifeiraindrops"},"content":" storage.write(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"feifeiraindrops"},"content":" ui.showAdd(t.toString(), tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"feifeiraindrops"},"content":" public void deadline(String str) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"feifeiraindrops"},"content":" String des \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"feifeiraindrops"},"content":" String ddl \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"feifeiraindrops"},"content":" boolean isDes \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"feifeiraindrops"},"content":" for (int i \u003d 1; i \u003c strSplit.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"feifeiraindrops"},"content":" isDes \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"feifeiraindrops"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"feifeiraindrops"},"content":" if (isDes) {","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"feifeiraindrops"},"content":" des \u003d des + \" \" + strSplit[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"feifeiraindrops"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"feifeiraindrops"},"content":" ddl \u003d ddl + \" \" + strSplit[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"feifeiraindrops"},"content":" des \u003d des.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"feifeiraindrops"},"content":" ddl \u003d ddl.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"feifeiraindrops"},"content":" if (des.length() \u003d\u003d 0 || ddl.length() \u003d\u003d 0 ) {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please follow the format: deadline deadline details /by yyyy/mm/dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"feifeiraindrops"},"content":" Task t \u003d new Deadline(des, ddl);","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"feifeiraindrops"},"content":" //arr[counter] \u003d t;","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"feifeiraindrops"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"feifeiraindrops"},"content":" storage.write(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"feifeiraindrops"},"content":" ui.showAdd(t.toString(), tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"feifeiraindrops"},"content":" public void event (String str) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"feifeiraindrops"},"content":" String des \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"feifeiraindrops"},"content":" String start \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"feifeiraindrops"},"content":" String end \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"feifeiraindrops"},"content":" boolean isDes \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"feifeiraindrops"},"content":" boolean isStart \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"feifeiraindrops"},"content":" for (int i \u003d 1; i \u003c strSplit.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"feifeiraindrops"},"content":" isDes \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"feifeiraindrops"},"content":" isStart \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"feifeiraindrops"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[i].equals(\"/to\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"feifeiraindrops"},"content":" isStart \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"feifeiraindrops"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"feifeiraindrops"},"content":" if (isDes \u0026\u0026 !isStart) {","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"feifeiraindrops"},"content":" des \u003d des + \" \" + strSplit[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"feifeiraindrops"},"content":" } else if (!isDes \u0026\u0026 isStart) {","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"feifeiraindrops"},"content":" start \u003d start + \" \" + strSplit[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"feifeiraindrops"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"feifeiraindrops"},"content":" end \u003d end + \" \" + strSplit[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"feifeiraindrops"},"content":" des \u003d des.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"feifeiraindrops"},"content":" start \u003d start.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"feifeiraindrops"},"content":" end \u003d end.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"feifeiraindrops"},"content":" if (des.length() \u003d\u003d 0 || start.length() \u003d\u003d 0 || end.length() \u003d\u003d 0 ) {","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please follow the format: event event details /from yyyy-MM-dd HH-mm /to yyyy-MM-dd HH-mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"feifeiraindrops"},"content":" Task t \u003d new Event(des, start, end);","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"feifeiraindrops"},"content":" //arr[counter] \u003d t;","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"feifeiraindrops"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"feifeiraindrops"},"content":" ui.showAdd(t.toString(), tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"feifeiraindrops"},"content":" storage.write(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"feifeiraindrops"},"content":" public void iterList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"feifeiraindrops"},"content":" ui.showList(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"feifeiraindrops"},"content":" public void mark(String str) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please enter a task to mark!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit.length \u003e 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please only enter one task to mark!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"feifeiraindrops"},"content":" Integer x \u003d null;","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"feifeiraindrops"},"content":" x \u003d Integer.parseInt(strSplit[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"feifeiraindrops"},"content":" //arr[x - 1].mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"feifeiraindrops"},"content":" tasks.get(x - 1).mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"feifeiraindrops"},"content":" ui.showMark(tasks.get(x - 1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"feifeiraindrops"},"content":" storage.write(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"feifeiraindrops"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please use an integer value to indicate your task!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"feifeiraindrops"},"content":" } catch(NullPointerException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The task you are trying to mark does not exist!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"feifeiraindrops"},"content":" public void unmark(String str) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please enter a task to unmark!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit.length \u003e 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please only enter one task to unmark!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"feifeiraindrops"},"content":" Integer x \u003d null;","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"feifeiraindrops"},"content":" x \u003d Integer.parseInt(strSplit[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"feifeiraindrops"},"content":" //[x - 1].unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"feifeiraindrops"},"content":" tasks.get(x - 1).unmark();","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"feifeiraindrops"},"content":" ui.showUnmark(tasks.get(x - 1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"feifeiraindrops"},"content":" storage.write(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"feifeiraindrops"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please use an integer value to indicate your task!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"feifeiraindrops"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The task you are trying to unmark does not exist!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"feifeiraindrops"},"content":" public void remove(String str) throws BenBenException {","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please enter a task to remove!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit.length \u003e 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please only enter one task to remove!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"feifeiraindrops"},"content":" Integer x \u003d null;","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"feifeiraindrops"},"content":" x \u003d Integer.parseInt(strSplit[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"feifeiraindrops"},"content":" //[x - 1].unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"feifeiraindrops"},"content":" Task temp \u003d tasks.get(x - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"feifeiraindrops"},"content":" tasks.remove(x - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"feifeiraindrops"},"content":" //counter \u003d counter - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"feifeiraindrops"},"content":" ui.showRemove(temp.toString(), tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"feifeiraindrops"},"content":" storage.write(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"feifeiraindrops"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Please use an integer value to indicate your task!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"feifeiraindrops"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The task you are trying to remove does not exist!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"feifeiraindrops"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The task you are trying to remove does not exist!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"feifeiraindrops"},"content":" public void exit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"feifeiraindrops"},"content":" ui.showExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"feifeiraindrops"},"content":" System.exit(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":209,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":210,"author":{"gitId":"feifeiraindrops"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"feifeiraindrops"},"content":" ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"feifeiraindrops"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"feifeiraindrops"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"feifeiraindrops"},"content":" String next \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"feifeiraindrops"},"content":" Parser.parse(this, next);","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"feifeiraindrops"},"content":" } catch (BenBenException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"feifeiraindrops"},"content":" ui.show(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":221,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"feifeiraindrops"},"content":" public static void main(String[] args) throws BenBenException {","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"feifeiraindrops"},"content":" new BenBen(\"./src/main/java/tasks.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":227,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"feifeiraindrops"},"content":" //public static void main(String[] args) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"feifeiraindrops"},"content":"// arrlst \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"feifeiraindrops"},"content":"// StoragereadFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"feifeiraindrops"},"content":"// Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"feifeiraindrops"},"content":"// //arr \u003d new Task[100];","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"Hello! I\u0027m BenBen.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"feifeiraindrops"},"content":"// \"What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"feifeiraindrops"},"content":" ;","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":240,"author":{"gitId":"feifeiraindrops"},"content":"// while (sc.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"feifeiraindrops"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"feifeiraindrops"},"content":"// String next \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"feifeiraindrops"},"content":"// action(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"feifeiraindrops"},"content":"// } catch (BenBenException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":246,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":247,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"feifeiraindrops"},"content":" //private static String[] arr;","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"feifeiraindrops"},"content":" //private static Task[] arr;","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"feifeiraindrops"},"content":" //private static ArrayList\u003cTask\u003e arrlst;","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":255,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":256,"author":{"gitId":"feifeiraindrops"},"content":" //private static String FILEPATH \u003d \"./src/main/java/tasks.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":258,"author":{"gitId":"feifeiraindrops"},"content":" //private static File FILE;","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":260,"author":{"gitId":"feifeiraindrops"},"content":" //private static final DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\").withZone(ZoneId.systemDefault());","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"feifeiraindrops"},"content":" //private static boolean[] bool;","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"feifeiraindrops"},"content":" //private static final String line \u003d\"_______________________________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":263,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":264,"author":{"gitId":"feifeiraindrops"},"content":"// public static abstract class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"feifeiraindrops"},"content":"// protected String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"feifeiraindrops"},"content":"// protected boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"feifeiraindrops"},"content":"// public Task(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"feifeiraindrops"},"content":"// this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"feifeiraindrops"},"content":"// this.isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":270,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":272,"author":{"gitId":"feifeiraindrops"},"content":"// public String getStatusIcon() {","lastModifiedDate":"2023-09-01"},{"lineNumber":273,"author":{"gitId":"feifeiraindrops"},"content":"// return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-09-01"},{"lineNumber":274,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":275,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":276,"author":{"gitId":"feifeiraindrops"},"content":"// public void mark() {","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"feifeiraindrops"},"content":"// this.isDone \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":278,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":279,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":280,"author":{"gitId":"feifeiraindrops"},"content":"// public void unmark() {","lastModifiedDate":"2023-09-01"},{"lineNumber":281,"author":{"gitId":"feifeiraindrops"},"content":"// this.isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":282,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":283,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":284,"author":{"gitId":"feifeiraindrops"},"content":"// public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":285,"author":{"gitId":"feifeiraindrops"},"content":"// return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":286,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":287,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":288,"author":{"gitId":"feifeiraindrops"},"content":"// public String description() {","lastModifiedDate":"2023-09-01"},{"lineNumber":289,"author":{"gitId":"feifeiraindrops"},"content":"// return this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":290,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":291,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":292,"author":{"gitId":"feifeiraindrops"},"content":"// public abstract String getLog() ;","lastModifiedDate":"2023-09-01"},{"lineNumber":293,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":294,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":295,"author":{"gitId":"feifeiraindrops"},"content":"// public static class Todo extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":296,"author":{"gitId":"feifeiraindrops"},"content":"// public Todo(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":297,"author":{"gitId":"feifeiraindrops"},"content":"// super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":298,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":299,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":300,"author":{"gitId":"feifeiraindrops"},"content":"// @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":301,"author":{"gitId":"feifeiraindrops"},"content":"// public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":302,"author":{"gitId":"feifeiraindrops"},"content":"// return \"[T] \" + super.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":303,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":304,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":305,"author":{"gitId":"feifeiraindrops"},"content":"// @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":306,"author":{"gitId":"feifeiraindrops"},"content":"// public String getLog() {","lastModifiedDate":"2023-09-01"},{"lineNumber":307,"author":{"gitId":"feifeiraindrops"},"content":"// return \"T | \" + (isDone? \"1\" : \"0\")","lastModifiedDate":"2023-09-01"},{"lineNumber":308,"author":{"gitId":"feifeiraindrops"},"content":"// + \" | \" + this.description + System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":309,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":310,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":311,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":312,"author":{"gitId":"feifeiraindrops"},"content":"// public static class Deadline extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":313,"author":{"gitId":"feifeiraindrops"},"content":"// protected LocalDate ddl;","lastModifiedDate":"2023-09-01"},{"lineNumber":314,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":315,"author":{"gitId":"feifeiraindrops"},"content":"// protected final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":316,"author":{"gitId":"feifeiraindrops"},"content":"// public Deadline(String description, String ddl) {","lastModifiedDate":"2023-09-01"},{"lineNumber":317,"author":{"gitId":"feifeiraindrops"},"content":"// super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":318,"author":{"gitId":"feifeiraindrops"},"content":"// this.ddl \u003d LocalDate.parse(ddl);","lastModifiedDate":"2023-09-01"},{"lineNumber":319,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":320,"author":{"gitId":"feifeiraindrops"},"content":"// @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":321,"author":{"gitId":"feifeiraindrops"},"content":"// public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":322,"author":{"gitId":"feifeiraindrops"},"content":"// return \"[D] \" + super.toString() + \" (by: \" + getDdl() + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":323,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":324,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":325,"author":{"gitId":"feifeiraindrops"},"content":"// public String getDdl() {","lastModifiedDate":"2023-09-01"},{"lineNumber":326,"author":{"gitId":"feifeiraindrops"},"content":"// return this.ddl.getMonth().toString() + \" \" + this.ddl.getDayOfMonth() + \" \" + this.ddl.getYear();","lastModifiedDate":"2023-09-01"},{"lineNumber":327,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":328,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":329,"author":{"gitId":"feifeiraindrops"},"content":"// public String getFormattedDdl() {","lastModifiedDate":"2023-09-01"},{"lineNumber":330,"author":{"gitId":"feifeiraindrops"},"content":"// return ddl.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":331,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":332,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":333,"author":{"gitId":"feifeiraindrops"},"content":"// @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":334,"author":{"gitId":"feifeiraindrops"},"content":"// public String getLog() {","lastModifiedDate":"2023-09-01"},{"lineNumber":335,"author":{"gitId":"feifeiraindrops"},"content":"// return \"D | \" + (isDone? \"1\" : \"0\")","lastModifiedDate":"2023-09-01"},{"lineNumber":336,"author":{"gitId":"feifeiraindrops"},"content":"// + \" | \" + this.description","lastModifiedDate":"2023-09-01"},{"lineNumber":337,"author":{"gitId":"feifeiraindrops"},"content":"// + \" | \" + this.getFormattedDdl() + System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":338,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":339,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":340,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":341,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":342,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":343,"author":{"gitId":"feifeiraindrops"},"content":"// public static class Event extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":344,"author":{"gitId":"feifeiraindrops"},"content":"// protected LocalDateTime startTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":345,"author":{"gitId":"feifeiraindrops"},"content":"// protected LocalDateTime endTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":346,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":347,"author":{"gitId":"feifeiraindrops"},"content":"// protected final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\").withZone(ZoneId.systemDefault());","lastModifiedDate":"2023-09-01"},{"lineNumber":348,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":349,"author":{"gitId":"feifeiraindrops"},"content":"// public Event(String description,String startTime, String endTime) throws BenBenException {","lastModifiedDate":"2023-09-01"},{"lineNumber":350,"author":{"gitId":"feifeiraindrops"},"content":"// super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":351,"author":{"gitId":"feifeiraindrops"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":352,"author":{"gitId":"feifeiraindrops"},"content":"// this.startTime \u003d LocalDateTime.parse(startTime, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":353,"author":{"gitId":"feifeiraindrops"},"content":"// this.endTime \u003d LocalDateTime.parse(endTime, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":354,"author":{"gitId":"feifeiraindrops"},"content":"// if (this.startTime.isAfter(this.endTime)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":355,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"The end time should be later than the start time!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":356,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":357,"author":{"gitId":"feifeiraindrops"},"content":"// } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":358,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"The date and time is of the wrong format! Please use yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":359,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":360,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":361,"author":{"gitId":"feifeiraindrops"},"content":"// @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":362,"author":{"gitId":"feifeiraindrops"},"content":"// public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":363,"author":{"gitId":"feifeiraindrops"},"content":"// return \"[E] \" + super.toString() + \" (from: \" + getStartTime() + \" to: \" + getEndTime() + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":364,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":365,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":366,"author":{"gitId":"feifeiraindrops"},"content":"// public String getStartTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":367,"author":{"gitId":"feifeiraindrops"},"content":"// return startTime.getMonth().toString()","lastModifiedDate":"2023-09-01"},{"lineNumber":368,"author":{"gitId":"feifeiraindrops"},"content":"// + \" \" + startTime.getDayOfMonth()","lastModifiedDate":"2023-09-01"},{"lineNumber":369,"author":{"gitId":"feifeiraindrops"},"content":"// + \" \" + startTime.getYear()","lastModifiedDate":"2023-09-01"},{"lineNumber":370,"author":{"gitId":"feifeiraindrops"},"content":"// + \" \" + startTime.getHour() + \":\" + startTime.getMinute();","lastModifiedDate":"2023-09-01"},{"lineNumber":371,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":372,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":373,"author":{"gitId":"feifeiraindrops"},"content":"// public String getEndTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":374,"author":{"gitId":"feifeiraindrops"},"content":"// return endTime.getMonth().toString()","lastModifiedDate":"2023-09-01"},{"lineNumber":375,"author":{"gitId":"feifeiraindrops"},"content":"// + \" \" + endTime.getDayOfMonth()","lastModifiedDate":"2023-09-01"},{"lineNumber":376,"author":{"gitId":"feifeiraindrops"},"content":"// + \" \" + endTime.getYear()","lastModifiedDate":"2023-09-01"},{"lineNumber":377,"author":{"gitId":"feifeiraindrops"},"content":"// + \" \" + endTime.getHour() + \":\" + endTime.getMinute();","lastModifiedDate":"2023-09-01"},{"lineNumber":378,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":379,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":380,"author":{"gitId":"feifeiraindrops"},"content":"// public String getFormattedStart() {","lastModifiedDate":"2023-09-01"},{"lineNumber":381,"author":{"gitId":"feifeiraindrops"},"content":"// return startTime.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":382,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":383,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":384,"author":{"gitId":"feifeiraindrops"},"content":"// public String getFormattedEnd() {","lastModifiedDate":"2023-09-01"},{"lineNumber":385,"author":{"gitId":"feifeiraindrops"},"content":"// return endTime.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":386,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":387,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":388,"author":{"gitId":"feifeiraindrops"},"content":"// @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":389,"author":{"gitId":"feifeiraindrops"},"content":"// public String getLog() {","lastModifiedDate":"2023-09-01"},{"lineNumber":390,"author":{"gitId":"feifeiraindrops"},"content":"// return \"E | \" + (isDone? \"1\" : \"0\")","lastModifiedDate":"2023-09-01"},{"lineNumber":391,"author":{"gitId":"feifeiraindrops"},"content":"// + \" | \" + this.description","lastModifiedDate":"2023-09-01"},{"lineNumber":392,"author":{"gitId":"feifeiraindrops"},"content":"// + \" | \" + getFormattedStart()","lastModifiedDate":"2023-09-01"},{"lineNumber":393,"author":{"gitId":"feifeiraindrops"},"content":"// + \" | \" + getFormattedEnd() + System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":394,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":395,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":396,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":397,"author":{"gitId":"feifeiraindrops"},"content":"// static class BenBenException extends RuntimeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":398,"author":{"gitId":"feifeiraindrops"},"content":"// BenBenException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":399,"author":{"gitId":"feifeiraindrops"},"content":"// super(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":400,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":401,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":402,"author":{"gitId":"feifeiraindrops"},"content":"// @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":403,"author":{"gitId":"feifeiraindrops"},"content":"// public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":404,"author":{"gitId":"feifeiraindrops"},"content":"// return \"WOOF! \" + getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":405,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":406,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":407,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":408,"author":{"gitId":"feifeiraindrops"},"content":"// public static void exit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":409,"author":{"gitId":"feifeiraindrops"},"content":"//// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":410,"author":{"gitId":"feifeiraindrops"},"content":"//// System.out.println(\"Bye. Hope to see you again soon!\\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":411,"author":{"gitId":"feifeiraindrops"},"content":"// System.exit(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":412,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":413,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":414,"author":{"gitId":"feifeiraindrops"},"content":"// public static void todo(String str) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":415,"author":{"gitId":"feifeiraindrops"},"content":"// String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-09-01"},{"lineNumber":416,"author":{"gitId":"feifeiraindrops"},"content":"// String des \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":417,"author":{"gitId":"feifeiraindrops"},"content":"// for (int i \u003d 1; i \u003c strSplit.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":418,"author":{"gitId":"feifeiraindrops"},"content":"// des \u003d des + \" \" + strSplit[i];","lastModifiedDate":"2023-09-01"},{"lineNumber":419,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":420,"author":{"gitId":"feifeiraindrops"},"content":"// des \u003d des.trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":421,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":422,"author":{"gitId":"feifeiraindrops"},"content":"// if (des.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":423,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Please follow the format: todo todo details\");","lastModifiedDate":"2023-09-01"},{"lineNumber":424,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":425,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":426,"author":{"gitId":"feifeiraindrops"},"content":"// Task t \u003d new Todo(des);","lastModifiedDate":"2023-09-01"},{"lineNumber":427,"author":{"gitId":"feifeiraindrops"},"content":"// //arr[counter] \u003d t;","lastModifiedDate":"2023-09-01"},{"lineNumber":428,"author":{"gitId":"feifeiraindrops"},"content":"// arrlst.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":429,"author":{"gitId":"feifeiraindrops"},"content":"// //counter++;","lastModifiedDate":"2023-09-01"},{"lineNumber":430,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":431,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":432,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":433,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"Now you have \" + arrlst.size() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":434,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":435,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":436,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":437,"author":{"gitId":"feifeiraindrops"},"content":"// public static void deadline(String str) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":438,"author":{"gitId":"feifeiraindrops"},"content":"// String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-09-01"},{"lineNumber":439,"author":{"gitId":"feifeiraindrops"},"content":"// String des \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":440,"author":{"gitId":"feifeiraindrops"},"content":"// String ddl \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":441,"author":{"gitId":"feifeiraindrops"},"content":"// boolean isDes \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":442,"author":{"gitId":"feifeiraindrops"},"content":"// for (int i \u003d 1; i \u003c strSplit.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":443,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit[i].equals(\"/by\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":444,"author":{"gitId":"feifeiraindrops"},"content":"// isDes \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":445,"author":{"gitId":"feifeiraindrops"},"content":"// continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":446,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":447,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":448,"author":{"gitId":"feifeiraindrops"},"content":"// if (isDes) {","lastModifiedDate":"2023-09-01"},{"lineNumber":449,"author":{"gitId":"feifeiraindrops"},"content":"// des \u003d des + \" \" + strSplit[i];","lastModifiedDate":"2023-09-01"},{"lineNumber":450,"author":{"gitId":"feifeiraindrops"},"content":"// } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":451,"author":{"gitId":"feifeiraindrops"},"content":"// ddl \u003d ddl + \" \" + strSplit[i];","lastModifiedDate":"2023-09-01"},{"lineNumber":452,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":453,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":454,"author":{"gitId":"feifeiraindrops"},"content":"// des \u003d des.trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":455,"author":{"gitId":"feifeiraindrops"},"content":"// ddl \u003d ddl.trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":456,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":457,"author":{"gitId":"feifeiraindrops"},"content":"// if (des.length() \u003d\u003d 0 || ddl.length() \u003d\u003d 0 ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":458,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Please follow the format: deadline deadline details /by yyyy/mm/dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":459,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":460,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":461,"author":{"gitId":"feifeiraindrops"},"content":"// Task t \u003d new Deadline(des, ddl);","lastModifiedDate":"2023-09-01"},{"lineNumber":462,"author":{"gitId":"feifeiraindrops"},"content":"// //arr[counter] \u003d t;","lastModifiedDate":"2023-09-01"},{"lineNumber":463,"author":{"gitId":"feifeiraindrops"},"content":"// arrlst.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":464,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":465,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":466,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":467,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"Now you have \" + arrlst.size() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":468,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":469,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":470,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":471,"author":{"gitId":"feifeiraindrops"},"content":"// public static void event (String str) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":472,"author":{"gitId":"feifeiraindrops"},"content":"// String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-09-01"},{"lineNumber":473,"author":{"gitId":"feifeiraindrops"},"content":"// String des \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":474,"author":{"gitId":"feifeiraindrops"},"content":"// String start \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":475,"author":{"gitId":"feifeiraindrops"},"content":"// String end \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":476,"author":{"gitId":"feifeiraindrops"},"content":"// boolean isDes \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":477,"author":{"gitId":"feifeiraindrops"},"content":"// boolean isStart \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":478,"author":{"gitId":"feifeiraindrops"},"content":"// for (int i \u003d 1; i \u003c strSplit.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":479,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit[i].equals(\"/from\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":480,"author":{"gitId":"feifeiraindrops"},"content":"// isDes \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":481,"author":{"gitId":"feifeiraindrops"},"content":"// isStart \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":482,"author":{"gitId":"feifeiraindrops"},"content":"// continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":483,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":484,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit[i].equals(\"/to\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":485,"author":{"gitId":"feifeiraindrops"},"content":"// isStart \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":486,"author":{"gitId":"feifeiraindrops"},"content":"// continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":487,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":488,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":489,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":490,"author":{"gitId":"feifeiraindrops"},"content":"// if (isDes \u0026\u0026 !isStart) {","lastModifiedDate":"2023-09-01"},{"lineNumber":491,"author":{"gitId":"feifeiraindrops"},"content":"// des \u003d des + \" \" + strSplit[i];","lastModifiedDate":"2023-09-01"},{"lineNumber":492,"author":{"gitId":"feifeiraindrops"},"content":"// } else if (!isDes \u0026\u0026 isStart) {","lastModifiedDate":"2023-09-01"},{"lineNumber":493,"author":{"gitId":"feifeiraindrops"},"content":"// start \u003d start + \" \" + strSplit[i];","lastModifiedDate":"2023-09-01"},{"lineNumber":494,"author":{"gitId":"feifeiraindrops"},"content":"// } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":495,"author":{"gitId":"feifeiraindrops"},"content":"// end \u003d end + \" \" + strSplit[i];","lastModifiedDate":"2023-09-01"},{"lineNumber":496,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":497,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":498,"author":{"gitId":"feifeiraindrops"},"content":"// des \u003d des.trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":499,"author":{"gitId":"feifeiraindrops"},"content":"// start \u003d start.trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":500,"author":{"gitId":"feifeiraindrops"},"content":"// end \u003d end.trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":501,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":502,"author":{"gitId":"feifeiraindrops"},"content":"// if (des.length() \u003d\u003d 0 || start.length() \u003d\u003d 0 || end.length() \u003d\u003d 0 ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":503,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Please follow the format: event event details /from yyyy-MM-dd HH-mm /to yyyy-MM-dd HH-mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":504,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":505,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":506,"author":{"gitId":"feifeiraindrops"},"content":"// Task t \u003d new Event(des, start, end);","lastModifiedDate":"2023-09-01"},{"lineNumber":507,"author":{"gitId":"feifeiraindrops"},"content":"// //arr[counter] \u003d t;","lastModifiedDate":"2023-09-01"},{"lineNumber":508,"author":{"gitId":"feifeiraindrops"},"content":"// arrlst.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":509,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":510,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":511,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":512,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":513,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":514,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"Now you have \" + arrlst.size() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":515,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":516,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":517,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":518,"author":{"gitId":"feifeiraindrops"},"content":"// public static void iterList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":519,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":520,"author":{"gitId":"feifeiraindrops"},"content":"// if (arrlst.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":521,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":522,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"Your list is currently empty! Add a new task now!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":523,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":524,"author":{"gitId":"feifeiraindrops"},"content":"// } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":525,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":526,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":527,"author":{"gitId":"feifeiraindrops"},"content":"// for (int i \u003d 0; i \u003c arrlst.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":528,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println((i + 1) + \".\" + arrlst.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":529,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":530,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":531,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":532,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":533,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":534,"author":{"gitId":"feifeiraindrops"},"content":"// public static void mark(String str) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":535,"author":{"gitId":"feifeiraindrops"},"content":"// String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-09-01"},{"lineNumber":536,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":537,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Please enter a task to mark!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":538,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":539,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":540,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":541,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Please only enter one task to mark!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":542,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":543,"author":{"gitId":"feifeiraindrops"},"content":"// Integer x \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":544,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":545,"author":{"gitId":"feifeiraindrops"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":546,"author":{"gitId":"feifeiraindrops"},"content":"// x \u003d Integer.parseInt(strSplit[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":547,"author":{"gitId":"feifeiraindrops"},"content":"// //arr[x - 1].mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":548,"author":{"gitId":"feifeiraindrops"},"content":"// arrlst.get(x - 1).mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":549,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":550,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":551,"author":{"gitId":"feifeiraindrops"},"content":"// \" \" + arrlst.get(x - 1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":552,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":553,"author":{"gitId":"feifeiraindrops"},"content":"// } catch(NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":554,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Please use an integer value to indicate your task!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":555,"author":{"gitId":"feifeiraindrops"},"content":"// } catch(NullPointerException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":556,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"The task you are trying to mark does not exist!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":557,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":558,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":559,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":560,"author":{"gitId":"feifeiraindrops"},"content":"// public static void unmark(String str) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":561,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":562,"author":{"gitId":"feifeiraindrops"},"content":"// String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-09-01"},{"lineNumber":563,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":564,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":565,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Please enter a task to unmark!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":566,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":567,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":568,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Please only enter one task to unmark!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":569,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":570,"author":{"gitId":"feifeiraindrops"},"content":"// Integer x \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":571,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":572,"author":{"gitId":"feifeiraindrops"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":573,"author":{"gitId":"feifeiraindrops"},"content":"// x \u003d Integer.parseInt(strSplit[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":574,"author":{"gitId":"feifeiraindrops"},"content":"// //[x - 1].unmark();","lastModifiedDate":"2023-09-01"},{"lineNumber":575,"author":{"gitId":"feifeiraindrops"},"content":"// arrlst.get(x - 1).unmark();","lastModifiedDate":"2023-09-01"},{"lineNumber":576,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":577,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":578,"author":{"gitId":"feifeiraindrops"},"content":"// \" \" + arrlst.get(x - 1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":579,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":580,"author":{"gitId":"feifeiraindrops"},"content":"// } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":581,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Please use an integer value to indicate your task!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":582,"author":{"gitId":"feifeiraindrops"},"content":"// } catch (NullPointerException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":583,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"The task you are trying to unmark does not exist!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":584,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":585,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":586,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":587,"author":{"gitId":"feifeiraindrops"},"content":"// public static void remove(String str) throws BenBenException {","lastModifiedDate":"2023-09-01"},{"lineNumber":588,"author":{"gitId":"feifeiraindrops"},"content":"// String[] strSplit \u003d str.split(\"\\\\s+\");","lastModifiedDate":"2023-09-01"},{"lineNumber":589,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":590,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":591,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Please enter a task to remove!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":592,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":593,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":594,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Please only enter one task to remove!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":595,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":596,"author":{"gitId":"feifeiraindrops"},"content":"// Integer x \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":597,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":598,"author":{"gitId":"feifeiraindrops"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":599,"author":{"gitId":"feifeiraindrops"},"content":"// x \u003d Integer.parseInt(strSplit[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":600,"author":{"gitId":"feifeiraindrops"},"content":"// //[x - 1].unmark();","lastModifiedDate":"2023-09-01"},{"lineNumber":601,"author":{"gitId":"feifeiraindrops"},"content":"// Task temp \u003d arrlst.get(x - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":602,"author":{"gitId":"feifeiraindrops"},"content":"// arrlst.remove(x - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":603,"author":{"gitId":"feifeiraindrops"},"content":"// //counter \u003d counter - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":604,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":605,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":606,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(temp.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":607,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(\"Now you have \" + arrlst.size() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":608,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":609,"author":{"gitId":"feifeiraindrops"},"content":"// } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":610,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Please use an integer value to indicate your task!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":611,"author":{"gitId":"feifeiraindrops"},"content":"// } catch (NullPointerException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":612,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"The task you are trying to remove does not exist!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":613,"author":{"gitId":"feifeiraindrops"},"content":"// } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":614,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"The task you are trying to remove does not exist!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":615,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":616,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":617,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":618,"author":{"gitId":"feifeiraindrops"},"content":"// public static void action(String next) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":619,"author":{"gitId":"feifeiraindrops"},"content":"// boolean bool \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":620,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":621,"author":{"gitId":"feifeiraindrops"},"content":"// if (!bool \u0026\u0026 next.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":622,"author":{"gitId":"feifeiraindrops"},"content":"// exit();","lastModifiedDate":"2023-09-01"},{"lineNumber":623,"author":{"gitId":"feifeiraindrops"},"content":"// bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":624,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":625,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":626,"author":{"gitId":"feifeiraindrops"},"content":"// if (!bool \u0026\u0026 next.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":627,"author":{"gitId":"feifeiraindrops"},"content":"// iterList();","lastModifiedDate":"2023-09-01"},{"lineNumber":628,"author":{"gitId":"feifeiraindrops"},"content":"// bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":629,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":630,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":631,"author":{"gitId":"feifeiraindrops"},"content":"// if (!bool \u0026\u0026 next.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":632,"author":{"gitId":"feifeiraindrops"},"content":"// mark(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":633,"author":{"gitId":"feifeiraindrops"},"content":"// bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":634,"author":{"gitId":"feifeiraindrops"},"content":"// writeFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":635,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":636,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":637,"author":{"gitId":"feifeiraindrops"},"content":"// if (!bool \u0026\u0026 next.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":638,"author":{"gitId":"feifeiraindrops"},"content":"// unmark(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":639,"author":{"gitId":"feifeiraindrops"},"content":"// bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":640,"author":{"gitId":"feifeiraindrops"},"content":"// writeFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":641,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":642,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":643,"author":{"gitId":"feifeiraindrops"},"content":"// if (!bool \u0026\u0026 next.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":644,"author":{"gitId":"feifeiraindrops"},"content":"// todo(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":645,"author":{"gitId":"feifeiraindrops"},"content":"// bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":646,"author":{"gitId":"feifeiraindrops"},"content":"// writeFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":647,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":648,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":649,"author":{"gitId":"feifeiraindrops"},"content":"// if (!bool \u0026\u0026 next.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":650,"author":{"gitId":"feifeiraindrops"},"content":"// deadline(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":651,"author":{"gitId":"feifeiraindrops"},"content":"// bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":652,"author":{"gitId":"feifeiraindrops"},"content":"// writeFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":653,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":654,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":655,"author":{"gitId":"feifeiraindrops"},"content":"// if (!bool \u0026\u0026 next.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":656,"author":{"gitId":"feifeiraindrops"},"content":"// event(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":657,"author":{"gitId":"feifeiraindrops"},"content":"// bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":658,"author":{"gitId":"feifeiraindrops"},"content":"// writeFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":659,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":660,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":661,"author":{"gitId":"feifeiraindrops"},"content":"// if (!bool \u0026\u0026 next.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":662,"author":{"gitId":"feifeiraindrops"},"content":"// remove(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":663,"author":{"gitId":"feifeiraindrops"},"content":"// bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":664,"author":{"gitId":"feifeiraindrops"},"content":"// writeFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":665,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":666,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":667,"author":{"gitId":"feifeiraindrops"},"content":"// if (!bool) {","lastModifiedDate":"2023-09-01"},{"lineNumber":668,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"BenBen does not understand your instruction:(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":669,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":670,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":671,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":672,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":673,"author":{"gitId":"feifeiraindrops"},"content":"// public static void writeFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":674,"author":{"gitId":"feifeiraindrops"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":675,"author":{"gitId":"feifeiraindrops"},"content":"// FileWriter fw \u003d new FileWriter(FILEPATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":676,"author":{"gitId":"feifeiraindrops"},"content":"// String content \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":677,"author":{"gitId":"feifeiraindrops"},"content":"// for (int i \u003d 0; i \u003c arrlst.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":678,"author":{"gitId":"feifeiraindrops"},"content":"// Task t \u003d arrlst.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":679,"author":{"gitId":"feifeiraindrops"},"content":"// content \u003d content + t.getLog();","lastModifiedDate":"2023-09-01"},{"lineNumber":680,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":681,"author":{"gitId":"feifeiraindrops"},"content":"// fw.write(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":682,"author":{"gitId":"feifeiraindrops"},"content":"// fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":683,"author":{"gitId":"feifeiraindrops"},"content":"// } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":684,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"Failed to write to file!\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":685,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":686,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":687,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":688,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":689,"author":{"gitId":"feifeiraindrops"},"content":"// public static void readFile() throws BenBenException {","lastModifiedDate":"2023-09-01"},{"lineNumber":690,"author":{"gitId":"feifeiraindrops"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":691,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":692,"author":{"gitId":"feifeiraindrops"},"content":"// FILE \u003d new File(FILEPATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":693,"author":{"gitId":"feifeiraindrops"},"content":"// //System.out.println(FILE.exists());","lastModifiedDate":"2023-09-01"},{"lineNumber":694,"author":{"gitId":"feifeiraindrops"},"content":"// if (!FILE.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":695,"author":{"gitId":"feifeiraindrops"},"content":"// boolean isCreated \u003d FILE.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":696,"author":{"gitId":"feifeiraindrops"},"content":"// //System.out.println(isCreated + \"new file created\");","lastModifiedDate":"2023-09-01"},{"lineNumber":697,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":698,"author":{"gitId":"feifeiraindrops"},"content":"// Scanner sc \u003d new Scanner(FILE);","lastModifiedDate":"2023-09-01"},{"lineNumber":699,"author":{"gitId":"feifeiraindrops"},"content":"// //System.out.println(\"next line? : \" + sc.hasNext());","lastModifiedDate":"2023-09-01"},{"lineNumber":700,"author":{"gitId":"feifeiraindrops"},"content":"// while (sc.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":701,"author":{"gitId":"feifeiraindrops"},"content":"// boolean canRead \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":702,"author":{"gitId":"feifeiraindrops"},"content":"// String task \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":703,"author":{"gitId":"feifeiraindrops"},"content":"// //System.out.println(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":704,"author":{"gitId":"feifeiraindrops"},"content":"// String[] strSplit \u003d task.split(\"\\\\|\");","lastModifiedDate":"2023-09-01"},{"lineNumber":705,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":706,"author":{"gitId":"feifeiraindrops"},"content":"// for (int i \u003d 0; i \u003c strSplit.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":707,"author":{"gitId":"feifeiraindrops"},"content":"// strSplit[i] \u003d strSplit[i].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":708,"author":{"gitId":"feifeiraindrops"},"content":"// //System.out.println(strSplit[i]);","lastModifiedDate":"2023-09-01"},{"lineNumber":709,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":710,"author":{"gitId":"feifeiraindrops"},"content":"// //System.out.println(\"length: \" + strSplit.length);","lastModifiedDate":"2023-09-01"},{"lineNumber":711,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit[0].startsWith(\"T\") \u0026\u0026 strSplit.length \u003d\u003d 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":712,"author":{"gitId":"feifeiraindrops"},"content":"// Task nextTask \u003d new Todo(strSplit[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":713,"author":{"gitId":"feifeiraindrops"},"content":"//// System.out.println(strSplit[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":714,"author":{"gitId":"feifeiraindrops"},"content":"//// System.out.println(strSplit[1].equals(\"1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":715,"author":{"gitId":"feifeiraindrops"},"content":"// if(strSplit[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":716,"author":{"gitId":"feifeiraindrops"},"content":"// nextTask.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":717,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":718,"author":{"gitId":"feifeiraindrops"},"content":"// arrlst.add(nextTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":719,"author":{"gitId":"feifeiraindrops"},"content":"// canRead \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":720,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":721,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":722,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit[0].startsWith(\"D\") \u0026\u0026 strSplit.length \u003d\u003d 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":723,"author":{"gitId":"feifeiraindrops"},"content":"// Task nextTask \u003d new Deadline(strSplit[2], strSplit[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":724,"author":{"gitId":"feifeiraindrops"},"content":"// if(strSplit[1].startsWith(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":725,"author":{"gitId":"feifeiraindrops"},"content":"// nextTask.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":726,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":727,"author":{"gitId":"feifeiraindrops"},"content":"// arrlst.add(nextTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":728,"author":{"gitId":"feifeiraindrops"},"content":"// canRead \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":729,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":730,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit[0].startsWith(\"E\") \u0026\u0026 strSplit.length \u003d\u003d 5) {","lastModifiedDate":"2023-09-01"},{"lineNumber":731,"author":{"gitId":"feifeiraindrops"},"content":"// Task nextTask \u003d new Event(strSplit[2], strSplit[3], strSplit[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":732,"author":{"gitId":"feifeiraindrops"},"content":"// if (strSplit[1].startsWith(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":733,"author":{"gitId":"feifeiraindrops"},"content":"// nextTask.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":734,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":735,"author":{"gitId":"feifeiraindrops"},"content":"// arrlst.add(nextTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":736,"author":{"gitId":"feifeiraindrops"},"content":"// canRead \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":737,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":738,"author":{"gitId":"feifeiraindrops"},"content":"// if (!canRead) {","lastModifiedDate":"2023-09-01"},{"lineNumber":739,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"The file content is corrupted, please report this to admin\");","lastModifiedDate":"2023-09-01"},{"lineNumber":740,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":741,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":742,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":743,"author":{"gitId":"feifeiraindrops"},"content":"// } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":744,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"The local file is not found in the directory\");","lastModifiedDate":"2023-09-01"},{"lineNumber":745,"author":{"gitId":"feifeiraindrops"},"content":"// } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":746,"author":{"gitId":"feifeiraindrops"},"content":"// throw new BenBenException(\"IOException found!\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":747,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":748,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":749,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":750,"author":{"gitId":"feifeiraindrops"},"content":"//}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"feifeiraindrops":750}},{"path":"src/main/java/BenBen/BenBenException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"package BenBen;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"class BenBenException extends RuntimeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":" BenBenException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":" super(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"feifeiraindrops"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"feifeiraindrops"},"content":" return \"WOOF! \" + getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"feifeiraindrops":11}},{"path":"src/main/java/BenBen/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"package BenBen;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":" protected LocalDate ddl;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"feifeiraindrops"},"content":" protected final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"feifeiraindrops"},"content":" public Deadline(String description, String ddl) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"feifeiraindrops"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"feifeiraindrops"},"content":" this.ddl \u003d LocalDate.parse(ddl);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"feifeiraindrops"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"feifeiraindrops"},"content":" return \"[D] \" + super.toString() + \" (by: \" + getDdl() + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"feifeiraindrops"},"content":" public String getDdl() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"feifeiraindrops"},"content":" return this.ddl.getMonth().toString() + \" \" + this.ddl.getDayOfMonth() + \" \" + this.ddl.getYear();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"feifeiraindrops"},"content":" public String getFormattedDdl() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"feifeiraindrops"},"content":" return ddl.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"feifeiraindrops"},"content":" public String getLog() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"feifeiraindrops"},"content":" return \"D | \" + (isDone? \"1\" : \"0\")","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"feifeiraindrops"},"content":" + \" | \" + this.description","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"feifeiraindrops"},"content":" + \" | \" + this.getFormattedDdl() + System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"feifeiraindrops":33}},{"path":"src/main/java/BenBen/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"package BenBen;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.ZoneId;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":"public class Event extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"feifeiraindrops"},"content":" protected LocalDateTime startTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"feifeiraindrops"},"content":" protected LocalDateTime endTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"feifeiraindrops"},"content":" protected final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\").withZone(ZoneId.systemDefault());","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"feifeiraindrops"},"content":" public Event(String description,String startTime, String endTime) throws BenBenException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"feifeiraindrops"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"feifeiraindrops"},"content":" this.startTime \u003d LocalDateTime.parse(startTime, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"feifeiraindrops"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"feifeiraindrops"},"content":" if (this.startTime.isAfter(this.endTime)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The end time should be later than the start time!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"feifeiraindrops"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The date and time is of the wrong format! Please use yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"feifeiraindrops"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"feifeiraindrops"},"content":" return \"[E] \" + super.toString() + \" (from: \" + getStartTime() + \" to: \" + getEndTime() + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"feifeiraindrops"},"content":" public String getStartTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"feifeiraindrops"},"content":" return startTime.getMonth().toString()","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"feifeiraindrops"},"content":" + \" \" + startTime.getDayOfMonth()","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"feifeiraindrops"},"content":" + \" \" + startTime.getYear()","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"feifeiraindrops"},"content":" + \" \" + startTime.getHour() + \":\" + startTime.getMinute();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"feifeiraindrops"},"content":" public String getEndTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"feifeiraindrops"},"content":" return endTime.getMonth().toString()","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"feifeiraindrops"},"content":" + \" \" + endTime.getDayOfMonth()","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"feifeiraindrops"},"content":" + \" \" + endTime.getYear()","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"feifeiraindrops"},"content":" + \" \" + endTime.getHour() + \":\" + endTime.getMinute();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"feifeiraindrops"},"content":" public String getFormattedStart() {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"feifeiraindrops"},"content":" return startTime.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"feifeiraindrops"},"content":" public String getFormattedEnd() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"feifeiraindrops"},"content":" return endTime.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"feifeiraindrops"},"content":" public String getLog() {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"feifeiraindrops"},"content":" return \"E | \" + (isDone? \"1\" : \"0\")","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"feifeiraindrops"},"content":" + \" | \" + this.description","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"feifeiraindrops"},"content":" + \" | \" + getFormattedStart()","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"feifeiraindrops"},"content":" + \" | \" + getFormattedEnd() + System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"feifeiraindrops":59}},{"path":"src/main/java/BenBen/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"package BenBen;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":"// private static Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":"// private static Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"feifeiraindrops"},"content":"// public static void setStorage(Storage s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"feifeiraindrops"},"content":"// storage \u003d s;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"feifeiraindrops"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"feifeiraindrops"},"content":"// public static void setUi(Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"feifeiraindrops"},"content":"// ui \u003d ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"feifeiraindrops"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"feifeiraindrops"},"content":" public static void parse(BenBen bb, String next) throws BenBenException{","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"feifeiraindrops"},"content":" boolean bool \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"feifeiraindrops"},"content":" bb.exit();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"feifeiraindrops"},"content":" bb.iterList();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"feifeiraindrops"},"content":" bb.mark(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"feifeiraindrops"},"content":" bb.unmark(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"feifeiraindrops"},"content":" bb.todo(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"feifeiraindrops"},"content":" bb.deadline(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"feifeiraindrops"},"content":" bb.event(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool \u0026\u0026 next.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"feifeiraindrops"},"content":" bb.remove(next);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"feifeiraindrops"},"content":" bool \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"feifeiraindrops"},"content":" if (!bool) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"bb does not understand your instruction:(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"feifeiraindrops":65}},{"path":"src/main/java/BenBen/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"package BenBen;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"feifeiraindrops"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"feifeiraindrops"},"content":" private final String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"feifeiraindrops"},"content":" //private static String filePath \u003d \"./src/main/java/tasks.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"feifeiraindrops"},"content":" private File file;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"feifeiraindrops"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"feifeiraindrops"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"feifeiraindrops"},"content":" public void write(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"feifeiraindrops"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"feifeiraindrops"},"content":" String content \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"feifeiraindrops"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"feifeiraindrops"},"content":" Task t \u003d tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"feifeiraindrops"},"content":" content \u003d content + t.getLog();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"feifeiraindrops"},"content":" fw.write(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"feifeiraindrops"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"feifeiraindrops"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"Failed to write to file!\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"feifeiraindrops"},"content":" public ArrayList\u003cTask\u003e load() throws BenBenException {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"feifeiraindrops"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"feifeiraindrops"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"feifeiraindrops"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"feifeiraindrops"},"content":" //System.out.println(file.exists());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"feifeiraindrops"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"feifeiraindrops"},"content":" boolean isCreated \u003d file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"feifeiraindrops"},"content":" //System.out.println(isCreated + \"new file created\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"feifeiraindrops"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"feifeiraindrops"},"content":" //System.out.println(\"next line? : \" + sc.hasNext());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"feifeiraindrops"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"feifeiraindrops"},"content":" boolean canRead \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"feifeiraindrops"},"content":" String task \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"feifeiraindrops"},"content":" //System.out.println(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"feifeiraindrops"},"content":" String[] strSplit \u003d task.split(\"\\\\|\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"feifeiraindrops"},"content":" for (int i \u003d 0; i \u003c strSplit.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"feifeiraindrops"},"content":" strSplit[i] \u003d strSplit[i].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"feifeiraindrops"},"content":" //System.out.println(strSplit[i]);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"feifeiraindrops"},"content":" //System.out.println(\"length: \" + strSplit.length);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[0].startsWith(\"T\") \u0026\u0026 strSplit.length \u003d\u003d 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"feifeiraindrops"},"content":" Task nextTask \u003d new Todo(strSplit[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(strSplit[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"feifeiraindrops"},"content":"// System.out.println(strSplit[1].equals(\"1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"feifeiraindrops"},"content":" nextTask.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"feifeiraindrops"},"content":" list.add(nextTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"feifeiraindrops"},"content":" canRead \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[0].startsWith(\"D\") \u0026\u0026 strSplit.length \u003d\u003d 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"feifeiraindrops"},"content":" Task nextTask \u003d new Deadline(strSplit[2], strSplit[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[1].startsWith(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"feifeiraindrops"},"content":" nextTask.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"feifeiraindrops"},"content":" list.add(nextTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"feifeiraindrops"},"content":" canRead \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[0].startsWith(\"E\") \u0026\u0026 strSplit.length \u003d\u003d 5) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"feifeiraindrops"},"content":" Task nextTask \u003d new Event(strSplit[2], strSplit[3], strSplit[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"feifeiraindrops"},"content":" if (strSplit[1].startsWith(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"feifeiraindrops"},"content":" nextTask.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"feifeiraindrops"},"content":" list.add(nextTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"feifeiraindrops"},"content":" canRead \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"feifeiraindrops"},"content":" if (!canRead) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The file content is corrupted, please report this to admin\");","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"feifeiraindrops"},"content":" return list;","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"feifeiraindrops"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"The local file is not found in the directory\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"feifeiraindrops"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"feifeiraindrops"},"content":" throw new BenBenException(\"IOException found!\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"feifeiraindrops":94}},{"path":"src/main/java/BenBen/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"package BenBen;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"public abstract class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":" protected String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":" protected boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":" public Task(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"feifeiraindrops"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"feifeiraindrops"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"feifeiraindrops"},"content":" public void mark() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"feifeiraindrops"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"feifeiraindrops"},"content":" public void unmark() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"feifeiraindrops"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"feifeiraindrops"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"feifeiraindrops"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"feifeiraindrops"},"content":" public String description() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"feifeiraindrops"},"content":" return this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"feifeiraindrops"},"content":" public abstract String getLog() ;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"feifeiraindrops":31}},{"path":"src/main/java/BenBen/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"package BenBen;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"feifeiraindrops"},"content":" new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"feifeiraindrops"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"feifeiraindrops"},"content":" this.tasks \u003d list;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"feifeiraindrops"},"content":" public void add(Task t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"feifeiraindrops"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"feifeiraindrops"},"content":" public void remove(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"feifeiraindrops"},"content":" tasks.remove(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"feifeiraindrops"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"feifeiraindrops"},"content":" return tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"feifeiraindrops"},"content":" public Task get(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"feifeiraindrops"},"content":" return tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"feifeiraindrops":32}},{"path":"src/main/java/BenBen/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"package BenBen;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":" public Todo(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"feifeiraindrops"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"feifeiraindrops"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"feifeiraindrops"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"feifeiraindrops"},"content":" public String getLog() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"feifeiraindrops"},"content":" return \"T | \" + (isDone? \"1\" : \"0\")","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"feifeiraindrops"},"content":" + \" | \" + this.description + System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"feifeiraindrops":17}},{"path":"src/main/java/BenBen/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"package BenBen;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":" private static final String line \u003d\"_______________________________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"feifeiraindrops"},"content":" public void show(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"feifeiraindrops"},"content":" System.out.print(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"feifeiraindrops"},"content":" public void showExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Bye. Hope to see you again soon!\\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"feifeiraindrops"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"An error occurred while we are loading your task list! A new list has been generated!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"feifeiraindrops"},"content":" System.out.print(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"feifeiraindrops"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Hello! I\u0027m BenBen.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"feifeiraindrops"},"content":" \"What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"feifeiraindrops"},"content":" public void showAdd(String msg, int size) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"feifeiraindrops"},"content":" public void showRemove(String msg, int size) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"feifeiraindrops"},"content":" public void showUnmark(String msg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"feifeiraindrops"},"content":" \" \" + msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"feifeiraindrops"},"content":" public void showMark(String msg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"feifeiraindrops"},"content":" \" \" + msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"feifeiraindrops"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"feifeiraindrops"},"content":" public void showList(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"feifeiraindrops"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Your list is currently empty! Add a new task now!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"feifeiraindrops"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"feifeiraindrops"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"feifeiraindrops"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"feifeiraindrops"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"feifeiraindrops"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"feifeiraindrops":76}},{"path":"src/main/java/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"D | 0 | ip | 2023-08-31","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"E | 0 | meeting | 2023-09-01 10:00 | 2023-09-01 12:00","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":"T | 0 | eat vitamins","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"feifeiraindrops":3}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"feifeiraindrops"},"content":"todo leetcode","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"feifeiraindrops"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"feifeiraindrops"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"feifeiraindrops"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"feifeiraindrops"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"feifeiraindrops"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"feifeiraindrops"},"content":"list","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"feifeiraindrops":7}},{"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":"feifeiraindrops"},"content":"java -classpath ..\\bin BenBen \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"feifeiraindrops":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":"feifeiraindrops"},"content":"java -classpath ../bin BenBen \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"feifeiraindrops":1,"-":37}}] diff --git a/feifeiraindrops_ip_master/commits.json b/feifeiraindrops_ip_master/commits.json index de4099e4..03e4f433 100644 --- a/feifeiraindrops_ip_master/commits.json +++ b/feifeiraindrops_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"feifeiraindrops":[{"date":"2023-08-23","commitResults":[{"hash":"6a57b9669c2a7e908148cd7e06b9fa40d147c4b1","isMergeCommit":false,"messageTitle":"\"Renamed the bot and changed greeting msg\"","messageBody":"","tags":["Level-1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"b7efbc7834b7a3fa102ddae512fb22004e7372a0","isMergeCommit":false,"messageTitle":"echo","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}},{"hash":"e74546b752c3c3bfac8a37aacd2a6230973b2e03","isMergeCommit":false,"messageTitle":"list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":18}}},{"hash":"b88805b3864123c9ceb5ad5197abc62590fbfa33","isMergeCommit":false,"messageTitle":"mark and unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":1}}},{"hash":"e7b4b0c948e7f92a924cba0bd66526146342d457","isMergeCommit":false,"messageTitle":"added task class","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":26}}},{"hash":"d470452b27d0504e064e02b5f31d97ec231b7c4c","isMergeCommit":false,"messageTitle":"added different types of tasks","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":1}}},{"hash":"90f89e52ee412a1343483349a0d3bdd3c1cfe21b","isMergeCommit":false,"messageTitle":"automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"e487b0d341d163a1460737dd3f1ade22547111af","isMergeCommit":false,"messageTitle":"Exception handling","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":66}}},{"hash":"acfdc9a0d164f8521674f78958680ac495b10eab","isMergeCommit":false,"messageTitle":"added deleting feature, replaces array with arraylist","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":10}}}]},{"date":"2023-08-31","commitResults":[{"hash":"e13d2c7782bdad7935c2f84ff2aa6cd44f29d91c","isMergeCommit":false,"messageTitle":"Read and write from local files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":142,"deletions":12}}},{"hash":"9f0a2670ecfa7ec3f0a3a207fe695d3a9dbacde6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1532769b38f3bbd0e2f34f617ac7eb2ce8ebeeb6","isMergeCommit":false,"messageTitle":"used date and time","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":6},"java":{"insertions":55,"deletions":18}}},{"hash":"305970c5a2d4d787ea2fb547609ff834bcd5d4e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"17b9a6117f8b64b7961711cb234c5542a41f967d","isMergeCommit":false,"messageTitle":"created new class files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"feifeiraindrops":{"java":553,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"feifeiraindrops":16286.821},"authorDisplayNameMap":{"feifeiraindrops":"CS2103T-W08-2 SUN ..UFEI"}} +{"authorDailyContributionsMap":{"feifeiraindrops":[{"date":"2023-08-23","commitResults":[{"hash":"6a57b9669c2a7e908148cd7e06b9fa40d147c4b1","isMergeCommit":false,"messageTitle":"\"Renamed the bot and changed greeting msg\"","messageBody":"","tags":["Level-1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"b7efbc7834b7a3fa102ddae512fb22004e7372a0","isMergeCommit":false,"messageTitle":"echo","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}},{"hash":"e74546b752c3c3bfac8a37aacd2a6230973b2e03","isMergeCommit":false,"messageTitle":"list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":18}}},{"hash":"b88805b3864123c9ceb5ad5197abc62590fbfa33","isMergeCommit":false,"messageTitle":"mark and unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":1}}},{"hash":"e7b4b0c948e7f92a924cba0bd66526146342d457","isMergeCommit":false,"messageTitle":"added task class","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":26}}},{"hash":"d470452b27d0504e064e02b5f31d97ec231b7c4c","isMergeCommit":false,"messageTitle":"added different types of tasks","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":1}}},{"hash":"90f89e52ee412a1343483349a0d3bdd3c1cfe21b","isMergeCommit":false,"messageTitle":"automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"e487b0d341d163a1460737dd3f1ade22547111af","isMergeCommit":false,"messageTitle":"Exception handling","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":66}}},{"hash":"acfdc9a0d164f8521674f78958680ac495b10eab","isMergeCommit":false,"messageTitle":"added deleting feature, replaces array with arraylist","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":10}}}]},{"date":"2023-08-31","commitResults":[{"hash":"e13d2c7782bdad7935c2f84ff2aa6cd44f29d91c","isMergeCommit":false,"messageTitle":"Read and write from local files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":142,"deletions":12}}},{"hash":"9f0a2670ecfa7ec3f0a3a207fe695d3a9dbacde6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"1532769b38f3bbd0e2f34f617ac7eb2ce8ebeeb6","isMergeCommit":false,"messageTitle":"used date and time","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":6},"java":{"insertions":55,"deletions":18}}},{"hash":"305970c5a2d4d787ea2fb547609ff834bcd5d4e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"17b9a6117f8b64b7961711cb234c5542a41f967d","isMergeCommit":false,"messageTitle":"created new class files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"9aa060fb4efe2ed0cce86a0c522ea76e3ed416e0","isMergeCommit":false,"messageTitle":"added more oop","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":969,"deletions":365}}},{"hash":"c565205ddae58a2315d15e322b60b53838aeece5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Moreoop\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"c62074f3e78f2e476b017af1fc014ad78d7b2d70","isMergeCommit":false,"messageTitle":"added to package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":11,"deletions":0}}},{"hash":"945d8c82504384a05a5c8444e9fd2b61c609617a","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c8b290deee5c3399e51127d9b585de20d63fdce7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"feifeiraindrops":{"java":1168,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"feifeiraindrops":118183.93},"authorDisplayNameMap":{"feifeiraindrops":"CS2103T-W08-2 SUN ..UFEI"}} diff --git a/flexibo_ip_master/authorship.json b/flexibo_ip_master/authorship.json index e42d53f9..e272e08d 100644 --- a/flexibo_ip_master/authorship.json +++ b/flexibo_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":" String dateTime;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":" public Deadline(String task, String dateTime) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":" super(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"flexibo"},"content":" this.dateTime\u003ddateTime;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"flexibo"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"flexibo"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"flexibo"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.dateTime + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":12}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":"import Exception.MissingTaskException;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":"import Exception.MissingCommandException;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"flexibo"},"content":"import Exception.MissingTextException;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"flexibo"},"content":" // obligatory enums here","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"flexibo"},"content":" enum Test {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"flexibo"},"content":" HI, YOU, LOOK, AMAZING","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"flexibo"},"content":" final static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"flexibo"},"content":" final static String horizontalLine \u003d \" ------------------------\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"flexibo"},"content":" printGreetings();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"flexibo"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"flexibo"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"flexibo"},"content":" String text \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"flexibo"},"content":" System.out.println(\"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"flexibo"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"flexibo"},"content":" String[] splitText2 \u003d text.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"flexibo"},"content":" String command \u003d splitText[0].toLowerCase();","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"flexibo"},"content":" switch (command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"flexibo"},"content":" case \"bye\":","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"flexibo"},"content":" System.out.println(\" BYE!\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"flexibo"},"content":" System.exit(0);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"flexibo"},"content":" case \"list\":","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"flexibo"},"content":" printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"flexibo"},"content":" case \"delete\":","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"flexibo"},"content":" if (splitText2.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"flexibo"},"content":" int taskNumber \u003d getTaskNumber(splitText2[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"flexibo"},"content":" if (taskNumber !\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"flexibo"},"content":" tasks.remove(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"flexibo"},"content":" System.out.println(\"Task deleted\");","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"flexibo"},"content":" printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"flexibo"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"flexibo"},"content":" System.out.println(\" You need to type in something u silly dog.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"flexibo"},"content":" case \"todo\": {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"flexibo"},"content":" if (splitText2.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"flexibo"},"content":" tasks.add(new ToDo(splitText2[1]));","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"flexibo"},"content":" printTasksLength();","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"flexibo"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"flexibo"},"content":" System.out.println(\" You need to type in a task u silly dog.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"flexibo"},"content":" case \"deadline\": {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"flexibo"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"flexibo"},"content":" String by \u003d getUsingCommand(splitText, \"by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"flexibo"},"content":" String task \u003d getTask(splitText);","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"flexibo"},"content":" tasks.add(new Deadline(task, by));","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"flexibo"},"content":" printTasksLength();","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"flexibo"},"content":" } catch (MissingTaskException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"flexibo"},"content":" System.err.println(\"Missing task error\");","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"flexibo"},"content":" } catch (MissingTextException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"flexibo"},"content":" System.err.println(\"Missing text after command error, check that you have inputted a text after command.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"flexibo"},"content":" } catch (MissingCommandException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"flexibo"},"content":" System.err.println(\"Missing command error, check that you included the following commands \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"flexibo"},"content":" + \"/by [insert deadline]\");","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"flexibo"},"content":" case \"event\": {","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"flexibo"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"flexibo"},"content":" String from \u003d getUsingCommand(splitText, \"from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"flexibo"},"content":" String to \u003d getUsingCommand(splitText, \"to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"flexibo"},"content":" String task \u003d getTask(splitText);","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"flexibo"},"content":" tasks.add(new Event(task, from, to));","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"flexibo"},"content":" printTasksLength();","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"flexibo"},"content":" } catch (MissingTaskException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"flexibo"},"content":" System.err.println(\"Missing task error, check that you have added a task.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"flexibo"},"content":" } catch (MissingTextException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"flexibo"},"content":" System.err.println(\"Missing text after command error, check that you have inputted a text after command.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"flexibo"},"content":" } catch (MissingCommandException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"flexibo"},"content":" System.err.println(\"Missing command error, check that you included the following commands \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"flexibo"},"content":" + \"/from [insert from date], /to [insert to date]\");","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"flexibo"},"content":" case \"mark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"flexibo"},"content":" case \"unmark\": {","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"flexibo"},"content":" if (splitText2.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"flexibo"},"content":" int taskNumber \u003d getTaskNumber(splitText2[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"flexibo"},"content":" if (taskNumber !\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"flexibo"},"content":" if (command.equals(\"mark\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"flexibo"},"content":" tasks.get(taskNumber - 1).mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"flexibo"},"content":" System.out.println(\" You\u0027ve marked task: \" + taskNumber);","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"flexibo"},"content":" else {","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"flexibo"},"content":" tasks.get(taskNumber - 1).unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"flexibo"},"content":" System.out.println(\" You\u0027ve marked task: \" + taskNumber);","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"flexibo"},"content":" printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"flexibo"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"flexibo"},"content":" System.out.println(\" You need to type in something u silly dog.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"flexibo"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"flexibo"},"content":" System.out.println(\" I can only understand the following commands: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"flexibo"},"content":" + \" bye, list, mark, unmark, todo, deadline, event\");","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"flexibo"},"content":" System.out.println(\"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":115,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"flexibo"},"content":" private static void printGreetings() {","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"flexibo"},"content":" System.out.println(horizontalLine","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"flexibo"},"content":" + \" GREETINGS HUMAN! I AM QLATZ! □ \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"flexibo"},"content":" + \" I AM NOW A LISTMAKER\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"flexibo"},"content":" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"flexibo"},"content":" private static void printList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"flexibo"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"flexibo"},"content":" System.out.println(\" You have no tasks added yet\");","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"flexibo"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"flexibo"},"content":" for (int i \u003d 1; i \u003c\u003d tasks.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"flexibo"},"content":" System.out.println(\" \" + i + \". \" + tasks.get(i - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"flexibo"},"content":" private static String getUsingCommand(String[] splitText, String command) throws MissingCommandException, MissingTextException {","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"flexibo"},"content":" boolean found \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"flexibo"},"content":" StringBuilder text \u003d new StringBuilder();","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"flexibo"},"content":" for (String s : splitText) {","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"flexibo"},"content":" if (!found) {","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"flexibo"},"content":" if (s.toLowerCase().equals(\"/\" + command)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"flexibo"},"content":" found \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"flexibo"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"flexibo"},"content":" if (s.charAt(0) \u003d\u003d \u0027/\u0027)","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"flexibo"},"content":" text.append(\" \").append(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"flexibo"},"content":" if (found \u0026\u0026 (text.length() \u003e 0)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"flexibo"},"content":" return text.substring(1);","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"flexibo"},"content":" } else if (found)","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"flexibo"},"content":" throw new MissingTextException();","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"flexibo"},"content":" else {","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"flexibo"},"content":" throw new MissingCommandException();","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"flexibo"},"content":" private static String getTask(String[] splitText) throws MissingTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"flexibo"},"content":" String task \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"flexibo"},"content":" if (splitText.length \u003e 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"flexibo"},"content":" for (int i \u003d 1; i \u003c splitText.length; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"flexibo"},"content":" if (splitText[i].charAt(0) !\u003d \u0027/\u0027)","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"flexibo"},"content":" task \u003d task + \" \" + splitText[i];","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"flexibo"},"content":" else","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"flexibo"},"content":" return task.substring(1);","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"flexibo"},"content":" throw new MissingTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"flexibo"},"content":" private static void printTasksLength() {","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"flexibo"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"flexibo"},"content":" private static int getTaskNumber(String string) {","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"flexibo"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"flexibo"},"content":" int taskNumber \u003d Integer.parseInt(string);","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"flexibo"},"content":" if (taskNumber \u003e 0 \u0026\u0026 taskNumber \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"flexibo"},"content":" return taskNumber;","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"flexibo"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"flexibo"},"content":" System.out.println(\"Enter a number that is within the list: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"flexibo"},"content":" printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"flexibo"},"content":" return -1;","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"flexibo"},"content":" } catch (NumberFormatException ne) {","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"flexibo"},"content":" System.out.println(\"You need to enter a number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"flexibo"},"content":" return -1;","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"flexibo":184,"-":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":" String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":" String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":" public Event(String task, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"flexibo"},"content":" super(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"flexibo"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"flexibo"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"flexibo"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"flexibo"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"flexibo"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":14}},{"path":"src/main/java/Exception/MissingCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"package Exception;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":"public class MissingCommandException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":4}},{"path":"src/main/java/Exception/MissingTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"package Exception;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":"public class MissingTaskException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":4}},{"path":"src/main/java/Exception/MissingTextException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"package Exception;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":"public class MissingTextException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":4}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":" boolean done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":" String task;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":" public Task(String task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"flexibo"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"flexibo"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"flexibo"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"flexibo"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"flexibo"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"flexibo"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"flexibo"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"flexibo"},"content":" return \"[\" + ((done)?\"X\":\" \") + \"] \" + task;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":20}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":" public ToDo(String task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":" super(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"flexibo"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"flexibo"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"flexibo"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":" GREETINGS HUMAN! I AM QLATZ! □ ","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":" I AM NOW A LISTMAKER","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"flexibo"},"content":" I can only understand the following commands: ","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"flexibo"},"content":" bye, list, mark, unmark, todo, deadline, event","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"flexibo"},"content":" You have no tasks added yet","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"flexibo"},"content":" Now you have 1 tasks in the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"flexibo"},"content":" Now you have 2 tasks in the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"flexibo"},"content":" Now you have 3 tasks in the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"flexibo"},"content":" 1. [T][ ] borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"flexibo"},"content":" 2. [D][ ] return book(by: sunday)","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"flexibo"},"content":" 3. [E][ ] project meeting(from: mon 2pm to: tues 000pm)","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":50}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.annotation.JsonTypeName;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"flexibo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"flexibo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"flexibo"},"content":"@JsonTypeName(\"Deadline\")","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"flexibo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"flexibo"},"content":" public LocalDate dateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"flexibo"},"content":" public Deadline(@JsonProperty(\"task\") String task, @JsonProperty(\"dateTime\") LocalDate dateTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"flexibo"},"content":" super(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"flexibo"},"content":" this.dateTime\u003ddateTime;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"flexibo"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"flexibo"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"flexibo"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.dateTime.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":20}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"import java.io.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":"import java.nio.charset.StandardCharsets;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"flexibo"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"flexibo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"flexibo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"flexibo"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"flexibo"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"flexibo"},"content":"import Exception.MissingTaskException;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"flexibo"},"content":"import Exception.MissingCommandException;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"flexibo"},"content":"import Exception.MissingTextException;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.core.JsonProcessingException;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.core.type.TypeReference;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.databind.ObjectMapper;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.databind.SerializationFeature;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.databind.jsontype.NamedType;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":21,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"flexibo"},"content":" static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"flexibo"},"content":" static final ObjectMapper MAPPER \u003d new ObjectMapper();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"flexibo"},"content":" final static String horizontalLine \u003d \" ----------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"flexibo"},"content":" MAPPER.registerModule(new JavaTimeModule());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"flexibo"},"content":" MAPPER.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"flexibo"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"flexibo"},"content":" tasks \u003d MAPPER.readValue(new File(\"tasks.json\"), new TypeReference\u003c\u003e() {});","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"flexibo"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"flexibo"},"content":" System.out.println(\"File not found, generating file...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"flexibo"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"flexibo"},"content":" System.out.println(\"Uh oh, file is corrupted, starting afresh...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"flexibo"},"content":" printGreetings();","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"flexibo"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"flexibo"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"flexibo"},"content":" String text \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"flexibo"},"content":" System.out.println(\"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"flexibo"},"content":" String[] splitText \u003d text.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"flexibo"},"content":" String[] splitText2 \u003d text.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"flexibo"},"content":" String command \u003d splitText[0].toLowerCase();","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"flexibo"},"content":" switch (command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"flexibo"},"content":" case \"bye\":","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"flexibo"},"content":" System.out.println(\" BYE!\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"flexibo"},"content":" System.exit(0);","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"flexibo"},"content":" case \"list\":","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"flexibo"},"content":" printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"flexibo"},"content":" case \"delete\":","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"flexibo"},"content":" if (splitText2.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"flexibo"},"content":" int taskNumber \u003d getTaskNumber(splitText2[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"flexibo"},"content":" if (taskNumber !\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"flexibo"},"content":" tasks.remove(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"flexibo"},"content":" System.out.println(\"Task deleted\");","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"flexibo"},"content":" printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"flexibo"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"flexibo"},"content":" System.out.println(\" You need to type in something u silly dog.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"flexibo"},"content":" case \"todo\": {","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"flexibo"},"content":" if (splitText2.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"flexibo"},"content":" tasks.add(new ToDo(splitText2[1]));","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"flexibo"},"content":" printTasksLength();","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"flexibo"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"flexibo"},"content":" System.out.println(\" You need to type in a task u silly dog.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"flexibo"},"content":" case \"deadline\": {","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"flexibo"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"flexibo"},"content":" String by \u003d getUsingCommand(splitText, \"by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"flexibo"},"content":" String task \u003d getTask(splitText);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"flexibo"},"content":" tasks.add(new Deadline(task, LocalDate.parse(by)));","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"flexibo"},"content":" printTasksLength();","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"flexibo"},"content":" } catch (MissingTaskException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"flexibo"},"content":" System.err.println(\"Missing task error\");","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"flexibo"},"content":" } catch (MissingTextException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"flexibo"},"content":" System.err.println(\"Missing text after command error, check that you have inputted a text after command.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"flexibo"},"content":" } catch (MissingCommandException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"flexibo"},"content":" System.err.println(\"Missing command error, check that you included the following commands \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"flexibo"},"content":" + \"/by [insert deadline]\");","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"flexibo"},"content":" case \"event\": {","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"flexibo"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"flexibo"},"content":" String from \u003d getUsingCommand(splitText, \"from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"flexibo"},"content":" String to \u003d getUsingCommand(splitText, \"to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"flexibo"},"content":" String task \u003d getTask(splitText);","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"flexibo"},"content":" tasks.add(new Event(task, LocalDate.parse(from), LocalDate.parse(to)));","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"flexibo"},"content":" printTasksLength();","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"flexibo"},"content":" } catch (MissingTaskException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"flexibo"},"content":" System.err.println(\"Missing task error, check that you have added a task.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"flexibo"},"content":" } catch (MissingTextException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"flexibo"},"content":" System.err.println(\"Missing text after command error, check that you have inputted a text after command.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"flexibo"},"content":" } catch (MissingCommandException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"flexibo"},"content":" System.err.println(\"Missing command error, check that you included the following commands \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"flexibo"},"content":" + \"/from [insert from date], /to [insert to date]\");","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"flexibo"},"content":" case \"mark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"flexibo"},"content":" case \"unmark\": {","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"flexibo"},"content":" if (splitText2.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"flexibo"},"content":" int taskNumber \u003d getTaskNumber(splitText2[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"flexibo"},"content":" if (taskNumber !\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"flexibo"},"content":" if (command.equals(\"mark\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"flexibo"},"content":" tasks.get(taskNumber - 1).mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"flexibo"},"content":" System.out.println(\" You\u0027ve marked task: \" + taskNumber);","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"flexibo"},"content":" else {","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"flexibo"},"content":" tasks.get(taskNumber - 1).unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"flexibo"},"content":" System.out.println(\" You\u0027ve marked task: \" + taskNumber);","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"flexibo"},"content":" printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"flexibo"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"flexibo"},"content":" System.out.println(\" You need to type in something u silly dog.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"flexibo"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"flexibo"},"content":" System.out.println(\" I can only understand the following commands: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"flexibo"},"content":" + \" bye, list, mark, unmark, todo, deadline, event\");","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"flexibo"},"content":" System.out.println(\"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"flexibo"},"content":" updateAndSaveFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":140,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"flexibo"},"content":" private static void printGreetings() {","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"flexibo"},"content":" System.out.println(horizontalLine","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"flexibo"},"content":" + \" GREETINGS HUMAN! I AM QLATZ! □ \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"flexibo"},"content":" + \" I AM NOW A LISTMAKER\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"flexibo"},"content":" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"flexibo"},"content":" private static void printList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"flexibo"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"flexibo"},"content":" System.out.println(\" You hve no tasks added yet\");","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"flexibo"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"flexibo"},"content":" for (int i \u003d 1; i \u003c\u003d tasks.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"flexibo"},"content":" System.out.println(\" \" + i + \". \" + tasks.get(i - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"flexibo"},"content":" private static String getUsingCommand(String[] splitText, String command) throws MissingCommandException, MissingTextException {","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"flexibo"},"content":" boolean found \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"flexibo"},"content":" StringBuilder text \u003d new StringBuilder();","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"flexibo"},"content":" for (String s : splitText) {","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"flexibo"},"content":" if (!found) {","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"flexibo"},"content":" if (s.toLowerCase().equals(\"/\" + command)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"flexibo"},"content":" found \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"flexibo"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"flexibo"},"content":" if (s.charAt(0) \u003d\u003d \u0027/\u0027)","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"flexibo"},"content":" //text.append(\" \").append(s);","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"flexibo"},"content":" return s;","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"flexibo"},"content":" if (found \u0026\u0026 (text.length() \u003e 0)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"flexibo"},"content":" return text.substring(1);","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"flexibo"},"content":" } else if (found)","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"flexibo"},"content":" throw new MissingTextException();","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"flexibo"},"content":" else {","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"flexibo"},"content":" throw new MissingCommandException();","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"flexibo"},"content":" private static String getTask(String[] splitText) throws MissingTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"flexibo"},"content":" String task \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"flexibo"},"content":" if (splitText.length \u003e 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"flexibo"},"content":" for (int i \u003d 1; i \u003c splitText.length; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"flexibo"},"content":" if (splitText[i].charAt(0) !\u003d \u0027/\u0027)","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"flexibo"},"content":" task \u003d task + \" \" + splitText[i];","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"flexibo"},"content":" else","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"flexibo"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"flexibo"},"content":" return task.substring(1);","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"flexibo"},"content":" throw new MissingTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"flexibo"},"content":" private static void printTasksLength() {","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"flexibo"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"flexibo"},"content":" private static int getTaskNumber(String string) {","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"flexibo"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"flexibo"},"content":" int taskNumber \u003d Integer.parseInt(string);","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"flexibo"},"content":" if (taskNumber \u003e 0 \u0026\u0026 taskNumber \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"flexibo"},"content":" return taskNumber;","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"flexibo"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"flexibo"},"content":" System.out.println(\"Enter a number that is within the list: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"flexibo"},"content":" printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"flexibo"},"content":" return -1;","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"flexibo"},"content":" } catch (NumberFormatException ne) {","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"flexibo"},"content":" System.out.println(\"You need to enter a number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"flexibo"},"content":" return -1;","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"flexibo"},"content":" private static void updateAndSaveFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"flexibo"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"flexibo"},"content":" String jsonString \u003d MAPPER.writerFor(new TypeReference\u003cArrayList\u003cTask\u003e\u003e() {}).writeValueAsString(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"flexibo"},"content":" Files.writeString(Path.of(\"tasks.json\"), jsonString, StandardCharsets.UTF_8);","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"flexibo"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"flexibo"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"flexibo":221,"-":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.annotation.JsonTypeName;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"flexibo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"flexibo"},"content":"@JsonTypeName(\"Event\")","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"flexibo"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"flexibo"},"content":" public LocalDate from;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"flexibo"},"content":" public LocalDate to;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"flexibo"},"content":" public Event(@JsonProperty(\"task\") String task, @JsonProperty(\"from\") LocalDate from, @JsonProperty(\"to\")LocalDate to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"flexibo"},"content":" super(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"flexibo"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"flexibo"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"flexibo"},"content":" private String getDate(LocalDate localDate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"flexibo"},"content":" return localDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"flexibo"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"flexibo"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"flexibo"},"content":" return \"[E]\" + super.toString() + \" (from: \" + getDate(from) + \" to: \" + getDate(to) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":24}},{"path":"src/main/java/Exception/MissingCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"package Exception;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":"public class MissingCommandException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":4}},{"path":"src/main/java/Exception/MissingTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"package Exception;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":"public class MissingTaskException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":4}},{"path":"src/main/java/Exception/MissingTextException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"package Exception;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":"public class MissingTextException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":4}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.annotation.JsonIgnoreProperties;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.annotation.JsonSubTypes;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.annotation.JsonTypeInfo;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"flexibo"},"content":"@JsonTypeInfo(","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"flexibo"},"content":" use \u003d JsonTypeInfo.Id.NAME,","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"flexibo"},"content":" include \u003d JsonTypeInfo.As.PROPERTY","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"flexibo"},"content":")","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"flexibo"},"content":"@JsonSubTypes({","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"flexibo"},"content":" @JsonSubTypes.Type(value \u003d ToDo.class, name \u003d \"ToDo\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"flexibo"},"content":" @JsonSubTypes.Type(value \u003d Event.class, name \u003d \"Event\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"flexibo"},"content":" @JsonSubTypes.Type(value \u003d Deadline.class, name \u003d \"Deadline\")","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"flexibo"},"content":"})","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"flexibo"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"flexibo"},"content":" public boolean done \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"flexibo"},"content":" public String task;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"flexibo"},"content":" public Task(String task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"flexibo"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"flexibo"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"flexibo"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"flexibo"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"flexibo"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"flexibo"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"flexibo"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"flexibo"},"content":" return \"[\" + ((done)?\"X\":\" \") + \"] \" + task;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":34}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":"import com.fasterxml.jackson.annotation.JsonTypeName;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":"@JsonTypeName(\"ToDo\")","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"flexibo"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"flexibo"},"content":" public ToDo(@JsonProperty(\"task\") String task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"flexibo"},"content":" super(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"flexibo"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"flexibo"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"flexibo"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"flexibo"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"flexibo"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"flexibo"},"content":" GREETINGS HUMAN! I AM QLATZ! □ ","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"flexibo"},"content":" I AM NOW A LISTMAKER","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"flexibo"},"content":" I can only understand the following commands: ","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"flexibo"},"content":" bye, list, mark, unmark, todo, deadline, event","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"flexibo"},"content":" You have no tasks added yet","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"flexibo"},"content":" Now you have 1 tasks in the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"flexibo"},"content":" Now you have 2 tasks in the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"flexibo"},"content":" Now you have 3 tasks in the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"flexibo"},"content":" 1. [T][ ] borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"flexibo"},"content":" 2. [D][ ] return book(by: sunday)","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"flexibo"},"content":" 3. [E][ ] project meeting(from: mon 2pm to: tues 000pm)","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"flexibo"},"content":" ------------------------","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"flexibo"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"flexibo":50}}] diff --git a/flexibo_ip_master/commits.json b/flexibo_ip_master/commits.json index 61e4721e..77c9eb08 100644 --- a/flexibo_ip_master/commits.json +++ b/flexibo_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"flexibo":[{"date":"2023-08-23","commitResults":[{"hash":"8e7c9173ea98cd1ab93702d9391bc65ff19c89bd","isMergeCommit":false,"messageTitle":"Level-0 created greetings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b1072be813e2b3069535f3eac7d4ff08f3d0b650","isMergeCommit":false,"messageTitle":"Level-0 created greetings","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":9}}},{"hash":"c799dda454b500e319a672c41f0d2f7baa800090","isMergeCommit":false,"messageTitle":"Level-1 Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":4}}},{"hash":"a0753cdeed3dc2fc8b4973c61d9764df5196c44f","isMergeCommit":false,"messageTitle":"Level-2 Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"44ea01f12e9b96138ce201d79bd42e6a943dad52","isMergeCommit":false,"messageTitle":"Level-3 Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":16}}},{"hash":"f9f98b612c05b7784679a0c40e314a782e3c0812","isMergeCommit":false,"messageTitle":"Level 4 - ToDos, Events, Deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":150,"deletions":25}}},{"hash":"41f13a0909c0f5b7e1f55911b867cac579b5cb4a","isMergeCommit":false,"messageTitle":"Level 4 - ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":7}}},{"hash":"67533c9e095d1a5736370af0efeaa31dee16873d","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":50,"deletions":0}}},{"hash":"dd35770df9a087ba1ea3dfdbc37a5c722cc620b9","isMergeCommit":false,"messageTitle":"Level 5 - Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":34}}},{"hash":"dcb0041ca8d55754809f0e272c1d04eb19be2ef3","isMergeCommit":false,"messageTitle":"Level 5 - Handle Errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"9dc42180fecddefb577dde1a8e50f2c1d7649287","isMergeCommit":false,"messageTitle":"Level 6 - Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"3bdfe2291b8192a74265e6152e470c8755674ca7","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"e2b7f0a0715ba8ec777b91937ff533d7be1af6d8","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b9951deeab6f842968684657d746899f6952a4a2","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"flexibo":{"java":252,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":50}},"authorContributionVariance":{"flexibo":30231.55},"authorDisplayNameMap":{"flexibo":"CS2103T-W09-2 DEBB..NXIN"}} +{"authorDailyContributionsMap":{"flexibo":[{"date":"2023-08-23","commitResults":[{"hash":"8e7c9173ea98cd1ab93702d9391bc65ff19c89bd","isMergeCommit":false,"messageTitle":"Level-0 created greetings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b1072be813e2b3069535f3eac7d4ff08f3d0b650","isMergeCommit":false,"messageTitle":"Level-0 created greetings","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":9}}},{"hash":"c799dda454b500e319a672c41f0d2f7baa800090","isMergeCommit":false,"messageTitle":"Level-1 Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":4}}},{"hash":"a0753cdeed3dc2fc8b4973c61d9764df5196c44f","isMergeCommit":false,"messageTitle":"Level-2 Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"44ea01f12e9b96138ce201d79bd42e6a943dad52","isMergeCommit":false,"messageTitle":"Level-3 Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":16}}},{"hash":"f9f98b612c05b7784679a0c40e314a782e3c0812","isMergeCommit":false,"messageTitle":"Level 4 - ToDos, Events, Deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":150,"deletions":25}}},{"hash":"41f13a0909c0f5b7e1f55911b867cac579b5cb4a","isMergeCommit":false,"messageTitle":"Level 4 - ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":7}}},{"hash":"67533c9e095d1a5736370af0efeaa31dee16873d","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":50,"deletions":0}}},{"hash":"dd35770df9a087ba1ea3dfdbc37a5c722cc620b9","isMergeCommit":false,"messageTitle":"Level 5 - Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":34}}},{"hash":"dcb0041ca8d55754809f0e272c1d04eb19be2ef3","isMergeCommit":false,"messageTitle":"Level 5 - Handle Errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"9dc42180fecddefb577dde1a8e50f2c1d7649287","isMergeCommit":false,"messageTitle":"Level 6 - Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"3bdfe2291b8192a74265e6152e470c8755674ca7","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"e2b7f0a0715ba8ec777b91937ff533d7be1af6d8","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b9951deeab6f842968684657d746899f6952a4a2","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"d204e81596e3dff8d43ddcb63fd6b8114c79fe2c","isMergeCommit":false,"messageTitle":"Level 7 Save, add to brranch levl 77777777777777777777777","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":13}}},{"hash":"09a6407f428cf993fd456f25c72120d224c7f92d","isMergeCommit":false,"messageTitle":"Level 7 Save, add to brranch levl 77777777777777777777777","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"be629557dea16fba063a4068232f423a1c483fb8","isMergeCommit":false,"messageTitle":"Level 7 Save, add to brranch levl 77777777777777777777777","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"5cc8ee4e031aab460a3c17b9d43836e025ca2051","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"82c616ad5001c9927f0b2c503e542373893256b8","isMergeCommit":false,"messageTitle":"lelve 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":11}}},{"hash":"15268083424dbb70b7bb160e68c26c4971cb97e8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"flexibo":{"java":325,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":50}},"authorContributionVariance":{"flexibo":15814.533},"authorDisplayNameMap":{"flexibo":"CS2103T-W09-2 DEBB..NXIN"}} diff --git a/freddychenyouren2_ip_master/authorship.json b/freddychenyouren2_ip_master/authorship.json index 07602bed..07272ff7 100644 --- a/freddychenyouren2_ip_master/authorship.json +++ b/freddychenyouren2_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":22,"freddychenyouren2":2}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"freddychenyouren2":1}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"D | 0 | test dates correct deadline | 2023-10-21 | null","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"E | 1 | correct event timings | 2222-11-11 | 2222-11-13","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"T | 1 | again todo | null | null","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"T | 0 | Packaged stuff | null | null","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"D | 1 | Dead Package bruh | 1111-11-11 | null","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"T | 0 | yes again | null | null","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"T | 1 | From Gradle | null | null","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"T | 0 | Immediate Updte?! | null | null","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"freddychenyouren2":8}},{"path":"src/main/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"T | 1 | new new new todo | null | null","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"D | 0 | test dates correct deadline | 2023-10-21 | null","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"E | 0 | correct event timings | 2222-11-11 | 2222-11-13","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"T | 0 | yes todo | null | null","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"E | 1 | lalalalla | 2020-10-10 | 2019-02-01","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":5}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.InvalidCommandException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.InvalidDateException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" * duke.Duke","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" * CS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" * iP - Individual Project","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" * duke.Duke Project","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" // HORIZONTAL_LINE","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" public static String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" private static Parser parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" private static Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" private static TaskList listOfTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" private static Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" public static boolean isFinished \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" listOfTasks \u003d new TaskList(storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" parser \u003d new Parser(listOfTasks, ui);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" storage.loadTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" start();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" System.err.println(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" } catch (InvalidDateException | InvalidCommandException | EmptyDescriptionException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" private static void start() throws IOException,","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" InvalidCommandException, EmptyDescriptionException {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" ui.greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" while (!isFinished) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" parser.parseInput(ui.getUserInput());","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" * Main method of the programme.","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":" * @param args not used here.","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":" new Duke(\"./data/duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":67,"author":{"gitId":"freddychenyouren2"},"content":" * String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2023-08-20"},{"lineNumber":68,"author":{"gitId":"freddychenyouren2"},"content":" * + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-20"},{"lineNumber":69,"author":{"gitId":"freddychenyouren2"},"content":" * + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-20"},{"lineNumber":70,"author":{"gitId":"freddychenyouren2"},"content":" * + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-20"},{"lineNumber":71,"author":{"gitId":"freddychenyouren2"},"content":" * + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-08-20"},{"lineNumber":72,"author":{"gitId":"freddychenyouren2"},"content":" * System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2023-08-20"},{"lineNumber":73,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"-":2,"freddychenyouren2":71}},{"path":"src/main/java/duke/exception/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.exception;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":" protected static String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":" public EmptyDescriptionException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" public void printExceptionMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" OOPS!!! \" + this.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"freddychenyouren2":15}},{"path":"src/main/java/duke/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.exception;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":" protected static String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" public void printExceptionMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" OOPS!!! \" + this.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Please input valid commands. Currently SeeWhyAre bot supports:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" todo deadline\\n event list\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" + \" mark unmark\\n delete bye\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":17}},{"path":"src/main/java/duke/exception/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.exception;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"public class InvalidDateException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":" return \" Yoho! The date provided is invalid. Ensure all dates are of the format YYYY-MM-DD. Thanks!\";","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":8}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.Duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.InvalidDateException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" private LocalDate by;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" private LocalDate getDeadlineDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" return this.by;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" //return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" getDeadlineDate().format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" public LocalDate getDueDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" return this.by;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" * Function to handle a Deadline Task. If it\u0027s inputs are valid, create a Deadline Task.","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" * Otherwise, print an error message in the console.","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" * @param userInput a valid user input for a Deadline Task.","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" public static void handleDeadlineTask(String userInput) throws IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" String[] details \u003d userInput.split(\"/by\");","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" //details[0] contains \"deadline\" plus duke.task description, need to erase \"deadline\". details[1] contains deadline timing","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" if (details.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" String taskDescription \u003d details[0].trim().replaceFirst(\"deadline\", \"\").trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":" String deadline \u003d details[1].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" //Check if input date is valid.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" if (TaskList.isValidDate(deadline)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" Deadline deadlineTask \u003d new Deadline(taskDescription, LocalDate.parse(deadline));","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" Storage.saveTask(deadlineTask, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" Storage.taskList.add(deadlineTask); //duke.task.Deadline \u003c: duke.task.Task","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":" //Print details in the console","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(Duke.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Got it. I\u0027ve added this Task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" %s\\n\", deadlineTask.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" Now you have %d task(s) in the list.\\n\", Storage.taskList.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(Duke.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" throw new InvalidDateException();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" } catch (InvalidDateException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(Duke.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Invalid Deadline Task input.\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"freddychenyouren2"},"content":" + \" Please input in the following format:\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"freddychenyouren2"},"content":" + \" deadline \u003cTask Description\u003e /by \u003cdeadline timing\u003e\");","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(Duke.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"freddychenyouren2":75}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.InvalidDateException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" protected LocalDate startTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" protected LocalDate endTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" protected static String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" public Event(String description, LocalDate startTime, LocalDate endTime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" protected static void printHorizontalLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":"// return \"[E]\" + super.toString() + \" (from: \" + startTime + \" to: \" + endTime + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" getStartTime().format(DateTimeFormatter.ofPattern(\"MMM d yyy\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" getEndTime().format(DateTimeFormatter.ofPattern(\"MMM d yyy\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" public LocalDate getStartTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" return this.startTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" public LocalDate getEndTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" return this.endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" public String getSchedule() {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" return String.format(\"From %s to %s\", getStartTime(), getEndTime());","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" * Function to handle an Event Task. If it\u0027s inputs are valid, create an Event Task.","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" * Otherwise, print an error message in the console.","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" * @param userInput a valid user input for an Event Task.","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" public static void handleEventTask(String userInput) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" String[] details \u003d userInput.split(\"/from | /to\");","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" //details[0] contains \"deadline\" plus duke.task description, need to erase \"deadline\". details[1] contains String deadline timing","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" if (details.length \u003d\u003d 3) {","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":" String taskDescription \u003d details[0].trim().replaceFirst(\"event\", \"\").trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" String startTime \u003d details[1].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" String endTime \u003d details[2].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" //Check if input date is valid.","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" if (TaskList.isValidDate(startTime)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" Event eventTask \u003d new Event(taskDescription,","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":" LocalDate.parse(startTime),","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" LocalDate.parse(endTime));","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":" Storage.saveTask(eventTask, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":" Storage.taskList.add(eventTask); //duke.task.Deadline \u003c: duke.task.Task","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"freddychenyouren2"},"content":" //Print details in the console","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" %s\\n\", eventTask.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" Now you have %d task(s) in the list.\\n\", Storage.taskList.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"freddychenyouren2"},"content":" throw new InvalidDateException();","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"freddychenyouren2"},"content":" } catch (InvalidDateException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Invalid Event Task input.\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"freddychenyouren2"},"content":" + \" Please input in the following format:\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"freddychenyouren2"},"content":" + \" event \u003cTask Description\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\");","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"freddychenyouren2":89}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":" public String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":" public boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" return this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" public boolean getStatus() {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" return this.isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.getDescription());","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" return (isDone ? \"X\" : \" \"); // mark done duke.task with X","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"freddychenyouren2":36}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.Duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" * Function to handle a To-do Task. If it\u0027s inputs are valid, create a To-do Task.","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" * Otherwise, print an error message in the console.","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" * @param userInput a valid user input for a To-do Task.","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" public static void handleTodoTask(String userInput) throws EmptyDescriptionException, IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" // use \\u2639 or U+2639 to insert the sad face icon","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" String taskDescription \u003d userInput.trim().replaceFirst(\"todo\", \"\").trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" throw new EmptyDescriptionException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" Todo todoTask \u003d new Todo(taskDescription);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" Storage.saveTask(todoTask, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" Storage.taskList.add(todoTask); //duke.task.Todo \u003c: duke.task.Task","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" //Print details in the console","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(Duke.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" %s\\n\", todoTask.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" Now you have %d task(s) in the list.\\n\", Storage.taskList.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(Duke.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"freddychenyouren2":45}},{"path":"src/main/java/duke/util/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.Duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.InvalidCommandException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" private static String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" enum Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" BYE, LIST, MARK, UNMARK, DELETE, DEADLINE, TODO, EVENT, UNKNOWN","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" public Parser(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" private void printHorizontalLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" private String getCommand (String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" return line.trim().split(\"\\\\s+\")[0].toUpperCase();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" public void parseInput(String userInput)","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" throws IOException, EmptyDescriptionException, InvalidCommandException {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" String firstWord \u003d getCommand(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" String[] words \u003d userInput.split(\"\\\\s+\"); // Split input by space, put into array","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" Command command; //Use enum","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" command \u003d Command.valueOf(firstWord);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" command \u003d Command.UNKNOWN;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" //A-Enum: Use switch-case instead of if-else for neater code","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" switch (command) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" case BYE:","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" ui.farewell();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" Duke.isFinished \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" case LIST:","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":" taskList.listAllTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" case MARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" int taskIndex \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" taskList.markTask(taskIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" case UNMARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" taskIndex \u003d Integer.parseInt(words[1]) - 1; //Same variable name taskIndex as above","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":" taskList.unmarkTask(taskIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"freddychenyouren2"},"content":" case DELETE:","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":" taskList.deleteTask(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"freddychenyouren2"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"freddychenyouren2"},"content":" Deadline.handleDeadlineTask(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"freddychenyouren2"},"content":" case TODO:","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"freddychenyouren2"},"content":" Todo.handleTodoTask(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"freddychenyouren2"},"content":" case EVENT:","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"freddychenyouren2"},"content":" Event.handleEventTask(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"freddychenyouren2"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"freddychenyouren2"},"content":" throw new InvalidCommandException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"freddychenyouren2"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"freddychenyouren2"},"content":" System.err.println(HORIZONTAL_LINE + \"\\n\" + e.toString() + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"freddychenyouren2"},"content":" } catch (EmptyDescriptionException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"freddychenyouren2"},"content":" e.printExceptionMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"freddychenyouren2"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"freddychenyouren2"},"content":" e.printExceptionMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"freddychenyouren2"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Please enter valid Integer index!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" You currently have %d tasks\", taskList.taskList.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"freddychenyouren2"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Very Invalid command! Please enter valid commands\");","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":95}},{"path":"src/main/java/duke/util/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.InvalidDateException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.OutputStreamWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" protected static String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" public static ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" Storage.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" taskList \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" * Save a Task into Hard Disk after it has been successfully inputted by user.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" * @param task the Task that is to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" * @param isAppend a Boolean to determine if we should add a new line in the saved text file.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" public static void saveTask(Task task, boolean isAppend) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" FileOutputStream outputStream \u003d new FileOutputStream(new File(filePath), isAppend);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" //Use a BufferedWriter","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(new OutputStreamWriter(outputStream));","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" String[] saved \u003d new String[5]; // Cannot be more than 5 separate parts. 5th part is only for Event","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" //saved[0]","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":" saved[0] \u003d \"D\";","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" saved[3] \u003d ((Deadline) task).getDueDate().toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" saved[0] \u003d \"E\";","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" saved[3] \u003d ((Event) task).getStartTime().toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" saved[4] \u003d ((Event) task).getEndTime().toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" //duke.task.Todo duke.task","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" saved[0] \u003d \"T\";","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" //saved[1] and saved[2]","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" saved[1] \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" saved[2] \u003d task.getDescription();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" if (isAppend) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" bufferedWriter.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" bufferedWriter.write(String.join(\" | \", saved));","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"freddychenyouren2"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"freddychenyouren2"},"content":" * Loads tasks saved previously from Hard Disk.","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException throws an IO Exception if the file is corrupted or invalid.","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"freddychenyouren2"},"content":" public void loadTasks() throws IOException, InvalidDateException {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"freddychenyouren2"},"content":" // Use FileInputStream and BufferedReader, opposite of saveTask()","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"freddychenyouren2"},"content":" // try-catch to check if file exists or if file is correct format","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"freddychenyouren2"},"content":" Path directory \u003d Path.of(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"freddychenyouren2"},"content":" if (!Files.exists(directory)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"System Message: Directory \u0027data\u0027 does not exist. Creating one...\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"freddychenyouren2"},"content":" \"You can view it under root directory after exiting the program this time.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"freddychenyouren2"},"content":" Files.createDirectories(directory); // Create the directory if it doesn\u0027t exist","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"System Message: Directory \u0027data\u0027 exists!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"freddychenyouren2"},"content":" Path file \u003d Path.of(\"./data/duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"freddychenyouren2"},"content":" if (!Files.exists(file)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"System Message: File \u0027duke.txt\u0027 does not exist. Creating one...\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"freddychenyouren2"},"content":" \"You can view it under \u0027data\u0027 directory after exiting the program this time.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"freddychenyouren2"},"content":" Files.createFile(file); // Create the file if it doesn\u0027t exist","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"System Message: File \u0027duke.txt\u0027 exists! Loading past data...\");","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"freddychenyouren2"},"content":" FileInputStream inputStream \u003d new FileInputStream(new File(filePath));","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"freddychenyouren2"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new InputStreamReader((inputStream)));","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"freddychenyouren2"},"content":" String currentLine;","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"freddychenyouren2"},"content":" //Recall delimiter \"|\" and get details of the tasks and add tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"freddychenyouren2"},"content":" while ((currentLine \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"freddychenyouren2"},"content":" if (TaskList.isValidTaskLine(currentLine)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"freddychenyouren2"},"content":" // Parse the line and create tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"freddychenyouren2"},"content":" String[] content \u003d currentLine.split(\" \\\\| \"); // System.out.printf(\"Content: %s\", content);","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"freddychenyouren2"},"content":" String taskDescription \u003d content[2]; // System.out.printf(\"Event details: %s\\n\", currentLine);","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"freddychenyouren2"},"content":" Task taskFromHardDisk;","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"freddychenyouren2"},"content":" // Now check which type of task it belongs to. Create the task and add task to taskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"freddychenyouren2"},"content":" switch(content[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"freddychenyouren2"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"freddychenyouren2"},"content":" if (!TaskList.isValidDate(content[3]) || !TaskList.isValidDate(content[4])) {","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\"Skipping line with invalid date: %s\\n\", currentLine);","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"freddychenyouren2"},"content":" taskFromHardDisk \u003d new Event(taskDescription, LocalDate.parse(content[3]), LocalDate.parse(content[4]));","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"freddychenyouren2"},"content":" checkCompletionStatus(taskFromHardDisk, content[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"freddychenyouren2"},"content":" taskList.add(taskFromHardDisk);","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"freddychenyouren2"},"content":" //Potential error for content[3]","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"freddychenyouren2"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"freddychenyouren2"},"content":" if (!TaskList.isValidDate(content[3])) {","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\"Skipping line with invalid date: %s\\n\", currentLine);","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"freddychenyouren2"},"content":" taskFromHardDisk \u003d new Deadline(taskDescription, LocalDate.parse(content[3]));","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"freddychenyouren2"},"content":" checkCompletionStatus(taskFromHardDisk, content[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"freddychenyouren2"},"content":" taskList.add(taskFromHardDisk);","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"freddychenyouren2"},"content":" //Potential error for content[3]","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"freddychenyouren2"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"freddychenyouren2"},"content":" taskFromHardDisk \u003d new Todo(taskDescription);","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"freddychenyouren2"},"content":" checkCompletionStatus(taskFromHardDisk, content[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"freddychenyouren2"},"content":" taskList.add(taskFromHardDisk);","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\"Skipping corrupted line: %s\\n\", currentLine);","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"freddychenyouren2"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"freddychenyouren2"},"content":" // Handle duke.exception while reading the file","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\"Error while reading file: %s\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"freddychenyouren2"},"content":" bufferedReader.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"freddychenyouren2"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"freddychenyouren2"},"content":" // Handle duke.exception while creating directory or file","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\"Error while creating directory: %s\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"freddychenyouren2"},"content":" * Checks whether a Task has already been done.","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"freddychenyouren2"},"content":" * @param task The task whose completion status is to be checked.","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"freddychenyouren2"},"content":" * @param completionStatus The completion status read from memory. 0 means not done, 1 means done.","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"freddychenyouren2"},"content":" protected void checkCompletionStatus(Task task, String completionStatus) {","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"freddychenyouren2"},"content":" if (completionStatus.equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"freddychenyouren2"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"freddychenyouren2"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"freddychenyouren2"},"content":" * Clears lines of task in Hard Disk.","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException throws IO Exception if file format is invalid or corrupted.","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"freddychenyouren2"},"content":" protected void clearAllData() throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"freddychenyouren2"},"content":" FileOutputStream outputStream \u003d new FileOutputStream(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"freddychenyouren2"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(new OutputStreamWriter((outputStream)));","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"freddychenyouren2"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"freddychenyouren2"},"content":" * Updates all lines of task status in Hard Disk.","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException throws IO Exception if file format is invalid or corrupted.","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"freddychenyouren2"},"content":" protected void updateData() throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"freddychenyouren2"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"freddychenyouren2"},"content":" saveTask(taskList.get(i), i !\u003d 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":182}},{"path":"src/main/java/duke/util/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import java.text.ParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" protected Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" protected ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" protected static String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" public TaskList(Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" this.taskList \u003d storage.taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" protected void printHorizontalLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" * List out all tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" protected void listAllTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" No tasks for now!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Your current task list:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" %d.%s\\n\", i + 1, taskList.get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":" * Delete a Task when given valid task index.","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" public void deleteTask(String deleteInput)","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" throws EmptyDescriptionException, IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" String[] words \u003d deleteInput.split(\"\\\\s+\"); // Split input by space, put into array","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" //Check for valid length","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" if (words.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" throw new EmptyDescriptionException(\"Please provide the ask index to be deleted.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" //Try parsing into integer to get deleteIndex","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" int deleteIndex \u003d Integer.parseInt(words[1]) - 1; // Potential Error cannot parse to integer","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" if (deleteIndex \u003e\u003d 0 \u0026\u0026 deleteIndex \u003c taskList.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" Task removedTask \u003d taskList.remove(deleteIndex); //Actual ask can be todo, deadline, or event","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Noted. I\u0027ve removed this Task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" %s\\n\", removedTask.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" Now you have %d task(s) in the list.\\n\", taskList.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" OOPS!!! The task index is invalid.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" You currently have %d task(s).\\n\", taskList.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"freddychenyouren2"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" OOPS!!! Please enter the index after \u0027delete\u0027 command.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" For example: delete 5\");","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" This will remove Task 5 from your Task List, assuming you have at least 5 tasks.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"freddychenyouren2"},"content":" storage.clearAllData();","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"freddychenyouren2"},"content":" storage.updateData();","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"freddychenyouren2"},"content":" * Mark a given Task as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"freddychenyouren2"},"content":" * @param taskIndex the index of the Task to be marked as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"freddychenyouren2"},"content":" protected void markTask(int taskIndex) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"freddychenyouren2"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" Invalid Index of Task. You currently have %d Task(s)\\n\", taskList.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"freddychenyouren2"},"content":" Task task \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"freddychenyouren2"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Nice! I\u0027ve marked this Task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" [%s] %s\\n\", task.getStatusIcon(), task.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"freddychenyouren2"},"content":" storage.clearAllData();","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"freddychenyouren2"},"content":" storage.updateData();","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"freddychenyouren2"},"content":" * Function to mark a given Task as NOT done.","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"freddychenyouren2"},"content":" * @param taskIndex the index of the Task to be marked as not done yet.","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"freddychenyouren2"},"content":" protected void unmarkTask(int taskIndex) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"freddychenyouren2"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" Invalid Index of task. You currently have %d Task(s)\\n\", taskList.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"freddychenyouren2"},"content":" Task task \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"freddychenyouren2"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" OK, I\u0027ve marked this Task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" [%s] %s\\n\", task.getStatusIcon(), task.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"freddychenyouren2"},"content":" storage.clearAllData();","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"freddychenyouren2"},"content":" storage.updateData();","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"freddychenyouren2"},"content":" protected static boolean isValidTaskLine(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"freddychenyouren2"},"content":" String[] tokens \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"freddychenyouren2"},"content":" if (tokens.length \u003e\u003d 3 \u0026\u0026 tokens.length \u003c\u003d 5) { // Valid number of segments: 3-5 (Todo-Event)","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"freddychenyouren2"},"content":" String taskType \u003d tokens[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"freddychenyouren2"},"content":" String completionStatus \u003d tokens[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"freddychenyouren2"},"content":" String description \u003d tokens[2].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"freddychenyouren2"},"content":" return taskType.matches(\"[TDE]\") \u0026\u0026 completionStatus.matches(\"[01]\") \u0026\u0026 !description.isEmpty(); // Line matches expected format","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"freddychenyouren2"},"content":" return false; // Line is not valid","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"freddychenyouren2"},"content":" public static boolean isValidDate(String testDate) {","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"freddychenyouren2"},"content":" SimpleDateFormat simpleDate \u003d new SimpleDateFormat(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"freddychenyouren2"},"content":" simpleDate.setLenient(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"freddychenyouren2"},"content":" simpleDate.parse(testDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"freddychenyouren2"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"freddychenyouren2"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"freddychenyouren2"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":145}},{"path":"src/main/java/duke/util/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"// Test merge branch for A-Packages","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":" public String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" protected void printHorizontalLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" * Function to greet the User.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" public void greet() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"\\nStarting SeeWhyAre Bot...\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Hello! I\u0027m SeeWhyAre Bot!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" public String getUserInput() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"Enter your Command: \");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" * Function to say goodbye to the User and end the program.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" protected void farewell() {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" You are closing the SeeWhyAre chat bot.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Bye bye. Please use me again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":44}},{"path":"src/test/java/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"public class DukeTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"freddychenyouren2":2}},{"path":"src/test/java/duke/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" void testGetDueDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" Deadline deadline \u003d new Deadline(\"test deadline getting date\", LocalDate.parse(\"2023-08-30\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(deadline.getDueDate(), LocalDate.parse(\"2023-08-30\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" void testToString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" Deadline deadline \u003d new Deadline(\"test deadline\", LocalDate.parse(\"2023-08-30\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(deadline.toString(), \"[D][ ] test deadline (by: Aug 30 2023)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":"// @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":"// void handleDeadlineTask_excessInputs_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":"//","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":"// }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":"// @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":"// void handleDeadlineTask_invalidDateInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":"//","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":"// }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"freddychenyouren2":30}},{"path":"src/test/java/duke/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"public class EventTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" void testGetStartTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" Event event \u003d new Event(\"test event getting start time\", LocalDate.parse(\"2023-08-30\"), LocalDate.parse(\"2023-08-31\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(event.getStartTime(), LocalDate.parse(\"2023-08-30\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" void testGetEndTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" Event event \u003d new Event(\"test event getting start time\", LocalDate.parse(\"2023-08-30\"), LocalDate.parse(\"2023-08-31\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(event.getEndTime(), LocalDate.parse(\"2023-08-31\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" void testToString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" Event event \u003d new Event(\"test event\", LocalDate.parse(\"2023-08-30\"), LocalDate.parse(\"2023-08-31\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(event.toString(), \"[E][ ] test event (from: Aug 30 2023 to: Aug 31 2023)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":"// @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":"// void handleEventTask_excessInputs_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":"//","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":"// }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":"// @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":"// void handleEventTask_invalidDateInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":"//","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":"// }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"freddychenyouren2":36}},{"path":"src/test/java/duke/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"public class TaskTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" Task testTask \u003d new Task(\"Task Description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" void testGetDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(testTask.getDescription(), \"Task Description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" void testToString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" Task task \u003d new Task(\"To test description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(task.toString(), \"[ ] To test description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" void testGetStatusIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(testTask.getStatusIcon(), \" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" testTask.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(testTask.getStatusIcon(), \"X\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" testTask.markAsNotDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(testTask.getStatusIcon(), \" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" void markAsDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" Task task \u003d new Task(\"Second Task Description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" assertFalse(task.isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" assertTrue(task.isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"freddychenyouren2":40}},{"path":"src/test/java/duke/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" void testToString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" Todo todo \u003d new Todo(\"test todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(todo.getDescription(), \"test todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"freddychenyouren2":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"deadline URGENT TASK! /by Saturday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"event NUSCO Welcome Tea /from 11am /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"unmark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"deadline erroneous deadline by now","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"event wrong event input from 6pm to 8pm","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"invalid input","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"todo finish CS2103T ip ASAP BRUH","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":"delete non-Number","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":"delete 1234.98765","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":"delete 2","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":"list","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"freddychenyouren2":18}},{"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":"freddychenyouren2"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT, use -Dfile.encoding\u003dUTF-8 to account for the OOPS icon","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"-":19,"freddychenyouren2":2}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":22,"freddychenyouren2":2}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"freddychenyouren2":1}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"D | 0 | test dates correct deadline | 2023-10-21 | null","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"E | 1 | correct event timings | 2222-11-11 | 2222-11-13","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"T | 1 | again todo | null | null","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"T | 0 | Packaged stuff | null | null","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"D | 1 | Dead Package bruh | 1111-11-11 | null","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"T | 0 | yes again | null | null","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"T | 1 | From Gradle | null | null","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"T | 0 | Immediate Updte?! | null | null","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"T | 0 | feimkds | null | null","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"freddychenyouren2":9}},{"path":"src/main/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"T | 1 | new new new todo | null | null","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"D | 0 | test dates correct deadline | 2023-10-21 | null","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"E | 0 | correct event timings | 2222-11-11 | 2222-11-13","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"T | 0 | yes todo | null | null","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"E | 1 | lalalalla | 2020-10-10 | 2019-02-01","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":5}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.InvalidCommandException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.InvalidDateException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" * Represents the bot SeeWhyAre.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" * \u003cp\u003eCS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" * Individual Project","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" * SeeWhyAre Bot","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" * 31 Aug 2023","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" // HORIZONTAL_LINE","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" public static String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" private static Parser parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" private static Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" private static TaskList listOfTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" private static Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" public static boolean isFinished \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" * Constructs a new instance of the chat bot.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" * @param filePath The file path for storing and loading tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" listOfTasks \u003d new TaskList(storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" parser \u003d new Parser(listOfTasks, ui);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":" storage.loadTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" start();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" System.err.println(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" } catch (InvalidDateException | InvalidCommandException | EmptyDescriptionException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" * Starts the SeeWhyAre bot.","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException if there are issues with file handling.","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":" * @throws InvalidCommandException if there are invalid commands entered by users.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" * @throws EmptyDescriptionException if users attempt to create tasks with empty descriptions.","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":" private static void start() throws IOException,","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" InvalidCommandException, EmptyDescriptionException {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"freddychenyouren2"},"content":" ui.greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":" while (!isFinished) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":" parser.parseInput(ui.getUserInput());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"freddychenyouren2"},"content":" * Driver method for CLI version of Duke.","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"freddychenyouren2"},"content":" * @param args not used.","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"freddychenyouren2"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"freddychenyouren2"},"content":" new Duke(\"./data/duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":79,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"-":2,"freddychenyouren2":77}},{"path":"src/main/java/duke/exception/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.exception;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":" * Represents an Empty Description Exception","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":" * \u003cp\u003eCS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":" * Individual Project","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":" * SeeWhyAre Bot","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" * 31 Aug 2023","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" protected static String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" public EmptyDescriptionException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" * Prints the exception message, giving us the reason for the error.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" public void printExceptionMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" OOPS!!! \" + this.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"freddychenyouren2":28}},{"path":"src/main/java/duke/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.exception;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":" * Represents an Invalid Command Exception","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":" * \u003cp\u003eCS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" * Individual Project","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" * SeeWhyAre Bot","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" * 31 Aug 2023","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" protected static String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" * Prints the exception message, giving us the reason for the error.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" * Includes the list of commands that the current version of SeeWhyAre bot supports.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" public void printExceptionMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" OOPS!!! \" + this.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Please input valid commands. Currently SeeWhyAre bot supports:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" for (Parser.Command c : Parser.Command.values()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" \" + c);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":34}},{"path":"src/main/java/duke/exception/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.exception;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":" * Represents an Invalid Date Exception","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":" * \u003cp\u003eCS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":" * Individual Project","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":" * SeeWhyAre Bot","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" * 31 Aug 2023","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"public class InvalidDateException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" * Overrides the Exception Object\u0027s toString method and contains an error message.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" * @return The error messsage String with a correction of Date input format.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" return \" Yoho! The date provided is invalid. \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" \"Ensure all dates are of the format YYYY-MM-DD. Thanks!\";","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":23}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.Duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.InvalidDateException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" * Represents a Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" * \u003cp\u003eCS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" * Individual Project","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" * SeeWhyAre Bot","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" * 31 Aug 2023","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" private LocalDate by;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" * Constructs a Deadline task with the given description and deadline date.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" * @param by The deadline date.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" private LocalDate getDeadlineDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" return this.by;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" getDeadlineDate().format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" public LocalDate getDueDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" return this.by;","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" * Handles the creation of a Deadline task based on user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" * @param userInput A valid user input for a Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException If there is an error with the storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" public static void handleDeadlineTask(String userInput) throws IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" String[] details \u003d userInput.split(\"/by\");","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" //details[0] contains \"deadline\" plus duke.task description, need to erase \"deadline\". details[1] contains deadline timing","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":" if (details.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" String taskDescription \u003d details[0].trim().replaceFirst(\"deadline\", \"\").trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" String deadline \u003d details[1].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" //Check if input date is valid.","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":" if (TaskList.isValidDate(deadline)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":" Deadline deadlineTask \u003d new Deadline(taskDescription, LocalDate.parse(deadline));","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"freddychenyouren2"},"content":" Storage.saveTask(deadlineTask, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"freddychenyouren2"},"content":" Storage.listOfTasks.add(deadlineTask); //duke.task.Deadline \u003c: duke.task.Task","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"freddychenyouren2"},"content":" //Print details in the console","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(Duke.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Got it. I\u0027ve added this Task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" %s\\n\", deadlineTask.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" Now you have %d task(s) in the list.\\n\", Storage.listOfTasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(Duke.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"freddychenyouren2"},"content":" throw new InvalidDateException();","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"freddychenyouren2"},"content":" } catch (InvalidDateException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(Duke.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Invalid Deadline Task input.\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"freddychenyouren2"},"content":" + \" Please input in the following format:\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"freddychenyouren2"},"content":" + \" deadline \u003cTask Description\u003e /by \u003cdeadline timing\u003e\");","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(Duke.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"freddychenyouren2":91}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.InvalidDateException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" * Represents an Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" * \u003cp\u003eCS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" * Individual Project","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" * SeeWhyAre Bot","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" * 31 Aug 2023","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" protected LocalDate startTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" protected LocalDate endTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" protected static String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" * Constructs a Event task with the given description, start date and end date.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" * @param description The description of the Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" * @param startTime The starting date of the Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" * @param endTime The end date of the Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" public Event(String description, LocalDate startTime, LocalDate endTime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" protected static void printHorizontalLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" getStartTime().format(DateTimeFormatter.ofPattern(\"MMM d yyy\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" getEndTime().format(DateTimeFormatter.ofPattern(\"MMM d yyy\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" public LocalDate getStartTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" return this.startTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" public LocalDate getEndTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" return this.endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" * Handles the creation of a Deadline task based on user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":" * @param userInput A valid user input for a Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException If there is an error with the storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":" public static void handleEventTask(String userInput) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":" String[] details \u003d userInput.split(\"/from | /to\");","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"freddychenyouren2"},"content":" //details[0] contains \"deadline\" plus duke.task description, need to erase \"deadline\". details[1] contains String deadline timing","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"freddychenyouren2"},"content":" if (details.length \u003d\u003d 3) {","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"freddychenyouren2"},"content":" String taskDescription \u003d details[0].trim().replaceFirst(\"event\", \"\").trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"freddychenyouren2"},"content":" String startTime \u003d details[1].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"freddychenyouren2"},"content":" String endTime \u003d details[2].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"freddychenyouren2"},"content":" //Check if input date is valid.","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"freddychenyouren2"},"content":" if (TaskList.isValidDate(startTime)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"freddychenyouren2"},"content":" Event eventTask \u003d new Event(taskDescription,","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"freddychenyouren2"},"content":" LocalDate.parse(startTime),","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"freddychenyouren2"},"content":" LocalDate.parse(endTime));","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"freddychenyouren2"},"content":" Storage.saveTask(eventTask, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"freddychenyouren2"},"content":" Storage.listOfTasks.add(eventTask); //duke.task.Deadline \u003c: duke.task.Task","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"freddychenyouren2"},"content":" //Print details in the console","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" %s\\n\", eventTask.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" Now you have %d task(s) in the list.\\n\", Storage.listOfTasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"freddychenyouren2"},"content":" throw new InvalidDateException();","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"freddychenyouren2"},"content":" } catch (InvalidDateException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Invalid Event Task input.\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"freddychenyouren2"},"content":" + \" Please input in the following format:\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"freddychenyouren2"},"content":" + \" event \u003cTask Description\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\");","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"freddychenyouren2":104}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":" * Represents a Task in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":" * \u003cp\u003eCS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":" * Individual Project","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":" * SeeWhyAre Bot","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" * 31 Aug 2023","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" public String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" public boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" * Constructs a task with the given description.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" return this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" * Gets the status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" * @return True if the task is done, false otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" public boolean getStatus() {","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" return this.isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" * @return A string with the status icon and description of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.getDescription());","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" * Gets the status icon of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" * @return The status icon as a String (\"X\" if done, \" \" if not done).","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"freddychenyouren2"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"freddychenyouren2":66}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"//test","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.Duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" * Represents a Todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" * \u003cp\u003eCS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" * Individual Project","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" * SeeWhyAre Bot","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" * 31 Aug 2023","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" * Constructs a todo task with the given description.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" * @param description The description of the todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" * Handles the creation of a todo task based on user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" * @param userInput A valid user input for a todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" * @throws EmptyDescriptionException If the description of the todo task is empty.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException If there is an issue with saving the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" public static void handleTodoTask(String userInput) throws EmptyDescriptionException, IOException {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" // use \\u2639 or U+2639 to insert the sad face icon","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" String taskDescription \u003d userInput.trim().replaceFirst(\"todo\", \"\").trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" throw new EmptyDescriptionException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" Todo todoTask \u003d new Todo(taskDescription);","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" Storage.saveTask(todoTask, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" Storage.listOfTasks.add(todoTask); //duke.task.Todo \u003c: duke.task.Task","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":" //Print details in the console","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(Duke.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" %s\\n\", todoTask.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" Now you have %d task(s) in the list.\\n\", Storage.listOfTasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(Duke.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"freddychenyouren2":62}},{"path":"src/main/java/duke/util/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.Duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.InvalidCommandException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" * Represents a Parser that parses user input for SeeWhyAre bot to perform corresponding actions.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" * \u003cp\u003eCS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" * Individual Project","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" * SeeWhyAre Bot","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" * 31 Aug 2023","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" private static String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" public enum Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" BYE, LIST, MARK, UNMARK, DELETE, FIND, DEADLINE, TODO, EVENT, UNKNOWN","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" * Constructs a Parser with the specified task list and CLI user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" * @param taskList The task list to work with.","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" * @param ui The CLI user interface to display messages.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" public Parser(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" private void printHorizontalLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" * Retrieves the command keyword from the user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" * The command keyword is the first word from the user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" * @param line The user input to be parsed.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" * @return The command keyword extracted from the user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" private String getCommand(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":" return line.trim().split(\"\\\\s+\")[0].toUpperCase();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" * Parses user input and performs the corresponding action.","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" * @param userInput The user\u0027s input to be parsed.","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException If there is an issue with I/O operations.","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":" * @throws EmptyDescriptionException If a description is required but not provided.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" * @throws InvalidCommandException If an invalid command is entered.","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":" public void parseInput(String userInput)","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":" throws IOException, EmptyDescriptionException, InvalidCommandException {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"freddychenyouren2"},"content":" String firstWord \u003d getCommand(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"freddychenyouren2"},"content":" String[] words \u003d userInput.split(\"\\\\s+\"); // Split input by space, put into array","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"freddychenyouren2"},"content":" Command command; //Use enum","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"freddychenyouren2"},"content":" command \u003d Command.valueOf(firstWord);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"freddychenyouren2"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"freddychenyouren2"},"content":" command \u003d Command.UNKNOWN;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"freddychenyouren2"},"content":" //A-Enum: Use switch-case instead of if-else for neater code","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"freddychenyouren2"},"content":" switch (command) {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"freddychenyouren2"},"content":" case BYE:","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"freddychenyouren2"},"content":" ui.farewell();","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"freddychenyouren2"},"content":" Duke.isFinished \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"freddychenyouren2"},"content":" case LIST:","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"freddychenyouren2"},"content":" taskList.listAllTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"freddychenyouren2"},"content":" case MARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"freddychenyouren2"},"content":" int taskIndex \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"freddychenyouren2"},"content":" taskList.markTask(taskIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"freddychenyouren2"},"content":" case UNMARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"freddychenyouren2"},"content":" taskIndex \u003d Integer.parseInt(words[1]) - 1; //Same variable name taskIndex as above","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"freddychenyouren2"},"content":" taskList.unmarkTask(taskIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"freddychenyouren2"},"content":" case DELETE:","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"freddychenyouren2"},"content":" taskList.deleteTask(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"freddychenyouren2"},"content":" case FIND:","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"freddychenyouren2"},"content":" String keyword \u003d userInput.trim().replaceFirst(\"find\", \"\").trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"freddychenyouren2"},"content":" taskList.findTask(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"freddychenyouren2"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"freddychenyouren2"},"content":" Deadline.handleDeadlineTask(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"freddychenyouren2"},"content":" case TODO:","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"freddychenyouren2"},"content":" Todo.handleTodoTask(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"freddychenyouren2"},"content":" case EVENT:","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"freddychenyouren2"},"content":" Event.handleEventTask(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"freddychenyouren2"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"freddychenyouren2"},"content":" throw new InvalidCommandException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"freddychenyouren2"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"freddychenyouren2"},"content":" System.err.println(HORIZONTAL_LINE + \"\\n\" + e.toString() + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"freddychenyouren2"},"content":" } catch (EmptyDescriptionException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"freddychenyouren2"},"content":" e.printExceptionMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"freddychenyouren2"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"freddychenyouren2"},"content":" e.printExceptionMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"freddychenyouren2"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Please enter valid Integer index!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" You currently have %d tasks\", taskList.listOfTasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"freddychenyouren2"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Very Invalid command! Please enter valid commands\");","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":129}},{"path":"src/main/java/duke/util/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.InvalidDateException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.OutputStreamWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" * Represents a Storage to store the list of tasks of a user into a file in hard disk.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" * \u003cp\u003eCS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" * Individual Project","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" * SeeWhyAre Bot","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" * 31 Aug 2023","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" protected static String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" public static ArrayList\u003cTask\u003e listOfTasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" * Constructs a Storage with the specified file path","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" * @param filePath the file path to create a file to store user data.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" Storage.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" listOfTasks \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" * Saves a Task into Hard Disk after it has been successfully inputted by user.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" * @param task the Task that is to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" * @param isAppend a Boolean to determine if we should add a new line in the saved text file.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException if there are errors while saving the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" public static void saveTask(Task task, boolean isAppend) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" FileOutputStream outputStream \u003d new FileOutputStream(new File(filePath), isAppend);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" //Use a BufferedWriter","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(new OutputStreamWriter(outputStream));","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" String[] saved \u003d new String[5]; // Cannot be more than 5 separate parts. 5th part is only for Event","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" //saved[0]","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":" saved[0] \u003d \"D\";","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" saved[3] \u003d ((Deadline) task).getDueDate().toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"freddychenyouren2"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":" saved[0] \u003d \"E\";","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":" saved[3] \u003d ((Event) task).getStartTime().toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"freddychenyouren2"},"content":" saved[4] \u003d ((Event) task).getEndTime().toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"freddychenyouren2"},"content":" //duke.task.Todo duke.task","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"freddychenyouren2"},"content":" saved[0] \u003d \"T\";","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"freddychenyouren2"},"content":" //saved[1] and saved[2]","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"freddychenyouren2"},"content":" saved[1] \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"freddychenyouren2"},"content":" saved[2] \u003d task.getDescription();","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"freddychenyouren2"},"content":" if (isAppend) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"freddychenyouren2"},"content":" bufferedWriter.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"freddychenyouren2"},"content":" bufferedWriter.write(String.join(\" | \", saved));","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"freddychenyouren2"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"freddychenyouren2"},"content":" * Loads tasks saved previously from Hard Disk.","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException if the file is corrupted or invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"freddychenyouren2"},"content":" * @throws InvalidDateException if the date format or content in the file is corrupted or invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"freddychenyouren2"},"content":" public void loadTasks() throws IOException, InvalidDateException {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"freddychenyouren2"},"content":" // Use FileInputStream and BufferedReader, opposite of saveTask()","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"freddychenyouren2"},"content":" // try-catch to check if file exists or if file is correct format","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"freddychenyouren2"},"content":" Path directory \u003d Path.of(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"freddychenyouren2"},"content":" if (!Files.exists(directory)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"System Message: Directory \u0027data\u0027 does not exist. Creating one...\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"freddychenyouren2"},"content":" \"You can view it under root directory after exiting the program this time.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"freddychenyouren2"},"content":" Files.createDirectories(directory); // Create the directory if it doesn\u0027t exist","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"System Message: Directory \u0027data\u0027 exists!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"freddychenyouren2"},"content":" Path file \u003d Path.of(\"./data/duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"freddychenyouren2"},"content":" if (!Files.exists(file)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"System Message: File \u0027duke.txt\u0027 does not exist. Creating one...\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"freddychenyouren2"},"content":" \"You can view it under \u0027data\u0027 directory after exiting the program this time.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"freddychenyouren2"},"content":" Files.createFile(file); // Create the file if it doesn\u0027t exist","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"System Message: File \u0027duke.txt\u0027 exists! Loading past data...\");","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"freddychenyouren2"},"content":" FileInputStream inputStream \u003d new FileInputStream(new File(filePath));","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"freddychenyouren2"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new InputStreamReader((inputStream)));","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"freddychenyouren2"},"content":" String currentLine;","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"freddychenyouren2"},"content":" //Recall delimiter \"|\" and get details of the tasks and add tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"freddychenyouren2"},"content":" while ((currentLine \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"freddychenyouren2"},"content":" if (TaskList.isValidTaskLine(currentLine)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"freddychenyouren2"},"content":" // Parse the line and create tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"freddychenyouren2"},"content":" String[] content \u003d currentLine.split(\" \\\\| \"); // System.out.printf(\"Content: %s\", content);","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"freddychenyouren2"},"content":" String taskDescription \u003d content[2]; // System.out.printf(\"Event details: %s\\n\", currentLine);","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"freddychenyouren2"},"content":" Task taskFromHardDisk;","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"freddychenyouren2"},"content":" // Now check which type of task it belongs to. Create the task and add task to taskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"freddychenyouren2"},"content":" switch(content[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"freddychenyouren2"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"freddychenyouren2"},"content":" if (!TaskList.isValidDate(content[3]) || !TaskList.isValidDate(content[4])) {","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\"Skipping line with invalid date: %s\\n\", currentLine);","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"freddychenyouren2"},"content":" taskFromHardDisk \u003d new Event(taskDescription, LocalDate.parse(content[3]), LocalDate.parse(content[4]));","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"freddychenyouren2"},"content":" checkCompletionStatus(taskFromHardDisk, content[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"freddychenyouren2"},"content":" listOfTasks.add(taskFromHardDisk);","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"freddychenyouren2"},"content":" //Potential error for content[3]","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"freddychenyouren2"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"freddychenyouren2"},"content":" if (!TaskList.isValidDate(content[3])) {","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\"Skipping line with invalid date: %s\\n\", currentLine);","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"freddychenyouren2"},"content":" taskFromHardDisk \u003d new Deadline(taskDescription, LocalDate.parse(content[3]));","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"freddychenyouren2"},"content":" checkCompletionStatus(taskFromHardDisk, content[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"freddychenyouren2"},"content":" listOfTasks.add(taskFromHardDisk);","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"freddychenyouren2"},"content":" //Potential error for content[3]","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"freddychenyouren2"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"freddychenyouren2"},"content":" taskFromHardDisk \u003d new Todo(taskDescription);","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"freddychenyouren2"},"content":" checkCompletionStatus(taskFromHardDisk, content[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"freddychenyouren2"},"content":" listOfTasks.add(taskFromHardDisk);","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"freddychenyouren2"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\"Skipping corrupted line: %s\\n\", currentLine);","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"freddychenyouren2"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"freddychenyouren2"},"content":" // Handle duke.exception while reading the file","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\"Error while reading file: %s\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"freddychenyouren2"},"content":" bufferedReader.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"freddychenyouren2"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"freddychenyouren2"},"content":" // Handle duke.exception while creating directory or file","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\"Error while creating directory: %s\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"freddychenyouren2"},"content":" * Checks whether a Task has already been done.","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"freddychenyouren2"},"content":" * @param task The task whose completion status is to be checked.","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"freddychenyouren2"},"content":" * @param completionStatus The completion status read from memory. 0 means not done, 1 means done.","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"freddychenyouren2"},"content":" protected void checkCompletionStatus(Task task, String completionStatus) {","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"freddychenyouren2"},"content":" if (completionStatus.equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"freddychenyouren2"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"freddychenyouren2"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"freddychenyouren2"},"content":" * Clears lines of task in Hard Disk.","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException throws IO Exception if file format is invalid or corrupted.","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"freddychenyouren2"},"content":" protected void clearAllData() throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"freddychenyouren2"},"content":" FileOutputStream outputStream \u003d new FileOutputStream(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"freddychenyouren2"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(new OutputStreamWriter((outputStream)));","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"freddychenyouren2"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"freddychenyouren2"},"content":" * Updates all lines of task status in Hard Disk.","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException throws IO Exception if file format is invalid or corrupted.","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"freddychenyouren2"},"content":" protected void updateData() throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":200,"author":{"gitId":"freddychenyouren2"},"content":" for (int i \u003d 0; i \u003c listOfTasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"freddychenyouren2"},"content":" saveTask(listOfTasks.get(i), i !\u003d 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":203,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":204,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":204}},{"path":"src/main/java/duke/util/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import java.text.ParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" * Represents a Task List which is just a list of Tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" * \u003cp\u003eCS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" * Individual Project","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" * SeeWhyAre Bot","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" * 31 Aug 2023","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" protected Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" protected ArrayList\u003cTask\u003e listOfTasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" protected static String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" * Constructs a TaskList with the given Storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" * @param storage the storage from which the list of tasks is to be created.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" public TaskList(Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" this.listOfTasks \u003d storage.listOfTasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" protected void printHorizontalLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" * List out all tasks available for the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" protected void listAllTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" if (listOfTasks.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" No tasks for now!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Your current task list:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" for (int i \u003d 0; i \u003c listOfTasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" %d.%s\\n\", i + 1, listOfTasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":" * Delete a Task when given valid task index.","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" public void deleteTask(String deleteInput)","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":" throws EmptyDescriptionException, IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":" String[] words \u003d deleteInput.split(\"\\\\s+\"); // Split input by space, put into array","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"freddychenyouren2"},"content":" //Check for valid length","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"freddychenyouren2"},"content":" if (words.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"freddychenyouren2"},"content":" throw new EmptyDescriptionException(\"Please provide the ask index to be deleted.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"freddychenyouren2"},"content":" //Try parsing into integer to get deleteIndex","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"freddychenyouren2"},"content":" int deleteIndex \u003d Integer.parseInt(words[1]) - 1; // Potential Error cannot parse to integer","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"freddychenyouren2"},"content":" if (deleteIndex \u003e\u003d 0 \u0026\u0026 deleteIndex \u003c listOfTasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"freddychenyouren2"},"content":" Task removedTask \u003d listOfTasks.remove(deleteIndex); //Actual ask can be todo, deadline, or event","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Noted. I\u0027ve removed this Task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" %s\\n\", removedTask.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" Now you have %d task(s) in the list.\\n\", listOfTasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" OOPS!!! The task index is invalid.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" You currently have %d task(s).\\n\", listOfTasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"freddychenyouren2"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" OOPS!!! Please enter the index after \u0027delete\u0027 command.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" For example: delete 5\");","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" This will remove Task 5 from your Task List, assuming you have at least 5 tasks.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"freddychenyouren2"},"content":" storage.clearAllData();","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"freddychenyouren2"},"content":" storage.updateData();","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"freddychenyouren2"},"content":" * Marks a given Task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"freddychenyouren2"},"content":" * Updates the list of tasks in the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"freddychenyouren2"},"content":" * Prints out an error message if index of the task given is out of range or invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"freddychenyouren2"},"content":" * @param taskIndex the index of the Task to be marked as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException if there is an issue with updating the data in the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"freddychenyouren2"},"content":" protected void markTask(int taskIndex) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"freddychenyouren2"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d listOfTasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" Invalid Index of Task. You currently have %d Task(s)\\n\", listOfTasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"freddychenyouren2"},"content":" Task task \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"freddychenyouren2"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Nice! I\u0027ve marked this Task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" [%s] %s\\n\", task.getStatusIcon(), task.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"freddychenyouren2"},"content":" storage.clearAllData();","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"freddychenyouren2"},"content":" storage.updateData();","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"freddychenyouren2"},"content":" * Marks a given Task as NOT done.","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"freddychenyouren2"},"content":" * Updates the list of tasks in the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"freddychenyouren2"},"content":" * Prints out an error message if index of the task given is out of range or invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"freddychenyouren2"},"content":" * @param taskIndex the index of the Task to be marked as not done yet.","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"freddychenyouren2"},"content":" * @throws IOException if there is an issue with updating the data in the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"freddychenyouren2"},"content":" protected void unmarkTask(int taskIndex) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"freddychenyouren2"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d listOfTasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" Invalid Index of task. You currently have %d Task(s)\\n\", listOfTasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"freddychenyouren2"},"content":" Task task \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"freddychenyouren2"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" OK, I\u0027ve marked this Task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"freddychenyouren2"},"content":" System.out.printf(\" [%s] %s\\n\", task.getStatusIcon(), task.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"freddychenyouren2"},"content":" storage.clearAllData();","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"freddychenyouren2"},"content":" storage.updateData();","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"freddychenyouren2"},"content":" * Checks if the line representing task details saved in memory is valid.","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"freddychenyouren2"},"content":" * This is used when we are loading the list of tasks from user\u0027s past data.","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"freddychenyouren2"},"content":" * @param line The String representing one task that we are checking.","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"freddychenyouren2"},"content":" * @return True if this line is a valid Task, False otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"freddychenyouren2"},"content":" protected static boolean isValidTaskLine(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"freddychenyouren2"},"content":" String[] tokens \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"freddychenyouren2"},"content":" if (tokens.length \u003e\u003d 3 \u0026\u0026 tokens.length \u003c\u003d 5) { // Valid number of segments: 3-5 (Todo-Event)","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"freddychenyouren2"},"content":" String taskType \u003d tokens[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"freddychenyouren2"},"content":" String completionStatus \u003d tokens[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"freddychenyouren2"},"content":" String description \u003d tokens[2].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"freddychenyouren2"},"content":" return taskType.matches(\"[TDE]\") \u0026\u0026 completionStatus.matches(\"[01]\") \u0026\u0026 !description.isEmpty(); // Line matches expected format","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"freddychenyouren2"},"content":" return false; // Line is not valid","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"freddychenyouren2"},"content":" * Checks if the date provided is a valid date and in the correct date format.","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"freddychenyouren2"},"content":" * This is used during task creation and task loading from storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"freddychenyouren2"},"content":" * @param testDate The Date from a task that we are checking","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"freddychenyouren2"},"content":" * @return True if this Date is a valid Date with the correct date Format \"yyyy-MM-dd\", False otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"freddychenyouren2"},"content":" public static boolean isValidDate(String testDate) {","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"freddychenyouren2"},"content":" SimpleDateFormat simpleDate \u003d new SimpleDateFormat(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"freddychenyouren2"},"content":" simpleDate.setLenient(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"freddychenyouren2"},"content":" simpleDate.parse(testDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"freddychenyouren2"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"freddychenyouren2"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"freddychenyouren2"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"freddychenyouren2"},"content":" // Find task","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"freddychenyouren2"},"content":" // Get keyword from user. Use StringBuilder: use contains(), for loop all available tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"freddychenyouren2"},"content":" * Finds all tasks that contain a given keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"freddychenyouren2"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"freddychenyouren2"},"content":" * @param matchingKeyword The keyword given by the user to find all tasks containing it.","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"freddychenyouren2"},"content":" protected void findTask(String matchingKeyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"freddychenyouren2"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"freddychenyouren2"},"content":" if (listOfTasks.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"\\t You currently have no tasks so I can\u0027t find any matching tasks :/.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"freddychenyouren2"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"freddychenyouren2"},"content":" int taskCount \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"freddychenyouren2"},"content":" StringBuilder matchingTasks \u003d new StringBuilder(String.format(","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"freddychenyouren2"},"content":" \"\\t Here are your tasks that contains \u0027%s\u0027:\", matchingKeyword));","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"freddychenyouren2"},"content":" for (int i \u003d 0; i \u003c listOfTasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"freddychenyouren2"},"content":" if (listOfTasks.get(i).getDescription().contains(matchingKeyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"freddychenyouren2"},"content":" matchingTasks.append(\"\\n\\t \").append(listOfTasks.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"freddychenyouren2"},"content":" taskCount++;","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"freddychenyouren2"},"content":" //Output matching tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"freddychenyouren2"},"content":" if (taskCount \u003e 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"freddychenyouren2"},"content":" String output \u003d matchingTasks.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(output);","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"freddychenyouren2"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"freddychenyouren2"},"content":" String output \u003d String.format(\"\\t Hm there are no matching tasks with \u0027%s\u0027. \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"freddychenyouren2"},"content":" \"Try with another keyword.\", matchingKeyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(output);","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"freddychenyouren2"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":222}},{"path":"src/main/java/duke/util/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"// Test merge branch for A-Packages","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":" * Represents a user interface for SeeWhyAre bot.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" * \u003cp\u003eCS2103T AY23/24 Semester 1","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" * Individual Project","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" * SeeWhyAre Bot","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" * 31 Aug 2023","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" * @author Freddy Chen You Ren","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" public String HORIZONTAL_LINE \u003d \" ____________________________________________________________\"; //60 underscores.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" * Constructs a new Ui instance and initializes the scanner for user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" protected void printHorizontalLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" * Displays a greeting message to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" public void greet() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"\\nStarting SeeWhyAre Bot...\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Hello! I\u0027m SeeWhyAre Bot!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"freddychenyouren2"},"content":" * Retrieves user input from the console.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"freddychenyouren2"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"freddychenyouren2"},"content":" * @return The user\u0027s input command.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"freddychenyouren2"},"content":" public String getUserInput() {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\"Enter your Command: \");","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"freddychenyouren2"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"freddychenyouren2"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"freddychenyouren2"},"content":" * Displays a farewell message to the user and closes the scanner.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"freddychenyouren2"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"freddychenyouren2"},"content":" protected void farewell() {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" You are closing the SeeWhyAre chat bot.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"freddychenyouren2"},"content":" System.out.println(\" Bye bye. Please use me again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"freddychenyouren2"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"freddychenyouren2"},"content":" scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"freddychenyouren2":63}},{"path":"src/test/java/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"public class DukeTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"freddychenyouren2":2}},{"path":"src/test/java/duke/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" void testGetDueDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" Deadline deadline \u003d new Deadline(\"test deadline getting date\", LocalDate.parse(\"2023-08-30\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(deadline.getDueDate(), LocalDate.parse(\"2023-08-30\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" void testToString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" Deadline deadline \u003d new Deadline(\"test deadline\", LocalDate.parse(\"2023-08-30\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(deadline.toString(), \"[D][ ] test deadline (by: Aug 30 2023)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":"// @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":"// void handleDeadlineTask_excessInputs_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":"//","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":"// }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":"// @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":"// void handleDeadlineTask_invalidDateInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":"//","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":"// }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"freddychenyouren2":30}},{"path":"src/test/java/duke/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"public class EventTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" void testGetStartTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" Event event \u003d new Event(\"test event getting start time\", LocalDate.parse(\"2023-08-30\"), LocalDate.parse(\"2023-08-31\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(event.getStartTime(), LocalDate.parse(\"2023-08-30\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" void testGetEndTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":" Event event \u003d new Event(\"test event getting start time\", LocalDate.parse(\"2023-08-30\"), LocalDate.parse(\"2023-08-31\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(event.getEndTime(), LocalDate.parse(\"2023-08-31\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" void testToString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":" Event event \u003d new Event(\"test event\", LocalDate.parse(\"2023-08-30\"), LocalDate.parse(\"2023-08-31\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(event.toString(), \"[E][ ] test event (from: Aug 30 2023 to: Aug 31 2023)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":"// @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":"// void handleEventTask_excessInputs_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":"//","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":"// }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":"// @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":"// void handleEventTask_invalidDateInput_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":"//","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":"// }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"freddychenyouren2":36}},{"path":"src/test/java/duke/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"public class TaskTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" Task testTask \u003d new Task(\"Task Description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":" void testGetDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(testTask.getDescription(), \"Task Description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"freddychenyouren2"},"content":" void testToString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"freddychenyouren2"},"content":" Task task \u003d new Task(\"To test description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(task.toString(), \"[ ] To test description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"freddychenyouren2"},"content":" void testGetStatusIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(testTask.getStatusIcon(), \" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"freddychenyouren2"},"content":" testTask.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(testTask.getStatusIcon(), \"X\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"freddychenyouren2"},"content":" testTask.markAsNotDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(testTask.getStatusIcon(), \" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"freddychenyouren2"},"content":" void markAsDone_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"freddychenyouren2"},"content":" Task task \u003d new Task(\"Second Task Description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"freddychenyouren2"},"content":" assertFalse(task.isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"freddychenyouren2"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"freddychenyouren2"},"content":" assertTrue(task.isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"freddychenyouren2":40}},{"path":"src/test/java/duke/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":" void testToString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":" Todo todo \u003d new Todo(\"test todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":" assertEquals(todo.getDescription(), \"test todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"freddychenyouren2":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"freddychenyouren2"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"freddychenyouren2"},"content":"deadline URGENT TASK! /by Saturday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"freddychenyouren2"},"content":"event NUSCO Welcome Tea /from 11am /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"freddychenyouren2"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"freddychenyouren2"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"freddychenyouren2"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"freddychenyouren2"},"content":"unmark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"freddychenyouren2"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"freddychenyouren2"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"freddychenyouren2"},"content":"deadline erroneous deadline by now","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"freddychenyouren2"},"content":"event wrong event input from 6pm to 8pm","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"freddychenyouren2"},"content":"invalid input","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"freddychenyouren2"},"content":"todo finish CS2103T ip ASAP BRUH","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"freddychenyouren2"},"content":"delete non-Number","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"freddychenyouren2"},"content":"delete 1234.98765","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"freddychenyouren2"},"content":"delete 2","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"freddychenyouren2"},"content":"list","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"freddychenyouren2":18}},{"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":"freddychenyouren2"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT, use -Dfile.encoding\u003dUTF-8 to account for the OOPS icon","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"freddychenyouren2"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"-":19,"freddychenyouren2":2}}] diff --git a/freddychenyouren2_ip_master/commits.json b/freddychenyouren2_ip_master/commits.json index 534f3545..09105c40 100644 --- a/freddychenyouren2_ip_master/commits.json +++ b/freddychenyouren2_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"freddychenyouren2":[{"date":"2023-08-20","commitResults":[{"hash":"39049fcbc177d7038a6a49bbd0824a0b8304777f","isMergeCommit":false,"messageTitle":"Finished Level-0 increment","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":6}}}]},{"date":"2023-08-21","commitResults":[{"hash":"bc05bab3efcfcbcd2984712664d0d87d340b5520","isMergeCommit":false,"messageTitle":"Finished Level-1 increment with some personality modification for my chat bot","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":8}}},{"hash":"810c9c34364c5576e98b0366756fdad4dbb3ab1f","isMergeCommit":false,"messageTitle":"Finished Level-2 Increment: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}},{"hash":"f39b2dab1bd3552d3ed76e40d95fdd1e32b4986a","isMergeCommit":false,"messageTitle":"Add a class Task to handle more complex logics involving a Task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"df8c52bd50235043704eb78f9010063e74e67f01","isMergeCommit":false,"messageTitle":"Finished Level-3 Incrementing: Mark as Done Handled basic error inputs such as index out of bounds on ArrayList of Tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":5}}}]},{"date":"2023-08-22","commitResults":[{"hash":"226650cdde73a4fd53d00d1333da11bb20f68ee3","isMergeCommit":false,"messageTitle":"Level-4-Part-1: Created a Deadline.java file, handled Deadline task logics. Corrected indentation of console text outputs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":5}}},{"hash":"2918c3047224ca6473db0bf22142d876a407d497","isMergeCommit":false,"messageTitle":"Level-4-part-1-Update: Handle Deadline Task in Deadline.java file instead of Duke.java This is to practice calling Class Methods and writing neater code. Consider if there are 100 different types of tasks. It is not good to implement Task handling modules all in Duke.java file. It is way neater to implement task handling in each of the specific types of Task.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":30}}},{"hash":"767da2843721317d239ba4b21e0502a361edc47f","isMergeCommit":false,"messageTitle":"Level-4-Part-2: Added Todo.java and handling a Todo Task.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":5}}},{"hash":"61f62b4607dcda4d6fdc28607b6aafb0275e52d7","isMergeCommit":false,"messageTitle":"Updated Javadocs for Deadline.java fiile","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"8bdb7f4f01c04b62f1074087d78bdbcda9aa3296","isMergeCommit":false,"messageTitle":"Level-4-Part-3: Added Event.java file and its logics","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"a540500d548522c7852c9a8e2307e1bcbd04cfd2","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Text Formatting correction To prepare for automated testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":8}}},{"hash":"edd31773acef882312de356228df4b92a6a31f5b","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Update input.txt and EXPECTED.TEXT\\ To match predetermined results for outputs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0}}},{"hash":"33a9fe886b784051350fc744133b0aab672c44f1","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Use dos2unix input.txt This is because ACTUAL.TXT and EXPECTED.TXT look the same to naked eye The issue might lie in line-ending differences hence troubleshooting with dos2unix solved the issue. OS: Windows 11","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"bat":{"insertions":1,"deletions":1}}},{"hash":"768773bc1f14ab118d2baf6c16e924760c1fa6bb","isMergeCommit":false,"messageTitle":"Level-5: Add two classes to handle two types of exceptions Handled basic erroneous inputs of empty todo description and Invalid command. Might be exploring Enumeration to handle Invalid command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"7741333f2dbdc8892a733cd4a8af68b205a83f9d","isMergeCommit":false,"messageTitle":"Level-5-Update-1: Updated Duke.java and Todo.java To throw the two new exceptions appropriately: EmptyDescriptionException and InvalidCommandException","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":22}}},{"hash":"2e45bd01ca5d2fda4d540b32ed3dda98e411e56d","isMergeCommit":false,"messageTitle":"Level-6: Added deleteTask() function in Duke.java Also added exception checkings on user inputs such as empty description, invalid index, or non-integer index. Might explore creating Custom Exception Class in the future.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":2}}},{"hash":"bb69c190423ac9b7b837a5c155c370ed482cd415","isMergeCommit":false,"messageTitle":"Level-6-Update: Small corrections of coding styles","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}}]},{"date":"2023-08-24","commitResults":[{"hash":"986818e2e9971e1638ec3b872cc5f10c665771fd","isMergeCommit":false,"messageTitle":"Bug fix: \"todo todo\" was read as no descriptions because initial implementation wiped out ALL todo\u0027s. Same issue for Deadline and Event objects. Fixed with replaceFirst() instead of replace()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"efc87481213552297b5fedc594884821b44fb8ab","isMergeCommit":false,"messageTitle":"A-Enum: Applied Enum on available commands and used switch-case instead of if-else. To make code more expandable.","messageBody":"","tags":["A-Enum"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":21}}}]},{"date":"2023-08-26","commitResults":[{"hash":"d8fe66f8010979ed272d9211e205fed1e60305d7","isMergeCommit":false,"messageTitle":"Update Indentation of Switch Case","messageBody":"After Switch, indentation of case is provided by default by IntelliJ\n\nConfigured IntelliJ Settings to fix this indentation issue to follow course Java Coding Style Standard\n","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":29}}}]},{"date":"2023-08-28","commitResults":[{"hash":"1e9041fa28756d164f1f98a2fe4fbdf84eb5af2f","isMergeCommit":false,"messageTitle":"Update text messages in Exceptions","messageBody":"Unicode U+2369 was included in the previous version.\n\nHowever, expected.txt and actual.txt files kept showing errors because the sad face icon\ncould not be recognized correctly. Actual.txt showed \"?\"\n\nRemoved Unicode U+2369 for now\n","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"89c213548ba2e233510f206ebb9ada81591c4acf","isMergeCommit":false,"messageTitle":"Update test file","messageBody":"Include more commands to test more thoroughly.\n","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-29","commitResults":[{"hash":"ad05a3586c2fe7faabf14ba17dca6e153cc5757f","isMergeCommit":false,"messageTitle":"Include Data Saving and Data Loading of tasks into hard disk","messageBody":"Level-7 Increment: Created a Data Directory to put duke.txt file for storing and loading user data.\n\nHowever, there is one bug discovered under updateData() where Event type of task kept getting changed to Deadline type.\nThis will be fixed soon.\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":162,"deletions":12}}},{"hash":"f214902fb296ff07b46bd883fb1c6395d996baf5","isMergeCommit":false,"messageTitle":"Fix bug on Event tasks being loaded as Deadline tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":3},"java":{"insertions":15,"deletions":1}}},{"hash":"3fd7f856d81070fe6ce92a13381845b20b8e966c","isMergeCommit":false,"messageTitle":"Implement checking of files to load data","messageBody":"Handled basic incorrect formats in the data file to be parsed.\n","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":88,"deletions":46}}}]},{"date":"2023-08-30","commitResults":[{"hash":"50ef758d8c1752839cf57c254e1b25715457e27c","isMergeCommit":false,"messageTitle":"Implement Level-8 features of Date and Time in tasks","messageBody":"Deadline and Event tasks were initialized with String values for their timings\n\nUsed Java library on Dates and Times to initialize Deadline and Event tasks with YYYY-MM-DD inputs\nAlso handled cases where inputs are invalid dates or invalid formats with InvalidDateException.java\n\nNote: LoadTasks() Function now has poorer OOP Principles used due to optional initialization of tasks read from the hard disk.\nThis will be handled in the future.\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":127,"deletions":51}}},{"hash":"22600bdcb7b5c7f93c9acff11e329e098d1f19cc","isMergeCommit":false,"messageTitle":"Add a comment in Todo.java file to test branching mechanism in SourceTree","messageBody":"No changes in any other files. This should not affect the working state of the program.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"77f5a6bc01f2a8631a7ded16d5caff4ee2df8dad","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"0a161c308a5bd17b2992d0b1a69014950fa70716","isMergeCommit":false,"messageTitle":"Add a different comment in Todo.java to test branching for branch-level-7","messageBody":"Branching did not show up previously for branch-level-7.\n\nThis is the second attempt to practice proper branching and merging in git.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"e980a37160bb2275db12588b8ba69e10ea00ed34","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/Todo.java\n\nSolved by attempting to put the same comment in line 2\n","fileTypesAndContributionMap":{}},{"hash":"5f33a09edca14165848eff20b9a80d271ac88641","isMergeCommit":false,"messageTitle":"Implemented halfway A-OOP with Ui, Storage, Parser, and TaskList Classes","messageBody":"Implementation of program were all under Duke.java\n\nExtracted relevant implementations into separate classes.\nNote: Main refactoring of Duke.java is unfinished. Current state is only the creation of the separate files.\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":6},"java":{"insertions":485,"deletions":26}}},{"hash":"8776381f3bcdc74cca4df4e0048d280b05fffe49","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP by using files to separate the program.","messageBody":"The program was getting messy and could be separated into Parser, Ui, TaskList, and Storage files.\nDuke.java file also became short and neat.\n\nAlso squashed bugs related to class method invocations especially when saving tasks or loading tasks\n","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":2},"java":{"insertions":450,"deletions":430}}},{"hash":"61583ec6c3ee199b98491b278837c2c631e1dc76","isMergeCommit":false,"messageTitle":"Clean up code for A-MoreOOP checkpoint","messageBody":"Storage.java contained wildcard java.io.* import statement which violates Java Coding Standard\nDuke.java contained a huge chunck of commented-out codes of previous implementations which have been removed.\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":3},"java":{"insertions":17,"deletions":404}}},{"hash":"e65954dd9648894ce04e633b6a1915a1387d7371","isMergeCommit":false,"messageTitle":"Add packages to divide classes more neatly","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":9},"java":{"insertions":125,"deletions":65},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"d485d335ed48f1d7520c67b206e10a50563ce45e","isMergeCommit":false,"messageTitle":"Add dummy comment line to test for Merging for A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"c90d1570afbec5781915e0c3087ed88a32f3cdc9","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"f90a7247b554862cf617d4f463934aeb474a0605","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"dccbeee58f209d8e1ed07bd269765eb0065bac5d","isMergeCommit":false,"messageTitle":"Configure build.gradle file to run main method from Duke.java","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"234405eb58e6ba8930e169bf7d3a5ecd9515313c","isMergeCommit":false,"messageTitle":"Add test files","messageBody":"Basic unit testing only. Future updates may see the use of stubs.\n","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":121,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"freddychenyouren2":{"java":943,"md":2,"fxml":0,"sh":0,"bat":2,"gradle":1,"txt":31}},"authorContributionVariance":{"freddychenyouren2":314698.5},"authorDisplayNameMap":{"freddychenyouren2":"CS2103T-W10-3 FRED.. REN"}} +{"authorDailyContributionsMap":{"freddychenyouren2":[{"date":"2023-08-20","commitResults":[{"hash":"39049fcbc177d7038a6a49bbd0824a0b8304777f","isMergeCommit":false,"messageTitle":"Finished Level-0 increment","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":6}}}]},{"date":"2023-08-21","commitResults":[{"hash":"bc05bab3efcfcbcd2984712664d0d87d340b5520","isMergeCommit":false,"messageTitle":"Finished Level-1 increment with some personality modification for my chat bot","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":8}}},{"hash":"810c9c34364c5576e98b0366756fdad4dbb3ab1f","isMergeCommit":false,"messageTitle":"Finished Level-2 Increment: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}},{"hash":"f39b2dab1bd3552d3ed76e40d95fdd1e32b4986a","isMergeCommit":false,"messageTitle":"Add a class Task to handle more complex logics involving a Task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"df8c52bd50235043704eb78f9010063e74e67f01","isMergeCommit":false,"messageTitle":"Finished Level-3 Incrementing: Mark as Done Handled basic error inputs such as index out of bounds on ArrayList of Tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":5}}}]},{"date":"2023-08-22","commitResults":[{"hash":"226650cdde73a4fd53d00d1333da11bb20f68ee3","isMergeCommit":false,"messageTitle":"Level-4-Part-1: Created a Deadline.java file, handled Deadline task logics. Corrected indentation of console text outputs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":5}}},{"hash":"2918c3047224ca6473db0bf22142d876a407d497","isMergeCommit":false,"messageTitle":"Level-4-part-1-Update: Handle Deadline Task in Deadline.java file instead of Duke.java This is to practice calling Class Methods and writing neater code. Consider if there are 100 different types of tasks. It is not good to implement Task handling modules all in Duke.java file. It is way neater to implement task handling in each of the specific types of Task.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":30}}},{"hash":"767da2843721317d239ba4b21e0502a361edc47f","isMergeCommit":false,"messageTitle":"Level-4-Part-2: Added Todo.java and handling a Todo Task.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":5}}},{"hash":"61f62b4607dcda4d6fdc28607b6aafb0275e52d7","isMergeCommit":false,"messageTitle":"Updated Javadocs for Deadline.java fiile","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"8bdb7f4f01c04b62f1074087d78bdbcda9aa3296","isMergeCommit":false,"messageTitle":"Level-4-Part-3: Added Event.java file and its logics","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"a540500d548522c7852c9a8e2307e1bcbd04cfd2","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Text Formatting correction To prepare for automated testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":8}}},{"hash":"edd31773acef882312de356228df4b92a6a31f5b","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Update input.txt and EXPECTED.TEXT\\ To match predetermined results for outputs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0}}},{"hash":"33a9fe886b784051350fc744133b0aab672c44f1","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Use dos2unix input.txt This is because ACTUAL.TXT and EXPECTED.TXT look the same to naked eye The issue might lie in line-ending differences hence troubleshooting with dos2unix solved the issue. OS: Windows 11","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"bat":{"insertions":1,"deletions":1}}},{"hash":"768773bc1f14ab118d2baf6c16e924760c1fa6bb","isMergeCommit":false,"messageTitle":"Level-5: Add two classes to handle two types of exceptions Handled basic erroneous inputs of empty todo description and Invalid command. Might be exploring Enumeration to handle Invalid command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"7741333f2dbdc8892a733cd4a8af68b205a83f9d","isMergeCommit":false,"messageTitle":"Level-5-Update-1: Updated Duke.java and Todo.java To throw the two new exceptions appropriately: EmptyDescriptionException and InvalidCommandException","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":22}}},{"hash":"2e45bd01ca5d2fda4d540b32ed3dda98e411e56d","isMergeCommit":false,"messageTitle":"Level-6: Added deleteTask() function in Duke.java Also added exception checkings on user inputs such as empty description, invalid index, or non-integer index. Might explore creating Custom Exception Class in the future.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":2}}},{"hash":"bb69c190423ac9b7b837a5c155c370ed482cd415","isMergeCommit":false,"messageTitle":"Level-6-Update: Small corrections of coding styles","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}}]},{"date":"2023-08-24","commitResults":[{"hash":"986818e2e9971e1638ec3b872cc5f10c665771fd","isMergeCommit":false,"messageTitle":"Bug fix: \"todo todo\" was read as no descriptions because initial implementation wiped out ALL todo\u0027s. Same issue for Deadline and Event objects. Fixed with replaceFirst() instead of replace()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"efc87481213552297b5fedc594884821b44fb8ab","isMergeCommit":false,"messageTitle":"A-Enum: Applied Enum on available commands and used switch-case instead of if-else. To make code more expandable.","messageBody":"","tags":["A-Enum"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":21}}}]},{"date":"2023-08-26","commitResults":[{"hash":"d8fe66f8010979ed272d9211e205fed1e60305d7","isMergeCommit":false,"messageTitle":"Update Indentation of Switch Case","messageBody":"After Switch, indentation of case is provided by default by IntelliJ\n\nConfigured IntelliJ Settings to fix this indentation issue to follow course Java Coding Style Standard\n","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":29}}}]},{"date":"2023-08-28","commitResults":[{"hash":"1e9041fa28756d164f1f98a2fe4fbdf84eb5af2f","isMergeCommit":false,"messageTitle":"Update text messages in Exceptions","messageBody":"Unicode U+2369 was included in the previous version.\n\nHowever, expected.txt and actual.txt files kept showing errors because the sad face icon\ncould not be recognized correctly. Actual.txt showed \"?\"\n\nRemoved Unicode U+2369 for now\n","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"89c213548ba2e233510f206ebb9ada81591c4acf","isMergeCommit":false,"messageTitle":"Update test file","messageBody":"Include more commands to test more thoroughly.\n","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-29","commitResults":[{"hash":"ad05a3586c2fe7faabf14ba17dca6e153cc5757f","isMergeCommit":false,"messageTitle":"Include Data Saving and Data Loading of tasks into hard disk","messageBody":"Level-7 Increment: Created a Data Directory to put duke.txt file for storing and loading user data.\n\nHowever, there is one bug discovered under updateData() where Event type of task kept getting changed to Deadline type.\nThis will be fixed soon.\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":162,"deletions":12}}},{"hash":"f214902fb296ff07b46bd883fb1c6395d996baf5","isMergeCommit":false,"messageTitle":"Fix bug on Event tasks being loaded as Deadline tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":3},"java":{"insertions":15,"deletions":1}}},{"hash":"3fd7f856d81070fe6ce92a13381845b20b8e966c","isMergeCommit":false,"messageTitle":"Implement checking of files to load data","messageBody":"Handled basic incorrect formats in the data file to be parsed.\n","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":88,"deletions":46}}}]},{"date":"2023-08-30","commitResults":[{"hash":"50ef758d8c1752839cf57c254e1b25715457e27c","isMergeCommit":false,"messageTitle":"Implement Level-8 features of Date and Time in tasks","messageBody":"Deadline and Event tasks were initialized with String values for their timings\n\nUsed Java library on Dates and Times to initialize Deadline and Event tasks with YYYY-MM-DD inputs\nAlso handled cases where inputs are invalid dates or invalid formats with InvalidDateException.java\n\nNote: LoadTasks() Function now has poorer OOP Principles used due to optional initialization of tasks read from the hard disk.\nThis will be handled in the future.\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":127,"deletions":51}}},{"hash":"22600bdcb7b5c7f93c9acff11e329e098d1f19cc","isMergeCommit":false,"messageTitle":"Add a comment in Todo.java file to test branching mechanism in SourceTree","messageBody":"No changes in any other files. This should not affect the working state of the program.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"77f5a6bc01f2a8631a7ded16d5caff4ee2df8dad","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"0a161c308a5bd17b2992d0b1a69014950fa70716","isMergeCommit":false,"messageTitle":"Add a different comment in Todo.java to test branching for branch-level-7","messageBody":"Branching did not show up previously for branch-level-7.\n\nThis is the second attempt to practice proper branching and merging in git.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"e980a37160bb2275db12588b8ba69e10ea00ed34","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/Todo.java\n\nSolved by attempting to put the same comment in line 2\n","fileTypesAndContributionMap":{}},{"hash":"5f33a09edca14165848eff20b9a80d271ac88641","isMergeCommit":false,"messageTitle":"Implemented halfway A-OOP with Ui, Storage, Parser, and TaskList Classes","messageBody":"Implementation of program were all under Duke.java\n\nExtracted relevant implementations into separate classes.\nNote: Main refactoring of Duke.java is unfinished. Current state is only the creation of the separate files.\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":6},"java":{"insertions":485,"deletions":26}}},{"hash":"8776381f3bcdc74cca4df4e0048d280b05fffe49","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP by using files to separate the program.","messageBody":"The program was getting messy and could be separated into Parser, Ui, TaskList, and Storage files.\nDuke.java file also became short and neat.\n\nAlso squashed bugs related to class method invocations especially when saving tasks or loading tasks\n","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":2},"java":{"insertions":450,"deletions":430}}},{"hash":"61583ec6c3ee199b98491b278837c2c631e1dc76","isMergeCommit":false,"messageTitle":"Clean up code for A-MoreOOP checkpoint","messageBody":"Storage.java contained wildcard java.io.* import statement which violates Java Coding Standard\nDuke.java contained a huge chunck of commented-out codes of previous implementations which have been removed.\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":3},"java":{"insertions":17,"deletions":404}}},{"hash":"e65954dd9648894ce04e633b6a1915a1387d7371","isMergeCommit":false,"messageTitle":"Add packages to divide classes more neatly","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":9},"java":{"insertions":125,"deletions":65},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"d485d335ed48f1d7520c67b206e10a50563ce45e","isMergeCommit":false,"messageTitle":"Add dummy comment line to test for Merging for A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"c90d1570afbec5781915e0c3087ed88a32f3cdc9","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"f90a7247b554862cf617d4f463934aeb474a0605","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"dccbeee58f209d8e1ed07bd269765eb0065bac5d","isMergeCommit":false,"messageTitle":"Configure build.gradle file to run main method from Duke.java","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"234405eb58e6ba8930e169bf7d3a5ecd9515313c","isMergeCommit":false,"messageTitle":"Add test files","messageBody":"Basic unit testing only. Future updates may see the use of stubs.\n","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":121,"deletions":0}}},{"hash":"da3200477fe55ecf694af11200cacfa203285123","isMergeCommit":false,"messageTitle":"Refactor code to adhere more closely to Java Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":39}}},{"hash":"f8b9a16d0e82c0a08bd2389aadde51ba64f6edba","isMergeCommit":false,"messageTitle":"Add Header comment and JavaDoc to non-trivial methods in all Java classes.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":299,"deletions":63}}}]},{"date":"2023-09-01","commitResults":[{"hash":"93e94471461032fd5427077b5d131282ea051262","isMergeCommit":false,"messageTitle":"Implements findTask() method with a given keyword","messageBody":"Level-9 increment.\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":40,"deletions":1}}},{"hash":"e5a604022d7a944b1ce8f2a4d036112d52d5b643","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-CodingSrandard"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"815638e87d38379c174ebcce5542da509c37acad","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/task/Event.java\n#\tsrc/main/java/duke/util/Parser.java\n","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"daf95831497dcecbfca6350829cddf005bba02c3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"597d4be1ed377af3ec9c5c3ffd37b1ec5238a409","isMergeCommit":false,"messageTitle":"Refactor variable name taskList to listOfTasks in TaskList.java","messageBody":"This is to adhere more closely to Java Coding Standards.\n","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"e1da581749fff9a86f3d3c47ee45d90c1f0044f3","isMergeCommit":false,"messageTitle":"Add JavaDoc on findTask()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"ea5b43b09abf2bdf8601975fa326a45972d084be","isMergeCommit":false,"messageTitle":"Update console output of invalid commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"freddychenyouren2":{"java":1224,"md":2,"fxml":0,"sh":0,"bat":2,"gradle":1,"txt":32}},"authorContributionVariance":{"freddychenyouren2":301298.44},"authorDisplayNameMap":{"freddychenyouren2":"CS2103T-W10-3 FRED.. REN"}} diff --git a/frrrrry_ip_master/authorship.json b/frrrrry_ip_master/authorship.json index 4d8c585d..e4af50d4 100644 --- a/frrrrry_ip_master/authorship.json +++ b/frrrrry_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"frrrrry":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"import exception.DukeException;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"import exception.InvalidCommandException;","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"import exception.EmptyDateTimeException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":"import exception.EmptyInputException;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"import exception.InvalidFormatException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" String logo \u003d\" ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣶⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⠿⠛⠋⠉⠩⣄⠘⢿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⡏⠑⠒⠀⠀⣀⣀⠀⠀⢹⠈⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣷⡀⢀⣰⣿⡿⣿⣧⠀⠀⢡⣾⣧⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣯⣴⣿⠿⣄⣤⣾⡿⠟⠛⠛⠿⢿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣶⠿⠛⠋⠙⣿⣏⠀⠀⢻⣿⣡⣀⣀⠀⠀⠀⠀⢹⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⠿⠋⠁⠀⣀⣤⣶⣾⣿⣿⣤⣤⣾⣿⠉⠉⠙⠻⣿⠆⢀⣾⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠁⠀⣀⣴⣿⠿⠛⠉⠀⢀⣿⡿⠿⠟⢿⣆⠀⢀⣴⣯⣴⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⠀⠀⣠⣾⠟⠋⠀⠀⠀⠀⠀⣈⣿⣷⣤⣴⣾⣿⣈⣻⣿⡟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⣰⡿⠁⠀⣠⡾⠋⠁⠀⠀⢀⣠⣴⠶⠞⠛⠛⠋⠉⠉⠉⠉⠙⠛⠻⠷⣦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠰⣿⠁⠀⠀⣿⣄⣀⣠⣴⡾⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣿⠿⣶⣄⠀⠀⠀⢀⣠⡄⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠈⠛⠶⠶⢾⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢷⣄⠉⠙⠻⠿⠟⢹⡇⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⠁⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠘⣿⣿⣦⣀⠀⠲⣾⣁⠀⠀⠀⠀⠀⡀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣦⡀⠀⠀⠀⣿⡿⣿⣿⣿⡆⠀⠉⠛⠛⠛⠛⢻⡏⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⣠⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⡄⣸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⠛⢦⡀⠰⣿⣿⣿⣽⣿⡇⠀⠀⠀⠀⠀⢠⡿⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⣀⣤⡾⢻⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⡏⠙⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠰⣽⣶⣄⠉⠻⣿⣿⣧⠀⠀⢀⣤⣾⠟⠁⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"frrrrry"},"content":" + \"⢰⣶⡾⠛⠋⠉⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⢸⣸⡇⠀⣨⣿⣾⡋⠀⠀⠀⠀⢀⠀⠀⣿⡀⠀⠈⠛⢷⣄⠈⠛⣿⡆⠀⠘⣿⡀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠙⠿⣦⣀⠀⠀⠀⠀⠀⠀⡾⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠋⠀⠙⢿⣦⣀⠀⠀⠘⣷⣄⣹⣧⠀⠀⠀⠈⢻⣦⠀⠈⠋⠀⠀⠘⣧⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠈⠛⠿⢶⡶⠃⠀⣰⠃⠀⠀⠀⠀⠀⢠⣿⠃⠀⠀⠀⠀⠀⠀⠉⠻⢷⣦⣤⣘⣿⡛⠛⠀⢀⣴⣶⣦⡹⣷⡀⠀⠀⠀⠀⠸⣧⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⢠⡿⠃⠀⢀⡟⠀⠀⠀⠀⠀⠀⣼⣿⠀⠀⢀⣴⣿⣿⣷⡄⠀⠀⠈⠉⠉⠉⠉⠀⠀⢸⣿⣿⣿⣷⠻⣧⠀⠀⠀⠀⠀⢿⡆⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⢰⣿⠁⠀⠀⢸⠁⠀⠀⠀⠀⠈⠋⣿⠀⠀⠸⣿⣿⣿⣿⣿⡷⠀⠀⠀⠀⠀⠀⠀⠀ ⠈⠛⠿⠟⠃⠀⢻⣧⠀⠀⠀⠸⣧⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⣿⡇⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠉⠻⠿⠿⠋⠀⢠⡀⠀⠀⣀⣀⣀⣸⠇⠀⠀⠀⠀⠀⠈⢿⣧⠀⠀⠀⠀⣿⡀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⢰⣿⠁⠀⠀⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⢿⡀⠀⠀⠀⠀⠀ ⠀⠀⠈⠛⠒⠛⠉⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⠀⠀⠀⠀⢸⡇⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⢸⣿⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⠁⠀⠀⠀⠀⢸⣿⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⢸⣿⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣤⣶⡿⠋⣿⠀⠀⠀⠀⠀⠀⣿⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠘⣿⡄⠀⠀⢸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣧⣄⣀⣀⣀⣠⣤⣶⣶⣾⣿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⣠⠀⠀⢠⣿⡄ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⢻⣧⠀⠀⠸⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣟⠛⢻⡟⢻⡉⠉⣫⣀⠀⠀⠀⠉⠉⠛⠙⠿⣷⣿⡿⠁⢀⣰⡟⠀⠀⢸⣿⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠈⢻⣧⡀⠀⠹⣷⡀⠀⠀⠀⠀⢠⠀⠀⠀⠘⣿⣿⣿⢻⡿⠀⠈⠷⠟⠁⠘⢾⣿⣶⣤⣶⣾⡇⠀⣿⣿⣤⣶⣿⣿⠃⠀⠀⣾⡟⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠈⠻⣷⣄⡀⠹⣷⣄⠀⠀⠀⢸⣷⣤⡀⠀⠈⢻⣿⣯⣤⠀⠀⣠⡀⠀⢀⣼⣿⣿⣿⣿⣟⠁⠐⠿⣿⣿⣿⣿⠋⠀⢀⣾⠟⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⣷⣮⣽⣷⣶⣤⣤⣿⣿⣿⣷⣶⣦⣭⣿⣿⣧⣠⠵⢯⡆⠚⣯⢿⠋⠛⠛⢫⣀⣠⣾⣿⢿⣿⣥⣤⠶⠛⠁⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⢁⣾⣿⣿⣿⠿⠿⠿⠿⠻⢿⣿⣿⣷⣦⣤⣤⣀⣤⣤⣄⣶⣿⣿⡿⠟⠉⠀⠀⢻⡄⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⡇⠀⠀⣀⡀⠈⢿⣧⠀⠉⠙⠛⠛⠛⠛⠛⠛⠉⠁⠀⠀⠀⠀⠀⠀⢿⡄⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣴⣿⣿⡏⠛⠉⢻⣿⣿⣿⣾⣿⣿⠀⢸⣿⠀⠀⠀⠀⠀⠙⠓⠢⠀⠀⠀⠀⠀⠸⠀⠀⠀⠘⣿⡄⠀⠀⠀⠀⠀ \\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"frrrrry"},"content":" String msg \u003d \"----------------------------------------------------------------- \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"frrrrry"},"content":" + \"Hello! I\u0027m Paimon! \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"frrrrry"},"content":" + \"What can I do for you? \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"frrrrry"},"content":" + \"-----------------------------------------------------------------\";","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"frrrrry"},"content":" System.out.println(logo + \"\\n\" + msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"frrrrry"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"frrrrry"},"content":" boolean running \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"frrrrry"},"content":" String markCommand \u003d \"mark\";","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"frrrrry"},"content":" String unmarkCommand \u003d \"unmark\";","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"frrrrry"},"content":" String listCommand \u003d \"list\";","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"frrrrry"},"content":" String deleteCommand \u003d \"delete\";","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"frrrrry"},"content":" String byeCommand \u003d \"bye\";","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"frrrrry"},"content":" String todoCommand \u003d \"todo\";","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"frrrrry"},"content":" String deadlineCommand \u003d \"deadline\";","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"frrrrry"},"content":" String eventCommand \u003d \"event\";","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"frrrrry"},"content":" String command;","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"frrrrry"},"content":" ArrayList\u003cTask\u003e ls \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"frrrrry"},"content":" while (running) {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"frrrrry"},"content":" command \u003d sc.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"frrrrry"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"frrrrry"},"content":" if (command.startsWith(markCommand)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"frrrrry"},"content":" String indexStr \u003d command.substring(markCommand.length() + 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"frrrrry"},"content":" int num \u003d Integer.valueOf(indexStr);","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"frrrrry"},"content":" Task t \u003d ls.get(num - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"frrrrry"},"content":" t.markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"frrrrry"},"content":" + t.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\");","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"frrrrry"},"content":" } else if (command.startsWith(unmarkCommand)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"frrrrry"},"content":" String indexStr \u003d command.substring(unmarkCommand.length() + 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"frrrrry"},"content":" int num \u003d Integer.valueOf(indexStr);","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"frrrrry"},"content":" Task t \u003d ls.get(num - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"frrrrry"},"content":" t.markUndone();","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"frrrrry"},"content":" + t.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\");","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"frrrrry"},"content":" } else if (command.equalsIgnoreCase(byeCommand)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Bye Bye! See you soon :D\"","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\");","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"frrrrry"},"content":" running \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"frrrrry"},"content":" } else if (command.equalsIgnoreCase(listCommand)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"frrrrry"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Here are the tasks in your list: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"frrrrry"},"content":" for (Task t : ls) {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"frrrrry"},"content":" System.out.println(i + \". \" + t.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"frrrrry"},"content":" i++;","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"-----------------------------------------------------------------\");","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"frrrrry"},"content":" } else if (command.startsWith(todoCommand)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"frrrrry"},"content":" if (command.length() \u003c\u003d todoCommand.length() + 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"frrrrry"},"content":" throw new EmptyInputException(\"todo\");","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"frrrrry"},"content":" String des \u003d command.substring(todoCommand.length() + 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"frrrrry"},"content":" Todo t \u003d new Todo(des);","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"frrrrry"},"content":" ls.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"frrrrry"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"frrrrry"},"content":" \"Got it. Task successfully added: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"frrrrry"},"content":" + t.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"frrrrry"},"content":" + \"\\nNow you have \" + ls.size() + \" tasks in the list\"","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\");","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"frrrrry"},"content":" } else if (command.startsWith(deadlineCommand)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"frrrrry"},"content":" if (command.length() \u003c\u003d deadlineCommand.length() + 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"frrrrry"},"content":" throw new EmptyInputException(\"deadline\");","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"frrrrry"},"content":" } else if (!command.contains(\"/by\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"frrrrry"},"content":" throw new InvalidFormatException(\"deadline\", \"/by\");","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"frrrrry"},"content":" int byIndex \u003d command.indexOf(\"/by\") ;","lastModifiedDate":"2023-08-29"},{"lineNumber":121,"author":{"gitId":"frrrrry"},"content":" String des \u003d command.substring(deadlineCommand.length() + 1, byIndex - 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":122,"author":{"gitId":"frrrrry"},"content":" if (command.length() \u003c\u003d byIndex + 4) {","lastModifiedDate":"2023-08-29"},{"lineNumber":123,"author":{"gitId":"frrrrry"},"content":" throw new EmptyDateTimeException(\"deadline\");","lastModifiedDate":"2023-08-29"},{"lineNumber":124,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"frrrrry"},"content":" String by \u003d command.substring(byIndex + 4);","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"frrrrry"},"content":" Deadline d \u003d new Deadline(des, by);","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"frrrrry"},"content":" ls.add(d);","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"frrrrry"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"frrrrry"},"content":" \"Got it. Task successfully added: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"frrrrry"},"content":" + d.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"frrrrry"},"content":" + \"\\nNow you have \" + ls.size() + \" tasks in the list\"","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\");","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"frrrrry"},"content":" } else if (command.startsWith(eventCommand)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":134,"author":{"gitId":"frrrrry"},"content":" if (command.length() \u003c\u003d eventCommand.length() + 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":135,"author":{"gitId":"frrrrry"},"content":" throw new EmptyInputException(\"event\");","lastModifiedDate":"2023-08-29"},{"lineNumber":136,"author":{"gitId":"frrrrry"},"content":" } else if (!command.contains(\"/from\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"frrrrry"},"content":" throw new InvalidFormatException(\"event\", \"/from\");","lastModifiedDate":"2023-08-29"},{"lineNumber":138,"author":{"gitId":"frrrrry"},"content":" } else if (!command.contains(\"/to\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":139,"author":{"gitId":"frrrrry"},"content":" throw new InvalidFormatException(\"event\", \"/to\");","lastModifiedDate":"2023-08-29"},{"lineNumber":140,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"frrrrry"},"content":" int fromIndex \u003d command.indexOf(\"/from\");","lastModifiedDate":"2023-08-29"},{"lineNumber":142,"author":{"gitId":"frrrrry"},"content":" int toIndex \u003d command.indexOf(\"/to\");","lastModifiedDate":"2023-08-29"},{"lineNumber":143,"author":{"gitId":"frrrrry"},"content":" if (command.length() \u003c\u003d fromIndex + 6) {","lastModifiedDate":"2023-08-29"},{"lineNumber":144,"author":{"gitId":"frrrrry"},"content":" throw new EmptyDateTimeException(\"event\");","lastModifiedDate":"2023-08-29"},{"lineNumber":145,"author":{"gitId":"frrrrry"},"content":" } else if (command.length() \u003c\u003d toIndex + 4) {","lastModifiedDate":"2023-08-29"},{"lineNumber":146,"author":{"gitId":"frrrrry"},"content":" throw new EmptyDateTimeException(\"event\");","lastModifiedDate":"2023-08-29"},{"lineNumber":147,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"frrrrry"},"content":" String des \u003d command.substring(eventCommand.length() + 1, fromIndex - 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":149,"author":{"gitId":"frrrrry"},"content":" String start \u003d command.substring(fromIndex + 6, toIndex - 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":150,"author":{"gitId":"frrrrry"},"content":" String end \u003d command.substring(toIndex + 4);","lastModifiedDate":"2023-08-29"},{"lineNumber":151,"author":{"gitId":"frrrrry"},"content":" Event e \u003d new Event(des, start, end);","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"frrrrry"},"content":" ls.add(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"frrrrry"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"frrrrry"},"content":" \"Got it. Task successfully added: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"frrrrry"},"content":" + e.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"frrrrry"},"content":" + \"\\nNow you have \" + ls.size() + \" tasks in the list\"","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\");","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"frrrrry"},"content":" } else if (command.startsWith(deleteCommand)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":159,"author":{"gitId":"frrrrry"},"content":" String indexStr \u003d command.substring(deleteCommand.length() + 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":160,"author":{"gitId":"frrrrry"},"content":" int num \u003d Integer.valueOf(indexStr);","lastModifiedDate":"2023-08-29"},{"lineNumber":161,"author":{"gitId":"frrrrry"},"content":" Task task \u003d ls.get(num - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"frrrrry"},"content":" ls.remove(num - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"frrrrry"},"content":" + task.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"frrrrry"},"content":" + \"\\nNow you have \" + ls.size() + \" tasks in the list\");","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"frrrrry"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"frrrrry"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2023-08-29"},{"lineNumber":168,"author":{"gitId":"frrrrry"},"content":" \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\"","lastModifiedDate":"2023-08-29"},{"lineNumber":169,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\");","lastModifiedDate":"2023-08-29"},{"lineNumber":170,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":171,"author":{"gitId":"frrrrry"},"content":" } catch (EmptyInputException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":172,"author":{"gitId":"frrrrry"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":173,"author":{"gitId":"frrrrry"},"content":" } catch (EmptyDateTimeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":174,"author":{"gitId":"frrrrry"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":175,"author":{"gitId":"frrrrry"},"content":" } catch (InvalidFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":176,"author":{"gitId":"frrrrry"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":177,"author":{"gitId":"frrrrry"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":178,"author":{"gitId":"frrrrry"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":179,"author":{"gitId":"frrrrry"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":180,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"☹ OOPS!!! Something went wrong D:\");","lastModifiedDate":"2023-08-29"},{"lineNumber":181,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"frrrrry"},"content":" sc.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":186,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"frrrrry":183,"-":3}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":" protected String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" protected String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"frrrrry":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":" if (isDone) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Task is already done! (≧∇≦)/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"frrrrry"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"frrrrry"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"frrrrry"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"frrrrry"},"content":" if (isDone) {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"frrrrry"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"frrrrry"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Task is not done yet! (;° ロ°)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"frrrrry"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"frrrrry"},"content":" if (isDone) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"frrrrry"},"content":" return \"[X] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"frrrrry"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"frrrrry"},"content":" return \"[ ] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"frrrrry":38}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"frrrrry":10}},{"path":"src/main/java/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"package exception;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" public DukeException() {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" return \"☹ OOPS!!! Something went wrong D:\";","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"frrrrry":13}},{"path":"src/main/java/exception/EmptyDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"package exception;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"public class EmptyDateTimeException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" protected String message;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" public EmptyDateTimeException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" return \"☹ OOPS!!! The date/time of the \" + this.message + \" cannot be empty.\"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\";","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"frrrrry":15}},{"path":"src/main/java/exception/EmptyInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"package exception;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"public class EmptyInputException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" protected String message;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" public EmptyInputException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" return \"☹ OOPS!!! The description of a \" + this.message + \" cannot be empty.\"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\";","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"frrrrry":15}},{"path":"src/main/java/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"package exception;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" protected String message;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" return this.message;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"frrrrry":14}},{"path":"src/main/java/exception/InvalidFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"package exception;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"public class InvalidFormatException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" protected String message;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" protected String subMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" public InvalidFormatException(String message, String subMessage) {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" this.subMessage \u003d subMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":" return \"☹ OOPS!!! The format of the \" + this.message + \" is incorrect :(((\\n\"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"frrrrry"},"content":" + \"Please add a \\\"\" + this.subMessage + \"\\\" keyword in\"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\";","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"frrrrry":19}}] +[{"path":"data/paimon.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"[T][X] add this todo","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"[T][ ] do this","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"[D][ ] finish this (by: 2023-08-31 11:30)","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":"[D][X] do this task (by: 2023-11-03 14:00)","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"[E][ ] do this (from: 2023-09-01 15:00 to: 2023-09-09 2023-09-09)","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"frrrrry":5}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"public enum Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":" MARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":" UNMARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" LIST,","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":" BYE,","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" TODO,","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" DEADLINE,","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" EVENT,","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":" DELETE;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"frrrrry":10}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":" protected LocalDate byDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" protected LocalTime byTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":" public Deadline(String description, LocalDate byDate, LocalTime byTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" this.byDate \u003d byDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" this.byTime \u003d byTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" this.by \u003d byDate.toString() + \" \" + byTime.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"frrrrry"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"frrrrry"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"frrrrry":20}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"import exception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":"import java.util.Locale;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"frrrrry"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"frrrrry"},"content":" private static String separator \u003d \"\\n-----------------------------------------------------------------\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"frrrrry"},"content":" ArrayList\u003cTask\u003e ls;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"frrrrry"},"content":" public Duke() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"frrrrry"},"content":" this.ls \u003d Duke.initTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"frrrrry"},"content":" String logo \u003d\" ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣶⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⠿⠛⠋⠉⠩⣄⠘⢿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⡏⠑⠒⠀⠀⣀⣀⠀⠀⢹⠈⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣷⡀⢀⣰⣿⡿⣿⣧⠀⠀⢡⣾⣧⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣯⣴⣿⠿⣄⣤⣾⡿⠟⠛⠛⠿⢿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣶⠿⠛⠋⠙⣿⣏⠀⠀⢻⣿⣡⣀⣀⠀⠀⠀⠀⢹⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⠿⠋⠁⠀⣀⣤⣶⣾⣿⣿⣤⣤⣾⣿⠉⠉⠙⠻⣿⠆⢀⣾⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠁⠀⣀⣴⣿⠿⠛⠉⠀⢀⣿⡿⠿⠟⢿⣆⠀⢀⣴⣯⣴⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⠀⠀⣠⣾⠟⠋⠀⠀⠀⠀⠀⣈⣿⣷⣤⣴⣾⣿⣈⣻⣿⡟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⣰⡿⠁⠀⣠⡾⠋⠁⠀⠀⢀⣠⣴⠶⠞⠛⠛⠋⠉⠉⠉⠉⠙⠛⠻⠷⣦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠰⣿⠁⠀⠀⣿⣄⣀⣠⣴⡾⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣿⠿⣶⣄⠀⠀⠀⢀⣠⡄⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠈⠛⠶⠶⢾⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢷⣄⠉⠙⠻⠿⠟⢹⡇⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⠁⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠘⣿⣿⣦⣀⠀⠲⣾⣁⠀⠀⠀⠀⠀⡀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣦⡀⠀⠀⠀⣿⡿⣿⣿⣿⡆⠀⠉⠛⠛⠛⠛⢻⡏⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⣠⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⡄⣸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⠛⢦⡀⠰⣿⣿⣿⣽⣿⡇⠀⠀⠀⠀⠀⢠⡿⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⣀⣤⡾⢻⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⡏⠙⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠰⣽⣶⣄⠉⠻⣿⣿⣧⠀⠀⢀⣤⣾⠟⠁⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"frrrrry"},"content":" + \"⢰⣶⡾⠛⠋⠉⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⢸⣸⡇⠀⣨⣿⣾⡋⠀⠀⠀⠀⢀⠀⠀⣿⡀⠀⠈⠛⢷⣄⠈⠛⣿⡆⠀⠘⣿⡀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠙⠿⣦⣀⠀⠀⠀⠀⠀⠀⡾⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠋⠀⠙⢿⣦⣀⠀⠀⠘⣷⣄⣹⣧⠀⠀⠀⠈⢻⣦⠀⠈⠋⠀⠀⠘⣧⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠈⠛⠿⢶⡶⠃⠀⣰⠃⠀⠀⠀⠀⠀⢠⣿⠃⠀⠀⠀⠀⠀⠀⠉⠻⢷⣦⣤⣘⣿⡛⠛⠀⢀⣴⣶⣦⡹⣷⡀⠀⠀⠀⠀⠸⣧⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⢠⡿⠃⠀⢀⡟⠀⠀⠀⠀⠀⠀⣼⣿⠀⠀⢀⣴⣿⣿⣷⡄⠀⠀⠈⠉⠉⠉⠉⠀⠀⢸⣿⣿⣿⣷⠻⣧⠀⠀⠀⠀⠀⢿⡆⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⢰⣿⠁⠀⠀⢸⠁⠀⠀⠀⠀⠈⠋⣿⠀⠀⠸⣿⣿⣿⣿⣿⡷⠀⠀⠀⠀⠀⠀⠀⠀ ⠈⠛⠿⠟⠃⠀⢻⣧⠀⠀⠀⠸⣧⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⣿⡇⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠉⠻⠿⠿⠋⠀⢠⡀⠀⠀⣀⣀⣀⣸⠇⠀⠀⠀⠀⠀⠈⢿⣧⠀⠀⠀⠀⣿⡀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⢰⣿⠁⠀⠀⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⢿⡀⠀⠀⠀⠀⠀ ⠀⠀⠈⠛⠒⠛⠉⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⠀⠀⠀⠀⢸⡇⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⢸⣿⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⠁⠀⠀⠀⠀⢸⣿⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⢸⣿⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣤⣶⡿⠋⣿⠀⠀⠀⠀⠀⠀⣿⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠘⣿⡄⠀⠀⢸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣧⣄⣀⣀⣀⣠⣤⣶⣶⣾⣿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⣠⠀⠀⢠⣿⡄ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⢻⣧⠀⠀⠸⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣟⠛⢻⡟⢻⡉⠉⣫⣀⠀⠀⠀⠉⠉⠛⠙⠿⣷⣿⡿⠁⢀⣰⡟⠀⠀⢸⣿⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠈⢻⣧⡀⠀⠹⣷⡀⠀⠀⠀⠀⢠⠀⠀⠀⠘⣿⣿⣿⢻⡿⠀⠈⠷⠟⠁⠘⢾⣿⣶⣤⣶⣾⡇⠀⣿⣿⣤⣶⣿⣿⠃⠀⠀⣾⡟⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠈⠻⣷⣄⡀⠹⣷⣄⠀⠀⠀⢸⣷⣤⡀⠀⠈⢻⣿⣯⣤⠀⠀⣠⡀⠀⢀⣼⣿⣿⣿⣿⣟⠁⠐⠿⣿⣿⣿⣿⠋⠀⢀⣾⠟⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⣷⣮⣽⣷⣶⣤⣤⣿⣿⣿⣷⣶⣦⣭⣿⣿⣧⣠⠵⢯⡆⠚⣯⢿⠋⠛⠛⢫⣀⣠⣾⣿⢿⣿⣥⣤⠶⠛⠁⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⢁⣾⣿⣿⣿⠿⠿⠿⠿⠻⢿⣿⣿⣷⣦⣤⣤⣀⣤⣤⣄⣶⣿⣿⡿⠟⠉⠀⠀⢻⡄⠀⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⡇⠀⠀⣀⡀⠈⢿⣧⠀⠉⠙⠛⠛⠛⠛⠛⠛⠉⠁⠀⠀⠀⠀⠀⠀⢿⡄⠀⠀⠀⠀⠀⠀ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"frrrrry"},"content":" + \"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣴⣿⣿⡏⠛⠉⢻⣿⣿⣿⣾⣿⣿⠀⢸⣿⠀⠀⠀⠀⠀⠙⠓⠢⠀⠀⠀⠀⠀⠸⠀⠀⠀⠘⣿⡄⠀⠀⠀⠀⠀ \\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"frrrrry"},"content":" String msg \u003d separator","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"frrrrry"},"content":" + \"\\nHello! I\u0027m Paimon!\"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"frrrrry"},"content":" + \"\\nWhat can I do for you?\"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"frrrrry"},"content":" + separator;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"frrrrry"},"content":" System.out.println(logo + \"\\n\" + msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"frrrrry"},"content":" Duke paimon \u003d new Duke();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"frrrrry"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"frrrrry"},"content":" boolean running \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"frrrrry"},"content":" while (running) {","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"frrrrry"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"frrrrry"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"frrrrry"},"content":" String command \u003d input.split(\" \")[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"frrrrry"},"content":" Command c \u003d Command.valueOf(command.toUpperCase());","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"frrrrry"},"content":" switch (c) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"frrrrry"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"frrrrry"},"content":" Duke.markTask(input, paimon.ls);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"frrrrry"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"frrrrry"},"content":" case UNMARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"frrrrry"},"content":" Duke.unmarkTask(input, paimon.ls);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"frrrrry"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"frrrrry"},"content":" case LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"frrrrry"},"content":" Duke.listItems(paimon.ls);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"frrrrry"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"frrrrry"},"content":" case BYE:","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Bye Bye! See you soon :D\"","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"frrrrry"},"content":" + separator);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"frrrrry"},"content":" running \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"frrrrry"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"frrrrry"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"frrrrry"},"content":" Duke.todo(input, paimon.ls);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"frrrrry"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"frrrrry"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"frrrrry"},"content":" Duke.deadline(input, paimon.ls);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"frrrrry"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"frrrrry"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"frrrrry"},"content":" Duke.event(input, paimon.ls);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"frrrrry"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"frrrrry"},"content":" case DELETE:","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"frrrrry"},"content":" Duke.delete(input, paimon.ls);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"frrrrry"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"frrrrry"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"frrrrry"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"frrrrry"},"content":" \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\"","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"frrrrry"},"content":" + separator);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"frrrrry"},"content":" } catch (EmptyInputException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"frrrrry"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"frrrrry"},"content":" } catch (EmptyDateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"frrrrry"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"frrrrry"},"content":" } catch (InvalidFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"frrrrry"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"frrrrry"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"frrrrry"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"frrrrry"},"content":" } catch (InvalidDateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"frrrrry"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"frrrrry"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"☹ OOPS!!! Something went wrong D:\"","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"frrrrry"},"content":" + separator);","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"frrrrry"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"frrrrry"},"content":" writeTasks(paimon.ls);","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"frrrrry"},"content":" sc.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"frrrrry"},"content":" private static void writeTasks(ArrayList\u003cTask\u003e ls) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"frrrrry"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"frrrrry"},"content":" FileWriter fw \u003d new FileWriter(\"./data/paimon.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"frrrrry"},"content":" for (Task t : ls) {","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"frrrrry"},"content":" fw.write(t.toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"frrrrry"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"frrrrry"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"frrrrry"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"frrrrry"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"frrrrry"},"content":" private static ArrayList\u003cTask\u003e readTasks(File file) {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"frrrrry"},"content":" ArrayList\u003cTask\u003e inputList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"frrrrry"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"frrrrry"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"frrrrry"},"content":" while (s.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"frrrrry"},"content":" String input \u003d s.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"frrrrry"},"content":" char taskType \u003d input.charAt(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"frrrrry"},"content":" boolean isDone \u003d input.charAt(4) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"frrrrry"},"content":" String des \u003d input.split(\"] \")[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"frrrrry"},"content":" if (taskType \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"frrrrry"},"content":" Todo t \u003d new Todo(des);","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"frrrrry"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"frrrrry"},"content":" t.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"frrrrry"},"content":" inputList.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"frrrrry"},"content":" } else if (taskType \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"frrrrry"},"content":" int byIndex \u003d des.indexOf(\"(by: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"frrrrry"},"content":" int endIndex \u003d des.indexOf(\")\");","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"frrrrry"},"content":" String deadlineDes \u003d des.substring(0, byIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"frrrrry"},"content":" String by \u003d des.substring(byIndex + 5, endIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"frrrrry"},"content":" String[] dateTimeArr \u003d by.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"frrrrry"},"content":" LocalDate byDate \u003d LocalDate.parse(dateTimeArr[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"frrrrry"},"content":" LocalTime byTime \u003d LocalTime.parse(dateTimeArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"frrrrry"},"content":" Deadline d \u003d new Deadline(deadlineDes, byDate, byTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"frrrrry"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"frrrrry"},"content":" d.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"frrrrry"},"content":" inputList.add(d);","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"frrrrry"},"content":" } else if (taskType \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"frrrrry"},"content":" int fromIndex \u003d des.indexOf(\"(from: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"frrrrry"},"content":" int toIndex \u003d des.indexOf(\" to: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"frrrrry"},"content":" int endIndex \u003d des.indexOf(\")\");","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"frrrrry"},"content":" String eventDes \u003d des.substring(0, fromIndex - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"frrrrry"},"content":" String start \u003d des.substring(fromIndex + 7, toIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"frrrrry"},"content":" String end \u003d des.substring(toIndex + 5, endIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"frrrrry"},"content":" String[] startArr \u003d start.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"frrrrry"},"content":" LocalDate startDate \u003d LocalDate.parse(startArr[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"frrrrry"},"content":" LocalTime startTime \u003d LocalTime.parse(startArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"frrrrry"},"content":" String[] endArr \u003d end.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"frrrrry"},"content":" LocalDate endDate \u003d LocalDate.parse(endArr[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"frrrrry"},"content":" LocalTime endTime \u003d LocalTime.parse(endArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"frrrrry"},"content":" Event e \u003d new Event(eventDes, startDate, startTime, endDate, endTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"frrrrry"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"frrrrry"},"content":" e.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"frrrrry"},"content":" inputList.add(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"frrrrry"},"content":" s.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"frrrrry"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"frrrrry"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"frrrrry"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"frrrrry"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"frrrrry"},"content":" return inputList;","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"frrrrry"},"content":" private static ArrayList\u003cTask\u003e initTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"frrrrry"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"frrrrry"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"frrrrry"},"content":" File dir \u003d new File(\"./data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"frrrrry"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"frrrrry"},"content":" dir.mkdir();","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"frrrrry"},"content":" File inputFile \u003d new File(\"./data/paimon.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"frrrrry"},"content":" if (inputFile.createNewFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"frrrrry"},"content":" // creates new file","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"frrrrry"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"frrrrry"},"content":" tasks \u003d readTasks(inputFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"frrrrry"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"IOException occured\");","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"frrrrry"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"frrrrry"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"frrrrry"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"frrrrry"},"content":" private static void markTask(String input, ArrayList\u003cTask\u003e ls) {","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"frrrrry"},"content":" String indexStr \u003d input.split(\" \")[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"frrrrry"},"content":" int num \u003d Integer.valueOf(indexStr);","lastModifiedDate":"2023-08-29"},{"lineNumber":222,"author":{"gitId":"frrrrry"},"content":" Task t \u003d ls.get(num - 1 );","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"frrrrry"},"content":" t.markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"frrrrry"},"content":" + t","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"frrrrry"},"content":" + separator);","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"frrrrry"},"content":" private static void unmarkTask(String input, ArrayList\u003cTask\u003e ls) {","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"frrrrry"},"content":" String indexStr \u003d input.split(\" \")[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"frrrrry"},"content":" int num \u003d Integer.valueOf(indexStr);","lastModifiedDate":"2023-08-29"},{"lineNumber":232,"author":{"gitId":"frrrrry"},"content":" Task t \u003d ls.get(num - 1 );","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"frrrrry"},"content":" t.markUndone();","lastModifiedDate":"2023-08-24"},{"lineNumber":234,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"frrrrry"},"content":" + t","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"frrrrry"},"content":" + separator);","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"frrrrry"},"content":" private static void listItems(ArrayList\u003cTask\u003e ls) {","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"frrrrry"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":241,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Here are the tasks in your list: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"frrrrry"},"content":" for (Task t : ls) {","lastModifiedDate":"2023-08-24"},{"lineNumber":243,"author":{"gitId":"frrrrry"},"content":" System.out.println(i + \". \" + t.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":244,"author":{"gitId":"frrrrry"},"content":" i++;","lastModifiedDate":"2023-08-23"},{"lineNumber":245,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":246,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"-----------------------------------------------------------------\");","lastModifiedDate":"2023-08-24"},{"lineNumber":247,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":248,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"frrrrry"},"content":" private static void todo(String input, ArrayList\u003cTask\u003e ls) throws EmptyInputException {","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"frrrrry"},"content":" if (input.split(\" \").length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"frrrrry"},"content":" String des \u003d input.split(\" \", 2)[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"frrrrry"},"content":" Todo t \u003d new Todo(des);","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"frrrrry"},"content":" ls.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":254,"author":{"gitId":"frrrrry"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":255,"author":{"gitId":"frrrrry"},"content":" \"Got it. Task successfully added: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":256,"author":{"gitId":"frrrrry"},"content":" + t.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"frrrrry"},"content":" + \"\\nNow you have \" + ls.size() + \" tasks in the list\"","lastModifiedDate":"2023-08-24"},{"lineNumber":258,"author":{"gitId":"frrrrry"},"content":" + separator);","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"frrrrry"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":260,"author":{"gitId":"frrrrry"},"content":" throw new EmptyInputException(\"todo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":263,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":264,"author":{"gitId":"frrrrry"},"content":" private static void deadline(String input, ArrayList\u003cTask\u003e ls) throws EmptyInputException,","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"frrrrry"},"content":" InvalidFormatException, EmptyDateTimeException, InvalidDateTimeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"frrrrry"},"content":" if (input.split(\" \").length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"frrrrry"},"content":" throw new EmptyInputException(\"deadline\");","lastModifiedDate":"2023-08-29"},{"lineNumber":268,"author":{"gitId":"frrrrry"},"content":" } else if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"frrrrry"},"content":" throw new InvalidFormatException(\"deadline\", \"/by\");","lastModifiedDate":"2023-08-29"},{"lineNumber":270,"author":{"gitId":"frrrrry"},"content":" } else if (input.length() \u003c\u003d input.indexOf(\"/by\") + 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"frrrrry"},"content":" throw new EmptyDateTimeException(\"deadline\");","lastModifiedDate":"2023-08-29"},{"lineNumber":272,"author":{"gitId":"frrrrry"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":273,"author":{"gitId":"frrrrry"},"content":" String tempDes \u003d input.split(\" \", 2)[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":274,"author":{"gitId":"frrrrry"},"content":" System.out.println(tempDes);","lastModifiedDate":"2023-09-01"},{"lineNumber":275,"author":{"gitId":"frrrrry"},"content":" String des \u003d tempDes.split(\" /by \" )[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":276,"author":{"gitId":"frrrrry"},"content":" String by \u003d tempDes.split(\" /by \")[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"frrrrry"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":278,"author":{"gitId":"frrrrry"},"content":" String[] dateTimeArr \u003d by.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":279,"author":{"gitId":"frrrrry"},"content":" LocalDate byDate \u003d LocalDate.parse(dateTimeArr[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":280,"author":{"gitId":"frrrrry"},"content":" LocalTime byTime \u003d LocalTime.parse(dateTimeArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":281,"author":{"gitId":"frrrrry"},"content":" Deadline d \u003d new Deadline(des, byDate, byTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":282,"author":{"gitId":"frrrrry"},"content":" ls.add(d);","lastModifiedDate":"2023-08-24"},{"lineNumber":283,"author":{"gitId":"frrrrry"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":284,"author":{"gitId":"frrrrry"},"content":" \"Got it. Task successfully added: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"frrrrry"},"content":" + d.toString()","lastModifiedDate":"2023-09-01"},{"lineNumber":286,"author":{"gitId":"frrrrry"},"content":" + \"\\nNow you have \" + ls.size() + \" tasks in the list\"","lastModifiedDate":"2023-08-24"},{"lineNumber":287,"author":{"gitId":"frrrrry"},"content":" + separator);","lastModifiedDate":"2023-09-01"},{"lineNumber":288,"author":{"gitId":"frrrrry"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":289,"author":{"gitId":"frrrrry"},"content":" throw new InvalidDateTimeException(\"deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":290,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":291,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":292,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":293,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":294,"author":{"gitId":"frrrrry"},"content":" private static void event(String input, ArrayList\u003cTask\u003e ls) throws EmptyInputException,","lastModifiedDate":"2023-09-01"},{"lineNumber":295,"author":{"gitId":"frrrrry"},"content":" InvalidFormatException, EmptyDateTimeException, InvalidDateTimeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":296,"author":{"gitId":"frrrrry"},"content":" if (input.split(\" \").length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":297,"author":{"gitId":"frrrrry"},"content":" throw new EmptyInputException(\"event\");","lastModifiedDate":"2023-08-29"},{"lineNumber":298,"author":{"gitId":"frrrrry"},"content":" } else if (!input.contains(\"/from\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":299,"author":{"gitId":"frrrrry"},"content":" throw new InvalidFormatException(\"event\", \"/from\");","lastModifiedDate":"2023-08-29"},{"lineNumber":300,"author":{"gitId":"frrrrry"},"content":" } else if (!input.contains(\"/to\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":301,"author":{"gitId":"frrrrry"},"content":" throw new InvalidFormatException(\"event\", \"/to\");","lastModifiedDate":"2023-08-29"},{"lineNumber":302,"author":{"gitId":"frrrrry"},"content":" } else if (input.length() \u003c\u003d input.indexOf(\"/from\") + 6) {","lastModifiedDate":"2023-09-01"},{"lineNumber":303,"author":{"gitId":"frrrrry"},"content":" throw new EmptyDateTimeException(\"event\");","lastModifiedDate":"2023-08-29"},{"lineNumber":304,"author":{"gitId":"frrrrry"},"content":" } else if (input.length() \u003c\u003d input.indexOf(\"/to\") + 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":305,"author":{"gitId":"frrrrry"},"content":" throw new EmptyDateTimeException(\"event\");","lastModifiedDate":"2023-08-29"},{"lineNumber":306,"author":{"gitId":"frrrrry"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":307,"author":{"gitId":"frrrrry"},"content":" String tempDes \u003d input.split(\" \", 2)[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":308,"author":{"gitId":"frrrrry"},"content":" String des \u003d tempDes.split(\" /from \")[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":309,"author":{"gitId":"frrrrry"},"content":" String start \u003d tempDes.split(\" /from \")[1].split(\" /to \")[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":310,"author":{"gitId":"frrrrry"},"content":" String end \u003d tempDes.split(\" /to \")[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":311,"author":{"gitId":"frrrrry"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":312,"author":{"gitId":"frrrrry"},"content":" String[] startArr \u003d start.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":313,"author":{"gitId":"frrrrry"},"content":" LocalDate startDate \u003d LocalDate.parse(startArr[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":314,"author":{"gitId":"frrrrry"},"content":" LocalTime startTime \u003d LocalTime.parse(startArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":315,"author":{"gitId":"frrrrry"},"content":" String[] endArr \u003d end.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":316,"author":{"gitId":"frrrrry"},"content":" LocalDate endDate \u003d LocalDate.parse(endArr[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":317,"author":{"gitId":"frrrrry"},"content":" LocalTime endTime \u003d LocalTime.parse(endArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":318,"author":{"gitId":"frrrrry"},"content":" Event e \u003d new Event(des, startDate, startTime, endDate, endTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":319,"author":{"gitId":"frrrrry"},"content":" ls.add(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":320,"author":{"gitId":"frrrrry"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":321,"author":{"gitId":"frrrrry"},"content":" \"Got it. Task successfully added: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":322,"author":{"gitId":"frrrrry"},"content":" + e.toString()","lastModifiedDate":"2023-09-01"},{"lineNumber":323,"author":{"gitId":"frrrrry"},"content":" + \"\\nNow you have \" + ls.size() + \" tasks in the list\"","lastModifiedDate":"2023-08-24"},{"lineNumber":324,"author":{"gitId":"frrrrry"},"content":" + separator);","lastModifiedDate":"2023-09-01"},{"lineNumber":325,"author":{"gitId":"frrrrry"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":326,"author":{"gitId":"frrrrry"},"content":" throw new InvalidDateTimeException(\"event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":327,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":328,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":329,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":330,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":331,"author":{"gitId":"frrrrry"},"content":" private static void delete(String input, ArrayList\u003cTask\u003e ls) {","lastModifiedDate":"2023-09-01"},{"lineNumber":332,"author":{"gitId":"frrrrry"},"content":" String indexStr \u003d input.split(\" \")[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":333,"author":{"gitId":"frrrrry"},"content":" int num \u003d Integer.valueOf(indexStr);","lastModifiedDate":"2023-08-29"},{"lineNumber":334,"author":{"gitId":"frrrrry"},"content":" Task task \u003d ls.get(num - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":335,"author":{"gitId":"frrrrry"},"content":" ls.remove(num - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":336,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":337,"author":{"gitId":"frrrrry"},"content":" + task.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":338,"author":{"gitId":"frrrrry"},"content":" + \"\\nNow you have \" + ls.size() + \" tasks in the list\");","lastModifiedDate":"2023-08-24"},{"lineNumber":339,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":341,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"frrrrry":337,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":" protected LocalDate startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" protected LocalTime startTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" protected String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" protected LocalDate endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":" protected LocalTime endTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" protected String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" public Event(String description, LocalDate startDate, LocalTime startTime,","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" LocalDate endDate, LocalTime endTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"frrrrry"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"frrrrry"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"frrrrry"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"frrrrry"},"content":" this.start \u003d startDate.toString() + \" \" + startTime.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"frrrrry"},"content":" this.end \u003d endDate.toString() + \" \" + endDate.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"frrrrry"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"frrrrry"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"frrrrry":27}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":" if (isDone) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Task is already done! (≧∇≦)/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"frrrrry"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"frrrrry"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"frrrrry"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"frrrrry"},"content":" if (isDone) {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"frrrrry"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"frrrrry"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"frrrrry"},"content":" System.out.println(\"Task is not done yet! (;° ロ°)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"frrrrry"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"frrrrry"},"content":" if (isDone) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"frrrrry"},"content":" return \"[X] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"frrrrry"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"frrrrry"},"content":" return \"[ ] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"frrrrry":38}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"frrrrry":10}},{"path":"src/main/java/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"package exception;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" public DukeException() {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" return \"☹ OOPS!!! Something went wrong D:\";","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"frrrrry":13}},{"path":"src/main/java/exception/EmptyDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"package exception;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"public class EmptyDateTimeException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" protected String message;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" public EmptyDateTimeException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" return \"☹ OOPS!!! The date/time of the \" + this.message + \" cannot be empty.\"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\";","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"frrrrry":15}},{"path":"src/main/java/exception/EmptyInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"package exception;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"public class EmptyInputException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" protected String message;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" public EmptyInputException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" return \"☹ OOPS!!! The description of a \" + this.message + \" cannot be empty.\"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\";","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"frrrrry":15}},{"path":"src/main/java/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"package exception;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" protected String message;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" return this.message;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"frrrrry":14}},{"path":"src/main/java/exception/InvalidDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"package exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"public class InvalidDateTimeException extends DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" String message;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":" public InvalidDateTimeException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" this.message \u003d message;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" public String getMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" return \"☹ OOPS!!! The date/time format of the \"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":" + this.message + \" is incorrect :(((\"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"frrrrry":15}},{"path":"src/main/java/exception/InvalidFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":"package exception;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"public class InvalidFormatException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":" protected String message;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":" protected String subMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":" public InvalidFormatException(String message, String subMessage) {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":" this.subMessage \u003d subMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":" return \"☹ OOPS!!! The format of the \" + this.message + \" is incorrect :(((\\n\"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"frrrrry"},"content":" + \"Please add a \\\"\" + this.subMessage + \"\\\" keyword in\"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"frrrrry"},"content":" + \"\\n-----------------------------------------------------------------\";","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"frrrrry"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"frrrrry"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"frrrrry":19}},{"path":"src/main/java/logo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"frrrrry"},"content":" ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣶⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⠿⠛⠋⠉⠩⣄⠘⢿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⡏⠑⠒⠀⠀⣀⣀⠀⠀⢹⠈⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣷⡀⢀⣰⣿⡿⣿⣧⠀⠀⢡⣾⣧⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣯⣴⣿⠿⣄⣤⣾⡿⠟⠛⠛⠿⢿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢀⣠⣴⣶⠿⠛⠋⠙⣿⣏⠀⠀⢻⣿⣡⣀⣀⠀⠀⠀ ⢹⣿⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⠿⠋⠁⠀⣀⣤⣶⣾⣿⣿⣤⣤⣾⣿⠉⠉⠙⠻⣿⠆⢀⣾⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠁⠀⣀⣴⣿⠿⠛⠉⠀⢀⣿⡿⠿⠟⢿⣆⠀⢀⣴⣯⣴⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⠀⠀⣠⣾⠟⠋⠀⠀⠀⠀⠀⣈⣿⣷⣤⣴⣾⣿⣈⣻⣿⡟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⣰⡿⠁⠀⣠⡾⠋⠁⠀⠀⢀⣠⣴⠶⠞⠛⠛⠋⠉⠉⠉⠉⠙⠛⠻⠷⣦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠰⣿⠁⠀⠀⣿⣄⣀⣠⣴⡾⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣿⠿⣶⣄⠀⠀⠀⢀⣠⡄⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠈⠛⠶⠶⢾⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢷⣄⠉⠙⠻⠿⠟⢹⡇⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⠁⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠘⣿⣿⣦⣀⠀⠲⣾⣁⠀⠀⠀⠀⠀⡀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣦⡀⠀⠀⠀⣿⡿⣿⣿⣿⡆⠀⠉⠛⠛⠛⠛⢻⡏⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⣠⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⡄⣸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⠛⢦⡀⠰⣿⣿⣿⣽⣿⡇⠀⠀⠀⠀⠀⢠⡿⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⣀⣤⡾⢻⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⡏⠙⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠰⣽⣶⣄⠉⠻⣿⣿⣧⠀⠀⢀⣤⣾⠟⠁⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"frrrrry"},"content":"⢰⣶⡾⠛⠋⠉⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⢸⣸⡇⠀⣨⣿⣾⡋⠀⠀⠀⠀⢀⠀⠀⣿⡀⠀⠈⠛⢷⣄⠈⠛⣿⡆⠀⠘⣿⡀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"frrrrry"},"content":"⠀⠙⠿⣦⣀⠀⠀⠀⠀⠀⠀⡾⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠋⠀⠙⢿⣦⣀⠀⠀⠘⣷⣄⣹⣧⠀⠀⠀⠈⢻⣦⠀⠈⠋⠀⠀⠘⣧⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠈⠛⠿⢶⡶⠃⠀⣰⠃⠀⠀⠀⠀⠀⢠⣿⠃⠀⠀⠀⠀⠀⠀⠉⠻⢷⣦⣤⣘⣿⡛⠛⠀⢀⣴⣶⣦⡹⣷⡀⠀⠀⠀⠀⠸⣧⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⢠⡿⠃⠀⢀⡟⠀⠀⠀⠀⠀⠀⣼⣿⠀⠀⢀⣴⣿⣿⣷⡄⠀⠀⠈⠉⠉⠉⠉⠀⠀⢸⣿⣿⣿⣷⠻⣧⠀⠀⠀⠀⠀⢿⡆⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⢰⣿⠁⠀⠀⢸⠁⠀⠀⠀⠀⠈⠋⣿⠀⠀⠸⣿⣿⣿⣿⣿⡷⠀⠀⠀⠀⠀⠀⠀⠀ ⠈⠛⠿⠟⠃⠀⢻⣧⠀⠀⠀⠸⣧⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⣿⡇⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠉⠻⠿⠿⠋⠀⢠⡀⠀⠀⣀⣀⣀⣸⠇⠀⠀⠀⠀⠀⠈⢿⣧⠀⠀⠀⠀⣿⡀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⢰⣿⠁⠀⠀⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⢿⡀⠀⠀⠀⠀⠀ ⠀⠀⠈⠛⠒⠛⠉⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⠀⠀⠀⠀⢸⡇⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⢸⣿⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⠁⠀⠀⠀⠀⢸⣿⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⢸⣿⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣤⣶⡿⠋⣿⠀⠀⠀⠀⠀⠀⣿⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠘⣿⡄⠀⠀⢸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣧⣄⣀⣀⣀⣠⣤⣶⣶⣾⣿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⣠⠀⠀⢠⣿⡄","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⢻⣧⠀⠀⠸⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣟⠛⢻⡟⢻⡉⠉⣫⣀⠀⠀⠀⠉⠉⠛⠙⠿⣷⣿⡿⠁⢀⣰⡟⠀⠀⢸⣿⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠈⢻⣧⡀⠀⠹⣷⡀⠀⠀⠀⠀⢠⠀⠀⠀⠘⣿⣿⣿⢻⡿⠀⠈⠷⠟⠁⠘⢾⣿⣶⣤⣶⣾⡇⠀⣿⣿⣤⣶⣿⣿⠃⠀⠀⣾⡟⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠈⠻⣷⣄⡀⠹⣷⣄⠀⠀⠀⢸⣷⣤⡀⠀⠈⢻⣿⣯⣤⠀⠀⣠⡀⠀⢀⣼⣿⣿⣿⣿⣟⠁⠐⠿⣿⣿⣿⣿⠋⠀⢀⣾⠟⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⣷⣮⣽⣷⣶⣤⣤⣿⣿⣿⣷⣶⣦⣭⣿⣿⣧⣠⠵⢯⡆⠚⣯⢿⠋⠛⠛⢫⣀⣠⣾⣿⢿⣿⣥⣤⠶⠛⠁⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⢁⣾⣿⣿⣿⠿⠿⠿⠿⠻⢿⣿⣿⣷⣦⣤⣤⣀⣤⣤⣄⣶⣿⣿⡿⠟⠉⠀⠀⢻⡄⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⡇⠀⠀⣀⡀⠈⢿⣧⠀⠉⠙⠛⠛⠛⠛⠛⠛⠉⠁⠀⠀⠀⠀⠀⠀⢿⡄⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"frrrrry"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣴⣿⣿⡏⠛⠉⢻⣿⣿⣿⣾⣿⣿⠀⢸⣿⠀⠀⠀⠀⠀⠙⠓⠢⠀⠀⠀⠀⠀⠸⠀⠀⠀⠘⣿⡄⠀⠀⠀⠀⠀","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"frrrrry":33}}] diff --git a/frrrrry_ip_master/commits.json b/frrrrry_ip_master/commits.json index cdfd1072..b9cae818 100644 --- a/frrrrry_ip_master/commits.json +++ b/frrrrry_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"frrrrry":[{"date":"2023-08-23","commitResults":[{"hash":"6b3eb6f169ee32558f50db65641b21e4b5216e6b","isMergeCommit":false,"messageTitle":"Rename Chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":6}}},{"hash":"ad512affe77ba43343b3bb53d29b58e1984b8a73","isMergeCommit":false,"messageTitle":"Add echo features","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}},{"hash":"4418450bc0aab87976e0a992e6c3ce90a5e1f399","isMergeCommit":false,"messageTitle":"Add list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b3ab36b31f57a4e7ffb0b1e47c8cc10ea02f4302","isMergeCommit":false,"messageTitle":"Add checkbox feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":12}}},{"hash":"f4b29705d93010428afc08b2e412b268f3555f4b","isMergeCommit":false,"messageTitle":"Add Todos, Events and Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":116,"deletions":7}}},{"hash":"d8d8bd0c0fcf1e7da1b2ffa46502cb988acf1e7e","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":13}}},{"hash":"d1e066e16280bb952b67a9014df16c52ee53c1d2","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"d9be721ecf5510322f38ce696c9c063112745446","isMergeCommit":false,"messageTitle":"Update error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":197,"deletions":111}}}]}]},"authorFileTypeContributionMap":{"frrrrry":{"java":336,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"frrrrry":10694.909},"authorDisplayNameMap":{"frrrrry":"CS2103T-F08-4 FAN ..UOYU"}} +{"authorDailyContributionsMap":{"frrrrry":[{"date":"2023-08-23","commitResults":[{"hash":"6b3eb6f169ee32558f50db65641b21e4b5216e6b","isMergeCommit":false,"messageTitle":"Rename Chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":6}}},{"hash":"ad512affe77ba43343b3bb53d29b58e1984b8a73","isMergeCommit":false,"messageTitle":"Add echo features","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}},{"hash":"4418450bc0aab87976e0a992e6c3ce90a5e1f399","isMergeCommit":false,"messageTitle":"Add list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b3ab36b31f57a4e7ffb0b1e47c8cc10ea02f4302","isMergeCommit":false,"messageTitle":"Add checkbox feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":12}}},{"hash":"f4b29705d93010428afc08b2e412b268f3555f4b","isMergeCommit":false,"messageTitle":"Add Todos, Events and Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":116,"deletions":7}}},{"hash":"d8d8bd0c0fcf1e7da1b2ffa46502cb988acf1e7e","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":13}}},{"hash":"d1e066e16280bb952b67a9014df16c52ee53c1d2","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"d9be721ecf5510322f38ce696c9c063112745446","isMergeCommit":false,"messageTitle":"Update error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":197,"deletions":111}}}]},{"date":"2023-09-01","commitResults":[{"hash":"1ed94e17c88d6a5f5d91aa9b34e83354280b276f","isMergeCommit":false,"messageTitle":"Add enums for commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":33,"deletions":0},"java":{"insertions":188,"deletions":136}}},{"hash":"78f134a8e8cf1d80278d6dc67909419e8b0e22be","isMergeCommit":false,"messageTitle":"Add save feature","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":106,"deletions":23}}},{"hash":"07db3da3ea06063f13aaf7bd0b9e05cf7d1eed82","isMergeCommit":false,"messageTitle":"Change format of date and time","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":5},"java":{"insertions":99,"deletions":36}}}]}]},"authorFileTypeContributionMap":{"frrrrry":{"java":533,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":38}},"authorContributionVariance":{"frrrrry":30582.727},"authorDisplayNameMap":{"frrrrry":"CS2103T-F08-4 FAN ..UOYU"}} diff --git a/fuyiqiao_ip_master/authorship.json b/fuyiqiao_ip_master/authorship.json index bc3537da..58f339d2 100644 --- a/fuyiqiao_ip_master/authorship.json +++ b/fuyiqiao_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":" mainClass.set(\"ballsorting.Ballsorter\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":" archiveBaseName \u003d \"ballsorter\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"fuyiqiao"},"content":" archiveFileName \u003d \u0027ballsorter.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"fuyiqiao":3,"-":40}},{"path":"data/Ballsorter.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"D|1|finish assignment|2023-08-31 09:04","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"E|0|gen training|2023-09-02 09:00|2023-09-02 17:00","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"T|0|laundry","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"D|1|watch lecture |2023-09-01 09:00","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":"T|0|buy oats","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":"T|1|buy milk","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":6}},{"path":"src/main/java/ballsorting/Ballsorter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":"public class Ballsorter {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" static String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" static DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" static DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM, HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" Ui ui; File tmpDir;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" public Ballsorter() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" tmpDir \u003d new File(\"data/Ballsorter.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" //check for storage","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" storage \u003d new Storage(tmpDir);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" if (tmpDir.createNewFile()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" storage.loadFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" public Ballsorter(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":" tmpDir \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"fuyiqiao"},"content":" //check for storage","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"fuyiqiao"},"content":" storage \u003d new Storage(tmpDir);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"fuyiqiao"},"content":" if (tmpDir.createNewFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"fuyiqiao"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":" storage.loadFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"fuyiqiao"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"fuyiqiao"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Hello! I\u0027m Ballsorter\\nWhat can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"fuyiqiao"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"fuyiqiao"},"content":" ui \u003d new Ui(sc);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"fuyiqiao"},"content":" ui.scan(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"fuyiqiao"},"content":" //write list to storage","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"fuyiqiao"},"content":" storage.storeList(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"fuyiqiao"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"fuyiqiao"},"content":" new Ballsorter().run();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"fuyiqiao":59}},{"path":"src/main/java/ballsorting/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime end;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" public Deadline(String description, LocalDateTime end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" return \"[D][\" + this.getStatusIcon() + \"] \" + this.description","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" + \" (by: \" + this.end.format(Ballsorter.outputFormatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" public String toStorageString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" int stat \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" return \"D|\" + stat + \"|\" + this.description + \"|\" + this.end.format(Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"fuyiqiao":19}},{"path":"src/main/java/ballsorting/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime start;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime end;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" return \"[E][\" + this.getStatusIcon() + \"] \" + this.description","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" + \" (from: \" + this.start.format(Ballsorter.outputFormatter)","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" + \" to: \" + this.end.format(Ballsorter.outputFormatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" public String toStorageString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":" int stat \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" return \"E|\" + stat + \"|\" + this.description + \"|\"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" + this.start.format(Ballsorter.inputFormatter) + \"|\" + this.end.format(Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"fuyiqiao":23}},{"path":"src/main/java/ballsorting/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" Scanner sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" public Parser(Scanner sc) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" this.sc \u003d sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" public void parseUserInput(String input, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" taskList.printList();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" int target \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":" taskList.markTask(target);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" int target \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" taskList.unmarkTask(target);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":" int target \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"fuyiqiao"},"content":" taskList.deleteTask(target);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"fuyiqiao"},"content":" Task curr;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"fuyiqiao"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":" StringBuilder start \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"fuyiqiao"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"fuyiqiao"},"content":" String des \u003d input.substring(4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"fuyiqiao"},"content":" if (des.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d new Todo(des);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"fuyiqiao"},"content":" int i \u003d 9;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"fuyiqiao"},"content":" while (i \u003c input.length() \u0026\u0026 input.charAt(i) !\u003d \u0027/\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"fuyiqiao"},"content":" description.append(input.charAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"fuyiqiao"},"content":" i +\u003d 4;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"fuyiqiao"},"content":" if (description.toString().equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"fuyiqiao"},"content":" } else if (i \u003e\u003d input.length() || input.substring(i).equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! The deadline of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(input.substring(i), Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d new Deadline(description.toString(), endDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"fuyiqiao"},"content":" int i \u003d 6;","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"fuyiqiao"},"content":" while (i \u003c input.length() \u0026\u0026 input.charAt(i) !\u003d \u0027/\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"fuyiqiao"},"content":" description.append(input.charAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"fuyiqiao"},"content":" i +\u003d 6;","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"fuyiqiao"},"content":" while (i \u003c input.length() \u0026\u0026 input.charAt(i) !\u003d \u0027/\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"fuyiqiao"},"content":" start.append(input.charAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"fuyiqiao"},"content":" i +\u003d 4;","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"fuyiqiao"},"content":" if (description.toString().equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"fuyiqiao"},"content":" } else if (start.toString().equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! The start time of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"fuyiqiao"},"content":" } else if (i \u003e\u003d input.length() || input.substring(i).equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! The end time of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(start.toString(), Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(input.substring(i), Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d new Event(description.toString(), startDateTime, endDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"fuyiqiao"},"content":" if (curr !\u003d null) taskList.addTask(curr);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":110}},{"path":"src/main/java/ballsorting/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" File tmpDir;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" public Storage(File file) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" tmpDir \u003d file;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" public void loadFile(TaskList taskList) throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" Scanner sc \u003d new Scanner(tmpDir);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" int stat \u003d Integer.parseInt(input.substring(2, 3));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" StringBuilder desc \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":" StringBuilder start \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" Task curr;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" if (input.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d new Todo(input.substring(4));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" int i \u003d 4;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" while (input.charAt(i) !\u003d \u0027|\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":" desc.append(input.charAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(input.substring(i), Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d new Deadline(desc.toString(), endDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"fuyiqiao"},"content":" int i \u003d 4;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"fuyiqiao"},"content":" while (input.charAt(i) !\u003d \u0027|\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":" desc.append(input.charAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"fuyiqiao"},"content":" while (input.charAt(i) !\u003d \u0027|\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"fuyiqiao"},"content":" start.append(input.charAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(start.toString(), Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(input.substring(i), Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d new Event(desc.toString(), startDateTime, endDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"fuyiqiao"},"content":" if (stat \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"fuyiqiao"},"content":" curr.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"fuyiqiao"},"content":" taskList.addTaskSilent(curr);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"fuyiqiao"},"content":" public void storeList(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"fuyiqiao"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"fuyiqiao"},"content":" Files.write(tmpDir.toPath(), taskList.storeList().getBytes());","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"fuyiqiao"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":61}},{"path":"src/main/java/ballsorting/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" public String markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" return this.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" public String markNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":" return this.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":" public String toStorageString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"fuyiqiao"},"content":" return \"Task\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"fuyiqiao":31}},{"path":"src/main/java/ballsorting/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" public void addTaskSilent(Task t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" public void deleteTask(int target) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" if (target \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! This task does not exist\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(tasks.get(target).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"fuyiqiao"},"content":" tasks.remove(target);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":" public void markTask(int target) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"fuyiqiao"},"content":" if (target \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! This task does not exist\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(tasks.get(target).markDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"fuyiqiao"},"content":" public void unmarkTask(int target) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"fuyiqiao"},"content":" if (target \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! This task does not exist\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(tasks.get(target).markNotDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.line);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"fuyiqiao"},"content":" public int getNumOfTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"fuyiqiao"},"content":" return tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"fuyiqiao"},"content":" public void printList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"fuyiqiao"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"You do not have any tasks yet ☹\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"fuyiqiao"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"fuyiqiao"},"content":" int temp \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(temp + \". \" + tasks.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"fuyiqiao"},"content":" public String storeList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"fuyiqiao"},"content":" StringBuilder store \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"fuyiqiao"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"fuyiqiao"},"content":" store.append(String.format(tasks.get(i).toStorageString() + \"%n\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"fuyiqiao"},"content":" return store.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":74}},{"path":"src/main/java/ballsorting/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" return \"[T][\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" public String toStorageString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" int stat \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" return \"T|\" + stat + \"|\" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"fuyiqiao":14}},{"path":"src/main/java/ballsorting/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":" Scanner sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" public Ui(Scanner sc) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" this.sc \u003d sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" public void scan(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" Parser parser \u003d new Parser(sc);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" parser.parseUserInput(input, taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":19}},{"path":"src/test/java/ballsorting/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" public void Test1() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(\"2023-08-31 09:00\", Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" Task t \u003d new Deadline(\"buy milk\", dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" t.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" String expected \u003d \"[D][X] buy milk (by: 31 Aug, 09:00)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" assertEquals(expected, t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":16}},{"path":"src/test/java/ballsorting/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":"public class EventTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" public void test2() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime dateTime1 \u003d LocalDateTime.parse(\"2023-08-31 09:00\", Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime dateTime2 \u003d LocalDateTime.parse(\"2023-09-01 15:00\", Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" Task t \u003d new Event(\"training\", dateTime1, dateTime2);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" t.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" t.markNotDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" String expected \u003d \"[E][ ] training (from: 31 Aug, 09:00 to: 01 Sep, 15:00)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" assertEquals(expected, t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":16}},{"path":"src/test/java/ballsorting/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" public void dummyTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"todo buy milk","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"fuyiqiao":2}},{"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":"fuyiqiao"},"content":"java -classpath ../bin Ballsorter \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":{"fuyiqiao":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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":" mainClass.set(\"ballsorting.Ballsorter\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":" archiveBaseName \u003d \"ballsorter\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"fuyiqiao"},"content":" archiveFileName \u003d \u0027ballsorter.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"fuyiqiao":3,"-":40}},{"path":"data/Ballsorter.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"D|1|finish assignment|2023-08-31 09:04","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"E|0|gen training|2023-09-02 09:00|2023-09-02 17:00","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"T|0|laundry","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"D|1|watch lecture |2023-09-01 09:00","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":"T|0|buy oats","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":"T|1|buy milk","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":"T|0|finish milk","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":7}},{"path":"src/main/java/ballsorting/Ballsorter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":"public class Ballsorter {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" static String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" static DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" static DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM, HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" private TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" private File tmpDir;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" * Creates a new instance of the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" public Ballsorter() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":" tmpDir \u003d new File(\"data/Ballsorter.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" //check for storage","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" storage \u003d new Storage(tmpDir);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" if (tmpDir.createNewFile()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":" storage.loadFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"fuyiqiao"},"content":" * Creates a new instance of the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":" * @param filePath Takes in a filePath String that stores the chatbot information.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"fuyiqiao"},"content":" public Ballsorter(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"fuyiqiao"},"content":" tmpDir \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"fuyiqiao"},"content":" //check for storage","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"fuyiqiao"},"content":" storage \u003d new Storage(tmpDir);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"fuyiqiao"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"fuyiqiao"},"content":" if (tmpDir.createNewFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"fuyiqiao"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"fuyiqiao"},"content":" storage.loadFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"fuyiqiao"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"fuyiqiao"},"content":" * Starts the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"fuyiqiao"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Hello! I\u0027m Ballsorter\\nWhat can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"fuyiqiao"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"fuyiqiao"},"content":" ui \u003d new Ui(sc);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"fuyiqiao"},"content":" ui.scan(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"fuyiqiao"},"content":" //write list to storage","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"fuyiqiao"},"content":" storage.storeList(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"fuyiqiao"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"fuyiqiao"},"content":" new Ballsorter().run();","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"fuyiqiao":73}},{"path":"src/main/java/ballsorting/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" * Creates a new instance of Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" * @param description A brief summary of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" * @param end The due date of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" public Deadline(String description, LocalDateTime end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" * Returns a String representation of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":" * @return Summary of Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" return \"[D][\" + this.getStatusIcon() + \"] \" + this.description","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" + \" (by: \" + this.end.format(Ballsorter.outputFormatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":" * Returns a String representation that is stored in storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"fuyiqiao"},"content":" * @return Storage summary of Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":" public String toStorageString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"fuyiqiao"},"content":" int stat \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"fuyiqiao"},"content":" return \"D|\" + stat + \"|\" + this.description + \"|\" + this.end.format(Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"fuyiqiao":35}},{"path":"src/main/java/ballsorting/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" * Creates a new instance of Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" * @param description Summary of Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" * @param start Start date and time of Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" * @param end End date and time of Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" * Returns a String representation of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":" * @return String summary of Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":" return \"[E][\" + this.getStatusIcon() + \"] \" + this.description","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" + \" (from: \" + this.start.format(Ballsorter.outputFormatter)","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":" + \" to: \" + this.end.format(Ballsorter.outputFormatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"fuyiqiao"},"content":" * Returns a String representation that is stored in storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"fuyiqiao"},"content":" * @return String summary that is stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":" public String toStorageString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"fuyiqiao"},"content":" int stat \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"fuyiqiao"},"content":" return \"E|\" + stat + \"|\" + this.description + \"|\"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"fuyiqiao"},"content":" + this.start.format(Ballsorter.inputFormatter) + \"|\" + this.end.format(Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"fuyiqiao":40}},{"path":"src/main/java/ballsorting/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" private Scanner sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" * Creates a new instance of the Parser.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" * @param sc Scans the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" public Parser(Scanner sc) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" this.sc \u003d sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" * Parses the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" * @param input Command entered by user.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" * @param taskList Tasks in the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" public void parseUserInput(String input, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" taskList.printList();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"fuyiqiao"},"content":" int target \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"fuyiqiao"},"content":" taskList.markTask(target);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"fuyiqiao"},"content":" int target \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":" taskList.unmarkTask(target);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"fuyiqiao"},"content":" int target \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"fuyiqiao"},"content":" taskList.deleteTask(target);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.startsWith(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"fuyiqiao"},"content":" if (input.length() \u003d\u003d 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! Please enter a search term\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"fuyiqiao"},"content":" String searchString \u003d input.substring(4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"fuyiqiao"},"content":" if (searchString.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! Please enter a search term\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"fuyiqiao"},"content":" taskList.printSearchList(input.substring(5));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"fuyiqiao"},"content":" Task curr;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"fuyiqiao"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"fuyiqiao"},"content":" StringBuilder start \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"fuyiqiao"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"fuyiqiao"},"content":" String des \u003d input.substring(4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"fuyiqiao"},"content":" if (des.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d new Todo(des);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"fuyiqiao"},"content":" int i \u003d 9;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"fuyiqiao"},"content":" while (i \u003c input.length() \u0026\u0026 input.charAt(i) !\u003d \u0027/\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"fuyiqiao"},"content":" description.append(input.charAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"fuyiqiao"},"content":" i +\u003d 4;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"fuyiqiao"},"content":" if (description.toString().equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"fuyiqiao"},"content":" } else if (i \u003e\u003d input.length() || input.substring(i).equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! The deadline of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(input.substring(i), Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d new Deadline(description.toString(), endDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"fuyiqiao"},"content":" int i \u003d 6;","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"fuyiqiao"},"content":" while (i \u003c input.length() \u0026\u0026 input.charAt(i) !\u003d \u0027/\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"fuyiqiao"},"content":" description.append(input.charAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"fuyiqiao"},"content":" i +\u003d 6;","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"fuyiqiao"},"content":" while (i \u003c input.length() \u0026\u0026 input.charAt(i) !\u003d \u0027/\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"fuyiqiao"},"content":" start.append(input.charAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"fuyiqiao"},"content":" i +\u003d 4;","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"fuyiqiao"},"content":" if (description.toString().equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"fuyiqiao"},"content":" } else if (start.toString().equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! The start time of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"fuyiqiao"},"content":" } else if (i \u003e\u003d input.length() || input.substring(i).equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! The end time of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(start.toString(), Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(input.substring(i), Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d new Event(description.toString(), startDateTime, endDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"fuyiqiao"},"content":" if (curr !\u003d null) taskList.addTask(curr);","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":135}},{"path":"src/main/java/ballsorting/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" private File tmpDir;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" * Creates a new instance of Storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" * @param file File that stores previous chatbot information and will store current chatbot information.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" public Storage(File file) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" tmpDir \u003d file;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" * Loads the tasks stored in storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" * @param taskList Lists of tasks in chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":" * @throws FileNotFoundException","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" public void loadFile(TaskList taskList) throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" Scanner sc \u003d new Scanner(tmpDir);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":" int stat \u003d Integer.parseInt(input.substring(2, 3));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"fuyiqiao"},"content":" StringBuilder desc \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"fuyiqiao"},"content":" StringBuilder start \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":" Task curr;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"fuyiqiao"},"content":" if (input.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d new Todo(input.substring(4));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"fuyiqiao"},"content":" } else if (input.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":" int i \u003d 4;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"fuyiqiao"},"content":" while (input.charAt(i) !\u003d \u0027|\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"fuyiqiao"},"content":" desc.append(input.charAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(input.substring(i), Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d new Deadline(desc.toString(), endDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"fuyiqiao"},"content":" int i \u003d 4;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"fuyiqiao"},"content":" while (input.charAt(i) !\u003d \u0027|\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"fuyiqiao"},"content":" desc.append(input.charAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"fuyiqiao"},"content":" while (input.charAt(i) !\u003d \u0027|\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"fuyiqiao"},"content":" start.append(input.charAt(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"fuyiqiao"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(start.toString(), Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(input.substring(i), Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"fuyiqiao"},"content":" curr \u003d new Event(desc.toString(), startDateTime, endDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"fuyiqiao"},"content":" if (stat \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"fuyiqiao"},"content":" curr.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"fuyiqiao"},"content":" taskList.addTaskSilent(curr);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"fuyiqiao"},"content":" * Writes tasks in list to storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"fuyiqiao"},"content":" * @param taskList Tasks in chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"fuyiqiao"},"content":" public void storeList(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"fuyiqiao"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"fuyiqiao"},"content":" Files.write(tmpDir.toPath(), taskList.storeList().getBytes());","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"fuyiqiao"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":77}},{"path":"src/main/java/ballsorting/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" * Creates a new instance of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" * @param description Brief summary of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" * Returns an icon representation of the status of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" * @return String representation of Task status.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" * Marks the Task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" * @return String representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" public String markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"fuyiqiao"},"content":" return this.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"fuyiqiao"},"content":" * Unmarks the Task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"fuyiqiao"},"content":" * @return String representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"fuyiqiao"},"content":" public String markNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"fuyiqiao"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"fuyiqiao"},"content":" return this.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"fuyiqiao"},"content":" * Returns a String representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"fuyiqiao"},"content":" * @return String representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"fuyiqiao"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"fuyiqiao"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"fuyiqiao"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"fuyiqiao"},"content":" public String toStorageString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"fuyiqiao"},"content":" return \"Task\";","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"fuyiqiao":53}},{"path":"src/main/java/ballsorting/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" * Creates a new instance of TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" * Creates a new instance of TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" * @param tasks Tasks stored in storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" * Adds a new Task to the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" * @param t New Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"fuyiqiao"},"content":" * Adds a new Task to the TaskList without printing.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"fuyiqiao"},"content":" * @param t New Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"fuyiqiao"},"content":" public void addTaskSilent(Task t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"fuyiqiao"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"fuyiqiao"},"content":" * Deletes a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"fuyiqiao"},"content":" * @param target Index of the task in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"fuyiqiao"},"content":" public void deleteTask(int target) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"fuyiqiao"},"content":" if (target \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! This task does not exist\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(tasks.get(target).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"fuyiqiao"},"content":" tasks.remove(target);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"fuyiqiao"},"content":" * Marks a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"fuyiqiao"},"content":" * @param target Index of task in list.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"fuyiqiao"},"content":" public void markTask(int target) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"fuyiqiao"},"content":" if (target \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! This task does not exist\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(tasks.get(target).markDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"fuyiqiao"},"content":" * Unmarks a task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"fuyiqiao"},"content":" * @param target Index of task in list.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"fuyiqiao"},"content":" public void unmarkTask(int target) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"fuyiqiao"},"content":" if (target \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! This task does not exist\");","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(tasks.get(target).markNotDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(Ballsorter.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"fuyiqiao"},"content":" * Prints the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"fuyiqiao"},"content":" public void printList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"fuyiqiao"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"You do not have any tasks yet ☹\");","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"fuyiqiao"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"fuyiqiao"},"content":" int temp \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(temp + \". \" + tasks.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"fuyiqiao"},"content":" * Returns a String that can be stored in storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"fuyiqiao"},"content":" * @return String representation of all tasks stored in the list, formatted to be read on next startup.","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"fuyiqiao"},"content":" public String storeList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"fuyiqiao"},"content":" StringBuilder store \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"fuyiqiao"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"fuyiqiao"},"content":" store.append(String.format(tasks.get(i).toStorageString() + \"%n\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"fuyiqiao"},"content":" return store.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"fuyiqiao"},"content":" public void printSearchList(String searchString) {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"fuyiqiao"},"content":" ArrayList\u003cTask\u003e searchList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"fuyiqiao"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"fuyiqiao"},"content":" if (tasks.get(i).description.contains(searchString)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"fuyiqiao"},"content":" searchList.add(tasks.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"fuyiqiao"},"content":" if (searchList.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(\"☹ OOPS!!! No tasks found\");","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"fuyiqiao"},"content":" for (int j \u003d 0; j \u003c searchList.size(); j++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"fuyiqiao"},"content":" int temp \u003d j + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"fuyiqiao"},"content":" System.out.println(temp + \". \" + searchList.get(j).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":129}},{"path":"src/main/java/ballsorting/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":" * Creates a new instance of Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" * @param description Brief summary of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" * Returns a String representation of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" * @return String summary of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" return \"[T][\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" * Returns a String representation of the Todo that can be stored in Storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":" * @return Storage String of Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" public String toStorageString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" int stat \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":" return \"T|\" + stat + \"|\" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"fuyiqiao":28}},{"path":"src/main/java/ballsorting/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":" private Scanner sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" * Creates a new instance of Ui.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" * @param sc Scanner that scans user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" public Ui(Scanner sc) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" this.sc \u003d sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" * Scans the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" * @param taskList List of tasks in chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"fuyiqiao"},"content":" public void scan(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"fuyiqiao"},"content":" Parser parser \u003d new Parser(sc);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"fuyiqiao"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"fuyiqiao"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"fuyiqiao"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"fuyiqiao"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"fuyiqiao"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"fuyiqiao"},"content":" parser.parseUserInput(input, taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":28}},{"path":"src/test/java/ballsorting/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" public void Test1() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(\"2023-08-31 09:00\", Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" Task t \u003d new Deadline(\"buy milk\", dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" t.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" String expected \u003d \"[D][X] buy milk (by: 31 Aug, 09:00)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" assertEquals(expected, t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":16}},{"path":"src/test/java/ballsorting/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":"public class EventTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" public void test2() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime dateTime1 \u003d LocalDateTime.parse(\"2023-08-31 09:00\", Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":" LocalDateTime dateTime2 \u003d LocalDateTime.parse(\"2023-09-01 15:00\", Ballsorter.inputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"fuyiqiao"},"content":" Task t \u003d new Event(\"training\", dateTime1, dateTime2);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"fuyiqiao"},"content":" t.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"fuyiqiao"},"content":" t.markNotDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"fuyiqiao"},"content":" String expected \u003d \"[E][ ] training (from: 31 Aug, 09:00 to: 01 Sep, 15:00)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"fuyiqiao"},"content":" assertEquals(expected, t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":16}},{"path":"src/test/java/ballsorting/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"package ballsorting;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"fuyiqiao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"fuyiqiao"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"fuyiqiao"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"fuyiqiao"},"content":" public void dummyTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"fuyiqiao"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"fuyiqiao"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"fuyiqiao"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"fuyiqiao":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"fuyiqiao"},"content":"todo buy milk","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"fuyiqiao"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"fuyiqiao":2}},{"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":"fuyiqiao"},"content":"java -classpath ../bin Ballsorter \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":{"fuyiqiao":1,"-":37}}] diff --git a/fuyiqiao_ip_master/commits.json b/fuyiqiao_ip_master/commits.json index 7b08d513..f5aa3b83 100644 --- a/fuyiqiao_ip_master/commits.json +++ b/fuyiqiao_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"fuyiqiao":[{"date":"2023-08-24","commitResults":[{"hash":"1d108c8490cc73afa349ee906dd714451be8b34b","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":10}}},{"hash":"c1b3632ea7f0436c2f7ccf063a5a493ee1612dcc","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"81e18e5ef34d5748414aef90404a0e4769825e36","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"c5fae5f80834950f3438634eeb5d9c49798f6ba0","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":1}}},{"hash":"cc9cb5d412bdc744872a0e7460bbd946f9112422","isMergeCommit":false,"messageTitle":"A-Classes","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":13}}},{"hash":"34d409934026cb9b7ea9695d9944d5f7eda2aeb1","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"d8c01c5e4fa8743c6be7ed9e6d39af02f70ce1a8","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":79,"deletions":9},"sh":{"insertions":1,"deletions":1}}},{"hash":"fc596e244739d3c130697204309d95c218d8e9ca","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":14}}},{"hash":"bf6c238ca1f7ba30f32cf31fb3a07c9ceb5643cd","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":17}}}]},{"date":"2023-08-31","commitResults":[{"hash":"8278712490ab8261fac8c0682b0706e5896e2708","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":78,"deletions":1}}},{"hash":"17b7960ee46e2376404937b7462f14cb267f1d21","isMergeCommit":true,"messageTitle":"Merge branch-Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"7e355c516a74644c3f73db88557aed6bcf42df08","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":34,"deletions":14}}},{"hash":"6f10bc30e0fcbfcc0887e5b07a846680a7ed630c","isMergeCommit":true,"messageTitle":"Merge branch-Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"22f50baff6d0dada03fcb7e39f773bc6be183765","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":301,"deletions":222}}},{"hash":"949a1479908cc5af27f8b56672584200a42c3e59","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":2}}},{"hash":"f98b323092af5c5c917817b266cb70ef651651d8","isMergeCommit":true,"messageTitle":"Merge add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dfda3a9cc82da7ea1532bcd5e55211facb986d4a","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"java":{"insertions":1,"deletions":2}}},{"hash":"124def4d78bc53f108aba7342da3eb09b459224e","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":0}}},{"hash":"78554696ce587807a6872a21d10bb043eb0d5034","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"fuyiqiao":{"java":451,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":3,"txt":8}},"authorContributionVariance":{"fuyiqiao":27915.584},"authorDisplayNameMap":{"fuyiqiao":"CS2103T-T09-4 FU Y..QIAO"}} +{"authorDailyContributionsMap":{"fuyiqiao":[{"date":"2023-08-24","commitResults":[{"hash":"1d108c8490cc73afa349ee906dd714451be8b34b","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":10}}},{"hash":"c1b3632ea7f0436c2f7ccf063a5a493ee1612dcc","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"81e18e5ef34d5748414aef90404a0e4769825e36","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"c5fae5f80834950f3438634eeb5d9c49798f6ba0","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":1}}},{"hash":"cc9cb5d412bdc744872a0e7460bbd946f9112422","isMergeCommit":false,"messageTitle":"A-Classes","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":13}}},{"hash":"34d409934026cb9b7ea9695d9944d5f7eda2aeb1","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"d8c01c5e4fa8743c6be7ed9e6d39af02f70ce1a8","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":79,"deletions":9},"sh":{"insertions":1,"deletions":1}}},{"hash":"fc596e244739d3c130697204309d95c218d8e9ca","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":14}}},{"hash":"bf6c238ca1f7ba30f32cf31fb3a07c9ceb5643cd","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":17}}}]},{"date":"2023-08-31","commitResults":[{"hash":"8278712490ab8261fac8c0682b0706e5896e2708","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":78,"deletions":1}}},{"hash":"17b7960ee46e2376404937b7462f14cb267f1d21","isMergeCommit":true,"messageTitle":"Merge branch-Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"7e355c516a74644c3f73db88557aed6bcf42df08","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":34,"deletions":14}}},{"hash":"6f10bc30e0fcbfcc0887e5b07a846680a7ed630c","isMergeCommit":true,"messageTitle":"Merge branch-Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"22f50baff6d0dada03fcb7e39f773bc6be183765","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":301,"deletions":222}}},{"hash":"949a1479908cc5af27f8b56672584200a42c3e59","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":2}}},{"hash":"f98b323092af5c5c917817b266cb70ef651651d8","isMergeCommit":true,"messageTitle":"Merge add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dfda3a9cc82da7ea1532bcd5e55211facb986d4a","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"java":{"insertions":1,"deletions":2}}},{"hash":"124def4d78bc53f108aba7342da3eb09b459224e","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":0}}},{"hash":"78554696ce587807a6872a21d10bb043eb0d5034","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"5974e3992c6b4210cf5dfa3784437ff74dac77a5","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":164,"deletions":5}}},{"hash":"8bea2ddfc0c831f2efa8a6082785e6a3daa2ec7e","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":31}}},{"hash":"1843b2d5f168e8b510a977edbb436ca0a30643b4","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":31,"deletions":1}}},{"hash":"53fb85f273a88e7e83206f75e5925fd0da8b55fb","isMergeCommit":true,"messageTitle":"Merge branch-Level-9","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3582995d3bf370bc4dd73da5a44936457e266dc5","isMergeCommit":true,"messageTitle":"Merge branch-A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e1bd047bb9b66b430018e98fd3f5d61dbdb20c9f","isMergeCommit":false,"messageTitle":"resolve conflicts","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"241a8f558ac47b72d833bad6d35eff842ef98d00","isMergeCommit":true,"messageTitle":"resolve conflicts","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"fuyiqiao":{"java":639,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":3,"txt":9}},"authorContributionVariance":{"fuyiqiao":50808.758},"authorDisplayNameMap":{"fuyiqiao":"CS2103T-T09-4 FU Y..QIAO"}} diff --git a/iantsaii_ip_master/authorship.json b/iantsaii_ip_master/authorship.json index edae8bcc..21772767 100644 --- a/iantsaii_ip_master/authorship.json +++ b/iantsaii_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":"// mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" mainClass.set(\"rocket.Rocket\")","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"iantsaii":2,"-":41}},{"path":"src/main/java/rocket/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class AddCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" public AddCommand (Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" tasks.add(this.task);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":17}},{"path":"src/main/java/rocket/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" private boolean isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" public Command (boolean isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" this.isExit \u003d isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" return isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":17}},{"path":"src/main/java/rocket/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"//Solution below adapted from: https://nus-cs2103-ay2324s1.github.io/website/schedule/week2/project.html#:~:text\u003dExtension%3A%20A%2D-,Classes,-A%2DClasses","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" * Make deadline task","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" * @param description task description","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" * @param by task deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" public Deadline(String description, boolean isDone, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, h:mm a\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(formatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":25}},{"path":"src/main/java/rocket/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"public class DeadlineCommand extends AddCommand{","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" private LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" public DeadlineCommand (String description, boolean isDone, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" super(new Deadline(description, isDone, by));","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":12}},{"path":"src/main/java/rocket/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" public DeleteCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" public DeleteCommand(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" tasks.remove(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":24}},{"path":"src/main/java/rocket/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" * Make an event task","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" * @param description event description","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" * @param from event start","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" * @param to event end","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" public Event(String description, boolean isDone, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, h:mm a\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(formatter) + \" to: \" + to.format(formatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":27}},{"path":"src/main/java/rocket/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"public class EventCommand extends AddCommand{","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" public EventCommand (String description, boolean isDone, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" super(new Event(description, isDone, from, to));","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":14}},{"path":"src/main/java/rocket/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"public class ExitCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" public ExitCommand () {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" super(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" storage.saveTaskList(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":19}},{"path":"src/main/java/rocket/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" public ListCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" ui.showTasks(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":13}},{"path":"src/main/java/rocket/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" public MarkCommand(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":17}},{"path":"src/main/java/rocket/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" public static Command parse(String fullCommand) throws RocketException{","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" String command;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" String arguments;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" int firstWordIndex \u003d fullCommand.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" if (firstWordIndex \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" command \u003d fullCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" arguments \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" command \u003d fullCommand.substring(0, firstWordIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" arguments \u003d fullCommand.substring(firstWordIndex + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" case \"bye\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" case \"list\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" case \"mark\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" return new MarkCommand(Integer.parseInt(arguments) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" case \"unmark\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" return new UnmarkCommand(Integer.parseInt(arguments) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":" case \"delete\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" return new DeleteCommand(Integer.parseInt(arguments) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":" case \"todo\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" return new TodoCommand(arguments, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" case \"deadline\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" int descriptionIndex \u003d arguments.indexOf(\"by\") - 2;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":" String description \u003d arguments.substring(0, descriptionIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"iantsaii"},"content":" String deadline \u003d arguments.substring(descriptionIndex + 5)","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"iantsaii"},"content":" .replace(\u0027)\u0027, \u0027 \u0027)","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"iantsaii"},"content":" .trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"iantsaii"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The description of a deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"iantsaii"},"content":" if (deadline.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The deadline of a deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"iantsaii"},"content":" LocalDateTime by \u003d LocalDateTime.parse(deadline, Rocket.uglyDateTimeFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"iantsaii"},"content":" return new DeadlineCommand(description, false, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"iantsaii"},"content":" case \"event\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"iantsaii"},"content":" int descriptionIndex \u003d arguments.indexOf(\"from\") - 2;","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"iantsaii"},"content":" String description \u003d arguments.substring(0, descriptionIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"iantsaii"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The description of an event.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"iantsaii"},"content":" String duration \u003d arguments.substring(descriptionIndex + 7)","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"iantsaii"},"content":" .trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"iantsaii"},"content":" if (duration.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The duration of an event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"iantsaii"},"content":" int fromIndex \u003d duration.indexOf(\"to\") - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"iantsaii"},"content":" LocalDateTime from \u003d LocalDateTime.parse(","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"iantsaii"},"content":" duration.substring(0, fromIndex).trim(),","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"iantsaii"},"content":" Rocket.uglyDateTimeFormatter","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"iantsaii"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"iantsaii"},"content":" LocalDateTime to \u003d LocalDateTime.parse(","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"iantsaii"},"content":" duration.substring(fromIndex + 4)","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"iantsaii"},"content":" .replace(\u0027)\u0027, \u0027 \u0027)","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"iantsaii"},"content":" .trim(),","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"iantsaii"},"content":" Rocket.uglyDateTimeFormatter","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"iantsaii"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"iantsaii"},"content":" return new EventCommand(description, false, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"iantsaii"},"content":" default: {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"iantsaii"},"content":" throw new RocketInvalidCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":81}},{"path":"src/main/java/rocket/Rocket.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"public class Rocket {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" public static final DateTimeFormatter uglyDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" public static final DateTimeFormatter prettyDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, h:mm a\");","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" public Rocket(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" } catch (RocketException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":" ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" } catch (RocketException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" } finally {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"iantsaii"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"iantsaii"},"content":" new Rocket(\"data/tasks.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"iantsaii":47,"-":1}},{"path":"src/main/java/rocket/RocketException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class RocketException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" public RocketException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":7}},{"path":"src/main/java/rocket/RocketIllegalArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" * Takes the description of the illegal argument and says that it cannot be empty","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"public class RocketIllegalArgumentException extends RocketException{","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" public RocketIllegalArgumentException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" super(message + \" cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":10}},{"path":"src/main/java/rocket/RocketInvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class RocketInvalidCommandException extends RocketException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" public RocketInvalidCommandException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" super(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":7}},{"path":"src/main/java/rocket/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" private File file;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" public Storage (String filePath){","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" String directoryPath \u003d path.getFileName().toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" // Make new folder if it doesn\u0027t exist","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" directory.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" // Make new file if it doesn\u0027t exist","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" this.file \u003d file;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"iantsaii"},"content":" public ArrayList\u003cString\u003e load() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"iantsaii"},"content":" ArrayList\u003cString\u003e stringList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"iantsaii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"iantsaii"},"content":" Scanner fileScanner \u003d new Scanner(this.file);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"iantsaii"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"iantsaii"},"content":" String taskString \u003d fileScanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"iantsaii"},"content":" stringList.add(taskString);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"iantsaii"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"iantsaii"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"iantsaii"},"content":" return stringList;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"iantsaii"},"content":" * Saves tasklist in to a file","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"iantsaii"},"content":" * @param tasks the tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"iantsaii"},"content":" * @throws IOException occurs when there are problems writing to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"iantsaii"},"content":" public void saveTaskList(TaskList tasks) throws IOException{","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"iantsaii"},"content":" writeToFile(String.valueOf(tasks));","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"iantsaii"},"content":" * Writes a string to a file","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"iantsaii"},"content":" * @param textToAdd the text to be added to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"iantsaii"},"content":" * @throws IOException occurs when there are problems writing to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"iantsaii"},"content":" private void writeToFile(String textToAdd) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"iantsaii"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"iantsaii"},"content":" fw.write(textToAdd);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"iantsaii"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"iantsaii"},"content":" * Appends a string to a file","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"iantsaii"},"content":" * @param textToAppend the text to be appended to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"iantsaii"},"content":" * @throws IOException occurs when there are problems writing to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"iantsaii"},"content":" private void appendToFile(String textToAppend) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"iantsaii"},"content":" FileWriter fw \u003d new FileWriter(this.filePath, true); // create a FileWriter in append mode","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"iantsaii"},"content":" fw.write(textToAppend);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"iantsaii"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":84}},{"path":"src/main/java/rocket/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" //Solution below adapted from: https://nus-cs2103-ay2324s1.github.io/website/schedule/week2/project.html#:~:text\u003dPartial-,solution,-Duke%20Level%2D4","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" * Gets status Icon","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" * @return status icon","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" * Marks task as done","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" * Marks task as undone","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":39}},{"path":"src/main/java/rocket/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" public TaskList (ArrayList\u003cString\u003e stringList) throws RocketIllegalArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" for (String s : stringList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" this.tasks.add(stringToTask(s));","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" public TaskList () {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" private static Task stringToTask(String taskString) throws RocketIllegalArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" char taskType \u003d taskString.charAt(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" boolean isDone \u003d taskString.charAt(4) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" if (taskType \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" return new Todo(taskString.substring(7), isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" } else if (taskType \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":" String arguments \u003d taskString.substring(7);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" int descriptionIndex \u003d arguments.indexOf(\"by\") - 2;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" String description \u003d arguments.substring(0, descriptionIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" String deadline \u003d arguments.substring(descriptionIndex + 5)","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":" .replace(\u0027)\u0027, \u0027 \u0027)","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" .trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The description of a deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" if (deadline.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The deadline of a deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":" LocalDateTime by \u003d LocalDateTime.parse(deadline, Rocket.prettyDateTimeFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"iantsaii"},"content":" return new Deadline(description, isDone, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"iantsaii"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"iantsaii"},"content":" String arguments \u003d taskString.substring(7);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"iantsaii"},"content":" int descriptionIndex \u003d arguments.indexOf(\"from\") - 2;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"iantsaii"},"content":" String description \u003d arguments.substring(0, descriptionIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"iantsaii"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The description of an event.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"iantsaii"},"content":" String duration \u003d arguments.substring(descriptionIndex + 7)","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"iantsaii"},"content":" .trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"iantsaii"},"content":" if (duration.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The duration of an event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"iantsaii"},"content":" int fromIndex \u003d duration.indexOf(\"to\") - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"iantsaii"},"content":" LocalDateTime from \u003d LocalDateTime.parse(","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"iantsaii"},"content":" duration.substring(0, fromIndex).trim(),","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"iantsaii"},"content":" Rocket.prettyDateTimeFormatter","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"iantsaii"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"iantsaii"},"content":" LocalDateTime to \u003d LocalDateTime.parse(","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"iantsaii"},"content":" duration.substring(fromIndex + 4)","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"iantsaii"},"content":" .replace(\u0027)\u0027, \u0027 \u0027)","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"iantsaii"},"content":" .trim(),","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"iantsaii"},"content":" Rocket.prettyDateTimeFormatter","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"iantsaii"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"iantsaii"},"content":" return new Event(description, isDone, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"iantsaii"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"iantsaii"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"iantsaii"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"iantsaii"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"iantsaii"},"content":" public Task get(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"iantsaii"},"content":" return this.tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"iantsaii"},"content":" public void remove(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"iantsaii"},"content":" this.tasks.remove(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"iantsaii"},"content":" public String toString(){","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"iantsaii"},"content":" StringBuilder tasksString \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"iantsaii"},"content":" for (Task task: tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"iantsaii"},"content":" tasksString.append(String.valueOf(task));","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"iantsaii"},"content":" tasksString.append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"iantsaii"},"content":" return String.valueOf(tasksString);","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":92}},{"path":"src/main/java/rocket/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" * Make new Rocket.Todo","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" * @param description todo description","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":16}},{"path":"src/main/java/rocket/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class TodoCommand extends AddCommand {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" public TodoCommand (String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" super(new Todo(description, isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":9}},{"path":"src/main/java/rocket/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" private static final String LINE \u003d \" ____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" showError(\"Files were unable to load\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Hello! I\u0027m Rocket\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":" * Prints out a nicely-formatted error message","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":" * @param message the error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" public void showError(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" ☹ OOPS!!! \" + message);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"iantsaii"},"content":" public void showTasks(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"iantsaii"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"iantsaii"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" \" + (i + 1) + \".\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":48}},{"path":"src/main/java/rocket/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" public UnmarkCommand(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" task.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"deadline return book /by 15-10-2023 19:45","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"event project meeting /from 16-10-2023 14:00 /to 16-10-2023 16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"mark 1","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"unmark 1","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"delete 1","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":8}},{"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":"iantsaii"},"content":"java -classpath ../bin Rocket \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":{"iantsaii":1,"-":37}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" mainClass.set(\"rocket.Rocket\")","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" mainClassName \u003d \u0027rocket.Rocket\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" archiveBaseName \u003d \"rocket\"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"iantsaii":4,"-":40}},{"path":"src/main/java/rocket/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class AddCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" public AddCommand (Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" * Informs the user that task has been added, and tells them how many tasks are in the list","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" * @param tasks Modifies or uses the tasklist if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" * @param ui Displays to the UI if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" * @param storage Stores and retrieves data from the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" tasks.add(this.task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":23}},{"path":"src/main/java/rocket/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" private boolean isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" public Command (boolean isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" this.isExit \u003d isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" * Executes the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" * @param tasks Modifies or uses the tasklist if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" * @param ui Displays to the UI if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" * @param storage Stores and retrieves data from the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" * Tells Rocket if the command is an exit command","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" * @return a boolean: true if the command is an exit commnad, false if not","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" return isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":27}},{"path":"src/main/java/rocket/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"//Solution below adapted from: https://nus-cs2103-ay2324s1.github.io/website/schedule/week2/project.html#:~:text\u003dExtension%3A%20A%2D-,Classes,-A%2DClasses","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" * Make deadline task","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" * @param description task description","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" * @param by task deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" public Deadline(String description, boolean isDone, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, h:mm a\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(formatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":25}},{"path":"src/main/java/rocket/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"public class DeadlineCommand extends AddCommand{","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" private LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" * Create deadline command.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" * @param description task description.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" * @param isDone whether the task has been done.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" * @param by the deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" public DeadlineCommand (String description, boolean isDone, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" super(new Deadline(description, isDone, by));","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":18}},{"path":"src/main/java/rocket/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" public DeleteCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" * Creates delete command","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" * @param taskNumber the task number.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" public DeleteCommand(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" * executes delete command","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" * @param tasks Modifies or uses the tasklist if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" * @param ui Displays to the UI if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" * @param storage Stores and retrieves data from the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" tasks.remove(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":35}},{"path":"src/main/java/rocket/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" * Make an event task","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" * @param description event description","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" * @param from event start","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" * @param to event end","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" public Event(String description, boolean isDone, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, h:mm a\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(formatter) + \" to: \" + to.format(formatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":27}},{"path":"src/main/java/rocket/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"public class EventCommand extends AddCommand{","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" * Creates event command.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" * @param description event description.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" * @param isDone whether the event is over.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" * @param from start date.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" * @param to end date.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" public EventCommand (String description, boolean isDone, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" super(new Event(description, isDone, from, to));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":21}},{"path":"src/main/java/rocket/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"public class ExitCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" public ExitCommand () {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" super(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" * Executes Exit command","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" * @param tasks Modifies or uses the tasklist if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" * @param ui Displays to the UI if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" * @param storage Stores and retrieves data from the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" storage.saveTaskList(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":25}},{"path":"src/main/java/rocket/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" private String stringToFind;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" public FindCommand (String stringToFind) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" this.stringToFind \u003d stringToFind;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" TaskList matchingTasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" if (String.valueOf(tasks.get(i)).contains(stringToFind)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" matchingTasks.add(tasks.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" for (int i \u003d 0; i \u003c matchingTasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" \" + (i + 1) + \". \" + matchingTasks.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":24}},{"path":"src/main/java/rocket/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" public ListCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" * Execute list command","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" * @param tasks Modifies or uses the tasklist if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" * @param ui Displays to the UI if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" * @param storage Stores and retrieves data from the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" ui.showTasks(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":19}},{"path":"src/main/java/rocket/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" * Creates mark command","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" * @param taskNumber task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" public MarkCommand(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" * Executes mark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" * @param tasks Modifies or uses the tasklist if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" * @param ui Displays to the UI if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" * @param storage Stores and retrieves data from the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":28}},{"path":"src/main/java/rocket/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" * Parses the line command that the user types into a Command","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" * @param fullCommand the String of user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" * @return a Command that will be executed.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" * @throws RocketException if user enters an invalid command.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" public static Command parse(String fullCommand) throws RocketException{","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" String command;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" String arguments;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" int firstWordIndex \u003d fullCommand.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" if (firstWordIndex \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" command \u003d fullCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" arguments \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" command \u003d fullCommand.substring(0, firstWordIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" arguments \u003d fullCommand.substring(firstWordIndex + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" case \"bye\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" case \"list\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":" case \"find\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" return new FindCommand(arguments);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":" case \"mark\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" return new MarkCommand(Integer.parseInt(arguments) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" case \"unmark\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" return new UnmarkCommand(Integer.parseInt(arguments) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"iantsaii"},"content":" case \"delete\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"iantsaii"},"content":" return new DeleteCommand(Integer.parseInt(arguments) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"iantsaii"},"content":" case \"todo\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"iantsaii"},"content":" return new TodoCommand(arguments, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"iantsaii"},"content":" case \"deadline\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"iantsaii"},"content":" int descriptionIndex \u003d arguments.indexOf(\"by\") - 2;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"iantsaii"},"content":" String description \u003d arguments.substring(0, descriptionIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"iantsaii"},"content":" String deadline \u003d arguments.substring(descriptionIndex + 5)","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"iantsaii"},"content":" .replace(\u0027)\u0027, \u0027 \u0027)","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"iantsaii"},"content":" .trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"iantsaii"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The description of a deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"iantsaii"},"content":" if (deadline.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The deadline of a deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"iantsaii"},"content":" LocalDateTime by \u003d LocalDateTime.parse(deadline, Rocket.uglyDateTimeFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"iantsaii"},"content":" return new DeadlineCommand(description, false, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"iantsaii"},"content":" case \"event\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"iantsaii"},"content":" int descriptionIndex \u003d arguments.indexOf(\"from\") - 2;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"iantsaii"},"content":" String description \u003d arguments.substring(0, descriptionIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"iantsaii"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The description of an event.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"iantsaii"},"content":" String duration \u003d arguments.substring(descriptionIndex + 7)","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"iantsaii"},"content":" .trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"iantsaii"},"content":" if (duration.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The duration of an event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"iantsaii"},"content":" int fromIndex \u003d duration.indexOf(\"to\") - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"iantsaii"},"content":" LocalDateTime from \u003d LocalDateTime.parse(","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"iantsaii"},"content":" duration.substring(0, fromIndex).trim(),","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"iantsaii"},"content":" Rocket.uglyDateTimeFormatter","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"iantsaii"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"iantsaii"},"content":" LocalDateTime to \u003d LocalDateTime.parse(","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"iantsaii"},"content":" duration.substring(fromIndex + 4)","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"iantsaii"},"content":" .replace(\u0027)\u0027, \u0027 \u0027)","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"iantsaii"},"content":" .trim(),","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"iantsaii"},"content":" Rocket.uglyDateTimeFormatter","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"iantsaii"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"iantsaii"},"content":" return new EventCommand(description, false, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"iantsaii"},"content":" default: {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"iantsaii"},"content":" throw new RocketInvalidCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":91}},{"path":"src/main/java/rocket/Rocket.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"public class Rocket {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" public static final DateTimeFormatter uglyDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" public static final DateTimeFormatter prettyDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, h:mm a\");","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" * Create new chatbot","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" * @param filePath filePath where saved tasks should be stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" public Rocket(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" } catch (RocketException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":" * Run the chatbot","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":" ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"iantsaii"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"iantsaii"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"iantsaii"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"iantsaii"},"content":" } catch (RocketException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"iantsaii"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"iantsaii"},"content":" } finally {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"iantsaii"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"iantsaii"},"content":" * Run a new chatbot","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"iantsaii"},"content":" * @param args idk.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"iantsaii"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"iantsaii"},"content":" new Rocket(\"data/tasks.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"iantsaii":58,"-":1}},{"path":"src/main/java/rocket/RocketException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class RocketException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" public RocketException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":7}},{"path":"src/main/java/rocket/RocketIllegalArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" * Takes the description of the illegal argument and says that it cannot be empty","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"public class RocketIllegalArgumentException extends RocketException{","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" public RocketIllegalArgumentException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" super(message + \" cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":10}},{"path":"src/main/java/rocket/RocketInvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class RocketInvalidCommandException extends RocketException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" public RocketInvalidCommandException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" super(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":7}},{"path":"src/main/java/rocket/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" private File file;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" * Create new storage at the filePath specified","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" * @param filePath path to store the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" public Storage (String filePath){","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" Path parent \u003d path.getParent();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" String directoryPath \u003d parent.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":" // Make new folder if it doesn\u0027t exist","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" directory.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":" // Make new file if it doesn\u0027t exist","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"iantsaii"},"content":" this.file \u003d file;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"iantsaii"},"content":" * Load from the storage","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"iantsaii"},"content":" * @return a list of strings.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"iantsaii"},"content":" public ArrayList\u003cString\u003e load() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"iantsaii"},"content":" ArrayList\u003cString\u003e stringList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"iantsaii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"iantsaii"},"content":" Scanner fileScanner \u003d new Scanner(this.file);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"iantsaii"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"iantsaii"},"content":" String taskString \u003d fileScanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"iantsaii"},"content":" stringList.add(taskString);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"iantsaii"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"iantsaii"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"iantsaii"},"content":" return stringList;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"iantsaii"},"content":" * Saves tasklist in to a file","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"iantsaii"},"content":" * @param tasks the tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"iantsaii"},"content":" * @throws IOException occurs when there are problems writing to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"iantsaii"},"content":" public void saveTaskList(TaskList tasks) throws IOException{","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"iantsaii"},"content":" writeToFile(String.valueOf(tasks));","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"iantsaii"},"content":" * Writes a string to a file","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"iantsaii"},"content":" * @param textToAdd the text to be added to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"iantsaii"},"content":" * @throws IOException occurs when there are problems writing to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"iantsaii"},"content":" private void writeToFile(String textToAdd) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"iantsaii"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"iantsaii"},"content":" fw.write(textToAdd);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"iantsaii"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"iantsaii"},"content":" * Appends a string to a file","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"iantsaii"},"content":" * @param textToAppend the text to be appended to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"iantsaii"},"content":" * @throws IOException occurs when there are problems writing to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"iantsaii"},"content":" private void appendToFile(String textToAppend) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"iantsaii"},"content":" FileWriter fw \u003d new FileWriter(this.filePath, true); // create a FileWriter in append mode","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"iantsaii"},"content":" fw.write(textToAppend);","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"iantsaii"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":93}},{"path":"src/main/java/rocket/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" //Solution below adapted from: https://nus-cs2103-ay2324s1.github.io/website/schedule/week2/project.html#:~:text\u003dPartial-,solution,-Duke%20Level%2D4","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" * Gets status Icon","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" * @return status icon","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" * Marks task as done","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" * Marks task as undone","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":39}},{"path":"src/main/java/rocket/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" * Create new task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" * @param stringList list of string representing tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" * @throws RocketIllegalArgumentException if strings can\u0027t be converted into tasks (invalid strings).","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" public TaskList (ArrayList\u003cString\u003e stringList) throws RocketIllegalArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" for (String s : stringList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" this.tasks.add(stringToTask(s));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" * Create empty task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" public TaskList () {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" private static Task stringToTask(String taskString) throws RocketIllegalArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" char taskType \u003d taskString.charAt(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":" boolean isDone \u003d taskString.charAt(4) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" if (taskType \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":" return new Todo(taskString.substring(7), isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":" } else if (taskType \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" String arguments \u003d taskString.substring(7);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" int descriptionIndex \u003d arguments.indexOf(\"by\") - 2;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" String description \u003d arguments.substring(0, descriptionIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" String deadline \u003d arguments.substring(descriptionIndex + 5)","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":" .replace(\u0027)\u0027, \u0027 \u0027)","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"iantsaii"},"content":" .trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"iantsaii"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The description of a deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"iantsaii"},"content":" if (deadline.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The deadline of a deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"iantsaii"},"content":" LocalDateTime by \u003d LocalDateTime.parse(deadline, Rocket.prettyDateTimeFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"iantsaii"},"content":" return new Deadline(description, isDone, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"iantsaii"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"iantsaii"},"content":" String arguments \u003d taskString.substring(7);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"iantsaii"},"content":" int descriptionIndex \u003d arguments.indexOf(\"from\") - 2;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"iantsaii"},"content":" String description \u003d arguments.substring(0, descriptionIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"iantsaii"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The description of an event.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"iantsaii"},"content":" String duration \u003d arguments.substring(descriptionIndex + 7)","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"iantsaii"},"content":" .trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"iantsaii"},"content":" if (duration.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"iantsaii"},"content":" throw new RocketIllegalArgumentException(\"The duration of an event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"iantsaii"},"content":" int fromIndex \u003d duration.indexOf(\"to\") - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"iantsaii"},"content":" LocalDateTime from \u003d LocalDateTime.parse(","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"iantsaii"},"content":" duration.substring(0, fromIndex).trim(),","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"iantsaii"},"content":" Rocket.prettyDateTimeFormatter","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"iantsaii"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"iantsaii"},"content":" LocalDateTime to \u003d LocalDateTime.parse(","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"iantsaii"},"content":" duration.substring(fromIndex + 4)","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"iantsaii"},"content":" .replace(\u0027)\u0027, \u0027 \u0027)","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"iantsaii"},"content":" .trim(),","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"iantsaii"},"content":" Rocket.prettyDateTimeFormatter","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"iantsaii"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"iantsaii"},"content":" return new Event(description, isDone, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"iantsaii"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"iantsaii"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"iantsaii"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"iantsaii"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"iantsaii"},"content":" public Task get(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"iantsaii"},"content":" return this.tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"iantsaii"},"content":" public void remove(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"iantsaii"},"content":" this.tasks.remove(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"iantsaii"},"content":" public String toString(){","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"iantsaii"},"content":" StringBuilder tasksString \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"iantsaii"},"content":" for (Task task: tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"iantsaii"},"content":" tasksString.append(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"iantsaii"},"content":" tasksString.append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"iantsaii"},"content":" return String.valueOf(tasksString);","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":100}},{"path":"src/main/java/rocket/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":" * Make new Rocket.Todo","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" * @param description todo description","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":16}},{"path":"src/main/java/rocket/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class TodoCommand extends AddCommand {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" * Creates todo command.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" * @param description the description of the todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" * @param isDone whether the todo has been completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" public TodoCommand (String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" super(new Todo(description, isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":14}},{"path":"src/main/java/rocket/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" private static final String LINE \u003d \" ____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" * Create Ui that interacts with user","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" showError(\"Files were unable to load\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" Hello! I\u0027m Rocket\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":" * Prints out a nicely-formatted error message","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" * @param message the error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":" public void showError(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"iantsaii"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" ☹ OOPS!!! \" + message);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"iantsaii"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"iantsaii"},"content":" public void showTasks(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"iantsaii"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"iantsaii"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" \" + (i + 1) + \".\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":51}},{"path":"src/main/java/rocket/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":" * Create unmark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":" * @param taskNumber task to be unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" public UnmarkCommand(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" super(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" * executes unmark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" * @param tasks Modifies or uses the tasklist if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" * @param ui Displays to the UI if needed.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" * @param storage Stores and retrieves data from the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" task.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":28}},{"path":"src/test/java/rocket/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket; //same package as the class being tested","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":" public void toString_todoDeadlineEvent_success(){","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":" ArrayList\u003cString\u003e stringList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" stringList.add(\"[T][ ] borrow book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" stringList.add(\"[D][ ] return book (by: Oct 15 2023, 7:45 PM)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" stringList.add(\"[E][ ] project meeting (from: Oct 16 2023, 2:00 PM to: Oct 16 2023, 4:00 PM)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" tasks \u003d new TaskList(stringList);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" } catch (RocketIllegalArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" assertEquals(\"[T][ ] borrow book\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" \"[D][ ] return book (by: Oct 15 2023, 7:45 PM)\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" \"[E][ ] project meeting (from: Oct 16 2023, 2:00 PM to: Oct 16 2023, 4:00 PM)\\n\",","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" String.valueOf(tasks));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":28}},{"path":"src/test/java/rocket/UiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"package rocket;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"iantsaii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"iantsaii"},"content":"public class UiTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"iantsaii"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"iantsaii"},"content":" public void showTasks_sampleTasks_success(){","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"iantsaii"},"content":" ArrayList\u003cString\u003e stringList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"iantsaii"},"content":" stringList.add(\"[T][ ] borrow book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"iantsaii"},"content":" stringList.add(\"[D][ ] return book (by: Oct 15 2023, 7:45 PM)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"iantsaii"},"content":" stringList.add(\"[E][ ] project meeting (from: Oct 16 2023, 2:00 PM to: Oct 16 2023, 4:00 PM)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"iantsaii"},"content":" TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"iantsaii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"iantsaii"},"content":" tasks \u003d new TaskList(stringList);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"iantsaii"},"content":" } catch (RocketIllegalArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"iantsaii"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"iantsaii"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"iantsaii"},"content":" ui.showTasks(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"iantsaii"},"content":" ByteArrayOutputStream outputStream \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"iantsaii"},"content":" PrintStream originalOut \u003d System.out;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"iantsaii"},"content":" System.setOut(new PrintStream(outputStream));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"iantsaii"},"content":" ui.showTasks(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"iantsaii"},"content":" System.setOut(originalOut);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"iantsaii"},"content":" String printedOutput \u003d outputStream.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"iantsaii"},"content":" String expectedOutput \u003d \" 1.[T][ ] borrow book\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"iantsaii"},"content":" \" 2.[D][ ] return book (by: Oct 15 2023, 7:45 PM)\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"iantsaii"},"content":" \" 3.[E][ ] project meeting (from: Oct 16 2023, 2:00 PM to: Oct 16 2023, 4:00 PM)\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"iantsaii"},"content":" assertEquals(expectedOutput, printedOutput);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"iantsaii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"iantsaii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"iantsaii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"iantsaii":47}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"iantsaii"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"iantsaii"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"iantsaii"},"content":"deadline return book /by 15-10-2023 19:45","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"iantsaii"},"content":"event project meeting /from 16-10-2023 14:00 /to 16-10-2023 16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"iantsaii"},"content":"mark 1","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"iantsaii"},"content":"unmark 1","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"iantsaii"},"content":"delete 1","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"iantsaii"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"iantsaii":8}},{"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":"iantsaii"},"content":"java -classpath ../bin Rocket \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":{"iantsaii":1,"-":37}}] diff --git a/iantsaii_ip_master/commits.json b/iantsaii_ip_master/commits.json index f75e678f..4282c864 100644 --- a/iantsaii_ip_master/commits.json +++ b/iantsaii_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"iantsaii":[{"date":"2023-08-24","commitResults":[{"hash":"83e64ed96a333c491712ad840377da42424d7d9f","isMergeCommit":false,"messageTitle":"Changed name from Duke to Yello","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"97da718ce546a965553a0eceb1fe83f0c0c920fe","isMergeCommit":false,"messageTitle":"Greet and Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"e25afd7afe6c1ac59faa7a2a89e0d22475c83138","isMergeCommit":false,"messageTitle":"Renamed chatbot from Yello to Rocket","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"f5d3e52b78b2fdc4331c4109e979f8c530844ee1","isMergeCommit":false,"messageTitle":"Echo back one command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":4}}},{"hash":"ef7e52819c52e8d7455751e7adeaaf20ce84f6de","isMergeCommit":false,"messageTitle":"Echo back multiple commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"9fcd4c247c42e6f5b61378e690a39fce3a1c9ede","isMergeCommit":false,"messageTitle":"Edited while loop","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":4}}},{"hash":"320a8d46dd37076dc3163b3872ba5d101d10072c","isMergeCommit":false,"messageTitle":"Add and List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}},{"hash":"73865ee61afd76896b4bd49440874aea2a0b4aaf","isMergeCommit":false,"messageTitle":"Add and use Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":4}}},{"hash":"67840425b8a8d8ffab88edc45ca0a9a01ac17612","isMergeCommit":false,"messageTitle":"Display tasks as Strings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"f7c88ed3ead45a957d78fae07004ec9c22f9624b","isMergeCommit":false,"messageTitle":"Add ability to mark and unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":6}}},{"hash":"5aa6d880af3098b800e3b68325f3f242d0c9bf93","isMergeCommit":false,"messageTitle":"Implement Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":17}}},{"hash":"f92e3f5aa7d2da0d0a774b293afaa0d9a65b5ea2","isMergeCommit":false,"messageTitle":"Use switch instead of multiple if statements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":50}}},{"hash":"3f792edcc7d8c646d9ca3f5512f59a19b8af82c6","isMergeCommit":false,"messageTitle":"Implement Todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":2}}},{"hash":"f1c1b1e3930d1f8f27bf9bd2d3bc92cfbbda634b","isMergeCommit":false,"messageTitle":"Implement Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"8ab871a036ea24190934f9b9f10f5979890bb195","isMergeCommit":false,"messageTitle":"Fix minor problem","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"1fc3f7e3ae99949b1e23f9c4debd2446c8b15d53","isMergeCommit":false,"messageTitle":"Implement testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":1,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"fd7d508b4f9c7a4bfb346e45ab93a16622263edb","isMergeCommit":false,"messageTitle":"Implement Exception Handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":131,"deletions":82}}},{"hash":"2c05fdcc50ebaaa6d091c432ebcca97e9740703b","isMergeCommit":false,"messageTitle":"Implement delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"2de07cae7ced41bb35623aa55a79f539b3728a99","isMergeCommit":false,"messageTitle":"Write Java Docs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":2}}},{"hash":"e981b6ebe2b9eeb19a05d056246bf64ca973a71e","isMergeCommit":false,"messageTitle":"Fix minor problems","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2023-08-31","commitResults":[{"hash":"da62754697d30fa84e2559d153d9bbd37ea0fdd4","isMergeCommit":false,"messageTitle":"Reformat code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":90}}},{"hash":"fcf87d487d4f8d0bcd5d100e229f2f39b31a04c3","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":30,"deletions":15}}},{"hash":"0de4e9728b17b83b9a862ed6795a82d79cfd4ed6","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":47}}},{"hash":"818f43f306c2a0af00658b9d32f2ca1cfe7c9fa2","isMergeCommit":false,"messageTitle":"Add ability to save task list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":14}}},{"hash":"b028f9086856b6dd6d7089ebc07760b885ab9444","isMergeCommit":false,"messageTitle":"Add ability to retrieve task list from hard disk","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":70}}},{"hash":"1d4c493f1114bf4169759927e9ac5c9587a553d7","isMergeCommit":false,"messageTitle":"Fix extra brackets added to retrieved events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"0958d64d60350e51833f90b579e82ca84b92ce87","isMergeCommit":false,"messageTitle":"Make function that can convert string to datetime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"d1b21e0af2b79611e831f3a2e2002676a4df957b","isMergeCommit":false,"messageTitle":"Make function that can convert dateTime to nicely formatted string","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":2}}},{"hash":"e210346936a823a33ee3fd5647c36b7447163134","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":30}}},{"hash":"64905988c5f0e1135298eec3039f982564154a52","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"5479e1503bb46e7ded5dd66ebdc0d77d5e342d36","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"67baeb1c2753e9921dc75c9145488d7d98466c32","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"51cb196bad814505f931d07731b339e77db93cd2","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","tags":["Complete-Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"8613917ce26a597a9ffe4883e03040e1bba6a383","isMergeCommit":false,"messageTitle":"Implement more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":467,"deletions":356}}},{"hash":"a3f45c0df0e0c067c2d9a73b130ca7776d6d439a","isMergeCommit":false,"messageTitle":"Add all files to package \"rocket\"","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":15}}},{"hash":"7104fbf9bfbb8cb69ec7829c482395dd48dcaa0e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"95d252535f87c69707fd815590f02aa9a27c9e2b","isMergeCommit":false,"messageTitle":"Use Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":22,"deletions":40}}}]}]},"authorFileTypeContributionMap":{"iantsaii":{"java":642,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":2,"txt":8}},"authorContributionVariance":{"iantsaii":112248.77},"authorDisplayNameMap":{"iantsaii":"CS2103T-F11-3 TSAI..URRE"}} +{"authorDailyContributionsMap":{"iantsaii":[{"date":"2023-08-24","commitResults":[{"hash":"83e64ed96a333c491712ad840377da42424d7d9f","isMergeCommit":false,"messageTitle":"Changed name from Duke to Yello","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"97da718ce546a965553a0eceb1fe83f0c0c920fe","isMergeCommit":false,"messageTitle":"Greet and Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"e25afd7afe6c1ac59faa7a2a89e0d22475c83138","isMergeCommit":false,"messageTitle":"Renamed chatbot from Yello to Rocket","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"f5d3e52b78b2fdc4331c4109e979f8c530844ee1","isMergeCommit":false,"messageTitle":"Echo back one command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":4}}},{"hash":"ef7e52819c52e8d7455751e7adeaaf20ce84f6de","isMergeCommit":false,"messageTitle":"Echo back multiple commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"9fcd4c247c42e6f5b61378e690a39fce3a1c9ede","isMergeCommit":false,"messageTitle":"Edited while loop","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":4}}},{"hash":"320a8d46dd37076dc3163b3872ba5d101d10072c","isMergeCommit":false,"messageTitle":"Add and List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}},{"hash":"73865ee61afd76896b4bd49440874aea2a0b4aaf","isMergeCommit":false,"messageTitle":"Add and use Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":4}}},{"hash":"67840425b8a8d8ffab88edc45ca0a9a01ac17612","isMergeCommit":false,"messageTitle":"Display tasks as Strings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"f7c88ed3ead45a957d78fae07004ec9c22f9624b","isMergeCommit":false,"messageTitle":"Add ability to mark and unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":6}}},{"hash":"5aa6d880af3098b800e3b68325f3f242d0c9bf93","isMergeCommit":false,"messageTitle":"Implement Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":17}}},{"hash":"f92e3f5aa7d2da0d0a774b293afaa0d9a65b5ea2","isMergeCommit":false,"messageTitle":"Use switch instead of multiple if statements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":50}}},{"hash":"3f792edcc7d8c646d9ca3f5512f59a19b8af82c6","isMergeCommit":false,"messageTitle":"Implement Todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":2}}},{"hash":"f1c1b1e3930d1f8f27bf9bd2d3bc92cfbbda634b","isMergeCommit":false,"messageTitle":"Implement Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"8ab871a036ea24190934f9b9f10f5979890bb195","isMergeCommit":false,"messageTitle":"Fix minor problem","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"1fc3f7e3ae99949b1e23f9c4debd2446c8b15d53","isMergeCommit":false,"messageTitle":"Implement testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":1,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"fd7d508b4f9c7a4bfb346e45ab93a16622263edb","isMergeCommit":false,"messageTitle":"Implement Exception Handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":131,"deletions":82}}},{"hash":"2c05fdcc50ebaaa6d091c432ebcca97e9740703b","isMergeCommit":false,"messageTitle":"Implement delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"2de07cae7ced41bb35623aa55a79f539b3728a99","isMergeCommit":false,"messageTitle":"Write Java Docs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":2}}},{"hash":"e981b6ebe2b9eeb19a05d056246bf64ca973a71e","isMergeCommit":false,"messageTitle":"Fix minor problems","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2023-08-31","commitResults":[{"hash":"da62754697d30fa84e2559d153d9bbd37ea0fdd4","isMergeCommit":false,"messageTitle":"Reformat code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":90}}},{"hash":"fcf87d487d4f8d0bcd5d100e229f2f39b31a04c3","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":30,"deletions":15}}},{"hash":"0de4e9728b17b83b9a862ed6795a82d79cfd4ed6","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":47}}},{"hash":"818f43f306c2a0af00658b9d32f2ca1cfe7c9fa2","isMergeCommit":false,"messageTitle":"Add ability to save task list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":14}}},{"hash":"b028f9086856b6dd6d7089ebc07760b885ab9444","isMergeCommit":false,"messageTitle":"Add ability to retrieve task list from hard disk","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":70}}},{"hash":"1d4c493f1114bf4169759927e9ac5c9587a553d7","isMergeCommit":false,"messageTitle":"Fix extra brackets added to retrieved events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"0958d64d60350e51833f90b579e82ca84b92ce87","isMergeCommit":false,"messageTitle":"Make function that can convert string to datetime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"d1b21e0af2b79611e831f3a2e2002676a4df957b","isMergeCommit":false,"messageTitle":"Make function that can convert dateTime to nicely formatted string","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":2}}},{"hash":"e210346936a823a33ee3fd5647c36b7447163134","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":30}}},{"hash":"64905988c5f0e1135298eec3039f982564154a52","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"5479e1503bb46e7ded5dd66ebdc0d77d5e342d36","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"67baeb1c2753e9921dc75c9145488d7d98466c32","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"51cb196bad814505f931d07731b339e77db93cd2","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","tags":["Complete-Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"8613917ce26a597a9ffe4883e03040e1bba6a383","isMergeCommit":false,"messageTitle":"Implement more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":467,"deletions":356}}},{"hash":"a3f45c0df0e0c067c2d9a73b130ca7776d6d439a","isMergeCommit":false,"messageTitle":"Add all files to package \"rocket\"","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":15}}},{"hash":"7104fbf9bfbb8cb69ec7829c482395dd48dcaa0e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"95d252535f87c69707fd815590f02aa9a27c9e2b","isMergeCommit":false,"messageTitle":"Use Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":22,"deletions":40}}},{"hash":"369f886290f035a1a19e438cf09b6fe8db2dc4e1","isMergeCommit":false,"messageTitle":"Add Junit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":1},"java":{"insertions":76,"deletions":1}}},{"hash":"bec96da2c8e9ae5662625915c86625bbc67076cf","isMergeCommit":false,"messageTitle":"Add Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":1},"java":{"insertions":2,"deletions":1}}},{"hash":"5ba141ecd9489a05214cd9ba0e1bd060c8f48a39","isMergeCommit":false,"messageTitle":"Add Java Docs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":0}}},{"hash":"a6899e5956016cae6e68c46253155d6e52b788ad","isMergeCommit":false,"messageTitle":"Edited code to fit coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"d093addb116c2faa1c4a1e7fcd85bd68bb6eed42","isMergeCommit":false,"messageTitle":"Add Find Command capability","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"1048959541bdb105c695cd126ef3927b01cf8247","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8e4a4613120f574f0ccee9be1d714f9ec22ef60b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"45e165688171d3dee15476468b36e3efb6e2e8f0","isMergeCommit":false,"messageTitle":"Fix FindCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"iantsaii":{"java":861,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":4,"txt":8}},"authorContributionVariance":{"iantsaii":143757.77},"authorDisplayNameMap":{"iantsaii":"CS2103T-F11-3 TSAI..URRE"}} diff --git a/imkwokyong_ip_master/commits.json b/imkwokyong_ip_master/commits.json index 2b1f5ee9..9eedc5d9 100644 --- a/imkwokyong_ip_master/commits.json +++ b/imkwokyong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"imkwokyong":[{"date":"2023-08-18","commitResults":[{"hash":"b0523d726aeba985b468ac205488adcc1bb6e76a","isMergeCommit":false,"messageTitle":"Implement initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"dd3514001a9e7e821dbf7b1eca916616dd7113c8","isMergeCommit":false,"messageTitle":"Add Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":4}}},{"hash":"89e8ff0e01b396c3f833d449fa67494484de8333","isMergeCommit":false,"messageTitle":"Add ability to store and display text","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}}]},{"date":"2023-08-20","commitResults":[{"hash":"7b75c2b83e6f78952e76cfdf7da6867af04adf42","isMergeCommit":false,"messageTitle":"[Level-3] Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":8}}},{"hash":"e725a948804de994801fd56b950e0f2390d2e964","isMergeCommit":false,"messageTitle":"Add Deadline.java, Event.java, ToDo.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"87a5a5e164414be0529f850e6291e19b9c87408d","isMergeCommit":false,"messageTitle":"[Level-4] ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":13}}},{"hash":"80528968fb38b2138cd001d6835e34b672cf3d1a","isMergeCommit":false,"messageTitle":"[A-TextUiTesting] Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"9ec9fdcd5f01459bf02e0ec9fb968db600a0941b","isMergeCommit":false,"messageTitle":"[Level-5] Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":46}}},{"hash":"624c7f7009e1f0fba8eb3914617d936d36d9ac4b","isMergeCommit":false,"messageTitle":"[Level-6] Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"b00dd809cfaff11155064aa5e477e62273c1e57d","isMergeCommit":false,"messageTitle":"Add missing space","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a15018fee81b7fa158e892d8ef40f9537bc30c61","isMergeCommit":false,"messageTitle":"Modify test case to check for exceptions and deletions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"c26dbfc946a3704b529cd135ec97f41636e31505","isMergeCommit":false,"messageTitle":"Modify code for conciseness and add extra exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":38}}},{"hash":"a7b61ebb66d462545b7a34f8187ff46d5fe8be25","isMergeCommit":false,"messageTitle":"Modify test case to account for added exceptions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}}]},{"date":"2023-08-27","commitResults":[{"hash":"171550fdd3739fbe0a6851ac05d81d159fbc2b47","isMergeCommit":false,"messageTitle":"Fix indentation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"d7765d363484e6b15781080cd8cac49b88590eaa","isMergeCommit":false,"messageTitle":"Add constructor overloading for Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"95557ca86a053555e8862d3fc6472e14b844aa57","isMergeCommit":false,"messageTitle":"Add string method for easy write access to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":12}}},{"hash":"05c1586a135d1903d5aec704dbebcd05f4d1fbf4","isMergeCommit":false,"messageTitle":"Add Save function for Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":38}}},{"hash":"6fcba5d6c9b8582aef0526a1843c747f491b9614","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"cabd2fbaa4f6633537a0cb7e72939abad001b81d","isMergeCommit":false,"messageTitle":"Remove unintended debugging print statement","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}},{"hash":"fed068161ae0636ab48580891a52c033f35d924d","isMergeCommit":false,"messageTitle":"Add Dates and Times functionality for Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}},{"hash":"08ef75ae50310717ef706bcb412473256257d164","isMergeCommit":false,"messageTitle":"Update test case","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"53c5af3c38cd63b5f02f5d3b0595c561fb5b8f30","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"4a99d82433cfd481aac338ea162a1c4d1c8b1f89","isMergeCommit":false,"messageTitle":"Add abstract class Command.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"8d5f040e768c96664a9c1d7669ceb19e20c26e9e","isMergeCommit":false,"messageTitle":"Modify createList method in Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":23}}},{"hash":"00c2eaba9ba4503d74a3a7b3736189cf8cb2f3b3","isMergeCommit":false,"messageTitle":"Modify code to be more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":318,"deletions":129}}},{"hash":"2da0ce47d1d61d743fdef868430ecd11d8755aa2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-28","commitResults":[{"hash":"0132ac167b92df7445a96547d12f585db185e1e8","isMergeCommit":false,"messageTitle":"Organize the classes into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":203,"deletions":90},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"42dc44cbd990f0d0d263391d4e9d17e65354e0ae","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/imkwokyong/ip into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"18fecae250e1a8f146094e246d264f2e0ea7a51f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"18c7038a2acbb252a61507664e4f34a27ccd93e8","isMergeCommit":false,"messageTitle":"Update main class filepath","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"313bd58c12b24ac60654c1817296ab0ecc5bcd50","isMergeCommit":false,"messageTitle":"Fix grammar","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"27d4b597243c63a567e4c12f69c0f869774cfa37","isMergeCommit":false,"messageTitle":"Handle more exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":17}}}]},{"date":"2023-08-29","commitResults":[{"hash":"f2a7ace85dd84a77d4c0a0704a78691899f633d8","isMergeCommit":false,"messageTitle":"Add JUnit tests for Deadline and Event class","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":0}}},{"hash":"a445eadd313c4b94e30bf595d83c6f712a6b409e","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":239,"deletions":5}}},{"hash":"9de97deb08ce350792df874d37f2839a18adf1e8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"5b5ff7acb6ce73b2ec1e146addf0ea57321b6084","isMergeCommit":false,"messageTitle":"Add Find functionality for Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":0}}},{"hash":"060bf8830c0e9ffbc13e80033ec03029412c33b3","isMergeCommit":true,"messageTitle":"Merge \u0027branch-Level-9\u0027 to master after fixing merge conflicts","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"55a7c36760765118b50965d9dbdff709171f3891","isMergeCommit":false,"messageTitle":"Fix spacing inconsistencies","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"d91e4b707789c5d037defb15ee75e3c19d4995e0","isMergeCommit":false,"messageTitle":"Add JavaDoc comments to new methods and classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"14a831adccef9f92d337d3ee43a04b1d642d8887","isMergeCommit":false,"messageTitle":"Add checkstyle config","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0}}},{"hash":"7e0d83db1e114fc72836ffec5c4aadb9a591597f","isMergeCommit":false,"messageTitle":"Adhere to checkstyle requirements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":31}}},{"hash":"80325ce843aa932a2d3fcd3b815fa453ac3de0ea","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"5011e5c8161d52f8b1cfe5b61efc6c8bc7f1e31d","isMergeCommit":false,"messageTitle":"Fix minor typos and issues","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"imkwokyong":{"java":1101,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":6,"txt":23}},"authorContributionVariance":{"imkwokyong":65360.855},"authorDisplayNameMap":{"imkwokyong":"KUAN..YONG"}} +{"authorDailyContributionsMap":{"imkwokyong":[{"date":"2023-08-18","commitResults":[{"hash":"b0523d726aeba985b468ac205488adcc1bb6e76a","isMergeCommit":false,"messageTitle":"Implement initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"dd3514001a9e7e821dbf7b1eca916616dd7113c8","isMergeCommit":false,"messageTitle":"Add Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":4}}},{"hash":"89e8ff0e01b396c3f833d449fa67494484de8333","isMergeCommit":false,"messageTitle":"Add ability to store and display text","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}}]},{"date":"2023-08-20","commitResults":[{"hash":"7b75c2b83e6f78952e76cfdf7da6867af04adf42","isMergeCommit":false,"messageTitle":"[Level-3] Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":8}}},{"hash":"e725a948804de994801fd56b950e0f2390d2e964","isMergeCommit":false,"messageTitle":"Add Deadline.java, Event.java, ToDo.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"87a5a5e164414be0529f850e6291e19b9c87408d","isMergeCommit":false,"messageTitle":"[Level-4] ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":13}}},{"hash":"80528968fb38b2138cd001d6835e34b672cf3d1a","isMergeCommit":false,"messageTitle":"[A-TextUiTesting] Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"9ec9fdcd5f01459bf02e0ec9fb968db600a0941b","isMergeCommit":false,"messageTitle":"[Level-5] Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":46}}},{"hash":"624c7f7009e1f0fba8eb3914617d936d36d9ac4b","isMergeCommit":false,"messageTitle":"[Level-6] Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"b00dd809cfaff11155064aa5e477e62273c1e57d","isMergeCommit":false,"messageTitle":"Add missing space","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a15018fee81b7fa158e892d8ef40f9537bc30c61","isMergeCommit":false,"messageTitle":"Modify test case to check for exceptions and deletions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"c26dbfc946a3704b529cd135ec97f41636e31505","isMergeCommit":false,"messageTitle":"Modify code for conciseness and add extra exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":38}}},{"hash":"a7b61ebb66d462545b7a34f8187ff46d5fe8be25","isMergeCommit":false,"messageTitle":"Modify test case to account for added exceptions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}}]},{"date":"2023-08-27","commitResults":[{"hash":"171550fdd3739fbe0a6851ac05d81d159fbc2b47","isMergeCommit":false,"messageTitle":"Fix indentation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"d7765d363484e6b15781080cd8cac49b88590eaa","isMergeCommit":false,"messageTitle":"Add constructor overloading for Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"95557ca86a053555e8862d3fc6472e14b844aa57","isMergeCommit":false,"messageTitle":"Add string method for easy write access to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":12}}},{"hash":"05c1586a135d1903d5aec704dbebcd05f4d1fbf4","isMergeCommit":false,"messageTitle":"Add Save function for Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":38}}},{"hash":"6fcba5d6c9b8582aef0526a1843c747f491b9614","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"cabd2fbaa4f6633537a0cb7e72939abad001b81d","isMergeCommit":false,"messageTitle":"Remove unintended debugging print statement","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}},{"hash":"fed068161ae0636ab48580891a52c033f35d924d","isMergeCommit":false,"messageTitle":"Add Dates and Times functionality for Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}},{"hash":"08ef75ae50310717ef706bcb412473256257d164","isMergeCommit":false,"messageTitle":"Update test case","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"53c5af3c38cd63b5f02f5d3b0595c561fb5b8f30","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"4a99d82433cfd481aac338ea162a1c4d1c8b1f89","isMergeCommit":false,"messageTitle":"Add abstract class Command.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"8d5f040e768c96664a9c1d7669ceb19e20c26e9e","isMergeCommit":false,"messageTitle":"Modify createList method in Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":23}}},{"hash":"00c2eaba9ba4503d74a3a7b3736189cf8cb2f3b3","isMergeCommit":false,"messageTitle":"Modify code to be more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":318,"deletions":129}}},{"hash":"2da0ce47d1d61d743fdef868430ecd11d8755aa2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-28","commitResults":[{"hash":"0132ac167b92df7445a96547d12f585db185e1e8","isMergeCommit":false,"messageTitle":"Organize the classes into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":203,"deletions":90},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"42dc44cbd990f0d0d263391d4e9d17e65354e0ae","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/imkwokyong/ip into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"18fecae250e1a8f146094e246d264f2e0ea7a51f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"18c7038a2acbb252a61507664e4f34a27ccd93e8","isMergeCommit":false,"messageTitle":"Update main class filepath","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"313bd58c12b24ac60654c1817296ab0ecc5bcd50","isMergeCommit":false,"messageTitle":"Fix grammar","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"27d4b597243c63a567e4c12f69c0f869774cfa37","isMergeCommit":false,"messageTitle":"Handle more exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":17}}}]},{"date":"2023-08-29","commitResults":[{"hash":"f2a7ace85dd84a77d4c0a0704a78691899f633d8","isMergeCommit":false,"messageTitle":"Add JUnit tests for Deadline and Event class","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":0}}},{"hash":"a445eadd313c4b94e30bf595d83c6f712a6b409e","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":239,"deletions":5}}},{"hash":"9de97deb08ce350792df874d37f2839a18adf1e8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"5b5ff7acb6ce73b2ec1e146addf0ea57321b6084","isMergeCommit":false,"messageTitle":"Add Find functionality for Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":0}}},{"hash":"060bf8830c0e9ffbc13e80033ec03029412c33b3","isMergeCommit":true,"messageTitle":"Merge \u0027branch-Level-9\u0027 to master after fixing merge conflicts","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"55a7c36760765118b50965d9dbdff709171f3891","isMergeCommit":false,"messageTitle":"Fix spacing inconsistencies","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"d91e4b707789c5d037defb15ee75e3c19d4995e0","isMergeCommit":false,"messageTitle":"Add JavaDoc comments to new methods and classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"14a831adccef9f92d337d3ee43a04b1d642d8887","isMergeCommit":false,"messageTitle":"Add checkstyle config","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0}}},{"hash":"7e0d83db1e114fc72836ffec5c4aadb9a591597f","isMergeCommit":false,"messageTitle":"Adhere to checkstyle requirements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":31}}},{"hash":"80325ce843aa932a2d3fcd3b815fa453ac3de0ea","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"5011e5c8161d52f8b1cfe5b61efc6c8bc7f1e31d","isMergeCommit":false,"messageTitle":"Fix minor typos and issues","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"imkwokyong":{"java":1101,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":6,"txt":23}},"authorContributionVariance":{"imkwokyong":65360.855},"authorDisplayNameMap":{"imkwokyong":"KUAN..YONG"}} diff --git a/ivanleekk_ip_master/authorship.json b/ivanleekk_ip_master/authorship.json index 76468b58..6117d0a3 100644 --- a/ivanleekk_ip_master/authorship.json +++ b/ivanleekk_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"# Ax project template","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":"3. After that, locate the `src/main/java/Ax.java` file, right-click it, and choose `Run Ax.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ivanleekk":2,"-":22}},{"path":"src/main/java/Ax.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"import java.util.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"public class Ax {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":" private static List\u003cListItem\u003e listItems \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" * Displays a horizontal line.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" private static void hoLine() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" System.out.println();","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" System.out.println(","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":" \"\u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" * Displays a greeting message.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"ivanleekk"},"content":" private static void greet() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"ivanleekk"},"content":" String newLogo \u003d","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"ivanleekk"},"content":" \" \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"ivanleekk"},"content":" \" \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"ivanleekk"},"content":" \" \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"ivanleekk"},"content":" \" ## \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"ivanleekk"},"content":" \" ### \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"ivanleekk"},"content":" \" ## ## ## ## \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"ivanleekk"},"content":" \" ## ## #### \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"ivanleekk"},"content":" \" ## ## ## \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"ivanleekk"},"content":" \" ###### ### \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"ivanleekk"},"content":" \"## ## ## ## \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"ivanleekk"},"content":" \"## ## ## ## \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"ivanleekk"},"content":" \" \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"ivanleekk"},"content":" \" \\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"ivanleekk"},"content":" System.out.println(\"Hello from\\n\" + newLogo);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"ivanleekk"},"content":" System.out.println(","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"ivanleekk"},"content":" \"\\uD83D\\uDC4B Greetings!\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"ivanleekk"},"content":" \"\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"ivanleekk"},"content":" \"Ax at your service! I\u0027m not just any chatbot; I\u0027m Ax – your knowledgeable and engaging virtual companion. Whether you\u0027re seeking answers, a friendly chat, or a bit of fun, I\u0027m here to make your experience enjoyable and insightful. Don\u0027t hesitate to share your thoughts or questions with me. Let\u0027s dive in and start our conversation! How can I assist you today, my friend?\"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"ivanleekk"},"content":" hoLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"ivanleekk"},"content":" * Displays a farewell message.","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"ivanleekk"},"content":" private static void bye() {","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"ivanleekk"},"content":" System.out.println(","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"ivanleekk"},"content":" \"Thank you for your time and I hope you found what you needed!! 🥰\"","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"ivanleekk"},"content":" hoLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"ivanleekk"},"content":" * Displays the current to-do list.","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"ivanleekk"},"content":" private static void listTheList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"ivanleekk"},"content":" for (int i \u003d 1; i \u003c listItems.size() + 1; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"ivanleekk"},"content":" System.out.printf(\"%d. %s%n\", i, listItems.get(i - 1));","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"ivanleekk"},"content":" hoLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"ivanleekk"},"content":" * Gets input from the user and performs the corresponding action.","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"ivanleekk"},"content":" * If the input is \"list\", displays the current to-do list.","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"ivanleekk"},"content":" * If the input is \"add\", prompts the user for a new item to add to the list.","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"ivanleekk"},"content":" * If the input is \"delete\", prompts the user for the index of the item to delete from the list.","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"ivanleekk"},"content":" * If the input is anything else, throws a NoSuchMethodException.","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"ivanleekk"},"content":" * If the input is missing an argument, throws a MissingFormatArgumentException.","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"ivanleekk"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"ivanleekk"},"content":" * @param scanner the scanner to use for input","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"ivanleekk"},"content":" * @return true if the user wants to exit, false otherwise","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"ivanleekk"},"content":" private static boolean getInput(Scanner scanner) {","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"ivanleekk"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"ivanleekk"},"content":" String input \u003d scanner.nextLine(); // get next input","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"ivanleekk"},"content":" System.out.println(input); // repeat the input","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"ivanleekk"},"content":" System.out.println();","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"ivanleekk"},"content":" hoLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"ivanleekk"},"content":" String[] inputs \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"ivanleekk"},"content":" String[] dates \u003d input.split(\"/(by|from|to) \");","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"ivanleekk"},"content":" if (input.equals(\"bye\")) { // check if it is bye, then return true, so it will exit the loop","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"ivanleekk"},"content":" // delete existing file","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"ivanleekk"},"content":" Path saveFile \u003d Paths.get(\"data/save.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"ivanleekk"},"content":" System.out.println(saveFile.toAbsolutePath());","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"ivanleekk"},"content":" if (saveFile.toFile().exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ivanleekk"},"content":" Files.delete(saveFile);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"ivanleekk"},"content":" boolean success \u003d saveFile.toFile().createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"ivanleekk"},"content":" // write new file","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"ivanleekk"},"content":" FileWriter fileWriter \u003d new FileWriter(saveFile.toFile());","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"ivanleekk"},"content":" PrintWriter printWriter \u003d new PrintWriter(fileWriter);","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"ivanleekk"},"content":" for (ListItem listItem : listItems) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"ivanleekk"},"content":" System.out.println(listItem);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"ivanleekk"},"content":" printWriter.println(listItem);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"ivanleekk"},"content":" printWriter.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"ivanleekk"},"content":" return true;","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"ivanleekk"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"ivanleekk"},"content":" // call the list function","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"ivanleekk"},"content":" listTheList();","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"ivanleekk"},"content":" if (inputs.length \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"ivanleekk"},"content":" ListItem task \u003d listItems.get(Integer.parseInt(inputs[1]) - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"ivanleekk"},"content":" task.setDone(true);","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"ivanleekk"},"content":" throw new MissingFormatArgumentException(\"no arg\");","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"ivanleekk"},"content":" if (inputs.length \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"ivanleekk"},"content":" ListItem task \u003d listItems.get(Integer.parseInt(inputs[1]) - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"ivanleekk"},"content":" task.setDone(false);","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"ivanleekk"},"content":" throw new MissingFormatArgumentException(\"no arg\");","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"ivanleekk"},"content":" if (inputs.length \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"ivanleekk"},"content":" listItems.add(new Todos(inputs[1]));","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"ivanleekk"},"content":" throw new MissingFormatArgumentException(\"no arg\");","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"ivanleekk"},"content":" if (inputs.length \u003e 1 \u0026\u0026 dates.length \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"ivanleekk"},"content":" listItems.add((new Deadlines(inputs[1].split(\"/\")[0], dates[1])));","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"ivanleekk"},"content":" throw new MissingFormatArgumentException(\"no arg\");","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"ivanleekk"},"content":" if (inputs.length \u003e 1 \u0026\u0026 dates.length \u003e 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"ivanleekk"},"content":" listItems.add(","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"ivanleekk"},"content":" (new Events(inputs[1].split(\"/\")[0], dates[1], dates[2]))","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"ivanleekk"},"content":" throw new MissingFormatArgumentException(\"no arg\");","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"ivanleekk"},"content":" if (inputs.length \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"ivanleekk"},"content":" listItems.remove(Integer.parseInt(inputs[1]) - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"ivanleekk"},"content":" throw new MissingFormatArgumentException(\"no arg\");","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"ivanleekk"},"content":" throw new NoSuchMethodException(\"no method\");","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"ivanleekk"},"content":" } catch (MissingFormatArgumentException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"ivanleekk"},"content":" System.out.println(","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"ivanleekk"},"content":" \"You\u0027re missing some arguments 😭😭 I\u0027m smart but I can\u0027t read minds!\"","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"ivanleekk"},"content":" } catch (NoSuchMethodException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"ivanleekk"},"content":" System.out.println(","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"ivanleekk"},"content":" \"Oh nos what is this foreign language, I haven\u0027t learnt that yet 🧑‍🎓\"","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"ivanleekk"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"ivanleekk"},"content":" System.out.println(\"I DONT KNOW WHATS HAPPENING!!! SAVE ME 🆘\");","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"ivanleekk"},"content":" System.out.println(\"But seriously, its this \");","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"ivanleekk"},"content":" System.out.print(\"error \u003d \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"ivanleekk"},"content":" return false;","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"ivanleekk"},"content":" * Reads the save file and stores the previous save into the current list","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"ivanleekk"},"content":" public static void readSave() {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"ivanleekk"},"content":" // read save file","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"ivanleekk"},"content":" Path path \u003d Paths.get(\"data/save.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"ivanleekk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"ivanleekk"},"content":" Path saveFilepath \u003d path;","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"ivanleekk"},"content":" File saveFile \u003d saveFilepath.toFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"ivanleekk"},"content":" Scanner scanner \u003d new Scanner(saveFile);","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"ivanleekk"},"content":" // Declaring loop variable","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"ivanleekk"},"content":" int i;","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"ivanleekk"},"content":" // Holds true till there is nothing to read","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"ivanleekk"},"content":" while (scanner.hasNextLine()){","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"ivanleekk"},"content":" String info \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"ivanleekk"},"content":" // check if index 5 is blank space","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"ivanleekk"},"content":" boolean marked \u003d info.charAt(5) !\u003d \u0027 \u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"ivanleekk"},"content":" // check if index 1 is T D or E","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"ivanleekk"},"content":" int startidx \u003d 8;","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"ivanleekk"},"content":" if (info.charAt(1) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"ivanleekk"},"content":" listItems.add(new Todos(info.substring(startidx)));","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"ivanleekk"},"content":" } else if (info.charAt(1) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"ivanleekk"},"content":" // find first ( in info","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"ivanleekk"},"content":" int idx \u003d info.indexOf(\u0027(\u0027) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"ivanleekk"},"content":" int end \u003d info.indexOf(\u0027)\u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"ivanleekk"},"content":" listItems.add(new Deadlines(info.substring(startidx, idx), info.substring(idx + 6, end)));","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"ivanleekk"},"content":" } else if (info.charAt(1) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"ivanleekk"},"content":" // find first ( in info","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"ivanleekk"},"content":" int idx \u003d info.indexOf(\u0027(\u0027) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"ivanleekk"},"content":" int end \u003d info.indexOf(\u0027)\u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"ivanleekk"},"content":" int fromend \u003d info.indexOf(\"from: \") + 6;","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"ivanleekk"},"content":" int toend \u003d info.indexOf(\"to: \") + 4;","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"ivanleekk"},"content":" int tostart \u003d info.indexOf(\"to: \") - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"ivanleekk"},"content":" listItems.add(new Events(info.substring(startidx,idx), info.substring(fromend, tostart), info.substring(toend, end)));","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"ivanleekk"},"content":" listItems.get(listItems.size() - 1).setDone(marked);","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"ivanleekk"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"ivanleekk"},"content":" // create the file","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"ivanleekk"},"content":" File saveFile \u003d path.toFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"ivanleekk"},"content":" Path dir \u003d Paths.get(\"data/\");","lastModifiedDate":"2023-08-31"},{"lineNumber":210,"author":{"gitId":"ivanleekk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":211,"author":{"gitId":"ivanleekk"},"content":" Files.createDirectory(dir);","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"ivanleekk"},"content":" saveFile.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":213,"author":{"gitId":"ivanleekk"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":214,"author":{"gitId":"ivanleekk"},"content":" System.out.println(\"ex \u003d \" + ex);","lastModifiedDate":"2023-08-31"},{"lineNumber":215,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"ivanleekk"},"content":" catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"ivanleekk"},"content":" System.out.println(\"error \u003d \" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":220,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"ivanleekk"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":223,"author":{"gitId":"ivanleekk"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":224,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":225,"author":{"gitId":"ivanleekk"},"content":" greet();","lastModifiedDate":"2023-08-23"},{"lineNumber":226,"author":{"gitId":"ivanleekk"},"content":" readSave();","lastModifiedDate":"2023-08-31"},{"lineNumber":227,"author":{"gitId":"ivanleekk"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":228,"author":{"gitId":"ivanleekk"},"content":" boolean done \u003d getInput(scanner);","lastModifiedDate":"2023-08-23"},{"lineNumber":229,"author":{"gitId":"ivanleekk"},"content":" if (done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":230,"author":{"gitId":"ivanleekk"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":231,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":232,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":233,"author":{"gitId":"ivanleekk"},"content":" bye();","lastModifiedDate":"2023-08-23"},{"lineNumber":234,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":235,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ivanleekk":235}},{"path":"src/main/java/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"public class Deadlines extends ListItem {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":" LocalDate end;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":" * Constructor for Deadlines.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":" public Deadlines(String text, String end) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" super(text);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" this.end \u003d super.parseDate(end);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" * Returns string representation of Deadlines.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" return \"[D] \" + super.toString() + String.format(\" (by: %s)\", this.end.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ivanleekk":22}},{"path":"src/main/java/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"public class Events extends ListItem {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":" LocalDate start;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":" LocalDate end;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":" * Constructor for Events.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" public Events(String text, String start, String end) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" super(text);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" this.start \u003d super.parseDate(start);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" this.end \u003d super.parseDate(end);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" * Returns string representation of Events.","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" return (","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":" \"[E] \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"ivanleekk"},"content":" super.toString() +","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"ivanleekk"},"content":" String.format(\" (from: %s to: %s)\", this.start.toString(), this.end.toString())","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ivanleekk":28}},{"path":"src/main/java/ListItem.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":" * Represents a single item in a to-do list.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"public class ListItem {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":" private String text;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":" private boolean done;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" * Creates a new ListItem with the given text.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" * The item is initially marked as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" * @param text the text of the item","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":" public ListItem(String text) {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" this.text \u003d text;","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" this.done \u003d false; // defaults to not done yet","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":" * Gets the text of the item.","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"ivanleekk"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"ivanleekk"},"content":" * @return the text of the item","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"ivanleekk"},"content":" public String getText() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"ivanleekk"},"content":" return text;","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"ivanleekk"},"content":" * Gets the done status of the item.","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"ivanleekk"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"ivanleekk"},"content":" * @return true if the item is done, false otherwise","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"ivanleekk"},"content":" public boolean getDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"ivanleekk"},"content":" return done;","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"ivanleekk"},"content":" * Toggles the done status of the item.","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"ivanleekk"},"content":" * If the item was previously done, it is marked as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"ivanleekk"},"content":" * If the item was previously not done, it is marked as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"ivanleekk"},"content":" public void toggleDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"ivanleekk"},"content":" this.done \u003d !this.done;","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"ivanleekk"},"content":" * Sets the done status of the item.","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"ivanleekk"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"ivanleekk"},"content":" * @param done true if the item is done, false otherwise","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"ivanleekk"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"ivanleekk"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ivanleekk"},"content":" * Parses the date","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ivanleekk"},"content":" * @param date the string of date","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ivanleekk"},"content":" * @return a LocalDate Object","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ivanleekk"},"content":" public LocalDate parseDate(String date) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ivanleekk"},"content":" return LocalDate.parse(date.strip());","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"ivanleekk"},"content":" * Returns a string representation of the item.","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"ivanleekk"},"content":" * If the item is done, the string includes a tickbox.","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"ivanleekk"},"content":" * If the item is not done, the string includes an empty box.","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"ivanleekk"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"ivanleekk"},"content":" * @return a string representation of the item","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"ivanleekk"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"ivanleekk"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"ivanleekk"},"content":" if (done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"ivanleekk"},"content":" // if done use tickbox","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"ivanleekk"},"content":" return \"[✅] \" + this.text;","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"ivanleekk"},"content":" return \"[ ] \" + this.text;","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ivanleekk":83}},{"path":"src/main/java/Todos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"public class Todos extends ListItem {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":" * Constructor for Todos.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":" public Todos(String text) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":" super(text);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" * Returns string representation of Todos.","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ivanleekk":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"todo help me","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"deadline boooo /by tmr","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"event whyyyy /from yesterday /to next fri","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"delete 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ivanleekk":8}},{"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":"ivanleekk"},"content":"java -classpath ..\\bin Ax \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"-":20,"ivanleekk":1}},{"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":"ivanleekk"},"content":"java -classpath ../bin Ax \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":36,"ivanleekk":1}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"# ax.ax project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":"3. After that, locate the `src/main/java/ax.ax.java` file, right-click it, and choose `Run ax.ax.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ivanleekk":2,"-":22}},{"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":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"ivanleekk"},"content":" mainClass.set(\"ax.Ax\")","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"ivanleekk"},"content":" archiveBaseName \u003d \"ax\"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":40,"ivanleekk":3}},{"path":"src/main/java/ax/Ax.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"import ax.commands.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"import ax.display.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"import ax.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":"public class Ax {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" * the main command for Ax chatbot","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" * @param args does nothing?","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" Ui.greet();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" Storage.readSave();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" boolean done \u003d Parser.getInput(scanner);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" if (done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"ivanleekk"},"content":" Ui.bye();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ivanleekk":28}},{"path":"src/main/java/ax/commands/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"import ax.display.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"import ax.task.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":"import java.util.MissingFormatArgumentException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" * Gets input from the user and performs the corresponding action.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":" * If the input is \"list\", displays the current to-do list.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" * If the input is \"todo\", adds a todo with specified text.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" * If the input is \"deadline\", adds a deadline with specified text and /by for date.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" * If the input is \"event\", adds an event with specified text and /from date and /to date.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" * If the input is \"delete\", prompts the user for the index of the item to delete from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" * If the input is \"mark\", sets the item at specified index to true","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":" * If the input is \"unmark\", sets the item at specified index to false","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ivanleekk"},"content":" * If the input is anything else, throws a NoSuchMethodException.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ivanleekk"},"content":" * If the input is missing an argument, throws a MissingFormatArgumentException.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ivanleekk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ivanleekk"},"content":" * @param scanner the scanner to use for input","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ivanleekk"},"content":" * @return true if the user wants to exit, false otherwise","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ivanleekk"},"content":" @SuppressWarnings(\"unused\")","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ivanleekk"},"content":" public static boolean getInput(Scanner scanner) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ivanleekk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ivanleekk"},"content":" String input \u003d scanner.nextLine(); // get next input","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ivanleekk"},"content":" System.out.println(input); // repeat the input","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ivanleekk"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ivanleekk"},"content":" Ui.hoLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ivanleekk"},"content":" String[] inputs \u003d input.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ivanleekk"},"content":" String[] dates \u003d input.split(\"/(by|from|to) \");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ivanleekk"},"content":" if (input.equals(\"bye\")) { // check if it is bye, then return true, so it will exit the loop","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ivanleekk"},"content":" // delete existing file","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ivanleekk"},"content":" Path saveFile \u003d Paths.get(\"data/save.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ivanleekk"},"content":" System.out.println(saveFile.toAbsolutePath());","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ivanleekk"},"content":" if (saveFile.toFile().exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ivanleekk"},"content":" Files.delete(saveFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ivanleekk"},"content":" boolean success \u003d saveFile.toFile().createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ivanleekk"},"content":" // write new file","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ivanleekk"},"content":" FileWriter fileWriter \u003d new FileWriter(saveFile.toFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ivanleekk"},"content":" PrintWriter printWriter \u003d new PrintWriter(fileWriter);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ivanleekk"},"content":" for (ListItem listItem : TaskList.getListItems()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ivanleekk"},"content":" System.out.println(listItem);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ivanleekk"},"content":" printWriter.println(listItem);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ivanleekk"},"content":" printWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ivanleekk"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ivanleekk"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ivanleekk"},"content":" // call the list function","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ivanleekk"},"content":" Ui.listTheList();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ivanleekk"},"content":" if (inputs.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ivanleekk"},"content":" ListItem task \u003d TaskList.getListItems().get(Integer.parseInt(inputs[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ivanleekk"},"content":" task.setDone(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ivanleekk"},"content":" throw new MissingFormatArgumentException(\"no arg\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ivanleekk"},"content":" if (inputs.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"ivanleekk"},"content":" ListItem task \u003d TaskList.getListItems().get(Integer.parseInt(inputs[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"ivanleekk"},"content":" task.setDone(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"ivanleekk"},"content":" throw new MissingFormatArgumentException(\"no arg\");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"ivanleekk"},"content":" if (inputs.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"ivanleekk"},"content":" TaskList.getListItems().add(new Todos(inputs[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"ivanleekk"},"content":" throw new MissingFormatArgumentException(\"no arg\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"ivanleekk"},"content":" if (inputs.length \u003e 1 \u0026\u0026 dates.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"ivanleekk"},"content":" TaskList.getListItems().add((new Deadlines(inputs[1].split(\"/\")[0], dates[1])));","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"ivanleekk"},"content":" throw new MissingFormatArgumentException(\"no arg\");","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"ivanleekk"},"content":" if (inputs.length \u003e 1 \u0026\u0026 dates.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"ivanleekk"},"content":" TaskList.getListItems().add(","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"ivanleekk"},"content":" (new Events(inputs[1].split(\"/\")[0], dates[1], dates[2]))","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"ivanleekk"},"content":" throw new MissingFormatArgumentException(\"no arg\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"ivanleekk"},"content":" if (inputs.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"ivanleekk"},"content":" TaskList.getListItems().remove(Integer.parseInt(inputs[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"ivanleekk"},"content":" throw new MissingFormatArgumentException(\"no arg\");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"ivanleekk"},"content":" } else if (input.startsWith(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"ivanleekk"},"content":" Ui.listTheList(inputs[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"ivanleekk"},"content":" throw new NoSuchMethodException(\"no method\");","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"ivanleekk"},"content":" } catch (MissingFormatArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"ivanleekk"},"content":" System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"ivanleekk"},"content":" \"You\u0027re missing some arguments 😭😭 I\u0027m smart but I can\u0027t read minds!\"","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"ivanleekk"},"content":" } catch (NoSuchMethodException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"ivanleekk"},"content":" System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"ivanleekk"},"content":" \"Oh nos what is this foreign language, I haven\u0027t learnt that yet 🧑‍🎓\"","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"ivanleekk"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"ivanleekk"},"content":" System.out.println(\"I DONT KNOW WHATS HAPPENING!!! SAVE ME 🆘\");","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"ivanleekk"},"content":" System.out.println(\"But seriously, its this \");","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"ivanleekk"},"content":" System.out.print(\"error \u003d \" + e);","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"ivanleekk"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ivanleekk":120}},{"path":"src/main/java/ax/display/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax.display;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"import ax.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":" * Displays a horizontal line.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":" public static void hoLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" \"\u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" \"\u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \u003d^..^\u003d \"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" * Displays a greeting message.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" public static void greet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" String newLogo \u003d","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":" \" \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ivanleekk"},"content":" \" \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ivanleekk"},"content":" \" \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ivanleekk"},"content":" \" ## \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ivanleekk"},"content":" \" ### \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ivanleekk"},"content":" \" ## ## ## ## \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ivanleekk"},"content":" \" ## ## #### \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ivanleekk"},"content":" \" ## ## ## \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ivanleekk"},"content":" \" ###### ### \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ivanleekk"},"content":" \"## ## ## ## \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ivanleekk"},"content":" \"## ## ## ## \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ivanleekk"},"content":" \" \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ivanleekk"},"content":" \" \\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ivanleekk"},"content":" System.out.println(\"Hello from\\n\" + newLogo);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ivanleekk"},"content":" System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ivanleekk"},"content":" \"\\uD83D\\uDC4B Greetings!\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ivanleekk"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ivanleekk"},"content":" \"Ax at your service! I\u0027m not just any chatbot; I\u0027m Ax – your knowledgeable and engaging virtual companion. \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ivanleekk"},"content":" \"Whether you\u0027re seeking answers, a friendly chat, or a bit of fun, I\u0027m here to make your experience enjoyable and insightful. \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ivanleekk"},"content":" \"Don\u0027t hesitate to share your thoughts or questions with me. Let\u0027s dive in and start our conversation! \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ivanleekk"},"content":" \"How can I assist you today, my friend?\"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ivanleekk"},"content":" hoLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ivanleekk"},"content":" * Displays a farewell message.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ivanleekk"},"content":" public static void bye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ivanleekk"},"content":" System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ivanleekk"},"content":" \"Thank you for your time and I hope you found what you needed!! 🥰\"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ivanleekk"},"content":" hoLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ivanleekk"},"content":" * Displays the current to-do list.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ivanleekk"},"content":" public static void listTheList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ivanleekk"},"content":" for (int i \u003d 1; i \u003c TaskList.getListItems().size() + 1; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ivanleekk"},"content":" System.out.printf(\"%d. %s%n\", i, TaskList.getListItems().get(i - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ivanleekk"},"content":" hoLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"ivanleekk"},"content":" public static void listTheList(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"ivanleekk"},"content":" for (int i \u003d 1; i \u003c TaskList.getListItems().size() + 1; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"ivanleekk"},"content":" if (TaskList.getListItems().get(i - 1).toString().contains(str)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"ivanleekk"},"content":" System.out.printf(\"%d. %s%n\", i, TaskList.getListItems().get(i - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"ivanleekk"},"content":" hoLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ivanleekk":77}},{"path":"src/main/java/ax/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"import ax.task.Deadlines;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"import ax.task.Events;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"import ax.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"import ax.task.Todos;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" * Reads the save file and stores the previous save into the current list","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" public static void readSave() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" // read save file","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" Path path \u003d Paths.get(\"data/save.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ivanleekk"},"content":" File saveFile \u003d path.toFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ivanleekk"},"content":" Scanner scanner \u003d new Scanner(saveFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ivanleekk"},"content":" // Holds true till there is nothing to read","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ivanleekk"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ivanleekk"},"content":" String info \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ivanleekk"},"content":" // check if index 5 is blank space","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ivanleekk"},"content":" boolean marked \u003d info.charAt(5) !\u003d \u0027 \u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ivanleekk"},"content":" // check if index 1 is T D or E","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ivanleekk"},"content":" int startIdx \u003d 8;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ivanleekk"},"content":" if (info.charAt(1) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ivanleekk"},"content":" TaskList.getListItems().add(new Todos(info.substring(startIdx)));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ivanleekk"},"content":" } else if (info.charAt(1) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ivanleekk"},"content":" // find first ( in info","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ivanleekk"},"content":" int idx \u003d info.indexOf(\u0027(\u0027) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ivanleekk"},"content":" int end \u003d info.indexOf(\u0027)\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ivanleekk"},"content":" TaskList.getListItems().add(new Deadlines(info.substring(startIdx, idx), info.substring(idx + 6, end)));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ivanleekk"},"content":" } else if (info.charAt(1) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ivanleekk"},"content":" // find first ( in info","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ivanleekk"},"content":" int idx \u003d info.indexOf(\u0027(\u0027) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ivanleekk"},"content":" int end \u003d info.indexOf(\u0027)\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ivanleekk"},"content":" int fromEnd \u003d info.indexOf(\"from: \") + 6;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ivanleekk"},"content":" int toEnd \u003d info.indexOf(\"to: \") + 4;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ivanleekk"},"content":" int toStart \u003d info.indexOf(\"to: \") - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ivanleekk"},"content":" TaskList.getListItems().add(new Events(info.substring(startIdx, idx), info.substring(fromEnd, toStart), info.substring(toEnd, end)));","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ivanleekk"},"content":" TaskList.getListItems().get(TaskList.getListItems().size() - 1).setDone(marked);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ivanleekk"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ivanleekk"},"content":" // create the file","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ivanleekk"},"content":" File saveFile \u003d path.toFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ivanleekk"},"content":" Path dir \u003d Paths.get(\"data/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ivanleekk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ivanleekk"},"content":" Files.createDirectory(dir);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ivanleekk"},"content":" saveFile.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ivanleekk"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ivanleekk"},"content":" System.out.println(\"ex \u003d \" + ex);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ivanleekk"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ivanleekk"},"content":" System.out.println(\"error \u003d \" + e);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ivanleekk":66}},{"path":"src/main/java/ax/task/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"public class Deadlines extends ListItem {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":" LocalDate end;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":" * Constructor for ax.task.Deadlines.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" public Deadlines(String text, String end) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" super(text);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" this.end \u003d super.parseDate(end);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" * Returns string representation of ax.task.Deadlines.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":" return \"[D] \" + super.toString() + String.format(\" (by: %s)\", this.end.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ivanleekk":25}},{"path":"src/main/java/ax/task/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"public class Events extends ListItem {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":" LocalDate start;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":" LocalDate end;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" * Constructor for ax.task.Events.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" public Events(String text, String start, String end) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" super(text);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" this.start \u003d super.parseDate(start);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" this.end \u003d super.parseDate(end);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" * Returns string representation of ax.task.Events.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"ivanleekk"},"content":" return (","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"ivanleekk"},"content":" \"[E] \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"ivanleekk"},"content":" super.toString() +","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"ivanleekk"},"content":" String.format(\" (from: %s to: %s)\", this.start.toString(), this.end.toString())","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ivanleekk"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ivanleekk":30}},{"path":"src/main/java/ax/task/ListItem.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":" * Represents a single item in a to-do list.","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":"public class ListItem {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":" @SuppressWarnings(\"FieldMayBeFinal\")","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" private String text;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" private boolean done;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" * Creates a new ax.task.ListItem with the given text.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" * The item is initially marked as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" * @param text the text of the item","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" public ListItem(String text) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" this.text \u003d text;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" this.done \u003d false; // defaults to not done yet","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"ivanleekk"},"content":" * Gets the text of the item.","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"ivanleekk"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"ivanleekk"},"content":" * @return the text of the item","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"ivanleekk"},"content":" public String getText() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"ivanleekk"},"content":" return text;","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"ivanleekk"},"content":" * Gets the done status of the item.","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"ivanleekk"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"ivanleekk"},"content":" * @return true if the item is done, false otherwise","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"ivanleekk"},"content":" public boolean getDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"ivanleekk"},"content":" return done;","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"ivanleekk"},"content":" * Toggles the done status of the item.","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"ivanleekk"},"content":" * If the item was previously done, it is marked as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"ivanleekk"},"content":" * If the item was previously not done, it is marked as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"ivanleekk"},"content":" public void toggleDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"ivanleekk"},"content":" this.done \u003d !this.done;","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"ivanleekk"},"content":" * Sets the done status of the item.","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"ivanleekk"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"ivanleekk"},"content":" * @param done true if the item is done, false otherwise","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"ivanleekk"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"ivanleekk"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ivanleekk"},"content":" * Parses the date","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ivanleekk"},"content":" * @param date the string of date","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ivanleekk"},"content":" * @return a LocalDate Object","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ivanleekk"},"content":" public LocalDate parseDate(String date) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ivanleekk"},"content":" return LocalDate.parse(date.strip());","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"ivanleekk"},"content":" * Returns a string representation of the item.","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"ivanleekk"},"content":" * If the item is done, the string includes a tickbox.","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"ivanleekk"},"content":" * If the item is not done, the string includes an empty box.","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"ivanleekk"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"ivanleekk"},"content":" * @return a string representation of the item","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"ivanleekk"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"ivanleekk"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"ivanleekk"},"content":" if (done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"ivanleekk"},"content":" // if done use tickbox","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"ivanleekk"},"content":" return \"[✅] \" + this.text;","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"ivanleekk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"ivanleekk"},"content":" return \"[ ] \" + this.text;","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ivanleekk":86}},{"path":"src/main/java/ax/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":" * contains an ArrayList of ListItem to be used","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" static List\u003cListItem\u003e listItems \u003d new ArrayList\u003cListItem\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" * gets the list of items","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" * @return List\u003cListItem\u003e containing all items","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" public static List\u003cListItem\u003e getListItems() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" return listItems;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ivanleekk":21}},{"path":"src/main/java/ax/task/Todos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"public class Todos extends ListItem {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":" * Constructor for ax.task.Todos.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":" public Todos(String text) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":" super(text);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" * Returns string representation of ax.task.Todos.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ivanleekk":19}},{"path":"src/test/java/ax/task/DeadlinesTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"class DeadlinesTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":" void setDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" Deadlines temp \u003d new Deadlines(\"you said when\", \"2023-10-09\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" temp.setDone(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" assertEquals(temp.toString(), \"[D] [✅] you said when (by: 2023-10-09)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" temp.setDone(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" assertEquals(temp.toString(), \"[D] [ ] you said when (by: 2023-10-09)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" Deadlines temp \u003d new Deadlines(\"you said when\", \"2023-10-09\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" assertEquals(temp.toString(), \"[D] [ ] you said when (by: 2023-10-09)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ivanleekk":24}},{"path":"src/test/java/ax/task/EventsTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"class EventsTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":" void setDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" Events temp \u003d new Events(\"time to grind\", \"2023-01-01\", \"2024-01-01\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" temp.setDone(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" assertEquals(temp.toString(), \"[E] [✅] time to grind (from: 2023-01-01 to: 2024-01-01)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" temp.setDone(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" assertEquals(temp.toString(), \"[E] [ ] time to grind (from: 2023-01-01 to: 2024-01-01)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" Events temp \u003d new Events(\"time to grind\", \"2023-01-01\", \"2024-01-01\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" assertEquals(temp.toString(), \"[E] [ ] time to grind (from: 2023-01-01 to: 2024-01-01)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ivanleekk":23}},{"path":"src/test/java/ax/task/ListItemTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":"class ListItemTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" void getText() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" ListItem temp \u003d new ListItem(\"yo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":" assertEquals(temp.getText(), \"yo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" void getDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" ListItem temp \u003d new ListItem(\"yo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" assertFalse(temp.getDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" temp.setDone(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" assertTrue(temp.getDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ivanleekk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ivanleekk"},"content":" void toggleDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ivanleekk"},"content":" ListItem temp \u003d new ListItem(\"yo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ivanleekk"},"content":" temp.toggleDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ivanleekk"},"content":" assertTrue(temp.getDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ivanleekk"},"content":" temp.toggleDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ivanleekk"},"content":" assertFalse(temp.getDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ivanleekk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ivanleekk"},"content":" void setDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ivanleekk"},"content":" ListItem temp \u003d new ListItem(\"yo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ivanleekk"},"content":" assertFalse(temp.getDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ivanleekk"},"content":" temp.setDone(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ivanleekk"},"content":" assertTrue(temp.getDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ivanleekk"},"content":" temp.setDone(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ivanleekk"},"content":" assertFalse(temp.getDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ivanleekk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ivanleekk"},"content":" void parseDate() {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ivanleekk"},"content":" ListItem temp \u003d new ListItem(\"yo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ivanleekk"},"content":" LocalDate date \u003d temp.parseDate(\"2023-01-01\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ivanleekk"},"content":" assertEquals(date.getYear(), 2023);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ivanleekk"},"content":" assertEquals(date.getMonthValue(), 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ivanleekk"},"content":" assertEquals(date.getDayOfMonth(),1);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ivanleekk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ivanleekk"},"content":" void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ivanleekk"},"content":" ListItem temp \u003d new ListItem(\"yo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ivanleekk"},"content":" assertEquals(temp.toString(), \"[ ] yo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ivanleekk"},"content":" temp.setDone(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ivanleekk"},"content":" assertEquals(temp.toString(), \"[✅] yo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ivanleekk":60}},{"path":"src/test/java/ax/task/TodosTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"package ax.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"class TodosTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ivanleekk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ivanleekk"},"content":" void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ivanleekk"},"content":" Todos temp \u003d new Todos(\"hi\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ivanleekk"},"content":" assertEquals(temp.toString(), \"[T] [ ] hi\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ivanleekk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ivanleekk"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ivanleekk"},"content":" void testSetDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ivanleekk"},"content":" Todos temp \u003d new Todos(\"hi\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ivanleekk"},"content":" temp.setDone(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ivanleekk"},"content":" assertEquals(temp.toString(), \"[T] [✅] hi\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ivanleekk"},"content":" temp.setDone(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ivanleekk"},"content":" assertEquals(temp.toString(), \"[T] [ ] hi\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ivanleekk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ivanleekk"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ivanleekk":23}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ivanleekk"},"content":"todo help me","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"ivanleekk"},"content":"deadline boooo /by tmr","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"ivanleekk"},"content":"event whyyyy /from yesterday /to next fri","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ivanleekk"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ivanleekk"},"content":"delete 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ivanleekk"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ivanleekk"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ivanleekk"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ivanleekk":8}},{"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":"ivanleekk"},"content":"java -classpath ..\\bin ax.ax \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"-":20,"ivanleekk":1}},{"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":"ivanleekk"},"content":"java -classpath ../bin Ax \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":36,"ivanleekk":1}}] diff --git a/ivanleekk_ip_master/commits.json b/ivanleekk_ip_master/commits.json index 74c781f4..b864cfaf 100644 --- a/ivanleekk_ip_master/commits.json +++ b/ivanleekk_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ivanleekk":[{"date":"2023-08-23","commitResults":[{"hash":"0abb929481dc1330d14ce939bdafdf16d08044fb","isMergeCommit":false,"messageTitle":"Rename bot to Ax and added divider line","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"4b5c28f09b96dfafb388d0393945b89644536de7","isMergeCommit":false,"messageTitle":"Added a new bye msg","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}},{"hash":"567dc8023f74a8fae2f3c74e4deeae04c6396c75","isMergeCommit":false,"messageTitle":"remove old logo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":5}}},{"hash":"90a7b21d66046909d65fcd3f2a4063624f3bd4c5","isMergeCommit":false,"messageTitle":"added a echo thing where you repeat what you type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"10846a2f952f6f65e59601b09c9437b57f7180ed","isMergeCommit":false,"messageTitle":"simplify if else","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"e9b8b5f1ed88dc4449baa3a90d80dd2e9ab9ca70","isMergeCommit":false,"messageTitle":"make the list work","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"0d186c8e816494ee4393bad41b702e75ee6ab10a","isMergeCommit":false,"messageTitle":"use printf","messageBody":"","tags":["Level-2","Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"7eab4ee3598803fcc67511584d0cd85574f7c98b","isMergeCommit":false,"messageTitle":"seperate mark and unmark, also use 1 index","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":5}}},{"hash":"b16dd8910a53ab4fd3d708be14ebb0a7a64cfe1a","isMergeCommit":false,"messageTitle":"added 3 classes for the types of items in checklist","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":10}}},{"hash":"1700b238d981f42ff4a53d9c2b4db3e5e4226371","isMergeCommit":false,"messageTitle":"added error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":24}}},{"hash":"0d828a9f47c45c03be273787bec01edf1bc89b86","isMergeCommit":false,"messageTitle":"added the delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"49da167846b6865f337cfe6c21e5f32fd2ac35cf","isMergeCommit":false,"messageTitle":"added the delete function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"e5492acfee13e5985f4fbedd11f5ec0eaba01750","isMergeCommit":false,"messageTitle":"change expected txt","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"b49a5830d6117ec07a2713c64b50d89fe90a3aba","isMergeCommit":false,"messageTitle":"try to do testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"0368a77346cc0b4cd6ed703ee28265f415b58c9b","isMergeCommit":false,"messageTitle":"working automated test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"sh":{"insertions":0,"deletions":1}}},{"hash":"a67f6a2ad8c56d7be706adb7ac5ba266ed788908","isMergeCommit":false,"messageTitle":"add in javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":259,"deletions":164}}},{"hash":"95def82e0d3c99e7661b3ee173d4797191dc4a6c","isMergeCommit":false,"messageTitle":"style check","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":251,"deletions":245}}},{"hash":"74a31365299128333a95b006bcbbdef3be0c57a4","isMergeCommit":false,"messageTitle":"fix throwing exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":4}}}]},{"date":"2023-08-31","commitResults":[{"hash":"fd7f8c629248f5139220d475c581eae1f3357499","isMergeCommit":false,"messageTitle":"can create an empty file now","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"e4b68a18f699226dc61f2d2e6cd33dce9b16b9f4","isMergeCommit":false,"messageTitle":"can now save a file with text inside","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"36e37b1e24ff99c447bc7061f064a2147d020ed7","isMergeCommit":false,"messageTitle":"can now read from file too","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":4}}},{"hash":"933c22c9c6f64308f31af8e6e879467410af849a","isMergeCommit":false,"messageTitle":"handle if dir does not exist","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}}]},{"date":"2023-09-01","commitResults":[{"hash":"2f0b42037342f3a8143171bc9ec7a1bf76de9323","isMergeCommit":false,"messageTitle":"handle localdate and parsing","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":10}}}]}]},"authorFileTypeContributionMap":{"ivanleekk":{"java":385,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":8}},"authorContributionVariance":{"ivanleekk":98395.766},"authorDisplayNameMap":{"ivanleekk":"CS2103T-W08-1 LEE ..IVAN"}} +{"authorDailyContributionsMap":{"ivanleekk":[{"date":"2023-08-23","commitResults":[{"hash":"0abb929481dc1330d14ce939bdafdf16d08044fb","isMergeCommit":false,"messageTitle":"Rename bot to Ax and added divider line","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"4b5c28f09b96dfafb388d0393945b89644536de7","isMergeCommit":false,"messageTitle":"Added a new bye msg","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}},{"hash":"567dc8023f74a8fae2f3c74e4deeae04c6396c75","isMergeCommit":false,"messageTitle":"remove old logo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":5}}},{"hash":"90a7b21d66046909d65fcd3f2a4063624f3bd4c5","isMergeCommit":false,"messageTitle":"added a echo thing where you repeat what you type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"10846a2f952f6f65e59601b09c9437b57f7180ed","isMergeCommit":false,"messageTitle":"simplify if else","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"e9b8b5f1ed88dc4449baa3a90d80dd2e9ab9ca70","isMergeCommit":false,"messageTitle":"make the list work","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"0d186c8e816494ee4393bad41b702e75ee6ab10a","isMergeCommit":false,"messageTitle":"use printf","messageBody":"","tags":["Level-2","Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"7eab4ee3598803fcc67511584d0cd85574f7c98b","isMergeCommit":false,"messageTitle":"seperate mark and unmark, also use 1 index","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":5}}},{"hash":"b16dd8910a53ab4fd3d708be14ebb0a7a64cfe1a","isMergeCommit":false,"messageTitle":"added 3 classes for the types of items in checklist","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":10}}},{"hash":"1700b238d981f42ff4a53d9c2b4db3e5e4226371","isMergeCommit":false,"messageTitle":"added error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":24}}},{"hash":"0d828a9f47c45c03be273787bec01edf1bc89b86","isMergeCommit":false,"messageTitle":"added the delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"49da167846b6865f337cfe6c21e5f32fd2ac35cf","isMergeCommit":false,"messageTitle":"added the delete function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"e5492acfee13e5985f4fbedd11f5ec0eaba01750","isMergeCommit":false,"messageTitle":"change expected txt","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"b49a5830d6117ec07a2713c64b50d89fe90a3aba","isMergeCommit":false,"messageTitle":"try to do testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"0368a77346cc0b4cd6ed703ee28265f415b58c9b","isMergeCommit":false,"messageTitle":"working automated test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"sh":{"insertions":0,"deletions":1}}},{"hash":"a67f6a2ad8c56d7be706adb7ac5ba266ed788908","isMergeCommit":false,"messageTitle":"add in javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":259,"deletions":164}}},{"hash":"95def82e0d3c99e7661b3ee173d4797191dc4a6c","isMergeCommit":false,"messageTitle":"style check","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":251,"deletions":245}}},{"hash":"74a31365299128333a95b006bcbbdef3be0c57a4","isMergeCommit":false,"messageTitle":"fix throwing exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":4}}}]},{"date":"2023-08-31","commitResults":[{"hash":"fd7f8c629248f5139220d475c581eae1f3357499","isMergeCommit":false,"messageTitle":"can create an empty file now","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"e4b68a18f699226dc61f2d2e6cd33dce9b16b9f4","isMergeCommit":false,"messageTitle":"can now save a file with text inside","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"36e37b1e24ff99c447bc7061f064a2147d020ed7","isMergeCommit":false,"messageTitle":"can now read from file too","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":4}}},{"hash":"933c22c9c6f64308f31af8e6e879467410af849a","isMergeCommit":false,"messageTitle":"handle if dir does not exist","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}}]},{"date":"2023-09-01","commitResults":[{"hash":"2f0b42037342f3a8143171bc9ec7a1bf76de9323","isMergeCommit":false,"messageTitle":"handle localdate and parsing","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":10}}},{"hash":"87babb55b9e7879d3fca4835640a0b9a72cc6951","isMergeCommit":false,"messageTitle":"Moved everything into a different class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":243,"deletions":221}}},{"hash":"b734a483d2148cbd764d7326f141cc9c76bd0ad8","isMergeCommit":false,"messageTitle":"Moved everything into a packages","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":26},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"6deb4ccc078876dbfe9b8012f73c1b388f382f2a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"24b639feab55de95a721c8bb063dab4eaa95cada","isMergeCommit":false,"messageTitle":"edit build.gradle such that it works with the new names","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"ec4c1c7270160c720b8a41fcb19607e7caadf195","isMergeCommit":false,"messageTitle":"add junit test for task package","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":128,"deletions":0}}},{"hash":"55136992ccb97f29ed661c86203669af4f1bc41a","isMergeCommit":false,"messageTitle":"add junit test for listitem","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"ac5c4bd92d0e7d79e148e305d19fd273e0fc9bae","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Jar","A-JUnit","A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"ab64aaf565e090cccd06dec00b8c35a80578c9d4","isMergeCommit":false,"messageTitle":"add more javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"592f1b1c0703b84efcb28d12e99227e0a3576040","isMergeCommit":false,"messageTitle":"apply code style","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":20}}},{"hash":"16dde243f90de9d881d03954ecb457abc7119778","isMergeCommit":false,"messageTitle":"add find function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"0b5c4039ae0568a8ce466a900ccf1dce10c19f90","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"edad91d360b96a83376bd61653a34b89afe2e64c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b749a60ae5822261f3e50e95c0fc1931e19f0710","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["Level-9","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ivanleekk":{"java":602,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":3,"txt":8}},"authorContributionVariance":{"ivanleekk":128928.58},"authorDisplayNameMap":{"ivanleekk":"CS2103T-W08-1 LEE ..IVAN"}} diff --git a/jamesebond_ip_master/authorship.json b/jamesebond_ip_master/authorship.json index a8b1f448..6b03baa0 100644 --- a/jamesebond_ip_master/authorship.json +++ b/jamesebond_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"public class Deadline extends UserInput {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":" public Deadline(String text, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":" super(text);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jamesebond"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jamesebond"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jamesebond"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jamesebond"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jamesebond":13}},{"path":"src/main/java/EmptyDescException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"public class EmptyDescException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":" public EmptyDescException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jamesebond":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"public class Event extends UserInput {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jamesebond"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jamesebond"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jamesebond"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jamesebond"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jamesebond"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jamesebond"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jamesebond"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jamesebond":16}},{"path":"src/main/java/JamesBond.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":"public class JamesBond {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":" public static void main(String[] args) throws EmptyDescException {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jamesebond"},"content":" String logo \u003d \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jamesebond"},"content":" + \"YO! The name\u0027s Bond, James Bond. \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jamesebond"},"content":" + \"What can I do for you? \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jamesebond"},"content":" + \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jamesebond"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jamesebond"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jamesebond"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jamesebond"},"content":" String firstWord \u003d sc.next();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jamesebond"},"content":" if (firstWord.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jamesebond"},"content":" if (sc.hasNextInt()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jamesebond"},"content":" int taskNumber \u003d sc.nextInt();","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jamesebond"},"content":" taskList.markTask(taskNumber);","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jamesebond"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"Invalid Input, re-enter Mark followed by task number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jamesebond"},"content":" sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"jamesebond"},"content":" } else if (firstWord.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jamesebond"},"content":" int taskNumber \u003d sc.nextInt();","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jamesebond"},"content":" taskList.unMarkTask(taskNumber);","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jamesebond"},"content":" else if (firstWord.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jamesebond"},"content":" int taskNumber \u003d sc.nextInt();","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jamesebond"},"content":" taskList.deleteTask(taskNumber);","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jamesebond"},"content":" else {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jamesebond"},"content":" String input \u003d sc.nextLine().trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"jamesebond"},"content":" if (firstWord.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"jamesebond"},"content":" taskList.addToDo(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"jamesebond"},"content":" } else if (firstWord.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"jamesebond"},"content":" int byIndex \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jamesebond"},"content":" if (byIndex !\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"jamesebond"},"content":" String taskDescription \u003d input.substring(0, byIndex).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"jamesebond"},"content":" System.out.println(taskDescription);","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"jamesebond"},"content":" String dueDate \u003d input.substring(byIndex + 4).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"jamesebond"},"content":" System.out.println(dueDate);","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"jamesebond"},"content":" taskList.addDead(taskDescription, dueDate);","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"jamesebond"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"jamesebond"},"content":" throw new IllegalArgumentException(\"Deadline not formatted correctly, type again in the format /by (deadline)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"jamesebond"},"content":" } else if (firstWord.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"jamesebond"},"content":" int fromIndex \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"jamesebond"},"content":" int toIndex \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"jamesebond"},"content":" if (fromIndex !\u003d -1 \u0026\u0026 toIndex !\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"jamesebond"},"content":" String taskDescription \u003d input.substring(0, fromIndex).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"jamesebond"},"content":" System.out.println(taskDescription);","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"jamesebond"},"content":" String startTime \u003d input.substring(fromIndex + 6, toIndex).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"jamesebond"},"content":" String endTime \u003d input.substring(toIndex + 4).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"jamesebond"},"content":" taskList.addEvent(taskDescription, startTime, endTime);","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"jamesebond"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"jamesebond"},"content":" throw new IllegalArgumentException(\"Event format incorrect, type again in the format /from (timing) /to (timing)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"jamesebond"},"content":" } else if (firstWord.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"Bye. Till the next time.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"jamesebond"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"jamesebond"},"content":" } else if (firstWord.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"jamesebond"},"content":" taskList.listOut();","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"jamesebond"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"jamesebond"},"content":" if (input.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"jamesebond"},"content":" taskList.addInput(firstWord);","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"jamesebond"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"jamesebond"},"content":" taskList.addInput(firstWord + \" \" + input);","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"jamesebond"},"content":" } catch (EmptyDescException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"jamesebond"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"Invalid task number: \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jamesebond":76,"-":2}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":"public class TaskList {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":" ArrayList\u003cUserInput\u003e toDos;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":" public TaskList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jamesebond"},"content":" toDos \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jamesebond"},"content":" //keep taking in userInput","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jamesebond"},"content":" //add userInput to the list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jamesebond"},"content":" public void addInput(String textInput) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jamesebond"},"content":" UserInput userInput \u003d new UserInput(textInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jamesebond"},"content":" this.toDos.add(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"added:\" + userInput.text);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jamesebond"},"content":" public void addToDo(String task) throws EmptyDescException {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jamesebond"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"jamesebond"},"content":" throw new EmptyDescException(\"Task description cannot be empty after \u0027todo\u0027.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"jamesebond"},"content":" ToDo toDo \u003d new ToDo(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"jamesebond"},"content":" int taskId \u003d findTask(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jamesebond"},"content":" toDos.set(taskId, toDo);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"GOT IT. ADDED:\\n\" + toDo.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jamesebond"},"content":" public void addDead(String task, String by) throws EmptyDescException {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jamesebond"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"jamesebond"},"content":" throw new EmptyDescException(\"Task description cannot be empty after \u0027deadline\u0027.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jamesebond"},"content":" if (by.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"jamesebond"},"content":" throw new EmptyDescException(\"Deadline not provided, type again in the format /by (deadline)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"jamesebond"},"content":" Deadline dead \u003d new Deadline(task, by);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"jamesebond"},"content":" int taskId \u003d findTask(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jamesebond"},"content":" toDos.set(taskId, dead);","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"GOT IT. ADDED. DEADD:\\n\" + dead.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"jamesebond"},"content":" public void markTask(int taskNumber) throws IllegalArgumentException {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"jamesebond"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e 100) {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"jamesebond"},"content":" throw new IllegalArgumentException(\"Invalid task number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"jamesebond"},"content":" UserInput task \u003d this.toDos.get(taskNumber -1);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"jamesebond"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"Done. You\u0027re Done. \\n\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"jamesebond"},"content":" public void unMarkTask(int taskNumber) {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"jamesebond"},"content":" UserInput task \u003d this.toDos.get(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"jamesebond"},"content":" task.unMark();","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"Done. Stop being lazy.\\n\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"jamesebond"},"content":" public void listOut() {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"jamesebond"},"content":" for (int i \u003d 0; i \u003c toDos.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"jamesebond"},"content":" System.out.println((i + 1) + \".\" + this.toDos.get(i).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"jamesebond"},"content":" public int findTask(String task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"jamesebond"},"content":" for (int i \u003d 0; i \u003c toDos.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"jamesebond"},"content":" if (task.equalsIgnoreCase(toDos.get(i).text)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"jamesebond"},"content":" return i;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"jamesebond"},"content":" return -1;","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"jamesebond"},"content":" public void addEvent(String task, String from, String to) throws EmptyDescException {","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"jamesebond"},"content":" if (from.isEmpty() \u0026\u0026 to.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"jamesebond"},"content":" throw new EmptyDescException(\"Event time not provided, type again in the format /from (timing) /to (timing)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"jamesebond"},"content":" if (task.isEmpty()){","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"jamesebond"},"content":" throw new EmptyDescException(\"Task description cannot be empty after \u0027Event\u0027.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"jamesebond"},"content":" Event event \u003d new Event(task, from, to);","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"jamesebond"},"content":" int taskId \u003d findTask(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"jamesebond"},"content":" toDos.set(taskId, event);","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"GOT IT. ADDED:\\n\" + event.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"jamesebond"},"content":" public void deleteTask(int taskNum) {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"jamesebond"},"content":" UserInput task \u003d this.toDos.get(taskNum -1);","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"jamesebond"},"content":" this.toDos.remove(taskNum - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"jamesebond"},"content":" int len \u003d this.toDos.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"REMOVED FOR YOU:)\\n\" + task.toString() +\"\\n Now you have:\" + len + \" tasks left.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"jamesebond"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jamesebond":91}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"public class ToDo extends UserInput {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":" public ToDo(String text) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":" super(text);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jamesebond"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jamesebond"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jamesebond"},"content":" return \"[T]\" + super.toString() ;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jamesebond"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jamesebond":11}},{"path":"src/main/java/UserInput.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":"public class UserInput {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":" protected String text;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jamesebond"},"content":" public UserInput(String text) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jamesebond"},"content":" this.text \u003d text;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jamesebond"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jamesebond"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jamesebond"},"content":" return (isDone ? \"X\" : \"\");","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jamesebond"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jamesebond"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jamesebond"},"content":" public void unMark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jamesebond"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jamesebond"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jamesebond"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jamesebond"},"content":" return \"[\" + getStatusIcon() + \"]\" + this.text;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jamesebond"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jamesebond":29}},{"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":"jamesebond"},"content":"java -classpath ..\\bin JamesBond \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"jamesebond":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":"jamesebond"},"content":"java -classpath ../bin JamesBond \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"jamesebond"},"content":"# convert ACTUAL.TXT to UNIX format using sed","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jamesebond"},"content":"sed -i \u0027\u0027 \u0027s/\\r$//\u0027 ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jamesebond"},"content":"# convert EXPECTED.TXT to UNIX format using sed","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jamesebond"},"content":"sed -i \u0027\u0027 \u0027s/\\r$//\u0027 EXPECTED.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"jamesebond"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jamesebond":7,"-":33}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":"import java.util.Locale;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":"public class Deadline extends UserInput {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jamesebond"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jamesebond"},"content":" public Deadline(String text, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jamesebond"},"content":" super(text);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jamesebond"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jamesebond"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jamesebond"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jamesebond"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(outputFormatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"jamesebond"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jamesebond":20}},{"path":"src/main/java/EmptyDescException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"public class EmptyDescException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":" public EmptyDescException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jamesebond":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":"public class Event extends UserInput {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jamesebond"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jamesebond"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jamesebond"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jamesebond"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jamesebond"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jamesebond"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jamesebond"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jamesebond"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(outputFormatter) + \" to: \" + to.format(outputFormatter) +\")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jamesebond"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jamesebond":19}},{"path":"src/main/java/JamesBond.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":"public class JamesBond {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":" public static void main(String[] args) throws EmptyDescException {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jamesebond"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jamesebond"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jamesebond"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jamesebond"},"content":" String logo \u003d \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jamesebond"},"content":" + \"YO! The name\u0027s Bond, James Bond. \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jamesebond"},"content":" + \"What can I do for you? \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jamesebond"},"content":" + \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jamesebond"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jamesebond"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jamesebond"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jamesebond"},"content":" String firstWord \u003d sc.next();","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jamesebond"},"content":" if (firstWord.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jamesebond"},"content":" if (sc.hasNextInt()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"jamesebond"},"content":" int taskNumber \u003d sc.nextInt();","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jamesebond"},"content":" taskList.markTask(taskNumber);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"jamesebond"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"Invalid Input, re-enter Mark followed by task number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jamesebond"},"content":" sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jamesebond"},"content":" } else if (firstWord.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jamesebond"},"content":" int taskNumber \u003d sc.nextInt();","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jamesebond"},"content":" taskList.unMarkTask(taskNumber);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"jamesebond"},"content":" else if (firstWord.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jamesebond"},"content":" int taskNumber \u003d sc.nextInt();","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jamesebond"},"content":" taskList.deleteTask(taskNumber);","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"jamesebond"},"content":" else {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"jamesebond"},"content":" String input \u003d sc.nextLine().trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"jamesebond"},"content":" if (firstWord.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jamesebond"},"content":" taskList.addToDo(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"jamesebond"},"content":" } else if (firstWord.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"jamesebond"},"content":" int byIndex \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"jamesebond"},"content":" if (byIndex !\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"jamesebond"},"content":" String taskDescription \u003d input.substring(0, byIndex).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"jamesebond"},"content":" LocalDateTime dueDate \u003d LocalDateTime.parse(input.substring(byIndex + 4).trim(), formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jamesebond"},"content":" taskList.addDead(taskDescription, dueDate);","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"jamesebond"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"jamesebond"},"content":" throw new IllegalArgumentException(\"Deadline not formatted correctly, type again in the format /by (deadline)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"jamesebond"},"content":" } else if (firstWord.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"jamesebond"},"content":" int fromIndex \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"jamesebond"},"content":" int toIndex \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"jamesebond"},"content":" if (fromIndex !\u003d -1 \u0026\u0026 toIndex !\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"jamesebond"},"content":" String taskDescription \u003d input.substring(0, fromIndex).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"jamesebond"},"content":" System.out.println(taskDescription);","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"jamesebond"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(input.substring(fromIndex + 6, toIndex).trim(), formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jamesebond"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(input.substring(toIndex + 4).trim(), formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jamesebond"},"content":" taskList.addEvent(taskDescription, startTime, endTime);","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"jamesebond"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"jamesebond"},"content":" throw new IllegalArgumentException(\"Event format incorrect, type again in the format /from (timing) /to (timing)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"jamesebond"},"content":" } else if (firstWord.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"Bye. Till the next time.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"jamesebond"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"jamesebond"},"content":" } else if (firstWord.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"jamesebond"},"content":" taskList.listOut();","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"jamesebond"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"jamesebond"},"content":" if (input.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"jamesebond"},"content":" taskList.addInput(firstWord);","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"jamesebond"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"jamesebond"},"content":" taskList.addInput(firstWord + \" \" + input);","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"jamesebond"},"content":" } catch (EmptyDescException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"jamesebond"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"Invalid task number: \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jamesebond":78,"-":2}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jamesebond"},"content":"public class TaskList {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jamesebond"},"content":" ArrayList\u003cUserInput\u003e toDos;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jamesebond"},"content":" public TaskList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jamesebond"},"content":" toDos \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jamesebond"},"content":" //keep taking in userInput","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jamesebond"},"content":" //add userInput to the list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jamesebond"},"content":" public void addInput(String textInput) {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jamesebond"},"content":" UserInput userInput \u003d new UserInput(textInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jamesebond"},"content":" this.toDos.add(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"added:\" + userInput.text);","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"jamesebond"},"content":" public void addToDo(String task) throws EmptyDescException {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jamesebond"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jamesebond"},"content":" throw new EmptyDescException(\"Task description cannot be empty after \u0027todo\u0027.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jamesebond"},"content":" ToDo toDo \u003d new ToDo(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jamesebond"},"content":" toDos.add(toDo);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"GOT IT. ADDED:\\n\" + toDo.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jamesebond"},"content":" public void addDead(String task, LocalDateTime by) throws EmptyDescException {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jamesebond"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"jamesebond"},"content":" throw new EmptyDescException(\"Task description cannot be empty after \u0027deadline\u0027.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"jamesebond"},"content":" Deadline dead \u003d new Deadline(task, by);","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jamesebond"},"content":" toDos.add(dead);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"GOT IT. ADDED. DEADD:\\n\" + dead.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"jamesebond"},"content":" public void markTask(int taskNumber) throws IllegalArgumentException {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"jamesebond"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e 100) {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"jamesebond"},"content":" throw new IllegalArgumentException(\"Invalid task number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"jamesebond"},"content":" UserInput task \u003d this.toDos.get(taskNumber -1);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"jamesebond"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"Done. You\u0027re Done. \\n\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"jamesebond"},"content":" public void unMarkTask(int taskNumber) {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"jamesebond"},"content":" UserInput task \u003d this.toDos.get(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"jamesebond"},"content":" task.unMark();","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"Done. Stop being lazy.\\n\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"jamesebond"},"content":" public void listOut() {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"jamesebond"},"content":" for (int i \u003d 0; i \u003c toDos.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"jamesebond"},"content":" System.out.println((i + 1) + \".\" + this.toDos.get(i).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"jamesebond"},"content":" public int findTask(String task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"jamesebond"},"content":" for (int i \u003d 0; i \u003c toDos.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"jamesebond"},"content":" if (task.equalsIgnoreCase(toDos.get(i).text)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"jamesebond"},"content":" return i;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"jamesebond"},"content":" return -1;","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"jamesebond"},"content":" public void addEvent(String task, LocalDateTime from, LocalDateTime to) throws EmptyDescException {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"jamesebond"},"content":" if (task.isEmpty()){","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"jamesebond"},"content":" throw new EmptyDescException(\"Task description cannot be empty after \u0027Event\u0027, type again in the format event (your task) /from (yyyy-mm-dd TIME) /to (yyyy-mm-dd TIME).\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"jamesebond"},"content":" Event event \u003d new Event(task, from, to);","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"jamesebond"},"content":" toDos.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"GOT IT. ADDED:\\n\" + event.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"jamesebond"},"content":" public void deleteTask(int taskNum) {","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"jamesebond"},"content":" UserInput task \u003d this.toDos.get(taskNum -1);","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"jamesebond"},"content":" this.toDos.remove(taskNum - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"jamesebond"},"content":" int len \u003d this.toDos.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"jamesebond"},"content":" System.out.println(\"REMOVED FOR YOU:)\\n\" + task.toString() +\"\\n Now you have:\" + len + \" tasks left.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"jamesebond"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jamesebond":87}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"public class ToDo extends UserInput {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":" public ToDo(String text) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":" super(text);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jamesebond"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jamesebond"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jamesebond"},"content":" return \"[T]\" + super.toString() ;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jamesebond"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jamesebond":11}},{"path":"src/main/java/UserInput.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamesebond"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jamesebond"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jamesebond"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jamesebond"},"content":"import java.util.Locale;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jamesebond"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jamesebond"},"content":"public class UserInput {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jamesebond"},"content":" protected String text;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jamesebond"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jamesebond"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"d-MMMM-yyyy h:mma\", Locale.ENGLISH);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jamesebond"},"content":" public UserInput(String text) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jamesebond"},"content":" this.text \u003d text;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jamesebond"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jamesebond"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jamesebond"},"content":" return (isDone ? \"X\" : \"\");","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jamesebond"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jamesebond"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jamesebond"},"content":" public void unMark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jamesebond"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jamesebond"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jamesebond"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jamesebond"},"content":" return \"[\" + getStatusIcon() + \"]\" + this.text;","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jamesebond"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jamesebond"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jamesebond":34}},{"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":"jamesebond"},"content":"java -classpath ..\\bin JamesBond \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"jamesebond":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":"jamesebond"},"content":"java -classpath ../bin JamesBond \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"jamesebond"},"content":"# convert ACTUAL.TXT to UNIX format using sed","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jamesebond"},"content":"sed -i \u0027\u0027 \u0027s/\\r$//\u0027 ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jamesebond"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jamesebond"},"content":"# convert EXPECTED.TXT to UNIX format using sed","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jamesebond"},"content":"sed -i \u0027\u0027 \u0027s/\\r$//\u0027 EXPECTED.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"jamesebond"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jamesebond":7,"-":33}}] diff --git a/jamesebond_ip_master/commits.json b/jamesebond_ip_master/commits.json index 33187670..817c6be2 100644 --- a/jamesebond_ip_master/commits.json +++ b/jamesebond_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jamesebond":[{"date":"2023-08-23","commitResults":[{"hash":"bd77ac1e5ccc1b8f18cb4c63e58f262b3d31b534","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"85a7ab4e81382dc1362bb90bf17370ad3392a645","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":8}}},{"hash":"c54fed0c2caef493c4099ba51365d17aace5fe01","isMergeCommit":false,"messageTitle":"Level 2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":23}}},{"hash":"6e5b5a2e5096b974414384d70ea757b9374d9416","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":21}}}]},{"date":"2023-08-24","commitResults":[{"hash":"d507b256f95c8c9a32e72af195ababb952a7a4ef","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":12}}},{"hash":"20bff1fa60eb127affb1a62a1a68a27ed5e065fb","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":134}}},{"hash":"aa4cc604de70eef51085948d3229e64f25e12ac5","isMergeCommit":false,"messageTitle":"level 6 delte","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":8,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"jamesebond":{"java":242,"md":0,"fxml":0,"sh":7,"bat":1,"gradle":0,"txt":0}},"authorContributionVariance":{"jamesebond":26698.285},"authorDisplayNameMap":{"jamesebond":"CS2103T-W10-4 DU K..XUAN"}} +{"authorDailyContributionsMap":{"jamesebond":[{"date":"2023-08-23","commitResults":[{"hash":"bd77ac1e5ccc1b8f18cb4c63e58f262b3d31b534","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"85a7ab4e81382dc1362bb90bf17370ad3392a645","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":8}}},{"hash":"c54fed0c2caef493c4099ba51365d17aace5fe01","isMergeCommit":false,"messageTitle":"Level 2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":23}}},{"hash":"6e5b5a2e5096b974414384d70ea757b9374d9416","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":21}}}]},{"date":"2023-08-24","commitResults":[{"hash":"d507b256f95c8c9a32e72af195ababb952a7a4ef","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":12}}},{"hash":"20bff1fa60eb127affb1a62a1a68a27ed5e065fb","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":134}}},{"hash":"aa4cc604de70eef51085948d3229e64f25e12ac5","isMergeCommit":false,"messageTitle":"level 6 delte","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":8,"deletions":6}}}]},{"date":"2023-09-01","commitResults":[{"hash":"3fa96e2cb793a060d53ae94b1803b884a8d8447c","isMergeCommit":false,"messageTitle":"Add Level 8 Dates and times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":27}}}]}]},"authorFileTypeContributionMap":{"jamesebond":{"java":255,"md":0,"fxml":0,"sh":7,"bat":1,"gradle":0,"txt":0}},"authorContributionVariance":{"jamesebond":14545.821},"authorDisplayNameMap":{"jamesebond":"CS2103T-W10-4 DU K..XUAN"}} diff --git a/jamz903_ip_master/commits.json b/jamz903_ip_master/commits.json index 89eaa3a9..703c0f6d 100644 --- a/jamz903_ip_master/commits.json +++ b/jamz903_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jamz903":[{"date":"2023-08-22","commitResults":[{"hash":"3412191908e136c741ed26f41da125166af7a5e2","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"260d44c87d150baaf68318371ca4b66d4f1820df","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}},{"hash":"cefd92103b1af6080583e584cd26c3badf501c3b","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"2bf48c3fa32f604069861d842a24bf4edb13e3f1","isMergeCommit":false,"messageTitle":"level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":7}}},{"hash":"23710db9baa77f3e206c30902c8fb0471622114e","isMergeCommit":false,"messageTitle":"level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":5}}},{"hash":"d265b01f0e2558a3b256c204bd43099852d90bae","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"138176c998f3f24e754ea53cdd62393546b595d1","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":22}}},{"hash":"dede8596243e62ec197ebb86aac8a3bccb724b80","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"20ce203c48c99841f42e503ce12d5637df810257","isMergeCommit":false,"messageTitle":"Add ability to save and recall from hard disk","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":13}}}]},{"date":"2023-08-29","commitResults":[{"hash":"bb69d7e25a994c6b578f463015d3483cdf26b805","isMergeCommit":false,"messageTitle":"Store deadlines and events in datetime format","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":6}}}]},{"date":"2023-08-30","commitResults":[{"hash":"24f98339d7a2ad8541cedd1dbea929dd0e977fb7","isMergeCommit":false,"messageTitle":"Refactor code into Ui, Storage, Parser and TaskList classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":305,"deletions":278}}},{"hash":"5a1a59bed9074ab3ade82a4ba59f5fae9704f67a","isMergeCommit":false,"messageTitle":"Minor Bug Fixes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"9a3e97a7ecf907ad0bf2b9f02c483b00543ccc3b","isMergeCommit":false,"messageTitle":"More Minor Bug Fixes \u0026 Nest into Package Duke","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":7},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-31","commitResults":[{"hash":"5d7c7f6ac6c182a0fee3f475a31dc85181f21789","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"c0ce38611d314a62e504ebf5228738c1b6278a70","isMergeCommit":false,"messageTitle":"Set up Gradle and add JUnit Tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"jamz903":{"java":608,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":7}},"authorContributionVariance":{"jamz903":26535.129},"authorDisplayNameMap":{"jamz903":"CS2103-T16-3 TOH ..AMIE"}} +{"authorDailyContributionsMap":{"jamz903":[{"date":"2023-08-22","commitResults":[{"hash":"3412191908e136c741ed26f41da125166af7a5e2","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"260d44c87d150baaf68318371ca4b66d4f1820df","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}},{"hash":"cefd92103b1af6080583e584cd26c3badf501c3b","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"2bf48c3fa32f604069861d842a24bf4edb13e3f1","isMergeCommit":false,"messageTitle":"level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":7}}},{"hash":"23710db9baa77f3e206c30902c8fb0471622114e","isMergeCommit":false,"messageTitle":"level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":5}}},{"hash":"d265b01f0e2558a3b256c204bd43099852d90bae","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"138176c998f3f24e754ea53cdd62393546b595d1","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":22}}},{"hash":"dede8596243e62ec197ebb86aac8a3bccb724b80","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"20ce203c48c99841f42e503ce12d5637df810257","isMergeCommit":false,"messageTitle":"Add ability to save and recall from hard disk","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":13}}}]},{"date":"2023-08-29","commitResults":[{"hash":"bb69d7e25a994c6b578f463015d3483cdf26b805","isMergeCommit":false,"messageTitle":"Store deadlines and events in datetime format","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":6}}}]},{"date":"2023-08-30","commitResults":[{"hash":"24f98339d7a2ad8541cedd1dbea929dd0e977fb7","isMergeCommit":false,"messageTitle":"Refactor code into Ui, Storage, Parser and TaskList classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":305,"deletions":278}}},{"hash":"5a1a59bed9074ab3ade82a4ba59f5fae9704f67a","isMergeCommit":false,"messageTitle":"Minor Bug Fixes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"9a3e97a7ecf907ad0bf2b9f02c483b00543ccc3b","isMergeCommit":false,"messageTitle":"More Minor Bug Fixes \u0026 Nest into Package Duke","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":7},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-31","commitResults":[{"hash":"5d7c7f6ac6c182a0fee3f475a31dc85181f21789","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"c0ce38611d314a62e504ebf5228738c1b6278a70","isMergeCommit":false,"messageTitle":"Set up Gradle and add JUnit Tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"jamz903":{"java":608,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":7}},"authorContributionVariance":{"jamz903":26535.129},"authorDisplayNameMap":{"jamz903":"CS2103-T16-3 TOH ..AMIE"}} diff --git a/jannnice_ip_master/authorship.json b/jannnice_ip_master/authorship.json index 55c86f04..43fb9169 100644 --- a/jannnice_ip_master/authorship.json +++ b/jannnice_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"T~done~work","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"D~notDone~hw~2023-12-04T12:21","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"E~notDone~wedding~2023-12-01T12:00 - 2023-12-02T18:00","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jannnice":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":" this.by \u003d LocalDateTime.parse(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" public String printDesc() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" String byString \u003d this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy H:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" return \"[D]\" + super.printDesc() + \" (by: \" + byString + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jannnice"},"content":" return \"D~\" + super.getDescription() + \"~\" + this.by;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jannnice":22}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":" private static final String hardDiskPath \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" private static File hardDisk;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" public static final String horizontalLine \u003d \" ____________________________________________________________\";","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" public static ArrayList\u003cTask\u003e taskArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" public static int numTask \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" enum TASK { MARK, UNMARK, DELETE, TODO, EVENT, DEADLINE, BYE, LIST, INVALID}","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":" public static void greet() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":" + \" Hello! I\u0027m POPOOH\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jannnice"},"content":" + \" What can I do for you?\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jannnice"},"content":" + horizontalLine);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jannnice"},"content":" public static void exit() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jannnice"},"content":" + \" Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jannnice"},"content":" + horizontalLine);","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"jannnice"},"content":" public static void unmark(String i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jannnice"},"content":" int taskId \u003d Integer.parseInt(i.substring(7)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jannnice"},"content":" taskArray.get(taskId).markAsUndone();","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"jannnice"},"content":" // update the duke.txt","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jannnice"},"content":" saveTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jannnice"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Uhm.. something is not working right..\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jannnice"},"content":" public static void mark(String i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"jannnice"},"content":" int taskId \u003d Integer.parseInt(i.substring(5)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"jannnice"},"content":" taskArray.get(taskId).markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"jannnice"},"content":" // update the duke.txt","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jannnice"},"content":" saveTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jannnice"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Uhm.. something is not working right..\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"jannnice"},"content":" public static void deleteTask(String i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"jannnice"},"content":" int deleteTask \u003d Integer.parseInt(i.substring(7)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"jannnice"},"content":" Task removed \u003d taskArray.get(deleteTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"jannnice"},"content":" taskArray.remove(deleteTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"jannnice"},"content":" numTask--;","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"jannnice"},"content":" + \" \" + removed.printDesc() + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"jannnice"},"content":" + \" Now you have \" + numTask +\" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"jannnice"},"content":" public static void listTask(String i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"jannnice"},"content":" for (int a \u003d 0; a \u003c numTask; a++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"jannnice"},"content":" System.out.println(\" \" + (a + 1) + \". \" + taskArray.get(a).printDesc());","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"jannnice"},"content":" public static void todoTask(String i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"jannnice"},"content":" String[] taskDetails \u003d i.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"jannnice"},"content":" taskArray.add(new Todo(taskDetails[1]));","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"jannnice"},"content":" taskArray.get(numTask).printMessage(numTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"jannnice"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"jannnice"},"content":" + \" OOPS!!! The description of todo cannot be empty :(.\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"jannnice"},"content":" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"jannnice"},"content":" numTask--;","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"jannnice"},"content":" numTask++;","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"jannnice"},"content":" public static void deadlineTask(String i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"jannnice"},"content":" String[] taskDetails \u003d i.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"jannnice"},"content":" String[] deadlineDetails \u003d taskDetails[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"jannnice"},"content":" taskArray.add(new Deadline(deadlineDetails[0], deadlineDetails[1]));","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"jannnice"},"content":" taskArray.get(numTask).printMessage(numTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"jannnice"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"jannnice"},"content":" + \" OOPS!!! The description of deadline is incomplete.\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"jannnice"},"content":" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"jannnice"},"content":" numTask--;","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"jannnice"},"content":" numTask++;","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"jannnice"},"content":" public static void eventTask(String i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"jannnice"},"content":" String[] taskDetails \u003d i.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"jannnice"},"content":" String[] eventDetails \u003d taskDetails[1].split(\" /\", 3);","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"jannnice"},"content":" taskArray.add(new Event(eventDetails[0], eventDetails[1].substring(5),","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"jannnice"},"content":" eventDetails[2].substring(3)));","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"jannnice"},"content":" taskArray.get(numTask).printMessage(numTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"jannnice"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"jannnice"},"content":" + \" OOPS!!! The description of event is incomplete :(.\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"jannnice"},"content":" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"jannnice"},"content":" numTask--;","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"jannnice"},"content":" numTask++;","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"jannnice"},"content":" public static TASK commandCheck(String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"jannnice"},"content":" switch(command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"jannnice"},"content":" case \"bye\":","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"jannnice"},"content":" return TASK.BYE;","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"jannnice"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"jannnice"},"content":" return TASK.UNMARK;","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"jannnice"},"content":" case \"mark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"jannnice"},"content":" return TASK.MARK;","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"jannnice"},"content":" case \"delete\":","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"jannnice"},"content":" return TASK.DELETE;","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"jannnice"},"content":" case \"list\":","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"jannnice"},"content":" return TASK.LIST;","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"jannnice"},"content":" case \"todo\":","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"jannnice"},"content":" return TASK.TODO;","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"jannnice"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"jannnice"},"content":" return TASK.DEADLINE;","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"jannnice"},"content":" case \"event\":","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"jannnice"},"content":" return TASK.EVENT;","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"jannnice"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"jannnice"},"content":" return TASK.INVALID;","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"jannnice"},"content":" public static void printCommand(TASK command, String info) throws DukeException, IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"jannnice"},"content":" switch(command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"jannnice"},"content":" case BYE:","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"jannnice"},"content":" exit();","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"jannnice"},"content":" case UNMARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"jannnice"},"content":" unmark(info);","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"jannnice"},"content":" case MARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"jannnice"},"content":" mark(info);","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"jannnice"},"content":" case DELETE:","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"jannnice"},"content":" deleteTask(info);","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"jannnice"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"jannnice"},"content":" listTask(info);","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"jannnice"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"jannnice"},"content":" todoTask(info);","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"jannnice"},"content":" case EVENT:","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"jannnice"},"content":" eventTask(info);","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"jannnice"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"jannnice"},"content":" deadlineTask(info);","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"jannnice"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"jannnice"},"content":" throw new DukeException(\" OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"jannnice"},"content":" private static void checkHardDisk() {","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"jannnice"},"content":" File dataDirectory \u003d new File(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"jannnice"},"content":" if (!dataDirectory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"jannnice"},"content":" System.out.println(\" OOPS! The data directory doesn\u0027t exist. I\u0027ll create one for you!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"jannnice"},"content":" dataDirectory.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"jannnice"},"content":" hardDisk \u003d new File(hardDiskPath);","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"jannnice"},"content":" if (!hardDisk.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"jannnice"},"content":" System.out.println(\" OOPS! The hard disk doesn\u0027t exist. I\u0027ll create one for you!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"jannnice"},"content":" hardDisk.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"jannnice"},"content":" hardDisk.setReadable(true);","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"jannnice"},"content":" hardDisk.setWritable(true);","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"jannnice"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Something went wrong, we couldn\u0027t create duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"jannnice"},"content":" // retrieves past tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"jannnice"},"content":" private static void loadTask() {","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"jannnice"},"content":" Scanner fileScanner \u003d new Scanner(hardDisk);","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"jannnice"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"jannnice"},"content":" String task \u003d fileScanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"jannnice"},"content":" String[] taskDetails \u003d task.split(\"~\",5);","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"jannnice"},"content":" String taskType \u003d taskDetails[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"jannnice"},"content":" String taskStatus \u003d taskDetails[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"jannnice"},"content":" String taskDescription \u003d taskDetails[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"jannnice"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"jannnice"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"jannnice"},"content":" Todo addTodo \u003d new Todo(taskDescription);","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"jannnice"},"content":" if (Objects.equals(taskStatus, \"done\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"jannnice"},"content":" addTodo.updateAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"jannnice"},"content":" taskArray.add(addTodo);","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"jannnice"},"content":" numTask++;","lastModifiedDate":"2023-08-30"},{"lineNumber":200,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"jannnice"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"jannnice"},"content":" Deadline addDeadline \u003d new Deadline(taskDescription, taskDetails[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":203,"author":{"gitId":"jannnice"},"content":" if (Objects.equals(taskStatus, \"Y\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":204,"author":{"gitId":"jannnice"},"content":" addDeadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"jannnice"},"content":" taskArray.add(addDeadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"jannnice"},"content":" numTask++;","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"jannnice"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"jannnice"},"content":" String[] timeDetails \u003d taskDetails[3].split(\" - \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":211,"author":{"gitId":"jannnice"},"content":" Event addEvent \u003d new Event(taskDescription, timeDetails[0], timeDetails[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"jannnice"},"content":" if (Objects.equals(taskStatus, \"Y\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":213,"author":{"gitId":"jannnice"},"content":" addEvent.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":214,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":215,"author":{"gitId":"jannnice"},"content":" taskArray.add(addEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":216,"author":{"gitId":"jannnice"},"content":" numTask++;","lastModifiedDate":"2023-08-30"},{"lineNumber":217,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":218,"author":{"gitId":"jannnice"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":219,"author":{"gitId":"jannnice"},"content":" throw new DukeException(\" invalid task in the hard disk\");","lastModifiedDate":"2023-08-30"},{"lineNumber":220,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":221,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":222,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":223,"author":{"gitId":"jannnice"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":224,"author":{"gitId":"jannnice"},"content":" System.out.println(\" There is no saved duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":225,"author":{"gitId":"jannnice"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":226,"author":{"gitId":"jannnice"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":227,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":228,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":229,"author":{"gitId":"jannnice"},"content":" // saves new tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":230,"author":{"gitId":"jannnice"},"content":" private static void saveTask() throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":231,"author":{"gitId":"jannnice"},"content":" FileWriter fw \u003d new FileWriter(hardDiskPath);","lastModifiedDate":"2023-08-30"},{"lineNumber":232,"author":{"gitId":"jannnice"},"content":" for (Task task : taskArray) {","lastModifiedDate":"2023-08-30"},{"lineNumber":233,"author":{"gitId":"jannnice"},"content":" String writeTask \u003d task.getDescription() + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":234,"author":{"gitId":"jannnice"},"content":" fw.write(writeTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":235,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":236,"author":{"gitId":"jannnice"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":237,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":238,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":239,"author":{"gitId":"jannnice"},"content":" checkHardDisk();","lastModifiedDate":"2023-08-30"},{"lineNumber":240,"author":{"gitId":"jannnice"},"content":" loadTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":241,"author":{"gitId":"jannnice"},"content":" greet();","lastModifiedDate":"2023-08-23"},{"lineNumber":242,"author":{"gitId":"jannnice"},"content":" File f \u003d new File(\"/Desktop/CS2103T/ip/hardDrive.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":243,"author":{"gitId":"jannnice"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":244,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":245,"author":{"gitId":"jannnice"},"content":" while (input.hasNext()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":246,"author":{"gitId":"jannnice"},"content":" String command \u003d input.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":247,"author":{"gitId":"jannnice"},"content":" String[] findCommand \u003d command.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":248,"author":{"gitId":"jannnice"},"content":" TASK order \u003d commandCheck(findCommand[0]);","lastModifiedDate":"2023-08-24"},{"lineNumber":249,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":250,"author":{"gitId":"jannnice"},"content":" printCommand(order, command);","lastModifiedDate":"2023-08-24"},{"lineNumber":251,"author":{"gitId":"jannnice"},"content":" saveTask();","lastModifiedDate":"2023-08-30"},{"lineNumber":252,"author":{"gitId":"jannnice"},"content":" } catch (DukeException message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine + \"\\n\" + message.getMessage() + \"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":254,"author":{"gitId":"jannnice"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":255,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Oh no, seems like something is not working.. We can\u0027t save your data.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":256,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jannnice":254,"-":5}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":" public DukeException (String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jannnice":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":" this.from \u003d LocalDateTime.parse(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":" this.to \u003d LocalDateTime.parse(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" public String printDesc() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" String fromMessage \u003d this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy H:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":" String toMessage \u003d this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy H:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":" return \"[E]\" + super.printDesc() + \" (from: \" + fromMessage + \" to: \" + toMessage + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jannnice"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jannnice"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jannnice"},"content":" return \"E~\" + super.getDescription() + \"~\" + this.from + \" - \" + this.to;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jannnice":24}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" public void updateAsDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jannnice"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jannnice"},"content":" + \" \" + this.printDesc());","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jannnice"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jannnice"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jannnice"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jannnice"},"content":" + \" \" + this.printDesc());","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jannnice"},"content":" public String printDesc() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jannnice"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jannnice"},"content":" public void printMessage(int numTask) {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jannnice"},"content":" System.out.println(Duke.horizontalLine + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"jannnice"},"content":" + \" Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"jannnice"},"content":" + \" \" + this.printDesc() + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"jannnice"},"content":" + \" Now you have \" + (numTask + 1) + \" tasks in the list.\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"jannnice"},"content":" + Duke.horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jannnice"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jannnice"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jannnice"},"content":" return \"done~\" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jannnice"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jannnice"},"content":" return \"notDone~\" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jannnice":46}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":" protected char type;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":" this.type \u003d \u0027T\u0027;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":" public String printDesc() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":" return \"[T]\" + super.printDesc();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" return \"T~\" + super.getDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jannnice":16}},{"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":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"jannnice"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jannnice":1,"-":33}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jannnice":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"jannnice"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jannnice":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"T~notDone~work agn","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"D~done~hw ~2023-12-02T23:59","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"E~done~wedding~2023-09-09T09:00 - 2023-09-09T09:30","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jannnice":3}},{"path":"src/main/java/Exceptions/DukeArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package Exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"public class DukeArgumentException extends Exception{","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":" public DukeArgumentException (String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":" super(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jannnice":7}},{"path":"src/main/java/Exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package Exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":" public DukeException (String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jannnice":6}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":" this.by \u003d LocalDateTime.parse(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" public String printDesc() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":" String byString \u003d this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy H:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":" return \"[D]\" + super.printDesc() + \" (by: \" + byString + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jannnice"},"content":" return \" Please key in the dates in the format of YYYY-MM-ddThh:mm:ss\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"jannnice"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jannnice"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jannnice"},"content":" return \"D~\" + super.getDescription() + \"~\" + this.by;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jannnice":28}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"import Exceptions.DukeArgumentException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":"public class Duke {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":" private static Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" private static Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" private static Parser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" private static TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" private static String directoryPath;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" private static String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":" protected static final String horizontalLine \u003d \" ____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":" enum TASK { MARK, UNMARK, DELETE, TODO, EVENT, DEADLINE, BYE, LIST, INVALID}","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":"// public static void greet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jannnice"},"content":"// System.out.println(horizontalLine + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jannnice"},"content":"// + \" Hello! I\u0027m POPOOH\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jannnice"},"content":"// + \" What can I do for you?\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jannnice"},"content":"// + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jannnice"},"content":"// public static void exit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jannnice"},"content":"// System.out.println(horizontalLine + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jannnice"},"content":"// + \" Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jannnice"},"content":"// + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jannnice"},"content":"// public static void unmark(String i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jannnice"},"content":"// int taskId \u003d Integer.parseInt(i.substring(7)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jannnice"},"content":"// taskArray.get(taskId).markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jannnice"},"content":"// // update the duke.txt","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jannnice"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jannnice"},"content":"// saveTask();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jannnice"},"content":"// } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jannnice"},"content":"// System.out.println(\" Uhm.. something is not working right..\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jannnice"},"content":"// public static void mark(String i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jannnice"},"content":"// int taskId \u003d Integer.parseInt(i.substring(5)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jannnice"},"content":"// taskArray.get(taskId).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jannnice"},"content":"// // update the duke.txt","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jannnice"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jannnice"},"content":"// saveTask();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jannnice"},"content":"// } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jannnice"},"content":"// System.out.println(\" Uhm.. something is not working right..\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jannnice"},"content":"// public static void deleteTask(String i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jannnice"},"content":"// int deleteTask \u003d Integer.parseInt(i.substring(7)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jannnice"},"content":"// Task removed \u003d taskArray.get(deleteTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jannnice"},"content":"// taskArray.remove(deleteTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jannnice"},"content":"// numTask--;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jannnice"},"content":"// System.out.println(\" Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jannnice"},"content":"// + \" \" + removed.printDesc() + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jannnice"},"content":"// + \" Now you have \" + numTask +\" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jannnice"},"content":"// public static void listTask(String i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jannnice"},"content":"// System.out.println(\" Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jannnice"},"content":"// for (int a \u003d 0; a \u003c numTask; a++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jannnice"},"content":"// System.out.println(\" \" + (a + 1) + \". \" + taskArray.get(a).printDesc());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"jannnice"},"content":"// public static void todoTask(String i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jannnice"},"content":"// String[] taskDetails \u003d i.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"jannnice"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"jannnice"},"content":"// taskArray.add(new duke.Todo(taskDetails[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"jannnice"},"content":"// taskArray.get(numTask).printMessage(numTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"jannnice"},"content":"// } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"jannnice"},"content":"// System.out.println(horizontalLine + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"jannnice"},"content":"// + \" OOPS!!! The description of todo cannot be empty :(.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"jannnice"},"content":"// + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"jannnice"},"content":"// numTask--;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"jannnice"},"content":"// numTask++;","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"jannnice"},"content":"// public static void deadlineTask(String i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"jannnice"},"content":"// String[] taskDetails \u003d i.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"jannnice"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"jannnice"},"content":"// String[] deadlineDetails \u003d taskDetails[1].split(\" /by \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"jannnice"},"content":"// taskArray.add(new duke.Deadline(deadlineDetails[0], deadlineDetails[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"jannnice"},"content":"// taskArray.get(numTask).printMessage(numTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"jannnice"},"content":"// } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"jannnice"},"content":"// System.out.println(horizontalLine + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"jannnice"},"content":"// + \" OOPS!!! The description of deadline is incomplete.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"jannnice"},"content":"// + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"jannnice"},"content":"// numTask--;","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"jannnice"},"content":"// numTask++;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"jannnice"},"content":"// public static void eventTask(String i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"jannnice"},"content":"// String[] taskDetails \u003d i.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"jannnice"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"jannnice"},"content":"// String[] eventDetails \u003d taskDetails[1].split(\" /\", 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"jannnice"},"content":"// taskArray.add(new duke.Event(eventDetails[0], eventDetails[1].substring(5),","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"jannnice"},"content":"// eventDetails[2].substring(3)));","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"jannnice"},"content":"// taskArray.get(numTask).printMessage(numTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"jannnice"},"content":"// } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"jannnice"},"content":"// System.out.println(horizontalLine + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"jannnice"},"content":"// + \" OOPS!!! The description of event is incomplete :(.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"jannnice"},"content":"// + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"jannnice"},"content":"// numTask--;","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"jannnice"},"content":"// numTask++;","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"jannnice"},"content":" public static TASK commandCheck(String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"jannnice"},"content":" switch(command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"jannnice"},"content":" case \"bye\":","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"jannnice"},"content":" return TASK.BYE;","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"jannnice"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"jannnice"},"content":" return TASK.UNMARK;","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"jannnice"},"content":" case \"mark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"jannnice"},"content":" return TASK.MARK;","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"jannnice"},"content":" case \"delete\":","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"jannnice"},"content":" return TASK.DELETE;","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"jannnice"},"content":" case \"list\":","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"jannnice"},"content":" return TASK.LIST;","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"jannnice"},"content":" case \"todo\":","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"jannnice"},"content":" return TASK.TODO;","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"jannnice"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"jannnice"},"content":" return TASK.DEADLINE;","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"jannnice"},"content":" case \"event\":","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"jannnice"},"content":" return TASK.EVENT;","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"jannnice"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"jannnice"},"content":" return TASK.INVALID;","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"jannnice"},"content":" public static void printCommand(TASK command, String info) throws DukeException, IOException, DukeArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"jannnice"},"content":" switch(command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"jannnice"},"content":" case BYE:","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"jannnice"},"content":" ui.exit();","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"jannnice"},"content":" case UNMARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"jannnice"},"content":" tasks.unmark(info);","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"jannnice"},"content":" case MARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"jannnice"},"content":" tasks.mark(info);","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"jannnice"},"content":" case DELETE:","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"jannnice"},"content":" tasks.deleteTask(info);","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"jannnice"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"jannnice"},"content":" tasks.listTask(info);","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"jannnice"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"jannnice"},"content":" tasks.todoTask(info);","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"jannnice"},"content":" case EVENT:","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"jannnice"},"content":" tasks.eventTask(info);","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"jannnice"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"jannnice"},"content":" tasks.deadlineTask(info);","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"jannnice"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"jannnice"},"content":" throw new DukeException(\" OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"jannnice"},"content":"// private static void checkHardDisk() {","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"jannnice"},"content":"// File dataDirectory \u003d new File(\"./data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"jannnice"},"content":"// if (!dataDirectory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"jannnice"},"content":"// System.out.println(\" OOPS! The data directory doesn\u0027t exist. I\u0027ll create one for you!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"jannnice"},"content":"// dataDirectory.mkdir();","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"jannnice"},"content":"// hardDisk \u003d new File(hardDiskPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"jannnice"},"content":"// if (!hardDisk.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"jannnice"},"content":"// System.out.println(\" OOPS! The hard disk doesn\u0027t exist. I\u0027ll create one for you!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"jannnice"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"jannnice"},"content":"// hardDisk.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"jannnice"},"content":"// hardDisk.setReadable(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"jannnice"},"content":"// hardDisk.setWritable(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"jannnice"},"content":"// } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"jannnice"},"content":"// System.out.println(\" Something went wrong, we couldn\u0027t create duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"jannnice"},"content":"// // retrieves past tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"jannnice"},"content":"// private static void loadTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"jannnice"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"jannnice"},"content":"// Scanner fileScanner \u003d new Scanner(hardDisk);","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"jannnice"},"content":"// while (fileScanner.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"jannnice"},"content":"// String task \u003d fileScanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"jannnice"},"content":"// String[] taskDetails \u003d task.split(\"~\",5);","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"jannnice"},"content":"// String taskType \u003d taskDetails[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"jannnice"},"content":"// String taskStatus \u003d taskDetails[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"jannnice"},"content":"// String taskDescription \u003d taskDetails[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"jannnice"},"content":"// switch (taskType) {","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"jannnice"},"content":"// case \"T\":","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"jannnice"},"content":"// duke.Todo addTodo \u003d new duke.Todo(taskDescription);","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"jannnice"},"content":"// if (Objects.equals(taskStatus, \"done\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"jannnice"},"content":"// addTodo.updateAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"jannnice"},"content":"// taskArray.add(addTodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"jannnice"},"content":"// numTask++;","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"jannnice"},"content":"// break;","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"jannnice"},"content":"// case \"D\":","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"jannnice"},"content":"// duke.Deadline addDeadline \u003d new duke.Deadline(taskDescription, taskDetails[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"jannnice"},"content":"// if (Objects.equals(taskStatus, \"Y\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"jannnice"},"content":"// addDeadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"jannnice"},"content":"// taskArray.add(addDeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"jannnice"},"content":"// numTask++;","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"jannnice"},"content":"// break;","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"jannnice"},"content":"// case \"E\":","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"jannnice"},"content":"// String[] timeDetails \u003d taskDetails[3].split(\" - \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"jannnice"},"content":"// duke.Event addEvent \u003d new duke.Event(taskDescription, timeDetails[0], timeDetails[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"jannnice"},"content":"// if (Objects.equals(taskStatus, \"Y\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"jannnice"},"content":"// addEvent.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"jannnice"},"content":"// taskArray.add(addEvent);","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"jannnice"},"content":"// numTask++;","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"jannnice"},"content":"// break;","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"jannnice"},"content":"// default:","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"jannnice"},"content":"// throw new DukeException(\" invalid task in the hard disk\");","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"jannnice"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"jannnice"},"content":"// } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"jannnice"},"content":"// System.out.println(\" There is no saved duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"jannnice"},"content":"// } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"jannnice"},"content":"// System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"jannnice"},"content":" // saves new tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":233,"author":{"gitId":"jannnice"},"content":"// private static void saveTask() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"jannnice"},"content":"// FileWriter fw \u003d new FileWriter(hardDiskPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"jannnice"},"content":"// for (Task task : taskArray) {","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"jannnice"},"content":"// String writeTask \u003d task.getDescription() + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"jannnice"},"content":"// fw.write(writeTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"jannnice"},"content":"// fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"jannnice"},"content":" public Duke(String directoryPath, String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"jannnice"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"jannnice"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"jannnice"},"content":" this.directoryPath \u003d directoryPath;","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"jannnice"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":246,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":247,"author":{"gitId":"jannnice"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"jannnice"},"content":" ui.greet();","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"jannnice"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":250,"author":{"gitId":"jannnice"},"content":" storage \u003d new Storage(directoryPath, filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"jannnice"},"content":" tasks \u003d new TaskList(storage.loadTask(), storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"jannnice"},"content":" while (input.hasNext()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":253,"author":{"gitId":"jannnice"},"content":" String command \u003d input.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":254,"author":{"gitId":"jannnice"},"content":" String[] findCommand \u003d parser.commandSplit(command);","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"jannnice"},"content":" TASK order \u003d commandCheck(findCommand[0]);","lastModifiedDate":"2023-08-24"},{"lineNumber":256,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"jannnice"},"content":" printCommand(order, command);","lastModifiedDate":"2023-08-24"},{"lineNumber":258,"author":{"gitId":"jannnice"},"content":" storage.saveTask(tasks.getTaskArray());","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"jannnice"},"content":" } catch (DukeException | DukeArgumentException message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":260,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine + \"\\n\" + message.getMessage() + \"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":261,"author":{"gitId":"jannnice"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":262,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Oh no, seems like something is not working.. We can\u0027t save your data.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":263,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":265,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":266,"author":{"gitId":"jannnice"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"jannnice"},"content":" new Duke(\"./data\", \"./data/duke.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"jannnice"},"content":"// storage \u003d new Storage(\"./data\", \"/Desktop/CS2103T/ip/hardDrive.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"jannnice"},"content":"// storage.checkHardDisk();","lastModifiedDate":"2023-09-01"},{"lineNumber":270,"author":{"gitId":"jannnice"},"content":"// taskArray \u003d storage.loadTask();","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"jannnice"},"content":"// ui.greet();","lastModifiedDate":"2023-09-01"},{"lineNumber":272,"author":{"gitId":"jannnice"},"content":"// Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":273,"author":{"gitId":"jannnice"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":274,"author":{"gitId":"jannnice"},"content":"// while (input.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":275,"author":{"gitId":"jannnice"},"content":"// String command \u003d input.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":276,"author":{"gitId":"jannnice"},"content":"// String[] findCommand \u003d parser.commandSplit(command);","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"jannnice"},"content":"// TASK order \u003d commandCheck(findCommand[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":278,"author":{"gitId":"jannnice"},"content":"// try {","lastModifiedDate":"2023-09-01"},{"lineNumber":279,"author":{"gitId":"jannnice"},"content":"// printCommand(order, command);","lastModifiedDate":"2023-09-01"},{"lineNumber":280,"author":{"gitId":"jannnice"},"content":"// saveTask();","lastModifiedDate":"2023-09-01"},{"lineNumber":281,"author":{"gitId":"jannnice"},"content":"// } catch (DukeException message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":282,"author":{"gitId":"jannnice"},"content":"// System.out.println(horizontalLine + \"\\n\" + message.getMessage() + \"\\n\" + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":283,"author":{"gitId":"jannnice"},"content":"// } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":284,"author":{"gitId":"jannnice"},"content":"// System.out.println(\" Oh no, seems like something is not working.. We can\u0027t save your data.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":285,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":286,"author":{"gitId":"jannnice"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":287,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jannnice":287,"-":1}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" this.from \u003d LocalDateTime.parse(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" this.to \u003d LocalDateTime.parse(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":" public String printDesc() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":" String fromMessage \u003d this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy H:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":" String toMessage \u003d this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy H:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jannnice"},"content":" return \"[E]\" + super.printDesc() + \" (from: \" + fromMessage + \" to: \" + toMessage + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jannnice"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jannnice"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jannnice"},"content":" return \"E~\" + super.getDescription() + \"~\" + this.from + \" - \" + this.to;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jannnice":26}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":" public String[] commandSplit(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":" return command.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":" public String[] deadlineDetails(String task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":" return task.split(\"/by \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" public String[] eventDetails(String task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" return task.split(\" /\", 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" public String[] storageSplit(String task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" return task.split(\"~\", 5);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":" public String[] storageTimeSplit(String time) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":" return time.split(\" - \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jannnice":20}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" protected String directoryPath;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" protected String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" private static File hardDisk;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":"// private static ArrayList\u003cTask\u003e taskArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":" private static Parser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":" public Storage (String dirPath, String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jannnice"},"content":" this.directoryPath \u003d dirPath;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jannnice"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jannnice"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jannnice"},"content":" hardDisk \u003d new File(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jannnice"},"content":" protected void checkHardDisk() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jannnice"},"content":" File dataDirectory \u003d new File(this.directoryPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jannnice"},"content":" if (!dataDirectory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jannnice"},"content":" System.out.println(\" OOPS! The data directory doesn\u0027t exist. I\u0027ll create one for you!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jannnice"},"content":" dataDirectory.mkdir();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jannnice"},"content":" if (!hardDisk.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jannnice"},"content":" System.out.println(\" OOPS! The hard disk doesn\u0027t exist. I\u0027ll create one for you!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jannnice"},"content":" hardDisk.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jannnice"},"content":" hardDisk.setReadable(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jannnice"},"content":" hardDisk.setWritable(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jannnice"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Something went wrong, we couldn\u0027t create duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jannnice"},"content":" // retrieves past tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jannnice"},"content":" protected ArrayList\u003cTask\u003e loadTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jannnice"},"content":" ArrayList\u003cTask\u003e taskArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jannnice"},"content":" checkHardDisk();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jannnice"},"content":" Scanner fileScanner \u003d new Scanner(hardDisk);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jannnice"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jannnice"},"content":" String task \u003d fileScanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jannnice"},"content":" String[] taskDetails \u003d parser.storageSplit(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jannnice"},"content":" String taskType \u003d taskDetails[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jannnice"},"content":" String taskStatus \u003d taskDetails[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jannnice"},"content":" String taskDescription \u003d taskDetails[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jannnice"},"content":" switch (taskType) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jannnice"},"content":" case \"T\":","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jannnice"},"content":" Todo addTodo \u003d new Todo(taskDescription);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jannnice"},"content":" if (Objects.equals(taskStatus, \"done\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jannnice"},"content":" addTodo.updateAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jannnice"},"content":" taskArray.add(addTodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jannnice"},"content":" case \"D\":","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jannnice"},"content":" Deadline addDeadline \u003d new Deadline(taskDescription, taskDetails[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jannnice"},"content":" if (Objects.equals(taskStatus, \"Y\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jannnice"},"content":" addDeadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jannnice"},"content":" taskArray.add(addDeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"jannnice"},"content":" case \"E\":","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"jannnice"},"content":" String[] timeDetails \u003d parser.storageTimeSplit(taskDetails[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"jannnice"},"content":" Event addEvent \u003d new Event(taskDescription, timeDetails[0], timeDetails[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"jannnice"},"content":" if (Objects.equals(taskStatus, \"Y\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"jannnice"},"content":" addEvent.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"jannnice"},"content":" taskArray.add(addEvent);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"jannnice"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"jannnice"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"jannnice"},"content":" throw new DukeException(\" invalid task in the hard disk\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"jannnice"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"jannnice"},"content":" System.out.println(\" There is no saved duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"jannnice"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"jannnice"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"jannnice"},"content":" return taskArray;","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"jannnice"},"content":" // saves new tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"jannnice"},"content":" protected void saveTask(ArrayList\u003cTask\u003e taskList) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"jannnice"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"jannnice"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"jannnice"},"content":" String writeTask \u003d task.getDescription() + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"jannnice"},"content":" fw.write(writeTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"jannnice"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jannnice":97}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" public void updateAsDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jannnice"},"content":" + \" \" + this.printDesc());","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jannnice"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jannnice"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jannnice"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jannnice"},"content":" + \" \" + this.printDesc());","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jannnice"},"content":" public String printDesc() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jannnice"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jannnice"},"content":" public void printMessage(int numTask) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jannnice"},"content":" System.out.println(Duke.horizontalLine + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jannnice"},"content":" + \" Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"jannnice"},"content":" + \" \" + this.printDesc() + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"jannnice"},"content":" + \" Now you have \" + (numTask + 1) + \" tasks in the list.\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"jannnice"},"content":" + Duke.horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jannnice"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jannnice"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jannnice"},"content":" return \"done~\" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jannnice"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jannnice"},"content":" return \"notDone~\" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jannnice":45}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"import Exceptions.DukeArgumentException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":" protected static final String horizontalLine \u003d \" ____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" protected static ArrayList\u003cTask\u003e taskArray;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" protected static Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" protected static int numTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" protected static Parser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":" public TaskList(ArrayList\u003cTask\u003e loadTask, Storage store) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":" taskArray \u003d loadTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":" numTask \u003d taskArray.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jannnice"},"content":" storage \u003d store;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jannnice"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jannnice"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jannnice"},"content":" taskArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jannnice"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jannnice"},"content":" public void unmark(String i) throws DukeArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jannnice"},"content":" int taskId \u003d Integer.parseInt(i.substring(7)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jannnice"},"content":" if (taskId \u003c 0 || taskId \u003e\u003d numTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jannnice"},"content":" throw new DukeArgumentException(\" I think you keyed in the wrong task number..\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jannnice"},"content":" taskArray.get(taskId).markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jannnice"},"content":" // update the duke.txt","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jannnice"},"content":" storage.saveTask(taskArray);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jannnice"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Uhm.. something is not working right..\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jannnice"},"content":" public void mark(String i) throws DukeArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jannnice"},"content":" int taskId \u003d Integer.parseInt(i.substring(5)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jannnice"},"content":" if (taskId \u003c 0 || taskId \u003e\u003d numTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jannnice"},"content":" throw new DukeArgumentException(\" I think you keyed in the wrong task number..\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jannnice"},"content":" taskArray.get(taskId).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jannnice"},"content":" // update the duke.txt","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jannnice"},"content":" storage.saveTask(taskArray);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jannnice"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Uhm.. something is not working right..\");","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jannnice"},"content":" public static void deleteTask(String i) throws DukeArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jannnice"},"content":" int deleteTask \u003d Integer.parseInt(i.substring(7)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jannnice"},"content":" if (deleteTask \u003c 0 || deleteTask \u003e\u003d numTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jannnice"},"content":" throw new DukeArgumentException(\" I think you keyed in the wrong task number..\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jannnice"},"content":" Task removed \u003d taskArray.get(deleteTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jannnice"},"content":" taskArray.remove(deleteTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jannnice"},"content":" numTask--;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jannnice"},"content":" + \" \" + removed.printDesc() + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jannnice"},"content":" + \" Now you have \" + numTask +\" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"jannnice"},"content":" public static void listTask(String i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jannnice"},"content":" System.out.println(\" Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"jannnice"},"content":" for (int a \u003d 0; a \u003c numTask; a++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"jannnice"},"content":" System.out.println(\" \" + (a + 1) + \". \" + taskArray.get(a).printDesc());","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"jannnice"},"content":" public static void todoTask(String i) throws DukeArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"jannnice"},"content":" String[] taskDetails \u003d parser.commandSplit(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"jannnice"},"content":" if (taskDetails.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"jannnice"},"content":" throw new DukeArgumentException(\" OOPS!!! The description of todo cannot be empty :(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"jannnice"},"content":" taskArray.add(new Todo(taskDetails[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"jannnice"},"content":" taskArray.get(numTask).printMessage(numTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"jannnice"},"content":" numTask++;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"jannnice"},"content":" public static void deadlineTask(String i) throws DukeArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"jannnice"},"content":" String[] taskDetails \u003d parser.commandSplit(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"jannnice"},"content":" if (taskDetails.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"jannnice"},"content":" throw new DukeArgumentException(\" OOPS!!! The description of deadline cannot be empty :(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"jannnice"},"content":" String[] deadlineDetails \u003d parser.deadlineDetails(taskDetails[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"jannnice"},"content":" if (deadlineDetails.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"jannnice"},"content":" throw new DukeArgumentException(\" OOPS!!! Where is the deadline time?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"jannnice"},"content":" taskArray.add(new Deadline(deadlineDetails[0], deadlineDetails[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"jannnice"},"content":" taskArray.get(numTask).printMessage(numTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"jannnice"},"content":" numTask++;","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"jannnice"},"content":" public static void eventTask(String i) throws DukeArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"jannnice"},"content":" String[] taskDetails \u003d parser.commandSplit(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"jannnice"},"content":" if (taskDetails.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"jannnice"},"content":" throw new DukeArgumentException(\" OOPS!!! The description of event cannot be empty :(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"jannnice"},"content":" String[] eventDetails \u003d parser.eventDetails(taskDetails[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"jannnice"},"content":" if (eventDetails.length !\u003d 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"jannnice"},"content":" throw new DukeArgumentException(\" OOPS!!! The details for the event is missing!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"jannnice"},"content":" taskArray.add(new Event(eventDetails[0], eventDetails[1].substring(5),","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"jannnice"},"content":" eventDetails[2].substring(3)));","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"jannnice"},"content":" taskArray.get(numTask).printMessage(numTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"jannnice"},"content":" numTask++;","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"jannnice"},"content":" protected ArrayList\u003cTask\u003e getTaskArray() {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"jannnice"},"content":" return taskArray;","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jannnice":110}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":" protected char type;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":" this.type \u003d \u0027T\u0027;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" public String printDesc() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" return \"[T]\" + super.printDesc();","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":" return \"T~\" + super.getDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jannnice":18}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":" protected static final String horizontalLine \u003d \" ____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":" public static void greet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":" + \" Hello! I\u0027m POPOOH\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":" + \" What can I do for you?\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":" + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" public static void exit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" System.out.println(horizontalLine + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" + \" Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" + horizontalLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jannnice":16}},{"path":"src/test/java/duke/ParseTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":"public class ParseTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":" public void deadlineDetails_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" String deadline \u003d \"homework /by: 2023-12-01T12:20:00\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" String[] output \u003d parser.deadlineDetails(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" assertEquals(output.length, 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jannnice":15}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannnice"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jannnice"},"content":"import Exceptions.DukeArgumentException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jannnice"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jannnice"},"content":"import static duke.Ui.horizontalLine;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jannnice"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jannnice"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jannnice"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jannnice"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jannnice"},"content":" public void markTask_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jannnice"},"content":" Task exampleTask \u003d new Todo(\"testing for marking\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jannnice"},"content":" exampleTask.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jannnice"},"content":" assertTrue(exampleTask.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jannnice"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jannnice"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jannnice"},"content":" public void addEvent_invalidDescription_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jannnice"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jannnice"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jannnice"},"content":" tasks.eventTask(\"wedding /from 2023-09-09T09:00:00 /to\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jannnice"},"content":" } catch (DukeArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jannnice"},"content":" String message \u003d \" OOPS!!! The details for the event is missing!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jannnice"},"content":" assertEquals(e.getMessage(), message);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jannnice"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jannnice"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jannnice":28}},{"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":"jannnice"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"jannnice":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":"-"},"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":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"jannnice"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jannnice":1,"-":33}}] diff --git a/jannnice_ip_master/commits.json b/jannnice_ip_master/commits.json index f09b67ab..44a8890f 100644 --- a/jannnice_ip_master/commits.json +++ b/jannnice_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jannnice":[{"date":"2023-08-23","commitResults":[{"hash":"aaa1fa69313c4dce4fc4b2d21fd2fab64d0ff01d","isMergeCommit":false,"messageTitle":"test 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"4630f7536b4a46b79b8fe199ea0fd229c5295650","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":7}}},{"hash":"49bc09335020e4072e49de4ac39c600fe17d0307","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":1}}},{"hash":"5ac69c37991998c116abe305a42262d9927c23df","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}},{"hash":"f94c7d3c838bbb22c2ec1175dd8fdba905f171e9","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"a8967270662c50ebdc7c8b7342fb06b7147db24f","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":4}}},{"hash":"b229327b64dcc7cac1bc9d9720d596c37d4a4c19","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":18},"sh":{"insertions":1,"deletions":5}}},{"hash":"f594c49d4cf23886e19d4451faef646de83ca473","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":14}}},{"hash":"5897a818295b6cb932fe076167f8f168b3bfec1d","isMergeCommit":false,"messageTitle":"Added enum","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":130,"deletions":85}}}]},{"date":"2023-08-30","commitResults":[{"hash":"d8f76480421f9f8751e33cd47628441498f73984","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":109,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"8cbed20f731a3aae828b3b96fc75f8bc705ffbc8","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":45,"deletions":20}}}]}]},"authorFileTypeContributionMap":{"jannnice":{"java":367,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":3}},"authorContributionVariance":{"jannnice":11081.169},"authorDisplayNameMap":{"jannnice":"CS2103T-W16-4 JANN..TONO"}} +{"authorDailyContributionsMap":{"jannnice":[{"date":"2023-08-23","commitResults":[{"hash":"aaa1fa69313c4dce4fc4b2d21fd2fab64d0ff01d","isMergeCommit":false,"messageTitle":"test 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"4630f7536b4a46b79b8fe199ea0fd229c5295650","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":7}}},{"hash":"49bc09335020e4072e49de4ac39c600fe17d0307","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":1}}},{"hash":"5ac69c37991998c116abe305a42262d9927c23df","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}},{"hash":"f94c7d3c838bbb22c2ec1175dd8fdba905f171e9","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"a8967270662c50ebdc7c8b7342fb06b7147db24f","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":4}}},{"hash":"b229327b64dcc7cac1bc9d9720d596c37d4a4c19","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":18},"sh":{"insertions":1,"deletions":5}}},{"hash":"f594c49d4cf23886e19d4451faef646de83ca473","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":14}}},{"hash":"5897a818295b6cb932fe076167f8f168b3bfec1d","isMergeCommit":false,"messageTitle":"Added enum","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":130,"deletions":85}}}]},{"date":"2023-08-30","commitResults":[{"hash":"d8f76480421f9f8751e33cd47628441498f73984","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":109,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"8cbed20f731a3aae828b3b96fc75f8bc705ffbc8","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":45,"deletions":20}}}]},{"date":"2023-09-01","commitResults":[{"hash":"4669d12f5c84bbec8de371e45cd96db53c7e0739","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":438,"deletions":186}}},{"hash":"3c799cfc8f860e0772f49c3dc6292f6f96d87bbc","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"e38925a5ad67041b24cdaa3f1e633dce2f9de73e","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c445c1a70be2e81febcbe7a050bb50d15bcd6be9","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"ab7ea94cc65102c70a871e54546bc4865be476ff","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":104,"deletions":40}}}]}]},"authorFileTypeContributionMap":{"jannnice":{"java":703,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":1,"txt":3}},"authorContributionVariance":{"jannnice":47693.98},"authorDisplayNameMap":{"jannnice":"CS2103T-W16-4 JANN..TONO"}} diff --git a/ji-just-ji_ip_master/authorship.json b/ji-just-ji_ip_master/authorship.json index a8adf83e..e718f138 100644 --- a/ji-just-ji_ip_master/authorship.json +++ b/ji-just-ji_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"plugins {","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":" id \u0027java\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"group \u0027org.example\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"version \u00271.0-SNAPSHOT\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":"repositories {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" mavenCentral()","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":"dependencies {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter-api:5.7.0\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" testRuntimeOnly \u0027org.junit.jupiter:junit-jupiter-engine:1.7.0\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":"test {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" useJUnitPlatform()","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ji-just-ji":20}},{"path":"src/main/Copypasta.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"So as a joke, I went to my friend\u0027s house wearing Pekora\u0027s","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"wig and clothes. I could barely stop my laughter as he went as red as a tomato","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"and looked at me from head to toe with a bit of drool in his mouth.","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"Nanimitendayo?! Kono Hentai!","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ji-just-ji":4}},{"path":"src/main/List.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"T | 1 | 1","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ji-just-ji":1}},{"path":"src/main/Usagi.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":" _ _","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"| \\ / |","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"\\ \\ / /","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":" \\ \\ / /","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":" \\ \\_________/ /","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" / \\ / \\","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" / / \\ \\","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":"| _____ |","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" \\ \\___/ /","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" \\_________________/","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"ji-just-ji":14}},{"path":"src/main/java/peko/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"public enum Commands {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":" ECHO,","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" OTSUPEKO,","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" LIST,","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" WRITE,","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" MARK,","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" UNMARK,","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" TODO,","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" DEADLINE,","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" EVENT,","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" DELETE,","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" COPYPASTA","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ji-just-ji":18}},{"path":"src/main/java/peko/DateTimeHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"public class DateTimeHandler {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" private String dateTimeString;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" private int year;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" private int month;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" private int day;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" private int hour;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" private int min;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" public DateTimeHandler(String s) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" String[] dateTime \u003d s.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" String[] dateString \u003d dateTime[0].split(\"/\");","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" int timeString \u003d Integer.parseInt(dateTime[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" day \u003d Integer.parseInt(dateString[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" month \u003d Integer.parseInt(dateString[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" year \u003d Integer.parseInt(dateString[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" hour \u003d timeString/100;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" min \u003d timeString%100;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" date \u003d LocalDateTime.of(year,month,day,hour,min);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" dateTimeString \u003d date.getMonth() + \" \" + date.getDayOfMonth() + \" \" + date.getYear();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" public LocalDateTime getDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" return date;","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" public String stringDisplay() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" return dateTimeString + \" \" + hour + \":\" + ((min \u003c 10) ? \"0\" + min : min);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":" return day + \"/\" + month + \"/\" + year + \" \" + hour + ((min \u003c 10) ? \"0\" + min : min);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ji-just-ji":37}},{"path":"src/main/java/peko/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" char type \u003d \u0027D\u0027;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" DateTimeHandler dateTimeHandler;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" public Deadline(String s) throws InvalidTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" String[] split \u003d s.split(\" /by \");","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"There\u0027s no deadline peko!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" } else if (split.length \u003e\u003d 3){","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You can\u0027t have two deadlines peko!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" String[] temp \u003d split[0].split(\" \",2);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" //System.out.println(Arrays.toString(temp));","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" this.name \u003d temp[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" dateTimeHandler \u003d new DateTimeHandler(split[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" return \"[\" + type + \"]\" + super.toString() + \" (by: \" + dateTimeHandler.stringDisplay() + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" public String toStore() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" String state \u003d this.status ? \"0\" : \"1\";","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":" String output \u003d \"D\" + \" | \" + state + \" | \" + this.name + \" | \" + dateTimeHandler.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":" return output;","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ji-just-ji":37}},{"path":"src/main/java/peko/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":" char type \u003d \u0027E\u0027;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":" DateTimeHandler startHandler;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" DateTimeHandler endHandler;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" public Event(String s) throws InvalidTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" String[] split \u003d s.split(\" /from \");","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"There\u0027s no start date peko!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" } else if (split.length \u003e\u003d 3){","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You can\u0027t have two start dates peko!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" split[0].split(\" \",2);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" this.name \u003d split[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" split \u003d split[1].split(\" /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"There\u0027s no end date peko!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" } else if (split.length \u003e\u003d 3) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You can\u0027t have two end dates peko!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" startHandler \u003d new DateTimeHandler(split[0]);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" endHandler \u003d new DateTimeHandler(split[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":" return \"[\" + type + \"]\" + super.toString() + \" (from: \" + startHandler.stringDisplay()","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":" + \" to: \" + endHandler.stringDisplay() + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"ji-just-ji"},"content":" public String toStore() {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"ji-just-ji"},"content":" String state \u003d this.status ? \"0\" : \"1\";","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"ji-just-ji"},"content":" return \"E\" + \" | \" + state + \" | \" + this.name + \" | \" + startHandler.toString() + \" | \" + endHandler.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ji-just-ji":42}},{"path":"src/main/java/peko/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"public class InvalidTaskException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" return \"That\u0027s Not a task BAKATARE!!!!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" public String errorToString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" return \"Something is wrong with this task peko.Peko!\\n\" + errorMessage;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" String errorMessage;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" public InvalidTaskException(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" this.errorMessage \u003d s;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" public InvalidTaskException(){}","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ji-just-ji":19}},{"path":"src/main/java/peko/Output.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"public class Output {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" private static final String lineBreak \u003d \"------------------------------------------\"; //42","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" private static final String introText \u003d \"Konpeko, Konpeko, Konpeko! \\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" \"Hololive san kisei no\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" \"Usada Pekora-peko! almondo almondo!\";","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" private static final String exitText \u003d \"Otsupeko! Bye bye!\";","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" public static void intro() {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" String pekoLogo \u003d \" _____ _\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" + \"| |___ | | ______\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" + \"| ___/ _ \\\\| |/ / \\\\\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" + \"| | \u003c __/| \u003c \u003c\u003e |\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" + \"|_| \\\\___||_|\\\\_\\\\____/\";","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(pekoLogo);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(introText);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" public static void exit() {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(exitText);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ji-just-ji":27}},{"path":"src/main/java/peko/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" private String string;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" private static final String[] commands \u003d new String[]","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" {\"echo\",\"otsupeko\", \"list\", \"write\", \"mark\", \"unmark\",","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" \"todo\", \"deadline\", \"event\", \"delete\",\"tell me a joke\"};","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" public Parser(String s) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" this.string \u003d s;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" public Commands getResponseValue() {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" if (string.toLowerCase().equals(\"tell me a joke\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" return Commands.COPYPASTA;","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" int output \u003d 0;","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" string \u003d string.toLowerCase();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" for (int i \u003d 0; i \u003c commands.length; i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" if (string.startsWith(commands[i])) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" output \u003d i;","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" String temp \u003d commands[output].toUpperCase().trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" return Commands.valueOf(temp);","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" return string.split(\" \",2).length \u003c 2 ? \" \" : string.split(\" \", 2)[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ji-just-ji":34}},{"path":"src/main/java/peko/Peko.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.io.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"public class Peko {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" private UserInputHandler userInputHandler;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" private UI ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" private StorageHandler storageHandler;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" new Peko().run();","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" private void run() {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" Output.intro();","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" while (true) {","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" userInputHandler.newInput();","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" if (!userInputHandler.processInput()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" SaveHandler.saveTo();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" Output.exit();","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" private Peko() {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" userInputHandler \u003d new UserInputHandler();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" storageHandler \u003d new StorageHandler();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"ji-just-ji":30}},{"path":"src/main/java/peko/SaveHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.io.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":"public class SaveHandler {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" private static int listSize \u003d 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" private static Task[] tasks \u003d new Task[100];","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" private static File file \u003d new File(\"src/main/List.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" public SaveHandler() {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" //System.out.println(\"Gomen peko, something broke...\");","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" public static void saveTo() {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(file.getAbsolutePath());","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" PrintWriter printWriter;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" printWriter \u003d new PrintWriter(file.getAbsoluteFile());","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" printWriter.write(\"\");","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" printWriter.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" File temp \u003d new File(file.getParentFile(), \"List.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" file \u003d temp;","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" } finally {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" if (t \u003d\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"ji-just-ji"},"content":" String toStore \u003d t.toStore() + \"\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"ji-just-ji"},"content":" //System.out.println(\"toStore: \" + toStore);","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"ji-just-ji"},"content":" Writer temp;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"ji-just-ji"},"content":" temp \u003d new BufferedWriter(new FileWriter(\"src/main/List.txt\", true));","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"ji-just-ji"},"content":" temp.append(toStore);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"ji-just-ji"},"content":" temp.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"ji-just-ji"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"ji-just-ji"},"content":" throw new RuntimeException(ex);","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"ji-just-ji"},"content":" public static Task[] loadFrom() {","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(file.getAbsolutePath());","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"ji-just-ji"},"content":" int pos \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"ji-just-ji"},"content":" Scanner scanner \u003d new Scanner(file.getAbsoluteFile());","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"ji-just-ji"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"ji-just-ji"},"content":" String s \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"ji-just-ji"},"content":" String[] arr \u003d s.split(\" \\\\| \");","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"ji-just-ji"},"content":" Task t \u003d stringToTask(arr);","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"ji-just-ji"},"content":" if (t !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"ji-just-ji"},"content":" tasks[pos] \u003d t;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"ji-just-ji"},"content":" pos++;","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"ji-just-ji"},"content":" listSize \u003d pos;","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"ji-just-ji"},"content":" } catch (Exception e){","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"ji-just-ji"},"content":" return tasks;","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"ji-just-ji"},"content":" private static Task stringToTask(String[] arr) {","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"ji-just-ji"},"content":" Task t;","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"ji-just-ji"},"content":" switch (arr[0]) {","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"ji-just-ji"},"content":" case \"T\":","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"ji-just-ji"},"content":" t \u003d new ToDos( arr[2]);","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"ji-just-ji"},"content":" if (arr[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"ji-just-ji"},"content":" t.setMark();","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"ji-just-ji"},"content":" return t;","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"ji-just-ji"},"content":" case \"D\":","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"ji-just-ji"},"content":" t \u003d new Deadline(arr[2] + \" /by \" + arr[3]);","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"ji-just-ji"},"content":" if (arr[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"ji-just-ji"},"content":" t.setMark();","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"ji-just-ji"},"content":" return t;","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"ji-just-ji"},"content":" case \"E\":","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"ji-just-ji"},"content":" t \u003d new Event(arr[2] + \" /from \" + arr[3] + \" /to \" + arr[4]);","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"ji-just-ji"},"content":" if (arr[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"ji-just-ji"},"content":" t.setMark();","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"ji-just-ji"},"content":" return t;","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"ji-just-ji"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"ji-just-ji"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"ji-just-ji"},"content":" } catch (InvalidTaskException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"There\u0027s an error in the list, Pain peko, I\u0027ll delete it\");","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"ji-just-ji"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"Incomplete task an error in the list, Pain peko, I\u0027ll delete it\");","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"ji-just-ji"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"ji-just-ji"},"content":" public static int size() {","lastModifiedDate":"2023-08-25"},{"lineNumber":114,"author":{"gitId":"ji-just-ji"},"content":" return listSize;","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":117,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ji-just-ji":118}},{"path":"src/main/java/peko/StorageHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":"public class StorageHandler {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" private static Task[] todoList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" private static int size;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" public StorageHandler() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" todoList \u003d SaveHandler.loadFrom();","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" size \u003d SaveHandler.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" public static void readArray() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"--------------LIST-PEKO------------------\");","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" while (todoList[i] !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(i+1 + \". \" + todoList[i]);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" i++;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" if (i \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You are FREE PEKO!!!!!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" public static void addToArray(Task t) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" todoList[size] \u003d t;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"Added: \\n \" + todoList[size].toString() + \"\\npeko!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You have: \" + (size+1) + \" tasks now peko\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" size++;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" SaveHandler.saveTo();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" public static void setMarkArray(int i) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":" todoList[i-1].setMark();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"Marked as done peko!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\" \" + todoList[i-1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ji-just-ji"},"content":" SaveHandler.saveTo();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ji-just-ji"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You don\u0027t have so many Tasks Peko!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ji-just-ji"},"content":" public static void setUnmarkArray(int i) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"ji-just-ji"},"content":" todoList[i-1].setUnmark();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You haven\u0027t done this yet peko?!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\" \" + todoList[i-1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"ji-just-ji"},"content":" SaveHandler.saveTo();","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"ji-just-ji"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You don\u0027t have so many Tasks Peko!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"ji-just-ji"},"content":" public static void setDelete(int i) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"ji-just-ji"},"content":" i--;","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ji-just-ji"},"content":" while (i \u003c\u003d size) {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"ji-just-ji"},"content":" todoList[i] \u003d todoList[i+1];","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"ji-just-ji"},"content":" i++;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"ji-just-ji"},"content":" size--;","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"ji-just-ji"},"content":" SaveHandler.saveTo();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"ji-just-ji"},"content":" public static void degen() throws FileNotFoundException {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"ji-just-ji"},"content":" File text \u003d new File(\"src/main/Copypasta.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"ji-just-ji"},"content":" Scanner sc \u003d new Scanner(text);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"ji-just-ji"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(sc.nextLine());","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ji-just-ji":72}},{"path":"src/main/java/peko/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":" protected String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":" protected boolean status;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" public Task(String s) throws InvalidTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" if (s.isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" this.name \u003d s;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" status \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" String out \u003d status ? \"[X] \" : \"[ ] \";","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" return out + name;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" public void setMark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" status \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" public void setUnmark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" status \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" public String toStore() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" String state \u003d status ? \"0\" : \"1\";","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" return state + \" | \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ji-just-ji":30}},{"path":"src/main/java/peko/TaskHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"public class TaskHandler {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" private static final String lineBreak \u003d \"------------------------------------------\"; //42","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" private Commands command;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" private String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" public TaskHandler(Commands command, String description) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" private void echo() {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" if (description.isBlank()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You didn\u0027t say anything peko?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" private void readArray() {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.readArray();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" private void addToArray() throws InvalidTaskException {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" Task t \u003d new Task(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.addToArray(t);","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":" private void mark(String s) throws NumberFormatException{","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":" int i \u003d Integer.parseInt(s);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.setMarkArray(i);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"ji-just-ji"},"content":" private void unmark(String s) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ji-just-ji"},"content":" int i \u003d Integer.parseInt(s);","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.setUnmarkArray(i);","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"ji-just-ji"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"That\u0027s not a number Bakatare!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"ji-just-ji"},"content":" private void todo(String s) throws InvalidTaskException{","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"ji-just-ji"},"content":" Task t \u003d new ToDos(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.addToArray(t);","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"ji-just-ji"},"content":" private void deadline(String s) throws InvalidTaskException {","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"ji-just-ji"},"content":" Task t \u003d new Deadline(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.addToArray(t);","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"ji-just-ji"},"content":" private void Event(String s) throws InvalidTaskException {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"ji-just-ji"},"content":" Task t \u003d new Event(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.addToArray(t);","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"ji-just-ji"},"content":" public void delete(String s) {","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"ji-just-ji"},"content":" int i \u003d Integer.parseInt(s);","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.setDelete(i);","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"ji-just-ji"},"content":" public boolean run() {","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"ji-just-ji"},"content":" switch (command) {","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"ji-just-ji"},"content":" case ECHO:","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"ji-just-ji"},"content":" echo();","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"ji-just-ji"},"content":" case LIST:","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"ji-just-ji"},"content":" readArray();","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"ji-just-ji"},"content":" case WRITE:","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"ji-just-ji"},"content":" addToArray();","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"ji-just-ji"},"content":" case MARK:","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"ji-just-ji"},"content":" mark(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"ji-just-ji"},"content":" case UNMARK:","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"ji-just-ji"},"content":" unmark(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"ji-just-ji"},"content":" case TODO:","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"ji-just-ji"},"content":" todo(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"ji-just-ji"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"ji-just-ji"},"content":" deadline(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"ji-just-ji"},"content":" case EVENT:","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"ji-just-ji"},"content":" Event(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"ji-just-ji"},"content":" case DELETE:","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"ji-just-ji"},"content":" delete(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"ji-just-ji"},"content":" case COPYPASTA:","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.degen();","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"ji-just-ji"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"Hentai!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"ji-just-ji"},"content":" } finally {","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"ji-just-ji"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"ji-just-ji"},"content":" case OTSUPEKO:","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"ji-just-ji"},"content":" SaveHandler.saveTo();","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"ji-just-ji"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"ji-just-ji"},"content":" default:","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"ji-just-ji"},"content":" } catch (InvalidTaskException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":115,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-28"},{"lineNumber":116,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"ji-just-ji"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"That\u0027s not a number Bakatare!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ji-just-ji":123}},{"path":"src/main/java/peko/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"public class ToDos extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" char type \u003d \u0027T\u0027;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" public ToDos(String s) throws InvalidTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" this.name \u003d s;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" return \"[\" + type + \"]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" public String toStore() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" String state \u003d status ? \"0\" : \"1\";","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" return \"T\" + \" | \" + state + \" | \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ji-just-ji":20}},{"path":"src/main/java/peko/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"public class UI {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ji-just-ji":6}},{"path":"src/main/java/peko/UserInputHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.awt.image.BufferedImage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":"public class UserInputHandler {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" private static final String introText \u003d \"Konpeko, Konpeko, Konpeko! \\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" \"Hololive san kisei no\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" \"Usada Pekora-peko! almondo almondo!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" private static final String exitText \u003d \"Otsupeko! Bye bye!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" private Commands command;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" private Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" private String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" public UserInputHandler() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" new StorageHandler();","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" public void newInput() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" Parser parser \u003d new Parser(input);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" command \u003d parser.getResponseValue();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" description \u003d parser.getDescription();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" public boolean processInput() {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" TaskHandler taskHandler \u003d new TaskHandler(command, description);","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" return taskHandler.run();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ji-just-ji":35}},{"path":"src/test/java/peko/PekoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":"public class PekoTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ji-just-ji":8}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"otsupeko","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ji-just-ji":1}},{"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":"2023-08-24"},{"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":"ji-just-ji"},"content":"java -classpath ..\\bin Peko \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"ji-just-ji":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":"2023-08-24"},{"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":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":"java -classpath ../bin Peko \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":"2023-08-24"},{"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":"2023-08-24"},{"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":{"ji-just-ji":1,"-":37}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"plugins {","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":" id \u0027java\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"group \u0027org.example\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"version \u00271.0-SNAPSHOT\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":"repositories {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" mavenCentral()","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":"dependencies {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter-api:5.7.0\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" testRuntimeOnly \u0027org.junit.jupiter:junit-jupiter-engine:1.7.0\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":"test {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" useJUnitPlatform()","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ji-just-ji":20}},{"path":"src/main/Copypasta.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"So as a joke, I went to my friend\u0027s house wearing Pekora\u0027s","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"wig and clothes. I could barely stop my laughter as he went as red as a tomato","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"and looked at me from head to toe with a bit of drool in his mouth.","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"Nanimitendayo?! Kono Hentai!","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ji-just-ji":4}},{"path":"src/main/List.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"T | 1 | 2","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"T | 0 | 3","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ji-just-ji":2}},{"path":"src/main/Usagi.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":" _ _","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"| \\ / |","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"\\ \\ / /","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":" \\ \\ / /","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":" \\ \\_________/ /","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" / \\ / \\","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" / / \\ \\","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":"| _____ |","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" \\ \\___/ /","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" \\_________________/","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"ji-just-ji":14}},{"path":"src/main/java/peko/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"public enum Commands {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":" ECHO,","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" OTSUPEKO,","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" LIST,","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" WRITE,","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" MARK,","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" UNMARK,","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" TODO,","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" DEADLINE,","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" EVENT,","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" FIND,","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" DELETE,","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" COPYPASTA","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ji-just-ji":19}},{"path":"src/main/java/peko/DateTimeHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"public class DateTimeHandler {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" private String dateTimeString;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" private int year;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" private int month;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" private int day;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" private int hour;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" private int min;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" public DateTimeHandler(String s) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" String[] dateTime \u003d s.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" String[] dateString \u003d dateTime[0].split(\"/\");","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" int timeString \u003d Integer.parseInt(dateTime[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" day \u003d Integer.parseInt(dateString[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" month \u003d Integer.parseInt(dateString[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" year \u003d Integer.parseInt(dateString[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" hour \u003d timeString/100;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" min \u003d timeString%100;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" date \u003d LocalDateTime.of(year,month,day,hour,min);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" dateTimeString \u003d date.getMonth() + \" \" + date.getDayOfMonth() + \" \" + date.getYear();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" public LocalDateTime getDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" return date;","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" public String stringDisplay() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" return dateTimeString + \" \" + hour + \":\" + ((min \u003c 10) ? \"0\" + min : min);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":" return day + \"/\" + month + \"/\" + year + \" \" + hour + ((min \u003c 10) ? \"0\" + min : min);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ji-just-ji":37}},{"path":"src/main/java/peko/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" char type \u003d \u0027D\u0027;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" DateTimeHandler dateTimeHandler;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" public Deadline(String s) throws InvalidTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" String[] split \u003d s.split(\" /by \");","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"There\u0027s no deadline peko!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" } else if (split.length \u003e\u003d 3){","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You can\u0027t have two deadlines peko!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" String[] temp \u003d split[0].split(\" \",2);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" //System.out.println(Arrays.toString(temp));","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" this.name \u003d temp[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" dateTimeHandler \u003d new DateTimeHandler(split[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" return \"[\" + type + \"]\" + super.toString() + \" (by: \" + dateTimeHandler.stringDisplay() + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" public String toStore() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" String state \u003d this.status ? \"0\" : \"1\";","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":" String output \u003d \"D\" + \" | \" + state + \" | \" + this.name + \" | \" + dateTimeHandler.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":" return output;","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ji-just-ji":37}},{"path":"src/main/java/peko/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":" char type \u003d \u0027E\u0027;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":" DateTimeHandler startHandler;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" DateTimeHandler endHandler;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" public Event(String s) throws InvalidTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" String[] split \u003d s.split(\" /from \");","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"There\u0027s no start date peko!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" } else if (split.length \u003e\u003d 3){","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You can\u0027t have two start dates peko!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" split[0].split(\" \",2);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" this.name \u003d split[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" split \u003d split[1].split(\" /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"There\u0027s no end date peko!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" } else if (split.length \u003e\u003d 3) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You can\u0027t have two end dates peko!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" startHandler \u003d new DateTimeHandler(split[0]);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" endHandler \u003d new DateTimeHandler(split[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":" return \"[\" + type + \"]\" + super.toString() + \" (from: \" + startHandler.stringDisplay()","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":" + \" to: \" + endHandler.stringDisplay() + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"ji-just-ji"},"content":" public String toStore() {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"ji-just-ji"},"content":" String state \u003d this.status ? \"0\" : \"1\";","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"ji-just-ji"},"content":" return \"E\" + \" | \" + state + \" | \" + this.name + \" | \" + startHandler.toString() + \" | \" + endHandler.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ji-just-ji":42}},{"path":"src/main/java/peko/Find.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"public class Find {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" Task[] tempTaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" String searchQuery;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" public Find(String s) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"Find: \" + s);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" if (s.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You\u0027re not searching for anything Peko?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" searchQuery \u003d s;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" tempTaskList \u003d new Task[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" search();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" //display();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" private void search() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" this.tempTaskList \u003d StorageHandler.search(searchQuery);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" public void display() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" for (Task t : tempTaskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" if (t \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ji-just-ji":33}},{"path":"src/main/java/peko/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"public class InvalidTaskException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" return \"That\u0027s Not a task BAKATARE!!!!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" public String errorToString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" return \"Something is wrong with this task peko.Peko!\\n\" + errorMessage;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" String errorMessage;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" public InvalidTaskException(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" this.errorMessage \u003d s;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" public InvalidTaskException(){}","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ji-just-ji":19}},{"path":"src/main/java/peko/Output.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"public class Output {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" private static final String lineBreak \u003d \"------------------------------------------\"; //42","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" private static final String introText \u003d \"Konpeko, Konpeko, Konpeko! \\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" \"Hololive san kisei no\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" \"Usada Pekora-peko! almondo almondo!\";","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" private static final String exitText \u003d \"Otsupeko! Bye bye!\";","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" public static void intro() {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" String pekoLogo \u003d \" _____ _\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" + \"| |___ | | ______\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" + \"| ___/ _ \\\\| |/ / \\\\\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" + \"| | \u003c __/| \u003c \u003c\u003e |\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" + \"|_| \\\\___||_|\\\\_\\\\____/\";","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(pekoLogo);","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(introText);","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" public static void exit() {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(exitText);","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ji-just-ji":28}},{"path":"src/main/java/peko/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" private String string;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" private static final String[] commands \u003d new String[]","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" {\"echo\",\"otsupeko\", \"list\", \"write\", \"mark\", \"unmark\",","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" \"todo\", \"deadline\", \"event\", \"find\", \"delete\",\"tell me a joke\"};","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" public Parser(String s) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" this.string \u003d s;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" public Commands getResponseValue() {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" if (string.toLowerCase().equals(\"tell me a joke\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" return Commands.COPYPASTA;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" int output \u003d 0;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" string \u003d string.toLowerCase();","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" for (int i \u003d 0; i \u003c commands.length; i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" if (string.startsWith(commands[i])) {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" output \u003d i;","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" String temp \u003d commands[output].toUpperCase().trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" return Commands.valueOf(temp);","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" return string.split(\" \",2).length \u003c 2 ? \" \" : string.split(\" \", 2)[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ji-just-ji":33}},{"path":"src/main/java/peko/Peko.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.io.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"public class Peko {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" private UserInputHandler userInputHandler;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" private UI ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" private StorageHandler storageHandler;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" new Peko().run();","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" private void run() {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" Output.intro();","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" while (true) {","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" userInputHandler.newInput();","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" if (!userInputHandler.processInput()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" SaveHandler.saveTo();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" Output.exit();","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" private Peko() {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" userInputHandler \u003d new UserInputHandler();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" storageHandler \u003d new StorageHandler();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"ji-just-ji":30}},{"path":"src/main/java/peko/SaveHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.io.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":"public class SaveHandler {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" private static int listSize \u003d 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" private static Task[] tasks \u003d new Task[100];","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" private static File file \u003d new File(\"src/main/List.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" public SaveHandler() {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" //System.out.println(\"Gomen peko, something broke...\");","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" public static void saveTo() {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(file.getAbsolutePath());","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" PrintWriter printWriter;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" printWriter \u003d new PrintWriter(file.getAbsoluteFile());","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" printWriter.write(\"\");","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" printWriter.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" File temp \u003d new File(file.getParentFile(), \"List.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" file \u003d temp;","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" } finally {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" if (t \u003d\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"ji-just-ji"},"content":" String toStore \u003d t.toStore() + \"\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"ji-just-ji"},"content":" //System.out.println(\"toStore: \" + toStore);","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"ji-just-ji"},"content":" Writer temp;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"ji-just-ji"},"content":" temp \u003d new BufferedWriter(new FileWriter(\"src/main/List.txt\", true));","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"ji-just-ji"},"content":" temp.append(toStore);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"ji-just-ji"},"content":" temp.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"ji-just-ji"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"ji-just-ji"},"content":" throw new RuntimeException(ex);","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"ji-just-ji"},"content":" public static Task[] loadFrom() {","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(file.getAbsolutePath());","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"ji-just-ji"},"content":" int pos \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"ji-just-ji"},"content":" Scanner scanner \u003d new Scanner(file.getAbsoluteFile());","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"ji-just-ji"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"ji-just-ji"},"content":" String s \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"ji-just-ji"},"content":" String[] arr \u003d s.split(\" \\\\| \");","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"ji-just-ji"},"content":" Task t \u003d stringToTask(arr);","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"ji-just-ji"},"content":" if (t !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"ji-just-ji"},"content":" tasks[pos] \u003d t;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"ji-just-ji"},"content":" pos++;","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"ji-just-ji"},"content":" listSize \u003d pos;","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"ji-just-ji"},"content":" } catch (Exception e){","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"ji-just-ji"},"content":" return tasks;","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"ji-just-ji"},"content":" private static Task stringToTask(String[] arr) {","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"ji-just-ji"},"content":" Task t;","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"ji-just-ji"},"content":" switch (arr[0]) {","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"ji-just-ji"},"content":" case \"T\":","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"ji-just-ji"},"content":" t \u003d new ToDos( arr[2]);","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"ji-just-ji"},"content":" if (arr[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"ji-just-ji"},"content":" t.setMark();","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"ji-just-ji"},"content":" return t;","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"ji-just-ji"},"content":" case \"D\":","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"ji-just-ji"},"content":" t \u003d new Deadline(arr[2] + \" /by \" + arr[3]);","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"ji-just-ji"},"content":" if (arr[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"ji-just-ji"},"content":" t.setMark();","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"ji-just-ji"},"content":" return t;","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"ji-just-ji"},"content":" case \"E\":","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"ji-just-ji"},"content":" t \u003d new Event(arr[2] + \" /from \" + arr[3] + \" /to \" + arr[4]);","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"ji-just-ji"},"content":" if (arr[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"ji-just-ji"},"content":" t.setMark();","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"ji-just-ji"},"content":" return t;","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"ji-just-ji"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"ji-just-ji"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"ji-just-ji"},"content":" } catch (InvalidTaskException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"There\u0027s an error in the list, Pain peko, I\u0027ll delete it\");","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"ji-just-ji"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"Incomplete task an error in the list, Pain peko, I\u0027ll delete it\");","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"ji-just-ji"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"ji-just-ji"},"content":" public static int size() {","lastModifiedDate":"2023-08-25"},{"lineNumber":114,"author":{"gitId":"ji-just-ji"},"content":" return listSize;","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":117,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ji-just-ji":118}},{"path":"src/main/java/peko/StorageHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":"public class StorageHandler {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" private static Task[] todoList;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" private static int size;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" public StorageHandler() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" todoList \u003d SaveHandler.loadFrom();","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" size \u003d SaveHandler.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" public static void readArray() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"--------------LIST-PEKO------------------\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" while (todoList[i] !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(i+1 + \". \" + todoList[i]);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" i++;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" if (i \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You are FREE PEKO!!!!!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" public static void addToArray(Task t) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" todoList[size] \u003d t;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"Added: \\n \" + todoList[size].toString() + \"\\npeko!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You have: \" + (size+1) + \" tasks now peko\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" size++;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" SaveHandler.saveTo();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":" public static void setMarkArray(int i) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ji-just-ji"},"content":" todoList[i-1].setMark();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"Marked as done peko!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\" \" + todoList[i-1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ji-just-ji"},"content":" SaveHandler.saveTo();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ji-just-ji"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You don\u0027t have so many Tasks Peko!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ji-just-ji"},"content":" public static void setUnmarkArray(int i) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"ji-just-ji"},"content":" todoList[i-1].setUnmark();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You haven\u0027t done this yet peko?!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\" \" + todoList[i-1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"ji-just-ji"},"content":" SaveHandler.saveTo();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"ji-just-ji"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You don\u0027t have so many Tasks Peko!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ji-just-ji"},"content":" public static Task[] search(String searchQuery) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ji-just-ji"},"content":" Task[] temp \u003d todoList;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ji-just-ji"},"content":" Task[] tempOutput \u003d new Task[100];","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ji-just-ji"},"content":" int pos \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ji-just-ji"},"content":" for (Task t : temp) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ji-just-ji"},"content":" if (t \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"break\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ji-just-ji"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ji-just-ji"},"content":" if (t.hasString(searchQuery)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ji-just-ji"},"content":" tempOutput[pos] \u003d t;","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"ji-just-ji"},"content":" pos++;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"ji-just-ji"},"content":" return tempOutput;","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ji-just-ji"},"content":" public static void setDelete(int i) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"ji-just-ji"},"content":" i--;","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"ji-just-ji"},"content":" while (i \u003c\u003d size) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"ji-just-ji"},"content":" todoList[i] \u003d todoList[i+1];","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"ji-just-ji"},"content":" i++;","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"ji-just-ji"},"content":" size--;","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"ji-just-ji"},"content":" SaveHandler.saveTo();","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"ji-just-ji"},"content":" public static void degen() throws FileNotFoundException {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"ji-just-ji"},"content":" File text \u003d new File(\"src/main/Copypasta.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"ji-just-ji"},"content":" Scanner sc \u003d new Scanner(text);","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"ji-just-ji"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(sc.nextLine());","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ji-just-ji":92}},{"path":"src/main/java/peko/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":" protected String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":" protected boolean status;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" public Task(String s) throws InvalidTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" if (s.isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" this.name \u003d s;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" status \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" String out \u003d status ? \"[X] \" : \"[ ] \";","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" return out + name;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" public void setMark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" status \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" public void setUnmark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" status \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" public boolean hasString(String s) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" return name.contains(s);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" public String toStore() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" String state \u003d status ? \"0\" : \"1\";","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" return state + \" | \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ji-just-ji":34}},{"path":"src/main/java/peko/TaskHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"public class TaskHandler {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" private static final String lineBreak \u003d \"------------------------------------------\"; //42","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" private Commands command;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" private String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" public TaskHandler(Commands command, String description) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" private void echo() {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" if (description.isBlank()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"You didn\u0027t say anything peko?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" private void readArray() {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.readArray();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":" private void addToArray() throws InvalidTaskException {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" Task t \u003d new Task(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.addToArray(t);","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":" private void mark(String s) throws NumberFormatException{","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":" int i \u003d Integer.parseInt(s);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.setMarkArray(i);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"ji-just-ji"},"content":" private void unmark(String s) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ji-just-ji"},"content":" int i \u003d Integer.parseInt(s);","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.setUnmarkArray(i);","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"ji-just-ji"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"That\u0027s not a number Bakatare!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"ji-just-ji"},"content":" private void todo(String s) throws InvalidTaskException{","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"ji-just-ji"},"content":" Task t \u003d new ToDos(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.addToArray(t);","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"ji-just-ji"},"content":" private void deadline(String s) throws InvalidTaskException {","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"ji-just-ji"},"content":" Task t \u003d new Deadline(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.addToArray(t);","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"ji-just-ji"},"content":" private void Event(String s) throws InvalidTaskException {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"ji-just-ji"},"content":" Task t \u003d new Event(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.addToArray(t);","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"ji-just-ji"},"content":" private void Find(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ji-just-ji"},"content":" Find find \u003d new Find(s);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ji-just-ji"},"content":" find.display();","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ji-just-ji"},"content":" public void delete(String s) {","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"ji-just-ji"},"content":" int i \u003d Integer.parseInt(s);","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.setDelete(i);","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"ji-just-ji"},"content":" public boolean run() {","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"ji-just-ji"},"content":" switch (command) {","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"ji-just-ji"},"content":" case ECHO:","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"ji-just-ji"},"content":" echo();","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"ji-just-ji"},"content":" case LIST:","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"ji-just-ji"},"content":" readArray();","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"ji-just-ji"},"content":" case WRITE:","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"ji-just-ji"},"content":" addToArray();","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"ji-just-ji"},"content":" case MARK:","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"ji-just-ji"},"content":" mark(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"ji-just-ji"},"content":" case UNMARK:","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"ji-just-ji"},"content":" unmark(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"ji-just-ji"},"content":" case TODO:","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"ji-just-ji"},"content":" todo(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"ji-just-ji"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"ji-just-ji"},"content":" deadline(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"ji-just-ji"},"content":" case EVENT:","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"ji-just-ji"},"content":" Event(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"ji-just-ji"},"content":" case FIND:","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"ji-just-ji"},"content":" Find(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"ji-just-ji"},"content":" case DELETE:","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"ji-just-ji"},"content":" delete(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"ji-just-ji"},"content":" case COPYPASTA:","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"ji-just-ji"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"ji-just-ji"},"content":" StorageHandler.degen();","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"ji-just-ji"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"Hentai!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"ji-just-ji"},"content":" } finally {","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"ji-just-ji"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":115,"author":{"gitId":"ji-just-ji"},"content":" case OTSUPEKO:","lastModifiedDate":"2023-08-28"},{"lineNumber":116,"author":{"gitId":"ji-just-ji"},"content":" SaveHandler.saveTo();","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"ji-just-ji"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"ji-just-ji"},"content":" default:","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"ji-just-ji"},"content":" } catch (InvalidTaskException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"ji-just-ji"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"ji-just-ji"},"content":" System.out.println(\"That\u0027s not a number Bakatare!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"ji-just-ji"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ji-just-ji":131}},{"path":"src/main/java/peko/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"public class ToDos extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":" char type \u003d \u0027T\u0027;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":" public ToDos(String s) throws InvalidTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":" this.name \u003d s;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" return \"[\" + type + \"]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" public String toStore() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" String state \u003d status ? \"0\" : \"1\";","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" return \"T\" + \" | \" + state + \" | \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ji-just-ji":20}},{"path":"src/main/java/peko/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"public class UI {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ji-just-ji":6}},{"path":"src/main/java/peko/UserInputHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"import java.awt.image.BufferedImage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ji-just-ji"},"content":"public class UserInputHandler {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ji-just-ji"},"content":" private static final String introText \u003d \"Konpeko, Konpeko, Konpeko! \\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ji-just-ji"},"content":" \"Hololive san kisei no\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ji-just-ji"},"content":" \"Usada Pekora-peko! almondo almondo!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ji-just-ji"},"content":" private static final String exitText \u003d \"Otsupeko! Bye bye!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ji-just-ji"},"content":" private Commands command;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"ji-just-ji"},"content":" private Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"ji-just-ji"},"content":" private String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"ji-just-ji"},"content":" public UserInputHandler() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ji-just-ji"},"content":" new StorageHandler();","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"ji-just-ji"},"content":" public void newInput() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"ji-just-ji"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ji-just-ji"},"content":" Parser parser \u003d new Parser(input);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"ji-just-ji"},"content":" command \u003d parser.getResponseValue();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"ji-just-ji"},"content":" description \u003d parser.getDescription();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"ji-just-ji"},"content":" public boolean processInput() {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"ji-just-ji"},"content":" TaskHandler taskHandler \u003d new TaskHandler(command, description);","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"ji-just-ji"},"content":" return taskHandler.run();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"ji-just-ji"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ji-just-ji":35}},{"path":"src/test/java/peko/PekoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"package peko;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ji-just-ji"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ji-just-ji"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ji-just-ji"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ji-just-ji"},"content":"public class PekoTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ji-just-ji"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ji-just-ji":8}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ji-just-ji"},"content":"otsupeko","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"ji-just-ji":1}},{"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":"2023-08-24"},{"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":"ji-just-ji"},"content":"java -classpath ..\\bin Peko \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"ji-just-ji":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":"2023-08-24"},{"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":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ji-just-ji"},"content":"java -classpath ../bin Peko \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":"2023-08-24"},{"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":"2023-08-24"},{"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":{"ji-just-ji":1,"-":37}}] diff --git a/ji-just-ji_ip_master/commits.json b/ji-just-ji_ip_master/commits.json index 38585bc6..4e53c113 100644 --- a/ji-just-ji_ip_master/commits.json +++ b/ji-just-ji_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ji-just-ji":[{"date":"2023-08-21","commitResults":[{"hash":"0471a8b1de55861cd1b37097f71de31d7ed7c485","isMergeCommit":false,"messageTitle":"Level 0 Initialize Change name to Peko Add intro and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"e770b5c127f79ebe97c2899da37b8ab33259f01a","isMergeCommit":false,"messageTitle":"Fixed intro logo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"5f577f6370707e6d86a4a8383d5f41cd73b4977d","isMergeCommit":false,"messageTitle":"Level-1 Add echo functionality Move introduction into separate function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":29,"deletions":4}}},{"hash":"9c9f2b7e1488233c80dd17080b35667ac2b26863","isMergeCommit":false,"messageTitle":"Add loop for echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":5}}},{"hash":"8f232707645f4b3ed98d34c6f425c0b25ff9594e","isMergeCommit":false,"messageTitle":"Move final variables together","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"020f1bf55a8a865f9f096134575fb52a09392e8e","isMergeCommit":false,"messageTitle":"Remove unneeded intitalizations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"4f07bd284eff2e550a03508724e40d03d2df0d76","isMergeCommit":false,"messageTitle":"Add Copypasta text Add easteregg","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":28,"deletions":1}}},{"hash":"6610889dbd406259c0ebf241ecee4a235946c223","isMergeCommit":false,"messageTitle":"Update Copypasta text","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":4}}},{"hash":"598b96079f92e61f1c3ecbca1005d6388bacb690","isMergeCommit":false,"messageTitle":"Updated Copypasta text","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"7368d15de0fe5c59e8d2d59313ff821ef1ebe885","isMergeCommit":false,"messageTitle":"Added read and write capability","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":44,"deletions":3}}},{"hash":"028406cf7ce6ae3d13a4f8cc38c20fcade2af3e8","isMergeCommit":false,"messageTitle":"Modify input checking Make echo its own function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":36,"deletions":23}}},{"hash":"89f03cd1fa34306e638015819d9e23bb14054a42","isMergeCommit":false,"messageTitle":"Fix write input","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":13,"deletions":12}}}]},{"date":"2023-08-23","commitResults":[{"hash":"883b632645304c85d9b5b16c816e941454d252c9","isMergeCommit":false,"messageTitle":"Change to array to store to do list Fix other functions to work with array","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":67,"deletions":14}}},{"hash":"606fbe35617b9f751ab5fad76317a520bd064181","isMergeCommit":false,"messageTitle":"Add Task object Move tasks into Task object","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":4}}}]},{"date":"2023-08-24","commitResults":[{"hash":"c6637b7b74cc6f5a2b2656bae2adfafec6ce0da4","isMergeCommit":false,"messageTitle":"Add ToDo Deadline Event objects","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":0}}},{"hash":"e4977984a4cf010b5039d3afd4b3f5dceca0c905","isMergeCommit":false,"messageTitle":"Add deadline timing capability","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":8}}},{"hash":"fc492bb82cc46a5109ba67595da4981f3338d9ec","isMergeCommit":false,"messageTitle":"Add deadline check","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":8}}},{"hash":"7910f014d74b3336e4a15ff0ee89ade829dfb8b2","isMergeCommit":false,"messageTitle":"Add InvalidTaskException to handle non task input Update Task ToDos Deadline Event to throw InvalidTaskException","messageBody":"","tags":["Level-5","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":17}}},{"hash":"e5170f3028214645e9287ebeb689349652e882d0","isMergeCommit":false,"messageTitle":"Change Expected.txt header","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"7ff0c26ef4af06bf79e52626fb5786f2d96d591b","isMergeCommit":false,"messageTitle":"Setup automated text U/I testing Add","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":13},"bat":{"insertions":3,"deletions":3},"sh":{"insertions":5,"deletions":5}}},{"hash":"ce6048a0314ab4b4abcf8c0f66fe777230e86f0e","isMergeCommit":false,"messageTitle":"Fix task bugs Fix automated test U/I testing bugs","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":46,"deletions":20},"bat":{"insertions":1,"deletions":1}}},{"hash":"885bb01844c90734668ced7ab3d5233a3cf6c45f","isMergeCommit":false,"messageTitle":"Fix runtest.sh changes","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":5,"deletions":5}}},{"hash":"ddefca37e237b440c2c395e4ad6253d664528a38","isMergeCommit":false,"messageTitle":"Update List.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":16}}},{"hash":"2b21d3b4c30b9582d3ccd34192099da6bd79cacb","isMergeCommit":false,"messageTitle":"Save attempt 1 Add SaveHandler","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":143,"deletions":22}}},{"hash":"5dccc93fe84d45b89df19664582ea067ba313246","isMergeCommit":false,"messageTitle":"Save attempt 1 cont","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":38,"deletions":48}}},{"hash":"317b8a14e6c497d67eceaee57fdd96bfcf65179b","isMergeCommit":false,"messageTitle":"Add save and load into List.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":59,"deletions":2}}},{"hash":"a13243853632a01629b44be81d80efd5178c2983","isMergeCommit":false,"messageTitle":"Remove unused methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":70}}},{"hash":"f79dd229a305b99ceb3b5398559d179e449e3fe6","isMergeCommit":false,"messageTitle":"Update List.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":16}}},{"hash":"060ec5c90e4a4cde81df5be3ab167f2e4feea2fa","isMergeCommit":true,"messageTitle":"Merge branch \u0027Save_(Level-7)\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"4558c652786fd19f99472f63a613fd1bde9f6712","isMergeCommit":false,"messageTitle":"Made to save upon every update","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"15ac47939c521869e6d81abbf76b0141cebf4b9f","isMergeCommit":false,"messageTitle":"Add datetime functionality","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":47,"deletions":10}}},{"hash":"b2ffa572766bc0eabba7fdf80349764a3348f02d","isMergeCommit":false,"messageTitle":"Begin UIHandling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":24,"deletions":0}}},{"hash":"27fc4597488afde8e0a5d457d72815341ece8e48","isMergeCommit":false,"messageTitle":"More UIHandling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":3}}}]},{"date":"2023-08-25","commitResults":[{"hash":"3d253605d629ff3a57daf55afa534975bb3344ad","isMergeCommit":false,"messageTitle":"Add echo and readArray","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":0}}},{"hash":"1085a528b6b2c47a3771f915dc2853ae8c6d6478","isMergeCommit":false,"messageTitle":"Add mark and unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":28}}},{"hash":"679a796bc7b3d48c924dab4e305e8bc025d65509","isMergeCommit":false,"messageTitle":"Add todo deadline event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":58}}},{"hash":"75d0f4c7082ec859a0b430407d53c6cdaf66f1e6","isMergeCommit":false,"messageTitle":"UI handling draft1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":93}}},{"hash":"d2cc9f7cef855006c6fba1a00caac07ce146b674","isMergeCommit":false,"messageTitle":"UI handling Still has missing line breaks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":24,"deletions":89}}},{"hash":"19a78cd267d9e0c7f0b464be6ad4c82e12472b60","isMergeCommit":false,"messageTitle":"UI Handling bug fixes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":9,"deletions":3}}},{"hash":"12a9187a7ed4901916c13165d0d4bf3f52fd7dec","isMergeCommit":false,"messageTitle":"Fix easter egg","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":4,"deletions":0}}},{"hash":"070fdb594644cac2f737ec6b203801ecfb3df12f","isMergeCommit":false,"messageTitle":"Begin StorageHandler","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":94}}},{"hash":"eeb50cdf62b453faf533dea868256d65124ab5ba","isMergeCommit":false,"messageTitle":"Fix some StorageHandler","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":29}}},{"hash":"547f94eb113e2e87c39b1501ab6838acb46b100e","isMergeCommit":false,"messageTitle":"Make StorageHandler static","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":10,"deletions":15}}}]},{"date":"2023-08-27","commitResults":[{"hash":"8be7de99504fbacf69b2cb23b39988708aaef85e","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":5},"java":{"insertions":34,"deletions":21}}},{"hash":"5e7c9ed7feb4b48a3e24b8fbc45348d4af1fd0ea","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":4,"deletions":4}}}]},{"date":"2023-08-28","commitResults":[{"hash":"d0b4c9f2c91e305402c4e2c29ed8bdc8c94672ce","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":17,"deletions":11}}},{"hash":"53100c119f9984ab1b01fb6fc59fccfe10bd21ef","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":34,"deletions":32}}},{"hash":"2a7bf79b262e1944418310ac757e88f19b7b9650","isMergeCommit":false,"messageTitle":"Move things around Add Parser UI TaskHandler Moved Enum out","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":237,"deletions":186}}},{"hash":"578bca4360f4835265bd550fe6b53068bed89047","isMergeCommit":false,"messageTitle":"Change StorageHandler to static","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":11}}},{"hash":"2152c073c45a5926f80ad514e0ac890ae0906409","isMergeCommit":false,"messageTitle":"Fix TaskHandler string name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":9}}},{"hash":"1d4143a6ac91fad35d925ed5c42c9616f20ed4b3","isMergeCommit":false,"messageTitle":"Update List.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2}}},{"hash":"174f665f6c84c4535482df11aa716a6bae002032","isMergeCommit":true,"messageTitle":"Merge branch \u0027StorageHandler\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"45d0c24e6f3bb0929a2957c830a207f995669014","isMergeCommit":false,"messageTitle":"Move to all to peko package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":150,"deletions":11}}},{"hash":"7e170140e8366bac4811338f59779b6446f54b3f","isMergeCommit":false,"messageTitle":"Bug fix","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":99}}}]},{"date":"2023-08-30","commitResults":[{"hash":"968913c3329477f4d323dc6c410d766aac5da163","isMergeCommit":false,"messageTitle":"Revert \"Bug fix\"","messageBody":"This reverts commit 7e170140e8366bac4811338f59779b6446f54b3f.\n","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":0}}},{"hash":"0c4aa0b009ed7e4051ec43687625ee51229351b4","isMergeCommit":false,"messageTitle":"Revert \"Move to all to peko package\"","messageBody":"This reverts commit 45d0c24e6f3bb0929a2957c830a207f995669014.\n","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":150}}},{"hash":"86e6be056807c9020b7e9de87374b5be6a0c167a","isMergeCommit":false,"messageTitle":"Move to peko package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":29}}},{"hash":"d414291c1fadf703950abb87760dec8b14295155","isMergeCommit":false,"messageTitle":"Add autosave after every command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"76d9bc0831bab0b3257552f9ab547c84bea89f2d","isMergeCommit":false,"messageTitle":"Revert \"Add autosave after every command\"","messageBody":"This reverts commit d414291c1fadf703950abb87760dec8b14295155.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"4c04e14e1ff432b97c222aca2ea09f5cc76022d3","isMergeCommit":false,"messageTitle":"Revert \"Move to peko package\"","messageBody":"This reverts commit 86e6be056807c9020b7e9de87374b5be6a0c167a.\n","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":49}}},{"hash":"5f578e281122925a079159bb04594a7970217400","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":11}}},{"hash":"6a4808ab85766a642ae02dc41e297b14f1952e94","isMergeCommit":false,"messageTitle":"Fix not writing to List.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":17,"deletions":20}}},{"hash":"4a17fb0d32ca9c9327495bb58864547e95221660","isMergeCommit":false,"messageTitle":"Add build.gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":18,"deletions":0}}},{"hash":"1e85a4b2faeff9bc08340d2ae52e65f0db1ecdbe","isMergeCommit":false,"messageTitle":"Add PekoTest for junit test","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":0},"java":{"insertions":9,"deletions":2}}},{"hash":"513a1613ba276b6b74af49c783b9d33ba0b25e55","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradel-support-ji-just-ji\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ji-just-ji":{"java":656,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":20,"txt":20}},"authorContributionVariance":{"ji-just-ji":93686.766},"authorDisplayNameMap":{"ji-just-ji":"CS2103T-T13-1 WONG..KEAN"}} +{"authorDailyContributionsMap":{"ji-just-ji":[{"date":"2023-08-21","commitResults":[{"hash":"0471a8b1de55861cd1b37097f71de31d7ed7c485","isMergeCommit":false,"messageTitle":"Level 0 Initialize Change name to Peko Add intro and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"e770b5c127f79ebe97c2899da37b8ab33259f01a","isMergeCommit":false,"messageTitle":"Fixed intro logo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"5f577f6370707e6d86a4a8383d5f41cd73b4977d","isMergeCommit":false,"messageTitle":"Level-1 Add echo functionality Move introduction into separate function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":29,"deletions":4}}},{"hash":"9c9f2b7e1488233c80dd17080b35667ac2b26863","isMergeCommit":false,"messageTitle":"Add loop for echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":5}}},{"hash":"8f232707645f4b3ed98d34c6f425c0b25ff9594e","isMergeCommit":false,"messageTitle":"Move final variables together","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"020f1bf55a8a865f9f096134575fb52a09392e8e","isMergeCommit":false,"messageTitle":"Remove unneeded intitalizations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"4f07bd284eff2e550a03508724e40d03d2df0d76","isMergeCommit":false,"messageTitle":"Add Copypasta text Add easteregg","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":28,"deletions":1}}},{"hash":"6610889dbd406259c0ebf241ecee4a235946c223","isMergeCommit":false,"messageTitle":"Update Copypasta text","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":4}}},{"hash":"598b96079f92e61f1c3ecbca1005d6388bacb690","isMergeCommit":false,"messageTitle":"Updated Copypasta text","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"7368d15de0fe5c59e8d2d59313ff821ef1ebe885","isMergeCommit":false,"messageTitle":"Added read and write capability","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":44,"deletions":3}}},{"hash":"028406cf7ce6ae3d13a4f8cc38c20fcade2af3e8","isMergeCommit":false,"messageTitle":"Modify input checking Make echo its own function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":36,"deletions":23}}},{"hash":"89f03cd1fa34306e638015819d9e23bb14054a42","isMergeCommit":false,"messageTitle":"Fix write input","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":13,"deletions":12}}}]},{"date":"2023-08-23","commitResults":[{"hash":"883b632645304c85d9b5b16c816e941454d252c9","isMergeCommit":false,"messageTitle":"Change to array to store to do list Fix other functions to work with array","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":67,"deletions":14}}},{"hash":"606fbe35617b9f751ab5fad76317a520bd064181","isMergeCommit":false,"messageTitle":"Add Task object Move tasks into Task object","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":4}}}]},{"date":"2023-08-24","commitResults":[{"hash":"c6637b7b74cc6f5a2b2656bae2adfafec6ce0da4","isMergeCommit":false,"messageTitle":"Add ToDo Deadline Event objects","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":0}}},{"hash":"e4977984a4cf010b5039d3afd4b3f5dceca0c905","isMergeCommit":false,"messageTitle":"Add deadline timing capability","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":8}}},{"hash":"fc492bb82cc46a5109ba67595da4981f3338d9ec","isMergeCommit":false,"messageTitle":"Add deadline check","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":8}}},{"hash":"7910f014d74b3336e4a15ff0ee89ade829dfb8b2","isMergeCommit":false,"messageTitle":"Add InvalidTaskException to handle non task input Update Task ToDos Deadline Event to throw InvalidTaskException","messageBody":"","tags":["Level-5","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":17}}},{"hash":"e5170f3028214645e9287ebeb689349652e882d0","isMergeCommit":false,"messageTitle":"Change Expected.txt header","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"7ff0c26ef4af06bf79e52626fb5786f2d96d591b","isMergeCommit":false,"messageTitle":"Setup automated text U/I testing Add","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":13},"bat":{"insertions":3,"deletions":3},"sh":{"insertions":5,"deletions":5}}},{"hash":"ce6048a0314ab4b4abcf8c0f66fe777230e86f0e","isMergeCommit":false,"messageTitle":"Fix task bugs Fix automated test U/I testing bugs","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":46,"deletions":20},"bat":{"insertions":1,"deletions":1}}},{"hash":"885bb01844c90734668ced7ab3d5233a3cf6c45f","isMergeCommit":false,"messageTitle":"Fix runtest.sh changes","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":5,"deletions":5}}},{"hash":"ddefca37e237b440c2c395e4ad6253d664528a38","isMergeCommit":false,"messageTitle":"Update List.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":16}}},{"hash":"2b21d3b4c30b9582d3ccd34192099da6bd79cacb","isMergeCommit":false,"messageTitle":"Save attempt 1 Add SaveHandler","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":143,"deletions":22}}},{"hash":"5dccc93fe84d45b89df19664582ea067ba313246","isMergeCommit":false,"messageTitle":"Save attempt 1 cont","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":38,"deletions":48}}},{"hash":"317b8a14e6c497d67eceaee57fdd96bfcf65179b","isMergeCommit":false,"messageTitle":"Add save and load into List.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":59,"deletions":2}}},{"hash":"a13243853632a01629b44be81d80efd5178c2983","isMergeCommit":false,"messageTitle":"Remove unused methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":70}}},{"hash":"f79dd229a305b99ceb3b5398559d179e449e3fe6","isMergeCommit":false,"messageTitle":"Update List.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":16}}},{"hash":"060ec5c90e4a4cde81df5be3ab167f2e4feea2fa","isMergeCommit":true,"messageTitle":"Merge branch \u0027Save_(Level-7)\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"4558c652786fd19f99472f63a613fd1bde9f6712","isMergeCommit":false,"messageTitle":"Made to save upon every update","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"15ac47939c521869e6d81abbf76b0141cebf4b9f","isMergeCommit":false,"messageTitle":"Add datetime functionality","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":47,"deletions":10}}},{"hash":"b2ffa572766bc0eabba7fdf80349764a3348f02d","isMergeCommit":false,"messageTitle":"Begin UIHandling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":24,"deletions":0}}},{"hash":"27fc4597488afde8e0a5d457d72815341ece8e48","isMergeCommit":false,"messageTitle":"More UIHandling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":3}}}]},{"date":"2023-08-25","commitResults":[{"hash":"3d253605d629ff3a57daf55afa534975bb3344ad","isMergeCommit":false,"messageTitle":"Add echo and readArray","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":0}}},{"hash":"1085a528b6b2c47a3771f915dc2853ae8c6d6478","isMergeCommit":false,"messageTitle":"Add mark and unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":28}}},{"hash":"679a796bc7b3d48c924dab4e305e8bc025d65509","isMergeCommit":false,"messageTitle":"Add todo deadline event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":58}}},{"hash":"75d0f4c7082ec859a0b430407d53c6cdaf66f1e6","isMergeCommit":false,"messageTitle":"UI handling draft1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":93}}},{"hash":"d2cc9f7cef855006c6fba1a00caac07ce146b674","isMergeCommit":false,"messageTitle":"UI handling Still has missing line breaks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":24,"deletions":89}}},{"hash":"19a78cd267d9e0c7f0b464be6ad4c82e12472b60","isMergeCommit":false,"messageTitle":"UI Handling bug fixes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":9,"deletions":3}}},{"hash":"12a9187a7ed4901916c13165d0d4bf3f52fd7dec","isMergeCommit":false,"messageTitle":"Fix easter egg","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":4,"deletions":0}}},{"hash":"070fdb594644cac2f737ec6b203801ecfb3df12f","isMergeCommit":false,"messageTitle":"Begin StorageHandler","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":94}}},{"hash":"eeb50cdf62b453faf533dea868256d65124ab5ba","isMergeCommit":false,"messageTitle":"Fix some StorageHandler","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":29}}},{"hash":"547f94eb113e2e87c39b1501ab6838acb46b100e","isMergeCommit":false,"messageTitle":"Make StorageHandler static","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":10,"deletions":15}}}]},{"date":"2023-08-27","commitResults":[{"hash":"8be7de99504fbacf69b2cb23b39988708aaef85e","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":5},"java":{"insertions":34,"deletions":21}}},{"hash":"5e7c9ed7feb4b48a3e24b8fbc45348d4af1fd0ea","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":4,"deletions":4}}}]},{"date":"2023-08-28","commitResults":[{"hash":"d0b4c9f2c91e305402c4e2c29ed8bdc8c94672ce","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":17,"deletions":11}}},{"hash":"53100c119f9984ab1b01fb6fc59fccfe10bd21ef","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":34,"deletions":32}}},{"hash":"2a7bf79b262e1944418310ac757e88f19b7b9650","isMergeCommit":false,"messageTitle":"Move things around Add Parser UI TaskHandler Moved Enum out","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":237,"deletions":186}}},{"hash":"578bca4360f4835265bd550fe6b53068bed89047","isMergeCommit":false,"messageTitle":"Change StorageHandler to static","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":11}}},{"hash":"2152c073c45a5926f80ad514e0ac890ae0906409","isMergeCommit":false,"messageTitle":"Fix TaskHandler string name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":9}}},{"hash":"1d4143a6ac91fad35d925ed5c42c9616f20ed4b3","isMergeCommit":false,"messageTitle":"Update List.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2}}},{"hash":"174f665f6c84c4535482df11aa716a6bae002032","isMergeCommit":true,"messageTitle":"Merge branch \u0027StorageHandler\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"45d0c24e6f3bb0929a2957c830a207f995669014","isMergeCommit":false,"messageTitle":"Move to all to peko package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":150,"deletions":11}}},{"hash":"7e170140e8366bac4811338f59779b6446f54b3f","isMergeCommit":false,"messageTitle":"Bug fix","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":99}}}]},{"date":"2023-08-30","commitResults":[{"hash":"968913c3329477f4d323dc6c410d766aac5da163","isMergeCommit":false,"messageTitle":"Revert \"Bug fix\"","messageBody":"This reverts commit 7e170140e8366bac4811338f59779b6446f54b3f.\n","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":0}}},{"hash":"0c4aa0b009ed7e4051ec43687625ee51229351b4","isMergeCommit":false,"messageTitle":"Revert \"Move to all to peko package\"","messageBody":"This reverts commit 45d0c24e6f3bb0929a2957c830a207f995669014.\n","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":150}}},{"hash":"86e6be056807c9020b7e9de87374b5be6a0c167a","isMergeCommit":false,"messageTitle":"Move to peko package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":29}}},{"hash":"d414291c1fadf703950abb87760dec8b14295155","isMergeCommit":false,"messageTitle":"Add autosave after every command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"76d9bc0831bab0b3257552f9ab547c84bea89f2d","isMergeCommit":false,"messageTitle":"Revert \"Add autosave after every command\"","messageBody":"This reverts commit d414291c1fadf703950abb87760dec8b14295155.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"4c04e14e1ff432b97c222aca2ea09f5cc76022d3","isMergeCommit":false,"messageTitle":"Revert \"Move to peko package\"","messageBody":"This reverts commit 86e6be056807c9020b7e9de87374b5be6a0c167a.\n","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":49}}},{"hash":"5f578e281122925a079159bb04594a7970217400","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":11}}},{"hash":"6a4808ab85766a642ae02dc41e297b14f1952e94","isMergeCommit":false,"messageTitle":"Fix not writing to List.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":17,"deletions":20}}},{"hash":"4a17fb0d32ca9c9327495bb58864547e95221660","isMergeCommit":false,"messageTitle":"Add build.gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":18,"deletions":0}}},{"hash":"1e85a4b2faeff9bc08340d2ae52e65f0db1ecdbe","isMergeCommit":false,"messageTitle":"Add PekoTest for junit test","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":0},"java":{"insertions":9,"deletions":2}}},{"hash":"513a1613ba276b6b74af49c783b9d33ba0b25e55","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradel-support-ji-just-ji\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"631c252db7a6abfeb5a838cc540ccb71985d0912","isMergeCommit":false,"messageTitle":"Add Find class with supporting methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"b0f8afb2ce2bc633951e3009a4f0b043894ec320","isMergeCommit":false,"messageTitle":"Implement Find","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":36,"deletions":8}}},{"hash":"49e124dc5d9c27a2ccb9bdb29ecebc58d5e4b332","isMergeCommit":false,"messageTitle":"Fix switch case indents","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":42}}},{"hash":"c4dca5f1e82d2f67a1dccc998ad242bb6907e2ed","isMergeCommit":true,"messageTitle":"Merge pull request #1 from ji-just-ji/branch-Level-9","messageBody":"Branch level 9","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ji-just-ji":{"java":722,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":20,"txt":21}},"authorContributionVariance":{"ji-just-ji":85546.0},"authorDisplayNameMap":{"ji-just-ji":"CS2103T-T13-1 WONG..KEAN"}} diff --git a/jibtaf_ip_master/authorship.json b/jibtaf_ip_master/authorship.json index c8bf0f54..01b0d6f5 100644 --- a/jibtaf_ip_master/authorship.json +++ b/jibtaf_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Action.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":" * A class that encapsulates all actions the Bell Curve God can do.","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":"public class Action {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":" public static final String HORIZONTAL_LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":" * An ArrayList that stores all tasks entered by the user.","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":" private static int numOfTasks \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jibtaf"},"content":" * Greets the user by printing the greeting messages.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jibtaf"},"content":" public static void greet() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Hello! I\u0027m Bell Curve God.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jibtaf"},"content":" * Says goodbye to the user and exits.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jibtaf"},"content":" public static void exit() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"jibtaf"},"content":" * Respond to commands entered by the user,","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"jibtaf"},"content":" * and exits when the user types the command bye.","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"jibtaf"},"content":" public static void respond() {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"jibtaf"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"jibtaf"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"jibtaf"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"jibtaf"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"jibtaf"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"jibtaf"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"jibtaf"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"jibtaf"},"content":" listTasks();","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"jibtaf"},"content":" } else if (words[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"jibtaf"},"content":" mark(tasks.get(Integer.parseInt(words[1]) - 1));","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"jibtaf"},"content":" } else if (words[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"jibtaf"},"content":" unmark(tasks.get(Integer.parseInt(words[1]) - 1));","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"jibtaf"},"content":" } else if (words[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"jibtaf"},"content":" delete(tasks.get(Integer.parseInt(words[1]) - 1));","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"jibtaf"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"jibtaf"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"jibtaf"},"content":" addTask(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"jibtaf"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"jibtaf"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"jibtaf"},"content":" } catch (EmptyDescriptionException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"jibtaf"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"jibtaf"},"content":" exit();","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"jibtaf"},"content":" sc.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"jibtaf"},"content":" * Adds a task to the storage.","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"jibtaf"},"content":" * @param input description of the task to be added","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"jibtaf"},"content":" public static void addTask(String input) throws InvalidCommandException, EmptyDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"jibtaf"},"content":" String cmd \u003d input.split(\" \")[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"jibtaf"},"content":" Task newTask \u003d null;","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"jibtaf"},"content":" if (!(cmd.equals(\"todo\") || cmd.equals(\"deadline\") || cmd.equals(\"event\"))) {","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"jibtaf"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"jibtaf"},"content":" HORIZONTAL_LINE + \"\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"jibtaf"},"content":" \"You have entered an invalid command word!\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"jibtaf"},"content":" \"To add a new Task, use \\\"todo\\\", \\\" deadline\\\", or \\\"event\\\".\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"jibtaf"},"content":" HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"jibtaf"},"content":" if (cmd.equals(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"jibtaf"},"content":" newTask \u003d Deadline.generateDeadlineFromInput(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"jibtaf"},"content":" } else if (cmd.equals(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"jibtaf"},"content":" newTask \u003d Event.generateEventFromInput(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"jibtaf"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"jibtaf"},"content":" newTask \u003d Todo.generateTodoFromInput(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"jibtaf"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"jibtaf"},"content":" numOfTasks++;","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"jibtaf"},"content":" System.out.println(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Now you have \" + numOfTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"jibtaf"},"content":" * List all tasks stored.","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"jibtaf"},"content":" public static void listTasks() {","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"jibtaf"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"jibtaf"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"jibtaf"},"content":" * Mark the given task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"jibtaf"},"content":" * @param task task to be marked as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"jibtaf"},"content":" public static void mark(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"jibtaf"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"jibtaf"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"jibtaf"},"content":" * Mark the given task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"jibtaf"},"content":" * @param task task to be marked as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"jibtaf"},"content":" public static void unmark(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"jibtaf"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"jibtaf"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"jibtaf"},"content":" * Deletes the task from the list.","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"jibtaf"},"content":" * @param task task to be deleted.","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"jibtaf"},"content":" public static void delete(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"jibtaf"},"content":" tasks.remove(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"jibtaf"},"content":" numOfTasks--;","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"jibtaf"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Now you have \" + numOfTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":151}},{"path":"src/main/java/BellCurveGod.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class BellCurveGod {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" Action.greet();","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" Action.respond();","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jibtaf":3,"-":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" protected String by;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":" * Generates a Deadline with description given in the input.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":" * @param input input entered by user.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":" * @return a Deadline.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":" public static Deadline generateDeadlineFromInput(String input) throws EmptyDeadlineDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jibtaf"},"content":" if (input.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jibtaf"},"content":" throw new EmptyDeadlineDescriptionException(","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jibtaf"},"content":" Action.HORIZONTAL_LINE + \"\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jibtaf"},"content":" \"You did not provide any description to this Deadline.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jibtaf"},"content":" \"To add a Deadline, enter \\\"deadline \u003cdescription\u003e /by \u003cdeadline\u003e\\\".\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jibtaf"},"content":" Action.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jibtaf"},"content":" String front \u003d input.split(\"/\")[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jibtaf"},"content":" String[] frontWords \u003d front.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e desWords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jibtaf"},"content":" for (int i \u003d 1; i \u003c frontWords.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jibtaf"},"content":" desWords.add(frontWords[i]);","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jibtaf"},"content":" String des \u003d String.join(\" \", desWords);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jibtaf"},"content":" String back \u003d input.split(\"/\")[1];","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jibtaf"},"content":" String[] backWords \u003d back.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e ddlWords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"jibtaf"},"content":" for (int i \u003d 1; i \u003c backWords.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"jibtaf"},"content":" ddlWords.add(backWords[i]);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"jibtaf"},"content":" String ddl \u003d String.join(\" \", ddlWords);","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"jibtaf"},"content":" return new Deadline(des, ddl);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"jibtaf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"jibtaf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"jibtaf"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":48}},{"path":"src/main/java/EmptyByTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyByTimeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyByTimeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/EmptyDeadlineDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyDeadlineDescriptionException extends EmptyDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyDeadlineDescriptionException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyDescriptionException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/EmptyEventDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyEventDescriptionException extends EmptyDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyEventDescriptionException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/EmptyFromTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyFromTimeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyFromTimeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/EmptyToTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyToTimeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyToTimeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/EmptyTodoDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyTodoDescriptionException extends EmptyDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyTodoDescriptionException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" protected String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":" protected String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":" * Generates an Event with description given in the input.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":" * @param input input entered by user.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":" * @return an Event.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jibtaf"},"content":" public static Event generateEventFromInput(String input) throws EmptyEventDescriptionException{","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jibtaf"},"content":" if (input.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jibtaf"},"content":" throw new EmptyEventDescriptionException(","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jibtaf"},"content":" Action.HORIZONTAL_LINE + \"\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jibtaf"},"content":" \"You did not provide any description to this Event.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jibtaf"},"content":" \"To add an Event, enter \\\"event \u003cdescription\u003e /from \u003cstartTime\u003e /to \u003cendTime\u003e\\\".\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jibtaf"},"content":" Action.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jibtaf"},"content":" String front \u003d input.split(\"/\")[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jibtaf"},"content":" String[] frontWords \u003d front.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e desWords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jibtaf"},"content":" for (int i \u003d 1; i \u003c frontWords.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jibtaf"},"content":" desWords.add(frontWords[i]);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jibtaf"},"content":" String des \u003d String.join(\" \", desWords);","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jibtaf"},"content":" String middle \u003d input.split(\"/\")[1];","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"jibtaf"},"content":" String[] midWords \u003d middle.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e startWords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"jibtaf"},"content":" for (int i \u003d 1; i \u003c midWords.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"jibtaf"},"content":" startWords.add(midWords[i]);","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"jibtaf"},"content":" String start \u003d String.join(\" \", startWords);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"jibtaf"},"content":" String back \u003d input.split(\"/\")[2];","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"jibtaf"},"content":" String[] backWords \u003d back.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e endWords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"jibtaf"},"content":" for (int i \u003d 1; i \u003c backWords.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"jibtaf"},"content":" endWords.add(backWords[i]);","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"jibtaf"},"content":" String end \u003d String.join(\" \", endWords);","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"jibtaf"},"content":" return new Event(des, start, end);","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"jibtaf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"jibtaf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"jibtaf"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":58}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" * A class encapsulating tasks.","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":" * Returns the status icon depending on whether the task is done.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":" * @return \"X\" if the task is done; \" \" otherwise.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jibtaf"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jibtaf"},"content":" return this.isDone ? \"X\" : \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jibtaf"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jibtaf"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jibtaf"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jibtaf"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jibtaf"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"jibtaf"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"jibtaf"},"content":" * Returns the string representation of a task.","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"jibtaf"},"content":" * @return string representation of a task.","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"jibtaf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"jibtaf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"jibtaf"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":43}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":" * Generates a Todo with description given in the input.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":" * @param input input entered by user.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":" * @return a Todo.","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":" public static Todo generateTodoFromInput(String input) throws EmptyTodoDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":" throw new EmptyTodoDescriptionException(","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jibtaf"},"content":" Action.HORIZONTAL_LINE + \"\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jibtaf"},"content":" \"You did not provide any description to this Todo.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jibtaf"},"content":" \"To add a Todo, enter \\\"todo \u003cdescription\u003e\\\".\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jibtaf"},"content":" Action.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e desWords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jibtaf"},"content":" for (int i \u003d 1; i \u003c words.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jibtaf"},"content":" desWords.add(words[i]);","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jibtaf"},"content":" String des \u003d String.join(\" \", desWords);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jibtaf"},"content":" return new Todo(des);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jibtaf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"jibtaf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jibtaf"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":35}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":"todo eat breakfast","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"deadline finish week2 quiz /by tomorrow","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":"event zoom meeting /from 1900 /to 2000","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":16}}] +[{"path":"src/main/java/Action.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":" * A class that encapsulates all actions the Bell Curve God can do.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":"public class Action {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":" public static final String HORIZONTAL_LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":" private static final String LOGO \u003d \"\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jibtaf"},"content":" \" ____ _ _ _____ _____ _ \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jibtaf"},"content":" \" | _ \\\\ | | | / ____| / ____| | |\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jibtaf"},"content":" \" | |_) | ___| | | | | _ _ _ ____ _____ | | __ ___ __| |\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jibtaf"},"content":" \" | _ \u003c / _ \\\\ | | | | | | | | \u0027__\\\\ \\\\ / / _ \\\\ | | |_ |/ _ \\\\ / _` |\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jibtaf"},"content":" \" | |_) | __/ | | | |___| |_| | | \\\\ V / __/ | |__| | (_) | (_| |\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jibtaf"},"content":" \" |____/ \\\\___|_|_| \\\\_____\\\\__,_|_| \\\\_/ \\\\___| \\\\_____|\\\\___/ \\\\__,_|\";","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jibtaf"},"content":" private static final String DATA_DIRECTORY_PATH \u003d \"./data\";","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jibtaf"},"content":" private static final String DATA_FILE_PATH \u003d \"./data/tasks.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jibtaf"},"content":" * An ArrayList that stores all tasks entered by the user.","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jibtaf"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jibtaf"},"content":" private static int numOfTasks \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jibtaf"},"content":" * Greets the user by printing the greeting messages.","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"jibtaf"},"content":" public static void greet() {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"jibtaf"},"content":" System.out.println(LOGO);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Hello! I\u0027m Bell Curve God.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"jibtaf"},"content":" * Says goodbye to the user and exits.","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"jibtaf"},"content":" public static void exit() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jibtaf"},"content":" updateData();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"jibtaf"},"content":" * Respond to commands entered by the user,","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"jibtaf"},"content":" * and exits when the user types the command bye.","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"jibtaf"},"content":" public static void respond() {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"jibtaf"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"jibtaf"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"jibtaf"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"jibtaf"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"jibtaf"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"jibtaf"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"jibtaf"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"jibtaf"},"content":" listTasks();","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"jibtaf"},"content":" } else if (words[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"jibtaf"},"content":" mark(tasks.get(Integer.parseInt(words[1]) - 1));","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"jibtaf"},"content":" } else if (words[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"jibtaf"},"content":" unmark(tasks.get(Integer.parseInt(words[1]) - 1));","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"jibtaf"},"content":" } else if (words[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"jibtaf"},"content":" delete(tasks.get(Integer.parseInt(words[1]) - 1));","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"jibtaf"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"jibtaf"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"jibtaf"},"content":" addTask(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"jibtaf"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"jibtaf"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"jibtaf"},"content":" } catch (EmptyDescriptionException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"jibtaf"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"jibtaf"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"jibtaf"},"content":" exit();","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"jibtaf"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"jibtaf"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"jibtaf"},"content":" sc.close();","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"jibtaf"},"content":" * Adds a task to the storage.","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"jibtaf"},"content":" * @param input description of the task to be added","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"jibtaf"},"content":" public static void addTask(String input) throws InvalidCommandException, EmptyDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"jibtaf"},"content":" String cmd \u003d input.split(\" \")[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"jibtaf"},"content":" Task newTask \u003d null;","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"jibtaf"},"content":" if (!(cmd.equals(\"todo\") || cmd.equals(\"deadline\") || cmd.equals(\"event\"))) {","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"jibtaf"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"jibtaf"},"content":" HORIZONTAL_LINE + \"\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"jibtaf"},"content":" \"You have entered an invalid command word!\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"jibtaf"},"content":" \"To add a new Task, use \\\"todo\\\", \\\" deadline\\\", or \\\"event\\\".\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"jibtaf"},"content":" HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"jibtaf"},"content":" if (cmd.equals(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"jibtaf"},"content":" newTask \u003d Deadline.generateDeadlineFromInput(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"jibtaf"},"content":" } else if (cmd.equals(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"jibtaf"},"content":" newTask \u003d Event.generateEventFromInput(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"jibtaf"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"jibtaf"},"content":" newTask \u003d Todo.generateTodoFromInput(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"jibtaf"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"jibtaf"},"content":" numOfTasks++;","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"jibtaf"},"content":" saveTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"jibtaf"},"content":" System.out.println(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Now you have \" + numOfTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"jibtaf"},"content":" * List all tasks stored.","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"jibtaf"},"content":" public static void listTasks() {","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"jibtaf"},"content":" if (!tasks.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"jibtaf"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"jibtaf"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"jibtaf"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"There is no task in your list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"jibtaf"},"content":" * Mark the given task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"jibtaf"},"content":" * @param task task to be marked as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"jibtaf"},"content":" public static void mark(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"jibtaf"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"jibtaf"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"jibtaf"},"content":" * Mark the given task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"jibtaf"},"content":" * @param task task to be marked as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"jibtaf"},"content":" public static void unmark(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"jibtaf"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"jibtaf"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"jibtaf"},"content":" * Deletes the task from the list.","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"jibtaf"},"content":" * @param task task to be deleted.","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"jibtaf"},"content":" public static void delete(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"jibtaf"},"content":" tasks.remove(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"jibtaf"},"content":" numOfTasks--;","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"jibtaf"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Now you have \" + numOfTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"jibtaf"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"jibtaf"},"content":" public static void saveTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"jibtaf"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"jibtaf"},"content":" appendToFile(DATA_FILE_PATH, task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"jibtaf"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"jibtaf"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"jibtaf"},"content":" private static void writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"jibtaf"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"jibtaf"},"content":" fw.write(textToAdd);","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"jibtaf"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"jibtaf"},"content":" private static void appendToFile(String filePath, String textToAppend) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"jibtaf"},"content":" FileWriter fw \u003d new FileWriter(filePath, true); // create a FileWriter in append mode","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"jibtaf"},"content":" fw.write(textToAppend);","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"jibtaf"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"jibtaf"},"content":" public static void loadTasks(String filePath) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"jibtaf"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"jibtaf"},"content":" readFile(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"jibtaf"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"jibtaf"},"content":" createMissingFile(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"jibtaf"},"content":" public static void readFile(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"jibtaf"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"jibtaf"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"jibtaf"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"jibtaf"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"jibtaf"},"content":" handleTaskData(sc.nextLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"jibtaf"},"content":" } catch (WrongDataFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"jibtaf"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"jibtaf"},"content":" sc.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"jibtaf"},"content":" public static void createMissingFile(String filePath) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"File not found!\\nFile has been created!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"jibtaf"},"content":" File dir \u003d new File(DATA_DIRECTORY_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"jibtaf"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"jibtaf"},"content":" dir.mkdir();","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"jibtaf"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"jibtaf"},"content":" f.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"jibtaf"},"content":" public static void handleTaskData(String taskData) throws WrongDataFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"jibtaf"},"content":" String[] words \u003d taskData.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"jibtaf"},"content":" char taskType \u003d taskData.charAt(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"jibtaf"},"content":" Character status \u003d taskData.charAt(4);","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"jibtaf"},"content":" boolean isDone \u003d status.equals(\u0027X\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"jibtaf"},"content":" switch (taskType) {","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"jibtaf"},"content":" case \u0027T\u0027:","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e desWords \u003d new ArrayList\u003c\u003e(Arrays.asList(words).subList(1, words.length));","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"jibtaf"},"content":" String des \u003d String.join(\" \", desWords);","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"jibtaf"},"content":" tasks.add(new Todo(des, isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"jibtaf"},"content":" numOfTasks++;","lastModifiedDate":"2023-09-01"},{"lineNumber":246,"author":{"gitId":"jibtaf"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":247,"author":{"gitId":"jibtaf"},"content":" case \u0027D\u0027:","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"jibtaf"},"content":" String[] desAndDdl \u003d taskData.split(\"[()]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"jibtaf"},"content":" String[] frontWords \u003d desAndDdl[0].split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e desWords2 \u003d new ArrayList\u003c\u003e(Arrays.asList(frontWords).subList(1, frontWords.length));","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"jibtaf"},"content":" String des2 \u003d String.join(\" \", desWords2);","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"jibtaf"},"content":" String[] backWords \u003d desAndDdl[1].split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e ddlWords \u003d new ArrayList\u003c\u003e(Arrays.asList(backWords).subList(1, backWords.length));","lastModifiedDate":"2023-09-01"},{"lineNumber":256,"author":{"gitId":"jibtaf"},"content":" String ddl \u003d String.join(\" \", ddlWords);","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"jibtaf"},"content":" tasks.add(new Deadline(des2, LocalDate.parse(ddl), isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"jibtaf"},"content":" numOfTasks++;","lastModifiedDate":"2023-09-01"},{"lineNumber":260,"author":{"gitId":"jibtaf"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"jibtaf"},"content":" case \u0027E\u0027:","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"jibtaf"},"content":" String[] desAndTime \u003d taskData.split(\"[()]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":263,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":264,"author":{"gitId":"jibtaf"},"content":" String[] frontWords2 \u003d desAndTime[0].split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e desWords3 \u003d new ArrayList\u003c\u003e(Arrays.asList(frontWords2).subList(1, frontWords2.length));","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"jibtaf"},"content":" String des3 \u003d String.join(\" \", desWords3);","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"jibtaf"},"content":" String times \u003d desAndTime[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"jibtaf"},"content":" String[] fromTo \u003d times.split(\"to: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":270,"author":{"gitId":"jibtaf"},"content":" String fromTime \u003d fromTo[0].split(\"from: \")[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"jibtaf"},"content":" String toTime \u003d fromTo[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":272,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":273,"author":{"gitId":"jibtaf"},"content":" tasks.add(new Event(des3, LocalDateTime.parse(fromTime), LocalDateTime.parse(toTime), isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":274,"author":{"gitId":"jibtaf"},"content":" numOfTasks++;","lastModifiedDate":"2023-09-01"},{"lineNumber":275,"author":{"gitId":"jibtaf"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":276,"author":{"gitId":"jibtaf"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"jibtaf"},"content":" throw new WrongDataFormatException(\"The tasks stored in your local disk have wrong format!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":278,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":279,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":280,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":281,"author":{"gitId":"jibtaf"},"content":" public static void updateData() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":282,"author":{"gitId":"jibtaf"},"content":" String data \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":283,"author":{"gitId":"jibtaf"},"content":" for (Task t: tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":284,"author":{"gitId":"jibtaf"},"content":" data +\u003d t.toString() + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":285,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":286,"author":{"gitId":"jibtaf"},"content":" writeToFile(DATA_FILE_PATH, data);","lastModifiedDate":"2023-09-01"},{"lineNumber":287,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":288,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":288}},{"path":"src/main/java/BellCurveGod.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":"public class BellCurveGod {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" private static final String DATA_FILE_PATH \u003d \"./data/tasks.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":" Action.loadTasks(DATA_FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":" Action.greet();","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":" Action.respond();","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jibtaf":12,"-":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":" protected LocalDate by;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":" public Deadline(String description, LocalDate by, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jibtaf"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jibtaf"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jibtaf"},"content":" * Generates a Deadline with description given in the input.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jibtaf"},"content":" * @param input input entered by user.","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jibtaf"},"content":" * @return a Deadline.","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jibtaf"},"content":" public static Deadline generateDeadlineFromInput(String input) throws EmptyDeadlineDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jibtaf"},"content":" if (input.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jibtaf"},"content":" throw new EmptyDeadlineDescriptionException(","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jibtaf"},"content":" Action.HORIZONTAL_LINE + \"\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jibtaf"},"content":" \"You did not provide any description to this Deadline.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jibtaf"},"content":" \"To add a Deadline, enter \\\"deadline \u003cdescription\u003e /by \u003cyyyy-mm-dd\u003e\\\".\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jibtaf"},"content":" Action.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jibtaf"},"content":" String front \u003d input.split(\"/\")[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"jibtaf"},"content":" String[] frontWords \u003d front.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e desWords \u003d new ArrayList\u003c\u003e(Arrays.asList(frontWords).subList(1, frontWords.length));","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jibtaf"},"content":" String des \u003d String.join(\" \", desWords);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"jibtaf"},"content":" String back \u003d input.split(\"/\")[1];","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"jibtaf"},"content":" String[] backWords \u003d back.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e ddlWords \u003d new ArrayList\u003c\u003e(Arrays.asList(backWords).subList(1, backWords.length));","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jibtaf"},"content":" String ddl \u003d String.join(\" \", ddlWords);","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"jibtaf"},"content":" LocalDate deadline \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jibtaf"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jibtaf"},"content":" deadline \u003d LocalDate.parse(ddl);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jibtaf"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jibtaf"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Please enter your deadline in the following format:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"yyyy-mm-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"E.g. 2019-10-15\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jibtaf"},"content":" return new Deadline(des, deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"jibtaf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"jibtaf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"jibtaf"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":62}},{"path":"src/main/java/EmptyByTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyByTimeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyByTimeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/EmptyDeadlineDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyDeadlineDescriptionException extends EmptyDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyDeadlineDescriptionException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyDescriptionException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/EmptyEventDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyEventDescriptionException extends EmptyDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyEventDescriptionException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/EmptyFromTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyFromTimeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyFromTimeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/EmptyToTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyToTimeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyToTimeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/EmptyTodoDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class EmptyTodoDescriptionException extends EmptyDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public EmptyTodoDescriptionException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jibtaf"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jibtaf"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jibtaf"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jibtaf"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jibtaf"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jibtaf"},"content":" * Generates an Event with description given in the input.","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jibtaf"},"content":" * @param input input entered by user.","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jibtaf"},"content":" * @return an Event.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jibtaf"},"content":" public static Event generateEventFromInput(String input) throws EmptyEventDescriptionException{","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jibtaf"},"content":" if (input.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jibtaf"},"content":" throw new EmptyEventDescriptionException(","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"jibtaf"},"content":" Action.HORIZONTAL_LINE + \"\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jibtaf"},"content":" \"You did not provide any description to this Event.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jibtaf"},"content":" \"To add an Event, enter \\\"event \u003cdescription\u003e /from \u003cstartTime\u003e /to \u003cendTime\u003e\\\".\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jibtaf"},"content":" Action.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"jibtaf"},"content":" String[] wordsSplitBySlash \u003d input.split(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jibtaf"},"content":" String front \u003d wordsSplitBySlash[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jibtaf"},"content":" String[] frontWords \u003d front.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e desWords \u003d new ArrayList\u003c\u003e(Arrays.asList(frontWords).subList(1, frontWords.length));","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jibtaf"},"content":" String des \u003d String.join(\" \", desWords);","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"jibtaf"},"content":" String middle \u003d wordsSplitBySlash[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jibtaf"},"content":" String[] midWords \u003d middle.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e startWords \u003d new ArrayList\u003c\u003e(Arrays.asList(midWords).subList(1, midWords.length));","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jibtaf"},"content":" String start \u003d String.join(\" \", startWords);","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"jibtaf"},"content":" String back \u003d wordsSplitBySlash[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jibtaf"},"content":" String[] backWords \u003d back.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e endWords \u003d new ArrayList\u003c\u003e(Arrays.asList(backWords).subList(1, backWords.length));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jibtaf"},"content":" String end \u003d String.join(\" \", endWords);","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"jibtaf"},"content":" LocalDateTime from \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jibtaf"},"content":" LocalDateTime to \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jibtaf"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jibtaf"},"content":" from \u003d LocalDateTime.parse(start);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jibtaf"},"content":" to \u003d LocalDateTime.parse(end);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jibtaf"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jibtaf"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"Please enter your times in the following format:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"yyyy-mm-dd hhmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jibtaf"},"content":" System.out.println(\"E.g. 2019-10-15 1800\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jibtaf"},"content":" return new Event(des, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"jibtaf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"jibtaf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"jibtaf"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":73}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" * A class encapsulating tasks.","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":" * Returns the status icon depending on whether the task is done.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":" * @return \"X\" if the task is done; \" \" otherwise.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jibtaf"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jibtaf"},"content":" return this.isDone ? \"X\" : \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jibtaf"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jibtaf"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jibtaf"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jibtaf"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jibtaf"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"jibtaf"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"jibtaf"},"content":" * Returns the string representation of a task.","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"jibtaf"},"content":" * @return string representation of a task.","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"jibtaf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"jibtaf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"jibtaf"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":43}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":" * Generates a Todo with description given in the input.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":" * @param input input entered by user.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jibtaf"},"content":" * @return a Todo.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jibtaf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jibtaf"},"content":" public static Todo generateTodoFromInput(String input) throws EmptyTodoDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jibtaf"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jibtaf"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jibtaf"},"content":" throw new EmptyTodoDescriptionException(","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jibtaf"},"content":" Action.HORIZONTAL_LINE + \"\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jibtaf"},"content":" \"You did not provide any description to this Todo.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jibtaf"},"content":" \"To add a Todo, enter \\\"todo \u003cdescription\u003e\\\".\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jibtaf"},"content":" Action.HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jibtaf"},"content":" ArrayList\u003cString\u003e desWords \u003d new ArrayList\u003c\u003e(Arrays.asList(words).subList(1, words.length));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jibtaf"},"content":" String des \u003d String.join(\" \", desWords);","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jibtaf"},"content":" return new Todo(des);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jibtaf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jibtaf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"jibtaf"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":38}},{"path":"src/main/java/WrongDataFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"public class WrongDataFormatException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" public WrongDataFormatException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" super(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jibtaf":5}},{"path":"src/main/java/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":"todo","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":"todo eat breakfast","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":"deadline","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"deadline finish week2 quiz /by tomorrow","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":"mark 1","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":"mark 2","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":"unmark 2","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":"event zoom meeting /from 1900 /to 2000","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":"delete 1","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":"bye","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jibtaf":16}},{"path":"src/main/java/output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":" ____ _ _ _____ _____ _ ","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":" | _ \\ | | | / ____| / ____| | |","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":" | |_) | ___| | | | | _ _ _ ____ _____ | | __ ___ __| |","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":" | _ \u003c / _ \\ | | | | | | | | \u0027__\\ \\ / / _ \\ | | |_ |/ _ \\ / _` |","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":" | |_) | __/ | | | |___| |_| | | \\ V / __/ | |__| | (_) | (_| |","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":" |____/ \\___|_|_| \\_____\\__,_|_| \\_/ \\___| \\_____|\\___/ \\__,_|","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":"Hello! I\u0027m Bell Curve God.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":"What can I do for you?","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":"You did not provide any description to this Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jibtaf"},"content":"To add a Todo, enter \"todo \u003cdescription\u003e\".","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jibtaf"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jibtaf"},"content":"[T][ ] eat breakfast","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jibtaf"},"content":"Now you have 1 tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jibtaf"},"content":"You did not provide any description to this Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jibtaf"},"content":"To add a Deadline, enter \"deadline \u003cdescription\u003e /by \u003cdeadline\u003e\".","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jibtaf"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jibtaf"},"content":"[D][ ] finish week2 quiz (by: tomorrow)","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jibtaf"},"content":"Now you have 2 tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jibtaf"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jibtaf"},"content":"1.[T][ ] eat breakfast","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jibtaf"},"content":"2.[D][ ] finish week2 quiz (by: tomorrow)","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jibtaf"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jibtaf"},"content":"[T][X] eat breakfast","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jibtaf"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jibtaf"},"content":"1.[T][X] eat breakfast","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jibtaf"},"content":"2.[D][ ] finish week2 quiz (by: tomorrow)","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jibtaf"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jibtaf"},"content":"[D][X] finish week2 quiz (by: tomorrow)","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jibtaf"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jibtaf"},"content":"1.[T][X] eat breakfast","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jibtaf"},"content":"2.[D][X] finish week2 quiz (by: tomorrow)","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jibtaf"},"content":"OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jibtaf"},"content":"[D][ ] finish week2 quiz (by: tomorrow)","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jibtaf"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jibtaf"},"content":"[E][ ] zoom meeting (from: 1900 to: 2000)","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jibtaf"},"content":"Now you have 3 tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jibtaf"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"jibtaf"},"content":"1.[T][X] eat breakfast","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"jibtaf"},"content":"2.[D][ ] finish week2 quiz (by: tomorrow)","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"jibtaf"},"content":"3.[E][ ] zoom meeting (from: 1900 to: 2000)","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"jibtaf"},"content":"Noted. I\u0027ve removed this task:","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"jibtaf"},"content":"[T][X] eat breakfast","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"jibtaf"},"content":"Now you have 2 tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"jibtaf"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"jibtaf"},"content":"1.[D][ ] finish week2 quiz (by: tomorrow)","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"jibtaf"},"content":"2.[E][ ] zoom meeting (from: 1900 to: 2000)","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"jibtaf"},"content":"Bye. Hope to see you again soon!","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"jibtaf"},"content":"____________________________________________________________","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jibtaf":83}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jibtaf"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jibtaf"},"content":"todo eat breakfast","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jibtaf"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jibtaf"},"content":"deadline finish week2 quiz /by tomorrow","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jibtaf"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jibtaf"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jibtaf"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jibtaf"},"content":"event zoom meeting /from 1900 /to 2000","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jibtaf"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jibtaf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jibtaf"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jibtaf":16}}] diff --git a/jibtaf_ip_master/commits.json b/jibtaf_ip_master/commits.json index f92ed4db..b3cda619 100644 --- a/jibtaf_ip_master/commits.json +++ b/jibtaf_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jibtaf":[{"date":"2023-08-23","commitResults":[{"hash":"be3eee06b9b5fc096b5f190d0a5bc50099f5b658","isMergeCommit":false,"messageTitle":"Complete Level 0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"9be56a023031444d81fda78ca7f578eb3763e186","isMergeCommit":false,"messageTitle":"Complete Level 1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":1}}},{"hash":"c5bf49e26620097e939e01fe4ce579b3a28d6924","isMergeCommit":false,"messageTitle":"Complete Level 2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":6}}},{"hash":"a15d50fa072ef0bc628d262b9e61dbe2e886fa8a","isMergeCommit":false,"messageTitle":"Complete Level 3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":5}}},{"hash":"a3c6c18c8a68980b9ebd4f26131b44f2d3a2ad86","isMergeCommit":false,"messageTitle":"Complete Level 4: ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":2}}},{"hash":"4e17b87d3261cfedeb90e3d5e85a4510bda21d87","isMergeCommit":false,"messageTitle":"Complete Level 5: Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":7}}},{"hash":"1aaae92dfc529dfb3f70d763309d29ed3b3acc31","isMergeCommit":false,"messageTitle":"Complete Level 6: Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"a655e6ff3e85334af87681bf556d8c1aee3653c0","isMergeCommit":false,"messageTitle":"Complete I/O redirection Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0},"sh":{"insertions":0,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"jibtaf":{"java":378,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":16}},"authorContributionVariance":{"jibtaf":27011.25},"authorDisplayNameMap":{"jibtaf":"CS2103T-W12-2 HE Y..IFAN"}} +{"authorDailyContributionsMap":{"jibtaf":[{"date":"2023-08-23","commitResults":[{"hash":"be3eee06b9b5fc096b5f190d0a5bc50099f5b658","isMergeCommit":false,"messageTitle":"Complete Level 0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"9be56a023031444d81fda78ca7f578eb3763e186","isMergeCommit":false,"messageTitle":"Complete Level 1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":1}}},{"hash":"c5bf49e26620097e939e01fe4ce579b3a28d6924","isMergeCommit":false,"messageTitle":"Complete Level 2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":6}}},{"hash":"a15d50fa072ef0bc628d262b9e61dbe2e886fa8a","isMergeCommit":false,"messageTitle":"Complete Level 3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":5}}},{"hash":"a3c6c18c8a68980b9ebd4f26131b44f2d3a2ad86","isMergeCommit":false,"messageTitle":"Complete Level 4: ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":2}}},{"hash":"4e17b87d3261cfedeb90e3d5e85a4510bda21d87","isMergeCommit":false,"messageTitle":"Complete Level 5: Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":7}}},{"hash":"1aaae92dfc529dfb3f70d763309d29ed3b3acc31","isMergeCommit":false,"messageTitle":"Complete Level 6: Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"a655e6ff3e85334af87681bf556d8c1aee3653c0","isMergeCommit":false,"messageTitle":"Complete I/O redirection Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0},"sh":{"insertions":0,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"3bf51ce4cd9baab796225ff77f1590c26d25881d","isMergeCommit":false,"messageTitle":"Complete save feature","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":101,"deletions":0},"java":{"insertions":178,"deletions":27}}},{"hash":"995fa483ce9a4fda7d0c4d72a73f66906f3d5155","isMergeCommit":false,"messageTitle":"Delete unused imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}},{"hash":"a20066b9f9a4038c91c58f0c66c107e79fcb3aca","isMergeCommit":false,"messageTitle":"Format Dates and Time","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":62,"deletions":27}}},{"hash":"aa91e6daacb8e6d887d1005299d7d310c0edd5c5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jibtaf":{"java":561,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":115}},"authorContributionVariance":{"jibtaf":20488.596},"authorDisplayNameMap":{"jibtaf":"CS2103T-W12-2 HE Y..IFAN"}} diff --git a/jingjie88_ip_master/authorship.json b/jingjie88_ip_master/authorship.json index a96b6eac..1dd79792 100644 --- a/jingjie88_ip_master/authorship.json +++ b/jingjie88_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":" mainClass.set(\"monke.Monke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jingjie88":1,"-":41}},{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"D | 0 | do iP | 2023-12-23 1600","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"T | 0 | kms","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"D | 1 | do iP again | 2023-11-23 1530","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"E | 0 | meeting | 2pm | 30m","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":4}},{"path":"src/main/java/monke/Monke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"public class Monke {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" public Monke(String filepath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" this.storage \u003d new Storage(filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":"// Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":"// String fullCommand \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":" c.execute(ui, storage, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":" ui.print(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":"// sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jingjie88"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jingjie88"},"content":" new Monke(\"./data/tasks.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":48}},{"path":"src/main/java/monke/MonkeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"public class MonkeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":" public MonkeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingjie88":7}},{"path":"src/main/java/monke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.commands.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" private enum CommandWord {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" MARK(\"mark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" TODO(\"todo\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" DEADLINE(\"deadline\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" EVENT(\"event\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" EXIT(\"bye\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" private final String word;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" CommandWord(String word) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":" this.word \u003d word;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" public static Task parseLoadedData(String data) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":" String[] tmp \u003d data.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":" String taskType \u003d tmp[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":" String isDone \u003d tmp[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":" String description \u003d tmp[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":" Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":" String dateString \u003d tmp[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":" LocalDateTime date \u003d LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jingjie88"},"content":" task \u003d new Deadline(description, date);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jingjie88"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jingjie88"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jingjie88"},"content":" String start \u003d tmp[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jingjie88"},"content":" String end \u003d tmp[4];","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jingjie88"},"content":" task \u003d new Event(description, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jingjie88"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jingjie88"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"Invalid file data\");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jingjie88"},"content":" if (isDone.equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"jingjie88"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jingjie88"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"jingjie88"},"content":" public static Command parse(String fullCommand) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"jingjie88"},"content":" String[] temp \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"jingjie88"},"content":" String command \u003d temp[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"jingjie88"},"content":" String args \u003d temp.length \u003e 1 ? temp[1] : \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"jingjie88"},"content":" switch (command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"jingjie88"},"content":" case ListCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"jingjie88"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"jingjie88"},"content":" case MarkCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"jingjie88"},"content":" return new MarkCommand(args);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"jingjie88"},"content":" case UnmarkCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"jingjie88"},"content":" return new UnmarkCommand(args);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"jingjie88"},"content":" case TodoCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"jingjie88"},"content":" return parseTodo(args);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"jingjie88"},"content":" case DeadlineCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"jingjie88"},"content":" return Parser.parseDeadline(args);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"jingjie88"},"content":" case EventCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"jingjie88"},"content":" return Parser.parseEvent(args);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"jingjie88"},"content":" case DeleteCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"jingjie88"},"content":" return new DeleteCommand(args);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"jingjie88"},"content":" case ExitCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"jingjie88"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"jingjie88"},"content":" default: {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA??!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"jingjie88"},"content":" public static TodoCommand parseTodo(String args) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"jingjie88"},"content":" if (args.isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"jingjie88"},"content":" return new TodoCommand(args);","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"jingjie88"},"content":" public static DeadlineCommand parseDeadline(String args) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"jingjie88"},"content":" String[] tmp \u003d args.split(\" /by \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"jingjie88"},"content":" if (tmp.length \u003c 2 || tmp[0].isBlank() || tmp[1].isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"You must format your deadline like this:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /by \u003cdeadline\u003e\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"jingjie88"},"content":" String description \u003d tmp[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"jingjie88"},"content":" String dateString \u003d tmp[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"jingjie88"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"jingjie88"},"content":" LocalDateTime date \u003d LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"jingjie88"},"content":" return new DeadlineCommand(description, date);","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"jingjie88"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"Format your deadline in yyyy-MM-dd HHmm format\");","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"jingjie88"},"content":" public static EventCommand parseEvent(String args) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"jingjie88"},"content":" String[] tmp \u003d args.split(\" /from \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"jingjie88"},"content":" String description \u003d tmp[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"jingjie88"},"content":" if (tmp.length \u003c 2 || tmp[0].isBlank() || tmp[1].isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"You must format your event like this:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\");","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"jingjie88"},"content":" String[] tmp2 \u003d tmp[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"jingjie88"},"content":" if (tmp2.length \u003c 2 || tmp2[0].isBlank() || tmp2[1].isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"You must format your event like this:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\");","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"jingjie88"},"content":" String start \u003d tmp2[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"jingjie88"},"content":" String end \u003d tmp2[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"jingjie88"},"content":" return new EventCommand(description, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":134}},{"path":"src/main/java/monke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" String filepath;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" public Storage(String filepath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" public ArrayList\u003cTask\u003e load() throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" File f \u003d new File(filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" Task task \u003d Parser.parseLoadedData(s.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"Could not load tasks\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":" public void saveData(TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":" FileWriter fw \u003d new FileWriter(filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" StringBuilder textToAdd \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":" for (Task task: tasks.toList()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":" textToAdd.append(task.formatData());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":" fw.write(textToAdd.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"Could not open file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":45}},{"path":"src/main/java/monke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" public void add(Task task) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" public void deleteFromList(String taskNum) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" int n \u003d Integer.parseInt(taskNum);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":" if (n \u003e this.tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! Your number is out of range. :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":" this.tasks.remove(n - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! You must provide a number from the list. :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":" public Task getTask(String taskNum) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":" int n \u003d Integer.parseInt(taskNum);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":" if (n \u003e this.tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! Your number is out of range. :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":" return tasks.get(n - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! You must provide a number from the list. :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jingjie88"},"content":" public List\u003cTask\u003e toList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jingjie88"},"content":" return this.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jingjie88"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jingjie88"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":54}},{"path":"src/main/java/monke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" public void print(String msg) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" System.out.println(\"\\t\" + msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" this.print(\"Hello, I\u0027m Monke. OOGA BOOGA!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" this.print(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" this.printHorizontalLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" if (sc.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":" String fullCommand \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":" return fullCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":" sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" return \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":" public void printHorizontalLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":" for (int i \u003d 0; i \u003c 100; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":" System.out.print(\"_\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":" System.out.println();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":" public void displayList(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":" List\u003cTask\u003e tasks \u003d taskList.toList();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":" this.print((i + 1) + \". \" + tasks.get(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jingjie88"},"content":" public void showAddTask(Task task, int tasksSize) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jingjie88"},"content":" this.print(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jingjie88"},"content":" this.print(\"\\t\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jingjie88"},"content":" this.print(\"Now you have \" + tasksSize + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jingjie88"},"content":" public void printExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jingjie88"},"content":" this.print(\"Bye. Hope to see you again soon! OOGA BOOGA!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":56}},{"path":"src/main/java/monke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.MonkeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import monke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import monke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" public abstract void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":14}},{"path":"src/main/java/monke/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import monke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"deadline\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" public DeadlineCommand(String description, LocalDateTime date) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" Deadline deadline \u003d new Deadline(this.description, this.date);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" storage.saveData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" ui.showAddTask(deadline, tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":25}},{"path":"src/main/java/monke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" private String taskNumber;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" public DeleteCommand(String taskNumber) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" tasks.deleteFromList(this.taskNumber);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" ui.print(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" ui.print(\"\\t\" + tasks.getTask(this.taskNumber));","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" storage.saveData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" ui.print(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":19}},{"path":"src/main/java/monke/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"event\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" private String start;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" private String end;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" public EventCommand(String description, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" Event event \u003d new Event(this.description, this.start, this.end);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" storage.saveData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" ui.showAddTask(event, tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":25}},{"path":"src/main/java/monke/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.MonkeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import monke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import monke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"bye\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" ui.printExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":18}},{"path":"src/main/java/monke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" ui.displayList(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":11}},{"path":"src/main/java/monke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" private String taskNumber;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" public MarkCommand(String taskNumber) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" Task task \u003d tasks.getTask(this.taskNumber);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" storage.saveData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" ui.print(\"Ooga booga! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" ui.print(\"\\t\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":22}},{"path":"src/main/java/monke/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.MonkeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import monke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"import monke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"todo\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" Todo todo \u003d new Todo(this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" storage.saveData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" ui.showAddTask(todo, tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":24}},{"path":"src/main/java/monke/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" private String taskNumber;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" public UnmarkCommand(String taskNumber) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" Task task \u003d tasks.getTask(this.taskNumber);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" storage.saveData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" ui.print(\"Ooga booga! I\u0027ve marked this task as undone:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" ui.print(\"\\t\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":20}},{"path":"src/main/java/monke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" public Deadline(String description, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" this.date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\")));","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" public String formatData() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" return String.format(\"D | %d | %s | %s\\n\", this.isDone ? 1 : 0,","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" this.description, this.date.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingjie88":24}},{"path":"src/main/java/monke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":" private String start;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":" private String end;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.start, this.end);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" public String formatData() {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" return String.format(\"E | %d | %s | %s | %s\\n\", this.isDone ? 1 : 0, this.description, this.start, this.end);","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingjie88":21}},{"path":"src/main/java/monke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" public void mark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" public void unmark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" public abstract String formatData();","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingjie88":30}},{"path":"src/main/java/monke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" public String formatData() {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" return String.format(\"T | %d | %s\\n\", this.isDone ? 1 : 0, this.description);","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingjie88":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"deadline finish project /by August 23rd","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"event project meeting /from June 6th 3pm /to 5pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"event study /from Monday 9am /to 10am","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":"unmark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":"mark","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":"unmark","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":"mark 10","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":"event","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":"deadline do something","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":"event do something","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":"event do something /from 2pm","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":"delete 1","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":"delete 4","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":"delete 10","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":"delete not a number","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":"event do something /from /to","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":"event do something /from /to 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":"event do something /from 2pm /to","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":"event do some","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":"deadline do something /by","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":"deadline /by do something","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":"event do something /from /to","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":"deadline do something2 /by","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":"deadline /by 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":"event /from 2pm /to 3pm","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":"event study/from2pm/to3pm","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":"deadline submit assignment/by 3pm","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingjie88":42}},{"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":"jingjie88"},"content":"REM run the program, feed monke.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"jingjie88":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":"jingjie88"},"content":"# run the program, feed monke.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":"java -classpath ../bin Monke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"jingjie88":2,"-":36}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":" mainClass.set(\"monke.Monke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" archiveBaseName \u003d \"monke\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":" archiveFileName \u003d \u0027monke.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jingjie88":4,"-":40}},{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"D | 0 | do iP | 2023-12-23 1600","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"T | 0 | kms","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"D | 1 | do iP again | 2023-11-23 1530","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"E | 0 | meeting | 2pm | 30m","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"T | 0 | asdasdasdasdkl","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jingjie88":5}},{"path":"src/main/java/monke/Monke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"public class Monke {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" public Monke(String filepath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" this.storage \u003d new Storage(filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":"// Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":"// String fullCommand \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":" c.execute(ui, storage, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":" ui.print(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":"// sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jingjie88"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jingjie88"},"content":" new Monke(\"./data/tasks.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":48}},{"path":"src/main/java/monke/MonkeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"public class MonkeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":" public MonkeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingjie88":7}},{"path":"src/main/java/monke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.commands.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" public static Task parseLoadedData(String data) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" String[] tmp \u003d data.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" String taskType \u003d tmp[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" String isDone \u003d tmp[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" String description \u003d tmp[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":" String dateString \u003d tmp[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" LocalDateTime date \u003d LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":" task \u003d new Deadline(description, date);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":" String start \u003d tmp[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":" String end \u003d tmp[4];","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":" task \u003d new Event(description, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"Invalid file data\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":" if (isDone.equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jingjie88"},"content":" public static Command parse(String fullCommand) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jingjie88"},"content":" String[] temp \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jingjie88"},"content":" String command \u003d temp[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jingjie88"},"content":" String args \u003d temp.length \u003e 1 ? temp[1] : \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jingjie88"},"content":" switch (command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jingjie88"},"content":" case ListCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jingjie88"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jingjie88"},"content":" case MarkCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jingjie88"},"content":" return parseMark(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jingjie88"},"content":" case UnmarkCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jingjie88"},"content":" return parseUnmark(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"jingjie88"},"content":" case TodoCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"jingjie88"},"content":" return parseTodo(args);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"jingjie88"},"content":" case DeadlineCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"jingjie88"},"content":" return parseDeadline(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"jingjie88"},"content":" case EventCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"jingjie88"},"content":" return parseEvent(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"jingjie88"},"content":" case DeleteCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"jingjie88"},"content":" return parseDelete(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"jingjie88"},"content":" case ExitCommand.COMMAND_WORD: {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"jingjie88"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"jingjie88"},"content":" default: {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA??!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"jingjie88"},"content":" public static MarkCommand parseMark(String args) throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"jingjie88"},"content":" if (args.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! Please provide a list number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"jingjie88"},"content":" Integer.parseInt(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"jingjie88"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! Please provide a list number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"jingjie88"},"content":" return new MarkCommand(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"jingjie88"},"content":" public static UnmarkCommand parseUnmark(String args) throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"jingjie88"},"content":" if (args.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! Please provide a list number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"jingjie88"},"content":" Integer.parseInt(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"jingjie88"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! Please provide a list number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"jingjie88"},"content":" return new UnmarkCommand(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"jingjie88"},"content":" public static TodoCommand parseTodo(String args) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"jingjie88"},"content":" if (args.isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"jingjie88"},"content":" return new TodoCommand(args);","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"jingjie88"},"content":" public static DeadlineCommand parseDeadline(String args) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"jingjie88"},"content":" String[] tmp \u003d args.split(\" /by \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"jingjie88"},"content":" if (tmp.length \u003c 2 || tmp[0].isBlank() || tmp[1].isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"You must format your deadline like this:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /by \u003cdeadline\u003e\");","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"jingjie88"},"content":" String description \u003d tmp[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"jingjie88"},"content":" String dateString \u003d tmp[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"jingjie88"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"jingjie88"},"content":" LocalDateTime date \u003d LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"jingjie88"},"content":" return new DeadlineCommand(description, date);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"jingjie88"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"Format your deadline in yyyy-MM-dd HHmm format\");","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"jingjie88"},"content":" public static EventCommand parseEvent(String args) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"jingjie88"},"content":" String[] tmp \u003d args.split(\" /from \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"jingjie88"},"content":" String description \u003d tmp[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"jingjie88"},"content":" if (tmp.length \u003c 2 || tmp[0].isBlank() || tmp[1].isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"You must format your event like this:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\");","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"jingjie88"},"content":" String[] tmp2 \u003d tmp[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"jingjie88"},"content":" if (tmp2.length \u003c 2 || tmp2[0].isBlank() || tmp2[1].isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"You must format your event like this:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\");","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"jingjie88"},"content":" String start \u003d tmp2[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"jingjie88"},"content":" String end \u003d tmp2[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"jingjie88"},"content":" return new EventCommand(description, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"jingjie88"},"content":" public static DeleteCommand parseDelete(String args) throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"jingjie88"},"content":" if (args.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! Please provide a list number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"jingjie88"},"content":" Integer.parseInt(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"jingjie88"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! Please provide a list number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"jingjie88"},"content":" return new DeleteCommand(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":155}},{"path":"src/main/java/monke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" String filepath;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" public Storage(String filepath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" public ArrayList\u003cTask\u003e load() throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" File f \u003d new File(filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" Task task \u003d Parser.parseLoadedData(s.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"Could not load tasks\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":" public void saveData(TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":" FileWriter fw \u003d new FileWriter(filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" StringBuilder textToAdd \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":" for (Task task: tasks.toList()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":" textToAdd.append(task.formatData());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":" fw.write(textToAdd.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"Could not open file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":45}},{"path":"src/main/java/monke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" public void add(Task task) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" public void delete(String taskNum) throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" int n \u003d Integer.parseInt(taskNum);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":" if (n \u003e this.tasks.size() || n \u003c\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! Your number is out of range. :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":" this.tasks.remove(n - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! You must provide a number from the list. :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":" public Task getTask(String taskNum) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":" int n \u003d Integer.parseInt(taskNum);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":" if (n \u003e this.tasks.size() || n \u003c\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! Your number is out of range. :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":" return tasks.get(n - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":" throw new MonkeException(\"OOGA BOOGA!! You must provide a number from the list. :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jingjie88"},"content":" public List\u003cTask\u003e toList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jingjie88"},"content":" return this.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jingjie88"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jingjie88"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":54}},{"path":"src/main/java/monke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" public void print(String msg) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" System.out.println(\"\\t\" + msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" this.print(\"Hello, I\u0027m Monke. OOGA BOOGA!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" this.print(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" this.printHorizontalLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" if (sc.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":" String fullCommand \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":" return fullCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":" sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" return \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":" public void printHorizontalLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":" for (int i \u003d 0; i \u003c 100; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":" System.out.print(\"_\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":" System.out.println();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":" public void displayList(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":" List\u003cTask\u003e tasks \u003d taskList.toList();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":" this.print((i + 1) + \". \" + tasks.get(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jingjie88"},"content":" public void showAddTask(Task task, int tasksSize) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jingjie88"},"content":" this.print(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jingjie88"},"content":" this.print(\"\\t\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jingjie88"},"content":" this.print(\"Now you have \" + tasksSize + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jingjie88"},"content":" public void printExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jingjie88"},"content":" this.print(\"Bye. Hope to see you again soon! OOGA BOOGA!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":56}},{"path":"src/main/java/monke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.MonkeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import monke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import monke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" public abstract void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":14}},{"path":"src/main/java/monke/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import monke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"deadline\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" public DeadlineCommand(String description, LocalDateTime date) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" Deadline deadline \u003d new Deadline(this.description, this.date);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" storage.saveData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" ui.showAddTask(deadline, tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":25}},{"path":"src/main/java/monke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" private String taskNumber;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" public DeleteCommand(String taskNumber) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" tasks.delete(this.taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" ui.print(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" ui.print(\"\\t\" + tasks.getTask(this.taskNumber));","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" storage.saveData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" ui.print(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":19}},{"path":"src/main/java/monke/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"event\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" private String start;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" private String end;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" public EventCommand(String description, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" Event event \u003d new Event(this.description, this.start, this.end);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" storage.saveData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" ui.showAddTask(event, tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":25}},{"path":"src/main/java/monke/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.MonkeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import monke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import monke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"bye\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" ui.printExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":18}},{"path":"src/main/java/monke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" ui.displayList(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":11}},{"path":"src/main/java/monke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" private String taskNumber;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" public MarkCommand(String taskNumber) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" Task task \u003d tasks.getTask(this.taskNumber);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" storage.saveData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" ui.print(\"Ooga booga! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" ui.print(\"\\t\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":22}},{"path":"src/main/java/monke/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.MonkeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import monke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"import monke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"todo\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" Todo todo \u003d new Todo(this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" storage.saveData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" ui.showAddTask(todo, tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":24}},{"path":"src/main/java/monke/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" private String taskNumber;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" public UnmarkCommand(String taskNumber) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" public void execute(Ui ui, Storage storage, TaskList tasks) throws MonkeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" Task task \u003d tasks.getTask(this.taskNumber);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" storage.saveData(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" ui.print(\"Ooga booga! I\u0027ve marked this task as undone:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" ui.print(\"\\t\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jingjie88":20}},{"path":"src/main/java/monke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" public Deadline(String description, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" this.date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\")));","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" public String formatData() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" return String.format(\"D | %d | %s | %s\\n\", this.isDone ? 1 : 0,","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" this.description, this.date.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingjie88":24}},{"path":"src/main/java/monke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":" private String start;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":" private String end;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.start, this.end);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" public String formatData() {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" return String.format(\"E | %d | %s | %s | %s\\n\", this.isDone ? 1 : 0, this.description, this.start, this.end);","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingjie88":21}},{"path":"src/main/java/monke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" public void mark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" public void unmark() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" public abstract String formatData();","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingjie88":30}},{"path":"src/main/java/monke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" public String formatData() {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" return String.format(\"T | %d | %s\\n\", this.isDone ? 1 : 0, this.description);","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingjie88":17}},{"path":"src/test/java/monke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import monke.commands.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import static monke.Parser.parse;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":" // List command tests","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":" @Test public void parse_correctListCommand_success() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"list\") instanceof ListCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" // Mark command tests","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" public void parse_correctMarkCommand_success() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"mark 1\") instanceof MarkCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" public void parse_markCommandWithoutListNumber_exceptionThrown() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"mark\") instanceof MarkCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":" } catch(MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"OOGA BOOGA!! Please provide a list number\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":" public void parse_MarkCommandNotNumber_exceptionThrown() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"mark hello\") instanceof MarkCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"OOGA BOOGA!! Please provide a list number\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":" // Unmark command tests","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jingjie88"},"content":" public void parse_correctUnmarkCommand_success() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"unmark 1\") instanceof UnmarkCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jingjie88"},"content":" public void parse_unmarkCommandWithoutListNumber_exceptionThrown() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"unmark\") instanceof UnmarkCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jingjie88"},"content":" } catch(MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"OOGA BOOGA!! Please provide a list number\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jingjie88"},"content":" public void parse_unmarkCommandNotNumber_exceptionThrown() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"unmark hello\") instanceof UnmarkCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"OOGA BOOGA!! Please provide a list number\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"jingjie88"},"content":" // Todo command tests","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"jingjie88"},"content":" public void parse_correctTodoCommand_success() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"todo test\") instanceof TodoCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"jingjie88"},"content":" public void parse_emptyTodo_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"todo\") instanceof TodoCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"OOGA BOOGA!! The description of a todo cannot be empty.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"jingjie88"},"content":" public void parse_whitespaceAfterTodo_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"todo \") instanceof TodoCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"OOGA BOOGA!! The description of a todo cannot be empty.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"jingjie88"},"content":" // Deadline command tests","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"jingjie88"},"content":" public void parse_correctDeadlineCommand_success() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"deadline do ip /by 2024-09-12 1200\") instanceof DeadlineCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"jingjie88"},"content":" public void parse_emptyDeadline_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"deadline\") instanceof DeadlineCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"You must format your deadline like this:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /by \u003cdeadline\u003e\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"jingjie88"},"content":" @Test public void parse_deadlineWithNoBy_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"deadline do ip\") instanceof DeadlineCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"You must format your deadline like this:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /by \u003cdeadline\u003e\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"jingjie88"},"content":" public void parse_deadlineWithIncorrectDateFormat_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"deadline do ip /by monday\") instanceof TodoCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"Format your deadline in yyyy-MM-dd HHmm format\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"jingjie88"},"content":" public void parse_deadlineWithNoTask_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"deadline /by 2024-12-03\") instanceof TodoCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"You must format your deadline like this:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /by \u003cdeadline\u003e\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"jingjie88"},"content":" // Event command tests","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"jingjie88"},"content":" public void parse_correctEventCommand_success() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"event do ip /from 2pm /to 4pm\") instanceof EventCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"jingjie88"},"content":" public void parse_EmptyEvent_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"event\") instanceof EventCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"You must format your event like this:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"jingjie88"},"content":" public void parse_eventWithoutTime_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"event do ip\") instanceof EventCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"You must format your event like this:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"jingjie88"},"content":" public void parse_eventWithFromButNoTo_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"event do ip /from 2pm\") instanceof EventCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"You must format your event like this:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"jingjie88"},"content":" public void parse_eventWithToButNoFrom_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"event do ip /to 4pm\") instanceof EventCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"You must format your event like this:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"jingjie88"},"content":" public void parse_eventArgumentsInWrongOrder_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"event do ip /to 4pm /from 2pm\") instanceof EventCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"You must format your event like this:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"jingjie88"},"content":" public void parse_eventNoTask_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"event /to 4pm /from 2pm\") instanceof EventCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"You must format your event like this:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"jingjie88"},"content":" \"\\t\\tdeadline \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"jingjie88"},"content":" // Delete command tests","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"jingjie88"},"content":" public void parse_correctDeleteCommand_success() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"delete 1\") instanceof DeleteCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"jingjie88"},"content":" public void parse_deleteCommandNoNumber_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"delete\") instanceof DeleteCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"OOGA BOOGA!! Please provide a list number\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"jingjie88"},"content":" public void parse_deleteCommandNotNumber_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"delete hello\") instanceof DeleteCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"OOGA BOOGA!! Please provide a list number\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"jingjie88"},"content":" // Exit command tests","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"jingjie88"},"content":" public void parse_correctExitCommand_success() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"jingjie88"},"content":" assertTrue(parse(\"bye\") instanceof ExitCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jingjie88":244}},{"path":"src/test/java/monke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"package monke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"import org.junit.jupiter.api.BeforeAll;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"import monke.tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":" private Todo taskOne;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":" private Todo taskTwo;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":" private Todo taskThree;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":" public void init() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":" this.taskOne \u003d new Todo(\"task 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":" this.taskTwo \u003d new Todo(\"task 2\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":" this.taskThree \u003d new Todo(\"task 3\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":" tasks.add(taskOne);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":" tasks.add(taskTwo);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":" tasks.add(taskThree);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":" public void getTask_numbersWithinRange_success() throws MonkeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":" assertEquals(taskOne, tasks.getTask(\"1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":" assertEquals(taskTwo, tasks.getTask(\"2\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":" assertEquals(taskThree, tasks.getTask(\"3\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":" public void getTask_zeroInput_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":" assertEquals(taskOne, tasks.getTask(\"0\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"OOGA BOOGA!! Your number is out of range. :(\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jingjie88"},"content":" public void getTask_numberMoreThanListLength_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jingjie88"},"content":" tasks.getTask(\"4\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jingjie88"},"content":" assertEquals(taskOne, tasks.getTask(\"5\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jingjie88"},"content":" assertEquals(taskOne, tasks.getTask(\"6\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jingjie88"},"content":" assertEquals(taskOne, tasks.getTask(\"1000\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jingjie88"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"OOGA BOOGA!! Your number is out of range. :(\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jingjie88"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jingjie88"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jingjie88"},"content":" public void getTask_negativeNumber_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jingjie88"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"jingjie88"},"content":" assertEquals(taskOne, tasks.getTask(\"-1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jingjie88"},"content":" } catch (MonkeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"jingjie88"},"content":" assertEquals(\"OOGA BOOGA!! Your number is out of range. :(\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"jingjie88"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"jingjie88"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jingjie88":70}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jingjie88"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jingjie88"},"content":"deadline finish project /by August 23rd","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jingjie88"},"content":"event project meeting /from June 6th 3pm /to 5pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jingjie88"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingjie88"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingjie88"},"content":"event study /from Monday 9am /to 10am","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingjie88"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jingjie88"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jingjie88"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingjie88"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingjie88"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingjie88"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jingjie88"},"content":"unmark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jingjie88"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jingjie88"},"content":"mark","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jingjie88"},"content":"unmark","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jingjie88"},"content":"mark 10","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jingjie88"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jingjie88"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jingjie88"},"content":"event","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jingjie88"},"content":"deadline do something","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jingjie88"},"content":"event do something","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":"event do something /from 2pm","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jingjie88"},"content":"delete 1","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jingjie88"},"content":"delete 4","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jingjie88"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jingjie88"},"content":"delete 10","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jingjie88"},"content":"delete not a number","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jingjie88"},"content":"event do something /from /to","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"jingjie88"},"content":"event do something /from /to 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jingjie88"},"content":"event do something /from 2pm /to","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jingjie88"},"content":"event do some","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"jingjie88"},"content":"deadline do something /by","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"jingjie88"},"content":"deadline /by do something","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"jingjie88"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"jingjie88"},"content":"event do something /from /to","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jingjie88"},"content":"deadline do something2 /by","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"jingjie88"},"content":"deadline /by 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"jingjie88"},"content":"event /from 2pm /to 3pm","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"jingjie88"},"content":"event study/from2pm/to3pm","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"jingjie88"},"content":"deadline submit assignment/by 3pm","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"jingjie88"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingjie88":42}},{"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":"jingjie88"},"content":"REM run the program, feed monke.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"jingjie88":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":"jingjie88"},"content":"# run the program, feed monke.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jingjie88"},"content":"java -classpath ../bin Monke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"jingjie88":2,"-":36}}] diff --git a/jingjie88_ip_master/commits.json b/jingjie88_ip_master/commits.json index c4a0789b..0dd3b791 100644 --- a/jingjie88_ip_master/commits.json +++ b/jingjie88_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jingjie88":[{"date":"2023-08-29","commitResults":[{"hash":"6f2988a977faa0d467745a1463cc6c6541943695","isMergeCommit":false,"messageTitle":"Add greet and bye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}},{"hash":"019de4473bf4d0cccdfc844778e726520cb09501","isMergeCommit":false,"messageTitle":"Add echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":6}}},{"hash":"374994e0f3e8adfd7d8644ef2f7c4844c5a0c26c","isMergeCommit":false,"messageTitle":"Add list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":4}}},{"hash":"577e4e348a397326dc828cdec425a5ba46378ecb","isMergeCommit":false,"messageTitle":"Add mark as done feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":9}}},{"hash":"7cb14dd801a39cb90ff197848fa2bdc637e73dde","isMergeCommit":false,"messageTitle":"Add todo, event, deadline features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":22}}},{"hash":"996b917257a4a2f2f53426a59b810bf318473cea","isMergeCommit":false,"messageTitle":"Add UI tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"5139b5af25e72f5f0a973177efd96ca32a50945e","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":1},"java":{"insertions":96,"deletions":48}}},{"hash":"33764e2ddf756b37ad59b5442311d9989236eeea","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":45,"deletions":34}}},{"hash":"0180a681e51f201fd49c857d5fa0cb7b38566534","isMergeCommit":false,"messageTitle":"Add enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":8}}},{"hash":"a4812b383b6829c45f8108811aa2514d03de65e3","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":10,"deletions":6}}},{"hash":"45f8a3cd04f5b7c1f490479face2ed5684bbe1f4","isMergeCommit":false,"messageTitle":"Add save and load task data automatically","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":94,"deletions":5}}},{"hash":"64d7fcacb34e6a5fc22fc494f2d95ebba10d87f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"2c59c2a6d4a3f2a884dffa0cede0324fb07d509e","isMergeCommit":false,"messageTitle":"Add dates to deadline","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":3},"java":{"insertions":15,"deletions":5}}},{"hash":"a0126b0e4ee918bfddfa5b2d166a024c74ce32c0","isMergeCommit":false,"messageTitle":"Add handling of times for deadline","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":16,"deletions":8}}}]},{"date":"2023-08-30","commitResults":[{"hash":"aa8533a979c137b1809e10edb78a4007f9d15ee1","isMergeCommit":false,"messageTitle":"Fix bug where datetime is stored in data incorrectly","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":1,"deletions":1}}},{"hash":"1b0d8cb1f4636075caecf5362f71e5d8e6b59b86","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"445e9fafabf803ef64f34c64598d9ba881a876b2","isMergeCommit":false,"messageTitle":"Refactor code to use more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":523,"deletions":273},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"93445aff9d0f28cb3c46e14a8217279132c4605c","isMergeCommit":false,"messageTitle":"Organize code into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":7}}},{"hash":"eba95d1b5547c9352c221e530b883d51b6ca1287","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"73f50770d6e2b0708bb5aa085edf35261fb63fe3","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":0,"deletions":10}}}]}]},"authorFileTypeContributionMap":{"jingjie88":{"java":614,"md":0,"fxml":0,"sh":2,"bat":1,"gradle":1,"txt":46}},"authorContributionVariance":{"jingjie88":77010.67},"authorDisplayNameMap":{"jingjie88":"CS2103T-T11-2 TAN .. JIE"}} +{"authorDailyContributionsMap":{"jingjie88":[{"date":"2023-08-29","commitResults":[{"hash":"6f2988a977faa0d467745a1463cc6c6541943695","isMergeCommit":false,"messageTitle":"Add greet and bye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}},{"hash":"019de4473bf4d0cccdfc844778e726520cb09501","isMergeCommit":false,"messageTitle":"Add echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":6}}},{"hash":"374994e0f3e8adfd7d8644ef2f7c4844c5a0c26c","isMergeCommit":false,"messageTitle":"Add list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":4}}},{"hash":"577e4e348a397326dc828cdec425a5ba46378ecb","isMergeCommit":false,"messageTitle":"Add mark as done feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":9}}},{"hash":"7cb14dd801a39cb90ff197848fa2bdc637e73dde","isMergeCommit":false,"messageTitle":"Add todo, event, deadline features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":22}}},{"hash":"996b917257a4a2f2f53426a59b810bf318473cea","isMergeCommit":false,"messageTitle":"Add UI tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"5139b5af25e72f5f0a973177efd96ca32a50945e","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":1},"java":{"insertions":96,"deletions":48}}},{"hash":"33764e2ddf756b37ad59b5442311d9989236eeea","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":45,"deletions":34}}},{"hash":"0180a681e51f201fd49c857d5fa0cb7b38566534","isMergeCommit":false,"messageTitle":"Add enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":8}}},{"hash":"a4812b383b6829c45f8108811aa2514d03de65e3","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":10,"deletions":6}}},{"hash":"45f8a3cd04f5b7c1f490479face2ed5684bbe1f4","isMergeCommit":false,"messageTitle":"Add save and load task data automatically","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":94,"deletions":5}}},{"hash":"64d7fcacb34e6a5fc22fc494f2d95ebba10d87f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"2c59c2a6d4a3f2a884dffa0cede0324fb07d509e","isMergeCommit":false,"messageTitle":"Add dates to deadline","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":3},"java":{"insertions":15,"deletions":5}}},{"hash":"a0126b0e4ee918bfddfa5b2d166a024c74ce32c0","isMergeCommit":false,"messageTitle":"Add handling of times for deadline","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":16,"deletions":8}}}]},{"date":"2023-08-30","commitResults":[{"hash":"aa8533a979c137b1809e10edb78a4007f9d15ee1","isMergeCommit":false,"messageTitle":"Fix bug where datetime is stored in data incorrectly","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":1,"deletions":1}}},{"hash":"1b0d8cb1f4636075caecf5362f71e5d8e6b59b86","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"445e9fafabf803ef64f34c64598d9ba881a876b2","isMergeCommit":false,"messageTitle":"Refactor code to use more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":523,"deletions":273},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"93445aff9d0f28cb3c46e14a8217279132c4605c","isMergeCommit":false,"messageTitle":"Organize code into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":7}}},{"hash":"eba95d1b5547c9352c221e530b883d51b6ca1287","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"73f50770d6e2b0708bb5aa085edf35261fb63fe3","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":0,"deletions":10}}}]},{"date":"2023-09-01","commitResults":[{"hash":"36327cc8f48c3748cf9a4a42bd99b9b5185ac92c","isMergeCommit":false,"messageTitle":"Add unit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":359,"deletions":24}}},{"hash":"4d1fe5d080e892f114c5dd2d7d088c2fa475a44a","isMergeCommit":false,"messageTitle":"Add jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"jingjie88":{"java":949,"md":0,"fxml":0,"sh":2,"bat":1,"gradle":4,"txt":47}},"authorContributionVariance":{"jingjie88":76567.53},"authorDisplayNameMap":{"jingjie88":"CS2103T-T11-2 TAN .. JIE"}} diff --git a/jingyu987_ip_master/authorship.json b/jingyu987_ip_master/authorship.json index b110c1e6..0e44d52d 100644 --- a/jingyu987_ip_master/authorship.json +++ b/jingyu987_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":" private String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":" return \"[D]\" + super.toString() + \"(by:\" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jingyu987":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":" private String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":" private String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" return \"[E]\" + super.toString() + \"(from:\" + from + \"to:\" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jingyu987":15}},{"path":"src/main/java/Fishron.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"import java.util.List;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"public class Fishron {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" private String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":" private List\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":" public Fishron(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" public void greet() {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Hello! I\u0027m \" + name);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" public void farewell() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" storage.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" public void listTasks() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" for (int i \u003d 0; i \u003c storage.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":" Task task \u003d storage.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" int count \u003d i + 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" System.out.println(count + \".\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" public void markTaskAsDone(int Index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" if (Index \u003e\u003d 1 \u0026\u0026 Index \u003c\u003d storage.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" Task task \u003d storage.get(Index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" public void unmarkTask(int Index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" if (Index \u003e\u003d 1 \u0026\u0026 Index \u003c\u003d storage.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" Task task \u003d storage.get(Index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" task.markAsUndone();","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" if (index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d storage.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" Task removedTask \u003d storage.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" System.out.println(\" \" + removedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":" String botName \u003d \"Fishron\";","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" Fishron chatBot \u003d new Fishron(botName);","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":" chatBot.greet();","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" String input;","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":" do {","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":" if (input.toLowerCase().startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"jingyu987"},"content":" String[] parts \u003d input.split(\"todo\");","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":" throw new FishronException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"jingyu987"},"content":" chatBot.addTask(new ToDo(parts[1]));","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"jingyu987"},"content":" } else if (input.toLowerCase().startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"jingyu987"},"content":" String[] parts \u003d input.split(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"jingyu987"},"content":" if (parts.length !\u003d 2 || parts[1].isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"jingyu987"},"content":" throw new FishronException(\"☹ OOPS!!! Please provide a valid deadline format.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"jingyu987"},"content":" chatBot.addTask(new Deadline(parts[0].split(\"deadline\")[1], parts[1]));","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"jingyu987"},"content":" } else if (input.toLowerCase().startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"jingyu987"},"content":" String[] parts \u003d input.split(\"/from|/to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"jingyu987"},"content":" if (parts.length !\u003d 3 || parts[1].isEmpty() || parts[2].isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"jingyu987"},"content":" throw new FishronException(\"☹ OOPS!!! Please provide a valid event format.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"jingyu987"},"content":" chatBot.addTask(new Event(parts[0].split(\"event\")[1], parts[1], parts[2]));","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"jingyu987"},"content":" } else if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"jingyu987"},"content":" chatBot.listTasks();","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"jingyu987"},"content":" } else if (input.toLowerCase().startsWith(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"jingyu987"},"content":" int taskIndex \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"jingyu987"},"content":" chatBot.markTaskAsDone(taskIndex);","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"jingyu987"},"content":" } else if (input.toLowerCase().startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"jingyu987"},"content":" int taskIndex \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"jingyu987"},"content":" chatBot.unmarkTask(taskIndex);","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"jingyu987"},"content":" } else if (input.toLowerCase().startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"jingyu987"},"content":" int taskIndex \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"jingyu987"},"content":" chatBot.deleteTask(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"jingyu987"},"content":" } else if (!input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"jingyu987"},"content":" throw new FishronException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"jingyu987"},"content":" } catch (FishronException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"jingyu987"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"jingyu987"},"content":" } while (!input.equalsIgnoreCase(\"bye\")) ;","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"jingyu987"},"content":" chatBot.farewell();","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingyu987":135}},{"path":"src/main/java/FishronException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"class FishronException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":" public FishronException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jingyu987":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" return description;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingyu987":31}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jingyu987":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"todo Read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"deadline Return book /by June 6th","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"event Project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"delete 3","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jingyu987":8}},{"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":"jingyu987"},"content":"java -classpath ..\\bin Fishron \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"jingyu987":1,"-":20}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" private LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":" public Deadline(String description, String by) throws FishronException {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":" this.by \u003d LocalDateTime.parse(by, DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" throw new FishronException(\"☹ OOPS!!! Please provide a valid date/time format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" return \"D | \" + super.toFileString() + \" | \" + by.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mma\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jingyu987":25}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":" public Event(String description, String from, String to) throws FishronException {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" this.from \u003d LocalDateTime.parse(from, DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" this.to \u003d LocalDateTime.parse(to, DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" throw new FishronException(\"☹ OOPS!!! Please provide a valid date/time format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" return \"E | \" + super.toFileString() + \" | \" + from.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\")) + \" | \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" to.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mma\")) + \" to: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mma\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jingyu987":29}},{"path":"src/main/java/Fishron.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"import java.util.List;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":"public class Fishron {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":" private String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" private List\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" public Fishron(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" public void greet() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Hello! I\u0027m \" + name);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" public void farewell() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" storage.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"jingyu987"},"content":" public void listTasks() {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"jingyu987"},"content":" for (int i \u003d 0; i \u003c storage.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"jingyu987"},"content":" Task task \u003d storage.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"jingyu987"},"content":" int count \u003d i + 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"jingyu987"},"content":" System.out.println(count + \".\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"jingyu987"},"content":" public void markTaskAsDone(int Index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"jingyu987"},"content":" if (Index \u003e\u003d 1 \u0026\u0026 Index \u003c\u003d storage.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"jingyu987"},"content":" Task task \u003d storage.get(Index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"jingyu987"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"jingyu987"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"jingyu987"},"content":" public void unmarkTask(int Index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"jingyu987"},"content":" if (Index \u003e\u003d 1 \u0026\u0026 Index \u003c\u003d storage.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"jingyu987"},"content":" Task task \u003d storage.get(Index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"jingyu987"},"content":" task.markAsUndone();","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"jingyu987"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"jingyu987"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"jingyu987"},"content":" if (index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d storage.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"jingyu987"},"content":" Task removedTask \u003d storage.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"jingyu987"},"content":" System.out.println(\" \" + removedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"jingyu987"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"jingyu987"},"content":" public void saveTasksToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"jingyu987"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"jingyu987"},"content":" PrintWriter printWriter \u003d new PrintWriter(\"./data/fishron.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"jingyu987"},"content":" for (Task task : storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"jingyu987"},"content":" printWriter.println(task.toFileString());","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"jingyu987"},"content":" printWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"jingyu987"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"Error saving tasks to file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"jingyu987"},"content":" public void loadTasksFromFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"jingyu987"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"jingyu987"},"content":" File file \u003d new File(\"./data/fishron.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"jingyu987"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"jingyu987"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"jingyu987"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"jingyu987"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"jingyu987"},"content":" if (parts.length \u003e\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"jingyu987"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"jingyu987"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"jingyu987"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"jingyu987"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"jingyu987"},"content":" ToDo todo \u003d new ToDo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"jingyu987"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"jingyu987"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"jingyu987"},"content":" storage.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"jingyu987"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"jingyu987"},"content":" String by \u003d parts[3];","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"jingyu987"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"jingyu987"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"jingyu987"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"jingyu987"},"content":" storage.add(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"jingyu987"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"jingyu987"},"content":" String from \u003d parts[3];","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"jingyu987"},"content":" String to \u003d parts[4];","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"jingyu987"},"content":" Event event \u003d new Event(description, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"jingyu987"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"jingyu987"},"content":" event.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"jingyu987"},"content":" storage.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"jingyu987"},"content":" scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"jingyu987"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"No saved tasks found.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"jingyu987"},"content":" } catch (FishronException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"jingyu987"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"jingyu987"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"jingyu987"},"content":" String botName \u003d \"Fishron\";","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"jingyu987"},"content":" Fishron chatBot \u003d new Fishron(botName);","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"jingyu987"},"content":" chatBot.loadTasksFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"jingyu987"},"content":" chatBot.greet();","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"jingyu987"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"jingyu987"},"content":" String input;","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"jingyu987"},"content":" do {","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"jingyu987"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"jingyu987"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"jingyu987"},"content":" if (input.toLowerCase().startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"jingyu987"},"content":" String[] parts \u003d input.split(\"todo\");","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"jingyu987"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"jingyu987"},"content":" throw new FishronException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"jingyu987"},"content":" chatBot.addTask(new ToDo(parts[1].trim()));","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"jingyu987"},"content":" } else if (input.toLowerCase().startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"jingyu987"},"content":" String[] parts \u003d input.split(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"jingyu987"},"content":" if (parts.length !\u003d 2 || parts[1].trim().isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"jingyu987"},"content":" throw new FishronException(\"☹ OOPS!!! Please provide a valid deadline format.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"jingyu987"},"content":" chatBot.addTask(new Deadline(parts[0].split(\"deadline\")[1].trim(), parts[1].trim()));","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"jingyu987"},"content":" } else if (input.toLowerCase().startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"jingyu987"},"content":" String[] parts \u003d input.split(\"/from|/to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"jingyu987"},"content":" if (parts.length !\u003d 3 || parts[1].trim().isEmpty() || parts[2].trim().isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"jingyu987"},"content":" throw new FishronException(\"☹ OOPS!!! Please provide a valid event format.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"jingyu987"},"content":" chatBot.addTask(new Event(parts[0].split(\"event\")[1].trim(), parts[1].trim(), parts[2].trim()));","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"jingyu987"},"content":" } else if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"jingyu987"},"content":" chatBot.listTasks();","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"jingyu987"},"content":" } else if (input.toLowerCase().startsWith(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"jingyu987"},"content":" int taskIndex \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"jingyu987"},"content":" chatBot.markTaskAsDone(taskIndex);","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"jingyu987"},"content":" } else if (input.toLowerCase().startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"jingyu987"},"content":" int taskIndex \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"jingyu987"},"content":" chatBot.unmarkTask(taskIndex);","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"jingyu987"},"content":" } else if (input.toLowerCase().startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"jingyu987"},"content":" int taskIndex \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"jingyu987"},"content":" chatBot.deleteTask(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"jingyu987"},"content":" } else if (!input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"jingyu987"},"content":" throw new FishronException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"jingyu987"},"content":" } catch (FishronException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"jingyu987"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":194,"author":{"gitId":"jingyu987"},"content":" } while (!input.equalsIgnoreCase(\"bye\")) ;","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"jingyu987"},"content":" chatBot.saveTasksToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"jingyu987"},"content":" chatBot.farewell();","lastModifiedDate":"2023-08-23"},{"lineNumber":197,"author":{"gitId":"jingyu987"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":198,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingyu987":200}},{"path":"src/main/java/FishronException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"class FishronException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":" public FishronException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jingyu987":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jingyu987"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jingyu987"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jingyu987"},"content":" return (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jingyu987"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jingyu987"},"content":" return description;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jingyu987"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jingyu987"},"content":" return (isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jingyu987"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jingyu987"},"content":" return getStatusIcon() + \" \" + getDescription();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jingyu987":35}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":" return \"T | \" + super.toFileString();","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jingyu987"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jingyu987"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jingyu987"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jingyu987"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jingyu987"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jingyu987"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jingyu987":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jingyu987"},"content":"todo Read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jingyu987"},"content":"deadline Return book /by June 6th","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jingyu987"},"content":"event Project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jingyu987"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jingyu987"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jingyu987"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jingyu987"},"content":"delete 3","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jingyu987"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jingyu987":8}},{"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":"jingyu987"},"content":"java -classpath ..\\bin Fishron \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"jingyu987":1,"-":20}}] diff --git a/jingyu987_ip_master/commits.json b/jingyu987_ip_master/commits.json index da19f931..ff7fed3f 100644 --- a/jingyu987_ip_master/commits.json +++ b/jingyu987_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jingyu987":[{"date":"2023-08-23","commitResults":[{"hash":"e4d0ddcb2e3c600658d8ef7524b783ce7a9d2def","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit (a) Give your chatbot a new name, to differentiate it from the placeholder name Duke.","messageBody":"(b) Implement an initial skeletal version of the it that simply greets the user and exits.\nExample:\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":0}}},{"hash":"8f9bc1333933e4892f51c92d64cf64c0a92f271b","isMergeCommit":false,"messageTitle":"Level 1. Echo Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"02f2b5b29e462d793962ce601eb3bf2607872f96","isMergeCommit":false,"messageTitle":"Level 2. Add, List Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":4}}},{"hash":"916a81fda29c76314ccdbeaec2d0e135f7d121b0","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":5}}}]},{"date":"2023-08-24","commitResults":[{"hash":"dd418e8375f6d6fd94776bdfe0a5d0079f7cbaa5","isMergeCommit":false,"messageTitle":"Level 4/5. ToDos, Events, Deadlines Add support for tracking three types of tasks:","messageBody":"ToDos: tasks without any date/time attached to it e.g., visit new theme park\nDeadlines: tasks that need to be done before a specific date/time e.g., submit report by 11/10/2019 5pm\nEvents: tasks that start at a specific date/time and ends at a specific date/time\ne.g., (a) team project meeting 2/10/2019 2-4pm (b) orientation week 4/10/2019 to 11/10/2019\n\nHandle Errors\nTeach the chatbot to deal with errors such as incorrect inputs entered by the user.\n","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":7},"bat":{"insertions":1,"deletions":1}}},{"hash":"8138bcc47d9ca01abf10b6c771daff83ecc27e42","isMergeCommit":false,"messageTitle":"Level 6. Delete Add support for deleting tasks from the list. Added more error handling as well.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":16}}},{"hash":"b10218e10aec097fd3addc23d99d8088d889762e","isMergeCommit":false,"messageTitle":"A-TextUiTesting ↳ Test using the I/O redirection technique","messageBody":"Use the input/output redirection technique to semi-automate the testing of Duke.\n","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":5,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"jingyu987":{"java":209,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":8}},"authorContributionVariance":{"jingyu987":4411.551},"authorDisplayNameMap":{"jingyu987":"CS2103T-T15-2 HUAN..G YU"}} +{"authorDailyContributionsMap":{"jingyu987":[{"date":"2023-08-23","commitResults":[{"hash":"e4d0ddcb2e3c600658d8ef7524b783ce7a9d2def","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit (a) Give your chatbot a new name, to differentiate it from the placeholder name Duke.","messageBody":"(b) Implement an initial skeletal version of the it that simply greets the user and exits.\nExample:\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":0}}},{"hash":"8f9bc1333933e4892f51c92d64cf64c0a92f271b","isMergeCommit":false,"messageTitle":"Level 1. Echo Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"02f2b5b29e462d793962ce601eb3bf2607872f96","isMergeCommit":false,"messageTitle":"Level 2. Add, List Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":4}}},{"hash":"916a81fda29c76314ccdbeaec2d0e135f7d121b0","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":5}}}]},{"date":"2023-08-24","commitResults":[{"hash":"dd418e8375f6d6fd94776bdfe0a5d0079f7cbaa5","isMergeCommit":false,"messageTitle":"Level 4/5. ToDos, Events, Deadlines Add support for tracking three types of tasks:","messageBody":"ToDos: tasks without any date/time attached to it e.g., visit new theme park\nDeadlines: tasks that need to be done before a specific date/time e.g., submit report by 11/10/2019 5pm\nEvents: tasks that start at a specific date/time and ends at a specific date/time\ne.g., (a) team project meeting 2/10/2019 2-4pm (b) orientation week 4/10/2019 to 11/10/2019\n\nHandle Errors\nTeach the chatbot to deal with errors such as incorrect inputs entered by the user.\n","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":7},"bat":{"insertions":1,"deletions":1}}},{"hash":"8138bcc47d9ca01abf10b6c771daff83ecc27e42","isMergeCommit":false,"messageTitle":"Level 6. Delete Add support for deleting tasks from the list. Added more error handling as well.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":16}}},{"hash":"b10218e10aec097fd3addc23d99d8088d889762e","isMergeCommit":false,"messageTitle":"A-TextUiTesting ↳ Test using the I/O redirection technique","messageBody":"Use the input/output redirection technique to semi-automate the testing of Duke.\n","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":5,"deletions":5}}}]},{"date":"2023-09-01","commitResults":[{"hash":"9efbcc1da18f6accd275259d491280b8338f22b2","isMergeCommit":false,"messageTitle":"Add Increments as branches: Level-7, Level-8 Do Level 7 in a branch named branch-Level-7. Here are the steps: Start a branch branch-Level-7. Implement Level 7 while committing to that branch at appropriate points, Merge the branch back to the master branch (remember to create a merge commit i.e., no fast-forward). Git tag the merge commit in the master branch as usual (i.e., add the tag Level-7). Push the master branch, push the branch-Level-7, and push the tag, to your fork. Advanced git users: do not delete the branch after merging. Only merged branches are detected by the script. After merging a branch b1 to the master branch, you need to push both the master and the b1 branches to the fork. Pushing the master branch does not automatically take the b1 branch along with it just because it is already merged to the master branch.","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":80,"deletions":2}}},{"hash":"8362648db4a871bcb76fd3f76c0e865fe68065c9","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times Teach the chatbot how to understand dates and times. For example, if the command is deadline return book /by 2/12/2019 1800, the chatbot should understand 2/12/2019 1800 as 2nd of December 2019, 6pm, instead of treating it as just a String.","messageBody":"Minimal: Store deadline dates as a java.time.LocalDate (or java.time.LocalDateTime) in your task objects. Accept dates in a format such as yyyy-mm-dd format (e.g., 2019-10-15) and print in a different format such as MMM dd yyyy e.g., (Oct 15 2019).\nStretch goal: Use dates and times in more meaningful ways. e.g., add a command to print deadlines/events occurring on a specific date.\n","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":40,"deletions":19}}}]}]},"authorFileTypeContributionMap":{"jingyu987":{"java":308,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":8}},"authorContributionVariance":{"jingyu987":3425.3604},"authorDisplayNameMap":{"jingyu987":"CS2103T-T15-2 HUAN..G YU"}} diff --git a/jinyuan0425_ip_master/authorship.json b/jinyuan0425_ip_master/authorship.json index 8cc65172..662052e2 100644 --- a/jinyuan0425_ip_master/authorship.json +++ b/jinyuan0425_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"plugins {","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":" id \u0027java\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":" id \u0027application\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"repositories {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" mavenCentral()","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"dependencies {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":"test {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" useJUnitPlatform()","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" testLogging {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" showExceptions true","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" showCauses true","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" showStackTraces true","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":"application {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":"shadowJar {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":"run{","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" standardInput \u003d System.in","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":42}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" public Duke(String filePath) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" this.tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" ui.greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" String fullCommand \u003d ui.scan();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" } catch (DukeException | IOException | DateTimeParseException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" public static void main(String[] args) throws DukeException, FileNotFoundException {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jinyuan0425":38,"-":3}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" private String type;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" private String task;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" public AddCommand(String type, String task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" public AddCommand(String type, String task, LocalDateTime deadline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" public AddCommand(String type, String task, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" Task tasking \u003d new Todo(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" tasks.addTask(tasking);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" ui.showTaskAdded(tasking, tasks.getSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" Task tasking \u003d new Deadline(task,deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" tasks.addTask(tasking);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" ui.showTaskAdded(tasking, tasks.getSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" Task tasking \u003d new Event(task, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" tasks.addTask(tasking);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" ui.showTaskAdded(tasking, tasks.getSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" return isExit;","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":62}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":12}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"public class ExitCommand extends Command{","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" private boolean isExit;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" public ExitCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" this.isExit \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" };","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" ui.thank();","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" return isExit;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":23}},{"path":"src/main/java/duke/command/ModifyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"public class ModifyCommand extends Command{","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" private String type;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" public ModifyCommand(String type, int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" this.index \u003d index - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" if (type.equals(\"L\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" ui.showList(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" if (type.equals(\"M\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" tasks.mark(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" ui.showTaskCompleted(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" } else if (type.equals(\"U\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" tasks.unmark(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" ui.showTaskUnmarked(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" tasks.delete(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" ui.showTaskDeleted(task, tasks.getSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"I\u0027m afraid such a task do not exist.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" return isExit;","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" public String getType() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" return type;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" public int getIndex() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" return index;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":55}},{"path":"src/main/java/duke/components/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":" public DukeException(String msg) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":" super(msg);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jinyuan0425":7}},{"path":"src/main/java/duke/components/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.ModifyCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.AddCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" public static Command parse(String input) throws DukeException, IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" String[] commandInput \u003d input.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" String command \u003d commandInput[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" return new ModifyCommand(\"L\", 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"M\";","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" int index \u003d Integer.valueOf(commandInput[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" return new ModifyCommand(type, index);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"unmark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"U\";","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" int index \u003d Integer.valueOf(commandInput[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" return new ModifyCommand(type, index);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"T\";","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" String[] task \u003d getTask(type, input);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" return new AddCommand(type, task[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"D\";","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" String[] task \u003d getTask(type, input);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" return new AddCommand(type, task[0], parseDateTime(task[1]));","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"E\";","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" String[] task \u003d getTask(type, input);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" return new AddCommand(type, task[0], parseDateTime(task[1]), parseDateTime(task[2]));","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"D\";","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" int index \u003d Integer.valueOf(commandInput[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" return new ModifyCommand(type, index);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"I\u0027m afraid I do not quite understand. Could you kindly repeat it?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"Could you repeat that last part? I did not quite catch it.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" public static String[] getTask(String type, String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" return new String[] {input.substring(5)};","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" String deadline \u003d input.substring(9);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" return deadline.split(\" /by \");","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" String details \u003d input.substring(6);","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" String[] taskStartEnd \u003d details.split(\" /from \");","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" String[] startEnd \u003d taskStartEnd[1].split(\" /to \");","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":" return new String[] {taskStartEnd[0], startEnd[0], startEnd[1]};","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" return new String[] {};","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"jinyuan0425"},"content":" public static LocalDateTime parseDateTime(String dateTimeStr) throws DukeException{","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"jinyuan0425"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"jinyuan0425"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"jinyuan0425"},"content":" return LocalDateTime.parse(dateTimeStr, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"jinyuan0425"},"content":" } catch (DateTimeParseException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"I\u0027m afraid I do not quite understand. Please input the date and time\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"jinyuan0425"},"content":" \"as follows:\\nd/M/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":76}},{"path":"src/main/java/duke/components/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" public ArrayList\u003cTask\u003e loadTasks() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" createFileIfNotExist(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(filePath))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" Task task \u003d parseTask(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" } catch (IOException | DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"There must be an error. I can\u0027t seem to locate the file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" } catch (IOException | DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"There must be an error. I can\u0027t seem to locate the file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" private void createFileIfNotExist(String filePath) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" File parentDirectory \u003d file.getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" if (parentDirectory !\u003d null \u0026\u0026 !parentDirectory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" parentDirectory.mkdirs(); // Recursively create directories if they don\u0027t exist","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" writer.write(task.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":" writer.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"Error saving tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"jinyuan0425"},"content":" private Task parseTask(String taskData) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"jinyuan0425"},"content":" String[] parts \u003d taskData.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"jinyuan0425"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"jinyuan0425"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"jinyuan0425"},"content":" String taskDescription \u003d parts[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"jinyuan0425"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"jinyuan0425"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"jinyuan0425"},"content":" return new Todo(taskDescription, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"jinyuan0425"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime deadline \u003d Parser.parseDateTime(parts[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"jinyuan0425"},"content":" return new Deadline(taskDescription, deadline, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"jinyuan0425"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime start \u003d Parser.parseDateTime(parts[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime end \u003d Parser.parseDateTime(parts[4]);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"jinyuan0425"},"content":" return new Event(taskDescription, start, end, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"jinyuan0425"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"jinyuan0425"},"content":" return null; // Invalid task type","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":89}},{"path":"src/main/java/duke/components/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" private static ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" public static String mark(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" if (isValidIndex(index)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" tasks.get(index).setDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" return \"Congratulations on finishing the task. I will now mark it as complete:\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" tasks.get(index).toString()+ \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" } else { // Index error","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"I\u0027m afraid the task does not exist. \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" \"Perhaps you might want to see your list again?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" public static String unmark(int index) throws DukeException{","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" if (isValidIndex(index)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" tasks.get(index).setNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" return \"No worries. I will now mark it as incomplete:\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" tasks.get(index).toString() + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" } else { // Index error","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"I\u0027m afraid the task does not exist. \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" \"Perhaps you might want to see your list again?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" public void delete(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" if (isValidIndex(index)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" public static ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" public static Task getTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" public static int getSize() {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" return tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" public static String list() {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" String result \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) { // Generates the String representation of the list","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":" result +\u003d i + 1 + \". \" + tasks.get(i) + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" if (result !\u003d \"Here are the tasks in your list:\\n\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" return result;","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":" } else { // Empty list","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"jinyuan0425"},"content":" return \"There is nothing on your list currently. \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"jinyuan0425"},"content":" \"Perhaps you might want to add a new task?\";","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"jinyuan0425"},"content":" private static boolean isValidIndex(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"jinyuan0425"},"content":" return index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":76}},{"path":"src/main/java/duke/components/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" public void greet() { // Greets user on initialisation","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"Good day to you, I\u0027m ButlerBot.\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" \"How may I be of service to you?\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" public void thank() { // Exits the Bot","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"Goodbye and have a nice day.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" public String scan() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" public void showError(String error) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" System.err.println(\"Error: \" + error);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" public void showTaskAdded(Task task, int totalTasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"Understood, I have added the following task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"You now have \" + totalTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" public void showTaskCompleted(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"Congratulations on finishing the task!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"I will now mark it as complete:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" public void showTaskUnmarked(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"No worries. I will now mark the task as incomplete:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" public void showTaskDeleted(Task task, int totalTasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"Understood, I will remove the following task from your list:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"You now have \" + totalTasks + \" tasks remaining.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" public void showList(TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(taskList.list());","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":56}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" public Deadline(String description, LocalDateTime by, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" String output \u003d by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, h:mm a\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" return \"[D]\" + super.toString() + \" (by: \" + output + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" public String write() {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" String output \u003d by.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" return \"D | \" + super.write() + \" | \" + output;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" return by;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jinyuan0425":33}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" String outputFrom \u003d from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, h:mm a\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" String outputTo \u003d to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, h:mm a\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" return \"[E]\" + super.toString() + \" (from: \" + outputFrom + \" to: \" + outputTo + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" public String write() {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" String outputFrom \u003d from.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" String outputTo \u003d to.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" return \"E | \" + super.write() + \" | \" + outputFrom + \" | \" + outputTo;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" return from;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" return to;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jinyuan0425":42}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" public void setDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" public void setNotDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" public String write() {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" String complete \u003d isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" return complete + \" | \" + this.description;","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" return isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" return description;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jinyuan0425":42}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" public String write() {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" return \"T | \" + super.write();","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jinyuan0425":19}},{"path":"src/test/java/duke/components/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.ModifyCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" public void testParseExitCommand() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" Command command \u003d Parser.parse(\"bye\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(command instanceof ExitCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" public void testParseListCommand() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" Command command \u003d Parser.parse(\"list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(command instanceof ModifyCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"L\", ((ModifyCommand) command).getType());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(-1, ((ModifyCommand) command).getIndex());","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" public void testParseMarkCommand() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" Command command \u003d Parser.parse(\"mark 2\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(command instanceof ModifyCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"M\", ((ModifyCommand) command).getType());","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(1, ((ModifyCommand) command).getIndex());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" // Similarly, add test cases for other commands like \"unmark\", \"todo\", \"deadline\", \"event\", \"delete\"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" // Ensure to cover different scenarios, valid and invalid inputs","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" public void testParseInvalidCommand() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" Parser.parse(\"invalidcommand\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" public void testParseDateTimeWithValidInput() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime dateTime \u003d Parser.parseDateTime(\"1/9/2023 1430\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(LocalDateTime.of(2023, 9, 1, 14, 30), dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" public void testParseDateTimeWithInvalidInput() {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" Parser.parseDateTime(\"invalidDateTime\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jinyuan0425":59}},{"path":"src/test/java/duke/tasks/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" public void testConstructorAndGetters() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime by \u003d LocalDateTime.of(2023, 9, 1, 14, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" Deadline deadline \u003d new Deadline(\"Submit report\", by);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Submit report\", deadline.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" assertFalse(deadline.isDone());","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(by, deadline.getBy());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" public void testToString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime by \u003d LocalDateTime.of(2023, 9, 1, 14, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" Deadline deadline \u003d new Deadline(\"Submit report\", by);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[D][ ] Submit report (by: Sep 1 2023, 2:00 PM)\", deadline.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" Deadline completedDeadline \u003d new Deadline(\"Finish project\", by, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[D][X] Finish project (by: Sep 1 2023, 2:00 PM)\", completedDeadline.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime wrongTime \u003d LocalDateTime.of(2023, 9, 1, 14, 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" public void testWrite() {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime by \u003d LocalDateTime.of(2023, 9, 1, 14, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" Deadline deadline \u003d new Deadline(\"Submit report\", by);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"D | 0 | Submit report | 1/9/2023 1400\", deadline.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" Deadline completedDeadline \u003d new Deadline(\"Finish project\", by, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"D | 1 | Finish project | 1/9/2023 1400\", completedDeadline.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":45}},{"path":"src/test/java/duke/tasks/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"public class EventTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" public void testConstructorAndGetters() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime from \u003d LocalDateTime.of(2023, 8, 31, 10, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime to \u003d LocalDateTime.of(2023, 8, 31, 12, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" Event event \u003d new Event(\"Meeting\", from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Meeting\", event.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" assertFalse(event.isDone());","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(from, event.getFrom());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(to, event.getTo());","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" public void testToString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime from \u003d LocalDateTime.of(2023, 8, 31, 10, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime to \u003d LocalDateTime.of(2023, 8, 31, 12, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" Event event \u003d new Event(\"Meeting\", from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[E][ ] Meeting (from: Aug 31 2023, 10:00 AM to: Aug 31 2023, 12:00 PM)\", event.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" Event completedEvent \u003d new Event(\"Conference\", from, to, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[E][X] Conference (from: Aug 31 2023, 10:00 AM to: Aug 31 2023, 12:00 PM)\",","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" completedEvent.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" public void testWrite() {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime from \u003d LocalDateTime.of(2023, 8, 31, 10, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime to \u003d LocalDateTime.of(2023, 8, 31, 12, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" Event event \u003d new Event(\"Meeting\", from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"E | 0 | Meeting | 31/8/2023 1000 | 31/8/2023 1200\", event.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" Event completedEvent \u003d new Event(\"Conference\", from, to, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"E | 1 | Conference | 31/8/2023 1000 | 31/8/2023 1200\", completedEvent.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":46}},{"path":"src/test/java/duke/tasks/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"public class TaskTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" public void testConstructorAndGetters() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" Task task \u003d new Task(\"Buy groceries\");","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Buy groceries\", task.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" assertFalse(task.isDone());","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" Task completedTask \u003d new Task(\"Finish assignment\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Finish assignment\", completedTask.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(completedTask.isDone());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" public void testSetDoneAndSetNotDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" Task task \u003d new Task(\"Read a book\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" assertFalse(task.isDone());","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" task.setDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(task.isDone());","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" task.setNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" assertFalse(task.isDone());","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" public void testStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" Task undoneTask \u003d new Task(\"Walk the dog\");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\" \", undoneTask.getStatusIcon());","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" Task doneTask \u003d new Task(\"Clean the room\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"X\", doneTask.getStatusIcon());","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" public void testToString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" Task task \u003d new Task(\"Finish report\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[ ] Finish report\", task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" Task completedTask \u003d new Task(\"Submit application\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[X] Submit application\", completedTask.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" public void testWrite() {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" Task task \u003d new Task(\"Call a friend\");","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"0 | Call a friend\", task.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" Task completedTask \u003d new Task(\"Go for a run\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"1 | Go for a run\", completedTask.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":59}},{"path":"src/test/java/duke/tasks/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" public void testConstructorAndGetters() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" Todo todo \u003d new Todo(\"Buy groceries\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Buy groceries\", todo.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" assertFalse(todo.isDone());","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" Todo completedTodo \u003d new Todo(\"Finish assignment\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Finish assignment\", completedTodo.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(completedTodo.isDone());","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" public void testToString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" Todo todo \u003d new Todo(\"Read a book\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[T][ ] Read a book\", todo.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" Todo completedTodo \u003d new Todo(\"Clean the room\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[T][X] Clean the room\", completedTodo.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" public void testWrite() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" Todo todo \u003d new Todo(\"Call a friend\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"T | 0 | Call a friend\", todo.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" Todo completedTodo \u003d new Todo(\"Go for a run\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"T | 1 | Go for a run\", completedTodo.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":37}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"T | 0 | Automate ButlerBot","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"D | 0 | CS2103T Individual Project | 30/8/2023 1900","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"E | 0 | Birthday Celebration! | 31/8/2023 1900 | 30/8/2023 2100","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"T | 1 | Mark this","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"todo Automate ButlerBot","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"deadline CS2103T Individual Project /by 30/8/2023 1900","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"event Birthday Celebration! /from 31/8/2023 1900 /to 30/8/2023 2100","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"todo Delete this","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"todo Mark this","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"mark 5","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"delete 4","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jinyuan0425":10}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"plugins {","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":" id \u0027java\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":" id \u0027application\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"repositories {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" mavenCentral()","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"dependencies {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":"test {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" useJUnitPlatform()","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" testLogging {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" showExceptions true","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" showCauses true","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" showStackTraces true","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":"application {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":"shadowJar {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":"run{","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" standardInput \u003d System.in","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":42}},{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"T | 0 | math test","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"D | 0 | math homework | 20/9/2023 2100","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jinyuan0425":2}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" * Contains the main method to be executed.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" * storage contains the instance of the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" * tasks contain the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" * ui contains the instance of the user interface.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for the Duke class. Instantiates the","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" * storage with the filePath.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" * @param filePath Contains the path to the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException If filePath is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" public Duke(String filePath) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" this.tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" * Method scans for user input and terminates on command \"bye\".","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" ui.greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" String fullCommand \u003d ui.scan();","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" } catch (DukeException | IOException | DateTimeParseException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jinyuan0425":59,"-":3}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" * Class of commands that adds to the existing list.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" * type contains the type of the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" * task contains the name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" * deadline contains the by of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" * from contains the start of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" * to contains the end of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" * isExit contains whether to terminate the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" private String type;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" private String task;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for AddCommand.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" * @param type The type of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" * @param task The name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" public AddCommand(String type, String task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for AddCommand.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" * @param type The type of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" * @param task The name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" * @param deadline The by of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" public AddCommand(String type, String task, LocalDateTime deadline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for AddCommand.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":" * @param type The type of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"jinyuan0425"},"content":" * @param task The name of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"jinyuan0425"},"content":" * @param from The start of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"jinyuan0425"},"content":" * @param to The end of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"jinyuan0425"},"content":" public AddCommand(String type, String task, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"jinyuan0425"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"jinyuan0425"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"jinyuan0425"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"jinyuan0425"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"jinyuan0425"},"content":" * Executes the command based on user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"jinyuan0425"},"content":" * @param tasks List of tasks in taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"jinyuan0425"},"content":" * @param ui Instance of the user interface.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"jinyuan0425"},"content":" * @param storage Instance of the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException If input is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"jinyuan0425"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"jinyuan0425"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"jinyuan0425"},"content":" Task tasking \u003d new Todo(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"jinyuan0425"},"content":" tasks.addTask(tasking);","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"jinyuan0425"},"content":" ui.showTaskAdded(tasking, tasks.getSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"jinyuan0425"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"jinyuan0425"},"content":" Task tasking \u003d new Deadline(task,deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"jinyuan0425"},"content":" tasks.addTask(tasking);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"jinyuan0425"},"content":" ui.showTaskAdded(tasking, tasks.getSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"jinyuan0425"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"jinyuan0425"},"content":" Task tasking \u003d new Event(task, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"jinyuan0425"},"content":" tasks.addTask(tasking);","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"jinyuan0425"},"content":" ui.showTaskAdded(tasking, tasks.getSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"jinyuan0425"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"jinyuan0425"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"jinyuan0425"},"content":" return isExit;","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"jinyuan0425"},"content":" public String getType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"jinyuan0425"},"content":" return type;","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"jinyuan0425"},"content":" public LocalDateTime getDeadline() {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"jinyuan0425"},"content":" return deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"jinyuan0425"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"jinyuan0425"},"content":" return from;","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"jinyuan0425"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"jinyuan0425"},"content":" return to;","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"jinyuan0425"},"content":" public String getTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"jinyuan0425"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":128}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" * Parent class of all the Command type.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" * Contains the abstract methods execute and isExit.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" * Executes the command from user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" * @param tasks List of tasks in taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" * @param ui Instance of the user interface.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" * @param storage Instance of the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException If input is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":22}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" * Class of the command that terminates the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"public class ExitCommand extends Command{","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" * isExit contains whether to terminate the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" private boolean isExit;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for ExitCommand","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" public ExitCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" this.isExit \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" };","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" * Executes the thank method before the bot terminates.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" * @param tasks List of tasks in taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" * @param ui Instance of the user interface.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" * @param storage Instance of the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" ui.thank();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" return isExit;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":40}},{"path":"src/main/java/duke/command/FilterCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" * Class of commands that filters the existing list.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"public class FilterCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" * type contains the type of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" * keyword contains the keyword to filter.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" String type;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" String keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for the FilterCommand class.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" * @param type The type of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" * @param keyword The keyword to filter.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" public FilterCommand(String type, String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" this.type \u003d type;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" * Executes the command based on user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" * @param tasks List of tasks in taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" * @param ui Instance of the user interface.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" * @param storage Instance of the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException Invalid input.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" String list \u003d tasks.filter(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" ui.showFilteredList(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"I\u0027m afraid such a task do not exist.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" * Returns whether to terminate the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" * @return Whether to terminate the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" public String getType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" return type;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":" public String getKeyword() {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" return keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jinyuan0425":66}},{"path":"src/main/java/duke/command/ModifyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.components.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" * Class of commands that modifies the existing list.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":"public class ModifyCommand extends Command{","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" * type contains the type of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" * index contains the index of the list to modify.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" * isExit contains whether to terminate the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" private String type;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for ModifyCommand.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" * @param type The type of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" * @param index The index of the list to modify.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" public ModifyCommand(String type, int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" this.index \u003d index - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" * Executes the command based on user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" * @param tasks List of tasks in taskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" * @param ui Instance of the user interface.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" * @param storage Instance of the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException Invalid input.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" if (type.equals(\"L\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" ui.showList(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" if (type.equals(\"M\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" tasks.mark(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" ui.showTaskCompleted(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" } else if (type.equals(\"U\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" tasks.unmark(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" ui.showTaskUnmarked(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" tasks.delete(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" ui.showTaskDeleted(task, tasks.getSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"I\u0027m afraid such a task do not exist.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"jinyuan0425"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"jinyuan0425"},"content":" return isExit;","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"jinyuan0425"},"content":" public String getType() {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"jinyuan0425"},"content":" return type;","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"jinyuan0425"},"content":" public int getIndex() {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"jinyuan0425"},"content":" return index;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":80}},{"path":"src/main/java/duke/components/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":" * Exception class for the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" * @param msg The error message to be displayed when","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" * an error is encountered.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" public DukeException(String msg) {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" super(msg);","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jinyuan0425":16}},{"path":"src/main/java/duke/components/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.AddCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.FilterCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.ModifyCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" * Class that parses the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" * Parses user input and returns the corresponding command.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" * @param input User input to be parses.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" * @return Corresponding Command based on the input.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" * @throws IOException","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" public static Command parse(String input) throws DukeException, IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" String[] commandInput \u003d input.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" String command \u003d commandInput[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" return new ModifyCommand(\"L\", 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"M\";","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" int index \u003d Integer.valueOf(commandInput[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" return new ModifyCommand(type, index);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"unmark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"U\";","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" int index \u003d Integer.valueOf(commandInput[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" return new ModifyCommand(type, index);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"T\";","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" String[] task \u003d getTask(type, input);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" return new AddCommand(type, task[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"D\";","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" String[] task \u003d getTask(type, input);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" return new AddCommand(type, task[0], parseDateTime(task[1]));","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"E\";","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" String[] task \u003d getTask(type, input);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" return new AddCommand(type, task[0], parseDateTime(task[1]), parseDateTime(task[2]));","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"D\";","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" int index \u003d Integer.valueOf(commandInput[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" return new ModifyCommand(type, index);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" } else if (command.equals(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" String type \u003d \"F\";","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" String keyword \u003d commandInput[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":" return new FilterCommand(type, keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"I\u0027m afraid I do not quite understand. Could you kindly repeat it?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":" } catch (Exception ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"Could you repeat that last part? I did not quite catch it.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"jinyuan0425"},"content":" * Further parses the input if the command is to add a new task.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"jinyuan0425"},"content":" * @param type Type of Command, Todo, Deadline or Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"jinyuan0425"},"content":" * @param input User input, containing details of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"jinyuan0425"},"content":" * @return String array containing the details of the task, parsed into the correct indexes.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"jinyuan0425"},"content":" public static String[] getTask(String type, String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"jinyuan0425"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"jinyuan0425"},"content":" return new String[] {input.substring(5)};","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"jinyuan0425"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"jinyuan0425"},"content":" String deadline \u003d input.substring(9);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"jinyuan0425"},"content":" return deadline.split(\" /by \");","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"jinyuan0425"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"jinyuan0425"},"content":" String details \u003d input.substring(6);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"jinyuan0425"},"content":" String[] taskStartEnd \u003d details.split(\" /from \");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"jinyuan0425"},"content":" String[] startEnd \u003d taskStartEnd[1].split(\" /to \");","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"jinyuan0425"},"content":" return new String[] {taskStartEnd[0], startEnd[0], startEnd[1]};","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"jinyuan0425"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"jinyuan0425"},"content":" return new String[] {};","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"jinyuan0425"},"content":" * Further parses the input if the input contains the String for dateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"jinyuan0425"},"content":" * @param dateTimeStr String of the dateTime to be converted.","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"jinyuan0425"},"content":" * @return LocalDateTime object to be used to construct the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException Invalid format or input for dateTimeStr.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"jinyuan0425"},"content":" public static LocalDateTime parseDateTime(String dateTimeStr) throws DukeException{","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"jinyuan0425"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"jinyuan0425"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"jinyuan0425"},"content":" return LocalDateTime.parse(dateTimeStr, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"jinyuan0425"},"content":" } catch (DateTimeParseException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"I\u0027m afraid I do not quite understand. Please input the date and time\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"jinyuan0425"},"content":" \"as follows:\\nd/M/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":110}},{"path":"src/main/java/duke/components/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" * Class that manages the storing and loading of the list of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" * filePath contains the path to the stored file containing the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" * @param filePath The path to the stored file containing the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" * Loads the task from an existing save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" * @return The list stored in the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException Invalid path.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" public ArrayList\u003cTask\u003e loadTasks() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" createFileIfNotExist(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(filePath))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" Task task \u003d parseTask(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" } catch (IOException | DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"There must be an error. I can\u0027t seem to locate the file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" } catch (IOException | DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"There must be an error. I can\u0027t seem to locate the file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"jinyuan0425"},"content":" * Create the path to the file and the file itself if they do not exist.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"jinyuan0425"},"content":" * @param filePath Path to be created.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"jinyuan0425"},"content":" * @throws IOException","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"jinyuan0425"},"content":" private void createFileIfNotExist(String filePath) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"jinyuan0425"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"jinyuan0425"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"jinyuan0425"},"content":" File parentDirectory \u003d file.getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"jinyuan0425"},"content":" if (parentDirectory !\u003d null \u0026\u0026 !parentDirectory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"jinyuan0425"},"content":" parentDirectory.mkdirs(); // Recursively create directories if they don\u0027t exist","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"jinyuan0425"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"jinyuan0425"},"content":" * Updates the save file with the most current state of the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"jinyuan0425"},"content":" * @param tasks List of tasks to be updated into the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"jinyuan0425"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"jinyuan0425"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"jinyuan0425"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"jinyuan0425"},"content":" writer.write(task.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"jinyuan0425"},"content":" writer.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"jinyuan0425"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"Error saving tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"jinyuan0425"},"content":" * Reads the data stored in the save file and return the corresponding Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"jinyuan0425"},"content":" * @param taskData Data for Task stored in the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"jinyuan0425"},"content":" * @return Task representation of the String stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"jinyuan0425"},"content":" private Task parseTask(String taskData) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"jinyuan0425"},"content":" String[] parts \u003d taskData.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"jinyuan0425"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"jinyuan0425"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"jinyuan0425"},"content":" String taskDescription \u003d parts[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"jinyuan0425"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"jinyuan0425"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"jinyuan0425"},"content":" return new Todo(taskDescription, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"jinyuan0425"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime deadline \u003d Parser.parseDateTime(parts[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"jinyuan0425"},"content":" return new Deadline(taskDescription, deadline, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"jinyuan0425"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime start \u003d Parser.parseDateTime(parts[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime end \u003d Parser.parseDateTime(parts[4]);","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"jinyuan0425"},"content":" return new Event(taskDescription, start, end, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"jinyuan0425"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"jinyuan0425"},"content":" return null; // Invalid task type","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":127}},{"path":"src/main/java/duke/components/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" * Class for the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" * tasks contains a list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" private static ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" * Stores the task list loaded from the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" * @param tasks List of task loaded from storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" * Add a new task to list.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" * @param task Task to be added to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" * Mark a specific task as completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" * @param index Index of task completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException Indexing error.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" public static void mark(int index) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" if (isValidIndex(index)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" tasks.get(index).setDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" } else { // Index error","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"I\u0027m afraid the task does not exist. \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" \"Perhaps you might want to see your list again?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" * Mark a specific task as incomplete.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" * @param index Index of task to unmark.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException Indexing error.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" public static void unmark(int index) throws DukeException{","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" if (isValidIndex(index)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" tasks.get(index).setNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" } else { // Index error","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"I\u0027m afraid the task does not exist. \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" \"Perhaps you might want to see your list again?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" * Delete a specific task.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"jinyuan0425"},"content":" * @param index Index of task to delete.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException Indexing error.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"jinyuan0425"},"content":" public void delete(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"jinyuan0425"},"content":" if (isValidIndex(index)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"jinyuan0425"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"jinyuan0425"},"content":" } else { // Index error","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"jinyuan0425"},"content":" throw new DukeException(\"I\u0027m afraid the task does not exist. \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"jinyuan0425"},"content":" \"Perhaps you might want to see your list again?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"jinyuan0425"},"content":" public static ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"jinyuan0425"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"jinyuan0425"},"content":" public static Task getTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"jinyuan0425"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"jinyuan0425"},"content":" public static int getSize() {","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"jinyuan0425"},"content":" return tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"jinyuan0425"},"content":" * Iterates through tasks and return the String representation for each task.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"jinyuan0425"},"content":" * @return String representation of task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"jinyuan0425"},"content":" public static String list() {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"jinyuan0425"},"content":" String result \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"jinyuan0425"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) { // Generates the String representation of the list","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"jinyuan0425"},"content":" result +\u003d i + 1 + \". \" + tasks.get(i) + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"jinyuan0425"},"content":" if (result !\u003d \"Here are the tasks in your list:\\n\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"jinyuan0425"},"content":" return result;","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"jinyuan0425"},"content":" } else { // Empty list","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"jinyuan0425"},"content":" return \"There is nothing on your list currently. \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"jinyuan0425"},"content":" \"Perhaps you might want to add a new task?\";","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"jinyuan0425"},"content":" * Checks if index is out of bounds.","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"jinyuan0425"},"content":" * @param index Index to be checked.","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"jinyuan0425"},"content":" * @return Boolean of whether index is out of bounds.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"jinyuan0425"},"content":" private static boolean isValidIndex(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"jinyuan0425"},"content":" return index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"jinyuan0425"},"content":" * Filters the list of task based on a given keyword. A new list will be returned for task containing the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"jinyuan0425"},"content":" * @param keyword The task list will be filtered against this keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"jinyuan0425"},"content":" * @return A list of tasks that contains the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"jinyuan0425"},"content":" public String filter(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"jinyuan0425"},"content":" String result \u003d \"Here are the tasks in your list containing \" + keyword + \":\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"jinyuan0425"},"content":" int counter \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"jinyuan0425"},"content":" for (Task task : tasks) { // Generates the String representation of the list","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"jinyuan0425"},"content":" String description \u003d task.getDescription();","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"jinyuan0425"},"content":" if (description.contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"jinyuan0425"},"content":" counter +\u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"jinyuan0425"},"content":" result +\u003d counter + \". \" + task + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"jinyuan0425"},"content":" if (counter \u003e 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"jinyuan0425"},"content":" return result;","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"jinyuan0425"},"content":" } else { // Empty list","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"jinyuan0425"},"content":" return \"There is nothing on your list currently that matches the keyword \\\"\" + keyword + \"\\\". \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"jinyuan0425"},"content":" \"Perhaps you might want to add a new task or try a different keyword?\";","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":142}},{"path":"src/main/java/duke/components/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":" * Ui class which handles the inputs from the user and prints corresponding messages.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" * scanner contains the instance of a Scanner.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for the Ui class.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" * Prints the greeting message on initialisation of the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" public void greet() { // Greets user on initialisation","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"Good day to you, I\u0027m ButlerBot.\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" \"How may I be of service to you?\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" * Prints the goodbye message on termination of the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" public void thank() { // Exits the Bot","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"Goodbye and have a nice day.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" * Scans the next line for user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" public String scan() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" * Prints the error message of error encountered.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" * @param error Message of the error.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" public void showError(String error) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" System.err.println(\"Error: \" + error);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" * Prints the newly added task, along with the total number of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" * @param task Details of the newly added task.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" * @param totalTasks Number of task in total.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" public void showTaskAdded(Task task, int totalTasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"Understood, I have added the following task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"You now have \" + totalTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":" * Print the task that is completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"jinyuan0425"},"content":" * @param task Details of the task that is completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"jinyuan0425"},"content":" public void showTaskCompleted(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"Congratulations on finishing the task!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"I will now mark it as complete:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"jinyuan0425"},"content":" * Print the task that is unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"jinyuan0425"},"content":" * @param task Details of the task that is unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"jinyuan0425"},"content":" public void showTaskUnmarked(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"No worries. I will now mark the task as incomplete:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"jinyuan0425"},"content":" * Prints the newly deleted task, along with the total number of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"jinyuan0425"},"content":" * @param task Details of the deleted added task.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"jinyuan0425"},"content":" * @param totalTasks Number of task in total.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"jinyuan0425"},"content":" public void showTaskDeleted(Task task, int totalTasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"Understood, I will remove the following task from your list:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(\"You now have \" + totalTasks + \" tasks remaining.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"jinyuan0425"},"content":" * Shows list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"jinyuan0425"},"content":" * @param taskList Contains list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"jinyuan0425"},"content":" * @throws DukeException Empty list.","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"jinyuan0425"},"content":" public void showList(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(taskList.list());","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"jinyuan0425"},"content":" * Prints the String representation of a filtered list.","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"jinyuan0425"},"content":" * @param list String representation of a filtered list.","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"jinyuan0425"},"content":" public void showFilteredList(String list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"jinyuan0425"},"content":" System.out.println(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":115}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":" * A subclass of Task. Contains a description, isDone and by.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" * by contains the dateTime by which the Task is to be done.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for the Deadline class.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" * @param description Name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" * @param by Date and time to complete Task by.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for the Deadline class.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" * @param description Name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" * @param by Date and time to complete Task by.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" * @param isDone If task is completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" public Deadline(String description, LocalDateTime by, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" * Returns the String representation of the Deadline, along with the","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" * indication of whether it isDone and the by of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" * @return String representation of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" String output \u003d by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, h:mm a\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" return \"[D]\" + super.toString() + \" (by: \" + output + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" * Returns the String to be written into the .txt file for saving","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" * of the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" * @return String to be written into the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" public String write() {","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" String output \u003d by.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" return \"D | \" + super.write() + \" | \" + output;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":" return by;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jinyuan0425":65}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":" * A subclass of Task. Contains a description, isDone, from and to.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" * from contains the dateTime at which the Task starts.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" * to contains the dateTime at which the Task ends.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for the Event class.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" * @param description Name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" * @param from Start of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" * @param to End of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for the Event class.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" * @param description Name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" * @param from Start of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" * @param to End of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" * @param isDone If task is completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" * Returns the String representation of the Event, along with the","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" * indication of whether it isDone and the start and end of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" * @return String representation of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" String outputFrom \u003d from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, h:mm a\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" String outputTo \u003d to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, h:mm a\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" return \"[E]\" + super.toString() + \" (from: \" + outputFrom + \" to: \" + outputTo + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" * Returns the String to be written into the .txt file for saving","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" * of the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":" * @return String to be written into the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" public String write() {","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":" String outputFrom \u003d from.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"jinyuan0425"},"content":" String outputTo \u003d to.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"jinyuan0425"},"content":" return \"E | \" + super.write() + \" | \" + outputFrom + \" | \" + outputTo;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"jinyuan0425"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"jinyuan0425"},"content":" return from;","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"jinyuan0425"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"jinyuan0425"},"content":" return to;","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jinyuan0425":79}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":" * Parent class of all the Tasks type.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" * description contains the name of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" * isDone contains whether the task is done","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" * @param description The name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" * @param description The name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" * @param isDone If task is completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" * Returns the icon that represents the isDone state.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" * @return \"X\" for done or \" \" for not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" public void setDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" public void setNotDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" * Returns the String representation of the Task, along with the","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" * indication of whether it isDone.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" * @return String representation of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" * Returns the String to be written into the .txt file for saving","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" * of the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"jinyuan0425"},"content":" * @return String to be written into the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"jinyuan0425"},"content":" public String write() {","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"jinyuan0425"},"content":" String complete \u003d isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"jinyuan0425"},"content":" return complete + \" | \" + this.description;","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"jinyuan0425"},"content":" public boolean getIsDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"jinyuan0425"},"content":" return isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"jinyuan0425"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"jinyuan0425"},"content":" return description;","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jinyuan0425":81}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":" * A subclass of Task. Contains a description and isDone.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for the Todo class.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":" * @param description The name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" * Constructor for the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" * @param description The name of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" * @param isDone If task is completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" * Returns the String representation of the Todo, along with the","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" * indication of whether it isDone.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" * @return String representation of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" * Returns the String to be written into the .txt file for saving","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" * of the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" * @return String to be written into the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" public String write() {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" return \"T | \" + super.write();","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jinyuan0425":47}},{"path":"src/test/java/duke/components/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.AddCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.FilterCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"import duke.command.ModifyCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" public void testParseExitCommand() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" Command command \u003d Parser.parse(\"bye\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(command instanceof ExitCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" public void testParseListCommand() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" Command command \u003d Parser.parse(\"list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(command instanceof ModifyCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"L\", ((ModifyCommand) command).getType());","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(-1, ((ModifyCommand) command).getIndex());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" public void testParseMarkCommand() throws DukeException, IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" Command command \u003d Parser.parse(\"mark 2\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(command instanceof ModifyCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"M\", ((ModifyCommand) command).getType());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(1, ((ModifyCommand) command).getIndex());","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" public void testParseEventCommand() throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" Command command \u003d Parser.parse(\"event cook dinner /from 1/9/2023 1430 /to 1/9/2023 1630\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(command instanceof AddCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"E\", ((AddCommand) command).getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"cook dinner\", ((AddCommand) command).getTask());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(LocalDateTime.of(2023, 9, 1, 14, 30),","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" ((AddCommand) command).getFrom());","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(LocalDateTime.of(2023, 9, 1, 16, 30),","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" ((AddCommand) command).getTo());","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" public void testParseFilterCommand() throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" Command command \u003d Parser.parse(\"find clean\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(command instanceof FilterCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"F\", ((FilterCommand) command).getType());","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"clean\", ((FilterCommand) command).getKeyword());","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"jinyuan0425"},"content":" public void testParseInvalidCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jinyuan0425"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"jinyuan0425"},"content":" Parser.parse(\"invalidcommand\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"jinyuan0425"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"jinyuan0425"},"content":" public void testParseDateTimeWithValidInput() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime dateTime \u003d Parser.parseDateTime(\"1/9/2023 1430\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(LocalDateTime.of(2023, 9, 1, 14, 30), dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"jinyuan0425"},"content":" public void testParseDateTimeWithInvalidInput() {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"jinyuan0425"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"jinyuan0425"},"content":" Parser.parseDateTime(\"invalidDateTime\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"jinyuan0425"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jinyuan0425":81}},{"path":"src/test/java/duke/components/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.components;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" Task test \u003d new Todo(\"test\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":" public void testAddTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" tasks.addTask(test);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(1, tasks.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[T][ ] test\", tasks.getTask(0).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" public void testMark() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" tasks.addTask(test);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" tasks.mark(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[T][X] test\", tasks.getTask(0).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" public void testUnmark() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" tasks.addTask(test);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" tasks.mark(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[T][X] test\", tasks.getTask(0).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" tasks.unmark(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[T][ ] test\", tasks.getTask(0).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" public void testDelete() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" tasks.addTask(test);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[T][ ] test\", tasks.getTask(0).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" tasks.delete(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(0, tasks.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":" public void testFilter() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" tasks.addTask(test);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" tasks.addTask(new Todo(\"fake\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Here are the tasks in your list containing test:\\n1. [T][ ] test\\n\",","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":" tasks.filter(\"test\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"There is nothing on your list currently that matches the keyword \\\"keyword\\\". \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" \"Perhaps you might want to add a new task or try a different keyword?\",","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" tasks.filter(\"keyword\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jinyuan0425":62}},{"path":"src/test/java/duke/tasks/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" public void testConstructorAndGetters() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime by \u003d LocalDateTime.of(2023, 9, 1, 14, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" Deadline deadline \u003d new Deadline(\"Submit report\", by);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Submit report\", deadline.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" assertFalse(deadline.getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(by, deadline.getBy());","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" public void testToString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime by \u003d LocalDateTime.of(2023, 9, 1, 14, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" Deadline deadline \u003d new Deadline(\"Submit report\", by);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[D][ ] Submit report (by: Sep 1 2023, 2:00 PM)\", deadline.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" Deadline completedDeadline \u003d new Deadline(\"Finish project\", by, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[D][X] Finish project (by: Sep 1 2023, 2:00 PM)\", completedDeadline.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime wrongTime \u003d LocalDateTime.of(2023, 9, 1, 14, 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" public void testWrite() {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime by \u003d LocalDateTime.of(2023, 9, 1, 14, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" Deadline deadline \u003d new Deadline(\"Submit report\", by);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"D | 0 | Submit report | 1/9/2023 1400\", deadline.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" Deadline completedDeadline \u003d new Deadline(\"Finish project\", by, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"D | 1 | Finish project | 1/9/2023 1400\", completedDeadline.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":47}},{"path":"src/test/java/duke/tasks/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"public class EventTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" public void testConstructorAndGetters() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime from \u003d LocalDateTime.of(2023, 8, 31, 10, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime to \u003d LocalDateTime.of(2023, 8, 31, 12, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" Event event \u003d new Event(\"Meeting\", from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Meeting\", event.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" assertFalse(event.getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(from, event.getFrom());","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(to, event.getTo());","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" public void testToString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime from \u003d LocalDateTime.of(2023, 8, 31, 10, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime to \u003d LocalDateTime.of(2023, 8, 31, 12, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" Event event \u003d new Event(\"Meeting\", from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[E][ ] Meeting (from: Aug 31 2023, 10:00 AM to: Aug 31 2023, 12:00 PM)\", event.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" Event completedEvent \u003d new Event(\"Conference\", from, to, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[E][X] Conference (from: Aug 31 2023, 10:00 AM to: Aug 31 2023, 12:00 PM)\",","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" completedEvent.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" public void testWrite() {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime from \u003d LocalDateTime.of(2023, 8, 31, 10, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" LocalDateTime to \u003d LocalDateTime.of(2023, 8, 31, 12, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":" Event event \u003d new Event(\"Meeting\", from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"E | 0 | Meeting | 31/8/2023 1000 | 31/8/2023 1200\", event.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" Event completedEvent \u003d new Event(\"Conference\", from, to, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"E | 1 | Conference | 31/8/2023 1000 | 31/8/2023 1200\", completedEvent.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":48}},{"path":"src/test/java/duke/tasks/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"public class TaskTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" public void testConstructorAndGetters() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" Task task \u003d new Task(\"Buy groceries\");","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Buy groceries\", task.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" assertFalse(task.getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" Task completedTask \u003d new Task(\"Finish assignment\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Finish assignment\", completedTask.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(completedTask.getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" public void testSetDoneAndSetNotDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" Task task \u003d new Task(\"Read a book\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" assertFalse(task.getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" task.setDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(task.getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":" task.setNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" assertFalse(task.getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":" public void testStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" Task undoneTask \u003d new Task(\"Walk the dog\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\" \", undoneTask.getStatusIcon());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":" Task doneTask \u003d new Task(\"Clean the room\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"X\", doneTask.getStatusIcon());","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jinyuan0425"},"content":" public void testToString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jinyuan0425"},"content":" Task task \u003d new Task(\"Finish report\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[ ] Finish report\", task.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jinyuan0425"},"content":" Task completedTask \u003d new Task(\"Submit application\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[X] Submit application\", completedTask.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jinyuan0425"},"content":" public void testWrite() {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jinyuan0425"},"content":" Task task \u003d new Task(\"Call a friend\");","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"0 | Call a friend\", task.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jinyuan0425"},"content":" Task completedTask \u003d new Task(\"Go for a run\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"1 | Go for a run\", completedTask.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":60}},{"path":"src/test/java/duke/tasks/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jinyuan0425"},"content":" public void testConstructorAndGetters() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jinyuan0425"},"content":" Todo todo \u003d new Todo(\"Buy groceries\");","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Buy groceries\", todo.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jinyuan0425"},"content":" assertFalse(todo.getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jinyuan0425"},"content":" Todo completedTodo \u003d new Todo(\"Finish assignment\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"Finish assignment\", completedTodo.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jinyuan0425"},"content":" assertTrue(completedTodo.getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jinyuan0425"},"content":" public void testToString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jinyuan0425"},"content":" Todo todo \u003d new Todo(\"Read a book\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[T][ ] Read a book\", todo.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jinyuan0425"},"content":" Todo completedTodo \u003d new Todo(\"Clean the room\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"[T][X] Clean the room\", completedTodo.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jinyuan0425"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jinyuan0425"},"content":" public void testWrite() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jinyuan0425"},"content":" Todo todo \u003d new Todo(\"Call a friend\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"T | 0 | Call a friend\", todo.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jinyuan0425"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jinyuan0425"},"content":" Todo completedTodo \u003d new Todo(\"Go for a run\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jinyuan0425"},"content":" assertEquals(\"T | 1 | Go for a run\", completedTodo.write());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jinyuan0425"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jinyuan0425"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":39}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"T | 0 | Automate ButlerBot","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"D | 0 | CS2103T Individual Project | 30/8/2023 1900","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"E | 0 | Birthday Celebration! | 31/8/2023 1900 | 30/8/2023 2100","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"T | 1 | Mark this","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jinyuan0425":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jinyuan0425"},"content":"todo Automate ButlerBot","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"jinyuan0425"},"content":"deadline CS2103T Individual Project /by 30/8/2023 1900","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"jinyuan0425"},"content":"event Birthday Celebration! /from 31/8/2023 1900 /to 30/8/2023 2100","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jinyuan0425"},"content":"todo Delete this","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jinyuan0425"},"content":"todo Mark this","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jinyuan0425"},"content":"mark 5","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jinyuan0425"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jinyuan0425"},"content":"delete 4","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"jinyuan0425"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jinyuan0425"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jinyuan0425":10}}] diff --git a/jinyuan0425_ip_master/commits.json b/jinyuan0425_ip_master/commits.json index aca0967d..d53f430d 100644 --- a/jinyuan0425_ip_master/commits.json +++ b/jinyuan0425_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jinyuan0425":[{"date":"2023-08-21","commitResults":[{"hash":"ca7d2661ade131782376c2afddbd36e9935fefcd","isMergeCommit":false,"messageTitle":"Completed Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"2fb94bce6dd0f4c7261634c2998ef582fba6f33e","isMergeCommit":false,"messageTitle":"Completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"ac93da3d1067916ef5f168add4017718c66dc698","isMergeCommit":false,"messageTitle":"Completed Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":3}}},{"hash":"1d444f1b54e6db183d0ec075dc20f2c0e608f5e2","isMergeCommit":false,"messageTitle":"Completed Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":3}}},{"hash":"4305f3de45c13763c58ab81fc3d03353c37d20fa","isMergeCommit":false,"messageTitle":"Completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":3}}}]},{"date":"2023-08-22","commitResults":[{"hash":"086da3cd19cc3e400868709234bb1cbf14bebf7e","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":2,"deletions":2}}},{"hash":"709c366e8d300763a4e931e66cd9598d7cad3b72","isMergeCommit":false,"messageTitle":"Completed Level-5","messageBody":"Implemented OOP\n","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":190,"deletions":125}}},{"hash":"0142c95cc672e55aa6dec35fcbbaf1a2d4ba3fed","isMergeCommit":false,"messageTitle":"Completed Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":37,"deletions":21}}}]},{"date":"2023-08-23","commitResults":[{"hash":"3a7bc56dda54cb8e3e3c59c8ab3058854966155f","isMergeCommit":false,"messageTitle":"Completed A-Enums","messageBody":"","tags":["A-Enum"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":59}}}]},{"date":"2023-08-29","commitResults":[{"hash":"3d5876226ec8dba4b0ccec4e4dd0b6fb18175677","isMergeCommit":false,"messageTitle":"Update code to allow for save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":109,"deletions":22}}}]},{"date":"2023-08-30","commitResults":[{"hash":"cd368decde3e798f121b142f4f9667e8c2a7ecd5","isMergeCommit":false,"messageTitle":"Update code to allow for save","messageBody":"Bot refreshers with each load.\n\nUsers will not be able to use the bot effectively as data has to be\nre-entered every load.\n\nLet\u0027s save the user\u0027s input when assigning tasks to the bot.\n\nBot will now be able to reference the saved inputs and load the user\u0027s\nsaved data.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":109,"deletions":22}}},{"hash":"9e7dd57116d422e3bc29cfd4652d8c18e34ae618","isMergeCommit":false,"messageTitle":"Update bot to understand dates","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":58,"deletions":27}}},{"hash":"79ba44e3b8f415be52e4b930f6c76541c7c1e2d6","isMergeCommit":false,"messageTitle":"Update bot to understand date and time","messageBody":"There is no fixed format to the input for by, from and to. Bot is able\nto accept any input and store them as a valid date and time.\n\nLet\u0027s introduce LocalDateTime to the bot to enforce a specific input\nformat for the date and time input.\n\nThis minimises the random behaviour of the bot as any incorrect inputs\nwill be rejected by the bot.\n","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":4},"java":{"insertions":31,"deletions":26}}},{"hash":"a97d01947696a83998998ad70e8986dc023dcd8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"0f8c7761cdf26658b0572952272e812af054213e","isMergeCommit":false,"messageTitle":"Update code to be more OOP","messageBody":"The code works as intended.\n\nCode can be further extracted to improve OOP.\n\nExtracting the common behavior into a super class allows us to use\npolymorphism when dealing with command attributes.\n\nLet\u0027s extract and group similar commands in to various classes that\nextends the parent class Command.\n\nThis improves readability and allows for inheritance as well.\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":453,"deletions":278}}},{"hash":"2955f5ac84bfec45615e61d6680d6c33b9cd7d32","isMergeCommit":false,"messageTitle":"Update code to implement packages","messageBody":"Code was organised due to OOP, but can be further organised into\npackages.\n\nLet\u0027s group the classes into various functionalities and sort them\ninto the corresponding packages.\n\nThis avoids name conflict and helps with writing a better maintainable\ncode.\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":33}}},{"hash":"629894cb6b640efeaf408793123147ff60631745","isMergeCommit":false,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0}}},{"hash":"a00bceb52db619be7cc016e4833fc97163434fd6","isMergeCommit":false,"messageTitle":"Update code to include testing","messageBody":"Code is working for manual inputs.\n\nLet\u0027s use JUnit to automate the test cases.\n\nThis allows for a quicker check of the code when making small tweaks\nand not have the need to manually input the same inputs each time.\n","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":204,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"56b5371ae271d81c91edec0f84bab02d1e281ba9","isMergeCommit":false,"messageTitle":"Package the app as an executable file","messageBody":"Bot is now a working prototype.\n\nLet\u0027s package it into a JAR file to be executed.\n\nRemote access of the app is now available with this executable file.\n","tags":["v1.0","A-Jar"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":78,"deletions":10}}}]}]},"authorFileTypeContributionMap":{"jinyuan0425":{"java":876,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":42,"txt":14}},"authorContributionVariance":{"jinyuan0425":123815.86},"authorDisplayNameMap":{"jinyuan0425":"CS2103T-W17-4 KWOH..YUAN"}} +{"authorDailyContributionsMap":{"jinyuan0425":[{"date":"2023-08-21","commitResults":[{"hash":"ca7d2661ade131782376c2afddbd36e9935fefcd","isMergeCommit":false,"messageTitle":"Completed Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"2fb94bce6dd0f4c7261634c2998ef582fba6f33e","isMergeCommit":false,"messageTitle":"Completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"ac93da3d1067916ef5f168add4017718c66dc698","isMergeCommit":false,"messageTitle":"Completed Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":3}}},{"hash":"1d444f1b54e6db183d0ec075dc20f2c0e608f5e2","isMergeCommit":false,"messageTitle":"Completed Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":3}}},{"hash":"4305f3de45c13763c58ab81fc3d03353c37d20fa","isMergeCommit":false,"messageTitle":"Completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":3}}}]},{"date":"2023-08-22","commitResults":[{"hash":"086da3cd19cc3e400868709234bb1cbf14bebf7e","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":2,"deletions":2}}},{"hash":"709c366e8d300763a4e931e66cd9598d7cad3b72","isMergeCommit":false,"messageTitle":"Completed Level-5","messageBody":"Implemented OOP\n","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":190,"deletions":125}}},{"hash":"0142c95cc672e55aa6dec35fcbbaf1a2d4ba3fed","isMergeCommit":false,"messageTitle":"Completed Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":37,"deletions":21}}}]},{"date":"2023-08-23","commitResults":[{"hash":"3a7bc56dda54cb8e3e3c59c8ab3058854966155f","isMergeCommit":false,"messageTitle":"Completed A-Enums","messageBody":"","tags":["A-Enum"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":59}}}]},{"date":"2023-08-29","commitResults":[{"hash":"3d5876226ec8dba4b0ccec4e4dd0b6fb18175677","isMergeCommit":false,"messageTitle":"Update code to allow for save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":109,"deletions":22}}}]},{"date":"2023-08-30","commitResults":[{"hash":"cd368decde3e798f121b142f4f9667e8c2a7ecd5","isMergeCommit":false,"messageTitle":"Update code to allow for save","messageBody":"Bot refreshers with each load.\n\nUsers will not be able to use the bot effectively as data has to be\nre-entered every load.\n\nLet\u0027s save the user\u0027s input when assigning tasks to the bot.\n\nBot will now be able to reference the saved inputs and load the user\u0027s\nsaved data.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":109,"deletions":22}}},{"hash":"9e7dd57116d422e3bc29cfd4652d8c18e34ae618","isMergeCommit":false,"messageTitle":"Update bot to understand dates","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":58,"deletions":27}}},{"hash":"79ba44e3b8f415be52e4b930f6c76541c7c1e2d6","isMergeCommit":false,"messageTitle":"Update bot to understand date and time","messageBody":"There is no fixed format to the input for by, from and to. Bot is able\nto accept any input and store them as a valid date and time.\n\nLet\u0027s introduce LocalDateTime to the bot to enforce a specific input\nformat for the date and time input.\n\nThis minimises the random behaviour of the bot as any incorrect inputs\nwill be rejected by the bot.\n","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":4},"java":{"insertions":31,"deletions":26}}},{"hash":"a97d01947696a83998998ad70e8986dc023dcd8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"0f8c7761cdf26658b0572952272e812af054213e","isMergeCommit":false,"messageTitle":"Update code to be more OOP","messageBody":"The code works as intended.\n\nCode can be further extracted to improve OOP.\n\nExtracting the common behavior into a super class allows us to use\npolymorphism when dealing with command attributes.\n\nLet\u0027s extract and group similar commands in to various classes that\nextends the parent class Command.\n\nThis improves readability and allows for inheritance as well.\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":453,"deletions":278}}},{"hash":"2955f5ac84bfec45615e61d6680d6c33b9cd7d32","isMergeCommit":false,"messageTitle":"Update code to implement packages","messageBody":"Code was organised due to OOP, but can be further organised into\npackages.\n\nLet\u0027s group the classes into various functionalities and sort them\ninto the corresponding packages.\n\nThis avoids name conflict and helps with writing a better maintainable\ncode.\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":33}}},{"hash":"629894cb6b640efeaf408793123147ff60631745","isMergeCommit":false,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0}}},{"hash":"a00bceb52db619be7cc016e4833fc97163434fd6","isMergeCommit":false,"messageTitle":"Update code to include testing","messageBody":"Code is working for manual inputs.\n\nLet\u0027s use JUnit to automate the test cases.\n\nThis allows for a quicker check of the code when making small tweaks\nand not have the need to manually input the same inputs each time.\n","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":204,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"56b5371ae271d81c91edec0f84bab02d1e281ba9","isMergeCommit":false,"messageTitle":"Package the app as an executable file","messageBody":"Bot is now a working prototype.\n\nLet\u0027s package it into a JAR file to be executed.\n\nRemote access of the app is now available with this executable file.\n","tags":["v1.0","A-Jar"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":78,"deletions":10}}}]},{"date":"2023-09-01","commitResults":[{"hash":"893bdd108a64e84e136061da0071872e958f01ee","isMergeCommit":false,"messageTitle":"Add Javadoc comments to methods","messageBody":"Most methods, less the getters and setters, classes and fields now have\nJavadocs comments to detail the function of said methods, class and\nfields.\n","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":422,"deletions":12}}},{"hash":"eee3eef8211965881bcdfb3a17c8527c3ba873a3","isMergeCommit":false,"messageTitle":"Update code to follow coding standard","messageBody":"Let\u0027s update the code to follow the java coding standard.\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":44}}},{"hash":"27662904456693785516bff89ac628adc199117a","isMergeCommit":false,"messageTitle":"Update code to allow for find command","messageBody":"Let\u0027s implement a find command to filter through the task list and\nreturn a new list of task containg the keyword.\n\nSeveral test cases are added for more extensive testing.\n","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":217,"deletions":11}}},{"hash":"3e210c5ecc1c26e70c26421f6b9ebe4556f3cd49","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e1236ff7b0b7ba4a9202bf5157383bc1110194c4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jinyuan0425":{"java":1514,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":42,"txt":16}},"authorContributionVariance":{"jinyuan0425":139018.98},"authorDisplayNameMap":{"jinyuan0425":"CS2103T-W17-4 KWOH..YUAN"}} diff --git a/jovkusuma_ip_master/authorship.json b/jovkusuma_ip_master/authorship.json index cd5794a2..ee70cdf0 100644 --- a/jovkusuma_ip_master/authorship.json +++ b/jovkusuma_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" public Duke() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" public void run() {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" this.ui.greet();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" this.storage.init();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" this.tasks \u003d this.storage.readFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" this.ui.errorPrint(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jovkusuma"},"content":" String input \u003d this.scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jovkusuma"},"content":" Command command \u003d Parser.parse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jovkusuma"},"content":" command.execute(this.tasks, this.ui, this.storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jovkusuma"},"content":" if (input.split(\" \")[0].equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jovkusuma"},"content":" this.scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jovkusuma"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"jovkusuma"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jovkusuma"},"content":" this.ui.errorPrint(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jovkusuma"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jovkusuma"},"content":" duke.run();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jovkusuma":45,"-":4}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"public class AddCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" private String command;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" public AddCommand(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" if (command.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" } else if (command.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" } else if (command.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" String task \u003d command.substring(0, command.indexOf(\" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" if (task.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" Task currTask \u003d new Todo(command.replace(\"todo\", \"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" tasks.add(currTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" ui.taskPrint(currTask, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" } else if (task.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":" String[] s \u003d command.replace(\"event \", \"\").split(\" /from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jovkusuma"},"content":" Task currTask \u003d new Event(s[0], s[1], s[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jovkusuma"},"content":" tasks.add(currTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jovkusuma"},"content":" ui.taskPrint(currTask,tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jovkusuma"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"Invalid date format! Please command date using the format yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jovkusuma"},"content":" } else if (task.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jovkusuma"},"content":" String[] s \u003d command.replace(\"deadline \", \"\").split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jovkusuma"},"content":" Task currTask \u003d new Deadline(s[0], s[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jovkusuma"},"content":" tasks.add(currTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jovkusuma"},"content":" ui.taskPrint(currTask,tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jovkusuma"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"Invalid date format! Please command date using the format yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jovkusuma"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"Oops! I\u0027m sorry, I don\u0027t know what that means.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":53}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" public abstract void execute(TaskList task, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":10}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" if(index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.getLength()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" ui.deletePrint(tasks.getTask(index), tasks.getTaskCount() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":21}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" ui.bye();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":15}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" ui.listOfTasks(tasks, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":14}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" ui.markDonePrint(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":20}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" task.unmarkDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" ui.unmarkDonePrint(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":20}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import java.lang.Exception;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" return super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jovkusuma":13}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.command.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":" public static Command parse(String input) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":" if (!input.contains(\" \")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" } else if (input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"I don\u0027t know what that means\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" String task \u003d input.substring(0, input.indexOf(\" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" if (task.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" return new MarkCommand(Integer.parseInt(input.split(\" \")[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" } else if (task.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" return new UnmarkCommand(Integer.parseInt(input.split(\" \")[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" } else if (task.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" return new DeleteCommand(Integer.parseInt(input.split(\" \")[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" return new AddCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":30}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.task.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" private final String DIRECTORY \u003d \"./data\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" private final String FILE_PATH \u003d DIRECTORY + \"/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" private File STORAGE_FILE;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" private DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" public void init() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" File dir \u003d new File(this.DIRECTORY);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" dir.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" this.STORAGE_FILE \u003d new File(this.FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" if (!STORAGE_FILE.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" STORAGE_FILE.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jovkusuma"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS !!! It seems that a new file cannot be created.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jovkusuma"},"content":" public TaskList readFromFile() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jovkusuma"},"content":" TaskList listOfTasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jovkusuma"},"content":" Scanner scanner \u003d new Scanner(this.STORAGE_FILE);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jovkusuma"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jovkusuma"},"content":" String task \u003d scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jovkusuma"},"content":" String type \u003d task.substring(1, 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jovkusuma"},"content":" String mark \u003d task.substring(4, 5);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jovkusuma"},"content":" String description \u003d task.substring(7);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jovkusuma"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jovkusuma"},"content":" Task todo \u003d new Todo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jovkusuma"},"content":" if (mark.equals(\"X\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jovkusuma"},"content":" todo.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jovkusuma"},"content":" listOfTasks.add(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jovkusuma"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jovkusuma"},"content":" String[] s \u003d description.split(\" \\\\(from: | to: |\\\\)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jovkusuma"},"content":" LocalDate from \u003d LocalDate.parse(s[1], formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jovkusuma"},"content":" LocalDate to \u003d LocalDate.parse(s[2], formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"jovkusuma"},"content":" Task event \u003d new Event(s[0], from.toString(), to.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"jovkusuma"},"content":" if (mark.equals(\"X\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jovkusuma"},"content":" event.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"jovkusuma"},"content":" listOfTasks.add(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jovkusuma"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jovkusuma"},"content":" String[] s \u003d description.split(\" \\\\(by: |\\\\)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jovkusuma"},"content":" LocalDate by \u003d LocalDate.parse(s[1], formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"jovkusuma"},"content":" Task deadline \u003d new Deadline(s[0], by.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"jovkusuma"},"content":" if (mark.equals(\"X\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"jovkusuma"},"content":" deadline.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"jovkusuma"},"content":" listOfTasks.add(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"jovkusuma"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS !!! Can\u0027t Load duke.task.Task from File\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"jovkusuma"},"content":" return listOfTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"jovkusuma"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"Invalid date format! Pleas input date using the format yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"jovkusuma"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS !!! Can\u0027t Load duke.task.Task from File\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"jovkusuma"},"content":" public void writeToFile(TaskList tasks) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"jovkusuma"},"content":" FileWriter fileWriter \u003d new FileWriter(STORAGE_FILE);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"jovkusuma"},"content":" for (int i \u003d 0; i \u003c tasks.getLength(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"jovkusuma"},"content":" Task currTask \u003d tasks.getTask(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"jovkusuma"},"content":" fileWriter.write(currTask.toString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"jovkusuma"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"jovkusuma"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS !!! Can\u0027t write to file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jovkusuma":95}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" public Deadline(String description, String by) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"Invalid date format! Please input in the form of yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" return \"[D]\" + super.toString()","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" + \" (by: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jovkusuma":27}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" protected LocalDate from;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" protected LocalDate to;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" public Event(String description, String from, String to) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" this.from \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" this.to \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"Invalid date format! Please input in the form of yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" return \"[E]\" + super.toString()","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" + \" (from: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" + this.from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" + \" to: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" + this.to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jovkusuma":31}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":" private static final String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" return description;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" System.out.println(this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jovkusuma"},"content":" System.out.println(this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jovkusuma"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jovkusuma"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jovkusuma":41}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" return this.tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" public int getLength() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" return tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" public void remove(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":31}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":" public Todo (String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jovkusuma":12}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":" private static final String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" private static final String MESSAGE \u003d LINE + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" + \" Hello! I\u0027m ChatBot\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" + \" What can I do for you?\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" + LINE + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" public void greet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" System.out.println(MESSAGE);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" public void taskPrint(Task input, int count) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" + \"Got it. I\u0027ve added this task\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" + input + \"\\n\" + \"Now you have \" + count","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" + \" tasks in this list.\" + \"\\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" public void deletePrint(Task input, int count) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" + \"Noted. I\u0027ve removed this task: \" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" + input + \"\\n\" + \"Now you have \" + count","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" + \" tasks in this list.\" + \"\\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jovkusuma"},"content":" public void markDonePrint(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jovkusuma"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \" + \"\\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jovkusuma"},"content":" public void unmarkDonePrint(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jovkusuma"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \" + \"\\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jovkusuma"},"content":" public void bye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jovkusuma"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jovkusuma"},"content":" public void listOfTasks(TaskList tasksList, int count) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jovkusuma"},"content":" for (int i \u003d 0; i \u003c count; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jovkusuma"},"content":" System.out.println((i + 1) + \".\" + tasksList.getTask(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jovkusuma"},"content":" public void errorPrint(DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jovkusuma"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":64}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"deadline return book /by Monday 28 Aug @ 5pm","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"todo borrow LOTR book","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"event project meeting /from Wednesday, 23 Aug @ 8pm /to Thursday, 24 Aug @ 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"deadline register book /by Wednesday 30 Aug @ 5pm","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jovkusuma":15}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" public Duke() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" public void run() {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" this.ui.greet();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" this.storage.init();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" this.tasks \u003d this.storage.readFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" this.ui.errorPrint(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jovkusuma"},"content":" String input \u003d this.scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jovkusuma"},"content":" Command command \u003d Parser.parse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jovkusuma"},"content":" command.execute(this.tasks, this.ui, this.storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jovkusuma"},"content":" if (input.split(\" \")[0].equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jovkusuma"},"content":" this.scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jovkusuma"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"jovkusuma"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jovkusuma"},"content":" this.ui.errorPrint(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jovkusuma"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jovkusuma"},"content":" duke.run();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jovkusuma":45,"-":4}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"public class AddCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" private String command;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" public AddCommand(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" if (command.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" } else if (command.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" } else if (command.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" String task \u003d command.substring(0, command.indexOf(\" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" if (task.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" Task currTask \u003d new Todo(command.replace(\"todo\", \"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" tasks.add(currTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" ui.taskPrint(currTask, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" } else if (task.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":" String[] s \u003d command.replace(\"event \", \"\").split(\" /from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jovkusuma"},"content":" Task currTask \u003d new Event(s[0], s[1], s[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jovkusuma"},"content":" tasks.add(currTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jovkusuma"},"content":" ui.taskPrint(currTask,tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jovkusuma"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"Invalid date format! Please command date using the format yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jovkusuma"},"content":" } else if (task.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jovkusuma"},"content":" String[] s \u003d command.replace(\"deadline \", \"\").split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jovkusuma"},"content":" Task currTask \u003d new Deadline(s[0], s[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jovkusuma"},"content":" tasks.add(currTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jovkusuma"},"content":" ui.taskPrint(currTask,tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jovkusuma"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"Invalid date format! Please command date using the format yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jovkusuma"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"Oops! I\u0027m sorry, I don\u0027t know what that means.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":53}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" public abstract void execute(TaskList task, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":10}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" if(index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.getLength()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" ui.deletePrint(tasks.getTask(index), tasks.getTaskCount() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":21}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" ui.bye();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":15}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" ui.listOfTasks(tasks, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":14}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" ui.markDonePrint(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":20}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" task.unmarkDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" ui.unmarkDonePrint(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":20}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import java.lang.Exception;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" return super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jovkusuma":13}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.command.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":" public static Command parse(String input) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":" if (!input.contains(\" \")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" } else if (input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"I\u0027m sorry, I don\u0027t know what that means\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" String task \u003d input.substring(0, input.indexOf(\" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" if (task.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" return new MarkCommand(Integer.parseInt(input.split(\" \")[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" } else if (task.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" return new UnmarkCommand(Integer.parseInt(input.split(\" \")[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" } else if (task.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" return new DeleteCommand(Integer.parseInt(input.split(\" \")[1]) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" return new AddCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":30}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.task.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" private final String DIRECTORY \u003d \"./data\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" private final String FILE_PATH \u003d DIRECTORY + \"/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" private File STORAGE_FILE;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" private DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" public void init() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" File dir \u003d new File(this.DIRECTORY);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" dir.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" this.STORAGE_FILE \u003d new File(this.FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" if (!STORAGE_FILE.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" STORAGE_FILE.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jovkusuma"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS !!! It seems that a new file cannot be created.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jovkusuma"},"content":" public TaskList readFromFile() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jovkusuma"},"content":" TaskList listOfTasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jovkusuma"},"content":" Scanner scanner \u003d new Scanner(this.STORAGE_FILE);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jovkusuma"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jovkusuma"},"content":" String task \u003d scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jovkusuma"},"content":" String type \u003d task.substring(1, 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jovkusuma"},"content":" String mark \u003d task.substring(4, 5);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jovkusuma"},"content":" String description \u003d task.substring(7);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jovkusuma"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jovkusuma"},"content":" Task todo \u003d new Todo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jovkusuma"},"content":" if (mark.equals(\"X\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jovkusuma"},"content":" todo.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jovkusuma"},"content":" listOfTasks.add(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jovkusuma"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jovkusuma"},"content":" String[] s \u003d description.split(\" \\\\(from: | to: |\\\\)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jovkusuma"},"content":" LocalDate from \u003d LocalDate.parse(s[1], formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jovkusuma"},"content":" LocalDate to \u003d LocalDate.parse(s[2], formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"jovkusuma"},"content":" Task event \u003d new Event(s[0], from.toString(), to.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"jovkusuma"},"content":" if (mark.equals(\"X\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jovkusuma"},"content":" event.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"jovkusuma"},"content":" listOfTasks.add(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jovkusuma"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jovkusuma"},"content":" String[] s \u003d description.split(\" \\\\(by: |\\\\)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jovkusuma"},"content":" LocalDate by \u003d LocalDate.parse(s[1], formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"jovkusuma"},"content":" Task deadline \u003d new Deadline(s[0], by.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"jovkusuma"},"content":" if (mark.equals(\"X\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"jovkusuma"},"content":" deadline.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"jovkusuma"},"content":" listOfTasks.add(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"jovkusuma"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS !!! Can\u0027t Load duke.task.Task from File\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"jovkusuma"},"content":" return listOfTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"jovkusuma"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"Invalid date format! Pleas input date using the format yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"jovkusuma"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS !!! Can\u0027t Load duke.task.Task from File\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"jovkusuma"},"content":" public void writeToFile(TaskList tasks) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"jovkusuma"},"content":" FileWriter fileWriter \u003d new FileWriter(STORAGE_FILE);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"jovkusuma"},"content":" for (int i \u003d 0; i \u003c tasks.getLength(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"jovkusuma"},"content":" Task currTask \u003d tasks.getTask(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"jovkusuma"},"content":" fileWriter.write(currTask.toString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"jovkusuma"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"jovkusuma"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"OOPS !!! Can\u0027t write to file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jovkusuma":95}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" public Deadline(String description, String by) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"Invalid date format! Please input in the form of yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" return \"[D]\" + super.toString()","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" + \" (by: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jovkusuma":27}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" protected LocalDate from;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" protected LocalDate to;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" public Event(String description, String from, String to) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" this.from \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" this.to \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" throw new DukeException(\"Invalid date format! Please input in the form of yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" return \"[E]\" + super.toString()","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" + \" (from: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" + this.from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" + \" to: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" + this.to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jovkusuma":31}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":" private static final String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" return description;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" System.out.println(this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jovkusuma"},"content":" System.out.println(this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jovkusuma"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jovkusuma"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jovkusuma":41}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" return this.tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" public int getLength() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" return tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" public void remove(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":31}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":" public Todo (String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jovkusuma":12}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":" private static final String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":" private static final String MESSAGE \u003d LINE + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" + \" Hello! I\u0027m ChatBot\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" + \" What can I do for you?\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" + LINE + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" public void greet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" System.out.println(MESSAGE);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" public void taskPrint(Task input, int count) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" + \"Got it. I\u0027ve added this task\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" + input + \"\\n\" + \"Now you have \" + count","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" + \" tasks in this list.\" + \"\\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" public void deletePrint(Task input, int count) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" + \"Noted. I\u0027ve removed this task: \" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" + input + \"\\n\" + \"Now you have \" + count","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" + \" tasks in this list.\" + \"\\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jovkusuma"},"content":" public void markDonePrint(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jovkusuma"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \" + \"\\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"jovkusuma"},"content":" public void unmarkDonePrint(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"jovkusuma"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \" + \"\\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"jovkusuma"},"content":" public void bye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"jovkusuma"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jovkusuma"},"content":" public void listOfTasks(TaskList tasksList, int count) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jovkusuma"},"content":" for (int i \u003d 0; i \u003c count; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jovkusuma"},"content":" System.out.println((i + 1) + \".\" + tasksList.getTask(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"jovkusuma"},"content":" public void errorPrint(DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jovkusuma"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jovkusuma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":64}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" public void parse_invalidCommand_exceptionThrown() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" parser.parse(\"abcde\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" fail(\"This should not be possible! It should have thrown an error.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" assertEquals(\"I\u0027m sorry, I don\u0027t know what that means\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" public void parse_listCommand_valid() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" Command list \u003d Parser.parse(\"list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":" assertTrue(list instanceof ListCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"jovkusuma"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"jovkusuma"},"content":" fail(\"This should not be possible! It should have worked properly\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":34}},{"path":"src/test/java/duke/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"public class EventTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":" public void event_toString_validCommand_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":" Task event \u003d new Event(\"Birthday Party\", \"2023-09-01\", \"2023-09-02\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":" String expectedOutcome \u003d \"[E][ ] Birthday Party (from: Sep 01 2023 to: Sep 02 2023)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":" assertEquals(expectedOutcome, event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"jovkusuma"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"jovkusuma"},"content":" fail(\"This should not be possible! It should have worked properly.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"jovkusuma"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"jovkusuma"},"content":" public void event_toString_invalidCommand_throwException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"jovkusuma"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jovkusuma"},"content":" Task event \u003d new Event(\"Birthday Party\", \"2023-08-31\", \"2023-08-32\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jovkusuma"},"content":" fail(\"This should not be possible! It should have thrown a DukeException\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jovkusuma"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jovkusuma"},"content":" assertEquals(\"Invalid date format! Please input in the form of yyyy-MM-dd\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"jovkusuma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"jovkusuma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"jovkusuma":29}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jovkusuma"},"content":"deadline return book /by Monday 28 Aug @ 5pm","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jovkusuma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jovkusuma"},"content":"todo borrow LOTR book","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jovkusuma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jovkusuma"},"content":"event project meeting /from Wednesday, 23 Aug @ 8pm /to Thursday, 24 Aug @ 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jovkusuma"},"content":"deadline register book /by Wednesday 30 Aug @ 5pm","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jovkusuma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jovkusuma"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jovkusuma"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jovkusuma"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jovkusuma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jovkusuma"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jovkusuma"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jovkusuma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jovkusuma"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jovkusuma":15}}] diff --git a/jovkusuma_ip_master/commits.json b/jovkusuma_ip_master/commits.json index 9153451e..66bc1540 100644 --- a/jovkusuma_ip_master/commits.json +++ b/jovkusuma_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jovkusuma":[{"date":"2023-08-24","commitResults":[{"hash":"780d24d8804daa914ca9b82da888da971cd2ba30","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"0b518f9158f2db6885310a6ad05c0ef217a238ce","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"46c18dd8ea3a12f96b64e3dd2e4699078e8fff5c","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":6}}},{"hash":"b21c7b5235a89f073d569fa3ac5abf5686b81a40","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":6}}},{"hash":"5617186079a95f4ada94008db3fedfe3152129e5","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":13}}},{"hash":"78f196ab2cb0bbec874379439e1f91a6be04d293","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":9,"deletions":8},"sh":{"insertions":0,"deletions":0}}},{"hash":"8c507af545cf23b1b59a8adfb6b1074e9ec91e14","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":71,"deletions":50}}},{"hash":"987fffcd512ad6de5004771829b3063fd3bd9dd9","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}}]},{"date":"2023-08-29","commitResults":[{"hash":"dd32752e8319c8efd16902a2826ac6cfdfa191df","isMergeCommit":false,"messageTitle":"Fix code structure","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":217,"deletions":58}}}]},{"date":"2023-08-30","commitResults":[{"hash":"96ecf426dfb48b556bf2e5c49acdc12f368954b2","isMergeCommit":false,"messageTitle":"Implement storage file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":147,"deletions":187}}}]},{"date":"2023-08-31","commitResults":[{"hash":"7a3c7acff360e57bd9a94ac63f468d7e6825d2ea","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"973332a857213919ee1a01d322ad1aea79e12c11","isMergeCommit":false,"messageTitle":"Use LocalDate for time","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":16}}},{"hash":"0d53785b9067e464d797739706b2d53ace3eb3a7","isMergeCommit":false,"messageTitle":"Fix code errors","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":18}}}]},{"date":"2023-09-01","commitResults":[{"hash":"0082fe6e81961f78a31d671afa11b6613f2d8f54","isMergeCommit":false,"messageTitle":"Segment code to different classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":379,"deletions":123}}},{"hash":"fa3b188ad81dd429ae326a2b36b35e44dda08cc3","isMergeCommit":false,"messageTitle":"Fix count mistake","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"0f809890d072f5ae80f015d79b812195a43950ed","isMergeCommit":false,"messageTitle":"Organize into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":23}}},{"hash":"21cb48e4310b22f839362343f770d1487288ac82","isMergeCommit":false,"messageTitle":"Remove comments in Duke file","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":128}}}]}]},"authorFileTypeContributionMap":{"jovkusuma":{"java":542,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"jovkusuma":46660.46},"authorDisplayNameMap":{"jovkusuma":"CS2103T-F10-4 ARMA..SUMA"}} +{"authorDailyContributionsMap":{"jovkusuma":[{"date":"2023-08-24","commitResults":[{"hash":"780d24d8804daa914ca9b82da888da971cd2ba30","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"0b518f9158f2db6885310a6ad05c0ef217a238ce","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"46c18dd8ea3a12f96b64e3dd2e4699078e8fff5c","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":6}}},{"hash":"b21c7b5235a89f073d569fa3ac5abf5686b81a40","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":6}}},{"hash":"5617186079a95f4ada94008db3fedfe3152129e5","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":13}}},{"hash":"78f196ab2cb0bbec874379439e1f91a6be04d293","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":9,"deletions":8},"sh":{"insertions":0,"deletions":0}}},{"hash":"8c507af545cf23b1b59a8adfb6b1074e9ec91e14","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":71,"deletions":50}}},{"hash":"987fffcd512ad6de5004771829b3063fd3bd9dd9","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}}]},{"date":"2023-08-29","commitResults":[{"hash":"dd32752e8319c8efd16902a2826ac6cfdfa191df","isMergeCommit":false,"messageTitle":"Fix code structure","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":217,"deletions":58}}}]},{"date":"2023-08-30","commitResults":[{"hash":"96ecf426dfb48b556bf2e5c49acdc12f368954b2","isMergeCommit":false,"messageTitle":"Implement storage file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":147,"deletions":187}}}]},{"date":"2023-08-31","commitResults":[{"hash":"7a3c7acff360e57bd9a94ac63f468d7e6825d2ea","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"973332a857213919ee1a01d322ad1aea79e12c11","isMergeCommit":false,"messageTitle":"Use LocalDate for time","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":16}}},{"hash":"0d53785b9067e464d797739706b2d53ace3eb3a7","isMergeCommit":false,"messageTitle":"Fix code errors","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":18}}}]},{"date":"2023-09-01","commitResults":[{"hash":"0082fe6e81961f78a31d671afa11b6613f2d8f54","isMergeCommit":false,"messageTitle":"Segment code to different classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":379,"deletions":123}}},{"hash":"fa3b188ad81dd429ae326a2b36b35e44dda08cc3","isMergeCommit":false,"messageTitle":"Fix count mistake","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"0f809890d072f5ae80f015d79b812195a43950ed","isMergeCommit":false,"messageTitle":"Organize into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":23}}},{"hash":"21cb48e4310b22f839362343f770d1487288ac82","isMergeCommit":false,"messageTitle":"Remove comments in Duke file","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":128}}},{"hash":"df7eb485b471d5164081dd78ae95a7fb00a6e0bb","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"e2c2017cf7f8aa32360c3c78e49ca328a3cf4c52","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"jovkusuma":{"java":605,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"jovkusuma":52519.71},"authorDisplayNameMap":{"jovkusuma":"CS2103T-F10-4 ARMA..SUMA"}} diff --git a/junnengsoo_ip_master/authorship.json b/junnengsoo_ip_master/authorship.json index 8723063f..53fe207e 100644 --- a/junnengsoo_ip_master/authorship.json +++ b/junnengsoo_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"T | 0 | test","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"D | 0 | test | 2023-12-06","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"E | 0 | test | 2023-10-06 | 2023-11-06","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"junnengsoo":3}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"import Task.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"import Task.Deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"import Task.Event;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"import Task.Todo;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"import Exception.UnknownCommandException;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"import Exception.EmptyDescriptionException;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" private static final String DATA_PATH \u003d \"./data\";","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" private static final String FILE_PATH \u003d DATA_PATH + \"/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" // Save tasks to file","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" public static void saveToFile(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" if (!Files.exists(Paths.get(DATA_PATH))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" Files.createDirectories(Paths.get(DATA_PATH));","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" List\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" lines.add(task.toFileFormat());","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" Files.write(Paths.get(FILE_PATH), lines);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" System.out.println(\"Error while saving tasks to file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"junnengsoo"},"content":" // Load tasks from file","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"junnengsoo"},"content":" public static ArrayList\u003cTask\u003e loadFromFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"junnengsoo"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"junnengsoo"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"junnengsoo"},"content":" if (Files.exists(Paths.get(FILE_PATH))) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"junnengsoo"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(Paths.get(FILE_PATH));","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"junnengsoo"},"content":" for (String line : lines) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"junnengsoo"},"content":" tasks.add(Task.fromFileFormat(line));","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"junnengsoo"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"junnengsoo"},"content":" System.out.println(\"Error while loading tasks from file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"junnengsoo"},"content":" } catch (Exception e) { // Handling corrupted data format","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"junnengsoo"},"content":" System.out.println(\"Corrupted data file. Starting with an empty task list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"junnengsoo"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"junnengsoo"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"junnengsoo"},"content":" public static void filterInput(String[] words) throws UnknownCommandException, EmptyDescriptionException {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"junnengsoo"},"content":" // Only allows commands that are listed below","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"junnengsoo"},"content":" String command \u003d words[0];","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"junnengsoo"},"content":" boolean validCommand2Words \u003d command.equals(\"todo\") || command.equals(\"deadline\") || command.equals(\"event\") ||","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"junnengsoo"},"content":" command.equals(\"mark\") || command.equals(\"unmark\") || command.equals(\"delete\");","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"junnengsoo"},"content":" boolean validCommand1Word \u003d command.equals(\"bye\") || command.equals(\"list\") || command.equals(\"help\");","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"junnengsoo"},"content":" if (!validCommand2Words \u0026\u0026 !validCommand1Word) {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"junnengsoo"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"junnengsoo"},"content":" } else if (validCommand2Words \u0026\u0026 words.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"junnengsoo"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":75,"author":{"gitId":"junnengsoo"},"content":" String logo \u003d \"\u003e. \u003c\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"junnengsoo"},"content":" String name \u003d \"your father\";","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"junnengsoo"},"content":" String line \u003d \"_________________________\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"junnengsoo"},"content":" System.out.println(logo +","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"junnengsoo"},"content":" line +","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"junnengsoo"},"content":" \"Hello! I\u0027m \" + name + \"\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"junnengsoo"},"content":" \"What can I do for you?\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"junnengsoo"},"content":" line);","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"junnengsoo"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"junnengsoo"},"content":" String input;","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"junnengsoo"},"content":" ArrayList\u003cTask\u003e tasks \u003d loadFromFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"junnengsoo"},"content":" int taskIndex \u003d tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"junnengsoo"},"content":" while (true) {","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"junnengsoo"},"content":" input \u003d scanner.nextLine().toLowerCase();","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"junnengsoo"},"content":" String[] words \u003d input.split(\" \", 2); // splits into the command and the rest","lastModifiedDate":"2023-08-22"},{"lineNumber":93,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":94,"author":{"gitId":"junnengsoo"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"junnengsoo"},"content":" filterInput(words);","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"junnengsoo"},"content":" } catch (UnknownCommandException | EmptyDescriptionException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line + e.getMessage() + \"\\n\" + line);","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"junnengsoo"},"content":" continue;","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":101,"author":{"gitId":"junnengsoo"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"junnengsoo"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"junnengsoo"},"content":" } else if (words[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"junnengsoo"},"content":" int index \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"junnengsoo"},"content":" Task removedTask \u003d tasks.remove(index); // Removes and retrieves the task from the list","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"junnengsoo"},"content":" taskIndex--;","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line +","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"junnengsoo"},"content":" \"Noted. I\u0027ve removed this task:\\n \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"junnengsoo"},"content":" removedTask +","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"junnengsoo"},"content":" \"\\nNow you have \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"junnengsoo"},"content":" tasks.size() +","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"junnengsoo"},"content":" \" tasks in the list.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"junnengsoo"},"content":" line);","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"junnengsoo"},"content":" } else if (input.equals(\"help\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line + \"\\nCommands:\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"junnengsoo"},"content":" \"- To add a todo: \u0027todo [description]\u0027\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"junnengsoo"},"content":" \"- To add a deadline: \u0027deadline [description] /by [date in format yyyy-MM-dd]\u0027\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"junnengsoo"},"content":" \"- To add an event: \u0027event [description] /from [start date in format yyyy-MM-dd] /to \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"junnengsoo"},"content":" \"[end date in format yyyy-MM-dd]\u0027\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"junnengsoo"},"content":" line);","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"junnengsoo"},"content":" } else if (words[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":122,"author":{"gitId":"junnengsoo"},"content":" Task newTask \u003d new Todo(words[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"junnengsoo"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"junnengsoo"},"content":" taskIndex++;","lastModifiedDate":"2023-08-22"},{"lineNumber":125,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line + \"Got it. I\u0027ve added this task:\\n \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"junnengsoo"},"content":" newTask +","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"junnengsoo"},"content":" \"\\nNow you have \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":128,"author":{"gitId":"junnengsoo"},"content":" taskIndex +","lastModifiedDate":"2023-08-22"},{"lineNumber":129,"author":{"gitId":"junnengsoo"},"content":" \" tasks in the list.\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"junnengsoo"},"content":" line);","lastModifiedDate":"2023-08-22"},{"lineNumber":131,"author":{"gitId":"junnengsoo"},"content":" } else if (words[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":132,"author":{"gitId":"junnengsoo"},"content":" String[] parts \u003d words[1].split(\" /by \");","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"junnengsoo"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line + \"Error: Please use the format \u0027deadline \u003ctask description\u003e \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"junnengsoo"},"content":" \"/by yyyy-MM-dd\u0027\\n\" + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"junnengsoo"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"junnengsoo"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"junnengsoo"},"content":" LocalDate.parse(parts[1]); // This will throw an exception if the date format is invalid","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"junnengsoo"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line + \"Error: Please enter the date in the format \u0027yyyy-MM-dd\u0027.\\n\" + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"junnengsoo"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"junnengsoo"},"content":" Task newTask \u003d new Deadline(parts[0], parts[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"junnengsoo"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"junnengsoo"},"content":" taskIndex++;","lastModifiedDate":"2023-08-22"},{"lineNumber":147,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line +","lastModifiedDate":"2023-08-22"},{"lineNumber":148,"author":{"gitId":"junnengsoo"},"content":" \"Got it. I\u0027ve added this task:\\n \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":149,"author":{"gitId":"junnengsoo"},"content":" newTask +","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"junnengsoo"},"content":" \"\\nNow you have \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":151,"author":{"gitId":"junnengsoo"},"content":" taskIndex +","lastModifiedDate":"2023-08-22"},{"lineNumber":152,"author":{"gitId":"junnengsoo"},"content":" \" tasks in the list.\\n\" + line);","lastModifiedDate":"2023-08-22"},{"lineNumber":153,"author":{"gitId":"junnengsoo"},"content":" } else if (words[0].equals(\"event\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":154,"author":{"gitId":"junnengsoo"},"content":" String[] parts \u003d words[1].split(\" /from \"); // second part will consist the timings","lastModifiedDate":"2023-08-22"},{"lineNumber":155,"author":{"gitId":"junnengsoo"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line + \"Error: Please use the format \u0027event \u003cevent description\u003e /from yyyy-MM-dd \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"junnengsoo"},"content":" \"/to yyyy-MM-dd\u0027\\n\" + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"junnengsoo"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"junnengsoo"},"content":" String[] times \u003d parts[1].split(\" /to \");","lastModifiedDate":"2023-08-22"},{"lineNumber":161,"author":{"gitId":"junnengsoo"},"content":" if (times.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line + \"Error: Please use the format \u0027event \u003cevent description\u003e /from yyyy-MM-dd \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"junnengsoo"},"content":" \"/to yyyy-MM-dd\u0027\\n\" + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"junnengsoo"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"junnengsoo"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"junnengsoo"},"content":" LocalDate.parse(times[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"junnengsoo"},"content":" LocalDate.parse(times[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"junnengsoo"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line + \"Error: Please enter the dates in the format \u0027yyyy-MM-dd\u0027.\\n\" + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"junnengsoo"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"junnengsoo"},"content":" Task newTask \u003d new Event(parts[0], times[0], times[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"junnengsoo"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"junnengsoo"},"content":" taskIndex++;","lastModifiedDate":"2023-08-22"},{"lineNumber":176,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line +","lastModifiedDate":"2023-08-22"},{"lineNumber":177,"author":{"gitId":"junnengsoo"},"content":" \"Got it. I\u0027ve added this task:\\n \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":178,"author":{"gitId":"junnengsoo"},"content":" newTask +","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"junnengsoo"},"content":" \"\\nNow you have \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":180,"author":{"gitId":"junnengsoo"},"content":" taskIndex +","lastModifiedDate":"2023-08-22"},{"lineNumber":181,"author":{"gitId":"junnengsoo"},"content":" \" tasks in the list.\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":182,"author":{"gitId":"junnengsoo"},"content":" line);","lastModifiedDate":"2023-08-22"},{"lineNumber":183,"author":{"gitId":"junnengsoo"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":184,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line + \"\\nHere are the tasks in your list:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":185,"author":{"gitId":"junnengsoo"},"content":" for (int i \u003d 0; i \u003c taskIndex; i++) {","lastModifiedDate":"2023-08-22"},{"lineNumber":186,"author":{"gitId":"junnengsoo"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":188,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-22"},{"lineNumber":189,"author":{"gitId":"junnengsoo"},"content":" } else if (words[0].equals(\"mark\") \u0026\u0026 words.length \u003e 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":190,"author":{"gitId":"junnengsoo"},"content":" int index \u003d Integer.parseInt(words[1]) - 1; // string -\u003e int","lastModifiedDate":"2023-08-23"},{"lineNumber":191,"author":{"gitId":"junnengsoo"},"content":" Task taskToMark \u003d tasks.get(index); // Get the task from the list","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"junnengsoo"},"content":" taskToMark.markDone(); // Mark the task as done","lastModifiedDate":"2023-08-23"},{"lineNumber":193,"author":{"gitId":"junnengsoo"},"content":" tasks.set(index, taskToMark); // Update the task in the list","lastModifiedDate":"2023-08-23"},{"lineNumber":194,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line + \"\\nNice! I\u0027ve marked this task as done:\\n \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":195,"author":{"gitId":"junnengsoo"},"content":" taskToMark +","lastModifiedDate":"2023-08-23"},{"lineNumber":196,"author":{"gitId":"junnengsoo"},"content":" \"\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":197,"author":{"gitId":"junnengsoo"},"content":" line);","lastModifiedDate":"2023-08-22"},{"lineNumber":198,"author":{"gitId":"junnengsoo"},"content":" } else if (words[0].equals(\"unmark\") \u0026\u0026 words.length \u003e 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":199,"author":{"gitId":"junnengsoo"},"content":" int index \u003d Integer.parseInt(words[1]) - 1; // string -\u003e int","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"junnengsoo"},"content":" Task taskToUnmark \u003d tasks.get(index); // Get the task from the list","lastModifiedDate":"2023-08-23"},{"lineNumber":201,"author":{"gitId":"junnengsoo"},"content":" taskToUnmark.unmarkDone(); // Mark the task as done","lastModifiedDate":"2023-08-23"},{"lineNumber":202,"author":{"gitId":"junnengsoo"},"content":" tasks.set(index, taskToUnmark); // Update the task in the list","lastModifiedDate":"2023-08-23"},{"lineNumber":203,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line +","lastModifiedDate":"2023-08-22"},{"lineNumber":204,"author":{"gitId":"junnengsoo"},"content":" \"\\nOK, I\u0027ve marked this task as not done yet:\\n \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":205,"author":{"gitId":"junnengsoo"},"content":" taskToUnmark +","lastModifiedDate":"2023-08-23"},{"lineNumber":206,"author":{"gitId":"junnengsoo"},"content":" \"\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":207,"author":{"gitId":"junnengsoo"},"content":" line);","lastModifiedDate":"2023-08-22"},{"lineNumber":208,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":209,"author":{"gitId":"junnengsoo"},"content":" saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":211,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":212,"author":{"gitId":"junnengsoo"},"content":" System.out.println(line +","lastModifiedDate":"2023-08-22"},{"lineNumber":213,"author":{"gitId":"junnengsoo"},"content":" \"Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":214,"author":{"gitId":"junnengsoo"},"content":" line);","lastModifiedDate":"2023-08-22"},{"lineNumber":215,"author":{"gitId":"junnengsoo"},"content":" scanner.close();","lastModifiedDate":"2023-08-22"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"junnengsoo":213,"-":4}},{"path":"src/main/java/Exception/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package Exception;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":" public EmptyDescriptionException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":" super(\"Type something in the description you dumb dumb, uwu.. \u003e\u003c\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"junnengsoo":7}},{"path":"src/main/java/Exception/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package Exception;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"public class UnknownCommandException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":" public UnknownCommandException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":" super(\"What gibberish are you saying man?!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"junnengsoo":7}},{"path":"src/main/java/Task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":" private final LocalDate dueDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":" public Deadline(String description, String dueDate) {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" this.dueDate \u003d LocalDate.parse(dueDate, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" return \"D | \" + super.toFileFormat() + \" | \" + dueDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" public static Task fromFileFormat(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" Deadline deadline \u003d new Deadline(parts[2], parts[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" deadline.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" return deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" return \"[D][\" + (getIsDone() ? \"X\" : \" \") + \"] \" + getDescription() + \" (by: \" + dueDate.format(formatter) +","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"junnengsoo":36}},{"path":"src/main/java/Task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":" private final LocalDate start;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" private final LocalDate end;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" this.start \u003d LocalDate.parse(start, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":" this.end \u003d LocalDate.parse(end, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" return \"E | \" + super.toFileFormat() + \" | \" + start + \" | \" + end;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" public static Task fromFileFormat(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" Event event \u003d new Event(parts[2], parts[3], parts[4]);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" event.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":" return event;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" return \"[E][\" + (getIsDone() ? \"X\" : \" \") + \"] \" + getDescription() + \" (from: \" + start.format(formatter) +","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" \" to: \" + end.format(formatter) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"junnengsoo":37}},{"path":"src/main/java/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":" private String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":" this.isDone \u003d false; // Initially, the task is not done","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" public void markDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" public boolean getIsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" return this.isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" return this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" return (getIsDone() ? \"1\" : \"0\") + \" | \" + getDescription();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" public static Task fromFileFormat(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" switch (parts[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" return Todo.fromFileFormat(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":" return Deadline.fromFileFormat(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"junnengsoo"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"junnengsoo"},"content":" return Event.fromFileFormat(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"junnengsoo"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"junnengsoo"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"junnengsoo"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"junnengsoo"},"content":" return \"[\" + (isDone ? \"X\" : \" \") + \"] \" + description;","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"junnengsoo":51}},{"path":"src/main/java/Task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"import Task.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" return \"T | \" + super.toFileFormat();","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":" public static Task fromFileFormat(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" Todo todo \u003d new Todo(parts[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" todo.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" return todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" return \"[T][\" + (getIsDone() ? \"X\" : \" \") + \"] \" + getDescription();","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"junnengsoo":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"hello","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"todo homework","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"junnengsoo":4}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"s@ECHO OFF","lastModifiedDate":"2023-08-23"},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"junnengsoo":1,"-":20}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"plugins {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":" id \u0027java\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":" id \u0027application\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":"repositories {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" mavenCentral()","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":"dependencies {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":"test {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" useJUnitPlatform()","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" testLogging {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" showExceptions true","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" showCauses true","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" showStackTraces true","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":"application {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":"shadowJar {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"junnengsoo"},"content":"run{","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"junnengsoo"},"content":" standardInput \u003d System.in","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"junnengsoo":43}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"T | 0 | test","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"D | 0 | test | 2023-12-06","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"E | 0 | test | 2023-10-06 | 2023-11-06","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"T | 0 | run","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"T | 1 | test","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"junnengsoo":5}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":"import duke.exception.UnknownCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" * Represents the Duke chat bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" * A \u003ccode\u003eDuke\u003c/code\u003e object corresponds to a chat bot that can process user input and respond accordingly.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" private static final String DATA_PATH \u003d \"./data\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" private static final String FILE_PATH \u003d DATA_PATH + \"/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" private static final Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" private final Storage storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":" private static final String LINE \u003d \"_________________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" * Constructs a \u003ccode\u003eDuke\u003c/code\u003e object.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" * @throws IOException If there is an error loading the tasks from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" Duke() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" this.tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"junnengsoo"},"content":" * Deletes a task from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"junnengsoo"},"content":" * @param taskIndex The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"junnengsoo"},"content":" * @throws IOException If there is an error saving the tasks to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"junnengsoo"},"content":" public void deleteTask(String taskIndex) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"junnengsoo"},"content":" int index \u003d Integer.parseInt(taskIndex) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"junnengsoo"},"content":" Task removedTask \u003d tasks.removeTask(index); // Removes and retrieves the task from the list","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"junnengsoo"},"content":" + \"Noted. I\u0027ve removed this task:\\n \" + removedTask","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"junnengsoo"},"content":" + \"\\nNow you have \" + tasks.getSize() + \" tasks in the list.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"junnengsoo"},"content":" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"junnengsoo"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"junnengsoo"},"content":" * Adds a todo task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"junnengsoo"},"content":" * @param task The description of the todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"junnengsoo"},"content":" * @throws IOException If there is an error saving the tasks to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"junnengsoo"},"content":" public void addTodo(String task) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"junnengsoo"},"content":" Task newTask \u003d new Todo(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"junnengsoo"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"junnengsoo"},"content":" + \"Got it. I\u0027ve added this task:\\n \" + newTask","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"junnengsoo"},"content":" + \"\\nNow you have \" + tasks.getSize() + \" tasks in the list.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"junnengsoo"},"content":" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"junnengsoo"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"junnengsoo"},"content":" * Adds a deadline task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"junnengsoo"},"content":" * @param task The description of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"junnengsoo"},"content":" * @throws DateTimeParseException If the date format is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"junnengsoo"},"content":" * @throws IOException If there is an error saving the tasks to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"junnengsoo"},"content":" public void addDeadline(String task) throws DateTimeParseException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"junnengsoo"},"content":" String[] parts \u003d task.split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"junnengsoo"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE + \"Please use the format \u0027deadline \u003ctask description\u003e \"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"junnengsoo"},"content":" + \"/by yyyy-MM-dd\u0027\\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"junnengsoo"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"junnengsoo"},"content":" LocalDate.parse(parts[1]); // This will throw an exception if the date format is invalid","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"junnengsoo"},"content":" Task newTask \u003d new Deadline(parts[0], parts[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"junnengsoo"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"junnengsoo"},"content":" + \"Got it. I\u0027ve added this task:\\n \" + newTask","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"junnengsoo"},"content":" + \"\\nNow you have \" + tasks.getSize() + \" tasks in the list.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"junnengsoo"},"content":" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"junnengsoo"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"junnengsoo"},"content":" * Adds an event task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"junnengsoo"},"content":" * @param task The description of the event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"junnengsoo"},"content":" * @throws DateTimeParseException If the date format is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"junnengsoo"},"content":" * @throws IOException If there is an error saving the tasks to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"junnengsoo"},"content":" public void addEvent(String task) throws DateTimeParseException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"junnengsoo"},"content":" String[] parts \u003d task.split(\" /from \"); // second part will consist the timings","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"junnengsoo"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE + \"Please use the format \u0027event \u003cevent description\u003e /from yyyy-MM-dd \"","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"junnengsoo"},"content":" + \"/to yyyy-MM-dd\u0027\\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"junnengsoo"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"junnengsoo"},"content":" String[] times \u003d parts[1].split(\" /to \");","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"junnengsoo"},"content":" if (times.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE + \"Please use the format \u0027event \u003cevent description\u003e /from yyyy-MM-dd \"","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"junnengsoo"},"content":" + \"/to yyyy-MM-dd\u0027\\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"junnengsoo"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"junnengsoo"},"content":" // Throws exception if invalid format","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"junnengsoo"},"content":" LocalDate.parse(times[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"junnengsoo"},"content":" LocalDate.parse(times[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"junnengsoo"},"content":" Task newTask \u003d new Event(parts[0], times[0], times[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"junnengsoo"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE +","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"junnengsoo"},"content":" \"Got it. I\u0027ve added this task:\\n \" + newTask","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"junnengsoo"},"content":" + \"\\nNow you have \" + tasks.getSize() + \" tasks in the list.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"junnengsoo"},"content":" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"junnengsoo"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"junnengsoo"},"content":" * Lists all the tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"junnengsoo"},"content":" public void listTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"junnengsoo"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"junnengsoo"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"junnengsoo"},"content":" * Marks a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"junnengsoo"},"content":" * @param task The index of the task to be marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"junnengsoo"},"content":" * @throws IOException If there is an error saving the tasks to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"junnengsoo"},"content":" public void markTaskDone(String task) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"junnengsoo"},"content":" int index \u003d Integer.parseInt(task) - 1; // string -\u003e int","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"junnengsoo"},"content":" Task taskMarked \u003d tasks.markDone(index); // Update the task in the list","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE + \"\\nNice! I\u0027ve marked this task as done:\\n \" + taskMarked + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"junnengsoo"},"content":" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"junnengsoo"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"junnengsoo"},"content":" * Marks a task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"junnengsoo"},"content":" * @param task The index of the task to be marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"junnengsoo"},"content":" * @throws IOException If there is an error saving the tasks to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"junnengsoo"},"content":" public void unmarkTaskDone(String task) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"junnengsoo"},"content":" int index \u003d Integer.parseInt(task) - 1; // string -\u003e int","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"junnengsoo"},"content":" Task taskUnmarked \u003d tasks.unmarkDone(index); // Update the task in the list","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"junnengsoo"},"content":" + \"\\nOK, I\u0027ve marked this task as not done yet:\\n \" + taskUnmarked + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"junnengsoo"},"content":" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"junnengsoo"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":159,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"junnengsoo"},"content":" * Finds and lists all tasks that contain the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"junnengsoo"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"junnengsoo"},"content":" * @param keyword The keyword to search for.","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"junnengsoo"},"content":" public void findAndListTasks(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"junnengsoo"},"content":" ArrayList\u003cTask\u003e matchedTasks \u003d tasks.findTasks(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"junnengsoo"},"content":" if (matchedTasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE + \"No tasks found with the keyword: \" + keyword + \"\\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"junnengsoo"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE + \"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"junnengsoo"},"content":" for (int i \u003d 0; i \u003c matchedTasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"junnengsoo"},"content":" System.out.println((i + 1) + \".\" + matchedTasks.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"junnengsoo"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"junnengsoo"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"junnengsoo"},"content":" * Processes the user input and responds accordingly.","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"junnengsoo"},"content":" * @param input The user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"junnengsoo"},"content":" * @return \u003ccode\u003etrue\u003c/code\u003e if the program should continue running, \u003ccode\u003efalse\u003c/code\u003e otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"junnengsoo"},"content":" * @throws EmptyDescriptionException If the user input is empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"junnengsoo"},"content":" * @throws UnknownCommandException If the user input is not recognized.","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"junnengsoo"},"content":" * @throws DateTimeParseException If the date format is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"junnengsoo"},"content":" * @throws IOException If there is an error saving the tasks to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"junnengsoo"},"content":" public boolean processInput(String input) ","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"junnengsoo"},"content":" throws EmptyDescriptionException, UnknownCommandException, DateTimeParseException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"junnengsoo"},"content":" String[] words \u003d Parser.parseCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"junnengsoo"},"content":" switch (words[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"junnengsoo"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"junnengsoo"},"content":" ui.printMessage(LINE + \"Bye. Hope to see you again soon!\\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"junnengsoo"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"junnengsoo"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"junnengsoo"},"content":" deleteTask(words[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"junnengsoo"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"junnengsoo"},"content":" case \"help\":","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"junnengsoo"},"content":" ui.printMessage(LINE + \"\\nCommands:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"junnengsoo"},"content":" + \"- To add a todo: \u0027todo [description]\u0027\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"junnengsoo"},"content":" + \"- To add a deadline: \u0027deadline [description] /by [date in format yyyy-MM-dd]\u0027\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"junnengsoo"},"content":" + \"- To add an event: \u0027event [description] /from [start date in format yyyy-MM-dd] /to \"","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"junnengsoo"},"content":" + \"[end date in format yyyy-MM-dd]\u0027\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"junnengsoo"},"content":" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"junnengsoo"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"junnengsoo"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"junnengsoo"},"content":" addTodo(words[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"junnengsoo"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"junnengsoo"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"junnengsoo"},"content":" addDeadline(words[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"junnengsoo"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"junnengsoo"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"junnengsoo"},"content":" addEvent(words[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"junnengsoo"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"junnengsoo"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"junnengsoo"},"content":" listTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"junnengsoo"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"junnengsoo"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"junnengsoo"},"content":" markTaskDone(words[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"junnengsoo"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"junnengsoo"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"junnengsoo"},"content":" unmarkTaskDone(words[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"junnengsoo"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"junnengsoo"},"content":" case \"find\":","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"junnengsoo"},"content":" findAndListTasks(words[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"junnengsoo"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"junnengsoo"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"junnengsoo"},"content":" // Handle any other cases or errors","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"junnengsoo"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"junnengsoo"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":232,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":233,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"junnengsoo"},"content":" * Runs the Duke chat bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"junnengsoo"},"content":" * @param args The command line arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"junnengsoo"},"content":" String logo \u003d \"\u003e. \u003c\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"junnengsoo"},"content":" String name \u003d \"your father\";","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"junnengsoo"},"content":" System.out.println(logo","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"junnengsoo"},"content":" + LINE","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"junnengsoo"},"content":" + \"Hello! I\u0027m \" + name + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"junnengsoo"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"junnengsoo"},"content":" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":246,"author":{"gitId":"junnengsoo"},"content":" Duke duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":247,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"junnengsoo"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"junnengsoo"},"content":" duke \u003d new Duke();","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"junnengsoo"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"junnengsoo"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"junnengsoo"},"content":" return; // Exit the program if there\u0027s an IOException when initializing Duke","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"junnengsoo"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":256,"author":{"gitId":"junnengsoo"},"content":" while (isRunning) {","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"junnengsoo"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"junnengsoo"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"junnengsoo"},"content":" isRunning \u003d duke.processInput(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":260,"author":{"gitId":"junnengsoo"},"content":" } catch (UnknownCommandException | EmptyDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"junnengsoo"},"content":" ui.showError(LINE + e.getMessage() + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"junnengsoo"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":263,"author":{"gitId":"junnengsoo"},"content":" ui.showError(LINE + \"Please enter the date in the format \u0027yyyy-MM-dd\u0027.\\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":264,"author":{"gitId":"junnengsoo"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"junnengsoo"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"junnengsoo"},"content":" isRunning \u003d false; // Stop the loop if there\u0027s an IOException","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"junnengsoo":266,"-":4}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"import duke.exception.UnknownCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":" * Represents the parser of the chat bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" * A \u003ccode\u003eParser\u003c/code\u003e object corresponds to the parser of the chat bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" * Parses the user input into the command and the rest of the input.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" * @param input The user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":" * @return The command and the rest of the input.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":" * @throws UnknownCommandException If the command is not recognised.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":" * @throws EmptyDescriptionException If the description of the command is empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":" public static String[] parseCommand(String input) throws UnknownCommandException, EmptyDescriptionException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" String[] words \u003d input.split(\" \", 2); // splits into the command and the rest","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" String command \u003d words[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" boolean validCommand2Words \u003d command.equals(\"todo\") || command.equals(\"deadline\") || command.equals(\"event\") ||","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" command.equals(\"mark\") || command.equals(\"unmark\") || command.equals(\"delete\")","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" || command.equals(\"find\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" boolean validCommand1Word \u003d command.equals(\"bye\") || command.equals(\"list\") || command.equals(\"help\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" if (!validCommand2Words \u0026\u0026 !validCommand1Word) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" } else if (validCommand2Words \u0026\u0026 words.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" return words;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"junnengsoo":35}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" * Represents the storage of the chat bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" * A \u003ccode\u003eStorage\u003c/code\u003e object corresponds to the storage of the chat bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":" * Constructs a \u003ccode\u003eStorage\u003c/code\u003e object.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" * @param filePath The path of the file to store the tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" * Saves the tasks to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" * @param tasks The list of tasks to be saved.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":" * @throws IOException If there is an error saving the tasks to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" List\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" lines.add(task.toFileFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" Files.write(Paths.get(filePath), lines);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"junnengsoo"},"content":" * Loads the tasks from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"junnengsoo"},"content":" * @return The list of tasks loaded from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"junnengsoo"},"content":" * @throws IOException If there is an error loading the tasks from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"junnengsoo"},"content":" public ArrayList\u003cTask\u003e loadTasks() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"junnengsoo"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"junnengsoo"},"content":" if (Files.exists(Paths.get(filePath))) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"junnengsoo"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(Paths.get(filePath));","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"junnengsoo"},"content":" for (String line : lines) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"junnengsoo"},"content":" tasks.add(Task.fromFileFormat(line));","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"junnengsoo"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"junnengsoo":53}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":" * Represents the user interface of the chat bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":" * A \u003ccode\u003eUi\u003c/code\u003e object corresponds to the user interface of the chat bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" * Constructs a \u003ccode\u003eUi\u003c/code\u003e object.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" * Reads the next line of input from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" * @return The next line of input from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":" * Prints the welcome message.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" public void printMessage(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" System.out.println(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" * Prints the welcome message.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":" printMessage(errorMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"junnengsoo":40}},{"path":"src/main/java/duke/exception/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":" * Represents the exception when the description of the command is empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":" * A \u003ccode\u003eEmptyDescriptionException\u003c/code\u003e object corresponds to the exception when the description of the command is empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" public EmptyDescriptionException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":" * Constructs a \u003ccode\u003eEmptyDescriptionException\u003c/code\u003e object.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" super(\"Type something in the description you dumb dumb, uwu.. \u003e\u003c\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"junnengsoo":14}},{"path":"src/main/java/duke/exception/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":" * Represents the exception when the command is not recognised.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":" * A \u003ccode\u003eUnknownCommandException\u003c/code\u003e object corresponds to the exception when the command is not recognised.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":"public class UnknownCommandException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":" * Constructs a \u003ccode\u003eUnknownCommandException\u003c/code\u003e object.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" public UnknownCommandException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" super(\"What gibberish are you saying man?!\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"junnengsoo":14}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":" * Represents a deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" * A \u003ccode\u003eDeadline\u003c/code\u003e object corresponds to a deadline task that has a description and a due date.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" private final LocalDate dueDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":" * Constructs a \u003ccode\u003eDeadline\u003c/code\u003e object.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":" * @param dueDate The due date of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":" public Deadline(String description, String dueDate) {","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" this.dueDate \u003d LocalDate.parse(dueDate, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" * Converts a deadline task to file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" * @return The due date of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" return \"D | \" + super.toFileFormat() + \" | \" + dueDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" * Converts a deadline task from file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" * @return The due date of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":" public static Task fromFileFormat(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"junnengsoo"},"content":" Deadline deadline \u003d new Deadline(parts[2], parts[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"junnengsoo"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"junnengsoo"},"content":" deadline.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"junnengsoo"},"content":" return deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"junnengsoo"},"content":" * Returns the string representation of a deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"junnengsoo"},"content":" * @return The string representation of a deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"junnengsoo"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"junnengsoo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"junnengsoo"},"content":" return \"[D][\" + (getIsDone() ? \"X\" : \" \") + \"] \" + getDescription() + \" (by: \" + dueDate.format(formatter) +","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"junnengsoo"},"content":" \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"junnengsoo":57}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":" * Represents an event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" * A \u003ccode\u003eEvent\u003c/code\u003e object corresponds to an event task that has a description and a start date and end date.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" private final LocalDate start;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" private final LocalDate end;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":" * Constructs a \u003ccode\u003eEvent\u003c/code\u003e object.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":" * @param description The description of the event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" * @param start The start date of the event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":" * @param end The end date of the event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" this.start \u003d LocalDate.parse(start, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" this.end \u003d LocalDate.parse(end, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":" * Converts an event task to file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" * @return The start date and end date of the event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" return \"E | \" + super.toFileFormat() + \" | \" + start + \" | \" + end;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":" * Converts an event task from file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":" * @return The start date and end date of the event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"junnengsoo"},"content":" public static Task fromFileFormat(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"junnengsoo"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"junnengsoo"},"content":" Event event \u003d new Event(parts[2], parts[3], parts[4]);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"junnengsoo"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"junnengsoo"},"content":" event.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"junnengsoo"},"content":" return event;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"junnengsoo"},"content":" * Returns the string representation of an event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"junnengsoo"},"content":" * @return The string representation of an event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"junnengsoo"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"junnengsoo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"junnengsoo"},"content":" return \"[E][\" + (getIsDone() ? \"X\" : \" \") + \"] \" + getDescription() + \" (from: \" + start.format(formatter) +","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"junnengsoo"},"content":" \" to: \" + end.format(formatter) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"junnengsoo":59}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":" private String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" * Constructs a \u003ccode\u003eTask\u003c/code\u003e object.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" this.isDone \u003d false; // Initially, the task is not done","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" public void markDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" * Returns the completion status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" * @return The completion status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" public boolean getIsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" return this.isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"junnengsoo"},"content":" * Returns the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"junnengsoo"},"content":" * @return The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"junnengsoo"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"junnengsoo"},"content":" return this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"junnengsoo"},"content":" * Converts a task to file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"junnengsoo"},"content":" * @return The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"junnengsoo"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"junnengsoo"},"content":" return (getIsDone() ? \"1\" : \"0\") + \" | \" + getDescription();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"junnengsoo"},"content":" * Converts a task from file format depending on what kind of task it is.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"junnengsoo"},"content":" * @return The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"junnengsoo"},"content":" public static Task fromFileFormat(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"junnengsoo"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"junnengsoo"},"content":" switch (parts[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"junnengsoo"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"junnengsoo"},"content":" return Todo.fromFileFormat(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"junnengsoo"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"junnengsoo"},"content":" return Deadline.fromFileFormat(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"junnengsoo"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"junnengsoo"},"content":" return Event.fromFileFormat(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"junnengsoo"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"junnengsoo"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"junnengsoo"},"content":" * Returns the string representation of a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"junnengsoo"},"content":" * @return The string representation of a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"junnengsoo"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"junnengsoo"},"content":" return \"[\" + (isDone ? \"X\" : \" \") + \"] \" + description;","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"junnengsoo":81}},{"path":"src/main/java/duke/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":" * Represents the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":" * A \u003ccode\u003eTaskList\u003c/code\u003e object corresponds to the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" * Constructs a \u003ccode\u003eTaskList\u003c/code\u003e object with an empty list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" * Constructs a \u003ccode\u003eTaskList\u003c/code\u003e object with a selected list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":" * Adds a task to the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" * Removes a task from the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":" * @return The task that is removed.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"junnengsoo"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"junnengsoo"},"content":" return tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"junnengsoo"},"content":" * Gets the size of the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"junnengsoo"},"content":" * @return The size of the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"junnengsoo"},"content":" public int getSize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"junnengsoo"},"content":" return tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"junnengsoo"},"content":" * Marks a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"junnengsoo"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"junnengsoo"},"content":" * @return The task that is marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"junnengsoo"},"content":" public Task markDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"junnengsoo"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"junnengsoo"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"junnengsoo"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"junnengsoo"},"content":" * Marks a task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"junnengsoo"},"content":" * @param index The index of the task to be marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"junnengsoo"},"content":" * @return The task that is marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"junnengsoo"},"content":" public Task unmarkDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"junnengsoo"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"junnengsoo"},"content":" task.unmarkDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"junnengsoo"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"junnengsoo"},"content":" * Gets a task from the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"junnengsoo"},"content":" * @param index The index of the task to be retrieved.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"junnengsoo"},"content":" * @return The task that is retrieved.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"junnengsoo"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"junnengsoo"},"content":" return tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"junnengsoo"},"content":" * Returns an ArrayList of tasks that match the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"junnengsoo"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"junnengsoo"},"content":" * @param keyword The keyword to search for.","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"junnengsoo"},"content":" * @return An ArrayList of tasks that match the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"junnengsoo"},"content":" public ArrayList\u003cTask\u003e findTasks(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"junnengsoo"},"content":" ArrayList\u003cTask\u003e matchedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"junnengsoo"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"junnengsoo"},"content":" if (task.toString().contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"junnengsoo"},"content":" matchedTasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"junnengsoo"},"content":" return matchedTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"junnengsoo"},"content":" * Gets the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"junnengsoo"},"content":" * @return The list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"junnengsoo"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"junnengsoo"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"junnengsoo":106}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":" * Represents a todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":" * A \u003ccode\u003eTodo\u003c/code\u003e object corresponds to a todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":" * Constructs a \u003ccode\u003eTodo\u003c/code\u003e object.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":" * @param description The description of the todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" * Converts a todo task to file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":" * @return The description of the todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" return \"T | \" + super.toFileFormat();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" * Converts a todo task from file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" * @return The description of the todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" public static Task fromFileFormat(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" Todo todo \u003d new Todo(parts[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" todo.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" return todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"junnengsoo"},"content":" * Returns the string representation of a todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"junnengsoo"},"content":" * @return The string representation of a todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"junnengsoo"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"junnengsoo"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"junnengsoo"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"junnengsoo"},"content":" return \"[T][\" + (getIsDone() ? \"X\" : \" \") + \"] \" + getDescription();","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"junnengsoo":46}},{"path":"src/test/java/duke/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":" // We will not modify the Task class as it is simple and does not have any side effects","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" public void addTask_taskAddedToList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":" Task task \u003d new Task(\"Sleep\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":" assertEquals(1, taskList.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":" assertEquals(task, taskList.getTask(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" public void removeTask_taskRemovedFromList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" Task task \u003d new Task(\"Sleep\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":" taskList.removeTask(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" assertEquals(0, taskList.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" public void markDone_taskMarkedAsDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" Task task \u003d new Task(\"Sleep\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" taskList.markDone(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" assertTrue(taskList.getTask(0).getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"junnengsoo"},"content":" public void unmarkDone_taskUnmarked() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"junnengsoo"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"junnengsoo"},"content":" Task task \u003d new Task(\"Sleep\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"junnengsoo"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"junnengsoo"},"content":" taskList.markDone(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"junnengsoo"},"content":" taskList.unmarkDone(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"junnengsoo"},"content":" assertFalse(taskList.getTask(0).getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"junnengsoo"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"junnengsoo"},"content":" public void getTask_retrievesCorrectTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"junnengsoo"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"junnengsoo"},"content":" Task task \u003d new Task(\"Sleep\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"junnengsoo"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"junnengsoo"},"content":" assertEquals(task, taskList.getTask(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"junnengsoo"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"junnengsoo"},"content":" public void removeTask_emptyList_throwsException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"junnengsoo"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"junnengsoo"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e taskList.removeTask(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"junnengsoo"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"junnengsoo"},"content":" public void getTask_invalidIndex_throwsException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"junnengsoo"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"junnengsoo"},"content":" Task task \u003d new Task(\"Sleep\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"junnengsoo"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"junnengsoo"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e taskList.getTask(1));","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"junnengsoo":69}},{"path":"src/test/java/duke/tasks/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"package duke.tasks; //same package as the class being tested","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"junnengsoo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"junnengsoo"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"junnengsoo"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"junnengsoo"},"content":"public class TaskTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"junnengsoo"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"junnengsoo"},"content":" public void markDone_mark(){","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"junnengsoo"},"content":" Task task \u003d new Task(\"Sleep\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"junnengsoo"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"junnengsoo"},"content":" assertTrue(task.getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"junnengsoo"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"junnengsoo"},"content":" public void unmarkDone_unmark(){","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"junnengsoo"},"content":" Task task \u003d new Task(\"Sleep\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"junnengsoo"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"junnengsoo"},"content":" task.unmarkDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"junnengsoo"},"content":" assertFalse(task.getIsDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"junnengsoo"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"junnengsoo"},"content":" public void toFileFormat_notDone_correctFormat(){","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"junnengsoo"},"content":" Task task \u003d new Task(\"Sleep\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"junnengsoo"},"content":" assertEquals(\"0 | Sleep\", task.toFileFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"junnengsoo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"junnengsoo"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"junnengsoo"},"content":" public void toFileFormat_done_correctFormat(){","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"junnengsoo"},"content":" Task task \u003d new Task(\"Sleep\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"junnengsoo"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"junnengsoo"},"content":" assertEquals(\"1 | Sleep\", task.toFileFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"junnengsoo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"junnengsoo"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"junnengsoo":38}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"hello","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"junnengsoo"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"junnengsoo"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"junnengsoo":3}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"junnengsoo"},"content":"s@ECHO OFF","lastModifiedDate":"2023-08-23"},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"junnengsoo":1,"-":20}}] diff --git a/junnengsoo_ip_master/commits.json b/junnengsoo_ip_master/commits.json index 277013a1..e066a426 100644 --- a/junnengsoo_ip_master/commits.json +++ b/junnengsoo_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"junnengsoo":[{"date":"2023-08-22","commitResults":[{"hash":"64021382219dff8ffd410c036933872cbe0b4be1","isMergeCommit":false,"messageTitle":"Complete level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"49880b09d60fcc0fe8a4b156cba713ac94efd2f6","isMergeCommit":false,"messageTitle":"Complete Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"046a8e4f85445069c01e808045291d6df75fadac","isMergeCommit":false,"messageTitle":"Complete level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"54b8e3fda6431adcdd659ff3a80242d22fcb9b79","isMergeCommit":false,"messageTitle":"Complete Level-3 and add Task class","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":13}}},{"hash":"5a05150384e4d8024f6d8fa35ff7110eee09b15e","isMergeCommit":false,"messageTitle":"Complete Level 4 and add input filter","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":3}}}]},{"date":"2023-08-23","commitResults":[{"hash":"8035ca6f93b9492d1f3656bce72f042c3b5dd2ed","isMergeCommit":false,"messageTitle":"Add UITesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"794dbfa480a10b9db45064a47124baf48bc3a5cd","isMergeCommit":false,"messageTitle":"Complete level-5 by adding exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":7}}},{"hash":"60aaf1084aa401f278285929c4c37bd59f8bcd6e","isMergeCommit":false,"messageTitle":"Add delete function and modify array to ArrayList","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":20}}}]},{"date":"2023-08-30","commitResults":[{"hash":"c9c296be59467589b021bfeb5c9560f5bc55aa3e","isMergeCommit":false,"messageTitle":"Complete Level-7 and fix delete bug","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":113,"deletions":5}}},{"hash":"8010caedfc731cdcc73d261ff933d772f58e486b","isMergeCommit":true,"messageTitle":"Merge pull request #1 from junnengsoo/branch-Level-7","messageBody":"Complete Level-7 and fix delete bug","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"58815ffc59c9e63bde57e6a99d0f57eba3a2b7d7","isMergeCommit":false,"messageTitle":"Complete level-8 and include more error handling for dateTime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":59,"deletions":10}}},{"hash":"edc13cd7bd2447f8f06c38ad9d1d96668053384a","isMergeCommit":true,"messageTitle":"Merge pull request #2 from junnengsoo/branch-Level-8","messageBody":"Complete level-8 and include more error handling for dateTime","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"junnengsoo":{"java":379,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":7}},"authorContributionVariance":{"junnengsoo":5658.3677},"authorDisplayNameMap":{"junnengsoo":"CS2103T-F08-3 SOO ..NENG"}} +{"authorDailyContributionsMap":{"junnengsoo":[{"date":"2023-08-22","commitResults":[{"hash":"64021382219dff8ffd410c036933872cbe0b4be1","isMergeCommit":false,"messageTitle":"Complete level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"49880b09d60fcc0fe8a4b156cba713ac94efd2f6","isMergeCommit":false,"messageTitle":"Complete Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"046a8e4f85445069c01e808045291d6df75fadac","isMergeCommit":false,"messageTitle":"Complete level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"54b8e3fda6431adcdd659ff3a80242d22fcb9b79","isMergeCommit":false,"messageTitle":"Complete Level-3 and add Task class","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":13}}},{"hash":"5a05150384e4d8024f6d8fa35ff7110eee09b15e","isMergeCommit":false,"messageTitle":"Complete Level 4 and add input filter","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":3}}}]},{"date":"2023-08-23","commitResults":[{"hash":"8035ca6f93b9492d1f3656bce72f042c3b5dd2ed","isMergeCommit":false,"messageTitle":"Add UITesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"794dbfa480a10b9db45064a47124baf48bc3a5cd","isMergeCommit":false,"messageTitle":"Complete level-5 by adding exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":7}}},{"hash":"60aaf1084aa401f278285929c4c37bd59f8bcd6e","isMergeCommit":false,"messageTitle":"Add delete function and modify array to ArrayList","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":20}}}]},{"date":"2023-08-30","commitResults":[{"hash":"c9c296be59467589b021bfeb5c9560f5bc55aa3e","isMergeCommit":false,"messageTitle":"Complete Level-7 and fix delete bug","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":113,"deletions":5}}},{"hash":"8010caedfc731cdcc73d261ff933d772f58e486b","isMergeCommit":true,"messageTitle":"Merge pull request #1 from junnengsoo/branch-Level-7","messageBody":"Complete Level-7 and fix delete bug","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"58815ffc59c9e63bde57e6a99d0f57eba3a2b7d7","isMergeCommit":false,"messageTitle":"Complete level-8 and include more error handling for dateTime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":59,"deletions":10}}},{"hash":"edc13cd7bd2447f8f06c38ad9d1d96668053384a","isMergeCommit":true,"messageTitle":"Merge pull request #2 from junnengsoo/branch-Level-8","messageBody":"Complete level-8 and include more error handling for dateTime","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"b696665abb19b46ef55ed4b8775337af5d422088","isMergeCommit":false,"messageTitle":"Complete MoreOOP but unit testing require changes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":130,"deletions":0}}},{"hash":"b9e9e403eb7e2fbd88abaf9e9af5ff6cf8fbb2f3","isMergeCommit":false,"messageTitle":"Complete MoreOOP but unit testing not modified","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":188,"deletions":201}}},{"hash":"c4ff6e2b0f4aac60b1f6963d35f9b33f2b605f48","isMergeCommit":true,"messageTitle":"Merge pull request #3 from junnengsoo/branch-A-MoreOOP","messageBody":"Branch a more oop","fileTypesAndContributionMap":{}},{"hash":"591dcc4b6519778c7d4020954ab0a5d1c3cb6a1e","isMergeCommit":false,"messageTitle":"Move Parser, Storage and Ui to duke directory","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":19}}},{"hash":"38ce7ee4dca9be0c260f52299fb7d863c893dac8","isMergeCommit":true,"messageTitle":"Merge pull request #4 from junnengsoo/branch-A-Packages","messageBody":"Move Parser, Storage and Ui to duke directory","fileTypesAndContributionMap":{}},{"hash":"b4ff1fe436a10113add166ba0966f7f98339992c","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0},"txt":{"insertions":1,"deletions":0},"java":{"insertions":2,"deletions":2},"sh":{"insertions":0,"deletions":0}}},{"hash":"2a91dcd5366dc1efaa8fd45bf3db057f990d1bb5","isMergeCommit":true,"messageTitle":"Merge pull request #5 from junnengsoo/branch-A-Gradle","messageBody":"Add Gradle","fileTypesAndContributionMap":{}},{"hash":"a97b7bc2a5f53769a087ca9ccaafec425c1b8437","isMergeCommit":false,"messageTitle":"Add JUnit tests for TaskList and Task","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":0}}},{"hash":"4265acfc834bf53235d973ff06ba72c4f764ee31","isMergeCommit":true,"messageTitle":"Merge pull request #6 from junnengsoo/branch-A-JUnit","messageBody":"Add JUnit tests for TaskList and Task","fileTypesAndContributionMap":{}},{"hash":"518da1977912b0646a8dd33216378ffa6d3fd94d","isMergeCommit":false,"messageTitle":"Complete A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"txt":{"insertions":1,"deletions":0},"java":{"insertions":35,"deletions":35}}},{"hash":"36085e9df414c199c9fb97bbab98f738b962de5c","isMergeCommit":true,"messageTitle":"Merge pull request #7 from junnengsoo/branch-A-Jar","messageBody":"Complete A-Jar","fileTypesAndContributionMap":{}},{"hash":"74cfb817b5d3bdb32ec2f3813dc7af03d5e728a8","isMergeCommit":false,"messageTitle":"Modify code styles","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":67}}},{"hash":"c9f4d9e26f9f0eda4c4ea63341de1b22f401c6f6","isMergeCommit":false,"messageTitle":"Add JavaDocs for all classes except test classes","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":253,"deletions":10}}},{"hash":"224419ac78977855d95c4917f1a5df0e6b520257","isMergeCommit":false,"messageTitle":"Add find functionality","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":2}}},{"hash":"c6124383c00b120cb3705ad23db0dafa2eef1143","isMergeCommit":true,"messageTitle":"Merge pull request #8 from junnengsoo/branch-A-CodingStandard","messageBody":"Modify code styles","fileTypesAndContributionMap":{}},{"hash":"d4abb0753ace368a82b270de014828cd98d803eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"942a09310a01e502755aea053e1f8b4dd1663cd4","isMergeCommit":true,"messageTitle":"Merge pull request #9 from junnengsoo/branch-A-JavaDoc","messageBody":"Add JavaDocs for all classes except test classes","fileTypesAndContributionMap":{}},{"hash":"05d0b43e0912a31940f7650164e7234ad8ecd2c7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Level-9","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b3b345c49a5ba996972771196ee7307401b39aab","isMergeCommit":true,"messageTitle":"Merge pull request #10 from junnengsoo/branch-Level-9","messageBody":"Add find functionality","fileTypesAndContributionMap":{}},{"hash":"034273c39bc521dbe05c08f10cf8e0a37d2554ae","isMergeCommit":false,"messageTitle":"Resolve line not uppercase issue","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":3,"deletions":3}}},{"hash":"40e48408ee43485fd06bbc32a531a616f571793a","isMergeCommit":true,"messageTitle":"Merge pull request #11 from junnengsoo/branch-LineIssue","messageBody":"Resolve line not uppercase issue","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"junnengsoo":{"java":878,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":43,"txt":8}},"authorContributionVariance":{"junnengsoo":92839.53},"authorDisplayNameMap":{"junnengsoo":"CS2103T-F08-3 SOO ..NENG"}} diff --git a/juzzztinsoong_ip_master/authorship.json b/juzzztinsoong_ip_master/authorship.json index 41f4cc21..29fd86e6 100644 --- a/juzzztinsoong_ip_master/authorship.json +++ b/juzzztinsoong_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":"juzzztinsoong"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"juzzztinsoong":3}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"D # 0 # skdjas # 16:00","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"D # 0 # skdjas # 16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"D # 0 # skdjas # 16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"D # 1 # skdjas # 16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"D # 0 # skdjas # 16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"D # 0 # skdjas # 16:00","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"juzzztinsoong":6}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" private TaskList tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" public Duke(String filepath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" storage \u003d new Storage(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" tasklist \u003d storage.loadFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" ui.showError(\"File failed to load\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" private void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" String fullcommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" Command c \u003d Parser.parse(fullcommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" c.execute(tasklist, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" ui.showGoodbye();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" storage.writeToFile(tasklist);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"juzzztinsoong"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"juzzztinsoong":47,"-":4}},{"path":"src/main/java/duke/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" public ByeCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" };","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(\"Aw goodbye.. ಠ_ಠ\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":22}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" public Command() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" public void load(TaskList tasklist) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":23}},{"path":"src/main/java/duke/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"public class DeadlineCommand extends TaskCommand {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" private LocalDate byDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" private LocalTime byTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" public DeadlineCommand(String description, boolean isDone, LocalDate byDate, LocalTime byTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" this.byDate \u003d byDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" this.byTime \u003d byTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" public void load(TaskList tasklist) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.add(description, isDone, byDate, byTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" String deadlineString \u003d tasklist.add(description, isDone, byDate, byTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" String.format(\"I\u0027ve added this deadline:\\n%s\\nNow you have %d tasks in the list.\", deadlineString,","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":33}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(tasklist.delete(index));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":20}},{"path":"src/main/java/duke/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"public class EventCommand extends TaskCommand {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalDate fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalTime fromTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalDate toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalTime toTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" public EventCommand(String description, boolean isDone, LocalDate fromDate, LocalTime fromTime, LocalDate toDate,","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime toTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" this.fromTime \u003d fromTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" this.toTime \u003d toTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" public void load(TaskList tasklist) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.add(description, isDone, fromDate, fromTime, toDate, toTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" String eventString \u003d tasklist.add(description, isDone, fromDate, fromTime, toDate, toTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(String.format(\"I\u0027ve added this event:\\n%s\\nNow you have %d tasks in the list.\", eventString,","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":37}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" public ListCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(tasklist.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":16}},{"path":"src/main/java/duke/commands/MarkDoneCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"public class MarkDoneCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" private boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" public MarkDoneCommand(boolean isDone, int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(tasklist.setDone(isDone, index));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"juzzztinsoong":23}},{"path":"src/main/java/duke/commands/TaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"public abstract class TaskCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" protected String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" protected boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" public TaskCommand(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" public void load(TaskList tasklist) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":24}},{"path":"src/main/java/duke/commands/ToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"public class ToDoCommand extends TaskCommand {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" public ToDoCommand(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" public void load(TaskList tasklist) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.add(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" String todoString \u003d tasklist.add(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(String.format(\"I\u0027ve added this task:\\n%s\\nNow you have %d tasks in the list.\", todoString,","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":24}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" private String errDescription;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" public DukeException(String errDescription) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" this.errDescription \u003d errDescription;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" return \"OOPS! \" + errDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" return \"OOPS! \" + errDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":19}},{"path":"src/main/java/duke/exceptions/IncorrectFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class IncorrectFormatException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" public IncorrectFormatException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":" super(\"You used the wrong format!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" };","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":9}},{"path":"src/main/java/duke/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class InvalidCommandException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":" super(\"I don\u0027t know what you meant!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":9}},{"path":"src/main/java/duke/exceptions/InvalidNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class InvalidNumberException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" public InvalidNumberException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":" super(\"You didn\u0027t specify the task number!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":9}},{"path":"src/main/java/duke/exceptions/NoSuchEntryException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class NoSuchEntryException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" public NoSuchEntryException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":" super(\"There is no such entry!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" };","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":9}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalDate byDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalTime byTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" public Deadline(String description, boolean isDone, LocalDate byDate, LocalTime byTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" this.byDate \u003d byDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" this.byTime \u003d byTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"[D][%s] %s (by: %s %s)\", getStatusIcon(), description,","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" (byDate !\u003d null ? byDate : \"\"), (byTime !\u003d null ? byTime : \"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"D # %d # %s # %s %s\", (isDone ? 1 : 0), description,","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" (byDate !\u003d null ? byDate : \"\"), (byTime !\u003d null ? byTime : \"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":28}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalDate fromDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalTime fromTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalDate toDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalTime toTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" public Event(String description, boolean isDone, LocalDate fromDate, LocalTime fromTime, LocalDate toDate,","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime toTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" this.fromTime \u003d fromTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" this.toTime \u003d toTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"[E][%s] %s (from: %s %s to: %s %s)\", getStatusIcon(), description,","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" (fromDate !\u003d null ? fromDate : \"\"), (fromTime !\u003d null ? fromTime : \"\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" (toDate !\u003d null ? toDate : \"\"), (toTime !\u003d null ? toTime : \"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"E # %d # %s # %s %s # %s %s\", (isDone ? 1 : 0), description,","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" (fromDate !\u003d null ? fromDate : \"\"), (fromTime !\u003d null ? fromTime : \"\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" (toDate !\u003d null ? toDate : \"\"), (toTime !\u003d null ? toTime : \"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":35}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" protected boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" protected Task(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" protected String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" protected void setDone(boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"[ ][%s] %s\", getStatusIcon(), description);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\" # %d # %s\", (isDone ? 1 : 0), description);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"juzzztinsoong":27}},{"path":"src/main/java/duke/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.InvalidNumberException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.NoSuchEntryException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"public class TaskList {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" protected ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" public TaskList() {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" public String add(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" Todo todo \u003d new Todo(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" list.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" return todo.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" public String add(String description, boolean isDone, LocalDate byDate, LocalTime byTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" Deadline deadline \u003d new Deadline(description, isDone, byDate, byTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" list.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" return deadline.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" public String add(String description, boolean isDone, LocalDate fromDate, LocalTime fromTime, LocalDate toDate,","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime toTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" Event event \u003d new Event(description, isDone, fromDate, fromTime, toDate, toTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" list.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" return event.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" public String setDone(boolean isDone, int index) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" if (index \u003c 0 || index + 1 \u003e list.size()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" throw new NoSuchEntryException();","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":" if (list.get(index).isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"juzzztinsoong"},"content":" return \"This task is already marked as done!\\n\" + list.get(index).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"juzzztinsoong"},"content":" list.get(index).setDone(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"juzzztinsoong"},"content":" return \"This task is now marked as done!\\n\" + list.get(index).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"juzzztinsoong"},"content":" if (!list.get(index).isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"juzzztinsoong"},"content":" return \"This task is already marked as not done!\\n\" + list.get(index).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"juzzztinsoong"},"content":" list.get(index).setDone(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"juzzztinsoong"},"content":" return \"This task is now marked as not done!\\n\" + list.get(index).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"juzzztinsoong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"juzzztinsoong"},"content":" throw new InvalidNumberException();","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"juzzztinsoong"},"content":" public String delete(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"juzzztinsoong"},"content":" if (index \u003c 0 || index + 1 \u003e list.size()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"juzzztinsoong"},"content":" throw new NoSuchEntryException();","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"juzzztinsoong"},"content":" String tempString \u003d list.get(index).toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"juzzztinsoong"},"content":" list.remove(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"I\u0027ve removed this task:\\n%s\\nNow you have %d task(s) in the list.\", tempString,","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"juzzztinsoong"},"content":" list.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"juzzztinsoong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"juzzztinsoong"},"content":" throw new InvalidNumberException();","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"juzzztinsoong"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"juzzztinsoong"},"content":" String returnString \u003d new String(\"\");","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"juzzztinsoong"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"juzzztinsoong"},"content":" for (Task entry : list) {","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"juzzztinsoong"},"content":" returnString +\u003d (i + \".\" + entry.toString() + \"\\n\");","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"juzzztinsoong"},"content":" i++;","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"juzzztinsoong"},"content":" returnString +\u003d String.format(\"You have %d task(s) in the list.\", i - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"juzzztinsoong"},"content":" return returnString;","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"juzzztinsoong"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"juzzztinsoong"},"content":" return list.size() \u003d\u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"juzzztinsoong"},"content":" public String clearList() {","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"juzzztinsoong"},"content":" String tempString \u003d list.get(0).toFileString();","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"juzzztinsoong"},"content":" list.remove(0);","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"juzzztinsoong"},"content":" return tempString;","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"juzzztinsoong"},"content":" public int getSize() {","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"juzzztinsoong"},"content":" return list.size();","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"juzzztinsoong":103}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"[T][%s] %s\", getStatusIcon(), description);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"T # %d # %s\", (isDone ? 1 : 0), description);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":18}},{"path":"src/main/java/duke/utils/DukeEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public enum DukeEnum {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":" MARK(\"mark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" TODO(\"todo\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" DEADLINE(\"deadline\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" EVENT(\"event\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" BYE(\"bye\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" public String text;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" DukeEnum(String text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" this.text \u003d text;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" public String getText() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" return text;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":24}},{"path":"src/main/java/duke/utils/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.commands.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.IncorrectFormatException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.InvalidNumberException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" public Parser() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" private static class DateTimeWrapper {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" private LocalDate date;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" private LocalTime time;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" private DateTimeWrapper(LocalDate date, LocalTime time) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" this.time \u003d time;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" private static String[] parseInput(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" int index \u003d input.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" if (index \u003e -1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" return input.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" String[] tempString \u003d { input, \"\" };","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" return tempString;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" public static String[] parseFilePath(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" int index \u003d input.indexOf(\u0027/\u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":" if (index \u003e -1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" return input.split(\"/\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" String[] tempString \u003d { input, \"\" };","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" return tempString;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"juzzztinsoong"},"content":" private static int parseIndex(String input) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"juzzztinsoong"},"content":" return Integer.parseInt(input) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"juzzztinsoong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"juzzztinsoong"},"content":" throw new InvalidNumberException();","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"juzzztinsoong"},"content":" private static DateTimeWrapper parseDate(String input) throws IncorrectFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"juzzztinsoong"},"content":" String[] parsedInput \u003d parseInput(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"juzzztinsoong"},"content":" LocalDate date;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime time;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"juzzztinsoong"},"content":" String i1 \u003d parsedInput[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"juzzztinsoong"},"content":" String i2 \u003d parsedInput[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"juzzztinsoong"},"content":" if (i1.matches(\"[0-9]{2}.[0-9]{2}.[0-9]{4}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"juzzztinsoong"},"content":" date \u003d LocalDate.parse(i1.substring(6, 10) + \"-\" + i1.substring(3, 5) + \"-\" + i1.substring(0, 2));","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"juzzztinsoong"},"content":" } else if (i2.matches(\"[0-9]{2}.[0-9]{2}.[0-9]{4}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"juzzztinsoong"},"content":" date \u003d LocalDate.parse(i2.substring(6, 10) + \"-\" + i2.substring(3, 5) + \"-\" + i2.substring(0, 2));","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"juzzztinsoong"},"content":" } else if (i1.matches(\"[0-9]{4}.[0-9]{2}.[0-9]{2}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"juzzztinsoong"},"content":" date \u003d LocalDate.parse(i1.substring(0, 4) + \"-\" + i1.substring(5, 7) + \"-\" + i1.substring(8, 10));","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"juzzztinsoong"},"content":" } else if (i2.matches(\"[0-9]{4}.[0-9]{2}.[0-9]{2}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"juzzztinsoong"},"content":" date \u003d LocalDate.parse(i2.substring(0, 4) + \"-\" + i2.substring(5, 7) + \"-\" + i2.substring(8, 10));","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"juzzztinsoong"},"content":" date \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"juzzztinsoong"},"content":" if (i1.matches(\"[0-9]{2}.[0-9]{2}.[0-9]{2}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"juzzztinsoong"},"content":" time \u003d LocalTime.parse(i1.substring(0, 2) + \":\" + i1.substring(3, 5) + \":\" + i1.substring(6, 8));","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"juzzztinsoong"},"content":" } else if (i2.matches(\"[0-9]{2}.[0-9]{2}.[0-9]{2}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"juzzztinsoong"},"content":" time \u003d LocalTime.parse(i2.substring(0, 2) + \":\" + i2.substring(3, 5) + \":\" + i2.substring(6, 8));","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"juzzztinsoong"},"content":" } else if (i1.matches(\"[0-9]{2}.[0-9]{2}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"juzzztinsoong"},"content":" time \u003d LocalTime.parse(i1.substring(0, 2) + \":\" + i1.substring(3, 5) + \":00\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"juzzztinsoong"},"content":" } else if (i2.matches(\"[0-9]{2}.[0-9]{2}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"juzzztinsoong"},"content":" time \u003d LocalTime.parse(i2.substring(0, 2) + \":\" + i2.substring(3, 5) + \":00\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"juzzztinsoong"},"content":" time \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"juzzztinsoong"},"content":" if (time \u003d\u003d null \u0026\u0026 date \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"juzzztinsoong"},"content":" throw new IncorrectFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"juzzztinsoong"},"content":" return new DateTimeWrapper(date, time);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"juzzztinsoong"},"content":" public static ToDoCommand parseTodo(String input, boolean isDone) throws IncorrectFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"juzzztinsoong"},"content":" if (input.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"juzzztinsoong"},"content":" throw new IncorrectFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"juzzztinsoong"},"content":" return new ToDoCommand(input, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"juzzztinsoong"},"content":" public static DeadlineCommand parseDeadline(String input, boolean isDone) throws IncorrectFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"juzzztinsoong"},"content":" int index \u003d input.indexOf(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"juzzztinsoong"},"content":" if (index \u003e -1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"juzzztinsoong"},"content":" String[] parsedInput \u003d input.split(\" /by \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"juzzztinsoong"},"content":" String description \u003d parsedInput[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"juzzztinsoong"},"content":" DateTimeWrapper dates \u003d parseDate(parsedInput[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"juzzztinsoong"},"content":" LocalDate byDate \u003d dates.date;","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime byTime \u003d dates.time;","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"juzzztinsoong"},"content":" return new DeadlineCommand(description, isDone, byDate, byTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"juzzztinsoong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"juzzztinsoong"},"content":" throw new IncorrectFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"juzzztinsoong"},"content":" throw new IncorrectFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"juzzztinsoong"},"content":" public static EventCommand parseEvent(String input, boolean isDone) throws IncorrectFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"juzzztinsoong"},"content":" int indexFrom \u003d input.indexOf(\" /from \");","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"juzzztinsoong"},"content":" int indexTo \u003d input.indexOf(\" /to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"juzzztinsoong"},"content":" if (indexFrom \u003e -1 \u0026\u0026 indexTo \u003e -1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"juzzztinsoong"},"content":" String[] parsedInput \u003d { input.substring(0, indexFrom), input.substring(indexFrom + 7, indexTo),","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"juzzztinsoong"},"content":" input.substring(indexTo + 5, input.length()) };","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"juzzztinsoong"},"content":" String description \u003d parsedInput[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"juzzztinsoong"},"content":" DateTimeWrapper fromDateTime \u003d parseDate(parsedInput[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"juzzztinsoong"},"content":" DateTimeWrapper toDateTime \u003d parseDate(parsedInput[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"juzzztinsoong"},"content":" LocalDate fromDate \u003d fromDateTime.date;","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime fromTime \u003d fromDateTime.time;","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"juzzztinsoong"},"content":" LocalDate toDate \u003d toDateTime.date;","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime toTime \u003d toDateTime.time;","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"juzzztinsoong"},"content":" // Smart date guesser for incomplete date formats","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"juzzztinsoong"},"content":" if (toDate \u003d\u003d null \u0026\u0026 fromDate !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"juzzztinsoong"},"content":" toDate \u003d fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"juzzztinsoong"},"content":" if (toDate !\u003d null \u0026\u0026 fromDate \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"juzzztinsoong"},"content":" fromDate \u003d toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"juzzztinsoong"},"content":" if (fromTime \u003d\u003d null \u0026\u0026 toTime !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"juzzztinsoong"},"content":" fromTime \u003d toTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"juzzztinsoong"},"content":" if (fromTime !\u003d null \u0026\u0026 toTime \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"juzzztinsoong"},"content":" toTime \u003d fromTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"juzzztinsoong"},"content":" return new EventCommand(description, isDone, fromDate, fromTime, toDate, toTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"juzzztinsoong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"juzzztinsoong"},"content":" throw new IncorrectFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"juzzztinsoong"},"content":" throw new IncorrectFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"juzzztinsoong"},"content":" public static Command parseFileContent(String input) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"juzzztinsoong"},"content":" String[] parsedContent \u003d input.split(\" # \");","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"juzzztinsoong"},"content":" boolean isDone \u003d Integer.parseInt(parsedContent[1]) \u003d\u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"juzzztinsoong"},"content":" if (parsedContent.length \u003d\u003d 3 \u0026\u0026 parsedContent[0].charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"juzzztinsoong"},"content":" return parseTodo(parsedContent[2], isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"juzzztinsoong"},"content":" } else if (parsedContent.length \u003d\u003d 4 \u0026\u0026 parsedContent[0].charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"juzzztinsoong"},"content":" return parseDeadline(parsedContent[2] + \" /by \" + parsedContent[3], isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"juzzztinsoong"},"content":" } else if (parsedContent.length \u003d\u003d 5 \u0026\u0026 parsedContent[0].charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"juzzztinsoong"},"content":" return parseEvent(parsedContent[2] + \" /from \" + parsedContent[3] + \" /to \" + parsedContent[4], isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"juzzztinsoong"},"content":" throw new DukeException(\"Invalid file format\");","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"juzzztinsoong"},"content":" public static Command parse(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"juzzztinsoong"},"content":" String[] parsedInput \u003d parseInput(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"juzzztinsoong"},"content":" String command \u003d parsedInput[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"juzzztinsoong"},"content":" String args \u003d parsedInput[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"juzzztinsoong"},"content":" DukeEnum commandtype \u003d map(command);","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"juzzztinsoong"},"content":" switch (commandtype) {","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"juzzztinsoong"},"content":" case BYE:","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"juzzztinsoong"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"juzzztinsoong"},"content":" case LIST:","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"juzzztinsoong"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"juzzztinsoong"},"content":" case MARK:","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"juzzztinsoong"},"content":" return new MarkDoneCommand(true, parseIndex(args));","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"juzzztinsoong"},"content":" case UNMARK:","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"juzzztinsoong"},"content":" return new MarkDoneCommand(false, parseIndex(args));","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"juzzztinsoong"},"content":" case TODO:","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"juzzztinsoong"},"content":" return parseTodo(args, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"juzzztinsoong"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"juzzztinsoong"},"content":" return parseDeadline(args, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"juzzztinsoong"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"juzzztinsoong"},"content":" return parseEvent(args, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"juzzztinsoong"},"content":" case DELETE:","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"juzzztinsoong"},"content":" return new DeleteCommand(parseIndex(args));","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"juzzztinsoong"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"juzzztinsoong"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"juzzztinsoong"},"content":" throw e;","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":210,"author":{"gitId":"juzzztinsoong"},"content":" public static DukeEnum map(String command) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":211,"author":{"gitId":"juzzztinsoong"},"content":" for (DukeEnum e : DukeEnum.values()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"juzzztinsoong"},"content":" if (command.equals(e.getText())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":213,"author":{"gitId":"juzzztinsoong"},"content":" return e;","lastModifiedDate":"2023-08-31"},{"lineNumber":214,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":215,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"juzzztinsoong"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":219}},{"path":"src/main/java/duke/utils/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import java.nio.charset.StandardCharsets;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" private Path path;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" public Storage(String filepath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" String homedir \u003d new File(System.getProperty(\"user.dir\")).getParent();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" String[] splitFilepath \u003d Parser.parseFilePath(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" path \u003d Paths.get(homedir, splitFilepath[0], splitFilepath[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" public TaskList loadFromFile() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" List\u003cString\u003e contents \u003d Files.readAllLines(path);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" for (String content : contents) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" Command c \u003d Parser.parseFileContent(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" c.load(tasklist);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" return tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" throw e;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"juzzztinsoong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"juzzztinsoong"},"content":" public void writeToFile(TaskList tasklist) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"juzzztinsoong"},"content":" if (Files.notExists(path)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"juzzztinsoong"},"content":" Files.createFile(path);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"juzzztinsoong"},"content":" BufferedWriter writer \u003d Files.newBufferedWriter(path, StandardCharsets.UTF_8,","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"juzzztinsoong"},"content":" StandardOpenOption.TRUNCATE_EXISTING);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"juzzztinsoong"},"content":" while (!tasklist.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"juzzztinsoong"},"content":" String tempString \u003d tasklist.clearList();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"juzzztinsoong"},"content":" writer.write(tempString + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"juzzztinsoong"},"content":" writer.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"juzzztinsoong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"juzzztinsoong"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":67}},{"path":"src/main/java/duke/utils/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" public static String LINE \u003d \"―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" public static String LOGO \u003d \" ______ _ ______ __ ____ __ \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" \" / ____/____(_)___ ____ ____ /_ __/__ _ __/ /_ / __ )____ / /_\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" \" / / / ___/ / __ \\\\/ __ `/ _ \\\\ / / / _ \\\\| |/_/ __/ / __ / __ \\\\/ __/\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" \" / /___/ / / / / / / /_/ / __/ / / / __/\u003e \u003c/ /_ / /_/ / /_/ / /_ \\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" \" \\\\____/_/ /_/_/ /_/\\\\__, /\\\\___/ /_/ \\\\___/_/|_|\\\\__/ /_____/\\\\____/\\\\__/ \\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" \" /____/ \\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" System.out.println(String.format(\"%sHi, I am a\\n%s\\nHow can I help you hehe.. (° ͜ʖ °)\\n%s\", LINE, LOGO, LINE));","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" System.out.println(String.format(\"You said: %s\\n%s\", input, LINE));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" return input;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" public void print(String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" System.out.println(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":" public void showGoodbye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"juzzztinsoong"},"content":" scanner.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":48}},{"path":"src/test/java/duke/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" public void Test1() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.add(\"hi\", true);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.delete(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" // TODO Auto-generated catch block","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" assertEquals(tasklist.getSize(), new TaskList().getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" public void Test2() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.add(\"hi\", true);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" assertEquals(tasklist.toString(), \"1.[T][X] hi\\nYou have 1 task(s) in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":30}},{"path":"src/test/java/duke/utils/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.commands.DeadlineCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.IncorrectFormatException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" public void test1() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" assertEquals(Parser.parseDeadline(\"blah /by 12/12/2012 16:00\", false),","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" new DeadlineCommand(null, false, LocalDate.of(2012, 12, 12), LocalTime.of(16, 0)));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" } catch (IncorrectFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" // TODO Auto-generated catch block","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" public void test2() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" assertEquals(Parser.map(\"delete\"), DukeEnum.DELETE);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" // TODO Auto-generated catch block","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":36}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"deadline skdjas /by 16:00","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"mark 4","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"unmark 2","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"list","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"bye","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"juzzztinsoong":5}},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":"juzzztinsoong"},"content":"REM FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"-":20,"juzzztinsoong":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":"juzzztinsoong"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"juzzztinsoong":3}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"D # 0 # skdjas # 16:00","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"D # 0 # skdjas # 16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"D # 0 # skdjas # 16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"D # 1 # skdjas # 16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"D # 0 # skdjas # 16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"D # 0 # skdjas # 16:00","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"juzzztinsoong":6}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" private TaskList tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" public Duke(String filepath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" storage \u003d new Storage(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" tasklist \u003d storage.loadFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" ui.showError(\"File failed to load\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" * Runs the program until the user enters a quit command.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" private void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" String fullcommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" Command c \u003d Parser.parse(fullcommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" c.execute(tasklist, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" ui.showGoodbye();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"juzzztinsoong"},"content":" storage.writeToFile(tasklist);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"juzzztinsoong"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"juzzztinsoong"},"content":" * Entry point for Duke. This is the main method that will be called.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"juzzztinsoong"},"content":" * @param args Command line arguments not used in this program.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"juzzztinsoong"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"juzzztinsoong":55,"-":4}},{"path":"src/main/java/duke/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" public ByeCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" };","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(\"Aw goodbye.. ಠ_ಠ\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":22}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" public Command() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" * Loads the tasks into the tasklist. This is done when printing to CLI is not","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" * necessary when executing a command.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" * @param tasklist the tasklist to load.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" * @throws DukeException if loading fails.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" public void load(TaskList tasklist) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" * Executes the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" * @param tasklist the tasklist that is being executed upon.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" * @param ui the ui class to use for the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" * @param storage the storage class to use for the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" * @throws DukeException if execution fails.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" * Returns true only for ByeCommand, else parent implementation applies to all","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" * child Command classes.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" * @return true only for ByeCommand, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":44}},{"path":"src/main/java/duke/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"public class DeadlineCommand extends TaskCommand {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" private LocalDate byDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" private LocalTime byTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" public DeadlineCommand(String description, boolean isDone, LocalDate byDate, LocalTime byTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" this.byDate \u003d byDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" this.byTime \u003d byTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" public void load(TaskList tasklist) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.add(description, isDone, byDate, byTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" String deadlineString \u003d tasklist.add(description, isDone, byDate, byTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" String.format(\"I\u0027ve added this deadline:\\n%s\\nNow you have %d tasks in the list.\", deadlineString,","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":33}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(tasklist.delete(index));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":20}},{"path":"src/main/java/duke/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"public class EventCommand extends TaskCommand {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalDate fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalTime fromTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalDate toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalTime toTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" public EventCommand(String description, boolean isDone, LocalDate fromDate, LocalTime fromTime, LocalDate toDate,","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime toTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" this.fromTime \u003d fromTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" this.toTime \u003d toTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" public void load(TaskList tasklist) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.add(description, isDone, fromDate, fromTime, toDate, toTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" String eventString \u003d tasklist.add(description, isDone, fromDate, fromTime, toDate, toTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(String.format(\"I\u0027ve added this event:\\n%s\\nNow you have %d tasks in the list.\", eventString,","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":37}},{"path":"src/main/java/duke/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" public FindCommand(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(tasklist.find(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"juzzztinsoong":20}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" public ListCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(tasklist.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":16}},{"path":"src/main/java/duke/commands/MarkDoneCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"public class MarkDoneCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" private boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" public MarkDoneCommand(boolean isDone, int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(tasklist.setDone(isDone, index));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"juzzztinsoong":23}},{"path":"src/main/java/duke/commands/TaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"public abstract class TaskCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" protected String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" protected boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" public TaskCommand(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" public void load(TaskList tasklist) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":24}},{"path":"src/main/java/duke/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"public class TodoCommand extends TaskCommand {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" public TodoCommand(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" public void load(TaskList tasklist) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.add(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" String todoString \u003d tasklist.add(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" ui.print(String.format(\"I\u0027ve added this task:\\n%s\\nNow you have %d tasks in the list.\", todoString,","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.getSize()));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"juzzztinsoong":24}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" private String errDescription;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" public DukeException(String errDescription) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" this.errDescription \u003d errDescription;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" return \"OOPS! \" + errDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" return \"OOPS! \" + errDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":19}},{"path":"src/main/java/duke/exceptions/IncorrectFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class IncorrectFormatException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" public IncorrectFormatException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":" super(\"You used the wrong format!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" };","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":9}},{"path":"src/main/java/duke/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class InvalidCommandException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":" super(\"I don\u0027t know what you meant!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":9}},{"path":"src/main/java/duke/exceptions/InvalidNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class InvalidNumberException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" public InvalidNumberException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":" super(\"You didn\u0027t specify the task number!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":9}},{"path":"src/main/java/duke/exceptions/NoSuchEntryException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class NoSuchEntryException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" public NoSuchEntryException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":" super(\"There is no such entry!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" };","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":9}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalDate byDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalTime byTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" public Deadline(String description, boolean isDone, LocalDate byDate, LocalTime byTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" this.byDate \u003d byDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" this.byTime \u003d byTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" * Returns a String representation of this Deadline. The format is","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" * \"[D][StatusIcon] Description (by: Date/Time)\"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" * @return a String representation of this Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"[D][%s] %s (by: %s %s)\", getStatusIcon(), description,","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" (byDate !\u003d null ? byDate : \"\"), (byTime !\u003d null ? byTime : \"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" * Returns a string representation of this Deadline. The format is D # Doneness","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" * # Description # Date/Time.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" * Note that this is different from toString() as it is used for encoding data","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" * in the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" * @return a string representation of this Deadline for storage in the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"D # %d # %s # %s %s\", (isDone ? 1 : 0), description,","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" (byDate !\u003d null ? byDate : \"\"), (byTime !\u003d null ? byTime : \"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":42}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalDate fromDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalTime fromTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalDate toDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" protected LocalTime toTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" public Event(String description, boolean isDone, LocalDate fromDate, LocalTime fromTime, LocalDate toDate,","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime toTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" this.fromTime \u003d fromTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" this.toTime \u003d toTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" * Returns a String representation of this Status. The format is","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" * \"[E][StatusIcon] Description (from: Date/Time to: Date/Time)\"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" * @return a String representation of this Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"[E][%s] %s (from: %s %s to: %s %s)\", getStatusIcon(), description,","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" (fromDate !\u003d null ? fromDate : \"\"), (fromTime !\u003d null ? fromTime : \"\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" (toDate !\u003d null ? toDate : \"\"), (toTime !\u003d null ? toTime : \"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" * Returns a string representation of this Event. The format is E # Doneness #","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" * Description # Date/Time # Date/Time.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" * Note that this is different from toString() as it is used for encoding data","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":" * in the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" * @return a string representation of this Event for storage in the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"E # %d # %s # %s %s # %s %s\", (isDone ? 1 : 0), description,","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"juzzztinsoong"},"content":" (fromDate !\u003d null ? fromDate : \"\"), (fromTime !\u003d null ? fromTime : \"\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"juzzztinsoong"},"content":" (toDate !\u003d null ? toDate : \"\"), (toTime !\u003d null ? toTime : \"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":49}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public abstract class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" protected boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" protected Task(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" * Returns the icon to use for the status.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" * @return the icon to use for the status or blank if task is not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" protected String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" * Sets the status of the task as done or not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" * @param isDone true if done, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" protected void setDone(boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" * Returns a string representation of this Task. The string is formatted as ","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" * \"[ ][StatusIcon] Description\"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" * @return a string representation of this Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"[ ][%s] %s\", getStatusIcon(), description);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" * Returns a string representation of this Task. The format is # Doneness #","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" * Description.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" * Note that this is different from toString() as it is used for encoding data","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":" * in the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"juzzztinsoong"},"content":" * @return a string representation of this Task for storage in the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"juzzztinsoong"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\" # %d # %s\", (isDone ? 1 : 0), description);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"juzzztinsoong":52}},{"path":"src/main/java/duke/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.InvalidNumberException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.NoSuchEntryException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"public class TaskList {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" protected ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" public TaskList() {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" * Adds a Todo to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" * @param description the description of the todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" * @param isDone true if todo is done, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" * @return the string format of the newly added Todo in the list to display to","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" * the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" public String add(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" Todo todo \u003d new Todo(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" list.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" return todo.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" * Adds a Deadline to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" * @param description the description of the deadline. Cannot be empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" * @param isDone true if the deadline is done, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" * @param byDate the date to use for the deadline. Will not be displayed if null.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":" * @param byTime the time to use for the deadline. Will not be displayed if null.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" * @return the string format of the newly added Deadline in the list to display","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" * to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" public String add(String description, boolean isDone, LocalDate byDate, LocalTime byTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":" Deadline deadline \u003d new Deadline(description, isDone, byDate, byTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"juzzztinsoong"},"content":" list.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"juzzztinsoong"},"content":" return deadline.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"juzzztinsoong"},"content":" * Adds an Event to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"juzzztinsoong"},"content":" * @param description the description of the deadline. Cannot be empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"juzzztinsoong"},"content":" * @param isDone true if the deadline is done, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"juzzztinsoong"},"content":" * @param fromDate the date to use for the event start. Will not be displayed if null.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"juzzztinsoong"},"content":" * @param fromTime the time to use for the event start. Will not be displayed if null.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"juzzztinsoong"},"content":" * @param toDate the date to use for the event end. Will not be displayed if null.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"juzzztinsoong"},"content":" * @param toTime the time to use for the event end. Will not be displayed if null.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"juzzztinsoong"},"content":" * @return the string format of the newly added Event in the list to display to","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"juzzztinsoong"},"content":" * the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"juzzztinsoong"},"content":" public String add(String description, boolean isDone, LocalDate fromDate, LocalTime fromTime, LocalDate toDate,","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime toTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"juzzztinsoong"},"content":" Event event \u003d new Event(description, isDone, fromDate, fromTime, toDate, toTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"juzzztinsoong"},"content":" list.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"juzzztinsoong"},"content":" return event.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"juzzztinsoong"},"content":" * Sets or unsets task as done at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"juzzztinsoong"},"content":" * @param isDone true to mark the task as done, false to unmark it.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"juzzztinsoong"},"content":" * @param index the index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"juzzztinsoong"},"content":" * @return a string describing the status of the operation to display to the","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"juzzztinsoong"},"content":" * user.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"juzzztinsoong"},"content":" * @throws DukeException if the operation is not successful or the index is","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"juzzztinsoong"},"content":" * invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"juzzztinsoong"},"content":" public String setDone(boolean isDone, int index) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"juzzztinsoong"},"content":" if (index \u003c 0 || index + 1 \u003e list.size()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"juzzztinsoong"},"content":" throw new NoSuchEntryException();","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"juzzztinsoong"},"content":" // Mark this task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"juzzztinsoong"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"juzzztinsoong"},"content":" if (list.get(index).isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"juzzztinsoong"},"content":" return \"This task is already marked as done!\\n\" + list.get(index).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"juzzztinsoong"},"content":" list.get(index).setDone(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"juzzztinsoong"},"content":" return \"This task is now marked as done!\\n\" + list.get(index).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"juzzztinsoong"},"content":" // Mark this task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"juzzztinsoong"},"content":" if (!list.get(index).isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"juzzztinsoong"},"content":" return \"This task is already marked as not done!\\n\" + list.get(index).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":96,"author":{"gitId":"juzzztinsoong"},"content":" list.get(index).setDone(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"juzzztinsoong"},"content":" return \"This task is now marked as not done!\\n\" + list.get(index).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":101,"author":{"gitId":"juzzztinsoong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"juzzztinsoong"},"content":" throw new InvalidNumberException();","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"juzzztinsoong"},"content":" * Deletes the entry at the specified index. This method is called by Duke to","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"juzzztinsoong"},"content":" * delete an entry from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"juzzztinsoong"},"content":" * @param index index of the entry to delete.","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"juzzztinsoong"},"content":" * @return a String with information about the operation that was performed.","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"juzzztinsoong"},"content":" * @throws DukeException if the operation was not successful or index was","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"juzzztinsoong"},"content":" * invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"juzzztinsoong"},"content":" public String delete(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"juzzztinsoong"},"content":" if (index \u003c 0 || index + 1 \u003e list.size()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"juzzztinsoong"},"content":" throw new NoSuchEntryException();","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"juzzztinsoong"},"content":" String tempString \u003d list.get(index).toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"juzzztinsoong"},"content":" list.remove(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"I\u0027ve removed this task:\\n%s\\nNow you have %d task(s) in the list.\", tempString,","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"juzzztinsoong"},"content":" list.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"juzzztinsoong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"juzzztinsoong"},"content":" throw new InvalidNumberException();","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"juzzztinsoong"},"content":" * Returns a string containing all the tasks with the given description.","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"juzzztinsoong"},"content":" * @return a string representation of the list in the form of a list of Task","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"juzzztinsoong"},"content":" * objects separated by new lines.","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"juzzztinsoong"},"content":" public String find(String description) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"juzzztinsoong"},"content":" if (!description.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"juzzztinsoong"},"content":" String returnString \u003d new String(\"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"juzzztinsoong"},"content":" int i \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"juzzztinsoong"},"content":" for (Task entry : list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"juzzztinsoong"},"content":" if (entry.description.contains(description)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"juzzztinsoong"},"content":" returnString +\u003d (entry.toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"juzzztinsoong"},"content":" i++;","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"juzzztinsoong"},"content":" // Returns a string that contains the task description and a summary of the valid tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"juzzztinsoong"},"content":" if (!returnString.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"juzzztinsoong"},"content":" return (returnString + String.format(\"There were %d tasks containing %s.\", i, description));","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"There were no tasks containing %s.\", description);","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"juzzztinsoong"},"content":" * Returns a string representation of the list of all tasks to display to the","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"juzzztinsoong"},"content":" * user.","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"juzzztinsoong"},"content":" * @return a string representation of the list in the form of a list of Task","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"juzzztinsoong"},"content":" * objects separated by new lines.","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"juzzztinsoong"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":163,"author":{"gitId":"juzzztinsoong"},"content":" String returnString \u003d new String(\"\");","lastModifiedDate":"2023-08-22"},{"lineNumber":164,"author":{"gitId":"juzzztinsoong"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-22"},{"lineNumber":165,"author":{"gitId":"juzzztinsoong"},"content":" for (Task entry : list) {","lastModifiedDate":"2023-08-22"},{"lineNumber":166,"author":{"gitId":"juzzztinsoong"},"content":" returnString +\u003d (i + \".\" + entry.toString() + \"\\n\");","lastModifiedDate":"2023-08-22"},{"lineNumber":167,"author":{"gitId":"juzzztinsoong"},"content":" i++;","lastModifiedDate":"2023-08-22"},{"lineNumber":168,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":169,"author":{"gitId":"juzzztinsoong"},"content":" returnString +\u003d String.format(\"You have %d task(s) in the list.\", i - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"juzzztinsoong"},"content":" return returnString;","lastModifiedDate":"2023-08-22"},{"lineNumber":171,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":172,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":173,"author":{"gitId":"juzzztinsoong"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-29"},{"lineNumber":174,"author":{"gitId":"juzzztinsoong"},"content":" return list.size() \u003d\u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":175,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":176,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":177,"author":{"gitId":"juzzztinsoong"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"juzzztinsoong"},"content":" * Removes and retreives the first item in the list to save to file.","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"juzzztinsoong"},"content":" * @return String containing the file","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"juzzztinsoong"},"content":" public String clearList() {","lastModifiedDate":"2023-08-29"},{"lineNumber":184,"author":{"gitId":"juzzztinsoong"},"content":" String tempString \u003d list.get(0).toFileString();","lastModifiedDate":"2023-08-29"},{"lineNumber":185,"author":{"gitId":"juzzztinsoong"},"content":" list.remove(0);","lastModifiedDate":"2023-08-29"},{"lineNumber":186,"author":{"gitId":"juzzztinsoong"},"content":" return tempString;","lastModifiedDate":"2023-08-29"},{"lineNumber":187,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":188,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":189,"author":{"gitId":"juzzztinsoong"},"content":" public int getSize() {","lastModifiedDate":"2023-08-29"},{"lineNumber":190,"author":{"gitId":"juzzztinsoong"},"content":" return list.size();","lastModifiedDate":"2023-08-29"},{"lineNumber":191,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":192,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"juzzztinsoong":192}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" * Returns a String representation of this Todo. The format is \"[T][StatusIcon]","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" * Description\"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" * @return a String representation of this Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"[T][%s] %s\", getStatusIcon(), description);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" * Returns a string representation of this Todo. The format is T # Doneness #","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" * Description.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" * Note that this is different from toString() as it is used for encoding data","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" * in the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" * @return a string representation of this Todo for storage in the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" return String.format(\"T # %d # %s\", (isDone ? 1 : 0), description);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"juzzztinsoong":32}},{"path":"src/main/java/duke/utils/DukeEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"public enum DukeEnum {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":" MARK(\"mark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":" TODO(\"todo\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" DEADLINE(\"deadline\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":" EVENT(\"event\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" BYE(\"bye\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" FIND(\"find\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" public String text;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" DukeEnum(String text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" this.text \u003d text;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" * Returns the string associated with each enum to enable the enum mapping.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" * @return the text associated with each enum.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" public String getText() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" return text;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":31}},{"path":"src/main/java/duke/utils/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.commands.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.IncorrectFormatException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.InvalidNumberException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" public Parser() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" private static class DateTimeWrapper {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" private LocalDate date;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" private LocalTime time;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" private DateTimeWrapper(LocalDate date, LocalTime time) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" this.time \u003d time;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" * Parses the input and returns the command and its arguments as an array of","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" * Strings.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" * If there is only one word in the input it returns an array of the input and","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" * an empty string.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" * @param input the command given by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" private static String[] parseInput(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" int index \u003d input.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" // Returns the input string as a list of strings.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" if (index \u003e -1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":" return input.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" String[] tempString \u003d { input, \"\" };","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" return tempString;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"juzzztinsoong"},"content":" * Parses file path and returns array of Strings representing each level in the","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"juzzztinsoong"},"content":" * file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"juzzztinsoong"},"content":" * @param input path to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"juzzztinsoong"},"content":" public static String[] parseFilePath(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"juzzztinsoong"},"content":" int index \u003d input.indexOf(\u0027/\u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"juzzztinsoong"},"content":" // Returns the input string as a list of strings.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"juzzztinsoong"},"content":" if (index \u003e -1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"juzzztinsoong"},"content":" return input.split(\"/\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"juzzztinsoong"},"content":" String[] tempString \u003d { input, \"\" };","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"juzzztinsoong"},"content":" return tempString;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"juzzztinsoong"},"content":" * Parses an input into an integer. This is used to determine which element in a","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"juzzztinsoong"},"content":" * list to perform an operation on.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"juzzztinsoong"},"content":" * @param input string to be parsed. Must be non-null and a valid integer.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"juzzztinsoong"},"content":" * @return The index of the input if input is valid.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"juzzztinsoong"},"content":" * @throws InvalidNumberException if input isn\u0027t valid.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"juzzztinsoong"},"content":" private static int parseIndex(String input) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"juzzztinsoong"},"content":" return Integer.parseInt(input) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"juzzztinsoong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"juzzztinsoong"},"content":" throw new InvalidNumberException();","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"juzzztinsoong"},"content":" * Parses the input and returns a DateTimeWrapper. This is a convenience method","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"juzzztinsoong"},"content":" * for deadlineParser and eventParser that will try to parse the date and time","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"juzzztinsoong"},"content":" * out of the input.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"juzzztinsoong"},"content":" * @param input the input to parse. Must be non-null and a valid date or time or","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"juzzztinsoong"},"content":" * both.","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"juzzztinsoong"},"content":" * @return a DateTimeWrapper that contains the date and time of the input if","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"juzzztinsoong"},"content":" * applicable.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"juzzztinsoong"},"content":" * @throws IncorrectFormatException if input isn\u0027t valid.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"juzzztinsoong"},"content":" private static DateTimeWrapper parseDate(String input) throws IncorrectFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"juzzztinsoong"},"content":" // Input is parsed into two if it contains both a date and time component.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"juzzztinsoong"},"content":" String[] parsedInput \u003d parseInput(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"juzzztinsoong"},"content":" LocalDate date;","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime time;","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"juzzztinsoong"},"content":" String i1 \u003d parsedInput[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"juzzztinsoong"},"content":" String i2 \u003d parsedInput[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"juzzztinsoong"},"content":" // Matches both halves of the input to the date.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"juzzztinsoong"},"content":" if (i1.matches(\"[0-9]{2}.[0-9]{2}.[0-9]{4}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"juzzztinsoong"},"content":" date \u003d LocalDate.parse(i1.substring(6, 10) + \"-\" + i1.substring(3, 5) + \"-\" + i1.substring(0, 2));","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"juzzztinsoong"},"content":" } else if (i2.matches(\"[0-9]{2}.[0-9]{2}.[0-9]{4}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"juzzztinsoong"},"content":" date \u003d LocalDate.parse(i2.substring(6, 10) + \"-\" + i2.substring(3, 5) + \"-\" + i2.substring(0, 2));","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"juzzztinsoong"},"content":" } else if (i1.matches(\"[0-9]{4}.[0-9]{2}.[0-9]{2}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"juzzztinsoong"},"content":" date \u003d LocalDate.parse(i1.substring(0, 4) + \"-\" + i1.substring(5, 7) + \"-\" + i1.substring(8, 10));","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"juzzztinsoong"},"content":" } else if (i2.matches(\"[0-9]{4}.[0-9]{2}.[0-9]{2}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"juzzztinsoong"},"content":" date \u003d LocalDate.parse(i2.substring(0, 4) + \"-\" + i2.substring(5, 7) + \"-\" + i2.substring(8, 10));","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"juzzztinsoong"},"content":" date \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"juzzztinsoong"},"content":" // Matches both halves of the input to the time.","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"juzzztinsoong"},"content":" if (i1.matches(\"[0-9]{2}.[0-9]{2}.[0-9]{2}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"juzzztinsoong"},"content":" time \u003d LocalTime.parse(i1.substring(0, 2) + \":\" + i1.substring(3, 5) + \":\" + i1.substring(6, 8));","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"juzzztinsoong"},"content":" } else if (i2.matches(\"[0-9]{2}.[0-9]{2}.[0-9]{2}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"juzzztinsoong"},"content":" time \u003d LocalTime.parse(i2.substring(0, 2) + \":\" + i2.substring(3, 5) + \":\" + i2.substring(6, 8));","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"juzzztinsoong"},"content":" } else if (i1.matches(\"[0-9]{2}.[0-9]{2}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"juzzztinsoong"},"content":" time \u003d LocalTime.parse(i1.substring(0, 2) + \":\" + i1.substring(3, 5) + \":00\");","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"juzzztinsoong"},"content":" } else if (i2.matches(\"[0-9]{2}.[0-9]{2}\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"juzzztinsoong"},"content":" time \u003d LocalTime.parse(i2.substring(0, 2) + \":\" + i2.substring(3, 5) + \":00\");","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"juzzztinsoong"},"content":" time \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"juzzztinsoong"},"content":" // Checks that the time and date fields are not null.","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"juzzztinsoong"},"content":" if (time \u003d\u003d null \u0026\u0026 date \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"juzzztinsoong"},"content":" throw new IncorrectFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"juzzztinsoong"},"content":" return new DateTimeWrapper(date, time);","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"juzzztinsoong"},"content":" * Parses a string and returns a ToDoCommand. If the string is empty an","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"juzzztinsoong"},"content":" * IncorrectFormatException is thrown.","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"juzzztinsoong"},"content":" * @param input the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"juzzztinsoong"},"content":" * @param isDone true if task is completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"juzzztinsoong"},"content":" * @return a ToDoCommand that can be executed on behalf of the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"juzzztinsoong"},"content":" * @throws IncorrectFormatException if input string is empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"juzzztinsoong"},"content":" public static TodoCommand parseTodo(String input, boolean isDone) throws IncorrectFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"juzzztinsoong"},"content":" // Returns a new ToDoCommand object.","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"juzzztinsoong"},"content":" if (input.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"juzzztinsoong"},"content":" throw new IncorrectFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"juzzztinsoong"},"content":" return new TodoCommand(input, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"juzzztinsoong"},"content":" * Parses the input and returns a DeadlineCommand.","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"juzzztinsoong"},"content":" * @param input the string to parse. Must be in the format","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"juzzztinsoong"},"content":" * \"description isDone /by time/date/both\".","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"juzzztinsoong"},"content":" * @param isDone true if task is completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"juzzztinsoong"},"content":" * @return a DeadlineCommand that can be executed on behalf of the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"juzzztinsoong"},"content":" * @throws IncorrectFormatException if input string has invalid components.","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"juzzztinsoong"},"content":" public static DeadlineCommand parseDeadline(String input, boolean isDone) throws IncorrectFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"juzzztinsoong"},"content":" int index \u003d input.indexOf(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"juzzztinsoong"},"content":" // Returns a new DeadlineCommand object.","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"juzzztinsoong"},"content":" if (index \u003e -1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"juzzztinsoong"},"content":" String[] parsedInput \u003d input.split(\" /by \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"juzzztinsoong"},"content":" String description \u003d parsedInput[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"juzzztinsoong"},"content":" DateTimeWrapper dates \u003d parseDate(parsedInput[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"juzzztinsoong"},"content":" LocalDate byDate \u003d dates.date;","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime byTime \u003d dates.time;","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"juzzztinsoong"},"content":" return new DeadlineCommand(description, isDone, byDate, byTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"juzzztinsoong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"juzzztinsoong"},"content":" throw new IncorrectFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"juzzztinsoong"},"content":" throw new IncorrectFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"juzzztinsoong"},"content":" * Parses the input string and returns an EventCommand.","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"juzzztinsoong"},"content":" * @param input the string to parse. Must be in the format","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"juzzztinsoong"},"content":" * \"description isDone /from time/date/both /to time/date/both\".","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"juzzztinsoong"},"content":" * @param isDone true if task is completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"juzzztinsoong"},"content":" * @return an EventCommand that can be executed on behalf of the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"juzzztinsoong"},"content":" * @throws IncorrectFormatException if input string has invalid components.","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"juzzztinsoong"},"content":" public static EventCommand parseEvent(String input, boolean isDone) throws IncorrectFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"juzzztinsoong"},"content":" int indexFrom \u003d input.indexOf(\" /from \");","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"juzzztinsoong"},"content":" int indexTo \u003d input.indexOf(\" /to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"juzzztinsoong"},"content":" // Returns a new EventCommand object.","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"juzzztinsoong"},"content":" if (indexFrom \u003e -1 \u0026\u0026 indexTo \u003e -1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"juzzztinsoong"},"content":" String[] parsedInput \u003d { input.substring(0, indexFrom), input.substring(indexFrom + 7, indexTo),","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"juzzztinsoong"},"content":" input.substring(indexTo + 5, input.length()) };","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"juzzztinsoong"},"content":" String description \u003d parsedInput[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"juzzztinsoong"},"content":" DateTimeWrapper fromDateTime \u003d parseDate(parsedInput[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"juzzztinsoong"},"content":" DateTimeWrapper toDateTime \u003d parseDate(parsedInput[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"juzzztinsoong"},"content":" LocalDate fromDate \u003d fromDateTime.date;","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime fromTime \u003d fromDateTime.time;","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"juzzztinsoong"},"content":" LocalDate toDate \u003d toDateTime.date;","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"juzzztinsoong"},"content":" LocalTime toTime \u003d toDateTime.time;","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"juzzztinsoong"},"content":" // Smart date guesser for incomplete date formats e.g.","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"juzzztinsoong"},"content":" // 1/1/2023 12:00 to 16:00 will be assumed to be 1/1/2023 12:00 to 1/1/2023 16:00.","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"juzzztinsoong"},"content":" if (toDate \u003d\u003d null \u0026\u0026 fromDate !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"juzzztinsoong"},"content":" toDate \u003d fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":213,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":214,"author":{"gitId":"juzzztinsoong"},"content":" if (toDate !\u003d null \u0026\u0026 fromDate \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":215,"author":{"gitId":"juzzztinsoong"},"content":" fromDate \u003d toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"juzzztinsoong"},"content":" if (fromTime \u003d\u003d null \u0026\u0026 toTime !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"juzzztinsoong"},"content":" fromTime \u003d toTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":220,"author":{"gitId":"juzzztinsoong"},"content":" if (fromTime !\u003d null \u0026\u0026 toTime \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"juzzztinsoong"},"content":" toTime \u003d fromTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":224,"author":{"gitId":"juzzztinsoong"},"content":" return new EventCommand(description, isDone, fromDate, fromTime, toDate, toTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"juzzztinsoong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"juzzztinsoong"},"content":" throw new IncorrectFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":227,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":229,"author":{"gitId":"juzzztinsoong"},"content":" throw new IncorrectFormatException();","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"juzzztinsoong"},"content":" * Parses a file line and returns a Command. This is a helper method for loading","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"juzzztinsoong"},"content":" * stored data into the tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"juzzztinsoong"},"content":" * @param input the input to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"juzzztinsoong"},"content":" * @return a Command based on the input string or null if there was an error","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"juzzztinsoong"},"content":" * parsing the input.","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"juzzztinsoong"},"content":" * @throws DukeException if file line has invalid format.","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"juzzztinsoong"},"content":" public static Command parseFileContent(String input) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"juzzztinsoong"},"content":" String[] parsedContent \u003d input.split(\" # \");","lastModifiedDate":"2023-08-31"},{"lineNumber":244,"author":{"gitId":"juzzztinsoong"},"content":" boolean isDone \u003d Integer.parseInt(parsedContent[1]) \u003d\u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":246,"author":{"gitId":"juzzztinsoong"},"content":" if (parsedContent.length \u003d\u003d 3 \u0026\u0026 parsedContent[0].charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":247,"author":{"gitId":"juzzztinsoong"},"content":" // Parse as Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"juzzztinsoong"},"content":" return parseTodo(parsedContent[2], isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"juzzztinsoong"},"content":" } else if (parsedContent.length \u003d\u003d 4 \u0026\u0026 parsedContent[0].charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":250,"author":{"gitId":"juzzztinsoong"},"content":" // Parse as Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"juzzztinsoong"},"content":" return parseDeadline(parsedContent[2] + \" /by \" + parsedContent[3], isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"juzzztinsoong"},"content":" } else if (parsedContent.length \u003d\u003d 5 \u0026\u0026 parsedContent[0].charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":253,"author":{"gitId":"juzzztinsoong"},"content":" // Parse as Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"juzzztinsoong"},"content":" return parseEvent(parsedContent[2] + \" /from \" + parsedContent[3] + \" /to \" + parsedContent[4], isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":256,"author":{"gitId":"juzzztinsoong"},"content":" throw new DukeException(\"Invalid file format\");","lastModifiedDate":"2023-08-31"},{"lineNumber":257,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":258,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":259,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":260,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"juzzztinsoong"},"content":" * Parses the input and returns a Command. This method is used to parse command","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"juzzztinsoong"},"content":" * arguments that are sent to Duke.","lastModifiedDate":"2023-09-01"},{"lineNumber":263,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":264,"author":{"gitId":"juzzztinsoong"},"content":" * @param input String that contains the command and arguments. Must be non-null","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"juzzztinsoong"},"content":" * and valid.","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"juzzztinsoong"},"content":" * @return Command parsed from the input.","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"juzzztinsoong"},"content":" * @throws DukeException to pass error message along to CLI.","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"juzzztinsoong"},"content":" public static Command parse(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":270,"author":{"gitId":"juzzztinsoong"},"content":" String[] parsedInput \u003d parseInput(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"juzzztinsoong"},"content":" String command \u003d parsedInput[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":272,"author":{"gitId":"juzzztinsoong"},"content":" String args \u003d parsedInput[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":273,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":274,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":275,"author":{"gitId":"juzzztinsoong"},"content":" DukeEnum commandtype \u003d map(command);","lastModifiedDate":"2023-08-31"},{"lineNumber":276,"author":{"gitId":"juzzztinsoong"},"content":" // Returns a command object for the command type.","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"juzzztinsoong"},"content":" switch (commandtype) {","lastModifiedDate":"2023-08-31"},{"lineNumber":278,"author":{"gitId":"juzzztinsoong"},"content":" case BYE:","lastModifiedDate":"2023-08-31"},{"lineNumber":279,"author":{"gitId":"juzzztinsoong"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":280,"author":{"gitId":"juzzztinsoong"},"content":" case LIST:","lastModifiedDate":"2023-08-31"},{"lineNumber":281,"author":{"gitId":"juzzztinsoong"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":282,"author":{"gitId":"juzzztinsoong"},"content":" case MARK:","lastModifiedDate":"2023-08-31"},{"lineNumber":283,"author":{"gitId":"juzzztinsoong"},"content":" return new MarkDoneCommand(true, parseIndex(args));","lastModifiedDate":"2023-09-01"},{"lineNumber":284,"author":{"gitId":"juzzztinsoong"},"content":" case UNMARK:","lastModifiedDate":"2023-08-31"},{"lineNumber":285,"author":{"gitId":"juzzztinsoong"},"content":" return new MarkDoneCommand(false, parseIndex(args));","lastModifiedDate":"2023-09-01"},{"lineNumber":286,"author":{"gitId":"juzzztinsoong"},"content":" case TODO:","lastModifiedDate":"2023-08-31"},{"lineNumber":287,"author":{"gitId":"juzzztinsoong"},"content":" return parseTodo(args, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":288,"author":{"gitId":"juzzztinsoong"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-31"},{"lineNumber":289,"author":{"gitId":"juzzztinsoong"},"content":" return parseDeadline(args, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":290,"author":{"gitId":"juzzztinsoong"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":291,"author":{"gitId":"juzzztinsoong"},"content":" return parseEvent(args, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":292,"author":{"gitId":"juzzztinsoong"},"content":" case DELETE:","lastModifiedDate":"2023-08-31"},{"lineNumber":293,"author":{"gitId":"juzzztinsoong"},"content":" return new DeleteCommand(parseIndex(args));","lastModifiedDate":"2023-09-01"},{"lineNumber":294,"author":{"gitId":"juzzztinsoong"},"content":" case FIND:","lastModifiedDate":"2023-09-01"},{"lineNumber":295,"author":{"gitId":"juzzztinsoong"},"content":" return new FindCommand(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":296,"author":{"gitId":"juzzztinsoong"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":297,"author":{"gitId":"juzzztinsoong"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-31"},{"lineNumber":298,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":299,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":300,"author":{"gitId":"juzzztinsoong"},"content":" throw e;","lastModifiedDate":"2023-08-31"},{"lineNumber":301,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":302,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":303,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":304,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":305,"author":{"gitId":"juzzztinsoong"},"content":" * Maps a Duke command to a Duke enum. This is used to determine which command","lastModifiedDate":"2023-09-01"},{"lineNumber":306,"author":{"gitId":"juzzztinsoong"},"content":" * to run for each user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":307,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":308,"author":{"gitId":"juzzztinsoong"},"content":" * @param command String representation of the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":309,"author":{"gitId":"juzzztinsoong"},"content":" * @return The enum corresponding to the command or null if none is found in the","lastModifiedDate":"2023-09-01"},{"lineNumber":310,"author":{"gitId":"juzzztinsoong"},"content":" * enum.","lastModifiedDate":"2023-09-01"},{"lineNumber":311,"author":{"gitId":"juzzztinsoong"},"content":" * @throws DukeException if the command is not found in the enum.","lastModifiedDate":"2023-09-01"},{"lineNumber":312,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":313,"author":{"gitId":"juzzztinsoong"},"content":" public static DukeEnum map(String command) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":314,"author":{"gitId":"juzzztinsoong"},"content":" for (DukeEnum e : DukeEnum.values()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":315,"author":{"gitId":"juzzztinsoong"},"content":" // Returns the command that was entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":316,"author":{"gitId":"juzzztinsoong"},"content":" if (command.equals(e.getText())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":317,"author":{"gitId":"juzzztinsoong"},"content":" return e;","lastModifiedDate":"2023-08-31"},{"lineNumber":318,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":319,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":320,"author":{"gitId":"juzzztinsoong"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-31"},{"lineNumber":321,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":322,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":322}},{"path":"src/main/java/duke/utils/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import java.nio.charset.StandardCharsets;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" private Path path;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" public Storage(String filepath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" String homedir \u003d new File(System.getProperty(\"user.dir\")).getParent();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" String[] splitFilepath \u003d Parser.parseFilePath(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" this.path \u003d Paths.get(homedir, splitFilepath[0], splitFilepath[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" * Loads saved data and returns the tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" * @return the tasklist that was loaded from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" public TaskList loadFromFile() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" List\u003cString\u003e contents \u003d Files.readAllLines(path);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" for (String content : contents) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":" Command c \u003d Parser.parseFileContent(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" c.load(tasklist);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" return tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"juzzztinsoong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"juzzztinsoong"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"juzzztinsoong"},"content":" throw e;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"juzzztinsoong"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"juzzztinsoong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"juzzztinsoong"},"content":" * Writes tasklist to file. This method is used to write a file to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"juzzztinsoong"},"content":" * system. The file is created if it does not exist.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"juzzztinsoong"},"content":" * @param tasklist the tasklist to write to file.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"juzzztinsoong"},"content":" public void writeToFile(TaskList tasklist) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"juzzztinsoong"},"content":" // Creates a file if it doesn t exist.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"juzzztinsoong"},"content":" if (Files.notExists(path)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"juzzztinsoong"},"content":" Files.createFile(path);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"juzzztinsoong"},"content":" BufferedWriter writer \u003d Files.newBufferedWriter(path, StandardCharsets.UTF_8,","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"juzzztinsoong"},"content":" StandardOpenOption.TRUNCATE_EXISTING);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"juzzztinsoong"},"content":" // This method is used to flush the tasklist into the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"juzzztinsoong"},"content":" while (!tasklist.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"juzzztinsoong"},"content":" String tempString \u003d tasklist.clearList();","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"juzzztinsoong"},"content":" writer.write(tempString + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"juzzztinsoong"},"content":" writer.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"juzzztinsoong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"juzzztinsoong"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":80}},{"path":"src/main/java/duke/utils/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":" public static String LINE \u003d \"―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" public static String LOGO \u003d \" ______ _ ______ __ ____ __ \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" \" / ____/____(_)___ ____ ____ /_ __/__ _ __/ /_ / __ )____ / /_\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" \" / / / ___/ / __ \\\\/ __ `/ _ \\\\ / / / _ \\\\| |/_/ __/ / __ / __ \\\\/ __/\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" \" / /___/ / / / / / / /_/ / __/ / / / __/\u003e \u003c/ /_ / /_/ / /_/ / /_ \\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" \" \\\\____/_/ /_/_/ /_/\\\\__, /\\\\___/ /_/ \\\\___/_/|_|\\\\__/ /_____/\\\\____/\\\\__/ \\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" \" /____/ \\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" * Displays the welcome message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" System.out.println(String.format(\"%sHi, I am a\\n%s\\nHow can I help you hehe.. (° ͜ʖ °)\\n%s\", LINE, LOGO, LINE));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" * Reads a command from the input stream, prints, then returns it. This method","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" * is called by the command line interface to allow the user to select a command","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" * to be executed.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" * @return String command entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"juzzztinsoong"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"juzzztinsoong"},"content":" System.out.println(String.format(\"You said: %s\\n%s\", input, LINE));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"juzzztinsoong"},"content":" return input;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"juzzztinsoong"},"content":" * Prints a string to the console. This is a convenience method for","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"juzzztinsoong"},"content":" * System.out.println(str).","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"juzzztinsoong"},"content":" * @param str string to print","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"juzzztinsoong"},"content":" public void print(String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"juzzztinsoong"},"content":" System.out.println(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"juzzztinsoong"},"content":" * Prints a divider line to the console.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"juzzztinsoong"},"content":" public void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"juzzztinsoong"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"juzzztinsoong"},"content":" * Prints an error message to the console. This method is called by the index","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"juzzztinsoong"},"content":" * file when an error occurs.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"juzzztinsoong"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"juzzztinsoong"},"content":" * @param message for display to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"juzzztinsoong"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"juzzztinsoong"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"juzzztinsoong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"juzzztinsoong"},"content":" * Close the scanner and show goodbye. This is called when the user inputs the","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"juzzztinsoong"},"content":" * closing command.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"juzzztinsoong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"juzzztinsoong"},"content":" public void showGoodbye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"juzzztinsoong"},"content":" scanner.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":77}},{"path":"src/test/java/duke/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":" public void Test1() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":" TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.add(\"hi\", true);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.delete(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" // TODO Auto-generated catch block","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" assertEquals(tasklist.getSize(), new TaskList().getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":" public void Test2() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" tasklist.add(\"hi\", true);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" assertEquals(tasklist.toString(), \"1.[T][X] hi\\nYou have 1 task(s) in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":30}},{"path":"src/test/java/duke/utils/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"import duke.commands.DeadlineCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"juzzztinsoong"},"content":"import duke.exceptions.IncorrectFormatException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"juzzztinsoong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"juzzztinsoong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"juzzztinsoong"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"juzzztinsoong"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"juzzztinsoong"},"content":" public void test1() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"juzzztinsoong"},"content":" assertEquals(Parser.parseDeadline(\"blah /by 12/12/2012 16:00\", false),","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"juzzztinsoong"},"content":" new DeadlineCommand(null, false, LocalDate.of(2012, 12, 12), LocalTime.of(16, 0)));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"juzzztinsoong"},"content":" } catch (IncorrectFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"juzzztinsoong"},"content":" // TODO Auto-generated catch block","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"juzzztinsoong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"juzzztinsoong"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"juzzztinsoong"},"content":" public void test2() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"juzzztinsoong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"juzzztinsoong"},"content":" assertEquals(Parser.map(\"delete\"), DukeEnum.DELETE);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"juzzztinsoong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"juzzztinsoong"},"content":" // TODO Auto-generated catch block","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"juzzztinsoong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"juzzztinsoong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"juzzztinsoong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"juzzztinsoong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"juzzztinsoong":36}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"juzzztinsoong"},"content":"find skd","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"juzzztinsoong"},"content":"mark 4","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"juzzztinsoong"},"content":"unmark 2","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"juzzztinsoong"},"content":"list","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"juzzztinsoong"},"content":"bye","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"juzzztinsoong":5}},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":"juzzztinsoong"},"content":"REM FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"-":20,"juzzztinsoong":1}}] diff --git a/juzzztinsoong_ip_master/commits.json b/juzzztinsoong_ip_master/commits.json index 1b7cb83c..130b1a8b 100644 --- a/juzzztinsoong_ip_master/commits.json +++ b/juzzztinsoong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"juzzztinsoong":[{"date":"2023-08-22","commitResults":[{"hash":"ded50efe5b4f0c166f6fc5c1a241a3f4bcfdc81a","isMergeCommit":false,"messageTitle":"renamed","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"f397555b7f2a711a99d47555dd52cbb34cee04ac","isMergeCommit":false,"messageTitle":"echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":9}}},{"hash":"151803b0053fe8e096754579eed67fa85eae5ff1","isMergeCommit":false,"messageTitle":"add, list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":6}}},{"hash":"00747441f0d29b7aa76cc30a053add403ef367b0","isMergeCommit":false,"messageTitle":"mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":49}}}]},{"date":"2023-08-23","commitResults":[{"hash":"ac3b0623ce878d1ffe6017684b9df7f84bc78f66","isMergeCommit":false,"messageTitle":"partially implemented task subclasses","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":2}}},{"hash":"fd6bb81e468cc7ecfcb1b4bcd0e2737c062a5621","isMergeCommit":false,"messageTitle":"refactored task subclasses","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":39}}},{"hash":"8c6141b7a52bf0fa49c080b3b8a7fc0746e8ed42","isMergeCommit":false,"messageTitle":"refactored, added duke exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":164,"deletions":64}}},{"hash":"a7a86d08ceb5f88ad612e3fe335b728414f37700","isMergeCommit":false,"messageTitle":"added ability to delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"731c8ed9a77b2d53b015ad23a54658da17f7d9a4","isMergeCommit":false,"messageTitle":"implemented enum","messageBody":"","tags":["A-ENUM"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":19}}}]},{"date":"2023-08-27","commitResults":[{"hash":"cd967d2d9de7fd1d988c15ee5bee4836f6900d36","isMergeCommit":false,"messageTitle":"testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"26fd1faef0c90dc9985c8caea31df4282d17cca7","isMergeCommit":false,"messageTitle":"implemented file reader","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":13},"java":{"insertions":50,"deletions":1},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"e90bf745d788a8fd204469c9d7b7fdbeb0c8c690","isMergeCommit":false,"messageTitle":"added datetime info for tasks, partial implementation of datetimeparser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":17}}},{"hash":"1b9b7853fa9ecb7c1e34c0f309abdd6ad1644176","isMergeCommit":false,"messageTitle":"implemented file writer","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":0}}},{"hash":"b1a4733e4b0ce30c28259a5ff484d7eb8ac4113d","isMergeCommit":false,"messageTitle":"implemented marking as done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"96cd3f0068ddb3f54ff8fe77e7406870eb60dcb3","isMergeCommit":false,"messageTitle":"saving implementation completed","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":3},"java":{"insertions":10,"deletions":6}}},{"hash":"1a0ca19e568b3c52f542216b1bd6b3efe11fb4f6","isMergeCommit":true,"messageTitle":"Merge pull request #1 from juzzztinsoong/branch-Level-7","messageBody":"Branch level 7","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"0e40d7badcf568daa3bf89897de694c02f8a1a06","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Level-8","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1957ac6b93f075dd2f84abd2c9b545cbf08679fd","isMergeCommit":false,"messageTitle":"merge + some time/date utility rewrites","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":3},"java":{"insertions":182,"deletions":56}}},{"hash":"c2ced9b4ff08d10a32c7711d84781fd896e0296f","isMergeCommit":false,"messageTitle":"implemented date time formatting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":14},"java":{"insertions":620,"deletions":447}}},{"hash":"03170111d76a3e5aaa564bc3603fd4afcd4d47da","isMergeCommit":true,"messageTitle":"Merge pull request #2 from juzzztinsoong/branch-Level-8","messageBody":"Branch level 8","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"8095bc8eacaafef4eedfe56c2959d3d174257375","isMergeCommit":false,"messageTitle":"added OOP, packages already implemented","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"e1aefab779b5ad70db413edf2ab9398971d9d235","isMergeCommit":false,"messageTitle":"renamed packages","messageBody":"had to do something for this task\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":39,"deletions":39}}},{"hash":"5bb5c18434319b76a893a56704201de992c94029","isMergeCommit":false,"messageTitle":"removed unnecessary code","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":7},"java":{"insertions":33,"deletions":19}}},{"hash":"11a3d63b294adfde01332f8ca0ef964d33b6d973","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into gradle-branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6fa8b048ac5e0662f5f26c0c211d62cf60a07327","isMergeCommit":false,"messageTitle":"got gradle working","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"d5d0758d983453c33396ae17a2a771bac58edad8","isMergeCommit":true,"messageTitle":"Merge pull request #3 from juzzztinsoong/gradle-branch","messageBody":"Gradle branch","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"8c75ae02d54af0b308c535f471ba4fed125b214e","isMergeCommit":false,"messageTitle":"create test for tasklist and parser","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":66,"deletions":0}}},{"hash":"534b9a91fd03f63721b79069946a02d70f96307c","isMergeCommit":false,"messageTitle":"rename files according to checkstyle, create jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":75}}}]},{"date":"2023-09-01","commitResults":[{"hash":"6ebd38d4ae0d46d989f91efa291f6aada36858bf","isMergeCommit":false,"messageTitle":"reconfigure gradle build for jar","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":4,"deletions":0}}},{"hash":"88ad0391a93a58e9d7e6bbe3806603cad7462116","isMergeCommit":false,"messageTitle":"format based on coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":619,"deletions":626}}},{"hash":"d28ae07be876946443ca32ab20a8115a6cd6e2e6","isMergeCommit":true,"messageTitle":"Merge pull request #4 from juzzztinsoong/branch-A-CodingStandard","messageBody":"format based on coding standard","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"juzzztinsoong":{"java":959,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":3,"txt":11}},"authorContributionVariance":{"juzzztinsoong":249225.73},"authorDisplayNameMap":{"juzzztinsoong":"CS2103T-F12-4 JUST.. KAI"}} +{"authorDailyContributionsMap":{"juzzztinsoong":[{"date":"2023-08-22","commitResults":[{"hash":"ded50efe5b4f0c166f6fc5c1a241a3f4bcfdc81a","isMergeCommit":false,"messageTitle":"renamed","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"f397555b7f2a711a99d47555dd52cbb34cee04ac","isMergeCommit":false,"messageTitle":"echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":9}}},{"hash":"151803b0053fe8e096754579eed67fa85eae5ff1","isMergeCommit":false,"messageTitle":"add, list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":6}}},{"hash":"00747441f0d29b7aa76cc30a053add403ef367b0","isMergeCommit":false,"messageTitle":"mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":49}}}]},{"date":"2023-08-23","commitResults":[{"hash":"ac3b0623ce878d1ffe6017684b9df7f84bc78f66","isMergeCommit":false,"messageTitle":"partially implemented task subclasses","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":2}}},{"hash":"fd6bb81e468cc7ecfcb1b4bcd0e2737c062a5621","isMergeCommit":false,"messageTitle":"refactored task subclasses","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":39}}},{"hash":"8c6141b7a52bf0fa49c080b3b8a7fc0746e8ed42","isMergeCommit":false,"messageTitle":"refactored, added duke exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":164,"deletions":64}}},{"hash":"a7a86d08ceb5f88ad612e3fe335b728414f37700","isMergeCommit":false,"messageTitle":"added ability to delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"731c8ed9a77b2d53b015ad23a54658da17f7d9a4","isMergeCommit":false,"messageTitle":"implemented enum","messageBody":"","tags":["A-ENUM"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":19}}}]},{"date":"2023-08-27","commitResults":[{"hash":"cd967d2d9de7fd1d988c15ee5bee4836f6900d36","isMergeCommit":false,"messageTitle":"testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"26fd1faef0c90dc9985c8caea31df4282d17cca7","isMergeCommit":false,"messageTitle":"implemented file reader","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":13},"java":{"insertions":50,"deletions":1},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"e90bf745d788a8fd204469c9d7b7fdbeb0c8c690","isMergeCommit":false,"messageTitle":"added datetime info for tasks, partial implementation of datetimeparser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":17}}},{"hash":"1b9b7853fa9ecb7c1e34c0f309abdd6ad1644176","isMergeCommit":false,"messageTitle":"implemented file writer","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":0}}},{"hash":"b1a4733e4b0ce30c28259a5ff484d7eb8ac4113d","isMergeCommit":false,"messageTitle":"implemented marking as done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"96cd3f0068ddb3f54ff8fe77e7406870eb60dcb3","isMergeCommit":false,"messageTitle":"saving implementation completed","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":3},"java":{"insertions":10,"deletions":6}}},{"hash":"1a0ca19e568b3c52f542216b1bd6b3efe11fb4f6","isMergeCommit":true,"messageTitle":"Merge pull request #1 from juzzztinsoong/branch-Level-7","messageBody":"Branch level 7","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"0e40d7badcf568daa3bf89897de694c02f8a1a06","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Level-8","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1957ac6b93f075dd2f84abd2c9b545cbf08679fd","isMergeCommit":false,"messageTitle":"merge + some time/date utility rewrites","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":3},"java":{"insertions":182,"deletions":56}}},{"hash":"c2ced9b4ff08d10a32c7711d84781fd896e0296f","isMergeCommit":false,"messageTitle":"implemented date time formatting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":14},"java":{"insertions":620,"deletions":447}}},{"hash":"03170111d76a3e5aaa564bc3603fd4afcd4d47da","isMergeCommit":true,"messageTitle":"Merge pull request #2 from juzzztinsoong/branch-Level-8","messageBody":"Branch level 8","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"8095bc8eacaafef4eedfe56c2959d3d174257375","isMergeCommit":false,"messageTitle":"added OOP, packages already implemented","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"e1aefab779b5ad70db413edf2ab9398971d9d235","isMergeCommit":false,"messageTitle":"renamed packages","messageBody":"had to do something for this task\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":39,"deletions":39}}},{"hash":"5bb5c18434319b76a893a56704201de992c94029","isMergeCommit":false,"messageTitle":"removed unnecessary code","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":7},"java":{"insertions":33,"deletions":19}}},{"hash":"11a3d63b294adfde01332f8ca0ef964d33b6d973","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into gradle-branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6fa8b048ac5e0662f5f26c0c211d62cf60a07327","isMergeCommit":false,"messageTitle":"got gradle working","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"d5d0758d983453c33396ae17a2a771bac58edad8","isMergeCommit":true,"messageTitle":"Merge pull request #3 from juzzztinsoong/gradle-branch","messageBody":"Gradle branch","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"8c75ae02d54af0b308c535f471ba4fed125b214e","isMergeCommit":false,"messageTitle":"create test for tasklist and parser","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":66,"deletions":0}}},{"hash":"534b9a91fd03f63721b79069946a02d70f96307c","isMergeCommit":false,"messageTitle":"rename files according to checkstyle, create jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":75}}}]},{"date":"2023-09-01","commitResults":[{"hash":"6ebd38d4ae0d46d989f91efa291f6aada36858bf","isMergeCommit":false,"messageTitle":"reconfigure gradle build for jar","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":4,"deletions":0}}},{"hash":"88ad0391a93a58e9d7e6bbe3806603cad7462116","isMergeCommit":false,"messageTitle":"format based on coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":619,"deletions":626}}},{"hash":"0b035c2e91e6658f832fec385e53f8c04f0bc74d","isMergeCommit":false,"messageTitle":"add javadocs to all required classes","messageBody":"","tags":["A-JavaDocs"],"fileTypesAndContributionMap":{"java":{"insertions":341,"deletions":59}}},{"hash":"0c0dd56c339ac5abbfb44e077a68fe41a7069946","isMergeCommit":false,"messageTitle":"implement find command","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":43,"deletions":2}}},{"hash":"d28ae07be876946443ca32ab20a8115a6cd6e2e6","isMergeCommit":true,"messageTitle":"Merge pull request #4 from juzzztinsoong/branch-A-CodingStandard","messageBody":"format based on coding standard","fileTypesAndContributionMap":{}},{"hash":"b2cbf5d136485f48349b14388da6ae51071a3927","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d2f626d61842ff41c5a87ea55c024e61b1df5598","isMergeCommit":true,"messageTitle":"Merge pull request #5 from juzzztinsoong/branch-A-JavaDoc","messageBody":"add javadocs to all required classes","fileTypesAndContributionMap":{}},{"hash":"cc040a6e46667134cbcc551d7c2b03b088dd14db","isMergeCommit":false,"messageTitle":"remove todocommand","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":1},"java":{"insertions":4,"deletions":29}}},{"hash":"d95d3ea3a93eaabdf4a97fe0749551675258e365","isMergeCommit":false,"messageTitle":"readd todocommand","messageBody":"file caps error\n","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"a7fe1e1aa9c588eb7d98dda19b3cdc04eb00f791","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Level-9","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f3f4ca7dea60a8063c7bcf78b01fd27c7fe31ade","isMergeCommit":true,"messageTitle":"Merge pull request #6 from juzzztinsoong/branch-Level-9","messageBody":"implement find command","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"juzzztinsoong":{"java":1316,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":3,"txt":11}},"authorContributionVariance":{"juzzztinsoong":332711.34},"authorDisplayNameMap":{"juzzztinsoong":"CS2103T-F12-4 JUST.. KAI"}} diff --git a/jx124_ip_master/authorship.json b/jx124_ip_master/authorship.json index 5fcd8e20..e9927bd4 100644 --- a/jx124_ip_master/authorship.json +++ b/jx124_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":" * A chatbot that helps you keep track of tasks.","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" ui.showGreeting();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" System.out.print(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" new Duke(\"./data/duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jx124":38,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":" * Represents exceptions specific to duke.Duke.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" * Constructor for a duke.DukeException instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" * @param errorMessage Error message to be displayed.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jx124":14}},{"path":"src/main/java/duke/Messages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"public class Messages {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":" public static final String GREETING_MESSAGE \u003d \"Hello! I\u0027m EnPassant\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":" + \"What can I do for you?\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":" public static final String EXIT_MESSAGE \u003d \"Bye! Hope to see you again soon!\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" public static final String LIST_MESSAGE \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" public static final String NEW_TASK_ADDED_MESSAGE \u003d \"New task just dropped!\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" public static final String TASK_DELETED_MESSAGE \u003d \"Task went on vacation, never came back.\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" public static final String TOTAL_TASK_COUNT_MESSAGE \u003d \"You now have %d tasks in the list!\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" public static final String MARK_DONE_MESSAGE \u003d \"Great success! I have marked this task as done:\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" public static final String MARK_UNDONE_MESSAGE \u003d \"Very nice! I have marked this task as not done yet:\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" public static final String INVALID_INDEX_MESSAGE \u003d \"Great heavens! You have entered an invalid index!\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" public static final String INVALID_INPUT_MESSAGE \u003d \"Great heavens! You have entered an invalid input!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" + \"Here are the valid commands:\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" + \" bye\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" + \" list\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" + \" mark|unmark \u003cindex\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" + \" delete \u003cindex\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" + \" todo \u003cdescription\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" + \" deadline \u003cdescription\u003e /by \u003cdate\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" + \" event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" public static final String INVALID_MARK_MESSAGE \u003d \"Great heavens! The index of mark cannot be empty!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" + \"Usage: mark \u003cindex\u003e\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" public static final String INVALID_UNMARK_MESSAGE \u003d \"Great heavens! The index of unmark cannot be empty!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" + \"Usage: unmark \u003cindex\u003e\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" public static final String INVALID_TODO_MESSAGE \u003d \"Great heavens! The description of todo cannot be empty!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" + \"Usage: todo \u003cdescription\u003e\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" public static final String INVALID_DEADLINE_MESSAGE \u003d \"Great heavens! Invalid usage of deadline!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" + \"Usage: deadline \u003cdescription\u003e /by \u003cyyyy-mm-dd HHmm\u003e (24h format)\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" public static final String INVALID_EVENT_MESSAGE \u003d \"Great heavens! Invalid usage of event!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" + \"Usage: event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" public static final String INVALID_DELETE_MESSAGE \u003d \"Great heavens! The index of delete cannot be empty!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" + \"Usage: delete \u003cindex\u003e\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" public static final String CORRUPT_FILE_MESSAGE \u003d \"Great heavens! The data file is corrupted!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" + \"Starting with new task list...\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":37}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.command.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" private static final String regexPattern \u003d","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" \"\\\\b(bye|list|unmark|mark|todo|deadline|event|delete)\\\\s*\" // match command","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" + \"([^/]*[^/\\\\s])?\\\\s*\" // match chars that are not / after command","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" + \"(?:(/by|/from)\\\\s+([^/]*[^/\\\\s]))?\\\\s*\" // match /by or /from command and argument","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" + \"(?:(/to)\\\\s+([^/]*[^/\\\\s]))?\\\\s*\"; // match /to command and argument","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" private static final Pattern pattern \u003d Pattern.compile(regexPattern);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" public static Command parse(String command) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" Matcher matcher \u003d pattern.matcher(command);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" // no match means input is not valid","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_INPUT_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" switch (matcher.group(1)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_MARK_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" index \u003d Integer.parseInt(matcher.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" return new MarkCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_UNMARK_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jx124"},"content":" index \u003d Integer.parseInt(matcher.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jx124"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jx124"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_TODO_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jx124"},"content":" return new TaskCommand(new Todo(matcher.group(2)));","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"jx124"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jx124"},"content":" || matcher.group(3) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"jx124"},"content":" || !matcher.group(3).equals(\"/by\")","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"jx124"},"content":" || matcher.group(4) \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_DEADLINE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"jx124"},"content":" LocalDateTime parsedDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"jx124"},"content":" parsedDate \u003d LocalDateTime.parse(matcher.group(4),","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"jx124"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"jx124"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_DEADLINE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"jx124"},"content":" return new TaskCommand(new Deadline(matcher.group(2), parsedDate));","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"jx124"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"jx124"},"content":" || matcher.group(3) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"jx124"},"content":" || !matcher.group(3).equals(\"/from\")","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"jx124"},"content":" || matcher.group(4) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"jx124"},"content":" || matcher.group(5) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"jx124"},"content":" || !matcher.group(5).equals(\"/to\")","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"jx124"},"content":" || matcher.group(6) \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_EVENT_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"jx124"},"content":" return new TaskCommand(new Event(matcher.group(2), matcher.group(4), matcher.group(6)));","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"jx124"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_DELETE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"jx124"},"content":" index \u003d Integer.parseInt(matcher.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"jx124"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"jx124"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_INPUT_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":92}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" * This class handles saving and parsing saved task files.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" private final String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" * Get the file handle of the save file, or create the directories and the save file if it does not exist.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" * @return A File object referencing the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" * @throws DukeException if the directories or file cannot be created.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" private File getOrCreateFile() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" Path path \u003d Paths.get(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + e.getMessage() + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jx124"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jx124"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jx124"},"content":" Files.createFile(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jx124"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + e.getMessage() + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jx124"},"content":" return file;","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jx124"},"content":" * Load the tasks from the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jx124"},"content":" * @return An ArrayList containing all the tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jx124"},"content":" * @throws DukeException if there is an error accessing the file, or if the file data was corrupted.","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"jx124"},"content":" public ArrayList\u003cTask\u003e loadTasks() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"jx124"},"content":" File file \u003d this.getOrCreateFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"jx124"},"content":" String regexPattern \u003d \"([TDE])\\\\s\\\\|\\\\s\" // match type","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"jx124"},"content":" + \"([01])\\\\s\\\\|\\\\s\" // match done or not done","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"jx124"},"content":" + \"([^/|]*[^/|\\\\s])\" // match description","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"jx124"},"content":" + \"(?:\\\\s\\\\|\\\\s([^/|]*[^/|\\\\s]))?\" // match /from or /by","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"jx124"},"content":" + \"(?:\\\\s\\\\|\\\\s([^/|]*[^/|\\\\s]))?\"; // match /to","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"jx124"},"content":" Pattern pattern \u003d Pattern.compile(regexPattern);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"jx124"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"jx124"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"jx124"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"jx124"},"content":" String str \u003d sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"jx124"},"content":" Matcher matcher \u003d pattern.matcher(str);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"jx124"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.CORRUPT_FILE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"jx124"},"content":" switch (matcher.group(1)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"jx124"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null || matcher.group(3) \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.CORRUPT_FILE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"jx124"},"content":" Todo newTodo \u003d new Todo(matcher.group(3));","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"jx124"},"content":" if (matcher.group(2).equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"jx124"},"content":" newTodo.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"jx124"},"content":" tasks.add(newTodo);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"jx124"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"jx124"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"jx124"},"content":" || matcher.group(3) \u003d\u003d null","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"jx124"},"content":" || matcher.group(4) \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.CORRUPT_FILE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"jx124"},"content":" LocalDateTime parsedDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"jx124"},"content":" parsedDate \u003d LocalDateTime.parse(matcher.group(4),","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"jx124"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"jx124"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.CORRUPT_FILE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"jx124"},"content":" Deadline newDeadline \u003d new Deadline(matcher.group(3), parsedDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"jx124"},"content":" if (matcher.group(2).equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"jx124"},"content":" newDeadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"jx124"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"jx124"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"jx124"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"jx124"},"content":" || matcher.group(3) \u003d\u003d null","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"jx124"},"content":" || matcher.group(4) \u003d\u003d null","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"jx124"},"content":" || matcher.group(5) \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.CORRUPT_FILE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"jx124"},"content":" Event newEvent \u003d new Event(matcher.group(3), matcher.group(4), matcher.group(5));","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"jx124"},"content":" if (matcher.group(2).equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"jx124"},"content":" newEvent.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"jx124"},"content":" tasks.add(newEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"jx124"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"jx124"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + e.getMessage() + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"jx124"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"jx124"},"content":" * Save the tasks into the save file","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"jx124"},"content":" * @param tasks The ArrayList containing all the tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"jx124"},"content":" * @throws DukeException if there is an error accessing or writing to the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"jx124"},"content":" public void saveTasks(TaskList tasks) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"jx124"},"content":" getOrCreateFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"jx124"},"content":" FileWriter fileWriter \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"jx124"},"content":" fileWriter.write(tasks.getSaveString());","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"jx124"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"jx124"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + e.getMessage() + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jx124":157}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" public Task remove(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" return this.tasks.remove(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" StringBuilder tempString \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" tempString.append(task.getSaveString()).append(System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" return tempString.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" public void printTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" System.out.println((i + 1) + \". \" + this.tasks.get(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":" public Task markAsDone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jx124"},"content":" Task currentTask \u003d this.tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jx124"},"content":" currentTask.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jx124"},"content":" return currentTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jx124"},"content":" public Task markAsUndone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jx124"},"content":" Task currentTask \u003d this.tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jx124"},"content":" currentTask.markAsUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"jx124"},"content":" return currentTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":56}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" * This class handles the UI of the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" public static final String LINE \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" private final Scanner in;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" private final PrintStream out;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" * Constructor for a duke.Ui instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" this.in \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" this.out \u003d System.out;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" * Print a message with horizontal lines above and below it.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" * @param message The message to be printed.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" private void printWithLines(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" out.print(LINE + message + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" * Print all the Tasks in the list with their respective indices,","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" * surrounded by horizontal lines.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" * @param list The list containing the tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" public void showList(TaskList list) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" out.print(LINE + Messages.LIST_MESSAGE);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" list.printTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" out.print(LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jx124"},"content":" * Print the new task added along with its associated message,","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jx124"},"content":" * the new count of tasks, surrounded by horizontal lines.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jx124"},"content":" * @param task The new task added.","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jx124"},"content":" * @param totalTasks The total count of tasks in the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jx124"},"content":" public void showTaskAdded(Task task, int totalTasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jx124"},"content":" out.print(LINE + Messages.NEW_TASK_ADDED_MESSAGE);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"jx124"},"content":" out.print(\" \" + task + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jx124"},"content":" out.printf(Messages.TOTAL_TASK_COUNT_MESSAGE, totalTasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jx124"},"content":" out.print(LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"jx124"},"content":" * Print the task deleted along with its associated message,","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"jx124"},"content":" * the new count of tasks, surrounded by horizontal lines.","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"jx124"},"content":" * @param task The deleted task.","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"jx124"},"content":" * @param totalTasks The total count of tasks in the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"jx124"},"content":" public void showTaskDeleted(Task task, int totalTasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"jx124"},"content":" out.print(LINE + Messages.TASK_DELETED_MESSAGE);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"jx124"},"content":" out.print(\" \" + task + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"jx124"},"content":" out.printf(Messages.TOTAL_TASK_COUNT_MESSAGE, totalTasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"jx124"},"content":" out.print(LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"jx124"},"content":" * Print the task marked as done along with its associated message,","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"jx124"},"content":" * surrounded by horizontal lines.","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"jx124"},"content":" * @param task The done task.","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"jx124"},"content":" public void showTaskDone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"jx124"},"content":" printWithLines(Messages.MARK_DONE_MESSAGE + \" \" + task + \u0027\\n\u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"jx124"},"content":" * Print the task marked as undone along with its associated message,","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"jx124"},"content":" * surrounded by horizontal lines.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"jx124"},"content":" * @param task The undone task.","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"jx124"},"content":" public void showTaskUndone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"jx124"},"content":" printWithLines(Messages.MARK_UNDONE_MESSAGE + \" \" + task + \u0027\\n\u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"jx124"},"content":" /** Print the greeting message. */","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"jx124"},"content":" public void showGreeting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"jx124"},"content":" printWithLines(Messages.GREETING_MESSAGE);","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"jx124"},"content":" /** Print the exit message. */","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"jx124"},"content":" public void showExitMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"jx124"},"content":" printWithLines(Messages.EXIT_MESSAGE);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"jx124"},"content":" * Reads the text entered by the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"jx124"},"content":" * @return The line read.","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"jx124"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"jx124"},"content":" return in.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jx124":111}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":11}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" if (index \u003c 1 || index \u003e tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_INDEX_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" Task removed \u003d tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" ui.showTaskDeleted(removed, tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":27}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" ui.showExitMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":18}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" ui.showList(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":18}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" if (index \u003c 1 || index \u003e tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_INDEX_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" Task currentTask \u003d tasks.markAsDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" ui.showTaskDone(currentTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":27}},{"path":"src/main/java/duke/command/TaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"public class TaskCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" private final Task newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" public TaskCommand(Task newTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" this.newTask \u003d newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" ui.showTaskAdded(newTask, tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":27}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" if (index \u003c 1 || index \u003e tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_INDEX_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" Task currentTask \u003d tasks.markAsUndone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" ui.showTaskUndone(currentTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":27}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" * Represents a duke.task.Task with a deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" * Constructor for a duke.task.Deadline instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" * @param description The description of the underlying task.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" * @param by The date by which the task is due.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" * Provides the string representation of the duke.task.Deadline instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" * @return A string with the relevant information of the duke.task.Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" return String.format(\"[D]%s (by: %s)\",","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" super.toString(),","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy, hh:mm a\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" * Get a formatted string of the duke.task.Deadline task to add to the save file.","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" * @return A formatted string with the relevant information for the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" return String.format(\"D | %d | %s | %s\",","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":" this.isDone ? 1 : 0,","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":" this.description,","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":" this.by.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jx124":47}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":" * Represents a duke.task.Task with a start and end date.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" protected String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" protected String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" * Constructor for an duke.task.Event instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" * @param description The description of the underlying task.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" * @param from The date on which the event begins.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" * @param to The date on which the event ends.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" * Provides the string representation of the duke.task.Event instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" * @return A string with the relevant information of the duke.task.Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.from, this.to);","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" * Get a formatted string of the duke.task.Event task to add to the save file.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" * @return A formatted string with the relevant information for the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" return String.format(\"E | %d | %s | %s | %s\",","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" this.isDone ? 1 : 0,","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" this.description,","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" this.from,","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":" this.to);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jx124":45}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":" * Represents a task with a description that can be marked done or undone.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" * Constructor for a duke.task.Task instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" * Returns the status icon of the task, where \u0027X\u0027 represents that the task","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" * is done, and \u0027 \u0027 otherwise.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" * @return A string showing the done status of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" return isDone ? \"X\" : \" \"; // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" * Mark the task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" * Mark the task as undone.","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":" * Provides the string representation of the duke.task.Task instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jx124"},"content":" * @return A string with the relevant information of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"jx124"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"jx124"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jx124"},"content":" * Get a formatted string of the duke.task.Task to add to the save file.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jx124"},"content":" * @return A formatted string with the relevant information for the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jx124"},"content":" public abstract String getSaveString();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jx124":59}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":" * Represents a duke.task.Task to be done.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" * Constructor for a duke.task.Todo instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" * @param description The description of the underlying task.","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" * Provides the string representation of the duke.task.Todo instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" * @return A string with the relevant information of the duke.task.Todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" * Get a formatted string of the duke.task.Todo task to add to the save file.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" * @return A formatted string with the relevant information for the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" return String.format(\"T | %d | %s\",","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" this.isDone ? 1 : 0,","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jx124":37}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"deadline complete assignment /by tomorrow","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"event go home /from friday /to sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"delete 7","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"test","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":"unmark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":"delete 2","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jx124":15}},{"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":"jx124"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"jx124":1,"-":20}}] +[{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":" * A chatbot that helps you keep track of tasks.","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" ui.showGreeting();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" System.out.print(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" new Duke(\"./data/duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jx124":38,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":" * Represents exceptions specific to duke.Duke.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" * Constructor for a duke.DukeException instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" * @param errorMessage Error message to be displayed.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jx124":14}},{"path":"src/main/java/duke/Messages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"public class Messages {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":" public static final String GREETING_MESSAGE \u003d \"Hello! I\u0027m EnPassant\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":" + \"What can I do for you?\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":" public static final String EXIT_MESSAGE \u003d \"Bye! Hope to see you again soon!\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" public static final String LIST_MESSAGE \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" public static final String NEW_TASK_ADDED_MESSAGE \u003d \"New task just dropped!\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" public static final String TASK_DELETED_MESSAGE \u003d \"Task went on vacation, never came back.\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" public static final String TOTAL_TASK_COUNT_MESSAGE \u003d \"You now have %d tasks in the list!\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" public static final String MARK_DONE_MESSAGE \u003d \"Great success! I have marked this task as done:\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" public static final String MARK_UNDONE_MESSAGE \u003d \"Very nice! I have marked this task as not done yet:\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" public static final String INVALID_INDEX_MESSAGE \u003d \"Great heavens! You have entered an invalid index!\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" public static final String INVALID_INPUT_MESSAGE \u003d \"Great heavens! You have entered an invalid input!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" + \"Here are the valid commands:\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" + \" bye\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" + \" list\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" + \" mark|unmark \u003cindex\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" + \" delete \u003cindex\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" + \" todo \u003cdescription\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" + \" deadline \u003cdescription\u003e /by \u003cdate\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" + \" event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" public static final String INVALID_MARK_MESSAGE \u003d \"Great heavens! The index of mark cannot be empty!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" + \"Usage: mark \u003cindex\u003e\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" public static final String INVALID_UNMARK_MESSAGE \u003d \"Great heavens! The index of unmark cannot be empty!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" + \"Usage: unmark \u003cindex\u003e\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" public static final String INVALID_TODO_MESSAGE \u003d \"Great heavens! The description of todo cannot be empty!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" + \"Usage: todo \u003cdescription\u003e\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" public static final String INVALID_DEADLINE_MESSAGE \u003d \"Great heavens! Invalid usage of deadline!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" + \"Usage: deadline \u003cdescription\u003e /by \u003cyyyy-mm-dd HHmm\u003e (24h format)\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" public static final String INVALID_EVENT_MESSAGE \u003d \"Great heavens! Invalid usage of event!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" + \"Usage: event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" public static final String INVALID_DELETE_MESSAGE \u003d \"Great heavens! The index of delete cannot be empty!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" + \"Usage: delete \u003cindex\u003e\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" public static final String CORRUPT_FILE_MESSAGE \u003d \"Great heavens! The data file is corrupted!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" + \"Starting with new task list...\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":37}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.command.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" private static final String regexPattern \u003d","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" \"\\\\b(bye|list|unmark|mark|todo|deadline|event|delete)\\\\s*\" // match command","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" + \"([^/]*[^/\\\\s])?\\\\s*\" // match chars that are not / after command","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" + \"(?:(/by|/from)\\\\s+([^/]*[^/\\\\s]))?\\\\s*\" // match /by or /from command and argument","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" + \"(?:(/to)\\\\s+([^/]*[^/\\\\s]))?\\\\s*\"; // match /to command and argument","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" private static final Pattern pattern \u003d Pattern.compile(regexPattern);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" public static Command parse(String command) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" Matcher matcher \u003d pattern.matcher(command);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" // no match means input is not valid","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_INPUT_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" switch (matcher.group(1)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_MARK_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" index \u003d Integer.parseInt(matcher.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" return new MarkCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_UNMARK_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jx124"},"content":" index \u003d Integer.parseInt(matcher.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jx124"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jx124"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_TODO_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jx124"},"content":" return new TaskCommand(new Todo(matcher.group(2)));","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"jx124"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jx124"},"content":" || matcher.group(3) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"jx124"},"content":" || !matcher.group(3).equals(\"/by\")","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"jx124"},"content":" || matcher.group(4) \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_DEADLINE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"jx124"},"content":" LocalDateTime parsedDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"jx124"},"content":" parsedDate \u003d LocalDateTime.parse(matcher.group(4),","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"jx124"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"jx124"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_DEADLINE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"jx124"},"content":" return new TaskCommand(new Deadline(matcher.group(2), parsedDate));","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"jx124"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"jx124"},"content":" || matcher.group(3) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"jx124"},"content":" || !matcher.group(3).equals(\"/from\")","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"jx124"},"content":" || matcher.group(4) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"jx124"},"content":" || matcher.group(5) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"jx124"},"content":" || !matcher.group(5).equals(\"/to\")","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"jx124"},"content":" || matcher.group(6) \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_EVENT_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"jx124"},"content":" return new TaskCommand(new Event(matcher.group(2), matcher.group(4), matcher.group(6)));","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"jx124"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_DELETE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"jx124"},"content":" index \u003d Integer.parseInt(matcher.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"jx124"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"jx124"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_INPUT_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":92}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" * This class handles saving and parsing saved task files.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" private final String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" * Get the file handle of the save file, or create the directories and the save file if it does not exist.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" * @return A File object referencing the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" * @throws DukeException if the directories or file cannot be created.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" private File getOrCreateFile() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" Path path \u003d Paths.get(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + e.getMessage() + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jx124"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"jx124"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"jx124"},"content":" Files.createFile(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"jx124"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + e.getMessage() + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jx124"},"content":" return file;","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"jx124"},"content":" * Load the tasks from the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"jx124"},"content":" * @return An ArrayList containing all the tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"jx124"},"content":" * @throws DukeException if there is an error accessing the file, or if the file data was corrupted.","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"jx124"},"content":" public ArrayList\u003cTask\u003e loadTasks() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"jx124"},"content":" File file \u003d this.getOrCreateFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"jx124"},"content":" String regexPattern \u003d \"([TDE])\\\\s\\\\|\\\\s\" // match type","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"jx124"},"content":" + \"([01])\\\\s\\\\|\\\\s\" // match done or not done","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"jx124"},"content":" + \"([^/|]*[^/|\\\\s])\" // match description","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"jx124"},"content":" + \"(?:\\\\s\\\\|\\\\s([^/|]*[^/|\\\\s]))?\" // match /from or /by","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"jx124"},"content":" + \"(?:\\\\s\\\\|\\\\s([^/|]*[^/|\\\\s]))?\"; // match /to","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"jx124"},"content":" Pattern pattern \u003d Pattern.compile(regexPattern);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"jx124"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"jx124"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"jx124"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"jx124"},"content":" String str \u003d sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"jx124"},"content":" Matcher matcher \u003d pattern.matcher(str);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"jx124"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.CORRUPT_FILE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"jx124"},"content":" switch (matcher.group(1)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"jx124"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null || matcher.group(3) \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.CORRUPT_FILE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"jx124"},"content":" Todo newTodo \u003d new Todo(matcher.group(3));","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"jx124"},"content":" if (matcher.group(2).equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"jx124"},"content":" newTodo.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"jx124"},"content":" tasks.add(newTodo);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"jx124"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"jx124"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"jx124"},"content":" || matcher.group(3) \u003d\u003d null","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"jx124"},"content":" || matcher.group(4) \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.CORRUPT_FILE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"jx124"},"content":" LocalDateTime parsedDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"jx124"},"content":" parsedDate \u003d LocalDateTime.parse(matcher.group(4),","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"jx124"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"jx124"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.CORRUPT_FILE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"jx124"},"content":" Deadline newDeadline \u003d new Deadline(matcher.group(3), parsedDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"jx124"},"content":" if (matcher.group(2).equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"jx124"},"content":" newDeadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"jx124"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"jx124"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"jx124"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"jx124"},"content":" if (matcher.group(2) \u003d\u003d null","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"jx124"},"content":" || matcher.group(3) \u003d\u003d null","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"jx124"},"content":" || matcher.group(4) \u003d\u003d null","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"jx124"},"content":" || matcher.group(5) \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.CORRUPT_FILE_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"jx124"},"content":" Event newEvent \u003d new Event(matcher.group(3), matcher.group(4), matcher.group(5));","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"jx124"},"content":" if (matcher.group(2).equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"jx124"},"content":" newEvent.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"jx124"},"content":" tasks.add(newEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"jx124"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"jx124"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + e.getMessage() + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"jx124"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"jx124"},"content":" * Save the tasks into the save file","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"jx124"},"content":" * @param tasks The ArrayList containing all the tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"jx124"},"content":" * @throws DukeException if there is an error accessing or writing to the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"jx124"},"content":" public void saveTasks(TaskList tasks) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"jx124"},"content":" getOrCreateFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"jx124"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"jx124"},"content":" FileWriter fileWriter \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"jx124"},"content":" fileWriter.write(tasks.getSaveString());","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"jx124"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"jx124"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + e.getMessage() + Ui.LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jx124":157}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" public Task remove(int index) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" if (index \u003c 1 || index \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_INDEX_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" return this.tasks.remove(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" StringBuilder tempString \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" tempString.append(task.getSaveString()).append(System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" return tempString.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":" public void printTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":" System.out.println((i + 1) + \". \" + this.tasks.get(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jx124"},"content":" public Task markAsDone(int index) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"jx124"},"content":" if (index \u003c 1 || index \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_INDEX_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"jx124"},"content":" Task currentTask \u003d this.tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jx124"},"content":" currentTask.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jx124"},"content":" return currentTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"jx124"},"content":" public Task markAsUndone(int index) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"jx124"},"content":" if (index \u003c 1 || index \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"jx124"},"content":" throw new DukeException(Ui.LINE + Messages.INVALID_INDEX_MESSAGE + Ui.LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"jx124"},"content":" Task currentTask \u003d this.tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"jx124"},"content":" currentTask.markAsUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"jx124"},"content":" return currentTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":68}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" * This class handles the UI of the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" public static final String LINE \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" private final Scanner in;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" private final PrintStream out;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" * Constructor for a duke.Ui instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" this.in \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" this.out \u003d System.out;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" * Print a message with horizontal lines above and below it.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" * @param message The message to be printed.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" private void printWithLines(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" out.print(LINE + message + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" * Print all the Tasks in the list with their respective indices,","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" * surrounded by horizontal lines.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" * @param list The list containing the tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" public void showList(TaskList list) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" out.print(LINE + Messages.LIST_MESSAGE);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" list.printTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" out.print(LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jx124"},"content":" * Print the new task added along with its associated message,","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"jx124"},"content":" * the new count of tasks, surrounded by horizontal lines.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"jx124"},"content":" * @param task The new task added.","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"jx124"},"content":" * @param totalTasks The total count of tasks in the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"jx124"},"content":" public void showTaskAdded(Task task, int totalTasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"jx124"},"content":" out.print(LINE + Messages.NEW_TASK_ADDED_MESSAGE);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"jx124"},"content":" out.print(\" \" + task + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jx124"},"content":" out.printf(Messages.TOTAL_TASK_COUNT_MESSAGE, totalTasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"jx124"},"content":" out.print(LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"jx124"},"content":" * Print the task deleted along with its associated message,","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"jx124"},"content":" * the new count of tasks, surrounded by horizontal lines.","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"jx124"},"content":" * @param task The deleted task.","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"jx124"},"content":" * @param totalTasks The total count of tasks in the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"jx124"},"content":" public void showTaskDeleted(Task task, int totalTasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"jx124"},"content":" out.print(LINE + Messages.TASK_DELETED_MESSAGE);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"jx124"},"content":" out.print(\" \" + task + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"jx124"},"content":" out.printf(Messages.TOTAL_TASK_COUNT_MESSAGE, totalTasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"jx124"},"content":" out.print(LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"jx124"},"content":" * Print the task marked as done along with its associated message,","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"jx124"},"content":" * surrounded by horizontal lines.","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"jx124"},"content":" * @param task The done task.","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"jx124"},"content":" public void showTaskDone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"jx124"},"content":" printWithLines(Messages.MARK_DONE_MESSAGE + \" \" + task + \u0027\\n\u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"jx124"},"content":" * Print the task marked as undone along with its associated message,","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"jx124"},"content":" * surrounded by horizontal lines.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"jx124"},"content":" * @param task The undone task.","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"jx124"},"content":" public void showTaskUndone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"jx124"},"content":" printWithLines(Messages.MARK_UNDONE_MESSAGE + \" \" + task + \u0027\\n\u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"jx124"},"content":" /** Print the greeting message. */","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"jx124"},"content":" public void showGreeting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"jx124"},"content":" printWithLines(Messages.GREETING_MESSAGE);","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"jx124"},"content":" /** Print the exit message. */","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"jx124"},"content":" public void showExitMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"jx124"},"content":" printWithLines(Messages.EXIT_MESSAGE);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"jx124"},"content":" * Reads the text entered by the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"jx124"},"content":" * @return The line read.","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"jx124"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"jx124"},"content":" return in.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"jx124":111}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":11}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" Task removed \u003d tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" ui.showTaskDeleted(removed, tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":23}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" ui.showExitMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":18}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" ui.showList(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":18}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" Task currentTask \u003d tasks.markAsDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" ui.showTaskDone(currentTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":23}},{"path":"src/main/java/duke/command/TaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"public class TaskCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" private final Task newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" public TaskCommand(Task newTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" this.newTask \u003d newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" ui.showTaskAdded(newTask, tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":27}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import duke.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" private final int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" Task currentTask \u003d tasks.markAsUndone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" ui.showTaskUndone(currentTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"jx124":23}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" * Represents a duke.task.Task with a deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" * Constructor for a duke.task.Deadline instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" * @param description The description of the underlying task.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" * @param by The date by which the task is due.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" * Provides the string representation of the duke.task.Deadline instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" * @return A string with the relevant information of the duke.task.Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" return String.format(\"[D]%s (by: %s)\",","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" super.toString(),","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy, hh:mm a\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" * Get a formatted string of the duke.task.Deadline task to add to the save file.","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" * @return A formatted string with the relevant information for the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" return String.format(\"D | %d | %s | %s\",","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":" this.isDone ? 1 : 0,","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":" this.description,","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":" this.by.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jx124":47}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":" * Represents a duke.task.Task with a start and end date.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" protected String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" protected String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" * Constructor for an duke.task.Event instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" * @param description The description of the underlying task.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" * @param from The date on which the event begins.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" * @param to The date on which the event ends.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" * Provides the string representation of the duke.task.Event instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" * @return A string with the relevant information of the duke.task.Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.from, this.to);","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" * Get a formatted string of the duke.task.Event task to add to the save file.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" * @return A formatted string with the relevant information for the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" return String.format(\"E | %d | %s | %s | %s\",","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" this.isDone ? 1 : 0,","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" this.description,","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" this.from,","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":" this.to);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jx124":45}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":" * Represents a task with a description that can be marked done or undone.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" * Constructor for a duke.task.Task instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" * Returns the status icon of the task, where \u0027X\u0027 represents that the task","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" * is done, and \u0027 \u0027 otherwise.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" * @return A string showing the done status of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" return isDone ? \"X\" : \" \"; // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" * Mark the task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"jx124"},"content":" * Mark the task as undone.","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"jx124"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"jx124"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"jx124"},"content":" * Provides the string representation of the duke.task.Task instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"jx124"},"content":" * @return A string with the relevant information of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"jx124"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"jx124"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"jx124"},"content":" * Get a formatted string of the duke.task.Task to add to the save file.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"jx124"},"content":" * @return A formatted string with the relevant information for the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"jx124"},"content":" public abstract String getSaveString();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jx124":59}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":" * Represents a duke.task.Task to be done.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":" * Constructor for a duke.task.Todo instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":" * @param description The description of the underlying task.","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jx124"},"content":" * Provides the string representation of the duke.task.Todo instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"jx124"},"content":" * @return A string with the relevant information of the duke.task.Todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"jx124"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"jx124"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"jx124"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"jx124"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"jx124"},"content":" * Get a formatted string of the duke.task.Todo task to add to the save file.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"jx124"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"jx124"},"content":" * @return A formatted string with the relevant information for the save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"jx124"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"jx124"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"jx124"},"content":" public String getSaveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"jx124"},"content":" return String.format(\"T | %d | %s\",","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"jx124"},"content":" this.isDone ? 1 : 0,","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"jx124"},"content":" this.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"jx124"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"jx124"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jx124":37}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jx124"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"jx124"},"content":"deadline complete assignment /by tomorrow","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"jx124"},"content":"event go home /from friday /to sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"jx124"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jx124"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"jx124"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"jx124"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"jx124"},"content":"delete 7","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jx124"},"content":"test","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"jx124"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"jx124"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jx124"},"content":"unmark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"jx124"},"content":"delete 2","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jx124"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jx124"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"jx124":15}},{"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":"jx124"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"jx124":1,"-":20}}] diff --git a/jx124_ip_master/commits.json b/jx124_ip_master/commits.json index 86aa7d5d..cfc57a19 100644 --- a/jx124_ip_master/commits.json +++ b/jx124_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jx124":[{"date":"2023-08-22","commitResults":[{"hash":"cbffdf6133b41152c15f458f163aa45e46d33849","isMergeCommit":false,"messageTitle":"Rename bot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"d00f3ef35d5c55e69302869edd37ccec2ec87c81","isMergeCommit":false,"messageTitle":"Add echo and exit functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":8}}},{"hash":"7a51acf1ef5ad0241080b285c1cabc339a92a765","isMergeCommit":false,"messageTitle":"Implement add and list functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":4}}},{"hash":"b4a56c82cd4fe8f67f4de88e04eadc823b236bb6","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"1357732010e1bb9c19c523eb4e03a298dd557be2","isMergeCommit":false,"messageTitle":"Implement mark as done functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":5}}}]},{"date":"2023-08-23","commitResults":[{"hash":"276f4f442ffb7db5cc39bdf25177fb2764471690","isMergeCommit":false,"messageTitle":"Add list message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}},{"hash":"1e453b8665b1d7350e80e4551fc9d077acb7cbb4","isMergeCommit":false,"messageTitle":"Add Todo, Deadline, Event subclasses","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"eb9e89f571d35b2c7b34773bcea7a64dae701b65","isMergeCommit":false,"messageTitle":"Refactor main function to use regex and switch cases, and to include new Tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":27}}},{"hash":"c99213b23360412403e8011be200ab0ccf762e99","isMergeCommit":false,"messageTitle":"Add test input and expected output","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"4777d181aedced9471e1da4ebfa2bd21c4d7b718","isMergeCommit":false,"messageTitle":"Add DukeException class","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"81ca101a5f7372caaa593571808352ad7359498c","isMergeCommit":false,"messageTitle":"Add exceptions handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":89}}},{"hash":"945d4f64184723d499abb1c1b84d4f9178781118","isMergeCommit":false,"messageTitle":"Add delete Task feature","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":2}}},{"hash":"d3fe6bdbab1be7321c43f08808afae1f2ce4c1c2","isMergeCommit":false,"messageTitle":"Update test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"5fbc9fbc35044e7aaaae1ff4abf1af07ffacba9b","isMergeCommit":false,"messageTitle":"Add javadoc documentation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"0c2fc91b2ae77991f3c5a5228decd1c226822a19","isMergeCommit":false,"messageTitle":"Change class to abstract class and add getSaveString abstract method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"7cc9c1985f0cc82d4a15624c942508777023105b","isMergeCommit":false,"messageTitle":"Implement getSaveString method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"0f992d6d54dde2337824128eff8be7e25805ed21","isMergeCommit":false,"messageTitle":"Add save file parsing and task saving","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":141,"deletions":1}}},{"hash":"9df55c2f5735df6e67889f5dfc2987ba95cf6350","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"2f69d13aace3932096c218081e0b88a059774dd4","isMergeCommit":false,"messageTitle":"Modify Deadline task to store LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}},{"hash":"90ded6e35f20806672afc89d7e8e3c5cc4bd2848","isMergeCommit":false,"messageTitle":"Modify Duke to parse and save LocalDateTime for Deadline tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"9744ba0f6ef40d1289373d6c3e409ea309052f71","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"95d337677f12d8602a137221e74491471d0970e4","isMergeCommit":false,"messageTitle":"Remove need for separate directory path by getting file path parent","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":17}}},{"hash":"65e463004d9a884693d8e3f72162767fc957898d","isMergeCommit":false,"messageTitle":"Create Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"30084f60c78718e4c776b8f15b599c81757cde89","isMergeCommit":false,"messageTitle":"Create and implement Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":157,"deletions":1}}},{"hash":"dca00d40a0db99a257c2436c1bb1da07ba167aea","isMergeCommit":false,"messageTitle":"Incorporate Storage class into Duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":138}}}]},{"date":"2023-08-31","commitResults":[{"hash":"ae04b25c2ebcb097066e253433e7008670d3c5d3","isMergeCommit":false,"messageTitle":"Implement Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":0}}},{"hash":"ff81b562bfb66ffb374ca339a95ebf676f6c39c8","isMergeCommit":false,"messageTitle":"Incorporate Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":89}}},{"hash":"6028a773398f1cb080c751ddff5fd5037a7d517c","isMergeCommit":false,"messageTitle":"Create and move all messages to new Messages class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":0}}},{"hash":"11fc05d795e368a2c9ada76d8a8f0875a781d71b","isMergeCommit":false,"messageTitle":"Create new abstract Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"e8362aa49f2738fca2c91bfa69e3abd094f56ebb","isMergeCommit":false,"messageTitle":"Implement ExitCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"1321376c5fc5f8904b359297bcb4f3bbfd2d1e35","isMergeCommit":false,"messageTitle":"Implement ListCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"eed1a86d1700ab45f50b28159b3818cb9b9d5fef","isMergeCommit":false,"messageTitle":"Switch to using messages from the Messages class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":24}}},{"hash":"317584b95a1e63e3e6ef37c0c7be36e84258e82a","isMergeCommit":false,"messageTitle":"Move storage message to Messages class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":12}}},{"hash":"404856b5e209dd173b2205d31254a438b28ca7e7","isMergeCommit":false,"messageTitle":"Modify execute method to throw DukeException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"7beea56ce389a3be37ac9a5774bb1c1d40b7e554","isMergeCommit":false,"messageTitle":"Implement MarkCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"01462b891283775c44a46bcaeafc4fccf5a97179","isMergeCommit":false,"messageTitle":"Implement UnmarkCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"da667406e06c8acef387e6a2148a311eab06c78e","isMergeCommit":false,"messageTitle":"Implement TodoCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"1cbcd920d21c9daa298c67fcedaa1f54c4919373","isMergeCommit":false,"messageTitle":"Rename TodoCommand to TaskCommand: all Tasks can use the same command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"1a828a831d9cd670e338d787c5d3dadfd94ca323","isMergeCommit":false,"messageTitle":"Implement DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"00e9219e8cbc259d16ba7f0b01ffe9dee670632a","isMergeCommit":false,"messageTitle":"Add invalid index check","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"45eba1d88a3d5b0c1af5494d363d419472ded968","isMergeCommit":false,"messageTitle":"Implement Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":0}}},{"hash":"36f5d79ea7cf40cc21ae994e9908a7643d26ac29","isMergeCommit":false,"messageTitle":"Change field and parse method to be static, remove constructor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"b400032e10b073bf847a83aa2ee3da2973f3f730","isMergeCommit":false,"messageTitle":"Implement TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":0}}},{"hash":"475c2100212d8391fc1b32c51fba2b73b8a12b26","isMergeCommit":false,"messageTitle":"Refactor to use TaskList instead of ArrayList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":199}}},{"hash":"6370b2cf966db2b659176662522598604e0c3011","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"ab5c4d4499a353387173ed85963dd5def51a4d06","isMergeCommit":false,"messageTitle":"Refactor code using packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":21},"bat":{"insertions":1,"deletions":1}}},{"hash":"474b4f0c2bb20841636c41484adad0ed8c44b186","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"8c2cc3bd99ac35a6990d0f9968e4ff84f4c8fe44","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jx124":{"java":848,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":15}},"authorContributionVariance":{"jx124":85907.766},"authorDisplayNameMap":{"jx124":"CS2103T-F08-2 NEO ..IANG"}} +{"authorDailyContributionsMap":{"jx124":[{"date":"2023-08-22","commitResults":[{"hash":"cbffdf6133b41152c15f458f163aa45e46d33849","isMergeCommit":false,"messageTitle":"Rename bot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"d00f3ef35d5c55e69302869edd37ccec2ec87c81","isMergeCommit":false,"messageTitle":"Add echo and exit functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":8}}},{"hash":"7a51acf1ef5ad0241080b285c1cabc339a92a765","isMergeCommit":false,"messageTitle":"Implement add and list functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":4}}},{"hash":"b4a56c82cd4fe8f67f4de88e04eadc823b236bb6","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"1357732010e1bb9c19c523eb4e03a298dd557be2","isMergeCommit":false,"messageTitle":"Implement mark as done functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":5}}}]},{"date":"2023-08-23","commitResults":[{"hash":"276f4f442ffb7db5cc39bdf25177fb2764471690","isMergeCommit":false,"messageTitle":"Add list message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}},{"hash":"1e453b8665b1d7350e80e4551fc9d077acb7cbb4","isMergeCommit":false,"messageTitle":"Add Todo, Deadline, Event subclasses","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"eb9e89f571d35b2c7b34773bcea7a64dae701b65","isMergeCommit":false,"messageTitle":"Refactor main function to use regex and switch cases, and to include new Tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":27}}},{"hash":"c99213b23360412403e8011be200ab0ccf762e99","isMergeCommit":false,"messageTitle":"Add test input and expected output","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"4777d181aedced9471e1da4ebfa2bd21c4d7b718","isMergeCommit":false,"messageTitle":"Add DukeException class","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"81ca101a5f7372caaa593571808352ad7359498c","isMergeCommit":false,"messageTitle":"Add exceptions handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":89}}},{"hash":"945d4f64184723d499abb1c1b84d4f9178781118","isMergeCommit":false,"messageTitle":"Add delete Task feature","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":2}}},{"hash":"d3fe6bdbab1be7321c43f08808afae1f2ce4c1c2","isMergeCommit":false,"messageTitle":"Update test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"5fbc9fbc35044e7aaaae1ff4abf1af07ffacba9b","isMergeCommit":false,"messageTitle":"Add javadoc documentation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"0c2fc91b2ae77991f3c5a5228decd1c226822a19","isMergeCommit":false,"messageTitle":"Change class to abstract class and add getSaveString abstract method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"7cc9c1985f0cc82d4a15624c942508777023105b","isMergeCommit":false,"messageTitle":"Implement getSaveString method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"0f992d6d54dde2337824128eff8be7e25805ed21","isMergeCommit":false,"messageTitle":"Add save file parsing and task saving","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":141,"deletions":1}}},{"hash":"9df55c2f5735df6e67889f5dfc2987ba95cf6350","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"2f69d13aace3932096c218081e0b88a059774dd4","isMergeCommit":false,"messageTitle":"Modify Deadline task to store LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}},{"hash":"90ded6e35f20806672afc89d7e8e3c5cc4bd2848","isMergeCommit":false,"messageTitle":"Modify Duke to parse and save LocalDateTime for Deadline tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"9744ba0f6ef40d1289373d6c3e409ea309052f71","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"95d337677f12d8602a137221e74491471d0970e4","isMergeCommit":false,"messageTitle":"Remove need for separate directory path by getting file path parent","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":17}}},{"hash":"65e463004d9a884693d8e3f72162767fc957898d","isMergeCommit":false,"messageTitle":"Create Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"30084f60c78718e4c776b8f15b599c81757cde89","isMergeCommit":false,"messageTitle":"Create and implement Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":157,"deletions":1}}},{"hash":"dca00d40a0db99a257c2436c1bb1da07ba167aea","isMergeCommit":false,"messageTitle":"Incorporate Storage class into Duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":138}}}]},{"date":"2023-08-31","commitResults":[{"hash":"ae04b25c2ebcb097066e253433e7008670d3c5d3","isMergeCommit":false,"messageTitle":"Implement Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":0}}},{"hash":"ff81b562bfb66ffb374ca339a95ebf676f6c39c8","isMergeCommit":false,"messageTitle":"Incorporate Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":89}}},{"hash":"6028a773398f1cb080c751ddff5fd5037a7d517c","isMergeCommit":false,"messageTitle":"Create and move all messages to new Messages class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":0}}},{"hash":"11fc05d795e368a2c9ada76d8a8f0875a781d71b","isMergeCommit":false,"messageTitle":"Create new abstract Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"e8362aa49f2738fca2c91bfa69e3abd094f56ebb","isMergeCommit":false,"messageTitle":"Implement ExitCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"1321376c5fc5f8904b359297bcb4f3bbfd2d1e35","isMergeCommit":false,"messageTitle":"Implement ListCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"eed1a86d1700ab45f50b28159b3818cb9b9d5fef","isMergeCommit":false,"messageTitle":"Switch to using messages from the Messages class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":24}}},{"hash":"317584b95a1e63e3e6ef37c0c7be36e84258e82a","isMergeCommit":false,"messageTitle":"Move storage message to Messages class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":12}}},{"hash":"404856b5e209dd173b2205d31254a438b28ca7e7","isMergeCommit":false,"messageTitle":"Modify execute method to throw DukeException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"7beea56ce389a3be37ac9a5774bb1c1d40b7e554","isMergeCommit":false,"messageTitle":"Implement MarkCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"01462b891283775c44a46bcaeafc4fccf5a97179","isMergeCommit":false,"messageTitle":"Implement UnmarkCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"da667406e06c8acef387e6a2148a311eab06c78e","isMergeCommit":false,"messageTitle":"Implement TodoCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"1cbcd920d21c9daa298c67fcedaa1f54c4919373","isMergeCommit":false,"messageTitle":"Rename TodoCommand to TaskCommand: all Tasks can use the same command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"1a828a831d9cd670e338d787c5d3dadfd94ca323","isMergeCommit":false,"messageTitle":"Implement DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"00e9219e8cbc259d16ba7f0b01ffe9dee670632a","isMergeCommit":false,"messageTitle":"Add invalid index check","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"45eba1d88a3d5b0c1af5494d363d419472ded968","isMergeCommit":false,"messageTitle":"Implement Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":0}}},{"hash":"36f5d79ea7cf40cc21ae994e9908a7643d26ac29","isMergeCommit":false,"messageTitle":"Change field and parse method to be static, remove constructor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"b400032e10b073bf847a83aa2ee3da2973f3f730","isMergeCommit":false,"messageTitle":"Implement TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":0}}},{"hash":"475c2100212d8391fc1b32c51fba2b73b8a12b26","isMergeCommit":false,"messageTitle":"Refactor to use TaskList instead of ArrayList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":199}}},{"hash":"6370b2cf966db2b659176662522598604e0c3011","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"ab5c4d4499a353387173ed85963dd5def51a4d06","isMergeCommit":false,"messageTitle":"Refactor code using packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":21},"bat":{"insertions":1,"deletions":1}}},{"hash":"474b4f0c2bb20841636c41484adad0ed8c44b186","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"8c2cc3bd99ac35a6990d0f9968e4ff84f4c8fe44","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"e15e99f718b0ad52c339fd97d4a48e0a66a9451a","isMergeCommit":false,"messageTitle":"Move bounds checking to TaskList methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":15}}}]}]},"authorFileTypeContributionMap":{"jx124":{"java":848,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":15}},"authorContributionVariance":{"jx124":81163.97},"authorDisplayNameMap":{"jx124":"CS2103T-F08-2 NEO ..IANG"}} diff --git a/kristayeo_ip_master/authorship.json b/kristayeo_ip_master/authorship.json index 5a2fc618..11d9a77a 100644 --- a/kristayeo_ip_master/authorship.json +++ b/kristayeo_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":" protected String dueBy;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":" public Deadline(String name, String dueBy, String isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":" this.dueBy \u003d dueBy;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" return super.toDataString() + \" | \" + dueBy;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" String str \u003d \"[D] \" + super.getStatus() + \" \" + super.name + \" (by: \" + this.dueBy + \")\";","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":" return str;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"kristayeo":19}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":" Storage storage \u003d new Storage(\"./data/duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":" TaskList taskList \u003d new TaskList(storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":" System.out.println(\"Hello! I\u0027m Meep.\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" while (true) {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":" String userCommand \u003d scanner.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" if (userCommand.trim().equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" System.out.println(\"Bye! Hope to see you again soon.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" String response \u003d Parser.parseCommand(userCommand, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":" System.out.println(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"kristayeo"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"kristayeo":24,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"kristayeo":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":" public String begin;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":" public String end;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":" public Event(String name, String begin, String end, String isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":" this.begin \u003d begin;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":" return super.toDataString() + \" | \" + begin + \" | \" + end;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":" String str \u003d \"[E] \" + super.getStatus() + \" \" + super.name","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":" + \" (from: \" + this.begin + \" to: \" + this.end + \")\";","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" return str;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"kristayeo":22}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":" public static String parseCommand(String command, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":" String[] tokens \u003d command.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":" String action \u003d tokens[0].trim().toLowerCase();","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":" switch (action) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":" return generateListResponse(taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" return generateDeleteResponse(tokens, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":" return generateMarkResponse(tokens, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" return generateUnmarkResponse(tokens, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":" return generateTodoResponse(tokens, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":" return generateDeadlineResponse(tokens, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":" return generateEventResponse(tokens, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Sorry, I don\u0027t understand what that means.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"kristayeo"},"content":" private static String generateListResponse(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"kristayeo"},"content":" List\u003cTask\u003e tasks \u003d taskList.getTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"kristayeo"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"kristayeo"},"content":" return \"You currently have no tasks in your list.\";","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"kristayeo"},"content":" StringBuilder response \u003d new StringBuilder(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"kristayeo"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"kristayeo"},"content":" response.append((i + 1)).append(\". \").append(tasks.get(i).toString()).append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"kristayeo"},"content":" return response.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"kristayeo"},"content":" private static String generateDeleteResponse(String[] tokens, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"kristayeo"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please specify which task you wish to delete.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"kristayeo"},"content":" int taskIndex;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"kristayeo"},"content":" taskIndex \u003d Integer.parseInt(tokens[1].trim()) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"kristayeo"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please insert a valid integer.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"kristayeo"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskList.getTasks().size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"The given task does not exist.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"kristayeo"},"content":" Task deletedTask \u003d taskList.getTasks().get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"kristayeo"},"content":" taskList.removeTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"kristayeo"},"content":" return generateTaskDeletedResponse(deletedTask, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"kristayeo"},"content":" private static String generateTaskDeletedResponse(Task task, TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"kristayeo"},"content":" StringBuilder response \u003d new StringBuilder(\"Noted. I\u0027ve removed this task:\\n\\t\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"kristayeo"},"content":" response.append(task.toString()).append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"kristayeo"},"content":" response.append(\"Now you have \").append(taskList.getTasks().size()).append(\" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"kristayeo"},"content":" return response.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"kristayeo"},"content":" private static String generateMarkResponse(String[] tokens, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"kristayeo"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please specify which task you wish to mark.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"kristayeo"},"content":" int taskIndex;","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"kristayeo"},"content":" taskIndex \u003d Integer.parseInt(tokens[1].trim()) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"kristayeo"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please insert a valid integer.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"kristayeo"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskList.getTasks().size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"The given task does not exist.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"kristayeo"},"content":" Task task \u003d taskList.getTasks().get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"kristayeo"},"content":" taskList.markTaskAsDone(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"kristayeo"},"content":" return generateTaskMarkedResponse(task, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"kristayeo"},"content":" private static String generateUnmarkResponse(String[] tokens, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"kristayeo"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please specify which task you wish to unmark.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"kristayeo"},"content":" int taskIndex;","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"kristayeo"},"content":" taskIndex \u003d Integer.parseInt(tokens[1].trim()) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"kristayeo"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please insert a valid integer.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"kristayeo"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskList.getTasks().size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"The given task does not exist.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"kristayeo"},"content":" Task task \u003d taskList.getTasks().get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"kristayeo"},"content":" taskList.unmarkTaskAsDone(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"kristayeo"},"content":" return generateTaskMarkedResponse(task, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"kristayeo"},"content":" private static String generateTaskMarkedResponse(Task task, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"kristayeo"},"content":" String status \u003d isDone ? \"done\" : \"not done yet\";","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"kristayeo"},"content":" return \"OK, I\u0027ve marked this task as \" + status + \":\\n\\t\" + task.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"kristayeo"},"content":" private static String generateTodoResponse(String[] tokens, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"kristayeo"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"The description of todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"kristayeo"},"content":" String taskDescription \u003d tokens[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"kristayeo"},"content":" Task newTask \u003d new ToDo(taskDescription, \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"kristayeo"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"kristayeo"},"content":" return generateTaskAddedResponse(newTask, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"kristayeo"},"content":" private static String generateDeadlineResponse(String[] tokens, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"kristayeo"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"The description of deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"kristayeo"},"content":" String[] parts \u003d tokens[1].split(\"/by\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"kristayeo"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please provide a task description and deadline.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"kristayeo"},"content":" String taskDescription \u003d parts[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"kristayeo"},"content":" String dueBy \u003d parts[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"kristayeo"},"content":" Task newTask \u003d new Deadline(taskDescription, dueBy, \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"kristayeo"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"kristayeo"},"content":" return generateTaskAddedResponse(newTask, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"kristayeo"},"content":" private static String generateEventResponse(String[] tokens, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"kristayeo"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"The description of event cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"kristayeo"},"content":" String[] parts \u003d tokens[1].split(\"/from\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"kristayeo"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please provide a task description and event timing.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"kristayeo"},"content":" String[] timingParts \u003d parts[1].split(\"/to\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"kristayeo"},"content":" if (timingParts.length \u003c 2 || timingParts[0].trim().isEmpty() || timingParts[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please provide both the start and end timings for the event.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"kristayeo"},"content":" String taskDescription \u003d parts[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"kristayeo"},"content":" String startTiming \u003d timingParts[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"kristayeo"},"content":" String endTiming \u003d timingParts[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"kristayeo"},"content":" Task newTask \u003d new Event(taskDescription, startTiming, endTiming, \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"kristayeo"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"kristayeo"},"content":" return generateTaskAddedResponse(newTask, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"kristayeo"},"content":" private static String generateTaskAddedResponse(Task task, TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"kristayeo"},"content":" StringBuilder response \u003d new StringBuilder(\"Got it. I\u0027ve added this task:\\n\\t\");","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"kristayeo"},"content":" response.append(task.toString()).append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"kristayeo"},"content":" response.append(\"Now you have \").append(taskList.getTasks().size()).append(\" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"kristayeo"},"content":" return response.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"kristayeo":182}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" ensureFolderExists();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" ensureFileExists();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":" private void ensureFolderExists() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":" File folder \u003d new File(filePath).getParentFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" if (!folder.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":" folder.mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"kristayeo"},"content":" private void ensureFileExists() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"kristayeo"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"kristayeo"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"kristayeo"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"kristayeo"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"kristayeo"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"kristayeo"},"content":" public List\u003cTask\u003e loadTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"kristayeo"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"kristayeo"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"kristayeo"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"kristayeo"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"kristayeo"},"content":" if (file.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"kristayeo"},"content":" // File is empty, return an empty list","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"kristayeo"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"kristayeo"},"content":" try (Scanner scanner \u003d new Scanner(file)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"kristayeo"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"kristayeo"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"kristayeo"},"content":"// System.out.println(\"Line: \" + line); // Add this line for debugging","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"kristayeo"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"kristayeo"},"content":" if (parts.length \u003e\u003d 3) { // Ensure there are enough parts to proceed","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"kristayeo"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"kristayeo"},"content":" String isDone \u003d parts[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"kristayeo"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"kristayeo"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"kristayeo"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"kristayeo"},"content":" tasks.add(new ToDo(description, isDone));","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"kristayeo"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"kristayeo"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"kristayeo"},"content":" tasks.add(new Deadline(description, parts[3], isDone));","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"kristayeo"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"kristayeo"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"kristayeo"},"content":" tasks.add(new Event(description, parts[3], parts[4], isDone));","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"kristayeo"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"kristayeo"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"kristayeo"},"content":" System.out.println(\"Skipping line with insufficient parts: \" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"kristayeo"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"kristayeo"},"content":" // Handle file reading error","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"kristayeo"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"kristayeo"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"kristayeo"},"content":" public void saveTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"kristayeo"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"kristayeo"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"kristayeo"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"kristayeo"},"content":" try (FileWriter writer \u003d new FileWriter(file)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"kristayeo"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"kristayeo"},"content":" String taskType \u003d task instanceof ToDo ? \"T\" : task instanceof Deadline ? \"D\" : \"E\";","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"kristayeo"},"content":" String taskData \u003d taskType + \" | \" + task.toDataString() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"kristayeo"},"content":"// String taskData \u003d taskType + \" | \" + task.getDataStatus() + \" | \" + task.toDataString() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"kristayeo"},"content":" writer.write(taskData);","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"kristayeo"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"kristayeo"},"content":" // Handle file writing error","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"kristayeo"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"kristayeo":109}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":" protected String name;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":" public Task(String name, String isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":" this.isDone \u003d isDone.equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":" public void mark() {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" public void unmark() {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":" return this.isDone ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":" public String getDataStatus() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"kristayeo"},"content":" return this.isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"kristayeo"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"kristayeo"},"content":" return (isDone ? \"1\" : \"0\") + \" | \" + name;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"kristayeo"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"kristayeo"},"content":" String str \u003d this.getStatus() + \" \" + this.name;","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"kristayeo"},"content":" return str;","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"kristayeo":35}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":" public TaskList(Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" loadTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":" public void removeTask(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Invalid task index.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"kristayeo"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"kristayeo"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"kristayeo"},"content":" public void markTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"kristayeo"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Invalid task index.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"kristayeo"},"content":" tasks.get(index).mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"kristayeo"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"kristayeo"},"content":" public void unmarkTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"kristayeo"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Invalid task index.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"kristayeo"},"content":" tasks.get(index).unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"kristayeo"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"kristayeo"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"kristayeo"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"kristayeo"},"content":" private void loadTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"kristayeo"},"content":" tasks \u003d storage.loadTasks(); // Load tasks from storage when initializing","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"kristayeo":51}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":" public ToDo(String name, String isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":" return super.toDataString();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" String str \u003d \"[T] \" + super.getStatus() + \" \" + super.name;","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" return str;","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"kristayeo":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":"unmark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":"list","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"kristayeo":9}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":" protected LocalDate dueBy;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":" public Deadline(String name, LocalDate dueBy, String isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":" this.dueBy \u003d dueBy;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":" return super.toDataString() + \" | \" + dueBy.format(DateTimeFormatter.ISO_LOCAL_DATE);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":" String str \u003d \"[D] \" + super.getStatus() + \" \" + super.name + \" (by: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":" dueBy.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" return str;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":"// @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"kristayeo"},"content":"// public String toDataString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"kristayeo"},"content":"// return super.toDataString() + \" | \" + dueBy;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"kristayeo"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"kristayeo"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"kristayeo"},"content":"// @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"kristayeo"},"content":"// public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"kristayeo"},"content":"// String str \u003d \"[D] \" + super.getStatus() + \" \" + super.name + \" (by: \" + this.dueBy + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"kristayeo"},"content":"// return str;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"kristayeo"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"kristayeo":32}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":" Storage storage \u003d new Storage(\"./data/duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":" TaskList taskList \u003d new TaskList(storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":" System.out.println(\"Hello! I\u0027m Meep.\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" while (true) {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":" String userCommand \u003d scanner.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" if (userCommand.trim().equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" System.out.println(\"Bye! Hope to see you again soon.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" String response \u003d Parser.parseCommand(userCommand, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":" System.out.println(response);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"kristayeo"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"kristayeo":24,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"kristayeo":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":" public LocalDate begin;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":" public LocalDate end;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":" public Event(String name, LocalDate begin, LocalDate end, String isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":" this.begin \u003d begin;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" return super.toDataString() + \" | \" + begin.format(DateTimeFormatter.ISO_LOCAL_DATE) +","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" \" | \" + end.format(DateTimeFormatter.ISO_LOCAL_DATE);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":" String str \u003d \"[E] \" + super.getStatus() + \" \" + super.name + \" (from: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":" begin.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \" to: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"kristayeo"},"content":" end.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"kristayeo"},"content":" return str;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"kristayeo"},"content":"// @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"kristayeo"},"content":"// public String toDataString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"kristayeo"},"content":"// return super.toDataString() + \" | \" + begin + \" | \" + end;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"kristayeo"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"kristayeo"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"kristayeo"},"content":"// @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"kristayeo"},"content":"// public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"kristayeo"},"content":"// String str \u003d \"[E] \" + super.getStatus() + \" \" + super.name","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"kristayeo"},"content":"// + \" (from: \" + this.begin + \" to: \" + this.end + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"kristayeo"},"content":"// return str;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"kristayeo"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"kristayeo":38}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":" public static String parseCommand(String command, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":" String[] tokens \u003d command.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":" String action \u003d tokens[0].trim().toLowerCase();","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":" switch (action) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" return generateListResponse(taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" return generateDeleteResponse(tokens, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" return generateMarkResponse(tokens, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":" return generateUnmarkResponse(tokens, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" return generateTodoResponse(tokens, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":" return generateDeadlineResponse(tokens, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"kristayeo"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"kristayeo"},"content":" return generateEventResponse(tokens, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"kristayeo"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Sorry, I don\u0027t understand what that means.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"kristayeo"},"content":" private static String generateListResponse(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"kristayeo"},"content":" List\u003cTask\u003e tasks \u003d taskList.getTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"kristayeo"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"kristayeo"},"content":" return \"You currently have no tasks in your list.\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"kristayeo"},"content":" StringBuilder response \u003d new StringBuilder(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"kristayeo"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"kristayeo"},"content":" response.append((i + 1)).append(\". \").append(tasks.get(i).toString()).append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"kristayeo"},"content":" return response.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"kristayeo"},"content":" private static String generateDeleteResponse(String[] tokens, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"kristayeo"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please specify which task you wish to delete.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"kristayeo"},"content":" int taskIndex;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"kristayeo"},"content":" taskIndex \u003d Integer.parseInt(tokens[1].trim()) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"kristayeo"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please insert a valid integer.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"kristayeo"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskList.getTasks().size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"The given task does not exist.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"kristayeo"},"content":" Task deletedTask \u003d taskList.getTasks().get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"kristayeo"},"content":" taskList.removeTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"kristayeo"},"content":" return generateTaskDeletedResponse(deletedTask, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"kristayeo"},"content":" private static String generateTaskDeletedResponse(Task task, TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"kristayeo"},"content":" StringBuilder response \u003d new StringBuilder(\"Noted. I\u0027ve removed this task:\\n\\t\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"kristayeo"},"content":" response.append(task.toString()).append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"kristayeo"},"content":" response.append(\"Now you have \").append(taskList.getTasks().size()).append(\" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"kristayeo"},"content":" return response.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"kristayeo"},"content":" private static String generateMarkResponse(String[] tokens, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"kristayeo"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please specify which task you wish to mark.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"kristayeo"},"content":" int taskIndex;","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"kristayeo"},"content":" taskIndex \u003d Integer.parseInt(tokens[1].trim()) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"kristayeo"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please insert a valid integer.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"kristayeo"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskList.getTasks().size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"The given task does not exist.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"kristayeo"},"content":" Task task \u003d taskList.getTasks().get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"kristayeo"},"content":" taskList.markTaskAsDone(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"kristayeo"},"content":" return generateTaskMarkedResponse(task, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"kristayeo"},"content":" private static String generateUnmarkResponse(String[] tokens, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"kristayeo"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please specify which task you wish to unmark.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"kristayeo"},"content":" int taskIndex;","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"kristayeo"},"content":" taskIndex \u003d Integer.parseInt(tokens[1].trim()) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"kristayeo"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please insert a valid integer.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"kristayeo"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskList.getTasks().size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"The given task does not exist.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"kristayeo"},"content":" Task task \u003d taskList.getTasks().get(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"kristayeo"},"content":" taskList.unmarkTaskAsDone(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"kristayeo"},"content":" return generateTaskMarkedResponse(task, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"kristayeo"},"content":" private static String generateTaskMarkedResponse(Task task, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"kristayeo"},"content":" String status \u003d isDone ? \"done\" : \"not done yet\";","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"kristayeo"},"content":" return \"OK, I\u0027ve marked this task as \" + status + \":\\n\\t\" + task.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"kristayeo"},"content":" private static String generateTodoResponse(String[] tokens, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"kristayeo"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"The description of todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"kristayeo"},"content":" String taskDescription \u003d tokens[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"kristayeo"},"content":" Task newTask \u003d new ToDo(taskDescription, \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"kristayeo"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"kristayeo"},"content":" return generateTaskAddedResponse(newTask, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"kristayeo"},"content":" private static String generateDeadlineResponse(String[] tokens, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"kristayeo"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"The description of deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"kristayeo"},"content":" String[] parts \u003d tokens[1].split(\"/by\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"kristayeo"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please provide a task description and deadline.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"kristayeo"},"content":" String taskDescription \u003d parts[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"kristayeo"},"content":" String dueByString \u003d parts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"kristayeo"},"content":" LocalDate dueBy \u003d LocalDate.parse(dueByString, DateTimeFormatter.ofPattern(\"dd/MM/yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"kristayeo"},"content":" Task newTask \u003d new Deadline(taskDescription, dueBy, \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"kristayeo"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"kristayeo"},"content":" return generateTaskAddedResponse(newTask, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"kristayeo"},"content":" private static String generateEventResponse(String[] tokens, TaskList taskList) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"kristayeo"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"The description of event cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"kristayeo"},"content":" String[] parts \u003d tokens[1].split(\"/from\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"kristayeo"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please provide a task description and event timing.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"kristayeo"},"content":" String[] timingParts \u003d parts[1].split(\"/to\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"kristayeo"},"content":" if (timingParts.length \u003c 2 || timingParts[0].trim().isEmpty() || timingParts[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Please provide both the start and end timings for the event.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"kristayeo"},"content":" String taskDescription \u003d parts[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"kristayeo"},"content":" String startTimingString \u003d timingParts[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"kristayeo"},"content":" String endTimingString \u003d timingParts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"kristayeo"},"content":" LocalDate startTiming \u003d LocalDate.parse(startTimingString, DateTimeFormatter.ofPattern(\"dd/MM/yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"kristayeo"},"content":" LocalDate endTiming \u003d LocalDate.parse(endTimingString, DateTimeFormatter.ofPattern(\"dd/MM/yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"kristayeo"},"content":"// LocalDate startTiming \u003d parseDate(startTimingString).atStartOfDay();","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"kristayeo"},"content":"// LocalDate endTiming \u003d parseDate(endTimingString).atStartOfDay();","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"kristayeo"},"content":" Task newTask \u003d new Event(taskDescription, startTiming, endTiming, \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"kristayeo"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"kristayeo"},"content":" return generateTaskAddedResponse(newTask, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"kristayeo"},"content":" private static LocalDate parseDate(String dateString) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"kristayeo"},"content":" DateTimeFormatter[] formatters \u003d {","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"kristayeo"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"kristayeo"},"content":" DateTimeFormatter.ofPattern(\"dd/MM/yyyy\")","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"kristayeo"},"content":" };","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"kristayeo"},"content":" for (DateTimeFormatter formatter : formatters) {","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"kristayeo"},"content":" return LocalDate.parse(dateString, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"kristayeo"},"content":" } catch (DateTimeParseException ignored) {","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Invalid date format. Please have dates in dd/MM/yyyy format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"kristayeo"},"content":" return null; // Return null if date couldn\u0027t be parsed","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"kristayeo"},"content":" private static String generateTaskAddedResponse(Task task, TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"kristayeo"},"content":" StringBuilder response \u003d new StringBuilder(\"Got it. I\u0027ve added this task:\\n\\t\");","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"kristayeo"},"content":" response.append(task.toString()).append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"kristayeo"},"content":" response.append(\"Now you have \").append(taskList.getTasks().size()).append(\" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"kristayeo"},"content":" return response.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":210,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"kristayeo":210}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" ensureFolderExists();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" ensureFileExists();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":" private void ensureFolderExists() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" File folder \u003d new File(filePath).getParentFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":" if (!folder.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":" folder.mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"kristayeo"},"content":" private void ensureFileExists() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"kristayeo"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"kristayeo"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"kristayeo"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"kristayeo"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"kristayeo"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"kristayeo"},"content":" public List\u003cTask\u003e loadTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"kristayeo"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"kristayeo"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"kristayeo"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"kristayeo"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"kristayeo"},"content":" if (file.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"kristayeo"},"content":" // File is empty, return an empty list","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"kristayeo"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"kristayeo"},"content":" try (Scanner scanner \u003d new Scanner(file)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"kristayeo"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"kristayeo"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"kristayeo"},"content":"// System.out.println(\"Line: \" + line); // Add this line for debugging","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"kristayeo"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"kristayeo"},"content":" if (parts.length \u003e\u003d 3) { // Ensure there are enough parts to proceed","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"kristayeo"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"kristayeo"},"content":" String isDone \u003d parts[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"kristayeo"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"kristayeo"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"kristayeo"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"kristayeo"},"content":" tasks.add(new ToDo(description, isDone));","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"kristayeo"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"kristayeo"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"kristayeo"},"content":" tasks.add(parseDeadline(parts, isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"kristayeo"},"content":"// tasks.add(new Deadline(description, parts[3], isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"kristayeo"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"kristayeo"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"kristayeo"},"content":" tasks.add(parseEvent(parts, isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"kristayeo"},"content":"// tasks.add(new Event(description, parts[3], parts[4], isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"kristayeo"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"kristayeo"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"kristayeo"},"content":" System.out.println(\"Skipping line with insufficient parts: \" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"kristayeo"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"kristayeo"},"content":" // Handle file reading error","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"kristayeo"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"kristayeo"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"kristayeo"},"content":" private Deadline parseDeadline(String[] parts, String isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"kristayeo"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"kristayeo"},"content":" String dueBy \u003d parts[3];","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"kristayeo"},"content":" LocalDate dueDate \u003d LocalDate.parse(dueBy); // Parse the date","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"kristayeo"},"content":" return new Deadline(description, dueDate, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"kristayeo"},"content":" private Event parseEvent(String[] parts, String isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"kristayeo"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"kristayeo"},"content":" String startTiming \u003d parts[3];","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"kristayeo"},"content":" String endTiming \u003d parts[4];","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"kristayeo"},"content":" LocalDate startTime \u003d LocalDate.parse(startTiming); // Parse the datetime","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"kristayeo"},"content":" LocalDate endTime \u003d LocalDate.parse(endTiming); // Parse the datetime","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"kristayeo"},"content":" return new Event(description, startTime, endTime, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"kristayeo"},"content":" public void saveTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"kristayeo"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"kristayeo"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"kristayeo"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"kristayeo"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"kristayeo"},"content":" try (FileWriter writer \u003d new FileWriter(file)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"kristayeo"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"kristayeo"},"content":" String taskType \u003d task instanceof ToDo ? \"T\" : task instanceof Deadline ? \"D\" : \"E\";","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"kristayeo"},"content":" String taskData \u003d taskType + \" | \" + task.toDataString() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"kristayeo"},"content":"// String taskData \u003d taskType + \" | \" + task.getDataStatus() + \" | \" + task.toDataString() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"kristayeo"},"content":" writer.write(taskData);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"kristayeo"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"kristayeo"},"content":" // Handle file writing error","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"kristayeo"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"kristayeo":128}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":" protected String name;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":" public Task(String name, String isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":" this.isDone \u003d isDone.equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":" public void mark() {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" public void unmark() {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":" return this.isDone ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":" public String getDataStatus() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"kristayeo"},"content":" return this.isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"kristayeo"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"kristayeo"},"content":" return (isDone ? \"1\" : \"0\") + \" | \" + name;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"kristayeo"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"kristayeo"},"content":" String str \u003d this.getStatus() + \" \" + this.name;","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"kristayeo"},"content":" return str;","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"kristayeo":35}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":" public TaskList(Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":" loadTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":" public void removeTask(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Invalid task index.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"kristayeo"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"kristayeo"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"kristayeo"},"content":" public void markTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"kristayeo"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Invalid task index.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"kristayeo"},"content":" tasks.get(index).mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"kristayeo"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"kristayeo"},"content":" public void unmarkTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"kristayeo"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"kristayeo"},"content":" throw new DukeException(\"Invalid task index.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"kristayeo"},"content":" tasks.get(index).unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"kristayeo"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"kristayeo"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"kristayeo"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"kristayeo"},"content":" private void loadTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"kristayeo"},"content":" tasks \u003d storage.loadTasks(); // Load tasks from storage when initializing","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"kristayeo":51}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":" public ToDo(String name, String isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":" return super.toDataString();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"kristayeo"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"kristayeo"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"kristayeo"},"content":" String str \u003d \"[T] \" + super.getStatus() + \" \" + super.name;","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"kristayeo"},"content":" return str;","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"kristayeo"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"kristayeo"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"kristayeo":20}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"kristayeo":2}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kristayeo"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"kristayeo"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"kristayeo"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"kristayeo"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"kristayeo"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"kristayeo"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"kristayeo"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"kristayeo"},"content":"unmark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"kristayeo"},"content":"list","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"kristayeo":9}}] diff --git a/kristayeo_ip_master/commits.json b/kristayeo_ip_master/commits.json index 43cb5f1c..7a10ad9f 100644 --- a/kristayeo_ip_master/commits.json +++ b/kristayeo_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"kristayeo":[{"date":"2023-08-22","commitResults":[{"hash":"414292468f140aea5c4a5ddbc691723650f9325f","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"66b1e0c3fb75e5035ae11b52ffaf371589a10988","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"b9258ee4cc5d8372649921d84312b600c60d4b21","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"f1fbca648432665118a6712a0de14826a2e0d182","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":11}}},{"hash":"0a13d70881f63d1f5e87fdb78d8b0c56b02f6ad6","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":23}}}]},{"date":"2023-08-23","commitResults":[{"hash":"9a66fc0209857cd34b10eeb9b0042e09e50957ba","isMergeCommit":false,"messageTitle":"A-TextUiTexting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":0,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0dd7e4646c9c220f24a8f9d2e5888279da21709b","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":175,"deletions":96}}},{"hash":"7c22ef956974925cba98ad6a664d39cfae89fcfd","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"6fb6251244e23445435d45f1f3e91c2c098f56e4","isMergeCommit":false,"messageTitle":"Edit code to apply OOP, add storage","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":443,"deletions":253}}},{"hash":"2dd3b30cff8e3a6643b9758deb1ba4c97aea7ec8","isMergeCommit":false,"messageTitle":"clear commented out code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":43}}}]}]},"authorFileTypeContributionMap":{"kristayeo":{"java":468,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"kristayeo":42418.35},"authorDisplayNameMap":{"kristayeo":"CS2103T-W12-4 KRIS..ANNE"}} +{"authorDailyContributionsMap":{"kristayeo":[{"date":"2023-08-22","commitResults":[{"hash":"414292468f140aea5c4a5ddbc691723650f9325f","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"66b1e0c3fb75e5035ae11b52ffaf371589a10988","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"b9258ee4cc5d8372649921d84312b600c60d4b21","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"f1fbca648432665118a6712a0de14826a2e0d182","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":11}}},{"hash":"0a13d70881f63d1f5e87fdb78d8b0c56b02f6ad6","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":23}}}]},{"date":"2023-08-23","commitResults":[{"hash":"9a66fc0209857cd34b10eeb9b0042e09e50957ba","isMergeCommit":false,"messageTitle":"A-TextUiTexting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":0,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0dd7e4646c9c220f24a8f9d2e5888279da21709b","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":175,"deletions":96}}},{"hash":"7c22ef956974925cba98ad6a664d39cfae89fcfd","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"6fb6251244e23445435d45f1f3e91c2c098f56e4","isMergeCommit":false,"messageTitle":"Edit code to apply OOP, add storage","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":443,"deletions":253}}},{"hash":"2dd3b30cff8e3a6643b9758deb1ba4c97aea7ec8","isMergeCommit":false,"messageTitle":"clear commented out code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":43}}}]},{"date":"2023-09-01","commitResults":[{"hash":"403a820b0420d950ea64ef20518bcf48f4152e43","isMergeCommit":false,"messageTitle":"add dates","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":15}}},{"hash":"240f159bea22fbbacd8329d2a5c6dcc498604e6a","isMergeCommit":false,"messageTitle":"added Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"kristayeo":{"java":546,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"kristayeo":39599.527},"authorDisplayNameMap":{"kristayeo":"CS2103T-W12-4 KRIS..ANNE"}} diff --git a/lipwei1808_ip_master/authorship.json b/lipwei1808_ip_master/authorship.json index d6581304..7a044b45 100644 --- a/lipwei1808_ip_master/authorship.json +++ b/lipwei1808_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"lipwei1808":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"lipwei1808":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from 12/01/2001 18:00 /to 31/12/2001 22:000","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"deadline report /by 31/12/2023 23:000","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"deadline report10 /by 12/12/2023 01:001","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"todo hi1","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"deadline project report /by 31/12/2001 18:000","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"lipwei1808":5}},{"path":"data/storageTest.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"todo take a run0","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"deadline project report /by 18/08/2001 19:001","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from 18/09/2001 19:00 /to 18/10/2001 19:001","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"deadline exam paper /by 18/11/2001 19:000","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lipwei1808":4}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" private final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" private Tasks tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" public Duke() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" this.storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" tasks \u003d storage.load();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" ui.printGreetings();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" String text \u003d ui.readCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" Command c \u003d Parser.parse(text, false);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" // Empty or unknown command","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" if (c \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" ui.showUnknownCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" // Execute command","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" c.execute(this.tasks, this.ui, this.storage, false);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" // Check if is duke.commands.ExitCommand","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" if (c.isExit()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" } catch (DukeException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" ui.showError(ex.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" new Duke().run();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"lipwei1808":50,"-":2}},{"path":"src/main/java/duke/commands/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD_D \u003d \"deadline\";","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD_E \u003d \"event\";","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD_T \u003d \"todo\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" private Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" tasks.add(this.task);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" storage.save(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" if (!isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" ui.showAddTask(this.task, tasks.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":25}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" abstract public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) throws DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":14}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public int target;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public DeleteCommand(int target) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" this.target \u003d target;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" Task task \u003d tasks.getTask(this.target);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" if (task \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" Task t \u003d tasks.remove(this.target - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" storage.save(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" if (!isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" ui.showSuccessDelete(t, tasks.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":28}},{"path":"src/main/java/duke/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD \u003d \"bye\";","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" ui.printExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":17}},{"path":"src/main/java/duke/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public String target;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" public FindCommand(String target) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" this.target \u003d target;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" List\u003cTask\u003e res \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" for (Task task: tasks.getAll()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" if (task.getDescription().contains(this.target)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" res.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" if (res.size() \u003e 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" ui.showTasks(res, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" ui.showNoTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"lipwei1808":33}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" if (!isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" ui.showNoTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" ui.showTasks(tasks.getAll(), false);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":19}},{"path":"src/main/java/duke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD_MARK \u003d \"mark\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD_UNMARK \u003d \"unmark\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" private boolean isMark;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" private int target;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" public MarkCommand(boolean isMark, int target) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" this.isMark \u003d isMark;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" this.target \u003d target;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" Task task \u003d tasks.getTask(this.target);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" if (task \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" task.mark(this.isMark);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" storage.save(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" if (!isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" ui.showSuccessMark(this.isMark, task);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":32}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" super(\"OOPS!!!\" + errorMessage);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" return \"OOPS!!!\" + this.getMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":12}},{"path":"src/main/java/duke/exceptions/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"public class InvalidArgumentException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" public InvalidArgumentException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" super(\" I\u0027m sorry, but you have entered an invalid argument :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":7}},{"path":"src/main/java/duke/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" super(\" I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":7}},{"path":"src/main/java/duke/exceptions/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"public class InvalidDeadlineException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" super(\" Please enter a deadline with the format \u0027\u003c\u003cmessage\u003e\u003e /by dd/mm/yyyy HH:mm\u0027 format\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":7}},{"path":"src/main/java/duke/exceptions/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"public class InvalidEventException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" public InvalidEventException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" super(\" Please enter an event with the format \u0027\u003c\u003cmessage\u003e\u003e /from dd/mm/yyyy HH:mm /to dd/mm/yyyy HH:mm\u0027 format\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":7}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import duke.commands.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" public static Command parse(String command, boolean isRestoring) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" if (command.trim().equals(\"\")) return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" String[] parsedText \u003d parseText(command);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" String action \u003d parsedText[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" String arguments \u003d parsedText[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" boolean marked \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" if (isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" String marker \u003d arguments.substring(arguments.length() - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" marked \u003d marker.equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" arguments \u003d arguments.substring(0, arguments.length() - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" switch (action) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" case AddCommand.COMMAND_WORD_D:","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" case AddCommand.COMMAND_WORD_E:","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" case AddCommand.COMMAND_WORD_T:","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" return handleAdd(action, arguments, marked);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" if (arguments.equals(\"\")) throw new InvalidArgumentException();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" return new DeleteCommand(parseArgs(arguments));","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" if (!arguments.equals(\"\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" case MarkCommand.COMMAND_WORD_UNMARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" if (arguments.equals(\"\")) throw new InvalidArgumentException();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" return new MarkCommand(false, parseArgs(arguments));","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" case MarkCommand.COMMAND_WORD_MARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" if (arguments.equals(\"\")) throw new InvalidArgumentException();","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" return new MarkCommand(true, parseArgs(arguments));","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" if (arguments.equals(\"\")) throw new InvalidArgumentException();","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" return new FindCommand(arguments);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" protected static AddCommand handleAdd(String action, String args, boolean marked) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" if (args.equals(\"\")) throw new InvalidArgumentException();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" switch (action) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" case AddCommand.COMMAND_WORD_D:","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" task \u003d parseDeadline(args, marked);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" case AddCommand.COMMAND_WORD_E:","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" task \u003d parseEvent(args, marked);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" case AddCommand.COMMAND_WORD_T:","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" task \u003d new Todo(args, marked);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" return new AddCommand(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" private static Deadline parseDeadline(String text, boolean marked) throws InvalidDeadlineException {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" String[] deadline \u003d text.split(\" /by \");","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" if (deadline.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime parsedDateTime \u003d parseDateTime(deadline[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" if (parsedDateTime \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" return new Deadline(deadline[0], parsedDateTime, marked);","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" private static Event parseEvent(String text, boolean marked) throws InvalidEventException {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" String[] first \u003d text.split(\" /from \");","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" if (first.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" String[] second \u003d first[1].split(\" /to \");","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" if (second.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime fromDate \u003d parseDateTime(second[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime toDate \u003d parseDateTime(second[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" if (fromDate \u003d\u003d null || toDate \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" return new Event(first[0], fromDate, toDate, marked);","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" protected static String[] parseText(String text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" String[] words \u003d text.trim().split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" String[] remaining \u003d Arrays.copyOfRange(words, 1, words.length);","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" String restOfText \u003d String.join(\" \", remaining);","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" return new String[] {words[0], restOfText};","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" protected static int parseArgs(String args) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" return Integer.parseInt(args);","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" } catch (NumberFormatException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" protected static LocalDateTime parseDateTime(String text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" String[] datetime \u003d text.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime parsedDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" if (datetime.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" String dateTimeString \u003d datetime[0] + \"T\" + datetime[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\u0027T\u0027HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" parsedDateTime \u003d LocalDateTime.parse(dateTimeString, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" } catch (DateTimeParseException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" return parsedDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":145}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" private String filepath;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" private Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" public Storage(String filepath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" public Tasks load() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" Tasks tasks \u003d new Tasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" File myObj \u003d new File(this.filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" Scanner myReader \u003d new Scanner(myObj);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" ui.showSuccessLoadingStorage(this.filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" while (myReader.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" String text \u003d myReader.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" Command c \u003d Parser.parse(text, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" if (c \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" c.execute(tasks, ui, new Storage(this.filepath), true);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" } catch (FileNotFoundException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" ui.showErrorFileNotFound();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" String[] filepathSplit \u003d this.filepath.split(\"/\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" String fileLocation \u003d String.join(\"/\", Arrays.copyOfRange(filepathSplit, 0, filepathSplit.length - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" System.out.println(fileLocation);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" File dir \u003d new File(fileLocation);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" dir.mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" myObj.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" ui.showErrorLoadingFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" System.exit(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" } catch (DukeException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" ui.showErrorLoadingFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" ui.showError(ex.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" System.exit(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" public void save(Tasks tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" // Delete everything in","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" PrintWriter writer \u003d new PrintWriter(this.filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" writer.print(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Error saving file... exiting\");","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" System.exit(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" // Rewrite everything","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" tasks.get(i).save(this.filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":80}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" private LocalDateTime by;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" public Deadline(String description, LocalDateTime by, boolean marked) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" super(description, \"deadline\", marked);","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public String getOriginalMessage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" return \"deadline \" + this.getDescription() + \" /by \" + this.stringifyDate(this.by);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" return super.toString() + \" (by: \" + this.formatDate(this.by) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" if (!super.equals(o)) return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" if (o instanceof Deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" Deadline d \u003d (Deadline) o;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" return this.by.equals(d.by);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":34}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to, boolean marked) {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" super(description, \"event\", marked);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" public String getOriginalMessage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" return \"event \" + this.getDescription() + \" /from \" + this.stringifyDate(this.from) + \" /to \" + this.stringifyDate(this.to);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" return super.toString() + \" (from: \" + this.formatDate(this.from) + \" to: \" + this.formatDate(this.to) + \")\" ;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" if (!super.equals(o)) return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" if (o instanceof Event) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" Event d \u003d (Event) o;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" if (!this.from.equals(d.from)) return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" return this.to.equals(d.to);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":39}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" private String type;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" private String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public Task(String description, String type, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" abstract String getOriginalMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" public void mark(boolean val) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" this.isDone \u003d val;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" public void save(String filepath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" FileWriter myWriter \u003d new FileWriter(filepath, true);","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" myWriter.write(String.format(\"%s%s\\n\", this.getOriginalMessage(), this.isDone ? \"1\" : \"0\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" myWriter.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Error saving to file\");","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" System.exit(1);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" public String stringifyDate(LocalDateTime datetime) {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" String formatted \u003d datetime.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy\u0027T\u0027HH:mm\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" return String.join(\" \", formatted.split(\"T\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" public String formatDate(LocalDateTime datetime) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" return datetime.format(DateTimeFormatter.ofPattern(\"HHmm, MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" return this.description;","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" private String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" return (isDone ? \"X\" : \" \"); //return tick or X symbols","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" String s \u003d String.format(\"[%s][%s] %s\", this.type.substring(0,1).toUpperCase(), this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" return s;","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" if (this \u003d\u003d o) return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" if (o instanceof Task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" Task t \u003d (Task) o;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" return this.isDone \u003d\u003d t.isDone \u0026\u0026 this.description.equals(t.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":71}},{"path":"src/main/java/duke/tasks/Tasks.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"public class Tasks {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" private List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public int size() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public Task get(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" return this.tasks.get(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" public Task remove(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" return this.tasks.remove(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" public Task getTask(int id) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" if (id \u003e this.tasks.size() || id \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" return null;","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" return this.tasks.get(id - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" public List\u003cTask\u003e getAll() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" return this.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":37}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" public Todo(String description, boolean marked) {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" super(description, \"todo\", marked);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" public String getOriginalMessage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" return \"todo \" + this.getDescription();","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":13}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" private static String line \u003d \" __________________________________________\";","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" private Scanner s \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" return s.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" public void showSuccessMark(boolean isMark, Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" if (isMark) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public void showAddTask(Task task, int totalTasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Now you have \" + totalTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" public void showNoTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" No tasks found!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" public void showTasks(List\u003cTask\u003e tasks, boolean isFiltered) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" String header \u003d isFiltered ? \"Here are the matching tasks in your list:\" : \"Here are the tasks in your list:\";","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" \" + header);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" System.out.println(String.format(\" %s.%s\", i + 1, task));","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" public void showSuccessDelete(Task t, int totalTasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Now you have \" + totalTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" \" + message);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public void showUnknownCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Please enter something :-)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" public void showSuccessLoadingStorage(String filepath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Data has been restored from \" + filepath);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" public void showErrorFileNotFound() {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Data file not found, creating a new one\");","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" public void showErrorLoadingFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Error creating new file, quitting program now...\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" public void printGreetings() {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Hello I\u0027m lynn the koala \u003c3\");","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" public void printExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Bye. Hpoe to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":102}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"public class DukeTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lipwei1808":4}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public void parse_emptyInput_returnsNull() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" String[] testCases \u003d { \"\", \" \", \"\\n \\n\" };","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" for (String input: testCases) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" Command c \u003d Parser.parse(input, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\"HI \" + c);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" assertNull(c);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" } catch (DukeException ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" // ignore","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" public void parse_addCommandWithArgs_noExceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" String[] testCases \u003d {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" \"todo run\",","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" \"deadline project /by 18/08/2001 18:00\",","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" \"event project meeting /from 18/08/2001 18:00 /to 31/08/2001 22:00\"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" for (String str: testCases) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e Parser.parse(str, false));","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" public void parse_listCommand_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e Parser.parse(\"list\", false));","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" public void parse_listCommandWithArgs_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" assertThrows(InvalidCommandException.class, () -\u003e Parser.parse(\"list 3\", false));","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" public void parseText_validString_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" String[] testCases \u003d {\"todo deadline\", \"event project meeting\", \" hello, i am a friend \"};","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" String[][] answers \u003d {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" new String[] {\"todo\", \"deadline\"},","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" new String[] {\"event\", \"project meeting\"},","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" new String[] {\"hello,\", \"i am a friend\"},","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c testCases.length; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" String[] result \u003d Parser.parseText(testCases[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" assertEquals(result[0], answers[i][0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" assertEquals(result[1], answers[i][1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public void parseArgs_integerString_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e Parser.parseArgs(\"3\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" public void parseArgs_decimalString_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" assertThrows(InvalidCommandException.class,() -\u003e Parser.parseArgs(\"3.01\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" public void parseArgs_emptyString_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" assertThrows(InvalidCommandException.class,() -\u003e Parser.parseArgs(\" \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" assertThrows(InvalidCommandException.class,() -\u003e Parser.parseArgs(\"\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_dateWithCorrectFormat_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e Parser.parseDateTime(\"deadline project /by 18/08/2001 18:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_dateWithWrongDay_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" assertNull(Parser.parseDateTime(\"32/12/2001 18:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_dateWithWrongMonth_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" assertNull(Parser.parseDateTime(\"18/13/2001 18:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_dateWithWrongYear_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" assertNull(Parser.parseDateTime(\"18/12/0 18:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_wrongTime_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" assertNull(Parser.parseDateTime(\"18/12/2001 25:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_wrongTimeFormat_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" assertNull( Parser.parseDateTime(\"18/12/2001 1800\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lipwei1808":110}},{"path":"src/test/java/duke/storage/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public void load_validData_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" Tasks tasks \u003d new Storage(\"./data/storageTest.txt\").load();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" Tasks expected \u003d this.getTestTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" if (tasks.size() !\u003d expected.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" if (!tasks.get(i).equals(expected.get(i))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" private Tasks getTestTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" Tasks tasks \u003d new Tasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime dt1 \u003d LocalDateTime.parse(\"18/08/2001T19:00\", DateTimeFormatter.ofPattern(\"dd/MM/yyyy\u0027T\u0027HH:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime dt2 \u003d LocalDateTime.parse(\"18/09/2001T19:00\", DateTimeFormatter.ofPattern(\"dd/MM/yyyy\u0027T\u0027HH:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime dt3 \u003d LocalDateTime.parse(\"18/10/2001T19:00\", DateTimeFormatter.ofPattern(\"dd/MM/yyyy\u0027T\u0027HH:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime dt4 \u003d LocalDateTime.parse(\"18/11/2001T19:00\", DateTimeFormatter.ofPattern(\"dd/MM/yyyy\u0027T\u0027HH:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" tasks.add(new Todo(\"take a run\", false));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" tasks.add(new Deadline(\"project report\", dt1, true));","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" tasks.add(new Event(\"project meeting\", dt2, dt3, true));","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" tasks.add(new Deadline(\"exam paper\", dt4, false));","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lipwei1808":48}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from 12/01/2001 18:00 /to 31/12/2001 22:000","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"deadline report /by 31/12/2023 23:000","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"todo meet friend1","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"deadline report10 /by 12/12/2023 01:001","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"deadline project report /by 31/12/2001 18:000","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"event project meetup /from 21/08/2012 18:00 /to 31/12/2033 22:001","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"lipwei1808":6}},{"path":"text-ui-test/data/original.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from 12/01/2001 18:00 /to 31/12/2001 22:001","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"deadline report /by 31/12/2023 23:000","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"deadline report2 /by 01/01/2100 00:000","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"todo meet friend1","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"deadline report10 /by 12/12/2023 01:000","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"lipwei1808":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"delete 3","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"mark 4","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"unmark 1","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"unmark 1","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"todo hi","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"todo","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"deadline project report","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"deadline project report /by 31/12/2001 18:00","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from Mon /to 2pm","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from 21/07/2012 /to 31/12/2031","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from 21/08/2012 18:00 /to 31/12/203 22:00","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"event project meetup /from 21/08/2012 18:00 /to 31/12/2033 22:00","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"delete","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"delete 5","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"mark 6","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":22}},{"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":"lipwei1808"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"lipwei1808":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":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"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":24,"author":{"gitId":"lipwei1808"},"content":"java -classpath ../bin duke/Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"lipwei1808":3,"-":36}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"lipwei1808":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"lipwei1808":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from 12/01/2001 18:00 /to 31/12/2001 22:000","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"deadline report /by 31/12/2023 23:000","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"deadline report10 /by 12/12/2023 01:001","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"todo hi1","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"deadline project report /by 31/12/2001 18:000","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"lipwei1808":5}},{"path":"data/storageTest.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"todo take a run0","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"deadline project report /by 18/08/2001 19:001","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from 18/09/2001 19:00 /to 18/10/2001 19:001","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"deadline exam paper /by 18/11/2001 19:000","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lipwei1808":4}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" * Entry point of the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" * Initializes the application and starts the interaction with the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" private final Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" private final Tasks tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" private final Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for Duke.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" * \u003cp\u003eInitialises data structures used by the application.\u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" public Duke() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" this.storage \u003d new Storage(\"./data/duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" tasks \u003d storage.load();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" * Runs the program and starts to listen to user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" ui.showGreetings();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" String text \u003d ui.readCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" Command c \u003d Parser.parse(text, false);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" // Empty or unknown command","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" if (c \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" ui.showUnknownCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" // Execute command","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" c.execute(this.tasks, this.ui, this.storage, false);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" // Check if is duke.commands.ExitCommand","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" if (c.isExit()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" } catch (DukeException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" ui.showError(ex.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" * Main method of the program, entry point of the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" * @param args arguments supplied by the user at program launch","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" new Duke().run();","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"lipwei1808":67,"-":2}},{"path":"src/main/java/duke/commands/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * Represents an AddCommand where this command should add into Tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD_D \u003d \"deadline\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD_E \u003d \"event\";","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD_T \u003d \"todo\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" private final Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for AddCommand","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" * @param task the Task to be added","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" tasks.add(this.task);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" storage.save(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" if (!isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" ui.showAddTask(this.task, tasks.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":35}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * Encapsulates the Command to run by the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" * Executes the command, updates Tasks, Storage and prints to standard output and user feedback.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * @param tasks the Tasks object to be updated","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * @param ui Ui instance to print to standard output any user feedback","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * @param storage Storage instance to save into persistent storage","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" * @param isRestoring boolean flag to track if the Command is executing in a restoring state","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * @throws DukeException if the Command cannot be executed due to invalid user input","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" abstract public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) throws DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * Checks if the program should exit after the execution.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * @return a boolean value if the program should exit","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":31}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" * Represents a DeleteCommand where this command should delete a Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" public int target;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for DeleteCommand","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" * @param target the targeted index of the Task to be deleted","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" public DeleteCommand(int target) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" this.target \u003d target;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" Task task \u003d tasks.getTaskByIndex(this.target);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" if (task \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" Task t \u003d tasks.remove(this.target - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" storage.save(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" if (!isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" ui.showSuccessDelete(t, tasks.size());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":38}},{"path":"src/main/java/duke/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Represents an ExitCommand where the program should quit.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD \u003d \"bye\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" ui.showExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":22}},{"path":"src/main/java/duke/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" * Represents an FindCommand where the user is finding tasks based on a target string.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" public String target;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for FindCommand","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" * @param target the targeted string that the user is searching for","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" public FindCommand(String target) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" this.target \u003d target;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" List\u003cTask\u003e res \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" for (Task task: tasks.getAll()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" if (task.getDescription().contains(this.target)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" res.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" if (res.size() \u003e 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" ui.showTasks(res, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" ui.showNoTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"lipwei1808":42}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Represents a ListCommand which should print all Tasks into standard output.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" if (isRestoring) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" ui.showNoTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" ui.showTasks(tasks.getAll(), false);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":26}},{"path":"src/main/java/duke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" * Represents a MarkCommand which should set the marked value of a Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD_MARK \u003d \"mark\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" public static final String COMMAND_WORD_UNMARK \u003d \"unmark\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" private boolean isMarked;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" private int target;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for MarkCommand.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" * @param isMarked boolean value if the Task should be marked","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" * @param target the targeted index of the Task to be marked","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" public MarkCommand(boolean isMarked, int target) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" this.isMarked \u003d isMarked;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" this.target \u003d target;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" public void execute(Tasks tasks, Ui ui, Storage storage, boolean isRestoring) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" Task task \u003d tasks.getTaskByIndex(this.target);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" if (task \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" task.setMarked(this.isMarked);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" storage.save(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" if (!isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" ui.showSuccessMark(this.isMarked, task);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":44}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Encapsulations of all exceptions thrown by the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for DukeException","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * @param message the message describing the exception","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" super(\"OOPS!!! \" + message);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * String representation of the Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" * @return The string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" return \"OOPS!!! \" + this.getMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":24}},{"path":"src/main/java/duke/exceptions/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Signals an invalid argument provided by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"public class InvalidArgumentException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for InvalidArgumentException","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public InvalidArgumentException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" super(\"I\u0027m sorry, but you have entered an invalid argument :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":13}},{"path":"src/main/java/duke/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Signals an invalid command provided by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for InvalidCommandException","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" super(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":13}},{"path":"src/main/java/duke/exceptions/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Signals an invalid deadline due to invalid format given by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"public class InvalidDeadlineException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for InvalidDeadlineException","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" super(\"Please enter a deadline with the format \u0027\u003c\u003cmessage\u003e\u003e /by dd/mm/yyyy HH:mm\u0027 format\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":13}},{"path":"src/main/java/duke/exceptions/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * Signals an invalid event due to invalid format given by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"public class InvalidEventException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for InvalidEventException","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" public InvalidEventException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" super(\"Please enter an event with the format \u0027\u003c\u003cmessage\u003e\u003e /from dd/mm/yyyy HH:mm /to dd/mm/yyyy HH:mm\u0027 format\");","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":13}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import duke.commands.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * Parses user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" * Parses user input into a Command object for execution.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" * @param input the text input by the user","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" * @param isRestoring boolean value if this is parsing from a data file or real user input","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * @return Command to be executed","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * @throws DukeException when the user passes in invalid input","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public static Command parse(String input, boolean isRestoring) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" if (input.trim().equals(\"\")) return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" String[] parsedText \u003d parseText(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" String action \u003d parsedText[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" String arguments \u003d parsedText[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" boolean marked \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" if (isRestoring) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" String marker \u003d arguments.substring(arguments.length() - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" marked \u003d marker.equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" arguments \u003d arguments.substring(0, arguments.length() - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" switch (action) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" case AddCommand.COMMAND_WORD_D:","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" case AddCommand.COMMAND_WORD_E:","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" case AddCommand.COMMAND_WORD_T:","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" return handleAdd(action, arguments, marked);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" if (arguments.equals(\"\")) throw new InvalidArgumentException();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" return new DeleteCommand(parseArgs(arguments));","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" if (!arguments.equals(\"\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" case MarkCommand.COMMAND_WORD_UNMARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" if (arguments.equals(\"\")) throw new InvalidArgumentException();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" return new MarkCommand(false, parseArgs(arguments));","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" case MarkCommand.COMMAND_WORD_MARK:","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" if (arguments.equals(\"\")) throw new InvalidArgumentException();","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" return new MarkCommand(true, parseArgs(arguments));","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" if (arguments.equals(\"\")) throw new InvalidArgumentException();","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" return new FindCommand(arguments);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" * Parses user input for adding into tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" * @param taskInput the type of Task","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" * @param args the arguments to be parsed for the Task","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" * @param isMarked boolean value if the Task is marked","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" * @return AddCommand to be executed","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" * @throws DukeException if there is invalid user input","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" protected static AddCommand handleAdd(String taskInput, String args, boolean isMarked) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" if (args.equals(\"\")) throw new InvalidArgumentException();","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" switch (taskInput) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" case AddCommand.COMMAND_WORD_D:","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" task \u003d parseDeadline(args, isMarked);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" case AddCommand.COMMAND_WORD_E:","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" task \u003d parseEvent(args, isMarked);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" case AddCommand.COMMAND_WORD_T:","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" task \u003d new Todo(args, isMarked);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" return new AddCommand(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" * Parses user text into the action type and the arguments","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" * @param text the text to be parsed","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" * @return String[] where the first index is the action type and second index is the arguments","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" protected static String[] parseText(String text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" String[] words \u003d text.trim().split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" String[] remaining \u003d Arrays.copyOfRange(words, 1, words.length);","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" String restOfText \u003d String.join(\" \", remaining);","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" return new String[] {words[0], restOfText};","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" * Parse string arguments into integers.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" * @param args the string number to be parsed","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" * @return the integer","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" * @throws DukeException if an invalid string of number is provided","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" protected static int parseArgs(String args) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" return Integer.parseInt(args);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" } catch (NumberFormatException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" * Parses a string into a LocalDateTime object.","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" * @param text the string to be parsed","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":" * @return LocalDateTime object after parsed","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" protected static LocalDateTime parseDateTime(String text) {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" String[] datetime \u003d text.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime parsedDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" if (datetime.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":" String dateTimeString \u003d datetime[0] + \"T\" + datetime[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\u0027T\u0027HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" parsedDateTime \u003d LocalDateTime.parse(dateTimeString, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" } catch (DateTimeParseException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":" return parsedDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":" * Parses arguments for the deadline action type.","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" * @param text the arguments to be parsed","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":" * @param isMarked boolean value if the Task is marked","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":" * @return Deadline object created by the arguments","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" * @throws InvalidDeadlineException if invalid arguments are provided","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" private static Deadline parseDeadline(String text, boolean isMarked) throws InvalidDeadlineException {","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" String[] deadline \u003d text.split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":" if (deadline.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime parsedDateTime \u003d parseDateTime(deadline[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"lipwei1808"},"content":" if (parsedDateTime \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"lipwei1808"},"content":" return new Deadline(deadline[0], parsedDateTime, isMarked);","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"lipwei1808"},"content":" * Parses arguments for the event action type.","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"lipwei1808"},"content":" * @param text the arguments to be parsed","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"lipwei1808"},"content":" * @param isMarked boolean value if the Task is marked","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"lipwei1808"},"content":" * @return Event object created by the arguments","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"lipwei1808"},"content":" * @throws InvalidEventException if invalid arguments are provided","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"lipwei1808"},"content":" private static Event parseEvent(String text, boolean isMarked) throws InvalidEventException {","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"lipwei1808"},"content":" String[] first \u003d text.split(\" /from \");","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"lipwei1808"},"content":" if (first.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"lipwei1808"},"content":" String[] second \u003d first[1].split(\" /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"lipwei1808"},"content":" if (second.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime fromDate \u003d parseDateTime(second[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime toDate \u003d parseDateTime(second[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"lipwei1808"},"content":" if (fromDate \u003d\u003d null || toDate \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"lipwei1808"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"lipwei1808"},"content":" return new Event(first[0], fromDate, toDate, isMarked);","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":199}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * Represents a Storage function for the specified filepath.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" private final String filepath;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" private final Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" * @param filepath the filepath to the file to be tracked","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" public Storage(String filepath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" * Loads the data from the given filepath into a Tasks object.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" * @return the Tasks object containing data from the data file","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" public Tasks load() {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" Tasks tasks \u003d new Tasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" File myObj \u003d new File(this.filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" Scanner myReader \u003d new Scanner(myObj);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" ui.showSuccessLoadingStorage(this.filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" while (myReader.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" String text \u003d myReader.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" Command c \u003d Parser.parse(text, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" if (c \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" c.execute(tasks, ui, new Storage(this.filepath), true);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" } catch (FileNotFoundException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" ui.showErrorFileNotFound();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" String[] filepathSplit \u003d this.filepath.split(\"/\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" String fileLocation \u003d String.join(\"/\", Arrays.copyOfRange(filepathSplit, 0, filepathSplit.length - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" System.out.println(fileLocation);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" File dir \u003d new File(fileLocation);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" dir.mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" myObj.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" ui.showErrorLoadingFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" System.exit(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" } catch (DukeException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" ui.showErrorLoadingFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" ui.showError(ex.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" System.exit(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" * Save tasks into the specified filepath.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" * @param tasks the Tasks to be saved","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" public void save(Tasks tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" // Delete everything in","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" PrintWriter writer \u003d new PrintWriter(this.filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" writer.print(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" ui.showErrorWritingFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" System.exit(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" // Rewrite everything","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" this.saveTask(tasks.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" * Save a task into the specified filepath.","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" * @param task the Task to be saved","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" private void saveTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" FileWriter myWriter \u003d new FileWriter(this.filepath, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" myWriter.write(String.format(\"%s%s\\n\", task.getOriginalMessage(), task.getMarked() ? \"1\" : \"0\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" myWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Error saving to file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" System.exit(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":116}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" * A task object that tracks Deadlines.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" private final LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" * @param description of the deadline object","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * @param by the LocalDateTime object tracking when the deadline should be completed by","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * @param isMarked boolean value if the Deadline task is marked","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" public Deadline(String description, LocalDateTime by, boolean isMarked) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" super(description, \"deadline\", isMarked);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" public String getOriginalMessage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" return String.format(\"%s %s /by %s\", this.type, this.getDescription(), this.stringifyDate(this.by));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" return super.toString() + \" (by: \" + this.formatDate(this.by) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" if (!super.equals(o)) return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" if (o instanceof Deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" Deadline d \u003d (Deadline) o;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" return this.by.equals(d.by);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":44}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":" * A task object that tracks Events.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" private final LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" private final LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * @param description of the event object","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * @param from the LocalDateTime object tracking when the event starts","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" * @param to the LocalDateTime object tracking when the event ends","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * @param isMarked boolean value if the Event task is marked","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to, boolean isMarked) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" super(description, \"event\", isMarked);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" public String getOriginalMessage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" return String.format(","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" \"%s %s /from %s /to %s\",","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" this.type,","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" this.getDescription(),","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" this.stringifyDate(this.from),","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" this.stringifyDate(this.to)","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" return super.toString() + \" (from: \" + this.formatDate(this.from) + \" to: \" + this.formatDate(this.to) + \")\" ;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" if (!super.equals(o)) return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" if (o instanceof Event) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" Event d \u003d (Event) o;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" if (!this.from.equals(d.from)) return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" return this.to.equals(d.to);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":56}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Represents a task entered by a user.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" private final String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" private boolean isMarked;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" public final String type;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * Public constructor to be called by child classes.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" * @param description the description describing the task","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" * @param type the type of task","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" * @param isMarked boolean value tracking whether the task has been marked","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" public Task(String description, String type, boolean isMarked) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" this.isMarked \u003d isMarked;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" * An abstract method to reconstruct the original message passed by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" * @return text string of the original user entered message","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" abstract public String getOriginalMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" * Getter method for the description field.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" * @return the description of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" return this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" * Getter method for the isMarked field.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" * @return the boolean value if the task is marked","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" public boolean getMarked() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" return this.isMarked;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" * A setter method for the isMarked field.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" * @param isMarked the boolean value to be set","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" public void setMarked(boolean isMarked) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" this.isMarked \u003d isMarked;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" * Helper method to stringify LocalDateTime objects into original text string","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" * pass by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" * @param dateTime the LocalDateTime object to be stringified","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" * @return text string of the LocalDateTime object","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" public String stringifyDate(LocalDateTime dateTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" String formatted \u003d dateTime.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy\u0027T\u0027HH:mm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" return String.join(\" \", formatted.split(\"T\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" * Helper method to stringify LocalDateTime objects into user-friendly date format.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" * @param dateTime the LocalDateTime object to be stringified","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" * @return text string of the formatted date","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" public String formatDate(LocalDateTime dateTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(\"HHmm, MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" * String representation of the Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" * @return The string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" String typeLetter \u003d this.type.substring(0,1).toUpperCase();","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" return String.format(\"[%s][%s] %s\", typeLetter, this.getStatusIcon(), this.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" * Checks if an object is equal to the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" * @param o the object to be checked","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" * @return boolean value if the objects are equal","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" if (this \u003d\u003d o) return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" if (o instanceof Task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" Task t \u003d (Task) o;","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" return this.isMarked \u003d\u003d t.isMarked \u0026\u0026 this.description.equals(t.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" * Returns a string form of whether the Task is marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" * @return string representation of the isMarked value","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":" private String getStatusIcon() {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" return (isMarked ? \"X\" : \" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":120}},{"path":"src/main/java/duke/tasks/Tasks.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" * Represents a collection of Task instances.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"public class Tasks {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" private final List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" * Total number of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" * @return an integer value of the number of tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" public int size() {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" * Returns a Task object given an index.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" * @param idx the index to select the Task from","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * @return the Task object returned","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" public Task get(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" return this.tasks.get(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" * Removes a Task object given the index.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" * @param idx the index of the Task to be removed","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" * @return the Task object removed","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" public Task remove(int idx) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" return this.tasks.remove(idx);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" * Adds a new Task","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" * @param task the Task to be added","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" * Returns a Task given an index while checking if the index is valid.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" * @param id the index to retrieve the Task","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" * @return the Task returned by the index","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" public Task getTaskByIndex(int id) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" if (id \u003e this.tasks.size() || id \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" return null;","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" return this.tasks.get(id - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" * Gets all the Tasks currently held.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" * @return a List of all the Tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" public List\u003cTask\u003e getAll() {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" return this.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":72}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":" * A task object that tracks Todos.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":" * Public constructor for Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" * @param description of the todo object","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":" * @param isMarked boolean value if the Event task is marked","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public Todo(String description, boolean isMarked) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" super(description, \"todo\", isMarked);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" public String getOriginalMessage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" return \"todo \" + this.getDescription();","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":22}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":" * UI of the application","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" private static final String LINE \u003d \" __________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" private final Scanner s \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" * Reads a line from the standard input.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" * @return the line read from the standard input","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" return s.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output success message for setting marked value of a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" * @param isMark boolean value whether to mark the task","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" * @param task the task to be marked","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" public void showSuccessMark(boolean isMark, Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" if (isMark) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output after adding a task to Tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" * @param task the task to be added","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" * @param totalTasks the updated total number of tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" public void showAddTask(Task task, int totalTasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Now you have \" + totalTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output a message with no tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" public void showNoTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e System.out.println(\" No tasks found!\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output all tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" * @param tasks the tasks object to be printed","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" * @param isFiltered boolean flag for whether the tasks are filtered","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" public void showTasks(List\u003cTask\u003e tasks, boolean isFiltered) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" String header \u003d isFiltered ? \"Here are the matching tasks in your list:\" : \"Here are the tasks in your list:\";","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" \" + header);","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":" System.out.println(String.format(\" %s.%s\", i + 1, task));","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output a success message after deleting a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" * @param task the task to be deleted","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" * @param totalTasks total number of tasks left after deletion","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":" public void showSuccessDelete(Task task, int totalTasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Now you have \" + totalTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output error messages.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" * @param message the error message to be outputted","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e System.out.println(\" \" + message));","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output a prompt to enter a command.","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":" public void showUnknownCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e System.out.println(\" Please enter something :-)\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output a success message for loading storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"lipwei1808"},"content":" * @param filepath the filepath where the storage loaded data from","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"lipwei1808"},"content":" public void showSuccessLoadingStorage(String filepath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e System.out.println(\" Data has been restored from \" + filepath));","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output an error message when data file is not found.","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"lipwei1808"},"content":" public void showErrorFileNotFound() {","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e System.out.println(\" Data file not found, creating a new one\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output an error message when loading of data failed.","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"lipwei1808"},"content":" public void showErrorLoadingFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e System.out.println(\" Error creating new file, quitting program now...\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output an error message when writing to data file failed.","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"lipwei1808"},"content":" public void showErrorWritingFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e System.out.println(\" Error saving to file, quitting program now...\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output a greeting message.","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"lipwei1808"},"content":" public void showGreetings() {","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" Hello I\u0027m lynn the koala \u003c3\");","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"lipwei1808"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"lipwei1808"},"content":" * Prints to standard output the exit message.","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"lipwei1808"},"content":" public void showExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"lipwei1808"},"content":" this.formatLines(() -\u003e System.out.println(\" Bye. Hope to see you again soon!\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"lipwei1808"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"lipwei1808"},"content":" * Helper method to format 2 UI lines between all output.","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"lipwei1808"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"lipwei1808"},"content":" * @param runnable A runnable function to be ran between the two output lines","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"lipwei1808"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"lipwei1808"},"content":" private void formatLines(Runnable runnable) {","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"lipwei1808"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"lipwei1808"},"content":" runnable.run();","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"lipwei1808"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lipwei1808":166}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"public class DukeTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lipwei1808":4}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":" public void parse_emptyInput_returnsNull() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":" String[] testCases \u003d { \"\", \" \", \"\\n \\n\" };","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":" for (String input: testCases) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":" Command c \u003d Parser.parse(input, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" System.out.println(\"HI \" + c);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" assertNull(c);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" } catch (DukeException ex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" // ignore","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" public void parse_addCommandWithArgs_noExceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" String[] testCases \u003d {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" \"todo run\",","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" \"deadline project /by 18/08/2001 18:00\",","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":" \"event project meeting /from 18/08/2001 18:00 /to 31/08/2001 22:00\"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":" for (String str: testCases) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e Parser.parse(str, false));","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" public void parse_listCommand_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e Parser.parse(\"list\", false));","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" public void parse_listCommandWithArgs_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" assertThrows(InvalidCommandException.class, () -\u003e Parser.parse(\"list 3\", false));","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lipwei1808"},"content":" public void parseText_validString_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lipwei1808"},"content":" String[] testCases \u003d {\"todo deadline\", \"event project meeting\", \" hello, i am a friend \"};","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lipwei1808"},"content":" String[][] answers \u003d {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lipwei1808"},"content":" new String[] {\"todo\", \"deadline\"},","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lipwei1808"},"content":" new String[] {\"event\", \"project meeting\"},","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lipwei1808"},"content":" new String[] {\"hello,\", \"i am a friend\"},","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lipwei1808"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c testCases.length; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lipwei1808"},"content":" String[] result \u003d Parser.parseText(testCases[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lipwei1808"},"content":" assertEquals(result[0], answers[i][0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lipwei1808"},"content":" assertEquals(result[1], answers[i][1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lipwei1808"},"content":" public void parseArgs_integerString_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e Parser.parseArgs(\"3\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lipwei1808"},"content":" public void parseArgs_decimalString_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"lipwei1808"},"content":" assertThrows(InvalidCommandException.class,() -\u003e Parser.parseArgs(\"3.01\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lipwei1808"},"content":" public void parseArgs_emptyString_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lipwei1808"},"content":" assertThrows(InvalidCommandException.class,() -\u003e Parser.parseArgs(\" \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lipwei1808"},"content":" assertThrows(InvalidCommandException.class,() -\u003e Parser.parseArgs(\"\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_dateWithCorrectFormat_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"lipwei1808"},"content":" assertDoesNotThrow(() -\u003e Parser.parseDateTime(\"deadline project /by 18/08/2001 18:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_dateWithWrongDay_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"lipwei1808"},"content":" assertNull(Parser.parseDateTime(\"32/12/2001 18:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_dateWithWrongMonth_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"lipwei1808"},"content":" assertNull(Parser.parseDateTime(\"18/13/2001 18:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_dateWithWrongYear_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"lipwei1808"},"content":" assertNull(Parser.parseDateTime(\"18/12/0 18:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_wrongTime_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"lipwei1808"},"content":" assertNull(Parser.parseDateTime(\"18/12/2001 25:00\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"lipwei1808"},"content":" public void parseDateTime_wrongTimeFormat_throwException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"lipwei1808"},"content":" assertNull( Parser.parseDateTime(\"18/12/2001 1800\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lipwei1808":110}},{"path":"src/test/java/duke/storage/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"package duke.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":" public void load_validData_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":" Tasks tasks \u003d new Storage(\"./data/storageTest.txt\").load();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":" Tasks expected \u003d this.getTestTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":" if (tasks.size() !\u003d expected.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lipwei1808"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lipwei1808"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lipwei1808"},"content":" if (!tasks.get(i).equals(expected.get(i))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lipwei1808"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lipwei1808"},"content":" private Tasks getTestTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lipwei1808"},"content":" Tasks tasks \u003d new Tasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime dt1 \u003d LocalDateTime.parse(\"18/08/2001T19:00\", DateTimeFormatter.ofPattern(\"dd/MM/yyyy\u0027T\u0027HH:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime dt2 \u003d LocalDateTime.parse(\"18/09/2001T19:00\", DateTimeFormatter.ofPattern(\"dd/MM/yyyy\u0027T\u0027HH:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime dt3 \u003d LocalDateTime.parse(\"18/10/2001T19:00\", DateTimeFormatter.ofPattern(\"dd/MM/yyyy\u0027T\u0027HH:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lipwei1808"},"content":" LocalDateTime dt4 \u003d LocalDateTime.parse(\"18/11/2001T19:00\", DateTimeFormatter.ofPattern(\"dd/MM/yyyy\u0027T\u0027HH:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lipwei1808"},"content":" tasks.add(new Todo(\"take a run\", false));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lipwei1808"},"content":" tasks.add(new Deadline(\"project report\", dt1, true));","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lipwei1808"},"content":" tasks.add(new Event(\"project meeting\", dt2, dt3, true));","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lipwei1808"},"content":" tasks.add(new Deadline(\"exam paper\", dt4, false));","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lipwei1808"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lipwei1808"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lipwei1808"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lipwei1808":48}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from 12/01/2001 18:00 /to 31/12/2001 22:000","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"deadline report /by 31/12/2023 23:000","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"todo meet friend1","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"deadline report10 /by 12/12/2023 01:001","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"deadline project report /by 31/12/2001 18:000","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"event project meetup /from 21/08/2012 18:00 /to 31/12/2033 22:001","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"lipwei1808":6}},{"path":"text-ui-test/data/original.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from 12/01/2001 18:00 /to 31/12/2001 22:001","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"deadline report /by 31/12/2023 23:000","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"deadline report2 /by 01/01/2100 00:000","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"todo meet friend1","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"deadline report10 /by 12/12/2023 01:000","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"lipwei1808":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lipwei1808"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"lipwei1808"},"content":"delete 3","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"lipwei1808"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lipwei1808"},"content":"mark 4","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"lipwei1808"},"content":"unmark 1","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"lipwei1808"},"content":"unmark 1","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"lipwei1808"},"content":"todo hi","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"lipwei1808"},"content":"todo","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"lipwei1808"},"content":"deadline project report","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"lipwei1808"},"content":"deadline project report /by 31/12/2001 18:00","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"lipwei1808"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from Mon /to 2pm","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from 21/07/2012 /to 31/12/2031","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"lipwei1808"},"content":"event project meeting /from 21/08/2012 18:00 /to 31/12/203 22:00","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"lipwei1808"},"content":"event project meetup /from 21/08/2012 18:00 /to 31/12/2033 22:00","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"lipwei1808"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"delete","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"lipwei1808"},"content":"delete 5","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"lipwei1808"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"lipwei1808"},"content":"mark 6","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"lipwei1808"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"lipwei1808"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lipwei1808":22}},{"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":"lipwei1808"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"lipwei1808":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":"lipwei1808"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"lipwei1808"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"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":24,"author":{"gitId":"lipwei1808"},"content":"java -classpath ../bin duke/Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"lipwei1808":3,"-":36}}] diff --git a/lipwei1808_ip_master/commits.json b/lipwei1808_ip_master/commits.json index 080faed0..9e3da91b 100644 --- a/lipwei1808_ip_master/commits.json +++ b/lipwei1808_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"lipwei1808":[{"date":"2023-08-24","commitResults":[{"hash":"25a46eaf517ed6bfd098d21e879eaacc5bdb7a0b","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":6}}},{"hash":"109aa4337d9dbf51293c399d48c3bfbe47527ea1","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"8cd1f5aa7f16510def6c9c6aedd816a62218c1b6","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":1}}},{"hash":"6080c4f6b3d0c586f1d79b06818bcb2bf9976461","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":1}}},{"hash":"20907fd4a2c305f3f07d60470d438f34b065af73","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":185,"deletions":46}}},{"hash":"72d975ededfc93bf01bdfa7701bdd48fbf30741a","isMergeCommit":false,"messageTitle":"Fix bug with event and added testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":14,"deletions":8},"sh":{"insertions":0,"deletions":0}}},{"hash":"69e1101df480573ce7ea751e67e5c7f71f9f45db","isMergeCommit":false,"messageTitle":"Added exception handling for adding of tasks","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":73}}},{"hash":"3fdfa5de574cdf0b0cde2f3f0e6f280c2358bde6","isMergeCommit":false,"messageTitle":"Added delete functionality and updated test","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":5},"java":{"insertions":28,"deletions":1},"sh":{"insertions":1,"deletions":0}}},{"hash":"406eb9cb61790b08908e5b239fbbfad536748727","isMergeCommit":false,"messageTitle":"Change bot name ah","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"6e79b6c17d50004892a8cdc78d22fb415d16719c","isMergeCommit":false,"messageTitle":"Add saving functionality on new task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":134,"deletions":31}}},{"hash":"c31c18c01f89a33d29a22c2f1d434d0f35c4d678","isMergeCommit":false,"messageTitle":"Add auto-save mark and unmark information","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":32,"deletions":37}}},{"hash":"b076b0a24df0a6c229f0e550a93cf1e46ac0340c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"813738c802a573e35f3a499dbd9271942e8fa97a","isMergeCommit":false,"messageTitle":"Add DateTime parsing by the chatbot","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":63,"deletions":17}}},{"hash":"6fbefcd51ff7ea0cca8ea4464475316dbf670a1c","isMergeCommit":false,"messageTitle":"Allow for formatted dates when listing tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":8,"deletions":8}}},{"hash":"f88dde479e12eb4bd0d4583cb0c9927c93279120","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"763e06233520c25726ca8e08304634c3d66dc224","isMergeCommit":false,"messageTitle":"Test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":31,"deletions":14}}}]},{"date":"2023-08-30","commitResults":[{"hash":"67372e809a5fc3c3519e832dba397d3d7ca06f1b","isMergeCommit":false,"messageTitle":"Add UI, Parser, Command and Storage class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":455,"deletions":331}}},{"hash":"016106e0e85f3c6d8d71053c150f548f49045777","isMergeCommit":false,"messageTitle":"cleanup code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":24}}},{"hash":"207e148f8ca3651ee23db67b20bf179bf298b2f7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-more-oop\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"334cd41790df0019fa9f676180d3d849dd4af92b","isMergeCommit":false,"messageTitle":"Refactor to packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":39},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"9949a736ef0c5e546cc1d0592b35532e33258b71","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"1bac62554198c845b7a580afef676165b34b1286","isMergeCommit":false,"messageTitle":"Bump gradle and lib version","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":4}}},{"hash":"eeccf3a8fa8641fcd9b5a45809904a1424aa36d8","isMergeCommit":false,"messageTitle":"Update class used in build gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"801336c3c0410741c2293c5b663d3733434b0d19","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"0254bb293c48219cb11659845ea7f127284e1519","isMergeCommit":false,"messageTitle":"Add junit test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":219,"deletions":21}}},{"hash":"ae8a007d759c66f6f789d0e207344868e98c13b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-junit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"5b834796641bdb1569cfd02eeb0b441e054928a5","isMergeCommit":false,"messageTitle":"Add handling for missing directories when creating data file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":3}}},{"hash":"ef4420330a993258da80d3e212fe55cf6461d608","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"5f943e8b2541fb770c32517ce1317177ba40fe79","isMergeCommit":false,"messageTitle":"Add FindCommand and Parser to handle new case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":5}}},{"hash":"ec67705131f59ebcc8d8b19a15b0dc04690b09ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"lipwei1808":{"java":941,"md":2,"fxml":0,"sh":3,"bat":1,"gradle":1,"txt":42}},"authorContributionVariance":{"lipwei1808":84795.03},"authorDisplayNameMap":{"lipwei1808":"CS2103-T16-3 TAN .. WEI"}} +{"authorDailyContributionsMap":{"lipwei1808":[{"date":"2023-08-24","commitResults":[{"hash":"25a46eaf517ed6bfd098d21e879eaacc5bdb7a0b","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":6}}},{"hash":"109aa4337d9dbf51293c399d48c3bfbe47527ea1","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"8cd1f5aa7f16510def6c9c6aedd816a62218c1b6","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":1}}},{"hash":"6080c4f6b3d0c586f1d79b06818bcb2bf9976461","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":1}}},{"hash":"20907fd4a2c305f3f07d60470d438f34b065af73","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":185,"deletions":46}}},{"hash":"72d975ededfc93bf01bdfa7701bdd48fbf30741a","isMergeCommit":false,"messageTitle":"Fix bug with event and added testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":14,"deletions":8},"sh":{"insertions":0,"deletions":0}}},{"hash":"69e1101df480573ce7ea751e67e5c7f71f9f45db","isMergeCommit":false,"messageTitle":"Added exception handling for adding of tasks","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":73}}},{"hash":"3fdfa5de574cdf0b0cde2f3f0e6f280c2358bde6","isMergeCommit":false,"messageTitle":"Added delete functionality and updated test","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":5},"java":{"insertions":28,"deletions":1},"sh":{"insertions":1,"deletions":0}}},{"hash":"406eb9cb61790b08908e5b239fbbfad536748727","isMergeCommit":false,"messageTitle":"Change bot name ah","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"6e79b6c17d50004892a8cdc78d22fb415d16719c","isMergeCommit":false,"messageTitle":"Add saving functionality on new task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":134,"deletions":31}}},{"hash":"c31c18c01f89a33d29a22c2f1d434d0f35c4d678","isMergeCommit":false,"messageTitle":"Add auto-save mark and unmark information","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":32,"deletions":37}}},{"hash":"b076b0a24df0a6c229f0e550a93cf1e46ac0340c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"813738c802a573e35f3a499dbd9271942e8fa97a","isMergeCommit":false,"messageTitle":"Add DateTime parsing by the chatbot","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":63,"deletions":17}}},{"hash":"6fbefcd51ff7ea0cca8ea4464475316dbf670a1c","isMergeCommit":false,"messageTitle":"Allow for formatted dates when listing tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":8,"deletions":8}}},{"hash":"f88dde479e12eb4bd0d4583cb0c9927c93279120","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"763e06233520c25726ca8e08304634c3d66dc224","isMergeCommit":false,"messageTitle":"Test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":31,"deletions":14}}}]},{"date":"2023-08-30","commitResults":[{"hash":"67372e809a5fc3c3519e832dba397d3d7ca06f1b","isMergeCommit":false,"messageTitle":"Add UI, Parser, Command and Storage class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":455,"deletions":331}}},{"hash":"016106e0e85f3c6d8d71053c150f548f49045777","isMergeCommit":false,"messageTitle":"cleanup code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":24}}},{"hash":"207e148f8ca3651ee23db67b20bf179bf298b2f7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-more-oop\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"334cd41790df0019fa9f676180d3d849dd4af92b","isMergeCommit":false,"messageTitle":"Refactor to packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":39},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"9949a736ef0c5e546cc1d0592b35532e33258b71","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"1bac62554198c845b7a580afef676165b34b1286","isMergeCommit":false,"messageTitle":"Bump gradle and lib version","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":4}}},{"hash":"eeccf3a8fa8641fcd9b5a45809904a1424aa36d8","isMergeCommit":false,"messageTitle":"Update class used in build gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"801336c3c0410741c2293c5b663d3733434b0d19","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"0254bb293c48219cb11659845ea7f127284e1519","isMergeCommit":false,"messageTitle":"Add junit test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":219,"deletions":21}}},{"hash":"ae8a007d759c66f6f789d0e207344868e98c13b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-junit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"5b834796641bdb1569cfd02eeb0b441e054928a5","isMergeCommit":false,"messageTitle":"Add handling for missing directories when creating data file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":3}}},{"hash":"ef4420330a993258da80d3e212fe55cf6461d608","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"5f943e8b2541fb770c32517ce1317177ba40fe79","isMergeCommit":false,"messageTitle":"Add FindCommand and Parser to handle new case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":5}}},{"hash":"ec67705131f59ebcc8d8b19a15b0dc04690b09ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"1874d81401e056640926a12e03b08ce29a257fbc","isMergeCommit":false,"messageTitle":"Refactor lines printing in UI class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":53}}},{"hash":"7d6e6a3d3a8d78b8ad846c1379ef33da4278cdd4","isMergeCommit":false,"messageTitle":"Refactor codebase to align with Coding Standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":104}}},{"hash":"55c699d1acb7876d8d6b7e5c00f9d117171eb919","isMergeCommit":false,"messageTitle":"Fix lines that are too long","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":5}}},{"hash":"481a1e9c6c34fb9734d73e6d785e7a4f6fba3df7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"fdc8fa913c9f62fa4606d3ac752e57bf88ac2692","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":8}}},{"hash":"3a753726cf59e66ea94b078dc66f78982e067fc6","isMergeCommit":false,"messageTitle":"Complete javadocs for rest of the classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":282,"deletions":20}}},{"hash":"3aebd99245f33764b0b93d84f3cb16601a5872b6","isMergeCommit":false,"messageTitle":"Write javaDocs for new methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":1}}},{"hash":"75c4c988d81c860bd92163da3b0177d313b1f378","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"lipwei1808":{"java":1338,"md":2,"fxml":0,"sh":3,"bat":1,"gradle":1,"txt":42}},"authorContributionVariance":{"lipwei1808":111502.625},"authorDisplayNameMap":{"lipwei1808":"CS2103-T16-3 TAN .. WEI"}} diff --git a/lshaoqin_ip_master/authorship.json b/lshaoqin_ip_master/authorship.json index 607cf874..f6e094a6 100644 --- a/lshaoqin_ip_master/authorship.json +++ b/lshaoqin_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" mainClass.set(\"juke.Juke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" archiveBaseName \u003d \"juke\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"lshaoqin":2,"-":40}},{"path":"src/main/java/juke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" super(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" public Deadline(String description, boolean isDone, LocalDate by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" return \"[D]\" + super.toString() + \" (by: \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" public String toData() { return \"D\" + super.toData() + \"|\" + this.by; }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":27}},{"path":"src/main/java/juke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" protected LocalDate start;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" protected LocalDate end;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" public Event(String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" super(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" public Event(String description, boolean isDone, LocalDate start, LocalDate end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" return \"[E]\" + super.toString() + \" (\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" \"from: \" + start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) +","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" \" to: \" + end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" public String toData() { return \"E\" + super.toData() + \"|\" + start + \"|\" + end; }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":30}},{"path":"src/main/java/juke/Juke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"public class Juke {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" private final Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" private boolean isEnded;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" public void closeBot() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" ui.printBye();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" isEnded \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" public void printList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" ui.printList(tasks.tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" public void unmark(int index) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" Task currTask \u003d tasks.markAsUndone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" ui.unmark(currTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" storage.updateAll(tasks.tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" public void mark(int index) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" Task currTask \u003d tasks.markAsDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" ui.mark(currTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" storage.updateAll(tasks.tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" public void delete(int index) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" Task currTask \u003d tasks.delete(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" ui.delete(currTask, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" storage.updateAll(tasks.tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" public void createTodo(String desc) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" Task newTask \u003d new Todo(desc);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" storage.write(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" ui.createTask(newTask, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" public void createDeadline(String desc, LocalDate by) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" Task newTask \u003d new Deadline(desc, by);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" storage.write(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" ui.createTask(newTask, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":" public void createEvent(String desc, LocalDate start, LocalDate end) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lshaoqin"},"content":" Task newTask \u003d new Event(desc, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lshaoqin"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":" storage.write(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lshaoqin"},"content":" ui.createTask(newTask, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" public Juke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lshaoqin"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lshaoqin"},"content":" parser \u003d new Parser(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lshaoqin"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lshaoqin"},"content":" } catch (JukeError e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lshaoqin"},"content":" ui.printError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lshaoqin"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":73,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":74,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":75,"author":{"gitId":"lshaoqin"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lshaoqin"},"content":" ui.printStart();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" while (!isEnded) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"lshaoqin"},"content":" parser.parse(scanner.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lshaoqin"},"content":" } catch (JukeError error) {","lastModifiedDate":"2023-08-21"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":" ui.printError(error);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":84,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":85,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":86,"author":{"gitId":"lshaoqin"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"lshaoqin"},"content":" new Juke(\"./savefile.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"lshaoqin":89}},{"path":"src/main/java/juke/JukeError.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"public class JukeError extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":" public JukeError(String errorMessage) {","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"lshaoqin":7}},{"path":"src/main/java/juke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" protected Juke juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" public Parser(Juke juke) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" this.juke \u003d juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" void parse(String input) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" if (input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" juke.closeBot();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" else if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" juke.printList();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" else if (input.contains(\"unmark \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" int index \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" juke.unmark(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" else if (input.contains(\"mark \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" int index \u003d Integer.parseInt(input.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" juke.mark(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" else if (input.startsWith(\"delete \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" int index \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" juke.delete(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" if (input.length() \u003c 5 || input.substring(5).length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" juke.createTodo(input.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" final Pattern deadlinePattern \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" \"^deadline\\\\s+(.*)\\\\s+/by\\\\s+(.*)$\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" Matcher matcher \u003d deadlinePattern.matcher(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" if (matcher.matches()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" juke.createDeadline(matcher.group(1), LocalDate.parse(matcher.group(2)));","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"Failed to parse date.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" final Pattern eventPattern \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" \"^event\\\\s+(.*)\\\\s+/from\\\\s+(.*)\\\\s+/to\\\\s+(.*)$\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" Matcher matcher \u003d eventPattern.matcher(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" if (matcher.matches()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":" juke.createEvent(matcher.group(1),","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lshaoqin"},"content":" LocalDate.parse(matcher.group(2)),","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lshaoqin"},"content":" LocalDate.parse(matcher.group(3)));","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"Failed to parse date.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lshaoqin"},"content":" else {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":68}},{"path":"src/main/java/juke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" File savefile;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" public Storage(String filepath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" this.savefile \u003d new File(\"./savefile.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" if (!savefile.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" savefile.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" private boolean parseIsDone(String isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" return isDone.equals(\"true\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" private Task parseOne(String data) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" String[] parts \u003d data.split(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" if (Objects.equals(parts[0], \"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" return new Todo(parts[2], parseIsDone(parts[1]));","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" if (Objects.equals(parts[0], \"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" return new Deadline(parts[2], parseIsDone(parts[1]), LocalDate.parse(parts[3]));","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" if (Objects.equals(parts[0], \"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" return new Event(parts[2], parseIsDone(parts[1]),","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" LocalDate.parse(parts[3]), LocalDate.parse(parts[4]));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" public ArrayList\u003cTask\u003e load() throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(savefile));","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" // Read the lines from the file one by one.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" tasks.add(parseOne(line));","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"Failed to load data.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":" public void write(Task task) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lshaoqin"},"content":" FileWriter writer \u003d new FileWriter(savefile, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":" writer.write(task.toData() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lshaoqin"},"content":" writer.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lshaoqin"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lshaoqin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"Failed to write to storage.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lshaoqin"},"content":" public void updateAll(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lshaoqin"},"content":" FileWriter deleter \u003d new FileWriter(savefile, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lshaoqin"},"content":" deleter.write(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lshaoqin"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"lshaoqin"},"content":" FileWriter writer \u003d new FileWriter(savefile, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"lshaoqin"},"content":" writer.write(task.toData() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"lshaoqin"},"content":" writer.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"lshaoqin"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lshaoqin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":81}},{"path":"src/main/java/juke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"public class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":" protected final String desc;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" public Task(String desc) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" public Task(String desc, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" return (isDone ? \"[X] \" : \"[ ] \"); // mark done task with X","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" return this.getStatusIcon() + desc;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" public String toData() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" String done \u003d isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" return \"|\" + isDone + \"|\" + desc;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":38}},{"path":"src/main/java/juke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":" public ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" public Task markAsUndone(int index) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" if (index \u003e tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"That task does not exist!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" Task currTask \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" currTask.markAsUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" return currTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" public Task markAsDone(int index) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" if (index \u003e tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"That task does not exist!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" Task currTask \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" currTask.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" return currTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" public Task delete(int index) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" if (index \u003e tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"That task does not exist!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" Task currTask \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" return currTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":47}},{"path":"src/main/java/juke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":" public Todo(String desc) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":" super(desc);","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" public Todo(String desc, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" super(desc, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" public String toData() { return \"T\" + super.toData(); }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":19}},{"path":"src/main/java/juke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" static void printLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"_______________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" public String readInput() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" public void printStart() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" //Introduce itself to the user","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Hello! I\u0027m juke.Juke!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" public void printError(JukeError error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" System.out.println(error.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" public void printBye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" //Say goodbye","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" scanner.close(); // Close the scanner before exiting","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" public void printList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" int count \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" System.out.println(count + \": \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" count++;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" public void unmark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \\n\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" public void mark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" public void delete(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lshaoqin"},"content":" public void createTask(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":67}},{"path":"src/test/java/juke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" public void deleteTask_indexOutOfBounds_errorThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" TaskList tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" tasks.delete(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" } catch (JukeError e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" assertEquals(\"That task does not exist!\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" public void markTask_indexOutOfBounds_errorThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" TaskList tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" tasks.markAsDone(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" } catch (JukeError e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" assertEquals(\"That task does not exist!\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" public void add_getSize_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" TaskList tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" tasks.add(new Task(\"testing\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" tasks.add(new Task(\"testing\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" assertEquals(tasks.getSize(), 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"lshaoqin":35}},{"path":"src/test/java/juke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" public void toString_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" Todo todo \u003d new Todo(\"testing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" assertEquals(todo.toString(), \"[T][ ] testing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" public void toData_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" Todo todo \u003d new Todo(\"testing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" assertEquals(todo.toData(), \"T|false|testing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" public void mark_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" Todo todo \u003d new Todo(\"testing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" assertTrue(todo.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" public void unmark_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" Todo todo \u003d new Todo(\"testing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" todo.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" assertFalse(todo.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"lshaoqin":33}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"unmark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"lshaoqin":9}},{"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":"lshaoqin"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\juke.Juke.java","lastModifiedDate":"2023-08-31"},{"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":"lshaoqin"},"content":"java -classpath ..\\bin juke.Juke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"lshaoqin":2,"-":19}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" mainClass.set(\"juke.Juke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" archiveBaseName \u003d \"juke\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"lshaoqin":2,"-":40}},{"path":"src/main/java/juke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" super(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" public Deadline(String description, boolean isDone, LocalDate by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" return \"[D]\" + super.toString() + \" (by: \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" public String toData() { return \"D\" + super.toData() + \"|\" + this.by; }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":27}},{"path":"src/main/java/juke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" protected LocalDate start;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" protected LocalDate end;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" public Event(String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" super(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" public Event(String description, boolean isDone, LocalDate start, LocalDate end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" return \"[E]\" + super.toString() + \" (\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" \"from: \" + start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) +","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" \" to: \" + end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" public String toData() { return \"E\" + super.toData() + \"|\" + start + \"|\" + end; }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":30}},{"path":"src/main/java/juke/Juke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"public class Juke {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" private final Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" private boolean isEnded;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" public void closeBot() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" ui.printBye();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" isEnded \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" public void printList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" ui.printList(tasks.tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" public void unmark(int index) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" Task currTask \u003d tasks.markAsUndone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" ui.unmark(currTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" storage.updateAll(tasks.tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" public void mark(int index) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" Task currTask \u003d tasks.markAsDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" ui.mark(currTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" storage.updateAll(tasks.tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" public void delete(int index) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" Task currTask \u003d tasks.delete(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" ui.delete(currTask, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" storage.updateAll(tasks.tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" public void find(String searchTerm) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" ArrayList\u003cTask\u003e results \u003d tasks.find(searchTerm);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" ui.find(results);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" public void createTodo(String desc) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" Task newTask \u003d new Todo(desc);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" storage.write(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" ui.createTask(newTask, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" public void createDeadline(String desc, LocalDate by) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" Task newTask \u003d new Deadline(desc, by);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lshaoqin"},"content":" storage.write(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lshaoqin"},"content":" ui.createTask(newTask, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lshaoqin"},"content":" public void createEvent(String desc, LocalDate start, LocalDate end) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lshaoqin"},"content":" Task newTask \u003d new Event(desc, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lshaoqin"},"content":" storage.write(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lshaoqin"},"content":" ui.createTask(newTask, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":" public Juke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lshaoqin"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lshaoqin"},"content":" parser \u003d new Parser(this);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lshaoqin"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":73,"author":{"gitId":"lshaoqin"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"lshaoqin"},"content":" } catch (JukeError e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"lshaoqin"},"content":" ui.printError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":79,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":80,"author":{"gitId":"lshaoqin"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lshaoqin"},"content":" ui.printStart();","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":" while (!isEnded) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"lshaoqin"},"content":" parser.parse(ui.readInput());","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"lshaoqin"},"content":" } catch (JukeError error) {","lastModifiedDate":"2023-08-21"},{"lineNumber":86,"author":{"gitId":"lshaoqin"},"content":" ui.printError(error);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":88,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":89,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":90,"author":{"gitId":"lshaoqin"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"lshaoqin"},"content":" new Juke(\"./savefile.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"lshaoqin":93}},{"path":"src/main/java/juke/JukeError.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"public class JukeError extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":" public JukeError(String errorMessage) {","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"lshaoqin":7}},{"path":"src/main/java/juke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" protected Juke juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" public Parser(Juke juke) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" this.juke \u003d juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" * Parses input and calls the appropriate Juke function.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" * @param input Input from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" * @throws JukeError If there was a problem parsing the input.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" void parse(String input) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" if (input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" juke.closeBot();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" else if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" juke.printList();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" else if (input.contains(\"unmark \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" int index \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" juke.unmark(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" else if (input.contains(\"mark \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" int index \u003d Integer.parseInt(input.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" juke.mark(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" else if (input.startsWith(\"delete \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" int index \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" juke.delete(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" else if (input.startsWith(\"find \")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" if (input.length() \u003c 6) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"Please specify a search term.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" String searchTerm \u003d input.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" juke.find(searchTerm);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" if (input.length() \u003c 5 || input.substring(5).length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" juke.createTodo(input.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" final Pattern deadlinePattern \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" \"^deadline\\\\s+(.*)\\\\s+/by\\\\s+(.*)$\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" Matcher matcher \u003d deadlinePattern.matcher(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":" if (matcher.matches()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lshaoqin"},"content":" juke.createDeadline(matcher.group(1), LocalDate.parse(matcher.group(2)));","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"Failed to parse date.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lshaoqin"},"content":" else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lshaoqin"},"content":" final Pattern eventPattern \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lshaoqin"},"content":" \"^event\\\\s+(.*)\\\\s+/from\\\\s+(.*)\\\\s+/to\\\\s+(.*)$\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lshaoqin"},"content":" Matcher matcher \u003d eventPattern.matcher(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":" if (matcher.matches()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lshaoqin"},"content":" juke.createEvent(matcher.group(1),","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lshaoqin"},"content":" LocalDate.parse(matcher.group(2)),","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"lshaoqin"},"content":" LocalDate.parse(matcher.group(3)));","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"lshaoqin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"Failed to parse date.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" else {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":82}},{"path":"src/main/java/juke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" File savefile;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" public Storage(String filepath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" this.savefile \u003d new File(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" if (!savefile.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" savefile.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" * Checks if task in data has been completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" * @param isDone isDone portion of the task in data.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" * @return Whether the task has been completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" private boolean parseIsDone(String isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" return isDone.equals(\"true\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" * Parses one task which was stored in the savefile.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" * @param data The data string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" * @return The parsed Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" private Task parseOne(String data) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" String[] parts \u003d data.split(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" if (Objects.equals(parts[0], \"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" return new Todo(parts[2], parseIsDone(parts[1]));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" if (Objects.equals(parts[0], \"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" return new Deadline(parts[2], parseIsDone(parts[1]), LocalDate.parse(parts[3]));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" if (Objects.equals(parts[0], \"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" return new Event(parts[2], parseIsDone(parts[1]),","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" LocalDate.parse(parts[3]), LocalDate.parse(parts[4]));","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" * Loads all tasks from the savefile.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" * @return An ArrayList of Tasks which was loaded from the savefile.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" * @throws JukeError If there was an error parsing any of the data.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" public ArrayList\u003cTask\u003e load() throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lshaoqin"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(savefile));","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":" // Read the lines from the file one by one.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lshaoqin"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lshaoqin"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lshaoqin"},"content":" tasks.add(parseOne(line));","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lshaoqin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"Failed to load data.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"lshaoqin"},"content":" * Writes a task to the savefile.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"lshaoqin"},"content":" * @param task The task to be written.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"lshaoqin"},"content":" * @throws JukeError If the writing operation failed.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" public void write(Task task) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" FileWriter writer \u003d new FileWriter(savefile, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"lshaoqin"},"content":" writer.write(task.toData() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"lshaoqin"},"content":" writer.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lshaoqin"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"Failed to write to storage.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"lshaoqin"},"content":" * Updates all tasks in the savefile, useful when a task is deleted or modified.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"lshaoqin"},"content":" * @param tasks An ArrayList of all tasks to be written.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"lshaoqin"},"content":" public void updateAll(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"lshaoqin"},"content":" FileWriter deleter \u003d new FileWriter(savefile, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"lshaoqin"},"content":" deleter.write(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"lshaoqin"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"lshaoqin"},"content":" FileWriter writer \u003d new FileWriter(savefile, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"lshaoqin"},"content":" writer.write(task.toData() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"lshaoqin"},"content":" writer.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"lshaoqin"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"lshaoqin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"lshaoqin"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":105}},{"path":"src/main/java/juke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"public class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":" protected final String desc;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" public Task(String desc) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" public Task(String desc, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" * Gets the appropriate icon based on whether the task is done.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" * @return [X] if task is done, [ ] if task is not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" return (isDone ? \"[X] \" : \"[ ] \"); // mark done task with X","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" * Marks task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" * Marks task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" return this.getStatusIcon() + desc;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" * Generates string to be stored as data in Storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":" * @return String which stores all necessary attributes in the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" public String toData() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" return \"|\" + isDone + \"|\" + desc;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":51}},{"path":"src/main/java/juke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":" public ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" public Task markAsUndone(int index) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" if (index \u003e tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"That task does not exist!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" Task currTask \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" currTask.markAsUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" return currTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" public Task markAsDone(int index) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" if (index \u003e tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"That task does not exist!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" Task currTask \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" currTask.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" return currTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" public Task delete(int index) throws JukeError {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" if (index \u003e tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" throw new JukeError(\"That task does not exist!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" Task currTask \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" return currTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" public ArrayList\u003cTask\u003e find(String searchTerm) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" ArrayList\u003cTask\u003e results \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" if (task.desc.contains(searchTerm)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" results.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" return results;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":57}},{"path":"src/main/java/juke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":" public Todo(String desc) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":" super(desc);","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" public Todo(String desc, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" super(desc, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" public String toData() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" return \"T\" + super.toData();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":21}},{"path":"src/main/java/juke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":" Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" * Prints a line to separate different sections.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" static void printLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"_______________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" * Reads the input from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" * @return The input from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" public String readInput() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" * Prints the message to welcome the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" public void printStart() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" //Introduce itself to the user","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Hello! I\u0027m Juke!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"lshaoqin"},"content":" * Prints the error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"lshaoqin"},"content":" * @param error The JukeError which was encountered.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"lshaoqin"},"content":" public void printError(JukeError error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lshaoqin"},"content":" System.out.println(error.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lshaoqin"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"lshaoqin"},"content":" * Prints bye to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"lshaoqin"},"content":" public void printBye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lshaoqin"},"content":" //Say goodbye","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lshaoqin"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lshaoqin"},"content":" scanner.close(); // Close the scanner before exiting","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"lshaoqin"},"content":" * Prints the lists of tasks that the user has saved.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"lshaoqin"},"content":" * @param tasks The list of tasks to be printed.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"lshaoqin"},"content":" public void printList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lshaoqin"},"content":" int count \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lshaoqin"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lshaoqin"},"content":" System.out.println(count + \": \" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lshaoqin"},"content":" count++;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lshaoqin"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"lshaoqin"},"content":" * Prints message after a task is marked as uncompleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"lshaoqin"},"content":" * @param task The task which was unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"lshaoqin"},"content":" public void unmark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \\n\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"lshaoqin"},"content":" * Prints message after a task is marked as completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"lshaoqin"},"content":" * @param task The task which was marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"lshaoqin"},"content":" public void mark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"lshaoqin"},"content":" * Prints message after a task is deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"lshaoqin"},"content":" * @param task The task which was deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"lshaoqin"},"content":" * @param size The number of tasks in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"lshaoqin"},"content":" public void delete(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"lshaoqin"},"content":" * Prints message after a task is created.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"lshaoqin"},"content":" * @param task The task which was created.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"lshaoqin"},"content":" * @param size The number of tasks in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"lshaoqin"},"content":" public void createTask(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"lshaoqin"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"lshaoqin"},"content":" * Prints out corresponding tasks based on search term.","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"lshaoqin"},"content":" * @param results The results of the search.","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"lshaoqin"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"lshaoqin"},"content":" public void find(ArrayList\u003cTask\u003e results) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"lshaoqin"},"content":" if (results.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"No results found.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"lshaoqin"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"lshaoqin"},"content":" int count \u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"lshaoqin"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"lshaoqin"},"content":" for (Task task : results) {","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"lshaoqin"},"content":" System.out.println(count + \". \" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"lshaoqin"},"content":" count++;","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"lshaoqin"},"content":" printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lshaoqin":126}},{"path":"src/test/java/juke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" public void deleteTask_indexOutOfBounds_errorThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":" TaskList tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" tasks.delete(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" } catch (JukeError e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" assertEquals(\"That task does not exist!\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" public void markTask_indexOutOfBounds_errorThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" TaskList tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" tasks.markAsDone(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" } catch (JukeError e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" assertEquals(\"That task does not exist!\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" public void add_getSize_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" TaskList tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" tasks.add(new Task(\"testing\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" tasks.add(new Task(\"testing\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":" assertEquals(tasks.getSize(), 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"lshaoqin":35}},{"path":"src/test/java/juke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"package juke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":" public void toString_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lshaoqin"},"content":" Todo todo \u003d new Todo(\"testing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lshaoqin"},"content":" assertEquals(todo.toString(), \"[T][ ] testing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lshaoqin"},"content":" public void toData_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lshaoqin"},"content":" Todo todo \u003d new Todo(\"testing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lshaoqin"},"content":" assertEquals(todo.toData(), \"T|false|testing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lshaoqin"},"content":" public void mark_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lshaoqin"},"content":" Todo todo \u003d new Todo(\"testing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lshaoqin"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lshaoqin"},"content":" assertTrue(todo.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lshaoqin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lshaoqin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lshaoqin"},"content":" public void unmark_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lshaoqin"},"content":" Todo todo \u003d new Todo(\"testing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lshaoqin"},"content":" todo.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lshaoqin"},"content":" assertFalse(todo.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lshaoqin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lshaoqin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"lshaoqin":33}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lshaoqin"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"lshaoqin"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"lshaoqin"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"lshaoqin"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"lshaoqin"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"lshaoqin"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"lshaoqin"},"content":"unmark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"lshaoqin"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"lshaoqin"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"lshaoqin":9}},{"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":"lshaoqin"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\juke.Juke.java","lastModifiedDate":"2023-08-31"},{"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":"lshaoqin"},"content":"java -classpath ..\\bin juke.Juke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"lshaoqin":2,"-":19}}] diff --git a/lshaoqin_ip_master/commits.json b/lshaoqin_ip_master/commits.json index c471307c..1915901a 100644 --- a/lshaoqin_ip_master/commits.json +++ b/lshaoqin_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"lshaoqin":[{"date":"2023-08-20","commitResults":[{"hash":"2e32fdf7390be56244313c9884728a5f227c2599","isMergeCommit":false,"messageTitle":"implement skeletal version","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":10}}},{"hash":"a419724898ec42fea351b0d506301e66b7bb2eb6","isMergeCommit":false,"messageTitle":"add welcome and goodbye messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"a0051ea78565ba1ae406a0678cf25352dd0a7eef","isMergeCommit":false,"messageTitle":"add ability to echo and exit","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"2e6addd9f44c1c1ca89b43641a213a3615287178","isMergeCommit":false,"messageTitle":"add and list functions","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":1}}},{"hash":"8ddad67a05fdc80b67367796ad421d2ca70c9985","isMergeCommit":false,"messageTitle":"mark as done and undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":3}}}]},{"date":"2023-08-21","commitResults":[{"hash":"ab6be4690c5214476f8a2980dc74caf2f6df4101","isMergeCommit":false,"messageTitle":"todos, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":6}}},{"hash":"2473e5299ff20fa7b74a9dc00e599ce98475dbf0","isMergeCommit":false,"messageTitle":"add tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"bat":{"insertions":2,"deletions":2}}},{"hash":"f82a941f2ffa857d7ea77d7b26f657712ec18613","isMergeCommit":false,"messageTitle":"exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"6957161ad805292fd35fe80222b78ca6f6c1d507","isMergeCommit":false,"messageTitle":"exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":60}}},{"hash":"ddf135fc50b77d7e375b45b732a5bc7076ec4e1d","isMergeCommit":false,"messageTitle":"implement delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}}]},{"date":"2023-08-31","commitResults":[{"hash":"98e9faa20fdae9c4c45a3d2953239cd13054bd9f","isMergeCommit":false,"messageTitle":"Implement saving feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":1}}},{"hash":"7d81917e341a0c10c567a79a381859e2d5d0ed18","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f5a1e2f69b962f63974fd01879f47437f0ebb4a6","isMergeCommit":false,"messageTitle":"Add datetime support","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":25}}},{"hash":"6991bb6113ee2c53a84e0f01c547fac8418b334b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"37cdadd2986ef6c9aa40f03d94baa1fca9eb600e","isMergeCommit":false,"messageTitle":"refactor based on OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":425,"deletions":309}}},{"hash":"408f44db1ac47bfa5c7df99dc89f597208d1a95b","isMergeCommit":false,"messageTitle":"organise into package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"c76785be4092b4b271acf448682acdc2a86179d9","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"4e7d58e83d4474c596eed3e0e0205b28d256ce48","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":0}}},{"hash":"f447770f690491a66e47be85ae95f21128995ab2","isMergeCommit":false,"messageTitle":"Add JAR support","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"lshaoqin":{"java":541,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":2,"txt":9}},"authorContributionVariance":{"lshaoqin":58260.758},"authorDisplayNameMap":{"lshaoqin":"CS2103T-T10-1 LU S..OQIN"}} +{"authorDailyContributionsMap":{"lshaoqin":[{"date":"2023-08-20","commitResults":[{"hash":"2e32fdf7390be56244313c9884728a5f227c2599","isMergeCommit":false,"messageTitle":"implement skeletal version","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":10}}},{"hash":"a419724898ec42fea351b0d506301e66b7bb2eb6","isMergeCommit":false,"messageTitle":"add welcome and goodbye messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"a0051ea78565ba1ae406a0678cf25352dd0a7eef","isMergeCommit":false,"messageTitle":"add ability to echo and exit","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"2e6addd9f44c1c1ca89b43641a213a3615287178","isMergeCommit":false,"messageTitle":"add and list functions","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":1}}},{"hash":"8ddad67a05fdc80b67367796ad421d2ca70c9985","isMergeCommit":false,"messageTitle":"mark as done and undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":3}}}]},{"date":"2023-08-21","commitResults":[{"hash":"ab6be4690c5214476f8a2980dc74caf2f6df4101","isMergeCommit":false,"messageTitle":"todos, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":6}}},{"hash":"2473e5299ff20fa7b74a9dc00e599ce98475dbf0","isMergeCommit":false,"messageTitle":"add tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"bat":{"insertions":2,"deletions":2}}},{"hash":"f82a941f2ffa857d7ea77d7b26f657712ec18613","isMergeCommit":false,"messageTitle":"exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"6957161ad805292fd35fe80222b78ca6f6c1d507","isMergeCommit":false,"messageTitle":"exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":60}}},{"hash":"ddf135fc50b77d7e375b45b732a5bc7076ec4e1d","isMergeCommit":false,"messageTitle":"implement delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}}]},{"date":"2023-08-31","commitResults":[{"hash":"98e9faa20fdae9c4c45a3d2953239cd13054bd9f","isMergeCommit":false,"messageTitle":"Implement saving feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":1}}},{"hash":"7d81917e341a0c10c567a79a381859e2d5d0ed18","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f5a1e2f69b962f63974fd01879f47437f0ebb4a6","isMergeCommit":false,"messageTitle":"Add datetime support","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":25}}},{"hash":"6991bb6113ee2c53a84e0f01c547fac8418b334b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"37cdadd2986ef6c9aa40f03d94baa1fca9eb600e","isMergeCommit":false,"messageTitle":"refactor based on OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":425,"deletions":309}}},{"hash":"408f44db1ac47bfa5c7df99dc89f597208d1a95b","isMergeCommit":false,"messageTitle":"organise into package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"c76785be4092b4b271acf448682acdc2a86179d9","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"4e7d58e83d4474c596eed3e0e0205b28d256ce48","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":0}}},{"hash":"f447770f690491a66e47be85ae95f21128995ab2","isMergeCommit":false,"messageTitle":"Add JAR support","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"767841f60710314392ec258eba2e72b316dba4b8","isMergeCommit":false,"messageTitle":"Add Javadoc comments","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":3}}},{"hash":"aa15ffc511389ff82346d0e22589456fa6646a92","isMergeCommit":false,"messageTitle":"Style code based on coding standards","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}},{"hash":"b514e9442df4ad72582e64a4dfa72f7486d99460","isMergeCommit":false,"messageTitle":"Implement find function","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":1}}},{"hash":"82cfbddf56864aab333d0ee6559d5f72874cca18","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0bef53cd5c72fd8b6cd249ac32d190adb9f57c45","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"lshaoqin":{"java":667,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":2,"txt":9}},"authorContributionVariance":{"lshaoqin":59053.184},"authorDisplayNameMap":{"lshaoqin":"CS2103T-T10-1 LU S..OQIN"}} diff --git a/lululwtv_ip_master/authorship.json b/lululwtv_ip_master/authorship.json index 0ec925e3..19deee9b 100644 --- a/lululwtv_ip_master/authorship.json +++ b/lululwtv_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Corubi.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"import Tasks.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"import Parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import Storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"public class Corubi {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" private static Ui userUi;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" private static Storage store;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" private static TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" private static Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" private static final String DIRECTORY \u003d \"./src/main/java/OUTPUT.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" * Constructs a Corubi instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" * @param dir The directory path for storing data.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" private Corubi(String dir) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" this.userUi \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" this.store \u003d new Storage(dir, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" * Starts the main execution of the Corubi chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" * @throws IOException If an I/O operation is interrupted.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" private static void run() throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" userUi.takeCommands(store, tasks, parser);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" * The entry point of the Corubi application.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" * @param args Command-line arguments (not used in this code).","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" * @throws IOException If an I/O operation is interrupted.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" new Corubi(DIRECTORY).run();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"lululwtv":45}},{"path":"src/main/java/CustomExceptions/WrongCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package CustomExceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"public class WrongCommandException extends Exception {","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":" public WrongCommandException(String command) {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":" super(command + \" is not a proper command! \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":" \"\\nPlease only use these following commands:\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":" \"todo\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":" \"deadline\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" \"event\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" \"mark\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" \"unmark\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" \"bye\");","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"lululwtv":13}},{"path":"src/main/java/OUTPUT.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"[E] [] fuck owens mum (from : Oct 2 3409 to: Oct 23 4390)","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lululwtv":1}},{"path":"src/main/java/Parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns a number from the given input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" * @param input The input string to search for a number.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" * @return The extracted number, or 0 if no number is found.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" public int findNum(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" // Split the input by spaces","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" int number \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" // Iterate through the parts to find the number","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" for (String num : splitInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" number \u003d Integer.parseInt(num);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" // Not a number, continue searching","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" return number;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task name from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" * @param taskinfo The task information from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" * @param prefix The prefix used to identify the task type.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task name.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" public String taskNameFromTextFile(String taskinfo, String prefix) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" return taskinfo.split(prefix)[0].split(\"] \")[2].split(\" \\\\(\")[0] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task name from the input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" * @param input The user input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task name.","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":" public String taskName(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":" // Extract the task name based on the command type","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":" String name;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lululwtv"},"content":" if (input.contains(\"todo \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lululwtv"},"content":" name \u003d input.split(\"todo \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"deadline \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lululwtv"},"content":" String temp \u003d input.split(\"deadline \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lululwtv"},"content":" String[] splitString \u003d temp.split(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lululwtv"},"content":" name \u003d splitString[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"event \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lululwtv"},"content":" String temp \u003d input.split(\"event \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lululwtv"},"content":" String taskName \u003d temp.split(\"/from\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lululwtv"},"content":" name \u003d taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lululwtv"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lululwtv"},"content":" name \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lululwtv"},"content":" return name;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task deadline from the input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lululwtv"},"content":" * @param input The user input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lululwtv"},"content":" public String taskBy(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lululwtv"},"content":" String temp \u003d input.split(\"deadline \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"lululwtv"},"content":" String[] splitString \u003d temp.split(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"lululwtv"},"content":" return splitString[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task end time from the input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"lululwtv"},"content":" * @param input The user input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task end time.","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"lululwtv"},"content":" public String taskTo(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"lululwtv"},"content":" String temp \u003d input.split(\"event \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"lululwtv"},"content":" return temp.split(\"/to\")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task start time from the input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"lululwtv"},"content":" * @param input The user input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task start time.","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"lululwtv"},"content":" public String taskFrom(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"lululwtv"},"content":" String temp \u003d input.split(\"event \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"lululwtv"},"content":" String from \u003d temp.split(\" /to \")[0].split(\"/from \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"lululwtv"},"content":" return from;","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task start time from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"lululwtv"},"content":" * @param taskinfo The task information from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task start time formatted as yyyy-MM-dd.","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"lululwtv"},"content":" public String taskFromFromTextFile(String taskinfo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"lululwtv"},"content":" // Extract the \"from\" value","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"lululwtv"},"content":" String fromPrefix \u003d \"from : \";","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"lululwtv"},"content":" int fromIndex \u003d taskinfo.indexOf(fromPrefix) + fromPrefix.length();","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"lululwtv"},"content":" int toIndex \u003d taskinfo.indexOf(\" to:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"lululwtv"},"content":" String taskFromInput \u003d taskinfo.substring(fromIndex, toIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"lululwtv"},"content":" // Parse the From input string to a LocalDate object","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"lululwtv"},"content":" LocalDate from \u003d LocalDate.parse(taskFromInput, DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"lululwtv"},"content":" // Format the LocalDate object to the desired output format","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"lululwtv"},"content":" return from.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task end time from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"lululwtv"},"content":" * @param taskinfo The task information from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task end time formatted as yyyy-MM-dd.","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"lululwtv"},"content":" public String taskToFromTextFile(String taskinfo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"lululwtv"},"content":" // Extract the \"to\" value","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"lululwtv"},"content":" String toPrefix \u003d \"to: \";","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"lululwtv"},"content":" int toValueIndex \u003d taskinfo.indexOf(toPrefix) + toPrefix.length();","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"lululwtv"},"content":" String taskToInput \u003d taskinfo.substring(toValueIndex, toValueIndex + \"MMM d yyyy\".length() + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"lululwtv"},"content":" String fromPrefix \u003d \"from : \";","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"lululwtv"},"content":" int fromIndex \u003d taskinfo.indexOf(fromPrefix) + fromPrefix.length();","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"lululwtv"},"content":" int toIndex \u003d taskinfo.indexOf(\" to:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"lululwtv"},"content":" String taskFromInput \u003d taskinfo.substring(fromIndex, toIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"lululwtv"},"content":" // Parse the To input string to a LocalDate object","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"lululwtv"},"content":" LocalDate to \u003d LocalDate.parse(taskFromInput, DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"lululwtv"},"content":" // Format the LocalDate object to the desired output format","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"lululwtv"},"content":" return to.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task deadline from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"lululwtv"},"content":" * @param taskinfo The task information from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task deadline formatted as yyyy-MM-dd.","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"lululwtv"},"content":" public String taskByFromTextFile(String taskinfo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"lululwtv"},"content":" String byPrefix \u003d \"by : \";","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"lululwtv"},"content":" int byIndex \u003d taskinfo.indexOf(byPrefix) + byPrefix.length();","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"lululwtv"},"content":" String taskByInput \u003d taskinfo.substring(byIndex, byIndex + \"MMM d yyyy\".length() + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"lululwtv"},"content":" // Parse the By string to a LocalDate object","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"lululwtv"},"content":" LocalDate date \u003d LocalDate.parse(taskByInput, DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"lululwtv"},"content":" // Format the LocalDate object to the desired output format","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"lululwtv"},"content":" return date.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lululwtv":159}},{"path":"src/main/java/Storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"import Tasks.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"import Parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":"import Ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" private FileWriter pw;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" private String currdir;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" Ui userUi \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" * Constructor for the Storage class.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" * @param dir The directory where the data is stored.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" * @param tasks The TaskList instance for managing tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" public Storage(String dir, TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" this.currdir \u003d dir;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" * Loads tasks from the OUTPUT.txt file and adds them to the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" * @param parser The Parser instance for parsing task details.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" * @throws IOException If an I/O operation is interrupted.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" public void load(Parser parser) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" try (Scanner fileScanner \u003d new Scanner(new File(\"./src/main/java/OUTPUT.txt\"))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Your leftover tasks are:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" i++;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" String taskInfo \u003d fileScanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" boolean isDone \u003d taskInfo.contains(\"[X] \");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" if (taskInfo.contains(\"[T] \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" String taskName \u003d parser.taskNameFromTextFile(taskInfo, \"[T] \");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" Task newTask \u003d new ToDos(taskName, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":" System.out.println(i + \". \" + newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":" } else if (taskInfo.contains(\"[E]\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":" String taskName \u003d parser.taskNameFromTextFile(taskInfo, \"[E] \");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lululwtv"},"content":" String taskFrom \u003d parser.taskFromFromTextFile(taskInfo);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lululwtv"},"content":" String taskTo \u003d parser.taskToFromTextFile(taskInfo);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lululwtv"},"content":" Task newTask \u003d new Events(taskName, taskFrom, taskTo, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lululwtv"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lululwtv"},"content":" System.out.println(i + \". \" + newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lululwtv"},"content":" } else if (taskInfo.contains(\"[D]\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lululwtv"},"content":" String taskName \u003d parser.taskNameFromTextFile(taskInfo,\"[D] \");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lululwtv"},"content":" String taskBy \u003d parser.taskByFromTextFile(taskInfo);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lululwtv"},"content":" Task newTask \u003d new Deadlines(taskName, taskBy, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lululwtv"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lululwtv"},"content":" System.out.println(i + \". \" + newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lululwtv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"\\nERROR: OUTPUT.txt file is not found in directory ./src/main/java/OUTPUT.txt!\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lululwtv"},"content":" \"Creating OUTPUT.txt in the given directory now.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lululwtv"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lululwtv"},"content":" // Instance of PrintWriter to write new outputs to the file","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lululwtv"},"content":" pw \u003d new FileWriter(\"./src/main/java/OUTPUT.txt\", true);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lululwtv"},"content":" userUi.start();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"lululwtv"},"content":" * Writes a task to the OUTPUT.txt file.","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lululwtv"},"content":" * @param task The task to be written.","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lululwtv"},"content":" * @throws IOException If an I/O operation is interrupted.","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"lululwtv"},"content":" public void write(Task task) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"lululwtv"},"content":" pw.write(task.toString() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lululwtv"},"content":" pw.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"lululwtv"},"content":" * Overwrites the OUTPUT.txt file with updated task information.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"lululwtv"},"content":" * @throws IOException If an I/O operation is interrupted.","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"lululwtv"},"content":" public void overwrite() throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"lululwtv"},"content":" FileWriter nw \u003d new FileWriter(currdir);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"lululwtv"},"content":" pw \u003d nw;","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"lululwtv"},"content":" pw.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"lululwtv"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"lululwtv"},"content":" write(tasks.retrieve(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"lululwtv"},"content":" pw.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lululwtv":98}},{"path":"src/main/java/Tasks/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" private LocalDate by;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" public Deadlines(String name, String by, boolean isDone) throws DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" this.by \u003d LocalDate.parse(by.trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" Method name: toString","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" Description: Prints the task name and whether it is done","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" return \"[D] \" + super.toString() + \"(by : \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":"Method name: markDone","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":"Description: Checks the specified task","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" super.markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Oki, I\u0027ve marked this task as done: \\n\" + this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" Method name: unmarkDone","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" Description: Unchecks the specified task","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" super.unmarkDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Damn bro...unmarked this task :( : \\n\" + this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lululwtv":43}},{"path":"src/main/java/Tasks/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"public class Events extends Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" private LocalDate from;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" private LocalDate to;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" * Constructor for the Events class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" * @param name The name of the event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" * @param from The starting date of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" * @param to The ending date of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" * @param isDone Whether the event task is marked as done or not.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" * @throws DateTimeParseException If there\u0027s an issue parsing the date strings.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" public Events(String name, String from, String to, boolean isDone) throws DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" this.from \u003d LocalDate.parse(from.trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" this.to \u003d LocalDate.parse(to.trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" * Returns a string representation of the event task, including its name, status, and date range.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" * @return A formatted string representing the event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" return \"[E] \" + super.toString() + \"(from : \" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \" to: \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" * Marks the event task as done and provides feedback.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" public void markDone() {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" super.markDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Oki, I\u0027ve marked this event task as done: \\n\" + this.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":" * Unmarks the event task as done and provides feedback.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"lululwtv"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"lululwtv"},"content":" super.unmarkDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Damn bro...unmarked this event task :( : \\n\" + this.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"lululwtv":53}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"public class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":" private final String NAME;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":" final String DONE \u003d \"[X] \";","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":" final String NOTDONE \u003d \"[] \";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" * Constructor for the Task class.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" * @param name The name of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" * @param isDone Whether the task is marked as done or not.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" Task(String name, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" this.NAME \u003d name;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" * Checks if the task is marked as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" * @return True if the task is done, false otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" public boolean checkDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" return isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" * Returns a string representation of the task, including its name and status.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" * @return A formatted string representing the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" return this.checkDone()","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" ? DONE + this.NAME","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" : NOTDONE + this.NAME;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":" * Unmarks the task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"lululwtv"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"lululwtv"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lululwtv":52}},{"path":"src/main/java/Tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":" private ArrayList\u003cTask\u003e enteredText \u003d new ArrayList();","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" enteredText.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" * @return The number of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" return enteredText.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" * Removes a task from the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" * @param task The task to be removed.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" public void remove(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" enteredText.remove(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" * Prints the list of tasks with their corresponding indices.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" public void printList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" for (int i \u003d 0; i \u003c enteredText.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" System.out.printf(\"%d. %s \\n\", i + 1, enteredText.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" * Retrieves a task from the task list by its index.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lululwtv"},"content":" public Task retrieve(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lululwtv"},"content":" return enteredText.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lululwtv":52}},{"path":"src/main/java/Tasks/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"public class ToDos extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":" public ToDos(String name, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" Method name: toString","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" Description: Prints the task name and whether it is done","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" Method name: markDone","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" Description: Checks the specified task","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" super.markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Oki, I\u0027ve marked this task as done: \\n\" + this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" Method name: unmarkDone","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" Description: Unchecks the specified task","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" super.unmarkDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Damn bro...unmarked this task :( : \\n\" + this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lululwtv":36}},{"path":"src/main/java/Ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"import Tasks.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import Parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"import CustomExceptions.WrongCommandException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"import java.util.Collections;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":"import Storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" // Setting of final parameters","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" final String name \u003d \"Corubi\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" final String divider \u003d \"---------------------------------------------------\";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" // Array of Tasks that user has entered","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" String input;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" * Displays the bot\u0027s greeting message.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" public void start() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" // Initiate the bot greeting","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Hello! I am \" + name + \". \\nWhat can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" * Handles user input and performs corresponding actions.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" * @param store The Storage instance for managing data persistence.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" * @param tasks The TaskList instance for managing tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" * @param parser The Parser instance for parsing user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" * @throws IOException If an I/O operation is interrupted.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" public void takeCommands(Storage store, TaskList tasks, Parser parser) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" store.load(parser);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" // List of accepted commands","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" ArrayList\u003cString\u003e commands \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" String[] commandList \u003d {\"todo\", \"deadline\", \"event\", \"mark\", \"unmark\", \"bye\"};","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":" Collections.addAll(commands, commandList);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":" // Exit the chatbot if the user says \"bye\"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lululwtv"},"content":" while (!input.equals(\"bye\") \u0026\u0026 !input.equals(\"Bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lululwtv"},"content":" // If input is \"list\" command, show the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lululwtv"},"content":" if (input.equals(\"list\") || input.equals(\"List\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lululwtv"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lululwtv"},"content":" tasks.printList();","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"unmark\") || input.contains(\"Unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lululwtv"},"content":" // If command is unmark, then unmark the item","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lululwtv"},"content":" int number \u003d parser.findNum(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lululwtv"},"content":" // Handle the exception if number provided is beyond the size of list","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lululwtv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lululwtv"},"content":" tasks.retrieve(number - 1).unmarkDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lululwtv"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lululwtv"},"content":" System.out.println(number + \" is too high! List size is only \" + tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lululwtv"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lululwtv"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lululwtv"},"content":" store.overwrite();","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"mark\") || input.contains(\"Mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lululwtv"},"content":" // If the input contains the word mark, mark the item number as done","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"lululwtv"},"content":" int number \u003d parser.findNum(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"lululwtv"},"content":" // Handle the exception if number provided is beyond the size of list","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"lululwtv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lululwtv"},"content":" tasks.retrieve(number - 1).markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lululwtv"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lululwtv"},"content":" System.out.println(number + \" is too high! List size is only \" + tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"lululwtv"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"lululwtv"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lululwtv"},"content":" store.overwrite();","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"lululwtv"},"content":" // The delete command","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"lululwtv"},"content":" int number \u003d parser.findNum(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"lululwtv"},"content":" // Handle the exception if number provided is beyond the size of list","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"lululwtv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"lululwtv"},"content":" Task index \u003d tasks.retrieve(number - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"lululwtv"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"lululwtv"},"content":" System.out.printf(\"I have deleted the following task:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"lululwtv"},"content":" \"%s\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"lululwtv"},"content":" \"Your list has %d items left\\n\\n\", index.toString(), tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"lululwtv"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"lululwtv"},"content":" System.out.println(number + \" is too high! List size is only \" + tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"lululwtv"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"lululwtv"},"content":" store.overwrite();","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"lululwtv"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"lululwtv"},"content":" // Add the input to the list","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"lululwtv"},"content":" if (input.contains(\"todo \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"lululwtv"},"content":" Task newTask \u003d new ToDos(parser.taskName(input), false);","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"lululwtv"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"lululwtv"},"content":" store.write(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Okay! I have added the following task\\n\" + newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"deadline \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"lululwtv"},"content":" Task newTask \u003d new Deadlines(parser.taskName(input), parser.taskBy(input), false);","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"lululwtv"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Okay! I have added the following task\\n\" + newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"lululwtv"},"content":" store.write(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"event \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"lululwtv"},"content":" Task newTask \u003d new Events(parser.taskName(input), parser.taskFrom(input), parser.taskTo(input), false);","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"lululwtv"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Okay! I have added the following task\\n\" + newTask.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"lululwtv"},"content":" store.write(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"lululwtv"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"lululwtv"},"content":" // Check if input command is in the list of accepted commands","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"lululwtv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"lululwtv"},"content":" if (!commands.contains(input.split(\" \")[0])) {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"lululwtv"},"content":" throw new WrongCommandException(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"lululwtv"},"content":" } catch (WrongCommandException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"lululwtv"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"lululwtv"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"lululwtv"},"content":" System.out.println(input + \" \" + input + \"...please come back soon :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lululwtv":135}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"todo Buy groceries","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"event Birthday party /from 2023-08-25 /to 2023-08-26","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"deadline Submit report /by 2023-09-01","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lululwtv":6}},{"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":"lululwtv"},"content":"java -classpath ..\\bin Corubi \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":"pause","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lululwtv":3,"-":20}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" mainClass.set(\"Corubi\")","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" archiveFileName \u003d \"Corubi.jar\"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"lululwtv":2,"-":30}},{"path":"src/main/java/OUTPUT.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"[T] [] 123","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"[T] [] 123","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"[T] [] 123","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"lululwtv":3}},{"path":"src/main/java/customexceptions/WrongCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package customexceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"public class WrongCommandException extends Exception {","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":" public WrongCommandException(String command) {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":" super(command + \" is not a proper command! \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":" \"\\nPlease only use these following commands:\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":" \"todo\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":" \"deadline\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" \"event\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" \"mark\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" \"unmark\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" \"bye\");","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"lululwtv":13}},{"path":"src/main/java/main/Corubi.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package main;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"import tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":"public class Corubi {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" private static Ui userUi;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" private static Storage store;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" private static TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" private static Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" private static final String DIRECTORY \u003d \"./src/main/java/OUTPUT.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" * Constructs a Corubi instance.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" * @param dir The directory path for storing data.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" private Corubi(String dir) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" userUi \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" store \u003d new Storage(dir, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" * Starts the main execution of the Corubi chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" * @throws IOException If an I/O operation is interrupted.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" static void run() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" userUi.takeCommands(store, tasks, parser);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" * The entry point of the Corubi application.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" * @param args Command-line arguments (not used in this code).","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" * @throws IOException If an I/O operation is interrupted.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" new Corubi(DIRECTORY);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":" run();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"lululwtv":47}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns a number from the given input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" * @param input The input string to search for a number.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" * @return The extracted number, or 0 if no number is found.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" public int findNum(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" // Split the input by spaces","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" int number \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" // Iterate through the parts to find the number","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" for (String num : splitInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" number \u003d Integer.parseInt(num);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" // Not a number, continue searching","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" return number;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task name from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" * @param taskinfo The task information from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" * @param prefix The prefix used to identify the task type.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task name.","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" public String taskNameFromTextFile(String taskinfo, String prefix) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" return taskinfo.split(prefix)[0].split(\"] \")[2].split(\" \\\\(\")[0] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" * Gets the word that the find command is trying to find","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" * @param input The corresponding word to search for","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" * @return The word to search for","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":" public String find(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":" return input.split(\"find \")[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task name from the input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lululwtv"},"content":" * @param input The user input strings.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task name.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lululwtv"},"content":" public String taskName(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lululwtv"},"content":" // Extract the task name based on the command type","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lululwtv"},"content":" String name;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lululwtv"},"content":" if (input.contains(\"todo \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lululwtv"},"content":" name \u003d input.split(\"todo \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"deadline \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lululwtv"},"content":" String temp \u003d input.split(\"deadline \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lululwtv"},"content":" String[] splitString \u003d temp.split(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lululwtv"},"content":" name \u003d splitString[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"event \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lululwtv"},"content":" String temp \u003d input.split(\"event \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lululwtv"},"content":" String taskName \u003d temp.split(\"/from\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lululwtv"},"content":" name \u003d taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lululwtv"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lululwtv"},"content":" name \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"lululwtv"},"content":" return name;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task deadline from the input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lululwtv"},"content":" * @param input The user input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lululwtv"},"content":" public String taskBy(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"lululwtv"},"content":" String temp \u003d input.split(\"deadline \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"lululwtv"},"content":" String[] splitString \u003d temp.split(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"lululwtv"},"content":" return splitString[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task end time from the input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"lululwtv"},"content":" * @param input The user input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task end time.","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"lululwtv"},"content":" public String taskTo(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"lululwtv"},"content":" String temp \u003d input.split(\"event \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"lululwtv"},"content":" return temp.split(\"/to\")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task start time from the input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"lululwtv"},"content":" * @param input The user input string.","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task start time.","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"lululwtv"},"content":" public String taskFrom(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"lululwtv"},"content":" String temp \u003d input.split(\"event \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"lululwtv"},"content":" String from \u003d temp.split(\" /to \")[0].split(\"/from \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"lululwtv"},"content":" return from;","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task start time from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"lululwtv"},"content":" * @param taskinfo The task information from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task start time formatted as yyyy-MM-dd.","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"lululwtv"},"content":" public String taskFromFromTextFile(String taskinfo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"lululwtv"},"content":" // Extract the \"from\" value","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"lululwtv"},"content":" String fromPrefix \u003d \"from : \";","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"lululwtv"},"content":" int fromIndex \u003d taskinfo.indexOf(fromPrefix) + fromPrefix.length();","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"lululwtv"},"content":" int toIndex \u003d taskinfo.indexOf(\" to:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"lululwtv"},"content":" String taskFromInput \u003d taskinfo.substring(fromIndex, toIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"lululwtv"},"content":" // Parse the From input string to a LocalDate object","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"lululwtv"},"content":" LocalDate from \u003d LocalDate.parse(taskFromInput, DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"lululwtv"},"content":" // Format the LocalDate object to the desired output format","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"lululwtv"},"content":" return from.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task end time from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"lululwtv"},"content":" * @param taskinfo The task information from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task end time formatted as yyyy-MM-dd.","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"lululwtv"},"content":" public String taskToFromTextFile(String taskinfo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"lululwtv"},"content":" // Extract the \"to\" value","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"lululwtv"},"content":" String toPrefix \u003d \"to: \";","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"lululwtv"},"content":" int toValueIndex \u003d taskinfo.indexOf(toPrefix) + toPrefix.length();","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"lululwtv"},"content":" String taskToInput \u003d taskinfo.substring(toValueIndex, toValueIndex + \"MMM d yyyy\".length() + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"lululwtv"},"content":" String fromPrefix \u003d \"from : \";","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"lululwtv"},"content":" int fromIndex \u003d taskinfo.indexOf(fromPrefix) + fromPrefix.length();","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"lululwtv"},"content":" int toIndex \u003d taskinfo.indexOf(\" to:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"lululwtv"},"content":" String taskFromInput \u003d taskinfo.substring(fromIndex, toIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"lululwtv"},"content":" // Parse the To input string to a LocalDate object","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"lululwtv"},"content":" LocalDate to \u003d LocalDate.parse(taskFromInput, DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"lululwtv"},"content":" // Format the LocalDate object to the desired output format","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"lululwtv"},"content":" return to.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"lululwtv"},"content":" * Extracts and returns the task deadline from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"lululwtv"},"content":" * @param taskinfo The task information from the text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"lululwtv"},"content":" * @return The extracted task deadline formatted as yyyy-MM-dd.","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"lululwtv"},"content":" public String taskByFromTextFile(String taskinfo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"lululwtv"},"content":" String byPrefix \u003d \"by : \";","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"lululwtv"},"content":" int byIndex \u003d taskinfo.indexOf(byPrefix) + byPrefix.length();","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"lululwtv"},"content":" String taskByInput \u003d taskinfo.substring(byIndex, byIndex + \"MMM d yyyy\".length() + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"lululwtv"},"content":" // Parse the By string to a LocalDate object","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"lululwtv"},"content":" LocalDate date \u003d LocalDate.parse(taskByInput, DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"lululwtv"},"content":" // Format the LocalDate object to the desired output format","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"lululwtv"},"content":" return date.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lululwtv":170}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"import tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"import parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" private FileWriter pw;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" private String currdir;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" Ui userUi \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" * Constructor for the Storage class.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" * @param dir The directory where the data is stored.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" * @param tasks The TaskList instance for managing tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" public Storage(String dir, TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" this.currdir \u003d dir;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" * Loads tasks from the OUTPUT.txt file and adds them to the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" * @param parser The Parser instance for parsing task details.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" * @throws IOException If an I/O operation is interrupted.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" public void load(Parser parser) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" try (Scanner fileScanner \u003d new Scanner(new File(\"./src/main/java/OUTPUT.txt\"))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Your leftover tasks are:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" i++;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" String taskInfo \u003d fileScanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" boolean isDone \u003d taskInfo.contains(\"[X] \");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" if (taskInfo.contains(\"[T] \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" String taskName \u003d parser.taskNameFromTextFile(taskInfo, \"[T] \");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" Task newTask \u003d new ToDos(taskName, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":" System.out.println(i + \". \" + newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":" } else if (taskInfo.contains(\"[E]\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":" String taskName \u003d parser.taskNameFromTextFile(taskInfo, \"[E] \");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lululwtv"},"content":" String taskFrom \u003d parser.taskFromFromTextFile(taskInfo);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lululwtv"},"content":" String taskTo \u003d parser.taskToFromTextFile(taskInfo);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lululwtv"},"content":" Task newTask \u003d new Events(taskName, taskFrom, taskTo, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lululwtv"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lululwtv"},"content":" System.out.println(i + \". \" + newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lululwtv"},"content":" } else if (taskInfo.contains(\"[D]\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lululwtv"},"content":" String taskName \u003d parser.taskNameFromTextFile(taskInfo,\"[D] \");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lululwtv"},"content":" String taskBy \u003d parser.taskByFromTextFile(taskInfo);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lululwtv"},"content":" Task newTask \u003d new Deadlines(taskName, taskBy, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lululwtv"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lululwtv"},"content":" System.out.println(i + \". \" + newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lululwtv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"\\nERROR: OUTPUT.txt file is not found in directory ./src/main/java/OUTPUT.txt!\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lululwtv"},"content":" \"Creating OUTPUT.txt in the given directory now.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lululwtv"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lululwtv"},"content":" // Instance of PrintWriter to write new outputs to the file","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lululwtv"},"content":" pw \u003d new FileWriter(\"./src/main/java/OUTPUT.txt\", true);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lululwtv"},"content":" userUi.start();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"lululwtv"},"content":" * Writes a task to the OUTPUT.txt file.","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lululwtv"},"content":" * @param task The task to be written.","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lululwtv"},"content":" * @throws IOException If an I/O operation is interrupted.","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"lululwtv"},"content":" public void write(Task task) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"lululwtv"},"content":" pw.write(task.toString() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lululwtv"},"content":" pw.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"lululwtv"},"content":" * Overwrites the OUTPUT.txt file with updated task information.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"lululwtv"},"content":" * @throws IOException If an I/O operation is interrupted.","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"lululwtv"},"content":" public void overwrite() throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"lululwtv"},"content":" FileWriter nw \u003d new FileWriter(currdir);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"lululwtv"},"content":" pw \u003d nw;","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"lululwtv"},"content":" pw.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"lululwtv"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"lululwtv"},"content":" write(tasks.retrieve(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"lululwtv"},"content":" pw.flush();","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lululwtv":98}},{"path":"src/main/java/tasks/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" private LocalDate by;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" public Deadlines(String name, String by, boolean isDone) throws DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" this.by \u003d LocalDate.parse(by.trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" Method name: toString","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" Description: Prints the task name and whether it is done","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" return \"[D] \" + super.toString() + \"(by : \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":"Method name: markDone","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":"Description: Checks the specified task","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" super.markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Oki, I\u0027ve marked this task as done: \\n\" + this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" Method name: unmarkDone","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" Description: Unchecks the specified task","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" super.unmarkDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Damn bro...unmarked this task :( : \\n\" + this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lululwtv":43}},{"path":"src/main/java/tasks/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"public class Events extends Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" private LocalDate from;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" private LocalDate to;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" * Constructor for the Events class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" * @param name The name of the event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" * @param from The starting date of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" * @param to The ending date of the event.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" * @param isDone Whether the event task is marked as done or not.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" * @throws DateTimeParseException If there\u0027s an issue parsing the date strings.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" public Events(String name, String from, String to, boolean isDone) throws DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" this.from \u003d LocalDate.parse(from.trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" this.to \u003d LocalDate.parse(to.trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" * Returns a string representation of the event task, including its name, status, and date range.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" * @return A formatted string representing the event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" return \"[E] \" + super.toString() + \"(from : \" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" + \" to: \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" * Marks the event task as done and provides feedback.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" public void markDone() {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" super.markDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Oki, I\u0027ve marked this event task as done: \\n\" + this.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":" * Unmarks the event task as done and provides feedback.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"lululwtv"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"lululwtv"},"content":" super.unmarkDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Damn bro...unmarked this event task :( : \\n\" + this.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"lululwtv":54}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"public class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":" private final String NAME;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":" final String DONE \u003d \"[X] \";","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":" final String NOTDONE \u003d \"[] \";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" * Constructor for the Task class.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" * @param name The name of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" * @param isDone Whether the task is marked as done or not.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" Task(String name, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" this.NAME \u003d name;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" * Checks if the task is marked as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" * @return True if the task is done, false otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" public boolean checkDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" return isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" * Returns a string representation of the task, including its name and status.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" * @return A formatted string representing the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" return this.checkDone()","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" ? DONE + this.NAME","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" : NOTDONE + this.NAME;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":" * Unmarks the task as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"lululwtv"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"lululwtv"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"lululwtv"},"content":" * Returns the name of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"lululwtv"},"content":" * @return name of task","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"lululwtv"},"content":" public String getName() {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"lululwtv"},"content":" return this.NAME;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lululwtv":61}},{"path":"src/main/java/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":" private ArrayList\u003cTask\u003e enteredTexts \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" enteredTexts.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" * @return The number of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" return enteredTexts.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" * Removes a task from the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" * @param task The task to be removed.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" public void remove(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" enteredTexts.remove(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" * Prints the list of tasks with their corresponding indices.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" public void printList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" for (int i \u003d 0; i \u003c enteredTexts.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" System.out.printf(\"%d. %s \\n\", i + 1, enteredTexts.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" * Retrieves a task from the task list by its index.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lululwtv"},"content":" public Task retrieve(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lululwtv"},"content":" return enteredTexts.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"lululwtv"},"content":" * Finds matching tasks and prints them","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"lululwtv"},"content":" * @param find The corresponding items in the list to find.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"lululwtv"},"content":" public void find(String find) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"lululwtv"},"content":" int matchCounter \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"lululwtv"},"content":" for (Task task : enteredTexts) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"lululwtv"},"content":" if (task.getName().contains(find)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"lululwtv"},"content":" System.out.println(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"lululwtv"},"content":" if (matchCounter \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"No matching tasks!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lululwtv":69}},{"path":"src/main/java/tasks/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"public class ToDos extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":" public ToDos(String name, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" Method name: toString","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":" Description: Prints the task name and whether it is done","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" Method name: markDone","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" Description: Checks the specified task","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" super.markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Oki, I\u0027ve marked this task as done: \\n\" + this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" Method name: unmarkDone","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" Description: Unchecks the specified task","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" public void unmarkDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" super.unmarkDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Damn bro...unmarked this task :( : \\n\" + this.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lululwtv":36}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"import tasks.Deadlines;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"import tasks.Events;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"import tasks.ToDos;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":"import parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":"import customexceptions.WrongCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":"import java.util.Collections;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" // Setting of final parameters","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" final String NAME \u003d \"Corubi\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" final String DIVIDER \u003d \"---------------------------------------------------\";","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" // Array of Tasks that user has entered","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" String input;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" * Displays the bot\u0027s greeting message.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" public void start() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" // Initiate the bot greeting","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Hello! I am \" + NAME + \". \\nWhat can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" * Handles user input and performs corresponding actions.","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" * @param store The Storage instance for managing data persistence.","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" * @param tasks The TaskList instance for managing tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":" * @param parser The Parser instance for parsing user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"lululwtv"},"content":" * @throws IOException If an I/O operation is interrupted.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"lululwtv"},"content":" public void takeCommands(Storage store, TaskList tasks, Parser parser) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"lululwtv"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"lululwtv"},"content":" store.load(parser);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"lululwtv"},"content":" // List of accepted commands","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"lululwtv"},"content":" ArrayList\u003cString\u003e commands \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"lululwtv"},"content":" String[] commandList \u003d {\"todo\", \"deadline\", \"event\", \"mark\", \"unmark\", \"bye\"};","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"lululwtv"},"content":" Collections.addAll(commands, commandList);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"lululwtv"},"content":" // Exit the chatbot if the user says \"bye\"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"lululwtv"},"content":" while (!input.equals(\"bye\") \u0026\u0026 !input.equals(\"Bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"lululwtv"},"content":" // If input is \"list\" command, show the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"lululwtv"},"content":" if (input.equals(\"list\") || input.equals(\"List\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"lululwtv"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"lululwtv"},"content":" tasks.printList();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"unmark\") || input.contains(\"Unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"lululwtv"},"content":" // If command is unmark, then unmark the item","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"lululwtv"},"content":" int number \u003d parser.findNum(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"lululwtv"},"content":" // Handle the exception if number provided is beyond the size of list","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"lululwtv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"lululwtv"},"content":" tasks.retrieve(number - 1).unmarkDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"lululwtv"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"lululwtv"},"content":" System.out.println(number + \" is too high! List size is only \" + tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"lululwtv"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"lululwtv"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"lululwtv"},"content":" store.overwrite();","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"mark\") || input.contains(\"Mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"lululwtv"},"content":" // If the input contains the word mark, mark the item number as done","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"lululwtv"},"content":" int number \u003d parser.findNum(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"lululwtv"},"content":" // Handle the exception if number provided is beyond the size of list","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"lululwtv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"lululwtv"},"content":" tasks.retrieve(number - 1).markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"lululwtv"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"lululwtv"},"content":" System.out.println(number + \" is too high! List size is only \" + tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"lululwtv"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"lululwtv"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"lululwtv"},"content":" store.overwrite();","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"lululwtv"},"content":" // The delete command","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"lululwtv"},"content":" int number \u003d parser.findNum(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"lululwtv"},"content":" // Handle the exception if number provided is beyond the size of list","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"lululwtv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"lululwtv"},"content":" Task index \u003d tasks.retrieve(number - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"lululwtv"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"lululwtv"},"content":" System.out.printf(\"I have deleted the following task:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"lululwtv"},"content":" \"%s\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"lululwtv"},"content":" \"Your list has %d items left\\n\\n\", index.toString(), tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"lululwtv"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"lululwtv"},"content":" System.out.println(number + \" is too high! List size is only \" + tasks.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"lululwtv"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"lululwtv"},"content":" store.overwrite();","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"find \")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"lululwtv"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Here are the matching items in your list:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"lululwtv"},"content":" tasks.find(parser.find(input));","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"lululwtv"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"lululwtv"},"content":" // Add the input to the list","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"lululwtv"},"content":" if (input.contains(\"todo \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"lululwtv"},"content":" Task newTask \u003d new ToDos(parser.taskName(input), false);","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"lululwtv"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"lululwtv"},"content":" store.write(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Okay! I have added the following task\\n\" + newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"deadline \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"lululwtv"},"content":" Task newTask \u003d new Deadlines(parser.taskName(input), parser.taskBy(input), false);","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"lululwtv"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Okay! I have added the following task\\n\" + newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"lululwtv"},"content":" store.write(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"lululwtv"},"content":" } else if (input.contains(\"event \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"lululwtv"},"content":" Task newTask \u003d new Events(parser.taskName(input), parser.taskFrom(input), parser.taskTo(input),","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"lululwtv"},"content":" false);","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"lululwtv"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"lululwtv"},"content":" System.out.println(\"Okay! I have added the following task\\n\" + newTask.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"lululwtv"},"content":" store.write(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"lululwtv"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"lululwtv"},"content":" // Check if input command is in the list of accepted commands","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"lululwtv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"lululwtv"},"content":" if (!commands.contains(input.split(\" \")[0])) {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"lululwtv"},"content":" throw new WrongCommandException(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"lululwtv"},"content":" } catch (WrongCommandException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"lululwtv"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"lululwtv"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"lululwtv"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"lululwtv"},"content":" System.out.println(input + \" \" + input + \"...please come back soon :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"lululwtv":145}},{"path":"src/test/java/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":" * The ParserTest class contains unit tests for the Parser class.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" * These tests verify the functionality of the Parser class methods.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" * This test method verifies the correctness of the taskName method in the Parser class.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" * It checks whether the taskName method correctly extracts a task name from a given input string","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" * in a specific format.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" * Test Input: \"todo 123\"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" * Expected Output: \"123\"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" public void testList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" // Arrange","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" // Act","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" String taskName \u003d parser.taskName(\"todo 123\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" // Assert","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":" assertEquals(\"123\", taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"lululwtv":31}},{"path":"src/test/java/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"lululwtv"},"content":" * The TaskListTest class contains unit tests for the TaskList class.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"lululwtv"},"content":" * These tests verify the functionality of the TaskList class methods.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"lululwtv"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"lululwtv"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"lululwtv"},"content":" * This test method verifies the correctness of the TaskList class by testing the following actions:","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"lululwtv"},"content":" * 1. Creating a TaskList instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"lululwtv"},"content":" * 2. Adding a completed ToDos task with the name \"123\" to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"lululwtv"},"content":" * 3. Retrieving the task at index 0 from the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"lululwtv"},"content":" * 4. Checking if the added task is marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"lululwtv"},"content":" * 5. Verifying that the retrieved task has the expected string representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"lululwtv"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"lululwtv"},"content":" * Expected Output:","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"lululwtv"},"content":" * - The added task should be marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":" * - The retrieved task\u0027s string representation should be \"[T] [X] 123\".","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"lululwtv"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"lululwtv"},"content":" public void testList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"lululwtv"},"content":" // Arrange","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"lululwtv"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"lululwtv"},"content":" Task task \u003d new ToDos(\"123\", true);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"lululwtv"},"content":" // Act","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"lululwtv"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"lululwtv"},"content":" Task retrieveTask \u003d tasks.retrieve(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"lululwtv"},"content":" // Assert","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"lululwtv"},"content":" assertTrue(task.checkDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"lululwtv"},"content":" assertEquals(\"[T] [X] 123\", retrieveTask.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"lululwtv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"lululwtv"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"lululwtv":38}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lululwtv"},"content":"todo Buy groceries","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"lululwtv"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"lululwtv"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"lululwtv"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"lululwtv"},"content":"event Birthday party /from 2023-08-25 /to 2023-08-26","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"lululwtv"},"content":"deadline Submit report /by 2023-09-01","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lululwtv":6}},{"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":"lululwtv"},"content":"java -classpath ..\\bin Corubi \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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"},{"lineNumber":22,"author":{"gitId":"lululwtv"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"lululwtv"},"content":"pause","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"lululwtv":3,"-":20}}] diff --git a/lululwtv_ip_master/commits.json b/lululwtv_ip_master/commits.json index 26791e92..fbea7734 100644 --- a/lululwtv_ip_master/commits.json +++ b/lululwtv_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"lululwtv":[{"date":"2023-08-24","commitResults":[{"hash":"504858dbc89caaf2ca53ea3d51acf9a422805993","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"a0b602a58f4356126f7ab9779b18607cb748cba1","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"5aeb788d39e13eaaf707c266ee4c534844fb01f1","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"8a0befbad948fff7edc83c26441803ae19ecc01b","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":5}}},{"hash":"e752c2b843807f2155fabd305702dc42583b6d1e","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":4}}},{"hash":"bb536e63c9add0cee51a7955ac33fb00ae6d4af5","isMergeCommit":false,"messageTitle":"Level-4: ToDo, Event, Deadline","messageBody":"","tags":["Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":140,"deletions":17}}},{"hash":"c5fc4fc2c694e25afd464f49e2e8a5618b1ee388","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":2,"deletions":2},"bat":{"insertions":3,"deletions":1}}},{"hash":"3ba33c319ff511210a855de405d1dffb3e976fcf","isMergeCommit":false,"messageTitle":"Level-5: Handle Errors","messageBody":"","tags":["Level-6","Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":8}}},{"hash":"3df400dcdc69786e8fdc3ff011cc02a162844b29","isMergeCommit":false,"messageTitle":"Level-6: Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":10}}}]},{"date":"2023-08-28","commitResults":[{"hash":"4642b0031f4e35c454a552b6eb45cef6687a8aa8","isMergeCommit":false,"messageTitle":"Level-7: Save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":191,"deletions":116}}},{"hash":"4dc1ac9b66b5043a7a2caec0a6a22c0aa626c85b","isMergeCommit":false,"messageTitle":"Level-7: Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":50,"deletions":0}}},{"hash":"01d3cafd50f049e8f52f83825aa3f33eeafa52e8","isMergeCommit":false,"messageTitle":"Level-7: Save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":50,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"c604b222791b0c4d1a72bdfd4026499027dd94bb","isMergeCommit":false,"messageTitle":"Level-8: Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":269,"deletions":234}}},{"hash":"58f742a11dce7837afd72395d8fe216246972dde","isMergeCommit":false,"messageTitle":"Add Date and Time","messageBody":"Added support for converting dates from DD-MM-YYYY format to MMM DD YYYY format\n\nThe current situation involves handling date input in the DD-MM-YYYY format. This format is less user-friendly and might cause confusion for users accustomed to other date formats.\n\nTo address this, I\u0027ve implemented a feature that converts the entered date from the DD-MM-YYYY format to the more widely recognized MMM DD YYYY format. This change enhances the user experience and ensures consistency in date presentation.\n\nThe chosen approach involves using date formatting libraries to transform the input date into the desired format. This method simplifies the code and reduces the risk of introducing errors in the conversion process.\n\nThis change was made to provide a more intuitive and user-friendly way of presenting dates within the application. By using a common date format, we can improve usability and reduce the potential for user misunderstandings.\n\nNo additional issues or concerns are associated with this change. It primarily focuses on improving the clarity and user-friendliness of date presentation.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"54ea5fcea17bdcf5df95aee00fc6e5f43d686a6e","isMergeCommit":false,"messageTitle":"Add Date and Time","messageBody":"Added support for converting dates from DD-MM-YYYY format to MMM DD YYYY format\n\nHandling date input in the DD-MM-YYYY format. This format is less user-friendly and might cause confusion for users accustomed to other date formats.\n\nImplement a feature that converts the entered date from the DD-MM-YYYY format to the more widely recognized MMM DD YYYY format. This change enhances the user experience and ensures consistency in date presentation.\n\nThe chosen approach involves using date formatting libraries to transform the input date into the desired format. This method simplifies the code and reduces the risk of introducing errors in the conversion process.\n\nThis change was made to provide a more intuitive and user-friendly way of presenting dates within the application. By using a common date format, we can improve usability and reduce the potential for user misunderstandings.\n\nNo additional issues or concerns are associated with this change. It primarily focuses on improving the clarity and user-friendliness of date presentation.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"1c90133c8bcbc12dd84a12d28bb09a4dddd8ff9f","isMergeCommit":false,"messageTitle":"Made code more readable","messageBody":"Involves code that is complex and hard to understand due to its convoluted structure and lack of proper comments or meaningful variable names.\n\nTo improve the maintainability and collaboration on the project, I\u0027ve refactored the codebase to enhance its readability. This includes breaking down long functions into smaller, more focused methods, adding comments to clarify the purpose of different sections, and renaming variables to convey their intent more clearly.\n\nThis refactoring effort was done to address the difficulty in understanding and maintaining the existing code. By making the code more readable, we aim to reduce the cognitive load on developers and facilitate easier bug fixing, feature enhancements, and collaboration among team members.\n\nThe refactoring was carried out in line with best practices and coding standards. This approach aligns with the goal of producing clean, maintainable code that can be easily comprehended by both current and future developers working on the project.\n\nNo other significant changes were introduced in this commit, as the primary focus was on improving code readability and maintainability.\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":356,"deletions":251}}},{"hash":"62a1481333683d391fcaf48039c3f622b7604d7e","isMergeCommit":false,"messageTitle":"Made code more readable","messageBody":"Involves code that is complex and hard to understand due to its convoluted structure and lack of proper comments or meaningful variable names.\n\nTo improve the maintainability and collaboration on the project, I\u0027ve refactored the codebase to enhance its readability. This includes breaking down long functions into smaller, more focused methods, adding comments to clarify the purpose of different sections, and renaming variables to convey their intent more clearly.\n\nThis refactoring effort was done to address the difficulty in understanding and maintaining the existing code. By making the code more readable, we aim to reduce the cognitive load on developers and facilitate easier bug fixing, feature enhancements, and collaboration among team members.\n\nThe refactoring was carried out in line with best practices and coding standards. This approach aligns with the goal of producing clean, maintainable code that can be easily comprehended by both current and future developers working on the project.\n\nNo other significant changes were introduced in this commit, as the primary focus was on improving code readability and maintainability.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":185,"deletions":53}}},{"hash":"af18ade6e7b91e5ea5b2ce5a9f6fdbb742d49c95","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"9bf53eab7887813f4e15fcb216a14667428651bc","isMergeCommit":false,"messageTitle":"Create custom packages for the project","messageBody":"There are multiple classes that are not categorized into packages.\n\nCreating custom packages improves the standardization of the code\n\nAs a step towards making the code better, let\u0027s extract those classes that are similar and package them into the same package\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":27,"deletions":4}}},{"hash":"ffe2b7519650f20b1234b488dec0cc000f5594f2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from lululwtv/add-gradle-support","messageBody":"Add gradle support","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"lululwtv":{"java":686,"md":0,"fxml":0,"sh":0,"bat":3,"gradle":0,"txt":7}},"authorContributionVariance":{"lululwtv":137847.36},"authorDisplayNameMap":{"lululwtv":"CS2103T-W12-4 KHIE..DRIC"}} +{"authorDailyContributionsMap":{"lululwtv":[{"date":"2023-08-24","commitResults":[{"hash":"504858dbc89caaf2ca53ea3d51acf9a422805993","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"a0b602a58f4356126f7ab9779b18607cb748cba1","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"5aeb788d39e13eaaf707c266ee4c534844fb01f1","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"8a0befbad948fff7edc83c26441803ae19ecc01b","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":5}}},{"hash":"e752c2b843807f2155fabd305702dc42583b6d1e","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":4}}},{"hash":"bb536e63c9add0cee51a7955ac33fb00ae6d4af5","isMergeCommit":false,"messageTitle":"Level-4: ToDo, Event, Deadline","messageBody":"","tags":["Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":140,"deletions":17}}},{"hash":"c5fc4fc2c694e25afd464f49e2e8a5618b1ee388","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":2,"deletions":2},"bat":{"insertions":3,"deletions":1}}},{"hash":"3ba33c319ff511210a855de405d1dffb3e976fcf","isMergeCommit":false,"messageTitle":"Level-5: Handle Errors","messageBody":"","tags":["Level-6","Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":8}}},{"hash":"3df400dcdc69786e8fdc3ff011cc02a162844b29","isMergeCommit":false,"messageTitle":"Level-6: Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":10}}}]},{"date":"2023-08-28","commitResults":[{"hash":"4642b0031f4e35c454a552b6eb45cef6687a8aa8","isMergeCommit":false,"messageTitle":"Level-7: Save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":191,"deletions":116}}},{"hash":"4dc1ac9b66b5043a7a2caec0a6a22c0aa626c85b","isMergeCommit":false,"messageTitle":"Level-7: Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":50,"deletions":0}}},{"hash":"01d3cafd50f049e8f52f83825aa3f33eeafa52e8","isMergeCommit":false,"messageTitle":"Level-7: Save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":50,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"c604b222791b0c4d1a72bdfd4026499027dd94bb","isMergeCommit":false,"messageTitle":"Level-8: Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":269,"deletions":234}}},{"hash":"58f742a11dce7837afd72395d8fe216246972dde","isMergeCommit":false,"messageTitle":"Add Date and Time","messageBody":"Added support for converting dates from DD-MM-YYYY format to MMM DD YYYY format\n\nThe current situation involves handling date input in the DD-MM-YYYY format. This format is less user-friendly and might cause confusion for users accustomed to other date formats.\n\nTo address this, I\u0027ve implemented a feature that converts the entered date from the DD-MM-YYYY format to the more widely recognized MMM DD YYYY format. This change enhances the user experience and ensures consistency in date presentation.\n\nThe chosen approach involves using date formatting libraries to transform the input date into the desired format. This method simplifies the code and reduces the risk of introducing errors in the conversion process.\n\nThis change was made to provide a more intuitive and user-friendly way of presenting dates within the application. By using a common date format, we can improve usability and reduce the potential for user misunderstandings.\n\nNo additional issues or concerns are associated with this change. It primarily focuses on improving the clarity and user-friendliness of date presentation.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"54ea5fcea17bdcf5df95aee00fc6e5f43d686a6e","isMergeCommit":false,"messageTitle":"Add Date and Time","messageBody":"Added support for converting dates from DD-MM-YYYY format to MMM DD YYYY format\n\nHandling date input in the DD-MM-YYYY format. This format is less user-friendly and might cause confusion for users accustomed to other date formats.\n\nImplement a feature that converts the entered date from the DD-MM-YYYY format to the more widely recognized MMM DD YYYY format. This change enhances the user experience and ensures consistency in date presentation.\n\nThe chosen approach involves using date formatting libraries to transform the input date into the desired format. This method simplifies the code and reduces the risk of introducing errors in the conversion process.\n\nThis change was made to provide a more intuitive and user-friendly way of presenting dates within the application. By using a common date format, we can improve usability and reduce the potential for user misunderstandings.\n\nNo additional issues or concerns are associated with this change. It primarily focuses on improving the clarity and user-friendliness of date presentation.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"1c90133c8bcbc12dd84a12d28bb09a4dddd8ff9f","isMergeCommit":false,"messageTitle":"Made code more readable","messageBody":"Involves code that is complex and hard to understand due to its convoluted structure and lack of proper comments or meaningful variable names.\n\nTo improve the maintainability and collaboration on the project, I\u0027ve refactored the codebase to enhance its readability. This includes breaking down long functions into smaller, more focused methods, adding comments to clarify the purpose of different sections, and renaming variables to convey their intent more clearly.\n\nThis refactoring effort was done to address the difficulty in understanding and maintaining the existing code. By making the code more readable, we aim to reduce the cognitive load on developers and facilitate easier bug fixing, feature enhancements, and collaboration among team members.\n\nThe refactoring was carried out in line with best practices and coding standards. This approach aligns with the goal of producing clean, maintainable code that can be easily comprehended by both current and future developers working on the project.\n\nNo other significant changes were introduced in this commit, as the primary focus was on improving code readability and maintainability.\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":356,"deletions":251}}},{"hash":"62a1481333683d391fcaf48039c3f622b7604d7e","isMergeCommit":false,"messageTitle":"Made code more readable","messageBody":"Involves code that is complex and hard to understand due to its convoluted structure and lack of proper comments or meaningful variable names.\n\nTo improve the maintainability and collaboration on the project, I\u0027ve refactored the codebase to enhance its readability. This includes breaking down long functions into smaller, more focused methods, adding comments to clarify the purpose of different sections, and renaming variables to convey their intent more clearly.\n\nThis refactoring effort was done to address the difficulty in understanding and maintaining the existing code. By making the code more readable, we aim to reduce the cognitive load on developers and facilitate easier bug fixing, feature enhancements, and collaboration among team members.\n\nThe refactoring was carried out in line with best practices and coding standards. This approach aligns with the goal of producing clean, maintainable code that can be easily comprehended by both current and future developers working on the project.\n\nNo other significant changes were introduced in this commit, as the primary focus was on improving code readability and maintainability.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":185,"deletions":53}}},{"hash":"af18ade6e7b91e5ea5b2ce5a9f6fdbb742d49c95","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"9bf53eab7887813f4e15fcb216a14667428651bc","isMergeCommit":false,"messageTitle":"Create custom packages for the project","messageBody":"There are multiple classes that are not categorized into packages.\n\nCreating custom packages improves the standardization of the code\n\nAs a step towards making the code better, let\u0027s extract those classes that are similar and package them into the same package\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":27,"deletions":4}}},{"hash":"ffe2b7519650f20b1234b488dec0cc000f5594f2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from lululwtv/add-gradle-support","messageBody":"Add gradle support","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"f548d2e995bfdd1e1fbb63fdc6775a7a5d76f1a3","isMergeCommit":false,"messageTitle":"Dummy commit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":10},"java":{"insertions":25,"deletions":1}}},{"hash":"457beae09aa978aef10c11506f22d73b898b9a70","isMergeCommit":false,"messageTitle":"Add test files using JUnit","messageBody":"Allows automated testing using JUnit and Gradle.\n\nMakes testing the code faster and easier\n","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":15}}},{"hash":"ede2a17f676721e397308b2e11b2f2ec717e387b","isMergeCommit":true,"messageTitle":"Merge pull request #2 from lululwtv/branch-A-JUnit","messageBody":"Branch a j unit","fileTypesAndContributionMap":{}},{"hash":"90d868be9ac05e63a669c801d2f1ff088dc95516","isMergeCommit":false,"messageTitle":"Add JAR file","messageBody":"Create JAR file to make installation of the project easier. Use Fat JAR to allow all dependencies to be loaded to receiving user.\n","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"java":{"insertions":1,"deletions":1}}},{"hash":"eda98e5b475f85136d2095152173af8ef5fdae51","isMergeCommit":true,"messageTitle":"Merge pull request #3 from lululwtv/branch-A-JAR","messageBody":"Add JAR file","fileTypesAndContributionMap":{}},{"hash":"d53861322632dcc0d10ab84542101736414c584d","isMergeCommit":false,"messageTitle":"Add JavaDoc Comments","messageBody":"Add JavaDoc comments to all methods so that methods are easier to read.\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"39cfeee688e79b116c67a1fabb41b0f820a5a65e","isMergeCommit":false,"messageTitle":"Comply with Java Coding Standards","messageBody":"Make the code look like it was written by a single person by complying with Java coding standards.\n","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":36}}},{"hash":"fc55bccba0cfd6b1bdc3d113bf92b8f11258b5d0","isMergeCommit":false,"messageTitle":"Add find function","messageBody":"The find function makes it easier for users to find matching tasks in their task list, so that they do not have to manually look through the task list to find matching tasks\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":57,"deletions":11}}},{"hash":"fb725e4a9d2b6a51fd88a44145824fc7052f0456","isMergeCommit":true,"messageTitle":"Merge pull request #4 from lululwtv/branch-A-JavaDoc","messageBody":"Add JavaDoc Comments","fileTypesAndContributionMap":{}},{"hash":"c71978b3bbaf4afbf0d1c163937e1f3dbe90b2af","isMergeCommit":true,"messageTitle":"Merge pull request #5 from lululwtv/branch-A-CodingStandard","messageBody":"Comply with Java Coding Standards","fileTypesAndContributionMap":{}},{"hash":"8d6453e2fbdbd94ce2fcaebe4cb4ca76551800e5","isMergeCommit":true,"messageTitle":"Merge pull request #6 from lululwtv/branch-Level-9","messageBody":"Add find function","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"lululwtv":{"java":805,"md":0,"fxml":0,"sh":0,"bat":3,"gradle":2,"txt":9}},"authorContributionVariance":{"lululwtv":129414.336},"authorDisplayNameMap":{"lululwtv":"CS2103T-W12-4 KHIE..DRIC"}} diff --git a/marquestye_ip_master/authorship.json b/marquestye_ip_master/authorship.json index 9b7f0091..1d00d892 100644 --- a/marquestye_ip_master/authorship.json +++ b/marquestye_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"# Duck project template","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"## Duck","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"Prerequisites: Duck","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" ____ _","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":"| _ \\ _ _____| | __","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":"| | | | | | | _| |/ /","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":"| |_| | |_| | |_ \u003c","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":"|____/ \\__,_|___|_|\\_\\","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"marquestye":7,"-":9}},{"path":"src/main/java/Duck.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":"public class Duck {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":" ","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":" // Create data directory if it doesnt exist","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":" File dataDir \u003d new File(\"data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" if (dataDir.mkdir()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":" // Directory doesnt exist","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":" // System.out.println(\"New data directory is created!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":" // Directory already exists","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"marquestye"},"content":" // System.out.println(\"Data directory already exists!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"marquestye"},"content":" // Create history file if it doesnt exist","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"marquestye"},"content":" File historyFile;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"marquestye"},"content":" historyFile \u003d new File(\"data/duck.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"marquestye"},"content":" if (historyFile.createNewFile()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"marquestye"},"content":" // File doesnt exist","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"marquestye"},"content":" // System.out.println(\"new file is created!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"marquestye"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"marquestye"},"content":" // File already exists","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"marquestye"},"content":" // System.out.println(\"file already exists!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"marquestye"},"content":" int taskCount \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"marquestye"},"content":" Scanner fileScanner \u003d new Scanner(historyFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"marquestye"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"marquestye"},"content":" list.addTask(Task.parse(fileScanner.nextLine()));","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"marquestye"},"content":" taskCount++;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"marquestye"},"content":" System.out.println(\"Loaded \" + taskCount + \" tasks from history.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"marquestye"},"content":" fileScanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"marquestye"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"marquestye"},"content":" System.out.println(\"Error with task storage file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"marquestye"},"content":" Scanner in \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"marquestye"},"content":" Duck.greet();","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"marquestye"},"content":" String input \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"marquestye"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"marquestye"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"marquestye"},"content":" list.listTasks();","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"marquestye"},"content":" input \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"marquestye"},"content":" if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"marquestye"},"content":" int index \u003d Integer.parseInt(input.substring(5));","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"marquestye"},"content":" try{","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"marquestye"},"content":" list.mark(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"marquestye"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"marquestye"},"content":" System.out.println(\"☹ OOPS!!! There is no task \" + index + \" in your list.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"marquestye"},"content":" input \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"marquestye"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"marquestye"},"content":" System.out.println(\"☹ OOPS!!! Task \" + index + \" is already marked.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"marquestye"},"content":" input \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"marquestye"},"content":" input \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"marquestye"},"content":" if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"marquestye"},"content":" int index \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"marquestye"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"marquestye"},"content":" list.unmark(index - 1);","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"marquestye"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"marquestye"},"content":" System.out.println(\"☹ OOPS!!! There is no task \" + index + \" in your list.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"marquestye"},"content":" input \u003d in.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"marquestye"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"marquestye"},"content":" System.out.println(\"☹ OOPS!!! Task \" + index + \" is already unmarked.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"marquestye"},"content":" input \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"marquestye"},"content":" input \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"marquestye"},"content":" if (input.startsWith(\"todo\") || input.startsWith(\"deadline\") || input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"marquestye"},"content":" Task newTask;","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"marquestye"},"content":" newTask \u003d list.addTask(input);","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"marquestye"},"content":" } catch (StringIndexOutOfBoundsException e ) {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"marquestye"},"content":" System.out.println(\"☹ OOPS!!! The description of a \" + input + \" cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"marquestye"},"content":" input \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"marquestye"},"content":" } ","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"marquestye"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"marquestye"},"content":" System.out.println(newTask);","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"marquestye"},"content":" System.out.println(\"Now you have \" + list.getListSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"marquestye"},"content":" input \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"marquestye"},"content":" if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"marquestye"},"content":" int index \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"marquestye"},"content":" list.delete(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"marquestye"},"content":" input \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"marquestye"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"marquestye"},"content":" input \u003d in.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"marquestye"},"content":" Duck.bye();","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"marquestye"},"content":" in.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"marquestye"},"content":" private static void line() {","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"marquestye"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"marquestye"},"content":" private static void greet() {","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"marquestye"},"content":" String greeting \u003d \"Hello! I\u0027m Duck\\n\" + \"What can I do for you?\";","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"marquestye"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"marquestye"},"content":" private static void bye() {","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"marquestye"},"content":" String bye \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"marquestye"},"content":" System.out.println(bye);","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"marquestye"},"content":" line();","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"marquestye"},"content":"class TaskList {","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"marquestye"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-29"},{"lineNumber":164,"author":{"gitId":"marquestye"},"content":" private int listSize;","lastModifiedDate":"2023-08-29"},{"lineNumber":165,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"marquestye"},"content":" public TaskList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"marquestye"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":168,"author":{"gitId":"marquestye"},"content":" this.listSize \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":169,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"marquestye"},"content":" public int getListSize() {","lastModifiedDate":"2023-08-29"},{"lineNumber":172,"author":{"gitId":"marquestye"},"content":" return this.listSize;","lastModifiedDate":"2023-08-29"},{"lineNumber":173,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"marquestye"},"content":" public void addTask (Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"marquestye"},"content":" list.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"marquestye"},"content":" listSize++;","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"marquestye"},"content":" public Task addTask(String input) throws IllegalArgumentException, StringIndexOutOfBoundsException {","lastModifiedDate":"2023-08-29"},{"lineNumber":181,"author":{"gitId":"marquestye"},"content":" Task newTask;","lastModifiedDate":"2023-08-29"},{"lineNumber":182,"author":{"gitId":"marquestye"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":183,"author":{"gitId":"marquestye"},"content":" newTask \u003d new TodoTask(input);","lastModifiedDate":"2023-08-29"},{"lineNumber":184,"author":{"gitId":"marquestye"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":185,"author":{"gitId":"marquestye"},"content":" newTask \u003d new DeadlineTask(input);","lastModifiedDate":"2023-08-29"},{"lineNumber":186,"author":{"gitId":"marquestye"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":187,"author":{"gitId":"marquestye"},"content":" newTask \u003d new EventTask(input);","lastModifiedDate":"2023-08-29"},{"lineNumber":188,"author":{"gitId":"marquestye"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":189,"author":{"gitId":"marquestye"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2023-08-29"},{"lineNumber":190,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"marquestye"},"content":" list.add(newTask);","lastModifiedDate":"2023-08-29"},{"lineNumber":193,"author":{"gitId":"marquestye"},"content":" listSize++;","lastModifiedDate":"2023-08-29"},{"lineNumber":194,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"marquestye"},"content":" FileWriter writer \u003d new FileWriter(\"data/duck.txt\", true);","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"marquestye"},"content":" writer.write(newTask.stringify() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"marquestye"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"marquestye"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":200,"author":{"gitId":"marquestye"},"content":" System.out.println(\"Error - unable to access history file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":203,"author":{"gitId":"marquestye"},"content":" return newTask;","lastModifiedDate":"2023-08-29"},{"lineNumber":204,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":205,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"marquestye"},"content":" public void listTasks() {","lastModifiedDate":"2023-08-29"},{"lineNumber":207,"author":{"gitId":"marquestye"},"content":" if (listSize \u003d\u003d 0) {","lastModifiedDate":"2023-08-29"},{"lineNumber":208,"author":{"gitId":"marquestye"},"content":" System.out.println(\"There are no tasks in your list.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":209,"author":{"gitId":"marquestye"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":210,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":211,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"marquestye"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-29"},{"lineNumber":213,"author":{"gitId":"marquestye"},"content":" for (int i \u003d 1; i \u003c\u003d listSize; i++) {","lastModifiedDate":"2023-08-29"},{"lineNumber":214,"author":{"gitId":"marquestye"},"content":" System.out.println(\"\" + i + \". \" + list.get(i - 1));","lastModifiedDate":"2023-08-29"},{"lineNumber":215,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":216,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":217,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":218,"author":{"gitId":"marquestye"},"content":" public void mark(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-29"},{"lineNumber":219,"author":{"gitId":"marquestye"},"content":" Task currTask \u003d list.get(index);","lastModifiedDate":"2023-08-29"},{"lineNumber":220,"author":{"gitId":"marquestye"},"content":" currTask.mark();","lastModifiedDate":"2023-08-29"},{"lineNumber":221,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":222,"author":{"gitId":"marquestye"},"content":" ArrayList\u003cString\u003e history \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":223,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":224,"author":{"gitId":"marquestye"},"content":" Scanner fileScanner \u003d new Scanner(new File(\"data/duck.txt\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":225,"author":{"gitId":"marquestye"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":226,"author":{"gitId":"marquestye"},"content":" if (history.size() \u003d\u003d index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":227,"author":{"gitId":"marquestye"},"content":" history.add(currTask.stringify());","lastModifiedDate":"2023-08-30"},{"lineNumber":228,"author":{"gitId":"marquestye"},"content":" fileScanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":229,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":230,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":231,"author":{"gitId":"marquestye"},"content":" history.add(fileScanner.nextLine());","lastModifiedDate":"2023-08-30"},{"lineNumber":232,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":233,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":234,"author":{"gitId":"marquestye"},"content":" FileWriter writer \u003d new FileWriter(\"data/duck.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":235,"author":{"gitId":"marquestye"},"content":" while (history.size() \u003e 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":236,"author":{"gitId":"marquestye"},"content":" writer.write(history.remove(0) + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":237,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":238,"author":{"gitId":"marquestye"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":239,"author":{"gitId":"marquestye"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":240,"author":{"gitId":"marquestye"},"content":" System.out.println(\"Error - unable to access history file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":241,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":242,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":243,"author":{"gitId":"marquestye"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-29"},{"lineNumber":244,"author":{"gitId":"marquestye"},"content":" System.out.println(currTask);","lastModifiedDate":"2023-08-29"},{"lineNumber":245,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":247,"author":{"gitId":"marquestye"},"content":" public void unmark(int index) throws IndexOutOfBoundsException{","lastModifiedDate":"2023-08-29"},{"lineNumber":248,"author":{"gitId":"marquestye"},"content":" Task currTask \u003d list.get(index);","lastModifiedDate":"2023-08-29"},{"lineNumber":249,"author":{"gitId":"marquestye"},"content":" currTask.unmark();","lastModifiedDate":"2023-08-29"},{"lineNumber":250,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":251,"author":{"gitId":"marquestye"},"content":" ArrayList\u003cString\u003e history \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":252,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":253,"author":{"gitId":"marquestye"},"content":" Scanner fileScanner \u003d new Scanner(new File(\"data/duck.txt\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":254,"author":{"gitId":"marquestye"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":255,"author":{"gitId":"marquestye"},"content":" if (history.size() \u003d\u003d index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":256,"author":{"gitId":"marquestye"},"content":" history.add(currTask.stringify());","lastModifiedDate":"2023-08-30"},{"lineNumber":257,"author":{"gitId":"marquestye"},"content":" fileScanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":258,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":259,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":260,"author":{"gitId":"marquestye"},"content":" history.add(fileScanner.nextLine());","lastModifiedDate":"2023-08-30"},{"lineNumber":261,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":262,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":263,"author":{"gitId":"marquestye"},"content":" FileWriter writer \u003d new FileWriter(\"data/duck.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":264,"author":{"gitId":"marquestye"},"content":" while (history.size() \u003e 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":265,"author":{"gitId":"marquestye"},"content":" writer.write(history.remove(0) + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":266,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":267,"author":{"gitId":"marquestye"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":268,"author":{"gitId":"marquestye"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":269,"author":{"gitId":"marquestye"},"content":" System.out.println(\"Error - unable to access history file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":270,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":271,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":272,"author":{"gitId":"marquestye"},"content":" System.out.println(\"OK, I\u0027ve unmarked this task:\");","lastModifiedDate":"2023-08-29"},{"lineNumber":273,"author":{"gitId":"marquestye"},"content":" System.out.println(currTask);","lastModifiedDate":"2023-08-29"},{"lineNumber":274,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":275,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":276,"author":{"gitId":"marquestye"},"content":" public void delete(int index) {","lastModifiedDate":"2023-08-29"},{"lineNumber":277,"author":{"gitId":"marquestye"},"content":" Task currTask \u003d list.get(index);","lastModifiedDate":"2023-08-29"},{"lineNumber":278,"author":{"gitId":"marquestye"},"content":" list.remove(index);","lastModifiedDate":"2023-08-29"},{"lineNumber":279,"author":{"gitId":"marquestye"},"content":" listSize--;","lastModifiedDate":"2023-08-29"},{"lineNumber":280,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":281,"author":{"gitId":"marquestye"},"content":" ArrayList\u003cString\u003e history \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":282,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":283,"author":{"gitId":"marquestye"},"content":" Scanner fileScanner \u003d new Scanner(new File(\"data/duck.txt\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":284,"author":{"gitId":"marquestye"},"content":" int lineCounter \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":285,"author":{"gitId":"marquestye"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":286,"author":{"gitId":"marquestye"},"content":" if (lineCounter \u003d\u003d index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":287,"author":{"gitId":"marquestye"},"content":" System.out.println(\"removed: \" + fileScanner.nextLine());","lastModifiedDate":"2023-08-30"},{"lineNumber":288,"author":{"gitId":"marquestye"},"content":" lineCounter++;","lastModifiedDate":"2023-08-30"},{"lineNumber":289,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":290,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":291,"author":{"gitId":"marquestye"},"content":" lineCounter++;","lastModifiedDate":"2023-08-30"},{"lineNumber":292,"author":{"gitId":"marquestye"},"content":" history.add(fileScanner.nextLine());","lastModifiedDate":"2023-08-30"},{"lineNumber":293,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":294,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":295,"author":{"gitId":"marquestye"},"content":" FileWriter writer \u003d new FileWriter(\"data/duck.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":296,"author":{"gitId":"marquestye"},"content":" while (history.size() \u003e 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":297,"author":{"gitId":"marquestye"},"content":" writer.write(history.remove(0) + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":298,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":299,"author":{"gitId":"marquestye"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":300,"author":{"gitId":"marquestye"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":301,"author":{"gitId":"marquestye"},"content":" System.out.println(\"Error - unable to access history file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":302,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":303,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":304,"author":{"gitId":"marquestye"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-29"},{"lineNumber":305,"author":{"gitId":"marquestye"},"content":" System.out.println(currTask);","lastModifiedDate":"2023-08-29"},{"lineNumber":306,"author":{"gitId":"marquestye"},"content":" System.out.println(\"Now you have \" + listSize + \" tasks in the list.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":307,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":308,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":309,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":310,"author":{"gitId":"marquestye"},"content":"abstract class Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":311,"author":{"gitId":"marquestye"},"content":" private String name;","lastModifiedDate":"2023-08-29"},{"lineNumber":312,"author":{"gitId":"marquestye"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":313,"author":{"gitId":"marquestye"},"content":" private TaskType type;","lastModifiedDate":"2023-08-29"},{"lineNumber":314,"author":{"gitId":"marquestye"},"content":" private String info;","lastModifiedDate":"2023-08-29"},{"lineNumber":315,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":316,"author":{"gitId":"marquestye"},"content":" public Task(String name, boolean isDone, TaskType type, String info) {","lastModifiedDate":"2023-08-30"},{"lineNumber":317,"author":{"gitId":"marquestye"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":318,"author":{"gitId":"marquestye"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":319,"author":{"gitId":"marquestye"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-29"},{"lineNumber":320,"author":{"gitId":"marquestye"},"content":" this.info \u003d info;","lastModifiedDate":"2023-08-29"},{"lineNumber":321,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":322,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":323,"author":{"gitId":"marquestye"},"content":" public void mark() throws IllegalArgumentException {","lastModifiedDate":"2023-08-29"},{"lineNumber":324,"author":{"gitId":"marquestye"},"content":" if (this.isDone \u003d\u003d true) {","lastModifiedDate":"2023-08-29"},{"lineNumber":325,"author":{"gitId":"marquestye"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2023-08-29"},{"lineNumber":326,"author":{"gitId":"marquestye"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":327,"author":{"gitId":"marquestye"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":328,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":329,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":330,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":331,"author":{"gitId":"marquestye"},"content":" public void unmark() throws IllegalArgumentException {","lastModifiedDate":"2023-08-29"},{"lineNumber":332,"author":{"gitId":"marquestye"},"content":" if (this.isDone \u003d\u003d false) {","lastModifiedDate":"2023-08-29"},{"lineNumber":333,"author":{"gitId":"marquestye"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2023-08-29"},{"lineNumber":334,"author":{"gitId":"marquestye"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":335,"author":{"gitId":"marquestye"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":336,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":337,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":338,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":339,"author":{"gitId":"marquestye"},"content":" public String stringify() {","lastModifiedDate":"2023-08-30"},{"lineNumber":340,"author":{"gitId":"marquestye"},"content":" String typeChar \u003d this.type.toString().substring(0,1);","lastModifiedDate":"2023-08-30"},{"lineNumber":341,"author":{"gitId":"marquestye"},"content":" String done \u003d String.valueOf(this.isDone ? \u00271\u0027 : \u00270\u0027);","lastModifiedDate":"2023-08-30"},{"lineNumber":342,"author":{"gitId":"marquestye"},"content":" String nameLength \u003d \"/\" + String.valueOf(this.name.length()) + \"/\";","lastModifiedDate":"2023-08-30"},{"lineNumber":343,"author":{"gitId":"marquestye"},"content":" String infoLength \u003d \"/\" + String.valueOf(this.info.length()) + \"/\";","lastModifiedDate":"2023-08-30"},{"lineNumber":344,"author":{"gitId":"marquestye"},"content":" // System.out.println(typeChar + done + nameLength + this.name + infoLength + this.info);","lastModifiedDate":"2023-08-30"},{"lineNumber":345,"author":{"gitId":"marquestye"},"content":" return typeChar + done + nameLength + this.name + infoLength + this.info;","lastModifiedDate":"2023-08-30"},{"lineNumber":346,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":347,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":348,"author":{"gitId":"marquestye"},"content":" public static Task parse(String taskString) {","lastModifiedDate":"2023-08-30"},{"lineNumber":349,"author":{"gitId":"marquestye"},"content":" char typeChar \u003d taskString.charAt(0);","lastModifiedDate":"2023-08-30"},{"lineNumber":350,"author":{"gitId":"marquestye"},"content":" char doneChar \u003d taskString.charAt(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":351,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":352,"author":{"gitId":"marquestye"},"content":" int index_1 \u003d 2; // index of first \"/\"","lastModifiedDate":"2023-08-30"},{"lineNumber":353,"author":{"gitId":"marquestye"},"content":" int index_2 \u003d taskString.indexOf(\"/\", index_1 + 1); // index of second \"/\"","lastModifiedDate":"2023-08-30"},{"lineNumber":354,"author":{"gitId":"marquestye"},"content":" int nameLength \u003d Integer.parseInt(taskString.substring(index_1 + 1, index_2));","lastModifiedDate":"2023-08-30"},{"lineNumber":355,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":356,"author":{"gitId":"marquestye"},"content":" int index_3 \u003d index_2 + nameLength + 1; // index of third \"/\"","lastModifiedDate":"2023-08-30"},{"lineNumber":357,"author":{"gitId":"marquestye"},"content":" int index_4 \u003d taskString.indexOf(\"/\", index_3 + 1); // index of fourth \"/\"","lastModifiedDate":"2023-08-30"},{"lineNumber":358,"author":{"gitId":"marquestye"},"content":" int infoLength \u003d Integer.parseInt(taskString.substring(index_3 + 1, index_4));","lastModifiedDate":"2023-08-30"},{"lineNumber":359,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":360,"author":{"gitId":"marquestye"},"content":" String nameString \u003d taskString.substring(index_2 + 1, index_3); ","lastModifiedDate":"2023-08-30"},{"lineNumber":361,"author":{"gitId":"marquestye"},"content":" String infoString \u003d taskString.substring(index_4 + 1, index_4 + infoLength + 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":362,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":363,"author":{"gitId":"marquestye"},"content":" boolean done \u003d doneChar \u003d\u003d \u00271\u0027 ? true : false;","lastModifiedDate":"2023-08-30"},{"lineNumber":364,"author":{"gitId":"marquestye"},"content":" String name \u003d nameString;","lastModifiedDate":"2023-08-30"},{"lineNumber":365,"author":{"gitId":"marquestye"},"content":" String info \u003d infoString;","lastModifiedDate":"2023-08-30"},{"lineNumber":366,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":367,"author":{"gitId":"marquestye"},"content":" Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":368,"author":{"gitId":"marquestye"},"content":" if (typeChar \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":369,"author":{"gitId":"marquestye"},"content":" task \u003d new TodoTask(name, done, info);","lastModifiedDate":"2023-08-30"},{"lineNumber":370,"author":{"gitId":"marquestye"},"content":" } else if (typeChar \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":371,"author":{"gitId":"marquestye"},"content":" task \u003d new DeadlineTask(name, done, info);","lastModifiedDate":"2023-08-30"},{"lineNumber":372,"author":{"gitId":"marquestye"},"content":" } else if (typeChar \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":373,"author":{"gitId":"marquestye"},"content":" task \u003d new EventTask(name, done, info);","lastModifiedDate":"2023-08-30"},{"lineNumber":374,"author":{"gitId":"marquestye"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":375,"author":{"gitId":"marquestye"},"content":" throw new IllegalArgumentException(); // Replace with custom error later","lastModifiedDate":"2023-08-30"},{"lineNumber":376,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":377,"author":{"gitId":"marquestye"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":378,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":379,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":380,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":381,"author":{"gitId":"marquestye"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":382,"author":{"gitId":"marquestye"},"content":" char typeChar \u003d this.type.toString().charAt(0);","lastModifiedDate":"2023-08-29"},{"lineNumber":383,"author":{"gitId":"marquestye"},"content":" char done \u003d this.isDone ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2023-08-29"},{"lineNumber":384,"author":{"gitId":"marquestye"},"content":" String str \u003d \"[\" + typeChar + \"][\" + done + \"] \" + name;","lastModifiedDate":"2023-08-30"},{"lineNumber":385,"author":{"gitId":"marquestye"},"content":" return str;","lastModifiedDate":"2023-08-29"},{"lineNumber":386,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":387,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":388,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":389,"author":{"gitId":"marquestye"},"content":"class TodoTask extends Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":390,"author":{"gitId":"marquestye"},"content":" public TodoTask(String input) throws StringIndexOutOfBoundsException{","lastModifiedDate":"2023-08-29"},{"lineNumber":391,"author":{"gitId":"marquestye"},"content":" super(input.trim().substring(5), ","lastModifiedDate":"2023-08-29"},{"lineNumber":392,"author":{"gitId":"marquestye"},"content":" false,","lastModifiedDate":"2023-08-30"},{"lineNumber":393,"author":{"gitId":"marquestye"},"content":" TaskType.Todo, ","lastModifiedDate":"2023-08-29"},{"lineNumber":394,"author":{"gitId":"marquestye"},"content":" \"\");","lastModifiedDate":"2023-08-29"},{"lineNumber":395,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":396,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":397,"author":{"gitId":"marquestye"},"content":" public TodoTask(String name, boolean isDone, String info) {","lastModifiedDate":"2023-08-30"},{"lineNumber":398,"author":{"gitId":"marquestye"},"content":" super(name, isDone, TaskType.Todo, \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":399,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":400,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":401,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":402,"author":{"gitId":"marquestye"},"content":"class DeadlineTask extends Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":403,"author":{"gitId":"marquestye"},"content":" LocalDate deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":404,"author":{"gitId":"marquestye"},"content":" String deadlineString;","lastModifiedDate":"2023-08-30"},{"lineNumber":405,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":406,"author":{"gitId":"marquestye"},"content":" public DeadlineTask(String input) throws StringIndexOutOfBoundsException {","lastModifiedDate":"2023-08-29"},{"lineNumber":407,"author":{"gitId":"marquestye"},"content":" super(input.trim().substring(9, input.indexOf(\"/by\")), ","lastModifiedDate":"2023-08-30"},{"lineNumber":408,"author":{"gitId":"marquestye"},"content":" false,","lastModifiedDate":"2023-08-30"},{"lineNumber":409,"author":{"gitId":"marquestye"},"content":" TaskType.Deadline, ","lastModifiedDate":"2023-08-29"},{"lineNumber":410,"author":{"gitId":"marquestye"},"content":" \" (by: \" + input.substring(input.indexOf(\"/by\") + 4) + \")\");","lastModifiedDate":"2023-08-29"},{"lineNumber":411,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":412,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":413,"author":{"gitId":"marquestye"},"content":" this.deadline \u003d LocalDate.parse(input.substring(input.indexOf(\"/by\") + 4));","lastModifiedDate":"2023-08-30"},{"lineNumber":414,"author":{"gitId":"marquestye"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":415,"author":{"gitId":"marquestye"},"content":" this.deadline \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":416,"author":{"gitId":"marquestye"},"content":" this.deadlineString \u003d \" (by: \" + input.substring(input.indexOf(\"/by\") + 4) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":417,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":418,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":419,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":420,"author":{"gitId":"marquestye"},"content":" public DeadlineTask(String name, boolean isDone, String info) {","lastModifiedDate":"2023-08-30"},{"lineNumber":421,"author":{"gitId":"marquestye"},"content":" super(name, isDone, TaskType.Deadline, info);","lastModifiedDate":"2023-08-30"},{"lineNumber":422,"author":{"gitId":"marquestye"},"content":" this.deadlineString \u003d info;","lastModifiedDate":"2023-08-30"},{"lineNumber":423,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":424,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":425,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":426,"author":{"gitId":"marquestye"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":427,"author":{"gitId":"marquestye"},"content":" if (this.deadline \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":428,"author":{"gitId":"marquestye"},"content":" return super.toString() + this.deadlineString;","lastModifiedDate":"2023-08-30"},{"lineNumber":429,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":430,"author":{"gitId":"marquestye"},"content":" return super.toString() + \" (by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":431,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":432,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":433,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":434,"author":{"gitId":"marquestye"},"content":"class EventTask extends Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":435,"author":{"gitId":"marquestye"},"content":" String info;","lastModifiedDate":"2023-08-30"},{"lineNumber":436,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":437,"author":{"gitId":"marquestye"},"content":" public EventTask(String input) throws StringIndexOutOfBoundsException {","lastModifiedDate":"2023-08-29"},{"lineNumber":438,"author":{"gitId":"marquestye"},"content":" super(input.trim().substring(6, input.indexOf(\"/from\")), ","lastModifiedDate":"2023-08-30"},{"lineNumber":439,"author":{"gitId":"marquestye"},"content":" false,","lastModifiedDate":"2023-08-30"},{"lineNumber":440,"author":{"gitId":"marquestye"},"content":" TaskType.Event, ","lastModifiedDate":"2023-08-29"},{"lineNumber":441,"author":{"gitId":"marquestye"},"content":" \" (from: \" + input.substring(input.indexOf(\"/from\") + 6, input.indexOf(\"/to\") - 1) + ","lastModifiedDate":"2023-08-29"},{"lineNumber":442,"author":{"gitId":"marquestye"},"content":" \" to: \" + input.substring(input.indexOf(\"/to\") + 4) + \")\");","lastModifiedDate":"2023-08-29"},{"lineNumber":443,"author":{"gitId":"marquestye"},"content":" this.info \u003d \" (from: \" + input.substring(input.indexOf(\"/from\") + 6, input.indexOf(\"/to\") - 1) + ","lastModifiedDate":"2023-08-30"},{"lineNumber":444,"author":{"gitId":"marquestye"},"content":" \" to: \" + input.substring(input.indexOf(\"/to\") + 4) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":445,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":446,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":447,"author":{"gitId":"marquestye"},"content":" public EventTask(String name, boolean isDone, String info) {","lastModifiedDate":"2023-08-30"},{"lineNumber":448,"author":{"gitId":"marquestye"},"content":" super(name, isDone, TaskType.Event, info);","lastModifiedDate":"2023-08-30"},{"lineNumber":449,"author":{"gitId":"marquestye"},"content":" this.info \u003d info;","lastModifiedDate":"2023-08-30"},{"lineNumber":450,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":451,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":452,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":453,"author":{"gitId":"marquestye"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":454,"author":{"gitId":"marquestye"},"content":" return super.toString() + this.info;","lastModifiedDate":"2023-08-30"},{"lineNumber":455,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":456,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":457,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":458,"author":{"gitId":"marquestye"},"content":"enum TaskType {","lastModifiedDate":"2023-08-29"},{"lineNumber":459,"author":{"gitId":"marquestye"},"content":" Todo,","lastModifiedDate":"2023-08-29"},{"lineNumber":460,"author":{"gitId":"marquestye"},"content":" Deadline,","lastModifiedDate":"2023-08-29"},{"lineNumber":461,"author":{"gitId":"marquestye"},"content":" Event,","lastModifiedDate":"2023-08-29"},{"lineNumber":462,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"marquestye":462}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"list","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"mark 1","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"unmark -1","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"todo task1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"deadline task2 /by tonight","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"event event1 /from tomorrow /to Friday","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"mark 1","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":"nonsense","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"marquestye":12}},{"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":"marquestye"},"content":"java -classpath ..\\bin Duck \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"marquestye":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"# Duck project template","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"## Duck","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"Prerequisites: Duck","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" ____ _","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":"| _ \\ _ _____| | __","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":"| | | | | | | _| |/ /","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":"| |_| | |_| | |_ \u003c","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":"|____/ \\__,_|___|_|\\_\\","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"marquestye":7,"-":9}},{"path":"src/main/java/duck/Duck.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"import duck.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"import duck.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":"public class Duck {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":" public Duck(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":" ArrayList\u003cTask\u003e list \u003d storage.loadTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":" this.tasks \u003d new TaskList(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"marquestye"},"content":" } catch (DuckException error) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"marquestye"},"content":" ui.showErrorMessage(error);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"marquestye"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"marquestye"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"marquestye"},"content":" ui.showWelcomeMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"marquestye"},"content":" boolean isExit \u003d false; ","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"marquestye"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"marquestye"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"marquestye"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"marquestye"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"marquestye"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"marquestye"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"marquestye"},"content":" } catch (DuckException error) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"marquestye"},"content":" ui.showErrorMessage(error);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"marquestye"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"marquestye"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"marquestye"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"marquestye"},"content":" new Duck(\"data/tasks.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":48}},{"path":"src/main/java/duck/DuckException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"public class DuckException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":" public DuckException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":" super(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":7}},{"path":"src/main/java/duck/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"import duck.command.AddCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"import duck.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":"import duck.command.DeleteCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":"import duck.command.ExitCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":"import duck.command.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":"import duck.command.MarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":"import duck.command.UnmarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":"import duck.task.DeadlineTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":"import duck.task.EventTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":"import duck.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":"import duck.task.TodoTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"marquestye"},"content":" private static DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"marquestye"},"content":" private static DateTimeFormatter fileDateFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"marquestye"},"content":" public static Command parse(String input) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"marquestye"},"content":" String[] splitInput \u003d input.trim().split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"marquestye"},"content":" String command \u003d splitInput[0].toUpperCase();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"marquestye"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"marquestye"},"content":" case \"LIST\":","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"marquestye"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"marquestye"},"content":" case \"BYE\":","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"marquestye"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"marquestye"},"content":" if (splitInput.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Invalid input.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"marquestye"},"content":" String data \u003d splitInput[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"marquestye"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"marquestye"},"content":" case \"MARK\":","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"marquestye"},"content":" return new MarkCommand(parseIndex(data));","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"marquestye"},"content":" case \"UNMARK\":","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"marquestye"},"content":" return new UnmarkCommand(parseIndex(data));","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"marquestye"},"content":" case \"DELETE\":","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"marquestye"},"content":" return new DeleteCommand(parseIndex(data));","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"marquestye"},"content":" case \"TODO\":","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"marquestye"},"content":" return new AddCommand(parseTodo(data));","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"marquestye"},"content":" case \"DEADLINE\":","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"marquestye"},"content":" return new AddCommand(parseDeadline(data));","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"marquestye"},"content":" case \"EVENT\":","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"marquestye"},"content":" return new AddCommand(parseEvent(data));","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"marquestye"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Im sorry, I don\u0027t know what that means.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"marquestye"},"content":" private static int parseIndex(String dataString) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"marquestye"},"content":" int index \u003d Integer.parseInt(dataString);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"marquestye"},"content":" return index;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"marquestye"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Please enter a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"marquestye"},"content":" private static Task parseTodo(String dataString) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"marquestye"},"content":" String name \u003d dataString.trim(); ","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"marquestye"},"content":" return new TodoTask(name, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"marquestye"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"marquestye"},"content":" private static DeadlineTask parseDeadline(String dataString) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"marquestye"},"content":" String[] splitData \u003d dataString.trim().split(\" /by \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"marquestye"},"content":" String name \u003d splitData[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"marquestye"},"content":" LocalDate deadline \u003d LocalDate.parse(splitData[1].trim(), dateFormatter); // potential error if theres no \"/by\" ???","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"marquestye"},"content":" return new DeadlineTask(name, false, deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"marquestye"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Invalid todo task.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"marquestye"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Please follow the dd/mm/yyyy format for dates.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"marquestye"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Please follow the /by format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"marquestye"},"content":" private static EventTask parseEvent(String dataString) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"marquestye"},"content":" String[] splitData \u003d dataString.trim().split(\" /from \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"marquestye"},"content":" String name \u003d splitData[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"marquestye"},"content":" splitData \u003d splitData[1].trim().split(\" /to \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"marquestye"},"content":" LocalDate start \u003d LocalDate.parse(splitData[0].trim(), dateFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"marquestye"},"content":" LocalDate end \u003d LocalDate.parse(splitData[1].trim(), dateFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"marquestye"},"content":" return new EventTask(name, false, start, end);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"marquestye"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Invalid todo task.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"marquestye"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Please follow the dd/mm/yyyy format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"marquestye"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Please follow the /from and /to format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"marquestye"},"content":" public static Task parseFromFile(String fileLine) throws DuckException{","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"marquestye"},"content":" char typeChar \u003d fileLine.charAt(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"marquestye"},"content":" switch (typeChar) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"marquestye"},"content":" case \u0027T\u0027:","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"marquestye"},"content":" return TodoTask.parse(fileLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"marquestye"},"content":" case \u0027D\u0027:","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"marquestye"},"content":" return DeadlineTask.parse(fileLine, fileDateFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"marquestye"},"content":" case \u0027E\u0027:","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"marquestye"},"content":" return EventTask.parse(fileLine, fileDateFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"marquestye"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Invalid file data.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":120}},{"path":"src/main/java/duck/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import duck.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":" public void updateTasks(TaskList tasks) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"marquestye"},"content":" FileWriter writer \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"marquestye"},"content":" for (int i \u003d 0; i \u003c tasks.getTaskCount(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"marquestye"},"content":" writer.write(tasks.getTask(i).stringify() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"marquestye"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"marquestye"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Error - unable to save tasks.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"marquestye"},"content":" public ArrayList\u003cTask\u003e loadTasks() throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"marquestye"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"marquestye"},"content":" File dataDir \u003d new File(filePath).getParentFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"marquestye"},"content":" dataDir.mkdir(); // Create directory only if it doesnt already exist","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"marquestye"},"content":" File taskFile;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"marquestye"},"content":" taskFile \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"marquestye"},"content":" if (!taskFile.createNewFile()) { // Create file only if it doesnt already exist","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"marquestye"},"content":" Scanner fileScanner \u003d new Scanner(taskFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"marquestye"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"marquestye"},"content":" Task t \u003d Parser.parseFromFile(fileScanner.nextLine()); // should be handled by parser","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"marquestye"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"marquestye"},"content":" fileScanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"marquestye"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Error - unable to access task file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"marquestye"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"marquestye"},"content":" // Appends instead of rewriting the file","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"marquestye"},"content":" public void addTask(Task newTask) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"marquestye"},"content":" FileWriter writer \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"marquestye"},"content":" writer.write(newTask.stringify() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"marquestye"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"marquestye"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Error - unable to add task.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"marquestye"},"content":" // Rewrites the file, except for the line at the specified index","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"marquestye"},"content":" public void deleteTask(int index) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"marquestye"},"content":" ArrayList\u003cString\u003e history \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"marquestye"},"content":" Scanner fileScanner \u003d new Scanner(new File(filePath));","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"marquestye"},"content":" int lineCounter \u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"marquestye"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"marquestye"},"content":" if (lineCounter \u003d\u003d index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"marquestye"},"content":" lineCounter++;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"marquestye"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"marquestye"},"content":" lineCounter++;","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"marquestye"},"content":" history.add(fileScanner.nextLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"marquestye"},"content":" FileWriter writer \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"marquestye"},"content":" while (history.size() \u003e 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"marquestye"},"content":" writer.write(history.remove(0) + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"marquestye"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"marquestye"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Error - unable to access task file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":90}},{"path":"src/main/java/duck/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"import duck.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":" public void showWelcomeMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" String greeting \u003d \"Quack! I\u0027m Duck!\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":" \"What can I do for you?\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"marquestye"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"marquestye"},"content":" public void showExitMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"marquestye"},"content":" String bye \u003d \"Quack! Hope to see you again soon!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"marquestye"},"content":" System.out.println(bye);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"marquestye"},"content":" scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"marquestye"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"marquestye"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"marquestye"},"content":" return input;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"marquestye"},"content":" public void showAddTaskMessage(Task task, int taskCount) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"marquestye"},"content":" String addTask \u003d \"Got it. I\u0027ve added this task:\\n\" + ","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"marquestye"},"content":" task + \"\\n\" + ","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"marquestye"},"content":" \"Now you have \" + taskCount + \" task(s) in the list.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"marquestye"},"content":" System.out.println(addTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"marquestye"},"content":" public void showAllTasks(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"marquestye"},"content":" if (tasks.getTaskCount() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"marquestye"},"content":" System.out.println(\"You have no tasks yet.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"marquestye"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"marquestye"},"content":" String allTasks \u003d \"Here are the tasks in your list:\\n\" + ","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"marquestye"},"content":" tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"marquestye"},"content":" System.out.println(allTasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"marquestye"},"content":" public void showMarkTaskMessage(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"marquestye"},"content":" String markTask \u003d \"Nice! I\u0027ve marked this task as done:\\n\" + ","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"marquestye"},"content":" task;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"marquestye"},"content":" System.out.println(markTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"marquestye"},"content":" public void showUnmarkTaskMessage(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"marquestye"},"content":" String unmarkTask \u003d \"OK, I\u0027ve unmarked this task:\\n\" + ","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"marquestye"},"content":" task;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"marquestye"},"content":" System.out.println(unmarkTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"marquestye"},"content":" public void showDeleteTaskMessage(Task task, int taskCount) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"marquestye"},"content":" String deleteTask \u003d \"Noted. I\u0027ve removed this task:\\n\" + ","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"marquestye"},"content":" task + \"\\n\" + ","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"marquestye"},"content":" \"Now you have \" + taskCount + \" task(s) in the list.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"marquestye"},"content":" System.out.println(deleteTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"marquestye"},"content":" public void showErrorMessage(DuckException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"marquestye"},"content":" String error \u003d e.getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"marquestye"},"content":" System.out.println(error);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":82}},{"path":"src/main/java/duck/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import duck.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"import duck.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"import duck.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"import duck.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":" private Task newTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" public AddCommand(Task newTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":" this.newTask \u003d newTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":" public void execute(TaskList tasks, Ui ui,Storage storage) throws DuckException{","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":" ui.showAddTaskMessage(newTask, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"marquestye"},"content":" storage.addTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":23}},{"path":"src/main/java/duck/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import duck.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"import duck.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"import duck.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":" public abstract void execute(TaskList tasks, Ui ui,Storage storage) throws DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":" // Only ExitCommand should override and return true","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":" };","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":16}},{"path":"src/main/java/duck/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import duck.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"import duck.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"import duck.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"import duck.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" this.index \u003d index - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" public void execute(TaskList tasks, Ui ui,Storage storage) throws DuckException{","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":" Task tmpTask \u003d tasks.getTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":" tasks.delete(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":" ui.showDeleteTaskMessage(tmpTask, tasks.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":" storage.deleteTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":22}},{"path":"src/main/java/duck/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import duck.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"import duck.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"import duck.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":" public void execute(TaskList tasks, Ui ui,Storage storage) throws DuckException{","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":" ui.showExitMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" };","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":17}},{"path":"src/main/java/duck/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import duck.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"import duck.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"import duck.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":" public void execute(TaskList tasks, Ui ui,Storage storage) throws DuckException{","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":" ui.showAllTasks(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":12}},{"path":"src/main/java/duck/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import duck.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"import duck.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"import duck.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":" int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":" this.index \u003d index - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":" public void execute(TaskList tasks, Ui ui,Storage storage) throws DuckException{","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" tasks.mark(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":" ui.showMarkTaskMessage(tasks.getTask(index));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":" storage.updateTasks(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":20}},{"path":"src/main/java/duck/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import duck.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"import duck.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"import duck.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":" int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":" this.index \u003d index - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":" public void execute(TaskList tasks, Ui ui,Storage storage) throws DuckException{","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" tasks.unmark(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":" ui.showUnmarkTaskMessage(tasks.getTask(index));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":" storage.updateTasks(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":20}},{"path":"src/main/java/duck/task/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"import duck.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":" LocalDate deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":" public DeadlineTask(String name, boolean isDone, LocalDate deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":" super(name, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" private String formatDeadline() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":" return deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"marquestye"},"content":" public String stringify() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"marquestye"},"content":" String deadlineString \u003d formatDeadline();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"marquestye"},"content":" return \"D\" + super.stringify() + ","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"marquestye"},"content":" deadlineString.length() + \"/\" + deadlineString;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"marquestye"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"marquestye"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formatDeadline() + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"marquestye"},"content":" ","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"marquestye"},"content":" public static DeadlineTask parse(String fileLine, DateTimeFormatter dateFormatter) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"marquestye"},"content":" // Finding isDone","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"marquestye"},"content":" boolean isDone \u003d fileLine.charAt(1) \u003d\u003d \u00271\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"marquestye"},"content":" // Finding name","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"marquestye"},"content":" int slashIndex \u003d fileLine.indexOf(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"marquestye"},"content":" int nameLength \u003d Integer.parseInt(fileLine.substring(2, slashIndex));","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"marquestye"},"content":" String name \u003d fileLine.substring(slashIndex + 1, slashIndex + 1 + nameLength);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"marquestye"},"content":" // Finding deadline","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"marquestye"},"content":" int secondSlashIndex \u003d fileLine.indexOf(\"/\", slashIndex + 1); // The index of the next slash","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"marquestye"},"content":" String deadlineString \u003d fileLine.substring(secondSlashIndex + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"marquestye"},"content":" LocalDate deadline \u003d LocalDate.parse(deadlineString, dateFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"marquestye"},"content":" return new DeadlineTask(name, isDone, deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":50}},{"path":"src/main/java/duck/task/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"import duck.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":" LocalDate start;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":" LocalDate end;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":" public EventTask(String name, boolean isDone, LocalDate start, LocalDate end) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" super(name, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":" this.start \u003d start;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":" this.end \u003d end;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":" public String formatStart() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":" return start.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"marquestye"},"content":" public String formatEnd() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"marquestye"},"content":" return end.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"marquestye"},"content":" public String stringify() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"marquestye"},"content":" String startString \u003d formatStart();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"marquestye"},"content":" String endString \u003d formatEnd();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"marquestye"},"content":" return \"E\" + super.stringify() + ","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"marquestye"},"content":" startString.length() + \"/\" + startString + ","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"marquestye"},"content":" endString.length() + \"/\" + endString;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"marquestye"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"marquestye"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formatStart() + \" to \" + formatEnd() + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"marquestye"},"content":" public static EventTask parse(String fileLine, DateTimeFormatter dateFormatter) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"marquestye"},"content":" // Finding isDone","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"marquestye"},"content":" boolean isDone \u003d fileLine.charAt(1) \u003d\u003d \u00271\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"marquestye"},"content":" // Finding name","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"marquestye"},"content":" int slashIndex \u003d fileLine.indexOf(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"marquestye"},"content":" int nameLength \u003d Integer.parseInt(fileLine.substring(2, slashIndex));","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"marquestye"},"content":" String name \u003d fileLine.substring(slashIndex + 1, slashIndex + 1 + nameLength);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"marquestye"},"content":" // Finding start","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"marquestye"},"content":" int secondSlashIndex \u003d fileLine.indexOf(\"/\", slashIndex + 1); // The index of the next slash","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"marquestye"},"content":" String startString \u003d fileLine.substring(secondSlashIndex + 1, secondSlashIndex + 12);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"marquestye"},"content":" LocalDate start \u003d LocalDate.parse(startString, dateFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"marquestye"},"content":" // Finding end","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"marquestye"},"content":" int thirdSlashIndex \u003d fileLine.indexOf(\"/\", secondSlashIndex + 1); // The index of the next slash","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"marquestye"},"content":" String endString \u003d fileLine.substring(thirdSlashIndex + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"marquestye"},"content":" LocalDate end \u003d LocalDate.parse(endString, dateFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"marquestye"},"content":" return new EventTask(name, isDone, start, end);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":62}},{"path":"src/main/java/duck/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import duck.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"public abstract class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":" private String name;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":" private boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":" public Task(String name, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":" public void mark() throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":" if (this.isDone \u003d\u003d true) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Error - Task is already marked.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"marquestye"},"content":" public void unmark() throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"marquestye"},"content":" if (this.isDone \u003d\u003d false) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Error - Task is already unmarked.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"marquestye"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"marquestye"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"marquestye"},"content":" public String stringify() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"marquestye"},"content":" String done \u003d String.valueOf(this.isDone ? \u00271\u0027 : \u00270\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"marquestye"},"content":" String nameLength \u003d String.valueOf(this.name.length()) + \"/\";","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"marquestye"},"content":" return done + nameLength + this.name;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"marquestye"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"marquestye"},"content":" char done \u003d this.isDone ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"marquestye"},"content":" String str \u003d \"[\" + done + \"] \" + name;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"marquestye"},"content":" return str;","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":42}},{"path":"src/main/java/duck/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"import duck.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":" private int taskCount;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":" // Initialise new TaskList with no tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":" // For when no history is found","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":" this.taskCount \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":" // Initialise TaskList with existing tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":" // For when history is available","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"marquestye"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"marquestye"},"content":" this.taskCount \u003d tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"marquestye"},"content":" // Returns the number of tasks in the list","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"marquestye"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"marquestye"},"content":" return this.taskCount;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"marquestye"},"content":" // Appends a task to the list","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"marquestye"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"marquestye"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"marquestye"},"content":" taskCount++;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"marquestye"},"content":" public Task getTask(int index) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"marquestye"},"content":" return tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"marquestye"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Error - invalid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"marquestye"},"content":" public void mark(int index) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"marquestye"},"content":" Task currTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"marquestye"},"content":" currTask \u003d tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"marquestye"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Error - invalid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"marquestye"},"content":" currTask.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"marquestye"},"content":" public void unmark(int index) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"marquestye"},"content":" Task currTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"marquestye"},"content":" currTask \u003d tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"marquestye"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Error - invalid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"marquestye"},"content":" currTask.unmark();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"marquestye"},"content":" public void delete(int index) throws DuckException{","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"marquestye"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"marquestye"},"content":" tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"marquestye"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"marquestye"},"content":" throw new DuckException(\"Error - invalid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"marquestye"},"content":" taskCount--;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"marquestye"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"marquestye"},"content":" String allTasks \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"marquestye"},"content":" for (int i \u003d 0; i \u003c taskCount; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"marquestye"},"content":" allTasks +\u003d \"\\n\" + (i + 1) + \". \" + tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"marquestye"},"content":" return allTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":83}},{"path":"src/main/java/duck/task/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"public enum TaskType {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":" TODO,","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":" DEADLINE,","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":" EVENT,","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":7}},{"path":"src/main/java/duck/task/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"package duck.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"import duck.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":" public TodoTask(String name, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":" super(name, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":" public String stringify() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"marquestye"},"content":" return \"T\" + super.stringify();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"marquestye"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"marquestye"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"marquestye"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"marquestye"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"marquestye"},"content":" public static TodoTask parse(String fileLine) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"marquestye"},"content":" boolean isDone \u003d fileLine.charAt(1) \u003d\u003d \u00271\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"marquestye"},"content":" int slashIndex \u003d fileLine.indexOf(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"marquestye"},"content":" String name \u003d fileLine.substring(slashIndex + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"marquestye"},"content":" return new TodoTask(name, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"marquestye"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"marquestye"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"marquestye":27}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marquestye"},"content":"list","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"marquestye"},"content":"mark 1","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"marquestye"},"content":"unmark -1","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"marquestye"},"content":"todo task1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"marquestye"},"content":"deadline task2 /by tonight","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"marquestye"},"content":"event event1 /from tomorrow /to Friday","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"marquestye"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"marquestye"},"content":"mark 1","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"marquestye"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"marquestye"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"marquestye"},"content":"nonsense","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"marquestye"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"marquestye":12}},{"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":"marquestye"},"content":"java -classpath ..\\bin Duck \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"marquestye":1,"-":20}}] diff --git a/marquestye_ip_master/commits.json b/marquestye_ip_master/commits.json index b35c501d..3852efa2 100644 --- a/marquestye_ip_master/commits.json +++ b/marquestye_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"marquestye":[{"date":"2023-08-24","commitResults":[{"hash":"f462a76f8ce7bcc999bedce9d35bc3d2da1e03a3","isMergeCommit":false,"messageTitle":"renamed to Duck, replaced default greeting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":10}}},{"hash":"f6b4e69455d123669e8ae83aabfc33fe26b19f01","isMergeCommit":false,"messageTitle":"added echoing of input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"bd862f7f7289eb64ed62451d7a72296af830c3a4","isMergeCommit":false,"messageTitle":"added simple task list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":1}}},{"hash":"1448d7cc2d8015a8be0b05fd5177f1f9cf478a4a","isMergeCommit":false,"messageTitle":"added marking and unmarking","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":3}}},{"hash":"397cdf19ee658984d6c1efc1010826c03d91a07d","isMergeCommit":false,"messageTitle":"added different types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":7}}},{"hash":"5991044f096e03de40d9a8ed01c70413e648be00","isMergeCommit":false,"messageTitle":"added text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"83921bad4c90934cb5d78551c61bf1d5b078a581","isMergeCommit":false,"messageTitle":"basic error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":3}}},{"hash":"0c4add1267f39191f5fc86590753f6da065aca4c","isMergeCommit":false,"messageTitle":"added task deletion (inefficient)","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":1}}}]},{"date":"2023-08-25","commitResults":[{"hash":"eeae7cd94fc15c63768d8b02f01f91472a2bd2c9","isMergeCommit":false,"messageTitle":"fixed list bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":7}}}]},{"date":"2023-08-29","commitResults":[{"hash":"1149e1c462f31f4a62d279455e818180e3d692e2","isMergeCommit":false,"messageTitle":"Refactor to OOP with exceptions","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":134,"deletions":117}}},{"hash":"e3349b19e420c41d3a752b1a446ff1db02b99aca","isMergeCommit":false,"messageTitle":"fix and update new tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"d9fb60f1b71b5c165c6dc54348619aa5f421bb08","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":11,"deletions":19}}}]},{"date":"2023-08-30","commitResults":[{"hash":"c5eac3a166c62d7f5e589a5295a168410be44bed","isMergeCommit":false,"messageTitle":"Add basic saving function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":4}}},{"hash":"53b3bb069930a8210d0eb3f7c5eb9a23742b4749","isMergeCommit":false,"messageTitle":"Add history editing for marking","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":11}}},{"hash":"deb7291caae38d016732a7fe72ce326d52cd60e6","isMergeCommit":false,"messageTitle":"Add history editing for deletion","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"7c0ca0a3c86d5734eb8e619626429169312063c9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"028d5e53d7f499246ed6614f7040ad6c292c2e81","isMergeCommit":false,"messageTitle":"Add datetime recognition to DeadlineTask","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":3}}},{"hash":"5085789c623b00af149cc902240832955ae2344f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"marquestye":{"java":462,"md":7,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":12}},"authorContributionVariance":{"marquestye":13410.59},"authorDisplayNameMap":{"marquestye":"CS2103T-T13-1 TYE ..QUES"}} +{"authorDailyContributionsMap":{"marquestye":[{"date":"2023-08-24","commitResults":[{"hash":"f462a76f8ce7bcc999bedce9d35bc3d2da1e03a3","isMergeCommit":false,"messageTitle":"renamed to Duck, replaced default greeting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":10}}},{"hash":"f6b4e69455d123669e8ae83aabfc33fe26b19f01","isMergeCommit":false,"messageTitle":"added echoing of input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"bd862f7f7289eb64ed62451d7a72296af830c3a4","isMergeCommit":false,"messageTitle":"added simple task list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":1}}},{"hash":"1448d7cc2d8015a8be0b05fd5177f1f9cf478a4a","isMergeCommit":false,"messageTitle":"added marking and unmarking","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":3}}},{"hash":"397cdf19ee658984d6c1efc1010826c03d91a07d","isMergeCommit":false,"messageTitle":"added different types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":7}}},{"hash":"5991044f096e03de40d9a8ed01c70413e648be00","isMergeCommit":false,"messageTitle":"added text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"83921bad4c90934cb5d78551c61bf1d5b078a581","isMergeCommit":false,"messageTitle":"basic error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":3}}},{"hash":"0c4add1267f39191f5fc86590753f6da065aca4c","isMergeCommit":false,"messageTitle":"added task deletion (inefficient)","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":1}}}]},{"date":"2023-08-25","commitResults":[{"hash":"eeae7cd94fc15c63768d8b02f01f91472a2bd2c9","isMergeCommit":false,"messageTitle":"fixed list bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":7}}}]},{"date":"2023-08-29","commitResults":[{"hash":"1149e1c462f31f4a62d279455e818180e3d692e2","isMergeCommit":false,"messageTitle":"Refactor to OOP with exceptions","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":134,"deletions":117}}},{"hash":"e3349b19e420c41d3a752b1a446ff1db02b99aca","isMergeCommit":false,"messageTitle":"fix and update new tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"d9fb60f1b71b5c165c6dc54348619aa5f421bb08","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":11,"deletions":19}}}]},{"date":"2023-08-30","commitResults":[{"hash":"c5eac3a166c62d7f5e589a5295a168410be44bed","isMergeCommit":false,"messageTitle":"Add basic saving function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":4}}},{"hash":"53b3bb069930a8210d0eb3f7c5eb9a23742b4749","isMergeCommit":false,"messageTitle":"Add history editing for marking","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":11}}},{"hash":"deb7291caae38d016732a7fe72ce326d52cd60e6","isMergeCommit":false,"messageTitle":"Add history editing for deletion","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"7c0ca0a3c86d5734eb8e619626429169312063c9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"028d5e53d7f499246ed6614f7040ad6c292c2e81","isMergeCommit":false,"messageTitle":"Add datetime recognition to DeadlineTask","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":3}}},{"hash":"5085789c623b00af149cc902240832955ae2344f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"289d6e249856f69a2aa07e77866f58b0c05ede5a","isMergeCommit":false,"messageTitle":"Refactor into packages with OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":748,"deletions":462}}},{"hash":"461fcfdffab56f96045593a6fb8227f3bd309b78","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-Packages","A-MoreOOP","A-Exceptions"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"marquestye":{"java":748,"md":7,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":12}},"authorContributionVariance":{"marquestye":94266.0},"authorDisplayNameMap":{"marquestye":"CS2103T-T13-1 TYE ..QUES"}} diff --git a/maypfv_ip_master/authorship.json b/maypfv_ip_master/authorship.json index 28ca83f4..f2abcdbf 100644 --- a/maypfv_ip_master/authorship.json +++ b/maypfv_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/blip.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"D | 0 | eat | 2023-10-03 14:00","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"T | 0 | sleep","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"E | 0 | project meeting | 2023-10-03 10:00 | 2023-10-04 12:00","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":3}},{"path":"src/main/java/Blip.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"import java.util.*;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import java.io.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import java.nio.file.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"public class Blip {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" // File path for tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" private static String FILE_PATH \u003d \"./data/blip.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" private static void saveToFile(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" File fileDirectory \u003d file.getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" if (!fileDirectory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" fileDirectory.mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" fileWriter.write(task.saveToFileString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" } catch (IOException e2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Error saving to file: \" + e2.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":" private static ArrayList\u003cTask\u003e loadFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"maypfv"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"maypfv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"maypfv"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"maypfv"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"maypfv"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"maypfv"},"content":" FileReader fileReader \u003d new FileReader(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"maypfv"},"content":" BufferedReader finalReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"maypfv"},"content":" String lineToRead;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"maypfv"},"content":" while ((lineToRead \u003d finalReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"maypfv"},"content":" Task task \u003d Task.loadTaskFromFile(lineToRead);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"maypfv"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"maypfv"},"content":" finalReader.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"maypfv"},"content":" } catch (IOException e2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Error reading line: \" + e2.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"maypfv"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"maypfv"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"maypfv"},"content":" // Intro message by Blip.","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"maypfv"},"content":" String intro \u003d \"Hello! I\u0027m Blip\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"maypfv"},"content":" + \"What can I do for you?\";","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"maypfv"},"content":" // Outro message by Blip.","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"maypfv"},"content":" String outro \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"maypfv"},"content":" // Constant end trigger word to end the chat with outro.","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"maypfv"},"content":" String END_TRIGGER \u003d \"bye\";","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"maypfv"},"content":" // Constant list trigger word to display back stored text.","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"maypfv"},"content":" String LIST_TRIGGER \u003d \"list\";","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"maypfv"},"content":" // Constant mark trigger word to update status of task.","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"maypfv"},"content":" String MARK_TRIGGER \u003d \"mark\";","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"maypfv"},"content":" // Constant unmark trigger word to update status of task.","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"maypfv"},"content":" String UNMARK_TRIGGER \u003d \"unmark\";","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"maypfv"},"content":" // Constant deadline trigger word to create new task with deadline.","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"maypfv"},"content":" String DEADLINE_TRIGGER \u003d \"deadline\";","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"maypfv"},"content":" // Constant event trigger word to create new task with deadline.","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"maypfv"},"content":" String EVENT_TRIGGER \u003d \"event\";","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"maypfv"},"content":" // Constant to do trigger word to create new task with deadline.","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"maypfv"},"content":" String TODO_TRIGGER \u003d \"todo\";","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"maypfv"},"content":" // Constant delete trigger to delete task from list.","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"maypfv"},"content":" String DELETE_TRIGGER \u003d \"delete\";","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"maypfv"},"content":" // Constant empty string for exception handling.","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"maypfv"},"content":" String EMPTY \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"maypfv"},"content":" // Bot starts here!","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"maypfv"},"content":" System.out.println(intro);","lastModifiedDate":"2023-08-21"},{"lineNumber":93,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":94,"author":{"gitId":"maypfv"},"content":" ArrayList\u003cTask\u003e tasks \u003d loadFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"maypfv"},"content":" String userInput;","lastModifiedDate":"2023-08-21"},{"lineNumber":97,"author":{"gitId":"maypfv"},"content":" Scanner scanIn \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-21"},{"lineNumber":98,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-21"},{"lineNumber":99,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":100,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"maypfv"},"content":" while (!userInput.equals(END_TRIGGER)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":103,"author":{"gitId":"maypfv"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"maypfv"},"content":" if (!userInput.equals(LIST_TRIGGER)) {","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"maypfv"},"content":" // To mark a task.","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"maypfv"},"content":" if (userInput.split(\" \")[0].equals(MARK_TRIGGER)) {","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"maypfv"},"content":" // Missing task number to mark.","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"maypfv"},"content":" if (userInput.split(\"\\\\s+\", 2).length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"maypfv"},"content":" throw new EmptyTaskNumberException(\"!!! Missing Task Number Error !!!\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"maypfv"},"content":" int taskNum \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-22"},{"lineNumber":114,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"maypfv"},"content":" // Task number does not exist.","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"maypfv"},"content":" if (taskNum \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"maypfv"},"content":" throw new WrongNumberException(\"!!! Wrong Task Number Error !!!\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"maypfv"},"content":" Task taskToUpdate \u003d tasks.get(taskNum);","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"maypfv"},"content":" taskToUpdate.markStatus();","lastModifiedDate":"2023-08-22"},{"lineNumber":122,"author":{"gitId":"maypfv"},"content":" saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" + taskToUpdate.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":124,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":125,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"maypfv"},"content":" // To unmark a task.","lastModifiedDate":"2023-08-22"},{"lineNumber":127,"author":{"gitId":"maypfv"},"content":" } else if (userInput.split(\" \")[0].equals(UNMARK_TRIGGER)) {","lastModifiedDate":"2023-08-22"},{"lineNumber":128,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"maypfv"},"content":" // Missing task number to unmark.","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"maypfv"},"content":" if (userInput.split(\"\\\\s+\", 2).length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"maypfv"},"content":" throw new EmptyTaskNumberException(\"!!! Missing Task Number error !!!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"maypfv"},"content":" int taskNum \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"maypfv"},"content":" // Task number does not exist.","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"maypfv"},"content":" if (taskNum \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"maypfv"},"content":" throw new WrongNumberException(\"!!! Wrong Task Number Error !!!\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"maypfv"},"content":" Task taskToUpdate \u003d tasks.get(taskNum);","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"maypfv"},"content":" taskToUpdate.unmarkStatus();","lastModifiedDate":"2023-08-22"},{"lineNumber":141,"author":{"gitId":"maypfv"},"content":" saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Ok, I\u0027ve marked this task as not done yet:\\n\" + taskToUpdate.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":143,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"maypfv"},"content":" // To delete a task","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"maypfv"},"content":" } else if (userInput.split(\" \")[0].equals(DELETE_TRIGGER)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"maypfv"},"content":" // Missing task number to delete.","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"maypfv"},"content":" if (userInput.split(\"\\\\s+\", 2).length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"maypfv"},"content":" throw new EmptyTaskNumberException(\"!!! Missing Task Number error !!!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"maypfv"},"content":" int taskNum \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":155,"author":{"gitId":"maypfv"},"content":" // Task number does not exist.","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"maypfv"},"content":" if (taskNum \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"maypfv"},"content":" throw new WrongNumberException(\"!!! Wrong Task Number Error !!!\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"maypfv"},"content":" Task taskToDelete \u003d tasks.get(taskNum);","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Ok, I\u0027ve removed this task:\\n\" + taskToDelete.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"maypfv"},"content":" tasks.remove(taskNum);","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"maypfv"},"content":" saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"maypfv"},"content":" // For a deadline task","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"maypfv"},"content":" } else if (userInput.split(\" \")[0].equals(DEADLINE_TRIGGER)) {","lastModifiedDate":"2023-08-22"},{"lineNumber":168,"author":{"gitId":"maypfv"},"content":" String[] test \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"maypfv"},"content":" // Missing Deadline Description.","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"maypfv"},"content":" if (test.length \u003c 2 || test[1].equals(EMPTY)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"maypfv"},"content":" throw new EmptyDescriptionException(\"!!! Missing DEADLINE Description !!!\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"maypfv"},"content":" String[] deadlineInfo \u003d test[1].split(\"\\\\s*/by\\\\s*\");","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"maypfv"},"content":" LocalDateTime deadlineDateTime \u003d DateConverter.convertToDateTime(deadlineInfo[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"maypfv"},"content":" Deadline newDeadlineTask \u003d new Deadline(deadlineInfo[0], deadlineDateTime, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"maypfv"},"content":" tasks.add(newDeadlineTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"maypfv"},"content":" saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Alright! I\u0027ve added this task:\\n \" + newDeadlineTask.toString()","lastModifiedDate":"2023-08-22"},{"lineNumber":181,"author":{"gitId":"maypfv"},"content":" + \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":183,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":184,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"maypfv"},"content":" // For an event task","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"maypfv"},"content":" } else if (userInput.split(\" \")[0].equals(EVENT_TRIGGER)) {","lastModifiedDate":"2023-08-22"},{"lineNumber":187,"author":{"gitId":"maypfv"},"content":" String[] test \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"maypfv"},"content":" // Missing Event Description.","lastModifiedDate":"2023-08-23"},{"lineNumber":191,"author":{"gitId":"maypfv"},"content":" if (test.length \u003c 2 || test[1].equals(EMPTY)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"maypfv"},"content":" throw new EmptyDescriptionException(\"!!! Missing EVENT Description !!!\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":193,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":194,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"maypfv"},"content":" String[] eventInfo \u003d test[1].split(\" /from | /to \");","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"maypfv"},"content":" if (eventInfo.length \u003c 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"maypfv"},"content":" throw new InvalidCommandException(\"!!! Your command is incomplete !!!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"maypfv"},"content":" LocalDateTime eventFrom \u003d DateConverter.convertToDateTime(eventInfo[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"maypfv"},"content":" LocalDateTime eventTo \u003d DateConverter.convertToDateTime(eventInfo[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"maypfv"},"content":" Event newEventTask \u003d new Event(eventInfo[0], eventFrom, eventTo, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"maypfv"},"content":" tasks.add(newEventTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":204,"author":{"gitId":"maypfv"},"content":" saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Alright! I\u0027ve added this task:\\n \" + newEventTask.toString()","lastModifiedDate":"2023-08-22"},{"lineNumber":206,"author":{"gitId":"maypfv"},"content":" + \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":208,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":209,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"maypfv"},"content":" // For to do task","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"maypfv"},"content":" } else if (userInput.split(\" \")[0].equals(TODO_TRIGGER)) {","lastModifiedDate":"2023-08-22"},{"lineNumber":212,"author":{"gitId":"maypfv"},"content":" String[] test \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":213,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":214,"author":{"gitId":"maypfv"},"content":" // Missing TO DO Description.","lastModifiedDate":"2023-08-23"},{"lineNumber":215,"author":{"gitId":"maypfv"},"content":" if (test.length \u003c 2 || test[1].equals(EMPTY)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":216,"author":{"gitId":"maypfv"},"content":" throw new EmptyDescriptionException(\"!!! Missing TO DO Description !!!\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":217,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":218,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":219,"author":{"gitId":"maypfv"},"content":" ToDo newToDoTask \u003d new ToDo(test[1], false);","lastModifiedDate":"2023-08-30"},{"lineNumber":220,"author":{"gitId":"maypfv"},"content":" tasks.add(newToDoTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":221,"author":{"gitId":"maypfv"},"content":" saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":222,"author":{"gitId":"maypfv"},"content":" // if tasks \u003d null then assign tasks \u003d new ArrayList\u003cTask\u003e()","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Alright! I\u0027ve added this task:\\n \" + newToDoTask.toString()","lastModifiedDate":"2023-08-22"},{"lineNumber":224,"author":{"gitId":"maypfv"},"content":" + \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":225,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":226,"author":{"gitId":"maypfv"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":227,"author":{"gitId":"maypfv"},"content":" throw new InvalidCommandException(\"!!! Your command is invalid !!!\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":228,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":229,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":230,"author":{"gitId":"maypfv"},"content":" // To list out tasks.","lastModifiedDate":"2023-08-22"},{"lineNumber":231,"author":{"gitId":"maypfv"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":232,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":233,"author":{"gitId":"maypfv"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":234,"author":{"gitId":"maypfv"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i).toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":235,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":236,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-21"},{"lineNumber":237,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":238,"author":{"gitId":"maypfv"},"content":" } catch (EmptyTaskNumberException e1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":239,"author":{"gitId":"maypfv"},"content":" System.out.println(e1.getMessage() + \"\\nOh no! The task number cannot be empty.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":240,"author":{"gitId":"maypfv"},"content":" \"Please key in the task number you would like to mark/unmark.\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":241,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":242,"author":{"gitId":"maypfv"},"content":" } catch (WrongNumberException e2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":243,"author":{"gitId":"maypfv"},"content":" System.out.println(e2.getMessage() + \"Oh no! The task number does not exist.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":244,"author":{"gitId":"maypfv"},"content":" \"You can find out the tasks and their numbers by typing list.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":245,"author":{"gitId":"maypfv"},"content":" \"Please re-enter the correct task number to mark/unmark.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":246,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":247,"author":{"gitId":"maypfv"},"content":" } catch (EmptyDescriptionException e3) {","lastModifiedDate":"2023-08-23"},{"lineNumber":248,"author":{"gitId":"maypfv"},"content":" System.out.println(e3.getMessage() + \"Oh no! The task description cannot be empty.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":249,"author":{"gitId":"maypfv"},"content":" \"Please key in the task description, with timings where applicable.\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":250,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":251,"author":{"gitId":"maypfv"},"content":" } catch (InvalidCommandException e4) {","lastModifiedDate":"2023-08-23"},{"lineNumber":252,"author":{"gitId":"maypfv"},"content":" System.out.println(e4.getMessage() + \"Oh no! I don\u0027t understand what you mean. Please key in either\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":253,"author":{"gitId":"maypfv"},"content":" \"1. deadline [task description] /by [deadline datetime]\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":254,"author":{"gitId":"maypfv"},"content":" \"2. event [task description] /from [start datetime] /to [end datetime]\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":255,"author":{"gitId":"maypfv"},"content":" \"3. todo [task description].\");","lastModifiedDate":"2023-08-23"},{"lineNumber":256,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":257,"author":{"gitId":"maypfv"},"content":" } catch (IOException e5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":258,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Error loading file: \" + e5.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":259,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":260,"author":{"gitId":"maypfv"},"content":" } catch (DateTimeFormatException e6) {","lastModifiedDate":"2023-08-31"},{"lineNumber":261,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Error with date time format: \" + e6.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":262,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":263,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":264,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":265,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":266,"author":{"gitId":"maypfv"},"content":" // If \"bye\" is triggered, exit while loop and print outro message.","lastModifiedDate":"2023-08-22"},{"lineNumber":267,"author":{"gitId":"maypfv"},"content":" System.out.println(outro);","lastModifiedDate":"2023-08-22"},{"lineNumber":268,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":269,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":270,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":271,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"maypfv":271}},{"path":"src/main/java/DateConverter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"public class DateConverter {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":" private static String DATE_REGEX \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{2}:\\\\d{2}\";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" public static boolean isCorrectFormat(String dateTimeString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" Pattern pattern \u003d Pattern.compile(DATE_REGEX);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" Matcher matcher \u003d pattern.matcher(dateTimeString);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" return matcher.matches();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" public static LocalDateTime convertToDateTime(String dateTimeString) throws DateTimeFormatException{","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" if (isCorrectFormat(dateTimeString)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" dateTimeString \u003d dateTimeString.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" String[] dateTimeParts \u003d dateTimeString.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" String[] dateParts \u003d dateTimeParts[0].split(\"-\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" String[] timeParts \u003d dateTimeParts[1].split(\":\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" LocalDateTime localDateTime \u003d LocalDateTime.of(Integer.parseInt(dateParts[0]),","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" Integer.parseInt(dateParts[1]),","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" Integer.parseInt(dateParts[2]),","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" Integer.parseInt(timeParts[0]),","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" Integer.parseInt(timeParts[1]));","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" return localDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" throw new DateTimeFormatException(\"Please format your date time to be yyyy-mm-dd HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":31}},{"path":"src/main/java/DateTimeFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"public class DateTimeFormatException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":" public DateTimeFormatException(String message) { super(message); }","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" public Deadline(String description, LocalDateTime deadline, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" public String saveToFileString(){","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" return \"D \" + (super.isDone ? \"| 1 | \" : \"| 0 | \") + super.toString() + \" | \"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" + this.deadline.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" return \"[D]\" + super.getStatusIcon() + super.toString() + \" (by: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"maypfv":25}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":" public EmptyDescriptionException(String message) { super(message); }","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"maypfv":4}},{"path":"src/main/java/EmptyTaskNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"public class EmptyTaskNumberException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":" public EmptyTaskNumberException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"maypfv":7}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":" protected LocalDateTime eventFrom;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":" protected LocalDateTime eventTo;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" public Event(String description, LocalDateTime eventFrom, LocalDateTime eventTo, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" this.eventFrom \u003d eventFrom;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" this.eventTo \u003d eventTo;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" public String saveToFileString(){","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" return \"E \" + (super.isDone ? \"| 1 | \" : \"| 0 | \") + super.toString() + \" | \"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" + this.eventFrom.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" + \" | \"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" + this.eventTo.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" return \"[E]\" + super.getStatusIcon() + super.toString() + \" (from: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" + this.eventFrom.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" + \" to: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" + this.eventTo.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"maypfv":31}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":" public InvalidCommandException(String message) { super(message); }","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"maypfv":4}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":" protected boolean isSplit;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" this.isSplit \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" return (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" public void markStatus() {","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" public void unmarkStatus() {","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" public abstract String saveToFileString();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"maypfv"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"maypfv"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"maypfv"},"content":" public static Task loadTaskFromFile(String lineToLoad) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"maypfv"},"content":" String[] taskComponents \u003d lineToLoad.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"maypfv"},"content":" String taskType \u003d taskComponents[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"maypfv"},"content":" boolean isDone \u003d taskComponents[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"maypfv"},"content":" String taskDescription \u003d taskComponents[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"maypfv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"maypfv"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"maypfv"},"content":" return new ToDo(taskDescription, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"maypfv"},"content":" if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"maypfv"},"content":"/* String deadline \u003d taskComponents[3];*/","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"maypfv"},"content":" LocalDateTime deadlineDateTime \u003d DateConverter.convertToDateTime(taskComponents[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"maypfv"},"content":" Deadline newDeadlineTask \u003d new Deadline(taskDescription, deadlineDateTime, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"maypfv"},"content":" return newDeadlineTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"maypfv"},"content":" if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"maypfv"},"content":"/* String eventFrom \u003d taskComponents[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"maypfv"},"content":" String eventTo \u003d taskComponents[4];*/","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"maypfv"},"content":" LocalDateTime eventFrom \u003d DateConverter.convertToDateTime(taskComponents[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"maypfv"},"content":" LocalDateTime eventTo \u003d DateConverter.convertToDateTime(taskComponents[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"maypfv"},"content":" Event newEventTask \u003d new Event(taskDescription, eventFrom, eventTo, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"maypfv"},"content":" return newEventTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"maypfv"},"content":" } catch (DateTimeFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Error with date time format in file: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"maypfv"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"maypfv":66}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" public String saveToFileString(){","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" return \"T \" + (super.isDone ? \"| 1 | \" : \"| 0 | \") + super.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" return \"[T]\" + super.getStatusIcon() + super.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"maypfv":16}},{"path":"src/main/java/WrongNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"public class WrongNumberException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":" public WrongNumberException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"maypfv":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"todo eat","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"deadline sleep /by 10pm","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"event meeting /from 4pm /to 6pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"maypfv":8}},{"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":"maypfv"},"content":"java -classpath ..\\bin Blip \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"maypfv":1,"-":20}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":" mainClass.set(\"blip.Blip\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"maypfv"},"content":" archiveBaseName \u003d \"blip\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"maypfv":2,"-":40}},{"path":"data/blip.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"T | 0 | eat","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"D | 0 | eat | 2023-05-06 10:23","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"maypfv":2}},{"path":"src/main/java/blip/Blip.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.ui.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"import blip.storage.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"import blip.parser.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"import blip.exceptions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":"import blip.commands.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":"public class Blip {","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" // File path for tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" private static String FILE_PATH \u003d \"./data/blip.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" private BlipUI ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" private BlipStorage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" private BlipParser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" public Blip(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" this.ui \u003d new BlipUI();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" this.storage \u003d new BlipStorage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" this.parser \u003d new BlipParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" tasks \u003d storage.loadFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" } catch (BlipException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" ui.showLoadingErr();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"maypfv"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"maypfv"},"content":" ui.showIntro();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"maypfv"},"content":" Scanner scanIn \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"maypfv"},"content":" while (true) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"maypfv"},"content":" String userInput;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"maypfv"},"content":" userInput \u003d scanIn.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"maypfv"},"content":" Command command \u003d parser.parse(userInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"maypfv"},"content":" if (command instanceof ByeCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"maypfv"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"maypfv"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"maypfv"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"maypfv"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"maypfv"},"content":" new Blip(FILE_PATH).run();","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"maypfv":58}},{"path":"src/main/java/blip/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import blip.ui.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.storage.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" public ByeCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" public void execute(TaskList taskList, BlipUI ui, BlipStorage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" ui.showOutro();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":15}},{"path":"src/main/java/blip/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import blip.ui.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.storage.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" public abstract void execute(TaskList taskList, BlipUI ui, BlipStorage storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":11}},{"path":"src/main/java/blip/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import blip.ui.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.storage.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" public DeadlineCommand(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" public void execute(TaskList taskList, BlipUI ui, BlipStorage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" Deadline deadlineTask \u003d new Deadline(description, deadline, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" taskList.addTask(deadlineTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" storage.saveToFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" ui.addsTasksMsg(deadlineTask, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":26}},{"path":"src/main/java/blip/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import blip.ui.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.storage.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"import blip.exceptions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" public void execute(TaskList taskList, BlipUI ui, BlipStorage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" // Task number does not exist.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" if (this.index \u003c\u003d 0 || this.index \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" throw new WrongNumberException(\"!!! Wrong Task Number Error !!!\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" Task taskToDelete \u003d taskList.getTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" taskList.deleteTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" storage.saveToFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" ui.deletesTasksMsg(taskToDelete, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" } catch (WrongNumberException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" ui.showInvalidTaskNumErr();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":29}},{"path":"src/main/java/blip/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.ui.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"import blip.storage.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" LocalDateTime eventStart;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" LocalDateTime eventEnd;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" public EventCommand(String description, LocalDateTime eventStart, LocalDateTime eventEnd) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" this.eventStart \u003d eventStart;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" this.eventEnd \u003d eventEnd;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" public void execute(TaskList taskList, BlipUI ui, BlipStorage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" Event eventTask \u003d new Event(description, eventStart, eventEnd, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" taskList.addTask(eventTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" storage.saveToFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" ui.addsTasksMsg(eventTask, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":26}},{"path":"src/main/java/blip/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import blip.ui.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.storage.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" public InvalidCommand(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" public void execute(TaskList taskList, BlipUI ui, BlipStorage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" description \u003d description.toLowerCase();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" if (!containsCommands(description)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" ui.showInvalidCmdErr();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" ui.showListOfOtherCmds();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" public boolean containsCommands(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" input \u003d input.toLowerCase();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" if (description.contains(\"bye \") || description.contains(\"list \") || description.contains(\"mark \")","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" || description.contains(\"unmark \") || description.contains(\"delete \") || description.contains(\"todo \")","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" || description.contains(\"deadline \") || description.contains(\"event \")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"maypfv":32}},{"path":"src/main/java/blip/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import blip.ui.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.storage.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" public void execute(TaskList taskList, BlipUI ui, BlipStorage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" ui.listsTasksMsg(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":12}},{"path":"src/main/java/blip/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import blip.ui.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.storage.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"import blip.exceptions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" public void execute(TaskList taskList, BlipUI ui, BlipStorage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" // Task number does not exist.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" if (this.index \u003c 0 || this.index \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" throw new WrongNumberException(\"!!! Wrong Task Number Error !!!\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" Task taskToMark \u003d taskList.getTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" taskList.markTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" storage.saveToFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" ui.marksTasksMsg(taskToMark);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" } catch (WrongNumberException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" ui.showInvalidTaskNumErr();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":30}},{"path":"src/main/java/blip/commands/ToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import blip.ui.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.storage.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"public class ToDoCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" public ToDoCommand(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" public void execute(TaskList taskList, BlipUI ui, BlipStorage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" ToDo toDoTask \u003d new ToDo(description, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" taskList.addTask(toDoTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" storage.saveToFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" ui.addsTasksMsg(toDoTask, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":19}},{"path":"src/main/java/blip/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import blip.ui.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.storage.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"import blip.exceptions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" public void execute(TaskList taskList, BlipUI ui, BlipStorage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" // Task number does not exist.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" if (this.index \u003c 0 || this.index \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" throw new WrongNumberException(\"!!! Wrong Task Number Error !!!\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" Task taskToUnmark \u003d taskList.getTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" taskList.unmarkTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" storage.saveToFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" ui.unmarksTasksMsg(taskToUnmark);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" } catch (WrongNumberException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" ui.showInvalidTaskNumErr();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":30}},{"path":"src/main/java/blip/exceptions/BlipException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"public class BlipException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":" public BlipException(String message) { super(message); }","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":4}},{"path":"src/main/java/blip/exceptions/DateTimeFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"public class DateTimeFormatException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":" public DateTimeFormatException(String message) { super(message); }","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":4}},{"path":"src/main/java/blip/exceptions/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":" public EmptyDescriptionException(String message) { super(message); }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"maypfv":5}},{"path":"src/main/java/blip/exceptions/EmptyTaskNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"public class EmptyTaskNumberException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":" public EmptyTaskNumberException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"maypfv":8}},{"path":"src/main/java/blip/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":" public InvalidCommandException(String message) { super(message); }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"maypfv":5}},{"path":"src/main/java/blip/exceptions/WrongNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"public class WrongNumberException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":" public WrongNumberException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"maypfv":6}},{"path":"src/main/java/blip/parser/BlipParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import blip.exceptions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.ui.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.commands.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"public class BlipParser {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" private BlipUI ui \u003d new BlipUI();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" public static int parseToGetIndex (String input) throws EmptyTaskNumberException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" String[] components \u003d input.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" // Missing Delete Index.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" if (components.length \u003c 2 || components[1].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" throw new EmptyTaskNumberException(\"!!! Missing Task Number !!!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" int taskNum \u003d Integer.parseInt(components[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" return taskNum;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" public static String parseToDoInfo (String input) throws EmptyDescriptionException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" String[] components \u003d input.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" // Missing Deadline Description.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" if (components.length \u003c 2 || components[1].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" throw new EmptyDescriptionException(\"!!! Missing TO DO Description !!!\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" return components[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":" public static String[] parseDeadlineInfo (String input) throws EmptyDescriptionException {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":" String[] test \u003d input.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"maypfv"},"content":" // Missing Deadline Description.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"maypfv"},"content":" if (test.length \u003c 2 || test[1].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"maypfv"},"content":" throw new EmptyDescriptionException(\"!!! Missing DEADLINE Description !!!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"maypfv"},"content":" String[] components \u003d test[1].split(\"\\\\s*/by\\\\s*\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"maypfv"},"content":" if (components.length \u003c 2 || components[1].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"maypfv"},"content":" throw new EmptyDescriptionException(\"!!! Missing DEADLINE Date Time !!!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"maypfv"},"content":" String description \u003d components[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"maypfv"},"content":" String deadlineDateTime \u003d components[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"maypfv"},"content":" return new String[] {description, deadlineDateTime};","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"maypfv"},"content":" public static String[] parseEventInfo (String input) throws EmptyDescriptionException {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"maypfv"},"content":" String[] test \u003d input.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"maypfv"},"content":" // Missing Deadline Description.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"maypfv"},"content":" if (test.length \u003c 2 || test[1].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"maypfv"},"content":" throw new EmptyDescriptionException(\"!!! Missing EVENT Description !!!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"maypfv"},"content":" String[] components \u003d test[1].split(\" /from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"maypfv"},"content":" if (components.length \u003c 3 || components[1].equals(\"\") || components[2].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"maypfv"},"content":" throw new EmptyDescriptionException(\"!!! Missing EVENT Start/End Date Time !!!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"maypfv"},"content":" String description \u003d components[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"maypfv"},"content":" String eventStart \u003d components[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"maypfv"},"content":" String eventEnd \u003d components[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"maypfv"},"content":" return new String[] {description, eventStart, eventEnd};","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"maypfv"},"content":" public Command parse(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"maypfv"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"maypfv"},"content":" String[] parts \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"maypfv"},"content":" String command \u003d parts[0].toLowerCase();","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"maypfv"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"maypfv"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"maypfv"},"content":" return new ByeCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"maypfv"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"maypfv"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"maypfv"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"maypfv"},"content":" int indexToDelete \u003d parseToGetIndex(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"maypfv"},"content":" return new DeleteCommand(indexToDelete);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"maypfv"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"maypfv"},"content":" String toDoDescription \u003d parseToDoInfo(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"maypfv"},"content":" return new ToDoCommand(toDoDescription);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"maypfv"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"maypfv"},"content":" String[] deadlineInfo \u003d parseDeadlineInfo(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"maypfv"},"content":" return new DeadlineCommand(deadlineInfo[0], DateConverter.convertToDateTime(deadlineInfo[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"maypfv"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"maypfv"},"content":" String[] eventInfo \u003d parseEventInfo(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"maypfv"},"content":" return new EventCommand(eventInfo[0], DateConverter.convertToDateTime(eventInfo[1]),","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"maypfv"},"content":" DateConverter.convertToDateTime(eventInfo[2]));","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"maypfv"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"maypfv"},"content":" int indexToMark \u003d parseToGetIndex(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"maypfv"},"content":" return new MarkCommand(indexToMark);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"maypfv"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"maypfv"},"content":" int indexToUnmark \u003d parseToGetIndex(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"maypfv"},"content":" return new UnmarkCommand(indexToUnmark);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"maypfv"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"maypfv"},"content":" return new InvalidCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"maypfv"},"content":" } catch (EmptyTaskNumberException e2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"maypfv"},"content":" System.out.println(e2.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"maypfv"},"content":" ui.showEmptyTaskNumErr();","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"maypfv"},"content":" } catch (EmptyDescriptionException e3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"maypfv"},"content":" System.out.println(e3.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"maypfv"},"content":" ui.showEmptyDescErr();","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"maypfv"},"content":" } catch (DateTimeFormatException e4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"maypfv"},"content":" System.out.println(e4.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"maypfv"},"content":" ui.showDateTimeFormatErr();","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"maypfv"},"content":" return new InvalidCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":108}},{"path":"src/main/java/blip/parser/DateConverter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"import blip.exceptions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"public class DateConverter {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" private static String DATE_REGEX \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{2}:\\\\d{2}\";","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" public static boolean isCorrectFormat(String dateTimeString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" Pattern pattern \u003d Pattern.compile(DATE_REGEX);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" Matcher matcher \u003d pattern.matcher(dateTimeString);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" return matcher.matches();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" public static LocalDateTime convertToDateTime(String dateTimeString) throws DateTimeFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" if (isCorrectFormat(dateTimeString)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" dateTimeString \u003d dateTimeString.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" String[] dateTimeParts \u003d dateTimeString.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" String[] dateParts \u003d dateTimeParts[0].split(\"-\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" String[] timeParts \u003d dateTimeParts[1].split(\":\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" LocalDateTime localDateTime \u003d LocalDateTime.of(Integer.parseInt(dateParts[0]),","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" Integer.parseInt(dateParts[1]),","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" Integer.parseInt(dateParts[2]),","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" Integer.parseInt(timeParts[0]),","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" Integer.parseInt(timeParts[1]));","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" return localDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" throw new DateTimeFormatException(\"Error with date time format: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":32}},{"path":"src/main/java/blip/storage/BlipStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"import blip.exceptions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":"public class BlipStorage {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" private static String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" public BlipStorage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" public static TaskList loadFile() throws BlipException {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" FileReader fileReader \u003d new FileReader(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" BufferedReader finalReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" String lineToRead;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":" while ((lineToRead \u003d finalReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":" Task task \u003d Task.loadTaskFromFile(lineToRead);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"maypfv"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"maypfv"},"content":" finalReader.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"maypfv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Error reading line: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"maypfv"},"content":" } catch (DateTimeFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"maypfv"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Please format your date time to be yyyy-mm-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"maypfv"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"maypfv"},"content":" public static void saveToFile(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"maypfv"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"maypfv"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"maypfv"},"content":" File fileDirectory \u003d file.getParentFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"maypfv"},"content":" if (!fileDirectory.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"maypfv"},"content":" fileDirectory.mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"maypfv"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"maypfv"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"maypfv"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"maypfv"},"content":" fileWriter.write(task.saveToFileString() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"maypfv"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"maypfv"},"content":" } catch (IOException e2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Error saving to file: \" + e2.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":63}},{"path":"src/main/java/blip/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" public Deadline(String description, LocalDateTime deadline, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" public String saveToFileString(){","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" return \"D \" + (super.isDone ? \"| 1 | \" : \"| 0 | \") + super.toString() + \" | \"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" + this.deadline.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" return \"[D]\" + super.getStatusIcon() + super.toString() + \" (by: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"maypfv":26}},{"path":"src/main/java/blip/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" protected LocalDateTime eventFrom;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" protected LocalDateTime eventTo;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" public Event(String description, LocalDateTime eventFrom, LocalDateTime eventTo, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" this.eventFrom \u003d eventFrom;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" this.eventTo \u003d eventTo;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" public String saveToFileString(){","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" return \"E \" + (super.isDone ? \"| 1 | \" : \"| 0 | \") + super.toString() + \" | \"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" + this.eventFrom.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" + \" | \"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" + this.eventTo.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" return \"[E]\" + super.getStatusIcon() + super.toString() + \" (from: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" + this.eventFrom.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" + \" to: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":" + this.eventTo.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":" + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"maypfv":33}},{"path":"src/main/java/blip/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.exceptions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import blip.parser.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" protected boolean isSplit;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" this.isSplit \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" return (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" public void markStatus() {","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" public void unmarkStatus() {","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"maypfv"},"content":" public abstract String saveToFileString();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"maypfv"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"maypfv"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"maypfv"},"content":" public static Task loadTaskFromFile(String lineToLoad) throws DateTimeFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"maypfv"},"content":" String[] taskComponents \u003d lineToLoad.split(\" \\\\| \");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"maypfv"},"content":" String taskType \u003d taskComponents[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"maypfv"},"content":" boolean isDone \u003d taskComponents[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"maypfv"},"content":" String taskDescription \u003d taskComponents[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"maypfv"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"maypfv"},"content":" return new ToDo(taskDescription, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"maypfv"},"content":" if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"maypfv"},"content":" LocalDateTime deadlineDateTime \u003d DateConverter.convertToDateTime(taskComponents[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"maypfv"},"content":" Deadline newDeadlineTask \u003d new Deadline(taskDescription, deadlineDateTime, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"maypfv"},"content":" return newDeadlineTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"maypfv"},"content":" if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"maypfv"},"content":" LocalDateTime eventFrom \u003d DateConverter.convertToDateTime(taskComponents[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"maypfv"},"content":" LocalDateTime eventTo \u003d DateConverter.convertToDateTime(taskComponents[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"maypfv"},"content":" Event newEventTask \u003d new Event(taskDescription, eventFrom, eventTo, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"maypfv"},"content":" return newEventTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"maypfv"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"maypfv":63}},{"path":"src/main/java/blip/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"maypfv"},"content":" public void markTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"maypfv"},"content":" this.tasks.get(index).markStatus();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"maypfv"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"maypfv"},"content":" this.tasks.get(index).unmarkStatus();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":42}},{"path":"src/main/java/blip/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" public String saveToFileString(){","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" return \"T \" + (super.isDone ? \"| 1 | \" : \"| 0 | \") + super.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" return \"[T]\" + super.getStatusIcon() + super.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"maypfv":18}},{"path":"src/main/java/blip/ui/BlipUI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import blip.tasks.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"public class BlipUI {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":" public void showIntro() {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" // Intro message by Blip.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" String intro \u003d \"Hello! I\u0027m Blip\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" + \"What can I do for you?\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" System.out.println(intro);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" public void showOutro() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" // Outro message by Blip.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" String outro \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" System.out.println(outro);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" public void showEmptyTaskNumErr() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" System.out.println(\"\\nOh no! The task number cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Please key in the task number you would like to mark/unmark/delete.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" public void showInvalidTaskNumErr() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Oh no! The task number does not exist.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" System.out.println(\"You can find out the tasks and their numbers by typing list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Please re-enter the correct task number to mark/unmark/delete.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":" public void showEmptyDescErr() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Oh no! The task description cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Please key in the task description, with date time where applicable.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"maypfv"},"content":" System.out.println(\"1. deadline [task description] /by [yyyy-MM-dd HH:mm]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"maypfv"},"content":" System.out.println(\"2. event [task description] /from [yyyy-MM-dd HH:mm] /to [yyyy-MM-dd HH:mm]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"maypfv"},"content":" System.out.println(\"3. todo [task description].\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"maypfv"},"content":" public void showInvalidCmdErr() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Oh no! I don\u0027t understand what you mean. Please key in either\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"maypfv"},"content":" System.out.println(\"1. deadline [task description] /by [yyyy-MM-dd HH:mm]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"maypfv"},"content":" System.out.println(\"2. event [task description] /from [yyyy-MM-dd HH:mm] /to [yyyy-MM-dd HH:mm]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"maypfv"},"content":" System.out.println(\"3. todo [task description].\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"maypfv"},"content":" public void showLoadingErr() {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Error loading file: \");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"maypfv"},"content":" public void showSavingErr() {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Error saving file: \");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"maypfv"},"content":" public void showDateTimeFormatErr() {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Please format your date time to be yyyy-mm-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"maypfv"},"content":" public void showListOfOtherCmds() {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"maypfv"},"content":" System.out.println(\"4. mark [task number]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"maypfv"},"content":" System.out.println(\"5. unmark [task number]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"maypfv"},"content":" System.out.println(\"6. delete [task number]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"maypfv"},"content":" System.out.println(\"7. list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"maypfv"},"content":" public static void listsTasksMsg(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"maypfv"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"maypfv"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"maypfv"},"content":" public void addsTasksMsg(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Alright! I\u0027ve added this task: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"maypfv"},"content":" System.out.println(task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"maypfv"},"content":" public void deletesTasksMsg(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Ok, I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"maypfv"},"content":" System.out.println(task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"maypfv"},"content":" public void marksTasksMsg(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"maypfv"},"content":" System.out.println(task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"maypfv"},"content":" public void unmarksTasksMsg(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"maypfv"},"content":" System.out.println(task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"maypfv"},"content":" public void showBlipErr() {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"maypfv"},"content":" System.out.println(\"Some error occurred!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"maypfv":97}},{"path":"src/test/java/blip/BlipTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip; //same package as the class being tested","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"public class BlipTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" public void dummyTest(){","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" public void anotherDummyTest(){","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" assertEquals(4, 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"maypfv":17}},{"path":"src/test/java/blip/parse/DateConverterTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.parse;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import blip.parser.DateConverter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"import blip.exceptions.DateTimeFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":"public class DateConverterTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" public void convertDateTimeTest_validDateTime_success() throws DateTimeFormatException{","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" assertEquals(LocalDateTime.of(2023,10,3,10,20)","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" ,DateConverter.convertToDateTime(\"2023-10-03 10:20\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" assertEquals(LocalDateTime.of(2012,12,12,12,12)","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" ,DateConverter.convertToDateTime(\"2012-12-12 12:12\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" public void convertDateTimeTest_throwsException_success() throws DateTimeFormatException{","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" assertEquals(LocalDateTime.of(2023,10,3,10,20)","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" ,DateConverter.convertToDateTime(\"2023 10 03 10 20\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"maypfv"},"content":" assertEquals(\"Error with date time format: \", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"maypfv":32}},{"path":"src/test/java/blip/tasks/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"package blip.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"public class ToDoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"maypfv"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"maypfv"},"content":" public void saveToFileStringTest_markAndUnmark_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"maypfv"},"content":" ToDo todo \u003d new ToDo(\"Task A\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"maypfv"},"content":" assertEquals(\"T | 0 | Task A\", todo.saveToFileString());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"maypfv"},"content":" todo.markStatus();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"maypfv"},"content":" assertEquals(\"T | 1 | Task A\", todo.saveToFileString());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"maypfv"},"content":" todo.unmarkStatus();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"maypfv"},"content":" assertEquals(\"T | 0 | Task A\", todo.saveToFileString());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"maypfv"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"maypfv"},"content":" public void toStringTest_markAndUnmark_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"maypfv"},"content":" ToDo todo \u003d new ToDo(\"Task A\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"maypfv"},"content":" assertEquals(\"[T][ ] Task A\", todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"maypfv"},"content":" todo.markStatus();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"maypfv"},"content":" assertEquals(\"[T][X] Task A\", todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"maypfv"},"content":" todo.unmarkStatus();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"maypfv"},"content":" assertEquals(\"[T][ ] Task A\", todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"maypfv"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"maypfv"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"maypfv":27}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"maypfv"},"content":"todo eat","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"maypfv"},"content":"deadline sleep /by 10pm","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"maypfv"},"content":"event meeting /from 4pm /to 6pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"maypfv"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"maypfv"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"maypfv"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"maypfv"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"maypfv"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"maypfv":8}},{"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":"maypfv"},"content":"java -classpath ..\\bin Blip \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"maypfv":1,"-":20}}] diff --git a/maypfv_ip_master/commits.json b/maypfv_ip_master/commits.json index 2e83c3d2..77c03c7f 100644 --- a/maypfv_ip_master/commits.json +++ b/maypfv_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"maypfv":[{"date":"2023-08-21","commitResults":[{"hash":"aa62e89f36ea34e9668e4b6e0cc098b49fc4ffea","isMergeCommit":false,"messageTitle":"Delete: Duke file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":10}}},{"hash":"1f83e07ff0dacdaff84b6139b5a7030dbd70e89d","isMergeCommit":false,"messageTitle":"Add: Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"93fe6ca6ba8e6663bf0d8b4c1d66bbf14b19ac80","isMergeCommit":false,"messageTitle":"Add: Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":6}}}]},{"date":"2023-08-22","commitResults":[{"hash":"08f9dad2db8cecf794314737a661764ec7238cda","isMergeCommit":false,"messageTitle":"Added: Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":13}}},{"hash":"8bfdf973f7ba00d85fce23b2fa81302b79945e60","isMergeCommit":false,"messageTitle":"Added: Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":7}}},{"hash":"f3663057c44075d5b68467830acba3c5d4d51135","isMergeCommit":false,"messageTitle":"Added: Level 4 (First draft without inheritance)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":8}}},{"hash":"85d0028fb01aa2d5549940c74f191ce81c541580","isMergeCommit":false,"messageTitle":"New: Task class. New: Deadline, Event, Todo task classes inherited from Task class. Added: Level 4 (With inheritance)","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":87}}}]},{"date":"2023-08-23","commitResults":[{"hash":"86ed591f1782a1abbed47a007f2b04e0300ded3b","isMergeCommit":false,"messageTitle":"Added: Level 5 Exception Handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":55}}},{"hash":"e54186bdc1c9a2272779200a6c5cbf36f1aba54e","isMergeCommit":false,"messageTitle":"Added: Level 6 Delete Tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":9}}},{"hash":"03dd8f06598bfc2dc214a11c748199dc5c7dfa80","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":3,"deletions":3},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"385a49748b6db26e47513017efc65270465af69c","isMergeCommit":false,"messageTitle":"Added: Level 7 Saving to File and Loading File (Draft 1)","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":151,"deletions":43}}}]},{"date":"2023-08-31","commitResults":[{"hash":"8e280410576bc9e9b207e50b4e19c00f614a2e4d","isMergeCommit":false,"messageTitle":"Edited: Save and Load function implementations (Level 7)","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":16,"deletions":23}}},{"hash":"575358311845a7c7c91ed63ea9aec982c0b8abef","isMergeCommit":false,"messageTitle":"Add: LocalDateTime stored in Deadline and Event tasks","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":99,"deletions":38}}}]}]},"authorFileTypeContributionMap":{"maypfv":{"java":463,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":11}},"authorContributionVariance":{"maypfv":14469.286},"authorDisplayNameMap":{"maypfv":"CS2103T-T17-1 MAY ..HINN"}} +{"authorDailyContributionsMap":{"maypfv":[{"date":"2023-08-21","commitResults":[{"hash":"aa62e89f36ea34e9668e4b6e0cc098b49fc4ffea","isMergeCommit":false,"messageTitle":"Delete: Duke file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":10}}},{"hash":"1f83e07ff0dacdaff84b6139b5a7030dbd70e89d","isMergeCommit":false,"messageTitle":"Add: Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"93fe6ca6ba8e6663bf0d8b4c1d66bbf14b19ac80","isMergeCommit":false,"messageTitle":"Add: Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":6}}}]},{"date":"2023-08-22","commitResults":[{"hash":"08f9dad2db8cecf794314737a661764ec7238cda","isMergeCommit":false,"messageTitle":"Added: Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":13}}},{"hash":"8bfdf973f7ba00d85fce23b2fa81302b79945e60","isMergeCommit":false,"messageTitle":"Added: Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":7}}},{"hash":"f3663057c44075d5b68467830acba3c5d4d51135","isMergeCommit":false,"messageTitle":"Added: Level 4 (First draft without inheritance)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":8}}},{"hash":"85d0028fb01aa2d5549940c74f191ce81c541580","isMergeCommit":false,"messageTitle":"New: Task class. New: Deadline, Event, Todo task classes inherited from Task class. Added: Level 4 (With inheritance)","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":87}}}]},{"date":"2023-08-23","commitResults":[{"hash":"86ed591f1782a1abbed47a007f2b04e0300ded3b","isMergeCommit":false,"messageTitle":"Added: Level 5 Exception Handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":55}}},{"hash":"e54186bdc1c9a2272779200a6c5cbf36f1aba54e","isMergeCommit":false,"messageTitle":"Added: Level 6 Delete Tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":9}}},{"hash":"03dd8f06598bfc2dc214a11c748199dc5c7dfa80","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":3,"deletions":3},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"385a49748b6db26e47513017efc65270465af69c","isMergeCommit":false,"messageTitle":"Added: Level 7 Saving to File and Loading File (Draft 1)","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":151,"deletions":43}}}]},{"date":"2023-08-31","commitResults":[{"hash":"8e280410576bc9e9b207e50b4e19c00f614a2e4d","isMergeCommit":false,"messageTitle":"Edited: Save and Load function implementations (Level 7)","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":16,"deletions":23}}},{"hash":"575358311845a7c7c91ed63ea9aec982c0b8abef","isMergeCommit":false,"messageTitle":"Add: LocalDateTime stored in Deadline and Event tasks","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":99,"deletions":38}}},{"hash":"0408b703f606dc2dae8318a9e11b054375d15810","isMergeCommit":false,"messageTitle":"Added: moreOOP Classes (Draft 1)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":535,"deletions":250}}}]},{"date":"2023-09-01","commitResults":[{"hash":"c973dd6882af51503de91f301a121d7a3ed51921","isMergeCommit":false,"messageTitle":"Added: MoreOOP (Draft 2)","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":246,"deletions":327}}},{"hash":"2a24e09ae05d17837223bb8e35b767ff5e0a7771","isMergeCommit":false,"messageTitle":"Fix: MoreOOP (Draft 3)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":21}}},{"hash":"12f718124f390fbfb519be59a0225270630b9688","isMergeCommit":false,"messageTitle":"Fix: MoreOOP (Draft 4 Final)","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":51,"deletions":17}}},{"hash":"389ade62e1c21d07be8fd8100fe8503fa7488733","isMergeCommit":false,"messageTitle":"Fix: Small changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"8e4269c145cec0a8d7b95af9b47ad0289a1b1788","isMergeCommit":false,"messageTitle":"Add: Organised into packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":120,"deletions":12}}},{"hash":"5b17fe6d4f08aef42860f8be1e0c2bfd324169ec","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a14a4c3ef70fe5467609f78ce9b20d3809cd37b2","isMergeCommit":false,"messageTitle":"Set-up: Gradle build and run","messageBody":"","tags":["A-Packages","A-MoreOOP","A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"bbd76076f771fda83b524458d23405f0468dbbef","isMergeCommit":false,"messageTitle":"Add JUnit: Test cases for ToDo and DateTimeConverter","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":0}}},{"hash":"8920a3e3ab12a43f005b36c4e3da8d526a2b0009","isMergeCommit":false,"messageTitle":"Fix: Small fixes on ToDoTest file","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"maypfv":{"java":878,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":10}},"authorContributionVariance":{"maypfv":99413.17},"authorDisplayNameMap":{"maypfv":"CS2103T-T17-1 MAY ..HINN"}} diff --git a/mounilsankar_ip_master/authorship.json b/mounilsankar_ip_master/authorship.json index bfba2559..7e04de91 100644 --- a/mounilsankar_ip_master/authorship.json +++ b/mounilsankar_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" enableAssertions \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"mounilsankar":1,"-":42}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"D|0|return book |2019-10-15T18:00","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"E|0|join club |2019-01-14T19:00|2019-01-18T19:00","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"mounilsankar":2}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" private static TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" tasks \u003d new TaskList(this.storage.readTasksFromFile());","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" Ui.greet();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" while(!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" Ui.showError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"mounilsankar":38,"-":1}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.command.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidTaskException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" public static Command parse(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" //read first word in command","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" switch(words[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" return new ExitCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" return new DeleteCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" return new ListCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" return new MarkCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" return new UnmarkCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" return new TodoCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" return new DeadlineCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" return new EventCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":31}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" //path for file to read/right to","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" private final String FILE_PATH;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" public static final String DATETIME_INPUT_FORMAT \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" public static final DateTimeFormatter dateTimeInputFormatter","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" \u003d DateTimeFormatter.ofPattern(DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" this.FILE_PATH \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" public void writeTasksToFile(ArrayList\u003cTask\u003e taskList) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" //check if file path exists already or not","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" String fileDirectory \u003d \"./\" + FILE_PATH.split(\"/\",2)[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" File dir \u003d new File(fileDirectory);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" dir.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" fw.write(task.writeFileFormat() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" public ArrayList\u003cTask\u003e readTasksFromFile() throws FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" ArrayList\u003cTask\u003e savedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" Task task \u003d Task.readFromFile(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" savedTasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" return savedTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"mounilsankar":49}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" final String HORIZONTAL \u003d \"_____________________________________________________________\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" this.taskList \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" this.taskList.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" System.out.println(HORIZONTAL);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Now you have \" + this.taskList.size() + \" in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" System.out.println(HORIZONTAL);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" return this.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" public void deleteTask(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" this.taskList.remove(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" int length \u003d this.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" System.out.println(HORIZONTAL);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Noted! I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Now you have \" + length + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" System.out.println(HORIZONTAL);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" public void printTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" int len \u003dthis.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" for (int i \u003d 0; i \u003c len; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" int task_number \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" System.out.println(task_number","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":" + \". \"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"mounilsankar"},"content":" + t);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":54}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" final static String HORIZONTAL_LINE \u003d \"_____________________________________________________________\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" return command;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" public static void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" public static void greet() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" String logo \u003d \" .__\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" + \" ____ |__| ____ ____\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" + \"/ \\\\| |/ \\\\ / _ \\\\\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" + \"| | \\\\ | | ( \u003c_\u003e )\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" + \"|___| /__|___| /\\\\____/\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" + \" \\\\/ \\\\/\";","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Hello! I\u0027m NINO!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" public static void showError(DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":40}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" protected String fullCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" public Command(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" this.fullCommand \u003d fullCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" public abstract void execute(TaskList tasks , Ui ui, Storage storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":15}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidDateException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"public class DeadlineCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" public DeadlineCommand(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" if(words.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" String[] taskWithDeadline \u003d words[1].split(\"/\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" String c \u003d taskWithDeadline[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" if(taskWithDeadline.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" String[] splitTask \u003d taskWithDeadline[1].split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" if(splitTask.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(splitTask[1], Storage.dateTimeInputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" Deadline t \u003d new Deadline(c, deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" } catch(DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidDateException();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":46}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"public class DeleteCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" public DeleteCommand(String command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" super(command);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" tasks.deleteTask(Integer.parseInt(words[1]) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"☹ OOPS!!! I\u0027m sorry, please enter a valid index to mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":25}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidDateException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" public EventCommand(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" if(words.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" String[] splitCommand \u003d words[1].split(\"/\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" if(splitCommand.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" String c \u003d splitCommand[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" String[] splitDeadline \u003d splitCommand[1].split(\"/\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" if(splitDeadline.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" if(splitDeadline[0].split(\" \", 2).length \u003c 2","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" || splitDeadline[1].split(\" \", 2).length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" LocalDateTime from \u003d LocalDateTime.parse(splitDeadline[0].split(\" \", 2)[1].strip(), Storage.dateTimeInputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" LocalDateTime to \u003d LocalDateTime.parse(splitDeadline[1].split(\" \", 2)[1].strip(), Storage.dateTimeInputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" Event t \u003d new Event(c, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" } catch(DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidDateException();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":52}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" public ExitCommand(String command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" super(command);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" try{","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" storage.writeTasksToFile(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" throw new DukeException(\"Error in writing taskList to file!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":28}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" public ListCommand(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" tasks.printTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":22}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" public MarkCommand(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" Task t \u003d tasks.getTasks().get(Integer.parseInt(words[1]) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" t.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"☹ OOPS!!! I\u0027m sorry, please enter a valid index to mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":31}},{"path":"src/main/java/duke/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" public TodoCommand(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" if(words.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" Todo t \u003d new Todo(words[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":27}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" public UnmarkCommand(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" Task t \u003d tasks.getTasks().get(Integer.parseInt(words[1]) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" t.markUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"☹ OOPS!!! I\u0027m sorry, please enter a valid index to mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":31}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"public class DukeException extends RuntimeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"mounilsankar":6}},{"path":"src/main/java/duke/exception/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"public class InvalidArgumentException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":" public InvalidArgumentException(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":" super(\"☹ OOPS!!! I\u0027m sorry, but arguments to \" + s + \" cannot be empty\");","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"mounilsankar":6}},{"path":"src/main/java/duke/exception/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"public class InvalidDateException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":" public InvalidDateException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":" super(\"☹ OOPS!!! I\u0027m sorry, but your date is in the incorrect format! \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":" \"please key it in yyyy-mm-dd format! :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"mounilsankar":7}},{"path":"src/main/java/duke/exception/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"public class InvalidTaskException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":" public InvalidTaskException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":" super(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"mounilsankar":6}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" public static Deadline readFromFile(String[] components) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" boolean isDone \u003d components[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" Deadline deadline \u003d new Deadline(components[2], LocalDateTime.parse(components[3]));","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" if(isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" deadline.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" return deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" public String writeFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" return \"D|\" + super.writeFileFormat() + \"|\" + this.deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" return \"[D] \"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" + super.toString()","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" + \"(by: \"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"))","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"mounilsankar":33}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" public static Event readFromFile(String[] components) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" boolean isDone \u003d components[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" Event event \u003d new Event(components[2], LocalDateTime.parse(components[3]),","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" LocalDateTime.parse(components[4]));","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" if(isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" event.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" return event;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" public String writeFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" //store as E|1/0|this.start|this.end","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" return \"E|\" + super.writeFileFormat() + \"|\" + this.start + \"|\" + this.end;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" return \"[E] \"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" + super.toString()","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" + \"(from: \"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" + this.start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"))","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" + \" to: \"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" + this.end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"))","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"mounilsankar":38}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" protected static final String DATETIME_INPUT_FORMAT \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" protected static final DateTimeFormatter dateTimeInputFormatter","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" \u003d DateTimeFormatter.ofPattern(DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" public static Task readFromFile(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" String[] components \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" switch(components[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" case(\"T\"):","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" return Todo.readFromFile(components);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" case(\"D\"):","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" return Deadline.readFromFile(components);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" case(\"E\"):","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" return Event.readFromFile(components);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" public String writeFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" return (this.isDone ? \"1\" : \"0\") + \"|\" + this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" public void markDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" return(\"[\"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" + this.getStatusIcon()","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" + \"] \"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" + this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"mounilsankar":51}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":" public static Todo readFromFile(String[] components) {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" boolean isDone \u003d components[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" Todo todo \u003d new Todo(components[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" if(isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" todo.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" return todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" public String writeFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" return \"T|\" + super.writeFileFormat();","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"mounilsankar":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"mounilsankar":11}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" enableAssertions \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"mounilsankar":1,"-":42}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"D|0|return book |2019-10-15T18:00","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"E|0|join club |2019-01-14T19:00|2019-01-18T19:00","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"mounilsankar":2}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" * Represents the command line chat application Duke","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" * Constructs a Duke instance with the specified file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" * @param filePath File path which the Duke instance reads and writes from.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" tasks \u003d new TaskList(this.storage.readTasksFromFile());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" private void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" Ui.greet();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" while(!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" Ui.showError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" * Main method for the Duke instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" * @param args The command line arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"mounilsankar":49,"-":1}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.command.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidTaskException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" * Represents a parser class to parse user commands for Duke","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" * Parses a string input and returns the corresponding Command object.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" * If the command is invalid throws InvalidTaskException","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" * @param fullCommand The String command that is inputeby the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" * @return Command object corresponding to the string command.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" public static Command parse(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" //read first word in command","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" switch (words[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" return new ExitCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" return new DeleteCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" return new ListCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" return new MarkCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" return new UnmarkCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" return new TodoCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" return new DeadlineCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" return new EventCommand(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" case \"find\":","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" return new FindCommand(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":43}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" * Represents a storage class which takes care of the reading","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" * and writing of the list of tasks for Duke","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" //path for file to read/right to","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" private final String FILE_PATH;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" public static final String DATETIME_INPUT_FORMAT \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" public static final DateTimeFormatter dateTimeInputFormatter","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" \u003d DateTimeFormatter.ofPattern(DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" * Constructs a Storage instance with the specified filePath","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" * @param filePath The file path to read and write from","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" this.FILE_PATH \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" * Writes the tasks in the task list to a file as specified","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" * @param taskList The list of tasks to write","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" * @throws IOException Throws IOException when the writing is unsuccessful","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" public void writeTasksToFile(ArrayList\u003cTask\u003e taskList) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" //check if file path exists already or not","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" String fileDirectory \u003d \"./\" + FILE_PATH.split(\"/\",2)[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" File dir \u003d new File(fileDirectory);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" if (!dir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" dir.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" fw.write(task.writeFileFormat() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"mounilsankar"},"content":" * Reads saved tasks from file path","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"mounilsankar"},"content":" * @return Returns an arraylist of tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"mounilsankar"},"content":" * @throws FileNotFoundException Throws FileNotFoundException if the file path does not exist","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"mounilsankar"},"content":" public ArrayList\u003cTask\u003e readTasksFromFile() throws FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"mounilsankar"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"mounilsankar"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"mounilsankar"},"content":" ArrayList\u003cTask\u003e savedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"mounilsankar"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"mounilsankar"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"mounilsankar"},"content":" Task task \u003d Task.readFromFile(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"mounilsankar"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"mounilsankar"},"content":" savedTasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"mounilsankar"},"content":" return savedTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"mounilsankar":69}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" * A class to represent a list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new task list with the given list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" * @param tasks The list of tasks to add.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" this.taskList \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" * Adds a task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" * @param t The task to add.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" this.taskList.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Now you have \" + this.taskList.size() + \" in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" * Gets the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" * @return The list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" return this.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"mounilsankar"},"content":" * Deletes a task from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"mounilsankar"},"content":" * @param i The index of the task to delete.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"mounilsankar"},"content":" public void deleteTask(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"mounilsankar"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"mounilsankar"},"content":" this.taskList.remove(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"mounilsankar"},"content":" int length \u003d this.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Noted! I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"mounilsankar"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Now you have \" + length + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"mounilsankar"},"content":" * Prints the tasks in the list that contain the String s.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"mounilsankar"},"content":" * @param s The string to search among the tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"mounilsankar"},"content":" public void findMatching(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"mounilsankar"},"content":" int index \u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"mounilsankar"},"content":" for (Task t : this.taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"mounilsankar"},"content":" if (t.contains(s)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"mounilsankar"},"content":" System.out.println(index + \".\" + t);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"mounilsankar"},"content":" index +\u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"mounilsankar"},"content":" * Prints the tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"mounilsankar"},"content":" public void printTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"mounilsankar"},"content":" int len \u003dthis.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"mounilsankar"},"content":" for (int i \u003d 0; i \u003c len; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"mounilsankar"},"content":" int task_number \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"mounilsankar"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"mounilsankar"},"content":" System.out.println(task_number","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"mounilsankar"},"content":" + \".\"","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"mounilsankar"},"content":" + t);","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":100}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" * The Ui class handles user interface interactions and displays messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" final static String HORIZONTAL_LINE \u003d \"_____________________________________________________________\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" * Constructs a Ui object and initializes the scanner to read user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" * Reads and returns a user command from the standard input.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" * @return A string representing the user\u0027s input command.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" return command;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" * Displays a horizontal line to separate messages.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" public static void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" * Displays a greeting message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" public static void greet() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" String logo \u003d \" .__\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" + \" ____ |__| ____ ____\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" + \"/ \\\\| |/ \\\\ / _ \\\\\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" + \"| | \\\\ | | ( \u003c_\u003e )\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" + \"|___| /__|___| /\\\\____/\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" + \" \\\\/ \\\\/\";","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Hello! I\u0027m NINO!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"mounilsankar"},"content":" * Displays an error message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"mounilsankar"},"content":" * @param e A DukeException representing the error to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"mounilsankar"},"content":" public static void showError(DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"mounilsankar"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":64}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" * The Command class is an abstract base class for all commands that can be executed in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" * Each concrete subclass of Command represents a specific user command.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" protected String fullCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new Command object with the specified full command string.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" * @param fullCommand The full command string as entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" public Command(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" this.fullCommand \u003d fullCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" * @return true if the command is an exit command; false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" * Executes the command, performing the necessary actions on the task list, user interface, and storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" * @param tasks The task list to be operated on by the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" * @param ui The user interface to display messages or interact with the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" * @param storage The storage object to read from or write to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" public abstract void execute(TaskList tasks , Ui ui, Storage storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":38}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidDateException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" * The DeadlineCommand class represents a command to add a Deadline task to the task list in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" * It parses the user input and handles exceptions related to invalid input or date formatting.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new DeadlineCommand object with the specified full command string.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" * @param fullCommand The full command string as entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" public DeadlineCommand(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" * Executes the deadline command, adding a new deadline task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" * @param tasks The task list to which the deadline task will be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" * @param ui The user interface for displaying messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" * @param storage The storage object for reading from or writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" * @throws InvalidArgumentException If the command is missing required arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" * @throws InvalidDateException If the date provided is in an invalid format.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) throws InvalidArgumentException, InvalidDateException {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" String[] taskWithDeadline \u003d words[1].split(\"/\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" String c \u003d taskWithDeadline[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" if(taskWithDeadline.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" String[] splitTask \u003d taskWithDeadline[1].split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" if (splitTask.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"mounilsankar"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(splitTask[1], Storage.dateTimeInputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"mounilsankar"},"content":" Deadline t \u003d new Deadline(c, deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"mounilsankar"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"mounilsankar"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidDateException();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":65}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" * The DeleteCommand class represents a command to delete a task","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" * It parses the user input and handles exceptions related to invalid input.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new DeleteCommand object with the specified full command string.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" * @param fullCommand The full command string as entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" public DeleteCommand(String fullCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" * Executes the Delete command, deleting a task in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" * @param tasks The task list in which the task is to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" * @param ui The user interface for displaying messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" * @param storage The storage object for reading from or writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" * @throws InvalidArgumentException If the command is missing required arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" tasks.deleteTask(Integer.parseInt(words[1]) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"☹ OOPS!!! I\u0027m sorry, please enter a valid index to mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":44}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidDateException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" * The EventCommand class represents a command to add a Event task to the task list in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" * It parses the user input and handles exceptions related to invalid input or date formatting.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new EventCommand object with the specified full command string.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" * @param fullCommand The full command string as entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" public EventCommand(String fullCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" * Executes the Event command, adding a new Event task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" * @param tasks The task list to which the Event task will be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" * @param ui The user interface for displaying messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" * @param storage The storage object for reading from or writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" * @throws InvalidArgumentException If the command is missing required arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" * @throws InvalidDateException If the date provided is in an invalid format.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) throws InvalidArgumentException, InvalidDateException {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" String[] splitCommand \u003d words[1].split(\"/\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" if (splitCommand.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" String c \u003d splitCommand[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" String[] splitDeadline \u003d splitCommand[1].split(\"/\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" if (splitDeadline.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"mounilsankar"},"content":" if (splitDeadline[0].split(\" \", 2).length \u003c 2","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"mounilsankar"},"content":" || splitDeadline[1].split(\" \", 2).length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"mounilsankar"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"mounilsankar"},"content":" LocalDateTime from \u003d LocalDateTime.parse(splitDeadline[0].split(\" \", 2)[1].strip(), Storage.dateTimeInputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"mounilsankar"},"content":" LocalDateTime to \u003d LocalDateTime.parse(splitDeadline[1].split(\" \", 2)[1].strip(), Storage.dateTimeInputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"mounilsankar"},"content":" Event t \u003d new Event(c, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"mounilsankar"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"mounilsankar"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidDateException();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":71}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" * The ExitCommand class represents a command to exit the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" * It parses the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new ExitCommand object with the specified full command string.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" * @param fullCommand The full command string as entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" public ExitCommand(String fullCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" * Executes the Exit command, adding a new deadline task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" * @param tasks The task list from which the tasks will be read from.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" * @param ui The user interface for displaying messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" * @param storage The storage object for reading from or writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" * @throws DukeException If there is an error writing to file.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" storage.writeTasksToFile(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" throw new DukeException(\"Error in writing taskList to file!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":48}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" * The FindCommand class represents a command to search for tasks in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" * It searches for tasks that match a given keyword and displays the results to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new FindCommand object with the specified full command string.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" * @param fullCommand The full command string as entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" public FindCommand(String fullCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" * @return false since FindCommand is not an exit command.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit(){","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" * Executes the find command, searching for tasks that match a given keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" * @param tasks The task list to search for matching tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" * @param ui The user interface for displaying messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" * @param storage The storage object for reading from or writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" * @throws InvalidArgumentException If the command is missing the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" if(words.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"find\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" tasks.findMatching(words[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"mounilsankar":49}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" * The ListCommand class represents a command to list current tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" * It parses the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new ListCommand object with the specified full command string.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" * @param fullCommand The full command string as entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" public ListCommand(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" * Executes the List command, printing the list of current tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" * @param tasks The task list which contains the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" * @param ui The user interface for displaying messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" * @param storage The storage object for reading from or writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" tasks.printTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":40}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" * The MarkCommand class represents a command to mark tasks as complete.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" * It parses the user input and handles exceptions related to invalid input.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new MarkCommand object with the specified full command string.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" * @param fullCommand The full command string as entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" public MarkCommand(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" * Executes the Mark command, marking a task in tasks as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" * @param tasks The task list containing the tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" * @param ui The user interface for displaying messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" * @param storage The storage object for reading from or writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" * @throws InvalidArgumentException If the command is missing required arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" Task t \u003d tasks.getTasks().get(Integer.parseInt(words[1]) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" t.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"☹ OOPS!!! I\u0027m sorry, please enter a valid index to mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":50}},{"path":"src/main/java/duke/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" * The TodoCommand class represents a command to add a Todo task to the task list in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" * It parses the user input and handles exceptions related to invalid input.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new TodoCommand object with the specified full command string.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" * @param fullCommand The full command string as entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" public TodoCommand(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" * Executes the Todo command, adding a new Todo task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" * @param tasks The task list to which the Todo task will be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" * @param ui The user interface for displaying messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" * @param storage The storage object for reading from or writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" * @throws InvalidArgumentException If the command is missing required arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" Todo t \u003d new Todo(words[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":46}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidArgumentException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" * The UnmarkCommand class represents a command to unmark tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" * It parses the user input and handles exceptions related to invalid input.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new UnmarkCommand object with the specified full command string.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" * @param fullCommand The full command string as entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" public UnmarkCommand(String fullCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" super(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" * Executes the Unmark command, marking a task in tasks as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" * @param tasks The task list containing the tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" * @param ui The user interface for displaying messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" * @param storage The storage object for reading from or writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" * @throws InvalidArgumentException If the command is missing required arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" public void execute(TaskList tasks , Ui ui, Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" String[] words \u003d this.fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" Task t \u003d tasks.getTasks().get(Integer.parseInt(words[1]) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" t.markUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" Ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" throw new InvalidArgumentException(\"☹ OOPS!!! I\u0027m sorry, please enter a valid index to mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"mounilsankar":50}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":" * The DukeException class represents exceptions specific to the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":" * It is a subclass of RuntimeException and is used to handle custom application-related exceptions.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"public class DukeException extends RuntimeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new DukeException with the specified error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" * @param message The error message that describes the cause of the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"mounilsankar":17}},{"path":"src/main/java/duke/exception/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":" * The InvalidArgumentException class represents an exception that is thrown when invalid arguments","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":" * are provided to a command in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":" * It is a subclass of DukeException and provides a specific error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"public class InvalidArgumentException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new InvalidArgumentException with a custom error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" * @param s The name of the command for which the arguments are invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" public InvalidArgumentException(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" super(\"☹ OOPS!!! I\u0027m sorry, but arguments to \" + s + \" cannot be empty\");","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"mounilsankar":18}},{"path":"src/main/java/duke/exception/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":" * The InvalidDateException class represents an exception that is thrown when invalid dates","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":" * are input to a command in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":" * It is a subclass of DukeException and provides a specific error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"public class InvalidDateException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new InvalidDateException with an error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" public InvalidDateException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" super(\"☹ OOPS!!! I\u0027m sorry, but your date is in the incorrect format! \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" \"please key it in yyyy-mm-dd format! :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"mounilsankar":17}},{"path":"src/main/java/duke/exception/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":" * The InvalidTaskException class represents an exception that is thrown when invalid taks","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":" * are input to a command in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":" * It is a subclass of DukeException and provides a specific error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"public class InvalidTaskException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new InvalidTaskException with an error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" public InvalidTaskException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" super(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"mounilsankar":16}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" * The Deadline class represents a deadline task in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" * It is a subclass of the Task class and inherits its properties and methods.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new Deadline object with the specified description and deadline date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" * @param deadline The deadline date and time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" * Reads a deadline task from a file and returns a corresponding Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" * @param components An array of components parsed from a data file line.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" * @return A Deadline object representing the deadline task read from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" public static Deadline readFromFile(String[] components) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" boolean isDone \u003d components[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" Deadline deadline \u003d new Deadline(components[2], LocalDateTime.parse(components[3]));","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" deadline.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" return deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" * Returns the task in the format suitable for writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" * @return A string in the file format representing the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" public String writeFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" return \"D|\" + super.writeFileFormat() + \"|\" + this.deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":" * Returns a string representation of the deadline task, including its status icon, description,","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"mounilsankar"},"content":" * and the deadline date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"mounilsankar"},"content":" * @return A string representation of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"mounilsankar"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"mounilsankar"},"content":" return \"[D] \"","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"mounilsankar"},"content":" + super.toString()","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"mounilsankar"},"content":" + \"(by: \"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"mounilsankar"},"content":" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"))","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"mounilsankar"},"content":" + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"mounilsankar":63}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":" * The Event class represents an event task in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" * It is a subclass of the Task class and inherits its properties and methods.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new Event object with the specified description, start, and end date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" * @param description The description of the event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" * @param start The start date and time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" * @param end The end date and time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" * Reads an event task from a file and returns a corresponding Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" * @param components An array of components parsed from a data file line.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" * @return An Event object representing the event task read from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" public static Event readFromFile(String[] components) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" boolean isDone \u003d components[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" Event event \u003d new Event(components[2], LocalDateTime.parse(components[3]),","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" LocalDateTime.parse(components[4]));","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" event.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" return event;","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" * Returns the task in the format suitable for writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" * @return A string in the file format representing the event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" public String writeFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" //store as E|1/0|this.start|this.end","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":" return \"E|\" + super.writeFileFormat() + \"|\" + this.start + \"|\" + this.end;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"mounilsankar"},"content":" * Returns a string representation of the event task, including its status icon, description,","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"mounilsankar"},"content":" * and the start and end date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"mounilsankar"},"content":" * @return A string representation of the event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"mounilsankar"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"mounilsankar"},"content":" return \"[E] \"","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"mounilsankar"},"content":" + super.toString()","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"mounilsankar"},"content":" + \"(from: \"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"mounilsankar"},"content":" + this.start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"))","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"mounilsankar"},"content":" + \" to: \"","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"mounilsankar"},"content":" + this.end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\"))","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"mounilsankar"},"content":" + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"mounilsankar":69}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":" * The Task class represents a generic task in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" protected static final String DATETIME_INPUT_FORMAT \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" protected static final DateTimeFormatter dateTimeInputFormatter","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" \u003d DateTimeFormatter.ofPattern(DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new Task object with the specified description.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" * Reads a task from a file and returns a corresponding Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" * @param line The line containing task information from the data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" * @return A Task object representing the task read from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" public static Task readFromFile(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" String[] components \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" switch(components[0]) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" case(\"T\"):","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" return Todo.readFromFile(components);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" case(\"D\"):","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" return Deadline.readFromFile(components);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" case(\"E\"):","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" return Event.readFromFile(components);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" * Returns the task in the format suitable for writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" * @return A string in the file format representing the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":" public String writeFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"mounilsankar"},"content":" return (this.isDone ? \"1\" : \"0\") + \"|\" + this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"mounilsankar"},"content":" * Gets the status icon for the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"mounilsankar"},"content":" * @return \"X\" if the task is done, \" \" (space) otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"mounilsankar"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"mounilsankar"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"mounilsankar"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"mounilsankar"},"content":" public void markDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"mounilsankar"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"mounilsankar"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"mounilsankar"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"mounilsankar"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"mounilsankar"},"content":" * Returns a boolean value indicating if the tasks description contains the string s.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"mounilsankar"},"content":" * @param s The String to be searched in task descripton","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"mounilsankar"},"content":" * @return A true if s in task description and false if not.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"mounilsankar"},"content":" public boolean contains(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"mounilsankar"},"content":" return this.description.contains(s);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"mounilsankar"},"content":" * Returns a string representation of the task, including its status icon and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"mounilsankar"},"content":" * @return A string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"mounilsankar"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"mounilsankar"},"content":" return(\"[\"","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"mounilsankar"},"content":" + this.getStatusIcon()","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"mounilsankar"},"content":" + \"] \"","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"mounilsankar"},"content":" + this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"mounilsankar":99}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":" * The Todo class represents a to-do task in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":" * It is a subclass of the Task class and inherits its properties and methods.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" * Constructs a new Todo object with the specified description.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" * @param description The description of the todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" * Reads a todo task from a file and returns a corresponding Todo object.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" * @param components An array of components parsed from a data file line.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" * @return A Todo object representing the to-do task read from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" public static Todo readFromFile(String[] components) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" boolean isDone \u003d components[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" Todo todo \u003d new Todo(components[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" if(isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" todo.markDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" return todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" * Returns the task in the format suitable for writing to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" * @return A string in the file format representing the todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"mounilsankar"},"content":" public String writeFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"mounilsankar"},"content":" return \"T|\" + super.writeFileFormat();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"mounilsankar"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"mounilsankar"},"content":" * Returns a string representation of the todo task, including its status icon and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"mounilsankar"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"mounilsankar"},"content":" * @return A string representation of the todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"mounilsankar"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"mounilsankar"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"mounilsankar"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"mounilsankar"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"mounilsankar":52}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.command.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import duke.exception.InvalidTaskException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" public void testParse_ValidCommands() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" // Test valid commands and their corresponding Command classes","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" assertEquals(ExitCommand.class, Parser.parse(\"bye\").getClass());","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" assertEquals(DeleteCommand.class, Parser.parse(\"delete 2\").getClass());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" assertEquals(ListCommand.class, Parser.parse(\"list\").getClass());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":" assertEquals(MarkCommand.class, Parser.parse(\"mark 1\").getClass());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" assertEquals(UnmarkCommand.class, Parser.parse(\"unmark 3\").getClass());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" assertEquals(TodoCommand.class, Parser.parse(\"todo Buy groceries\").getClass());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" assertEquals(DeadlineCommand.class, Parser.parse(\"deadline Submit report /by 2023-09-10 1900\").getClass());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" assertEquals(EventCommand.class, Parser.parse(\"event Team meeting /from 2023-09-15 1900 /to 2023-09-15 2100\").getClass());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" public void testParse_InvalidCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" // Test an invalid command","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" assertThrows(InvalidTaskException.class, () -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" Parser.parse(\"invalidCommand\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":" assertThrows(InvalidTaskException.class, () -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":" Parser.parse(\"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"mounilsankar"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"mounilsankar"},"content":" assertThrows(InvalidTaskException.class, () -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"mounilsankar"},"content":" Parser.parse(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"mounilsankar"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"mounilsankar":36}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":" public void testAddTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"mounilsankar"},"content":" Todo task \u003d new Todo(\"Buy groceries\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"mounilsankar"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"mounilsankar"},"content":" assertEquals(1, tasks.getTasks().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"mounilsankar"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"mounilsankar"},"content":" public void testDeleteTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"mounilsankar"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"mounilsankar"},"content":" Todo task1 \u003d new Todo(\"Buy groceries\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"mounilsankar"},"content":" Todo task2 \u003d new Todo(\"Do dishes\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"mounilsankar"},"content":" tasks.addTask(task1);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"mounilsankar"},"content":" tasks.addTask(task2);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"mounilsankar"},"content":" assertEquals(2, tasks.getTasks().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"mounilsankar"},"content":" tasks.deleteTask(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"mounilsankar"},"content":" assertEquals(1, tasks.getTasks().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"mounilsankar"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"mounilsankar"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"mounilsankar"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"mounilsankar":30}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"mounilsankar"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"mounilsankar"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"mounilsankar"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"mounilsankar"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"mounilsankar"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"mounilsankar"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"mounilsankar"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"mounilsankar"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"mounilsankar"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"mounilsankar"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"mounilsankar"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"mounilsankar":11}}] diff --git a/mounilsankar_ip_master/commits.json b/mounilsankar_ip_master/commits.json index 7bc0cd75..f8608f99 100644 --- a/mounilsankar_ip_master/commits.json +++ b/mounilsankar_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"mounilsankar":[{"date":"2023-08-22","commitResults":[{"hash":"22eaa6c789698fe5ad3d34f8bfb6d2561a53a18d","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":5}}},{"hash":"54db017ee8cc05dea3cdfa6a93429222c39da78b","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"0cab647f2ce85320bf32a3a8bf0e6c6822a6fdf9","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}}]},{"date":"2023-08-23","commitResults":[{"hash":"d90d0544cf68a30c201cffe16320411f15ad3c43","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"0da0051a82c7e4cecd7433f43204102497d3a430","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":6}}},{"hash":"4e4ad2f623d25ad309e861af76982b977e92d7a7","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":11}}},{"hash":"9fe5ab4074889995f20540a9e15604ae7529eb82","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":4,"deletions":4}}}]},{"date":"2023-08-24","commitResults":[{"hash":"4ea08876d674a9ca9ce4dbbf32e167250980a031","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":135,"deletions":72}}},{"hash":"00f115590c2ff2d3a9a7cd914e1fec88bb47f758","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"a22490cccc8b6f148796d2bf2aaf85eedadfe268","isMergeCommit":false,"messageTitle":"Implemented Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":1}}},{"hash":"54c434726b93d52a3460424ce7d0e541cfc19833","isMergeCommit":false,"messageTitle":"Merge branck-Level-7 to master","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"df9470c79e6e3245d626644ffbadc6e512f343f4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 with master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"976bc582c19a0aeb16e653477342b9cc87ca0df2","isMergeCommit":false,"messageTitle":"Implemented Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":4},"java":{"insertions":60,"deletions":28}}},{"hash":"1e52f53109713d7aa4e625c734beb0fd7742b47d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 with master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"8eb475db3c0ba3fd5ed40d1099a94319fc8e860c","isMergeCommit":false,"messageTitle":"Implemented A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":364,"deletions":186}}},{"hash":"37e7b9062e2504176331dfedfddc6c9788a25149","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-moreOOP\u0027 with master","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"f0cdf49fbcece8499e2eec6050cbd95dad94f951","isMergeCommit":false,"messageTitle":"Implemented A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":9}}},{"hash":"af9c85fbc7f3d201a38c5190e81bc661761c2ef8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027 with master","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"753270ab887848c664ef1b1471de8ff784f9de11","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 to master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b929975db0f989bde9e3731d79eb967323f87710","isMergeCommit":false,"messageTitle":"Implemented A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"mounilsankar":{"java":658,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":13}},"authorContributionVariance":{"mounilsankar":31754.104},"authorDisplayNameMap":{"mounilsankar":"CS2103T-T08-1 MOUN..NKAR"}} +{"authorDailyContributionsMap":{"mounilsankar":[{"date":"2023-08-22","commitResults":[{"hash":"22eaa6c789698fe5ad3d34f8bfb6d2561a53a18d","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":5}}},{"hash":"54db017ee8cc05dea3cdfa6a93429222c39da78b","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"0cab647f2ce85320bf32a3a8bf0e6c6822a6fdf9","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}}]},{"date":"2023-08-23","commitResults":[{"hash":"d90d0544cf68a30c201cffe16320411f15ad3c43","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"0da0051a82c7e4cecd7433f43204102497d3a430","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":6}}},{"hash":"4e4ad2f623d25ad309e861af76982b977e92d7a7","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":11}}},{"hash":"9fe5ab4074889995f20540a9e15604ae7529eb82","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":4,"deletions":4}}}]},{"date":"2023-08-24","commitResults":[{"hash":"4ea08876d674a9ca9ce4dbbf32e167250980a031","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":135,"deletions":72}}},{"hash":"00f115590c2ff2d3a9a7cd914e1fec88bb47f758","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"a22490cccc8b6f148796d2bf2aaf85eedadfe268","isMergeCommit":false,"messageTitle":"Implemented Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":1}}},{"hash":"54c434726b93d52a3460424ce7d0e541cfc19833","isMergeCommit":false,"messageTitle":"Merge branck-Level-7 to master","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"df9470c79e6e3245d626644ffbadc6e512f343f4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 with master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"976bc582c19a0aeb16e653477342b9cc87ca0df2","isMergeCommit":false,"messageTitle":"Implemented Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":4},"java":{"insertions":60,"deletions":28}}},{"hash":"1e52f53109713d7aa4e625c734beb0fd7742b47d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 with master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"8eb475db3c0ba3fd5ed40d1099a94319fc8e860c","isMergeCommit":false,"messageTitle":"Implemented A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":364,"deletions":186}}},{"hash":"37e7b9062e2504176331dfedfddc6c9788a25149","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-moreOOP\u0027 with master","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"f0cdf49fbcece8499e2eec6050cbd95dad94f951","isMergeCommit":false,"messageTitle":"Implemented A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":9}}},{"hash":"af9c85fbc7f3d201a38c5190e81bc661761c2ef8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027 with master","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"753270ab887848c664ef1b1471de8ff784f9de11","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 to master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b929975db0f989bde9e3731d79eb967323f87710","isMergeCommit":false,"messageTitle":"Implemented A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"c779ec6d2cd55fa1f09e71720686a99ad5f7360d","isMergeCommit":false,"messageTitle":"Implemented A-JUnit","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":26}}},{"hash":"54c7354c4d601804b7262bfffa63caa0613e3c99","isMergeCommit":false,"messageTitle":"Implemented A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":461,"deletions":15}}},{"hash":"e38ff0acb749ccc51323ec8d86f4b995c862d06a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027 with master","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"8f4324cf171ab8ed9400c607cbd5fcf0920733ff","isMergeCommit":false,"messageTitle":"Implemented A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":18}}},{"hash":"261e40550a5694b9eb5c6ee40c10f001419596d4","isMergeCommit":false,"messageTitle":"Implemented Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":1}}},{"hash":"c1aeb9cc7cd1975b15424fc8d097aea2ba94dc2f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027 to master","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"3eb3d051e5f5a804d96f3b846660ac55521df757","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027 with master","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"mounilsankar":{"java":1243,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":13}},"authorContributionVariance":{"mounilsankar":52670.92},"authorDisplayNameMap":{"mounilsankar":"CS2103T-T08-1 MOUN..NKAR"}} diff --git a/nabonitasen_ip_master/authorship.json b/nabonitasen_ip_master/authorship.json index 5f898398..ef061f52 100644 --- a/nabonitasen_ip_master/authorship.json +++ b/nabonitasen_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":" private static TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" private DataStorage store;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" public Duke() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" store \u003d new DataStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" store.loadTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" tasks \u003d new TaskList(store);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" ui.showLine(); // show the divider line (\"_______\")","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":" Command c \u003d Parser.parse(fullCommand, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":" c.execute(tasks, ui, store);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" ui.showError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":" ui.showDateTimeParseError();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nabonitasen"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nabonitasen"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nabonitasen"},"content":" new Duke().run();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"nabonitasen":39,"-":4}},{"path":"src/main/java/duke/DataStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"import java.io.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":"public class DataStorage {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" public ArrayList\u003cTask\u003e taskData;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" public DataStorage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" taskData \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" public void loadTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" File dataFileDirectory \u003d new File(\"./data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" if (!dataFileDirectory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" dataFileDirectory.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":" File file \u003d new File(dataFileDirectory, \"duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nabonitasen"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nabonitasen"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nabonitasen"},"content":" readTasks(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nabonitasen"},"content":" scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nabonitasen"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Error!\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"nabonitasen"},"content":" public void saveTasks(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"nabonitasen"},"content":" File dataFileDirectory \u003d new File(\"./data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"nabonitasen"},"content":" if (!dataFileDirectory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"nabonitasen"},"content":" dataFileDirectory.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"nabonitasen"},"content":" File storageFile \u003d new File(dataFileDirectory, \"duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"nabonitasen"},"content":" try (BufferedWriter bufferedWriter \u003d new BufferedWriter(new FileWriter(storageFile))) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"nabonitasen"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"nabonitasen"},"content":" bufferedWriter.write(task.storageFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"nabonitasen"},"content":" bufferedWriter.newLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"nabonitasen"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Error!\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"nabonitasen"},"content":" public void readTasks(String line) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"nabonitasen"},"content":" String[] split \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"nabonitasen"},"content":" String taskType \u003d split[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"nabonitasen"},"content":" boolean isDone \u003d split[1].equals(\"1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"nabonitasen"},"content":" Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"nabonitasen"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"nabonitasen"},"content":" task \u003d new ToDo(split[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"nabonitasen"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"nabonitasen"},"content":" task \u003d new Deadline(split[2], LocalDateTime.parse(split[3]));","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"nabonitasen"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"nabonitasen"},"content":" task \u003d new Event(split[2], LocalDateTime.parse(split[3]), LocalDateTime.parse(split[4]));","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"nabonitasen"},"content":" throw new IOException();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"nabonitasen"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"nabonitasen"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"nabonitasen"},"content":" task.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"nabonitasen"},"content":" taskData.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":91}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":" super(\"☹ OOPS!!! \" + message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nabonitasen":7}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"import duke.commands.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" public static Command parse(String fullCommand, TaskList tasks) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" ArrayList\u003cTask\u003e taskList \u003d tasks.taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" if (fullCommand.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.contains(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":" if (fullCommand.substring(6).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"More information is required to unmark a task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" String[] unparsedTaskIndex \u003d fullCommand.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" int taskIndex \u003d Integer.parseInt(unparsedTaskIndex[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":" if (taskIndex \u003e\u003d (taskList.size()) || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"There are only \" + taskList.size() + \" tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nabonitasen"},"content":" return new UnmarkCommand(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.contains(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nabonitasen"},"content":" if (fullCommand.substring(4).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"More information is required to mark a task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nabonitasen"},"content":" String[] unparsedTaskIndex \u003d fullCommand.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"nabonitasen"},"content":" int taskIndex \u003d Integer.parseInt(unparsedTaskIndex[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"nabonitasen"},"content":" if (taskIndex \u003e\u003d (taskList.size()) || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"There are only \" + taskList.size() + \" tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"nabonitasen"},"content":" return new MarkCommand(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.contains(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"nabonitasen"},"content":" if (fullCommand.substring(6).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"More information is required to delete a task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"nabonitasen"},"content":" String[] unparsedTaskIndex \u003d fullCommand.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"nabonitasen"},"content":" int taskIndex \u003d Integer.parseInt(unparsedTaskIndex[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"nabonitasen"},"content":" if (taskIndex \u003e\u003d (taskList.size()) || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"There are only \" + taskList.size() + \" tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"nabonitasen"},"content":" return new DeleteCommand(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.contains(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"nabonitasen"},"content":" String taskInfo \u003d fullCommand.substring(4);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"nabonitasen"},"content":" if (taskInfo.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"The description of a todo cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"nabonitasen"},"content":" String[] splitCommands \u003d fullCommand.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"nabonitasen"},"content":" Task task \u003d new ToDo(splitCommands[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"nabonitasen"},"content":" return new AddCommand(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.contains(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"nabonitasen"},"content":" String taskInfo \u003d fullCommand.substring(8);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"nabonitasen"},"content":" if (taskInfo.isBlank() || !fullCommand.contains(\"/by\")","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"nabonitasen"},"content":" || !fullCommand.contains(\"deadline \")","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"nabonitasen"},"content":" || fullCommand.substring(fullCommand.indexOf(\"/by\") + 3).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"The description of deadline needs more information\");","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"nabonitasen"},"content":" String[] splitCommands \u003d fullCommand.split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"nabonitasen"},"content":" String[] taskName \u003d splitCommands[0].split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"nabonitasen"},"content":" Task task \u003d new Deadline(taskName[1], Parser.parseDateTime(splitCommands[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"nabonitasen"},"content":" return new AddCommand(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.contains(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"nabonitasen"},"content":" String taskInfo \u003d fullCommand.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"nabonitasen"},"content":" if (taskInfo.isBlank() || !fullCommand.contains(\"/from\")","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"nabonitasen"},"content":" || !fullCommand.contains(\"/to\") || !fullCommand.contains(\"event \")","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"nabonitasen"},"content":" || fullCommand.substring(fullCommand.indexOf(\"/from\") + 5).isBlank()","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"nabonitasen"},"content":" || fullCommand.substring(fullCommand.indexOf(\"/to\") + 3).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"The description of event needs more information\");","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"nabonitasen"},"content":" String[] splitCommands \u003d fullCommand.split(\" /from \");","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"nabonitasen"},"content":" String[] taskName \u003d splitCommands[0].split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"nabonitasen"},"content":" String[] fromTo \u003d splitCommands[1].split(\" /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"nabonitasen"},"content":" Task task \u003d new Event(taskName[1], Parser.parseDateTime(fromTo[0]),","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"nabonitasen"},"content":" Parser.parseDateTime(fromTo[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"nabonitasen"},"content":" return new AddCommand(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"Un-fur-tunately I don\u0027t know what you mean :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"nabonitasen"},"content":" public static LocalDateTime parseDateTime(String userInput) throws DateTimeParseException {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"nabonitasen"},"content":" return LocalDateTime.parse(userInput, DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"nabonitasen"},"content":" public static String dateTimeFormatter(LocalDateTime userInput) {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"nabonitasen"},"content":" return userInput.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":120}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" public ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" public TaskList(DataStorage store) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" taskList \u003d store.taskData;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" taskList.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" public void delete(int taskIndex) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" if (taskIndex \u003e\u003d (taskList.size()) || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"There are only \" + taskList.size() + \" tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" taskList.remove(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":" public void mark(int taskIndex) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":" if (taskIndex \u003e\u003d (taskList.size()) || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"There are only \" + taskList.size() + \" tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" taskList.get(taskIndex).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nabonitasen"},"content":" public void unmark(int taskIndex) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nabonitasen"},"content":" if (taskIndex \u003e\u003d (taskList.size()) || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"There are only \" + taskList.size() + \" tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nabonitasen"},"content":" taskList.get(taskIndex).markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":43}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" String logo \u003d \" / \\\\__\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" + \" ( @\\\\___\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" + \" / O\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" + \" / (_____/\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" + \"/_____/ \\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Hello I\u0027m Barkley\\n\"+logo);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Howl can I help you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nabonitasen"},"content":" public void showExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Goodbye! Have a paw-some day :-) \\n\" + logo);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nabonitasen"},"content":" public void showError(DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nabonitasen"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nabonitasen"},"content":" public void showDateTimeParseError() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Error! Date/time should be in \u0027dd-mm-yyy hh:mm\u0027 format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"nabonitasen"},"content":" public void showAdd(Task task, int taskListLength) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Woof luck with your new task: \\n\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"You now have \" + taskListLength + \" tasks in the list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"nabonitasen"},"content":" public void showDelete(Task task, int taskListLength) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Okay! Another dog-gone task down: \\n\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"You now have \" + taskListLength + \" tasks in the list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"nabonitasen"},"content":" public void showMark(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Furtastic job completing this task: \\n\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"nabonitasen"},"content":" public void showUnmark(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"That\u0027s ruff! I\u0027ve unmarked this task: \\n\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"nabonitasen"},"content":" public void showList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"nabonitasen"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"nabonitasen"},"content":" System.out.println((i + 1) + \". \" + taskList.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":71}},{"path":"src/main/java/duke/commands/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" public void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" ui.showAdd(task, tasks.taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":28}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" public abstract void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":16}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" private int taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" public DeleteCommand(int taskIndex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" public void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" ui.showDelete(tasks.taskList.get(this.taskIndex), (tasks.taskList.size() - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" tasks.delete(this.taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":25}},{"path":"src/main/java/duke/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" public ExitCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" public void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" store.saveTasks(tasks.taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" ui.showExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":24}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" public ListCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" public void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" ui.showList(tasks.taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":24}},{"path":"src/main/java/duke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" private int taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" public MarkCommand(int taskIndex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" public void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" tasks.mark(this.taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" ui.showMark(tasks.taskList.get(this.taskIndex));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":26}},{"path":"src/main/java/duke/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" private int taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" public UnmarkCommand(int taskIndex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" public void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" tasks.unmark(this.taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" ui.showUnmark(tasks.taskList.get(this.taskIndex));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":26}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" return \"[D]\" + super.toString() + \" (by: \" + Parser.dateTimeFormatter(by) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" public String storageFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" return (\"D\" + super.storageFormat() + \" | \" + by);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nabonitasen":25}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" return \"[E]\" + super.toString() + \" (from: \" + Parser.dateTimeFormatter(from) + \" to: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" + Parser.dateTimeFormatter(to) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" public String storageFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" return (\"E\" + super.storageFormat() + \" | \" + from + \" | \" + to);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nabonitasen":28}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"public abstract class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" public String storageFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" return (\" | \" + (isDone ? \"1\" : \"0\") + \" | \" + this.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nabonitasen":33}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" public String storageFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" return (\"T\" + super.storageFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nabonitasen":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"todo math","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"deadline chem /by mon 5pm","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"event phototaking /from mon 2pm /to mon 3pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"todo econ","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nabonitasen":10}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"nabonitasen":1,"-":41}},{"path":"src/main/java/duke/DataStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"import java.io.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":"public class DataStorage {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" public ArrayList\u003cTask\u003e taskData;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" public DataStorage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" taskData \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" public void loadTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" File dataFileDirectory \u003d new File(\"./data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" if (!dataFileDirectory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" dataFileDirectory.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":" File file \u003d new File(dataFileDirectory, \"duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nabonitasen"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nabonitasen"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nabonitasen"},"content":" readTasks(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nabonitasen"},"content":" scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nabonitasen"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Error!\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"nabonitasen"},"content":" public void saveTasks(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"nabonitasen"},"content":" File dataFileDirectory \u003d new File(\"./data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"nabonitasen"},"content":" if (!dataFileDirectory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"nabonitasen"},"content":" dataFileDirectory.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"nabonitasen"},"content":" File storageFile \u003d new File(dataFileDirectory, \"duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"nabonitasen"},"content":" try (BufferedWriter bufferedWriter \u003d new BufferedWriter(new FileWriter(storageFile))) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"nabonitasen"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"nabonitasen"},"content":" bufferedWriter.write(task.storageFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"nabonitasen"},"content":" bufferedWriter.newLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"nabonitasen"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Error!\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"nabonitasen"},"content":" public void readTasks(String line) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"nabonitasen"},"content":" String[] split \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"nabonitasen"},"content":" String taskType \u003d split[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"nabonitasen"},"content":" boolean isDone \u003d split[1].equals(\"1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"nabonitasen"},"content":" Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"nabonitasen"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"nabonitasen"},"content":" task \u003d new ToDo(split[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"nabonitasen"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"nabonitasen"},"content":" task \u003d new Deadline(split[2], LocalDateTime.parse(split[3]));","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"nabonitasen"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"nabonitasen"},"content":" task \u003d new Event(split[2], LocalDateTime.parse(split[3]), LocalDateTime.parse(split[4]));","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"nabonitasen"},"content":" throw new IOException();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"nabonitasen"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"nabonitasen"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"nabonitasen"},"content":" task.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"nabonitasen"},"content":" taskData.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":91}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" private static TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" private DataStorage store;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" public Duke() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" store \u003d new DataStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" store.loadTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" tasks \u003d new TaskList(store);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":" ui.showLine(); // show the divider line (\"_______\")","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" Command c \u003d Parser.parse(fullCommand, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" c.execute(tasks, ui, store);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":" ui.showError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nabonitasen"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nabonitasen"},"content":" ui.showDateTimeParseError();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nabonitasen"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nabonitasen"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"nabonitasen"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nabonitasen"},"content":" new Duke().run();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"nabonitasen":42,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":" super(\"☹ OOPS!!! \" + message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nabonitasen":7}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"import duke.commands.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" public static Command parse(String fullCommand, TaskList tasks) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" ArrayList\u003cTask\u003e taskList \u003d tasks.taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" if (fullCommand.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.contains(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":" if (fullCommand.substring(6).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"More information is required to unmark a task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" String[] unparsedTaskIndex \u003d fullCommand.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" int taskIndex \u003d Integer.parseInt(unparsedTaskIndex[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":" if (taskIndex \u003e\u003d (taskList.size()) || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"There are only \" + taskList.size() + \" tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nabonitasen"},"content":" return new UnmarkCommand(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.contains(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nabonitasen"},"content":" if (fullCommand.substring(4).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"More information is required to mark a task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nabonitasen"},"content":" String[] unparsedTaskIndex \u003d fullCommand.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"nabonitasen"},"content":" int taskIndex \u003d Integer.parseInt(unparsedTaskIndex[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"nabonitasen"},"content":" if (taskIndex \u003e\u003d (taskList.size()) || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"There are only \" + taskList.size() + \" tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"nabonitasen"},"content":" return new MarkCommand(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.contains(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"nabonitasen"},"content":" if (fullCommand.substring(6).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"More information is required to delete a task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"nabonitasen"},"content":" String[] unparsedTaskIndex \u003d fullCommand.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"nabonitasen"},"content":" int taskIndex \u003d Integer.parseInt(unparsedTaskIndex[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"nabonitasen"},"content":" if (taskIndex \u003e\u003d (taskList.size()) || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"There are only \" + taskList.size() + \" tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"nabonitasen"},"content":" return new DeleteCommand(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.contains(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"nabonitasen"},"content":" String taskInfo \u003d fullCommand.substring(4);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"nabonitasen"},"content":" if (taskInfo.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"The description of a todo cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"nabonitasen"},"content":" String[] splitCommands \u003d fullCommand.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"nabonitasen"},"content":" Task task \u003d new ToDo(splitCommands[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"nabonitasen"},"content":" return new AddCommand(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.contains(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"nabonitasen"},"content":" String taskInfo \u003d fullCommand.substring(8);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"nabonitasen"},"content":" if (taskInfo.isBlank() || !fullCommand.contains(\"/by\")","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"nabonitasen"},"content":" || !fullCommand.contains(\"deadline \")","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"nabonitasen"},"content":" || fullCommand.substring(fullCommand.indexOf(\"/by\") + 3).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"The description of deadline needs more information\");","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"nabonitasen"},"content":" String[] splitCommands \u003d fullCommand.split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"nabonitasen"},"content":" String[] taskName \u003d splitCommands[0].split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"nabonitasen"},"content":" Task task \u003d new Deadline(taskName[1], Parser.parseDateTime(splitCommands[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"nabonitasen"},"content":" return new AddCommand(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"nabonitasen"},"content":" } else if (fullCommand.contains(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"nabonitasen"},"content":" String taskInfo \u003d fullCommand.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"nabonitasen"},"content":" if (taskInfo.isBlank() || !fullCommand.contains(\"/from\")","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"nabonitasen"},"content":" || !fullCommand.contains(\"/to\") || !fullCommand.contains(\"event \")","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"nabonitasen"},"content":" || fullCommand.substring(fullCommand.indexOf(\"/from\") + 5).isBlank()","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"nabonitasen"},"content":" || fullCommand.substring(fullCommand.indexOf(\"/to\") + 3).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"The description of event needs more information\");","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"nabonitasen"},"content":" String[] splitCommands \u003d fullCommand.split(\" /from \");","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"nabonitasen"},"content":" String[] taskName \u003d splitCommands[0].split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"nabonitasen"},"content":" String[] fromTo \u003d splitCommands[1].split(\" /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"nabonitasen"},"content":" Task task \u003d new Event(taskName[1], Parser.parseDateTime(fromTo[0]),","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"nabonitasen"},"content":" Parser.parseDateTime(fromTo[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"nabonitasen"},"content":" return new AddCommand(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"Un-fur-tunately I don\u0027t know what you mean :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"nabonitasen"},"content":" public static LocalDateTime parseDateTime(String userInput) throws DateTimeParseException {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"nabonitasen"},"content":" return LocalDateTime.parse(userInput, DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"nabonitasen"},"content":" public static String dateTimeFormatter(LocalDateTime userInput) {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"nabonitasen"},"content":" return userInput.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":120}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" public ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" public TaskList(DataStorage store) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" taskList \u003d store.taskData;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" taskList.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" public void delete(int taskIndex) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" if (taskIndex \u003e\u003d (taskList.size()) || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"There are only \" + taskList.size() + \" tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" taskList.remove(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":" public void mark(int taskIndex) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":" if (taskIndex \u003e\u003d (taskList.size()) || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"There are only \" + taskList.size() + \" tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" taskList.get(taskIndex).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nabonitasen"},"content":" public void unmark(int taskIndex) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nabonitasen"},"content":" if (taskIndex \u003e\u003d (taskList.size()) || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nabonitasen"},"content":" throw new DukeException(\"There are only \" + taskList.size() + \" tasks\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nabonitasen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nabonitasen"},"content":" taskList.get(taskIndex).markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":43}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" String logo \u003d \" / \\\\__\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" + \" ( @\\\\___\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" + \" / O\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" + \" / (_____/\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" + \"/_____/ \\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Hello I\u0027m Barkley\\n\"+logo);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Howl can I help you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":" showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nabonitasen"},"content":" public void showExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Goodbye! Have a paw-some day :-) \\n\" + logo);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nabonitasen"},"content":" public void showError(DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nabonitasen"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nabonitasen"},"content":" public void showDateTimeParseError() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Error! Date/time should be in \u0027dd-mm-yyy hh:mm\u0027 format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"nabonitasen"},"content":" public void showAdd(Task task, int taskListLength) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Woof luck with your new task: \\n\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"You now have \" + taskListLength + \" tasks in the list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"nabonitasen"},"content":" public void showDelete(Task task, int taskListLength) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Okay! Another dog-gone task down: \\n\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"You now have \" + taskListLength + \" tasks in the list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"nabonitasen"},"content":" public void showMark(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"Furtastic job completing this task: \\n\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"nabonitasen"},"content":" public void showUnmark(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"nabonitasen"},"content":" System.out.println(\"That\u0027s ruff! I\u0027ve unmarked this task: \\n\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"nabonitasen"},"content":" public void showList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"nabonitasen"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"nabonitasen"},"content":" System.out.println((i + 1) + \". \" + taskList.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":71}},{"path":"src/main/java/duke/commands/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" public void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" ui.showAdd(task, tasks.taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":28}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" public abstract void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":16}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" private int taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" public DeleteCommand(int taskIndex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" public void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" ui.showDelete(tasks.taskList.get(this.taskIndex), (tasks.taskList.size() - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" tasks.delete(this.taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":25}},{"path":"src/main/java/duke/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" public ExitCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" public void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" store.saveTasks(tasks.taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" ui.showExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":24}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" public ListCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" public void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" ui.showList(tasks.taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":24}},{"path":"src/main/java/duke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" private int taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" public MarkCommand(int taskIndex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" public void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" tasks.mark(this.taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" ui.showMark(tasks.taskList.get(this.taskIndex));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":26}},{"path":"src/main/java/duke/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.DataStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" private int taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" public UnmarkCommand(int taskIndex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" public void execute(TaskList tasks, Ui ui, DataStorage store) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" tasks.unmark(this.taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" ui.showUnmark(tasks.taskList.get(this.taskIndex));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":26}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" return \"[D]\" + super.toString() + \" (by: \" + Parser.dateTimeFormatter(by) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" public String storageFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" return (\"D\" + super.storageFormat() + \" | \" + by);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nabonitasen":25}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" return \"[E]\" + super.toString() + \" (from: \" + Parser.dateTimeFormatter(from) + \" to: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" + Parser.dateTimeFormatter(to) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" public String storageFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" return (\"E\" + super.storageFormat() + \" | \" + from + \" | \" + to);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nabonitasen":28}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"public abstract class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" public String storageFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" return (\" | \" + (isDone ? \"1\" : \"0\") + \" | \" + this.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nabonitasen":33}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" public String storageFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" return (\"T\" + super.storageFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nabonitasen":18}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" public void testMark() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" ToDo sampleToDo \u003d new ToDo(\"do econs\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" DataStorage storage \u003d new DataStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":" storage.taskData.add(sampleToDo);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" TaskList tasks \u003d new TaskList(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" tasks.mark(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" assertEquals(\"X\", tasks.taskList.get(0).getStatusIcon());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":" public void testUnmark() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":" ToDo sampleToDo \u003d new ToDo(\"do econs\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" DataStorage storage \u003d new DataStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" storage.taskData.add(sampleToDo);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" TaskList tasks \u003d new TaskList(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":" tasks.mark(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nabonitasen"},"content":" tasks.unmark(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nabonitasen"},"content":" assertEquals(\" \", tasks.taskList.get(0).getStatusIcon());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nabonitasen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nabonitasen"},"content":" public void testAdd() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nabonitasen"},"content":" ToDo sampleToDo \u003d new ToDo(\"do econs\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nabonitasen"},"content":" DataStorage storage \u003d new DataStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nabonitasen"},"content":" storage.taskData.add(sampleToDo);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nabonitasen"},"content":" ToDo todo \u003d new ToDo(\"do physics\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"nabonitasen"},"content":" TaskList tasks \u003d new TaskList(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"nabonitasen"},"content":" tasks.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"nabonitasen"},"content":" assertEquals(\"[T][ ] do physics\", tasks.taskList.get(1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"nabonitasen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"nabonitasen"},"content":" public void testDelete() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"nabonitasen"},"content":" ToDo sampleToDo \u003d new ToDo(\"do econs\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"nabonitasen"},"content":" DataStorage storage \u003d new DataStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"nabonitasen"},"content":" storage.taskData.add(sampleToDo);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"nabonitasen"},"content":" TaskList tasks \u003d new TaskList(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"nabonitasen"},"content":" tasks.delete(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"nabonitasen"},"content":" assertEquals(0, tasks.taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"nabonitasen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"nabonitasen"},"content":" public void testMarkException() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"nabonitasen"},"content":" ToDo sampleToDo \u003d new ToDo(\"do econs\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"nabonitasen"},"content":" DataStorage storage \u003d new DataStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"nabonitasen"},"content":" storage.taskData.add(sampleToDo);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"nabonitasen"},"content":" TaskList tasks \u003d new TaskList(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"nabonitasen"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"nabonitasen"},"content":" tasks.mark(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"nabonitasen"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"nabonitasen"},"content":" assertEquals(\"☹ OOPS!!! There are only 1 tasks\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"nabonitasen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"nabonitasen"},"content":" public void testUnmarkException() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"nabonitasen"},"content":" ToDo sampleToDo \u003d new ToDo(\"do econs\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"nabonitasen"},"content":" DataStorage storage \u003d new DataStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"nabonitasen"},"content":" storage.taskData.add(sampleToDo);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"nabonitasen"},"content":" TaskList tasks \u003d new TaskList(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"nabonitasen"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"nabonitasen"},"content":" tasks.unmark(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"nabonitasen"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"nabonitasen"},"content":" assertEquals(\"☹ OOPS!!! There are only 1 tasks\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"nabonitasen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"nabonitasen"},"content":" public void testDeleteException() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"nabonitasen"},"content":" ToDo sampleToDo \u003d new ToDo(\"do econs\");","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"nabonitasen"},"content":" DataStorage storage \u003d new DataStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"nabonitasen"},"content":" storage.taskData.add(sampleToDo);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"nabonitasen"},"content":" TaskList tasks \u003d new TaskList(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"nabonitasen"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"nabonitasen"},"content":" tasks.delete(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"nabonitasen"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"nabonitasen"},"content":" assertEquals(\"☹ OOPS!!! There are only 1 tasks\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":103}},{"path":"src/test/java/duke/tasks/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nabonitasen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nabonitasen"},"content":" public void testMarkAsDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nabonitasen"},"content":" Deadline deadline \u003d new Deadline(\"do math\", LocalDateTime.parse(\"20-05-2013 00:00\",","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nabonitasen"},"content":" DateTimeFormatter.ofPattern(\"dd-MM-yyy HH:mm\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nabonitasen"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nabonitasen"},"content":" assertEquals(true, deadline.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nabonitasen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nabonitasen"},"content":" public void testMarkAsUndone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nabonitasen"},"content":" Deadline deadline \u003d new Deadline(\"do science\", LocalDateTime.parse(\"20-05-2014 00:00\",","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nabonitasen"},"content":" DateTimeFormatter.ofPattern(\"dd-MM-yyy HH:mm\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nabonitasen"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nabonitasen"},"content":" deadline.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nabonitasen"},"content":" assertEquals(false, deadline.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nabonitasen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nabonitasen"},"content":" public void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nabonitasen"},"content":" Deadline deadline \u003d new Deadline(\"do math\", LocalDateTime.parse(\"20-05-2013 00:00\",","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nabonitasen"},"content":" DateTimeFormatter.ofPattern(\"dd-MM-yyy HH:mm\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nabonitasen"},"content":" assertEquals(\"[D][ ] do math (by: May 20 2013 00:00)\", deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nabonitasen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nabonitasen"},"content":" public void testStorageFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nabonitasen"},"content":" Deadline deadline \u003d new Deadline(\"do math\", LocalDateTime.parse(\"20-05-2013 00:00\",","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nabonitasen"},"content":" DateTimeFormatter.ofPattern(\"dd-MM-yyy HH:mm\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nabonitasen"},"content":" assertEquals(\"D | 0 | do math | 2013-05-20T00:00\", deadline.storageFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nabonitasen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nabonitasen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nabonitasen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nabonitasen":43}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nabonitasen"},"content":"todo math","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"nabonitasen"},"content":"deadline chem /by mon 5pm","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"nabonitasen"},"content":"event phototaking /from mon 2pm /to mon 3pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nabonitasen"},"content":"todo econ","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nabonitasen"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nabonitasen"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nabonitasen"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nabonitasen"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nabonitasen"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nabonitasen"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nabonitasen":10}}] diff --git a/nabonitasen_ip_master/commits.json b/nabonitasen_ip_master/commits.json index 6a29b1e6..a717f67c 100644 --- a/nabonitasen_ip_master/commits.json +++ b/nabonitasen_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"nabonitasen":[{"date":"2023-08-23","commitResults":[{"hash":"f1bc936e09ab9675ebb6530d30dfbaeeb25694a4","isMergeCommit":false,"messageTitle":"Rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}},{"hash":"be4f8b3692d750c636504910db0272ca6589a743","isMergeCommit":false,"messageTitle":"echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"1937758873255ed90ed658f8b96f5cf5edac4047","isMergeCommit":false,"messageTitle":"Add, List function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0328312e51f08993e4c223d8ca39b450c5f05903","isMergeCommit":false,"messageTitle":"Mark/Unmark as done function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":5}}},{"hash":"baa790e518a47c7854e7d5d6971f8ab2fdc4a07e","isMergeCommit":false,"messageTitle":"Todos, Events, Deadlines function","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":10}}},{"hash":"36027d84fef1fd3205f5031384c0a001b5ca6869","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"f58dc96a109cba14d934402e7ddf32e0910e2cfc","isMergeCommit":false,"messageTitle":"Handle Errors function","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":47}}},{"hash":"5f43767b7900c3c34f1ad44bf17211df71f5e55b","isMergeCommit":false,"messageTitle":"Delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"75a7885cd6de692af2493dfa910dbba28d6351d7","isMergeCommit":false,"messageTitle":"save function","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":4}}},{"hash":"49d9d4ed7d17703ce37e9d5867d2433c73d240eb","isMergeCommit":false,"messageTitle":"date and time function","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":11}}},{"hash":"6f76d82499bb94fb5dd48beab2a6ff5a3feefaec","isMergeCommit":false,"messageTitle":"more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":350,"deletions":131}}},{"hash":"dcd07a2d6b33efcb6fb3f65f12708fbc37d976ab","isMergeCommit":false,"messageTitle":"add packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":8}}}]}]},"authorFileTypeContributionMap":{"nabonitasen":{"java":644,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"nabonitasen":37924.758},"authorDisplayNameMap":{"nabonitasen":"CS2103T-W10-1 NABO.. SEN"}} +{"authorDailyContributionsMap":{"nabonitasen":[{"date":"2023-08-23","commitResults":[{"hash":"f1bc936e09ab9675ebb6530d30dfbaeeb25694a4","isMergeCommit":false,"messageTitle":"Rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}},{"hash":"be4f8b3692d750c636504910db0272ca6589a743","isMergeCommit":false,"messageTitle":"echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"1937758873255ed90ed658f8b96f5cf5edac4047","isMergeCommit":false,"messageTitle":"Add, List function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0328312e51f08993e4c223d8ca39b450c5f05903","isMergeCommit":false,"messageTitle":"Mark/Unmark as done function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":5}}},{"hash":"baa790e518a47c7854e7d5d6971f8ab2fdc4a07e","isMergeCommit":false,"messageTitle":"Todos, Events, Deadlines function","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":10}}},{"hash":"36027d84fef1fd3205f5031384c0a001b5ca6869","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"f58dc96a109cba14d934402e7ddf32e0910e2cfc","isMergeCommit":false,"messageTitle":"Handle Errors function","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":47}}},{"hash":"5f43767b7900c3c34f1ad44bf17211df71f5e55b","isMergeCommit":false,"messageTitle":"Delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"75a7885cd6de692af2493dfa910dbba28d6351d7","isMergeCommit":false,"messageTitle":"save function","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":4}}},{"hash":"49d9d4ed7d17703ce37e9d5867d2433c73d240eb","isMergeCommit":false,"messageTitle":"date and time function","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":11}}},{"hash":"6f76d82499bb94fb5dd48beab2a6ff5a3feefaec","isMergeCommit":false,"messageTitle":"more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":350,"deletions":131}}},{"hash":"dcd07a2d6b33efcb6fb3f65f12708fbc37d976ab","isMergeCommit":false,"messageTitle":"add packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":8}}},{"hash":"e90da39a3aed6eacaf97bce54fbf5eb026105f3e","isMergeCommit":false,"messageTitle":"build changes","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"533ebeff729a1e304df4c51c6d6b47c7503ec7cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"76c88ca1cc6fc2fa5570e77a05830b0c31a1276e","isMergeCommit":false,"messageTitle":"update package + gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"8cb79f86426ac91bdd508f3823a692f495651c8e","isMergeCommit":false,"messageTitle":"JUnit testing","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"nabonitasen":{"java":793,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":10}},"authorContributionVariance":{"nabonitasen":52758.09},"authorDisplayNameMap":{"nabonitasen":"CS2103T-W10-1 NABO.. SEN"}} diff --git a/newway1814_ip_master/authorship.json b/newway1814_ip_master/authorship.json index 71b247de..bf966b7e 100644 --- a/newway1814_ip_master/authorship.json +++ b/newway1814_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"# DuckBot project template","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":"3. After that, locate the `src/main/java/DuckBot.java` file, right-click it, and choose `Run DuckBot.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":22,"newway1814":2}},{"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":"newway1814"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":" mainClass.set(\"duck.Duck\")","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":" archiveBaseName \u003d \"duck\"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":40,"newway1814":11}},{"path":"src/main/java/duck/Duck.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import duck.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"public class Duck {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" private final IOHandler ioHandler \u003d new IOHandler();","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":" public Duck(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" this.taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" ioHandler.welcomeMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" boolean exit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" while (!exit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" exit \u003d !parser.parse(ioHandler.typeMessage(), ioHandler, taskList, storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":" new Duck(\"data/duck.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":30}},{"path":"src/main/java/duck/IoHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import duck.task.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"public class IOHandler {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" private final Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" public IOHandler() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":" public void welcomeMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Hello! I\u0027m duck.Duck\");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" public void divider() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" public String typeMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" return sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" public void display(TaskList taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" int serial \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" while (count \u003c taskList.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":" System.out.println(serial + \".\" + taskList.get(count));","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":" count++;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":" serial++;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":" public void exit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Bye. Hope to see you again soon !\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"newway1814"},"content":" public void echoAdd(Task t, TaskList taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"newway1814"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"newway1814"},"content":" taskList.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"newway1814"},"content":" ","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":54}},{"path":"src/main/java/duck/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import duck.task.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.DuckException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.IllegalDateFormatException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.SemanticException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.SyntaxException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" private String identify(String command) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" String[] strings \u003d command.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" return strings[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" public boolean parse(String str, IOHandler io, TaskList taskList, Storage storage) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" String command \u003d identify(str);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" switch (command) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" Deadline tempDeadline \u003d taskList.setDeadline(str.substring(8));","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" taskList.addTask(tempDeadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" io.echoAdd(tempDeadline, taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" storage.saveInFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":" Events tempEvent \u003d taskList.setEvent(str.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" taskList.addTask(tempEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":" io.echoAdd(tempEvent, taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" storage.saveInFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":" ToDo tempToDo \u003d taskList.setToDo(str.substring(4));","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":" taskList.addTask(tempToDo);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" io.echoAdd(tempToDo, taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":" storage.saveInFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":" case \"delete\":","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" Task tempDelete \u003d taskList.deleteTask(str, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":" storage.saveInFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"newway1814"},"content":" System.out.println(\" \" + tempDelete.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"newway1814"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"newway1814"},"content":" Task tempMark \u003d taskList.setDone(str, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"newway1814"},"content":" System.out.println(\" \" + tempMark);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"newway1814"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"newway1814"},"content":" Task tempUnmark \u003d taskList.setUndone(str, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"newway1814"},"content":" System.out.println(\" \" + tempUnmark);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"newway1814"},"content":" case \"list\":","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"newway1814"},"content":" io.display(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"newway1814"},"content":" case \"bye\":","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"newway1814"},"content":" io.exit();","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"newway1814"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"newway1814"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"newway1814"},"content":" throw new DuckException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"newway1814"},"content":" } catch (DuckException | IllegalDateFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"newway1814"},"content":" System.out.println(\"ERROR : \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":81}},{"path":"src/main/java/duck/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import duck.task.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.FileIOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":"import java.util.List;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" private File FILE;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" this.FILE \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" private void create() throws FileIOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" File parent \u003d FILE.getParentFile();","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" if (parent !\u003d null \u0026\u0026 !parent.exists() \u0026\u0026 !parent.mkdirs()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" throw new IOException(\"Couldn\u0027t create dir: \" + parent);","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" FILE.createNewFile();","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" throw new FileIOException(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":" public void saveInFile(TaskList list) throws FileIOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":" if (!FILE.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" create();","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":" FileWriter fw \u003d new FileWriter(FILE);","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":" switch (task.type()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":" case \"D\":","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"newway1814"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"newway1814"},"content":" fw.write(deadline.type() + \" | \" + (deadline.getStatusIcon().isBlank() ? \"0\" : \"1\") + \" | \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"newway1814"},"content":" deadline.getDescription() + \" | \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"newway1814"},"content":" deadline.getBy());","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"newway1814"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"newway1814"},"content":" case \"E\":","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"newway1814"},"content":" Events events \u003d (Events) task;","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"newway1814"},"content":" fw.write(events.type() + \" | \" + (events.getStatusIcon().isBlank() ? \"0\" : \"1\") + \" | \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"newway1814"},"content":" events.getDescription() + \" | \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"newway1814"},"content":" events.getDate());","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"newway1814"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"newway1814"},"content":" case \"T\":","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"newway1814"},"content":" ToDo toDo \u003d (ToDo) task;","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"newway1814"},"content":" fw.write(toDo.type() + \" | \" + (toDo.getStatusIcon().isBlank() ? \"0\" : \"1\") + \" | \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"newway1814"},"content":" toDo.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"newway1814"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"newway1814"},"content":" fw.write(\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"newway1814"},"content":" fw.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"newway1814"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"newway1814"},"content":" throw new FileIOException(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"newway1814"},"content":" public List\u003cTask\u003e load() {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"newway1814"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"newway1814"},"content":" if (!FILE.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"newway1814"},"content":" return list;","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"newway1814"},"content":" FileReader fr \u003d new FileReader(FILE);","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"newway1814"},"content":" Scanner sc \u003d new Scanner(fr);","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"newway1814"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"newway1814"},"content":" String line \u003d sc.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"newway1814"},"content":" String[] split \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"newway1814"},"content":" switch (split[0]) {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"newway1814"},"content":" case \"D\":","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"newway1814"},"content":" Deadline tempDeadline \u003d new Deadline(split[2],","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"newway1814"},"content":" LocalDateTime.parse(split[3], DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"newway1814"},"content":" if (split[1].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"newway1814"},"content":" tempDeadline.markAsDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"newway1814"},"content":" list.add(tempDeadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"newway1814"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"newway1814"},"content":" case \"E\":","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"newway1814"},"content":" String[] start_end \u003d split[3].split(\"-\");","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"newway1814"},"content":" Events tempEvent \u003d new Events(","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"newway1814"},"content":" LocalDateTime.parse(start_end[0], DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"newway1814"},"content":" LocalDateTime.parse(start_end[1], DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"newway1814"},"content":" split[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"newway1814"},"content":" if (split[1].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"newway1814"},"content":" tempEvent.markAsDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"newway1814"},"content":" list.add(tempEvent);","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"newway1814"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"newway1814"},"content":" case \"T\":","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"newway1814"},"content":" ToDo tempToDo \u003d new ToDo(split[2]);","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"newway1814"},"content":" if (split[1].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"newway1814"},"content":" tempToDo.markAsDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"newway1814"},"content":" list.add(tempToDo);","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"newway1814"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"newway1814"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"newway1814"},"content":" return list;","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"newway1814":114}},{"path":"src/main/java/duck/exceptions/DuckException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"public class DuckException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" public DuckException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":9}},{"path":"src/main/java/duck/exceptions/FileIoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"public class FileIOException extends DuckException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":" public FileIOException(String str) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" super(\"File I/O error \" + str);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":7}},{"path":"src/main/java/duck/exceptions/IllegalDateFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"public class IllegalDateFormatException extends DateTimeParseException {","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" public IllegalDateFormatException(String mssg, String parsedData) {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" super(mssg, parsedData, 0);","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"newway1814":10}},{"path":"src/main/java/duck/exceptions/SemanticException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"public class SemanticException extends DuckException{","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" public SemanticException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":8}},{"path":"src/main/java/duck/exceptions/SyntaxException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"public class SyntaxException extends DuckException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" public SyntaxException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":8}},{"path":"src/main/java/duck/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" return \"[D]\" + super.toString().substring(3) + \" (by: \" + this.getBy() + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" public String type() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" return \"D\";","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" public String getBy() {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" return by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"newway1814":26}},{"path":"src/main/java/duck/task/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"public class Events extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":" public Events(LocalDateTime start, LocalDateTime end, String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" public String getExact() {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" String mmmDdYyyy \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" if (start.toLocalDate().equals(end.toLocalDate())) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" mmmDdYyyy \u003d start.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \" \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" start.format(DateTimeFormatter.ofPattern(\"hh:mm a\")) + \" \" +","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" end.format(DateTimeFormatter.ofPattern(\"hh:mm a\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" mmmDdYyyy \u003d start.format(DateTimeFormatter.ofPattern(\"hh:mm a MMM dd yyyy\"))","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" + \" to \" + end.format(DateTimeFormatter.ofPattern(\"hh:mm a MMM dd yyyy\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" return mmmDdYyyy;","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":" return \"[E]\" + super.toString().substring(3) + \" (from: \" + getExact() + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":" public String type() {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" return \"E\";","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":" public String getDate() {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":" return this.start.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\")) + \"-\" + this.end.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"newway1814":43}},{"path":"src/main/java/duck/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":" private String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" this.description \u003d description.strip();","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" public String Box() {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" return \"[\" + getStatusIcon() +\"] \";","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":" return \"[ ]\" + this.Box() + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" public String type() {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":" return \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" public String getBy() {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":" return \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"newway1814":45}},{"path":"src/main/java/duck/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.DuckException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.IllegalDateFormatException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.SemanticException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.SyntaxException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" private List\u003cTask\u003e listOfTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" this.listOfTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" public TaskList(List\u003cTask\u003e t) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" this.listOfTasks \u003d t;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" this.listOfTasks.add(t);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" public Task removeIndex(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":" return this.listOfTasks.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" public void markTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":" this.listOfTasks.get(index).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" this.listOfTasks.get(index).markUndone();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":" public int size() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" return this.listOfTasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"newway1814"},"content":" public Task get(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"newway1814"},"content":" return this.listOfTasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"newway1814"},"content":" public Deadline setDeadline(String str) throws IllegalDateFormatException, SyntaxException {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"newway1814"},"content":" String[] arr \u003d str.split(\"/by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"newway1814"},"content":" if (arr.length !\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"newway1814"},"content":" throw new SyntaxException(\"Please check the command syntax\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"newway1814"},"content":" return new Deadline(arr[0], parseDateTime(arr[1]));","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"newway1814"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"newway1814"},"content":" throw new IllegalDateFormatException(\"Wrong Format for the date kindly put in \\nyyyy-MM-dd HHmm.\", str);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"newway1814"},"content":" public Events setEvent(String str) throws IllegalDateFormatException, SyntaxException {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"newway1814"},"content":" String[] event \u003d str.split(\"/from | /to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"newway1814"},"content":" if (event.length !\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"newway1814"},"content":" throw new SyntaxException(\"Please check the command syntax\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"newway1814"},"content":" return new Events(LocalDateTime.parse(event[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"newway1814"},"content":" LocalDateTime.parse(event[2], DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")), event[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"newway1814"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"newway1814"},"content":" throw new IllegalDateFormatException(\"Wrong Format for the date kindly put in \\nyyyy-MM-dd HHmm.\", str);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"newway1814"},"content":" private LocalDateTime parseDateTime(String dateTime) throws IllegalDateFormatException {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"newway1814"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"newway1814"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"newway1814"},"content":" throw new IllegalDateFormatException(\"Incorrect format\", dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"newway1814"},"content":" public Task deleteTask(String str, TaskList taskList) throws SyntaxException, SemanticException {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"newway1814"},"content":" String[] string \u003d str.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"newway1814"},"content":" if (string.length !\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"newway1814"},"content":" throw new SyntaxException(\"Need only index number after delete\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"newway1814"},"content":" int index \u003d Integer.parseInt(string[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"newway1814"},"content":" return taskList.removeIndex(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"newway1814"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"newway1814"},"content":" throw new SyntaxException(\"Need only index number after delete\");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"newway1814"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"newway1814"},"content":" throw new SemanticException(\"Index is out of bounds, please write correct index number\");","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"newway1814"},"content":" private int getIndexOfMark(String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"newway1814"},"content":" return Integer.parseInt(str.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"newway1814"},"content":" public Task setDone(String str, TaskList taskList) throws SyntaxException, SemanticException {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"newway1814"},"content":" int index \u003d getIndexOfMark(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"newway1814"},"content":" taskList.markTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"newway1814"},"content":" return taskList.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"newway1814"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"newway1814"},"content":" throw new SyntaxException(\"Need only index number to mark as done\");","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"newway1814"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"newway1814"},"content":" throw new SemanticException(\"Index is out of bounds, please write correct index number\");","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"newway1814"},"content":" public Task setUndone(String str, TaskList taskList) throws SyntaxException, SemanticException {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"newway1814"},"content":" int index \u003d getIndexOfUnmark(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"newway1814"},"content":" taskList.unmarkTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"newway1814"},"content":" return taskList.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"newway1814"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"newway1814"},"content":" throw new SyntaxException(\"Need only index number to mark as undone\");","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"newway1814"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"newway1814"},"content":" throw new SemanticException(\"Index is out of bounds, please write correct index number\");","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"newway1814"},"content":" private int getIndexOfUnmark(String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"newway1814"},"content":" return Integer.parseInt(str.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"newway1814"},"content":" public ToDo setToDo(String str)","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"newway1814"},"content":" throws DuckException {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"newway1814"},"content":" String[] todo \u003d str.split(\"todo ?+\");","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"newway1814"},"content":" if (todo.length \u003e 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"newway1814"},"content":" return new ToDo(todo[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"newway1814"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"newway1814"},"content":" throw new DuckException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":141}},{"path":"src/main/java/duck/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" public ToDo(String str) {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":" super(str);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":" return \"[T]\" + super.toString().substring(3);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" public String type() {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" return \"T\";","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"newway1814":18}},{"path":"src/main/java/duck/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":" public Ui() {}","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Loading ERR\");","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":8}},{"path":"text-ui-test/data/duck.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"D | 0 | return book | Mar 09 2034 12:00","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"E | 0 | project meeting | Sept 08 2032 12:30-Sept 08 2032 12:30","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"newway1814":2}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"list","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"delete 3 fnwlfkn","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"delete 3","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"todo project","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"deadline return book /by sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"deadline return book /by 2034-03-09 1200","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"event project meeting /from 2032-09-08 1230 /by 2032-09-08 1230","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"event project meeting /from 2032-09-08 1230 /to 2032-09-08 1230","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"delete 0","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"newway1814":11}},{"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":"newway1814"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\duck\\*.java","lastModifiedDate":"2023-08-30"},{"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":"newway1814"},"content":"rmdir /s /q \"./data\"","lastModifiedDate":"2023-08-30"},{"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":"newway1814"},"content":"java -classpath ..\\bin duck.Duck \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":"FC /w ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"-":16,"newway1814":4}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"# DuckBot project template","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":"3. After that, locate the `src/main/java/DuckBot.java` file, right-click it, and choose `Run DuckBot.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":22,"newway1814":2}},{"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":"newway1814"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":" mainClass.set(\"duck.Duck\")","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":" archiveBaseName \u003d \"duck\"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"newway1814"},"content":" archiveFileName \u003d \u0027duck.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":40,"newway1814":12}},{"path":"src/main/java/duck/Duck.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import duck.ui.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" * This class is command-line application responsible for managing tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"public class Duck {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":" private final IoHandler ioHandler \u003d new IoHandler();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" * Constructs a simple Duck Object.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" * @param filePath Stores the file path for loading and saving.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" public Duck(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" this.taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" * It runs the Duck Application.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" * Displays Contents, handle the user inputs and commands until user exits.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" ioHandler.welcomeMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":" boolean exit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" while (!exit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":" exit \u003d !parser.parse(ioHandler.typeMessage(), ioHandler, taskList, storage);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":" new Duck(\"data/duck.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":39}},{"path":"src/main/java/duck/IoHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"import duck.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" * Responsible for handling Input Output tasks in the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"public class IoHandler {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":" private final Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" * Constructs IoHandler Object.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" public IoHandler() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" * Displays welcome Message.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" public void welcomeMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Hello! I\u0027m Duck\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" * Divides the paragraphs.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" public void divider() {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" * Reads the input from the user","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":" * @return User\u0027s inputted String.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":" public String typeMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" return sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"newway1814"},"content":" * Displays a list of tasks to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"newway1814"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"newway1814"},"content":" * @param taskList The TaskList containing tasks to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"newway1814"},"content":" public void display(TaskList taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"newway1814"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"newway1814"},"content":" int serial \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"newway1814"},"content":" while (count \u003c taskList.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"newway1814"},"content":" System.out.println(serial + \".\" + taskList.get(count));","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"newway1814"},"content":" count++;","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"newway1814"},"content":" serial++;","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"newway1814"},"content":" * Displays an exit message.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"newway1814"},"content":" public void exit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Bye. Hope to see you again soon !\");","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"newway1814"},"content":" * Displays a confirmation message when some task gets added.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"newway1814"},"content":" * @param t","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"newway1814"},"content":" * @param taskList","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"newway1814"},"content":" public void echoAdd(Task t, TaskList taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"newway1814"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"newway1814"},"content":" taskList.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"newway1814"},"content":" public void displaySearchResults(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Here are the matching tasks in your list: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"newway1814"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"newway1814"},"content":" System.out.println(i+1 + \".\" + list.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"newway1814"},"content":" divider();","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":90}},{"path":"src/main/java/duck/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"package duck;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.DuckException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.IllegalDateFormatException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"import duck.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"import duck.task.Events;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"import duck.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"import duck.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" * Deals in connecting with the user command.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" * Identifies the type of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" * @param command User\u0027s inputted text.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" * @return The type of task the user wants to do.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" public String identify(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" String[] strings \u003d command.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" return strings[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":" * Parses and executes user command to manage tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" * @param str User\u0027s inputed String (Command).","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":" * @param io IoHandler object for input and output","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" * @param taskList List containing Tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":" * @param storage Acts as a storage object for saving tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" * @return boolean value depicting whether application should run or should be exited.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":" public boolean parse(String str, IoHandler io, TaskList taskList, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":" String command \u003d identify(str);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":" switch (command) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":" Deadline tempDeadline \u003d taskList.setDeadline(str.substring(8));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" taskList.addTask(tempDeadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":" io.echoAdd(tempDeadline, taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":" storage.saveInFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"newway1814"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"newway1814"},"content":" Events tempEvent \u003d taskList.setEvent(str.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"newway1814"},"content":" taskList.addTask(tempEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"newway1814"},"content":" io.echoAdd(tempEvent, taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"newway1814"},"content":" storage.saveInFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"newway1814"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"newway1814"},"content":" ToDo tempToDo \u003d taskList.setToDo(str.substring(4));","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"newway1814"},"content":" taskList.addTask(tempToDo);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"newway1814"},"content":" io.echoAdd(tempToDo, taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"newway1814"},"content":" storage.saveInFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"newway1814"},"content":" case \"delete\":","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"newway1814"},"content":" Task tempDelete \u003d taskList.deleteTask(str, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"newway1814"},"content":" storage.saveInFile(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"newway1814"},"content":" System.out.println(\" \" + tempDelete.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"newway1814"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"newway1814"},"content":" Task tempMark \u003d taskList.setDone(str, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"newway1814"},"content":" System.out.println(\" \" + tempMark);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"newway1814"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"newway1814"},"content":" Task tempUnmark \u003d taskList.setUndone(str, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"newway1814"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"newway1814"},"content":" System.out.println(\" \" + tempUnmark);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"newway1814"},"content":" case \"list\":","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"newway1814"},"content":" io.display(taskList);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"newway1814"},"content":" case \"bye\":","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"newway1814"},"content":" io.exit();","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"newway1814"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"newway1814"},"content":" case \"find\":","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"newway1814"},"content":" ArrayList\u003cTask\u003e temp \u003d taskList.find(str.substring(5));","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"newway1814"},"content":" io.displaySearchResults(temp);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"newway1814"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"newway1814"},"content":" throw new DuckException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"newway1814"},"content":" } catch (DuckException | IllegalDateFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"newway1814"},"content":" System.out.println(\"ERROR : \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"newway1814"},"content":" io.divider();","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"newway1814"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":102}},{"path":"src/main/java/duck/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"import java.util.List;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.FileIoException;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":"import duck.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":"import duck.task.Events;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":"import duck.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":"import duck.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":"import duck.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" * Acts as file handling class which is responsible for storing and reading tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" private File file;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" * Constructs a storage object.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":" * @param filePath Consists of a filepath for storing and reading tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":" * Constructs a Storage Object.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":" public Storage() {}","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":" * Creates a File if it is not there","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":" * @throws FileIoException If unsuccessful in creating directory.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":" private void create() throws FileIoException {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"newway1814"},"content":" File parent \u003d file.getParentFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"newway1814"},"content":" if (parent !\u003d null \u0026\u0026 !parent.exists() \u0026\u0026 !parent.mkdirs()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"newway1814"},"content":" throw new IOException(\"Couldn\u0027t create dir: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"newway1814"},"content":" + parent);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"newway1814"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"newway1814"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"newway1814"},"content":" throw new FileIoException(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"newway1814"},"content":" * Saves the tasks in the file from the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"newway1814"},"content":" * @param list List of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"newway1814"},"content":" * @throws FileIoException if unsuccessful in creating file.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"newway1814"},"content":" public void saveInFile(TaskList list) throws FileIoException {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"newway1814"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"newway1814"},"content":" create();","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"newway1814"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"newway1814"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"newway1814"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"newway1814"},"content":" switch (task.type()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"newway1814"},"content":" case \"D\":","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"newway1814"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"newway1814"},"content":" fileWriter.write(deadline.type()","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"newway1814"},"content":" + \" | \" + (deadline.getStatusIcon().isBlank() ? \"0\" : \"1\")","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"newway1814"},"content":" + \" | \" + deadline.getDescription() + \" | \" + deadline.getBy());","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"newway1814"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"newway1814"},"content":" case \"E\":","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"newway1814"},"content":" Events events \u003d (Events) task;","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"newway1814"},"content":" fileWriter.write(events.type() + \" | \" + (events.getStatusIcon().isBlank() ? \"0\" : \"1\")","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"newway1814"},"content":" + \" | \" + events.getDescription() + \" | \" + events.getDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"newway1814"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"newway1814"},"content":" case \"T\":","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"newway1814"},"content":" ToDo toDo \u003d (ToDo) task;","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"newway1814"},"content":" fileWriter.write(toDo.type() + \" | \" + (toDo.getStatusIcon().isBlank() ? \"0\" : \"1\")","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"newway1814"},"content":" + \" | \" + toDo.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"newway1814"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"newway1814"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"newway1814"},"content":" throw new FileIoException(\"Error in file loading\");","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"newway1814"},"content":" fileWriter.write(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"newway1814"},"content":" fileWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"newway1814"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"newway1814"},"content":" throw new FileIoException(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"newway1814"},"content":" * Loads tasks from a file and returns them as a list of Task objects.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"newway1814"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"newway1814"},"content":" * @return A List of Task objects loaded from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"newway1814"},"content":" public List\u003cTask\u003e load() {","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"newway1814"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"newway1814"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"newway1814"},"content":" return list;","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"newway1814"},"content":" FileReader fr \u003d new FileReader(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"newway1814"},"content":" Scanner sc \u003d new Scanner(fr);","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"newway1814"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"newway1814"},"content":" String line \u003d sc.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"newway1814"},"content":" String[] split \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"newway1814"},"content":" switch (split[0]) {","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"newway1814"},"content":" case \"D\":","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"newway1814"},"content":" Deadline tempDeadline \u003d new Deadline(split[2],","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"newway1814"},"content":" LocalDateTime.parse(split[3], DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"newway1814"},"content":" if (split[1].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"newway1814"},"content":" tempDeadline.markAsDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"newway1814"},"content":" list.add(tempDeadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":121,"author":{"gitId":"newway1814"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":122,"author":{"gitId":"newway1814"},"content":" case \"E\":","lastModifiedDate":"2023-08-29"},{"lineNumber":123,"author":{"gitId":"newway1814"},"content":" String[] startEnd \u003d split[3].split(\"-\");","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"newway1814"},"content":" Events tempEvent \u003d","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"newway1814"},"content":" new Events(LocalDateTime.parse(startEnd[0], DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\")),","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"newway1814"},"content":" LocalDateTime.parse(startEnd[1], DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\")),","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"newway1814"},"content":" split[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"newway1814"},"content":" if (split[1].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"newway1814"},"content":" tempEvent.markAsDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":130,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":131,"author":{"gitId":"newway1814"},"content":" list.add(tempEvent);","lastModifiedDate":"2023-08-29"},{"lineNumber":132,"author":{"gitId":"newway1814"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":133,"author":{"gitId":"newway1814"},"content":" case \"T\":","lastModifiedDate":"2023-08-29"},{"lineNumber":134,"author":{"gitId":"newway1814"},"content":" ToDo tempToDo \u003d new ToDo(split[2]);","lastModifiedDate":"2023-08-29"},{"lineNumber":135,"author":{"gitId":"newway1814"},"content":" if (split[1].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":136,"author":{"gitId":"newway1814"},"content":" tempToDo.markAsDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":138,"author":{"gitId":"newway1814"},"content":" list.add(tempToDo);","lastModifiedDate":"2023-08-29"},{"lineNumber":139,"author":{"gitId":"newway1814"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":140,"author":{"gitId":"newway1814"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"newway1814"},"content":" throw new FileIoException(\"Unable to load\");","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":143,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":144,"author":{"gitId":"newway1814"},"content":" } catch (IOException | FileIoException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"newway1814"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":147,"author":{"gitId":"newway1814"},"content":" return list;","lastModifiedDate":"2023-08-29"},{"lineNumber":148,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":149,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"newway1814":149}},{"path":"src/main/java/duck/exceptions/DuckException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":" * Throws Duck Exception for invalid command.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"public class DuckException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" public DuckException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":12}},{"path":"src/main/java/duck/exceptions/FileIoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":" * represents an error","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":" * related to file input/output operations within application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" * It extends the DuckException class, provides a specific error message","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":" * related to the file I/O issue.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"public class FileIoException extends DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" public FileIoException(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" super(\"File I/O error \" + str);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":12}},{"path":"src/main/java/duck/exceptions/IllegalDateFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":" * A custom exception that gives error message due to inavlid date and time format.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"public class IllegalDateFormatException extends DateTimeParseException {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" public IllegalDateFormatException(String mssg, String parsedData) {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":" super(mssg, parsedData, 0);","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"newway1814":13}},{"path":"src/main/java/duck/exceptions/SemanticException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":" * Throws error message because of the Semantic Error in the application","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"public class SemanticException extends DuckException {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" public SemanticException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":11}},{"path":"src/main/java/duck/exceptions/SyntaxException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":" * Throws error message due to invalid Syntax written in the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"public class SyntaxException extends DuckException {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" public SyntaxException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":11}},{"path":"src/main/java/duck/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" * Consists of information related to Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":" * Constructs a Deadline Object.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" * @param description Contains the type of deadline","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" * @param by Contains the date and time so as to when should the deadline be completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" * String representation of the deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" * @return formatted string with the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":" return \"[D]\" + super.toString().substring(3) + \" (by: \" + this.getBy() + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":" * Returns the type of identifier.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" * @return type identifier \"D\" representing Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":" public String type() {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":" return \"D\";","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":" * Returns the formatted deadline date and time as a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":" * @return Date and Time in a particular format.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" public String getBy() {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":" return by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"newway1814":47}},{"path":"src/main/java/duck/task/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" * Contains the details of events as a part of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"public class Events extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" * Constructs the Events Object.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" * @param start Start date and time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" * @param end end date and time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" * @param description Contains the description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" public Events(LocalDateTime start, LocalDateTime end, String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" public String getExact() {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" String mmmDdYyyy \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":" if (start.toLocalDate().equals(end.toLocalDate())) {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" mmmDdYyyy \u003d start.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":" + start.format(DateTimeFormatter.ofPattern(\"hh:mm a\")) + \" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" + end.format(DateTimeFormatter.ofPattern(\"hh:mm a\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" mmmDdYyyy \u003d start.format(DateTimeFormatter.ofPattern(\"hh:mm a MMM dd yyyy\")) + \" to \"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":" + end.format(DateTimeFormatter.ofPattern(\"hh:mm a MMM dd yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":" return mmmDdYyyy;","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":" return \"[E]\" + super.toString().substring(3) + \" (from: \" + getExact() + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"newway1814"},"content":" public String type() {","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"newway1814"},"content":" return \"E\";","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"newway1814"},"content":" public String getDate() {","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"newway1814"},"content":" return this.start.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\")) + \"-\"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"newway1814"},"content":" + this.end.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"newway1814":54}},{"path":"src/main/java/duck/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":" * Contatins the information of the Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" private String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":" * Constructs the task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":" * @param description Contains the description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" this.description \u003d description.strip();","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" public String box() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":" return \"[\" + getStatusIcon() + \"] \";","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" return \"[ ]\" + this.box() + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"newway1814"},"content":" public String type() {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"newway1814"},"content":" return \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"newway1814"},"content":" public String getBy() {","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"newway1814"},"content":" return \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"newway1814":54}},{"path":"src/main/java/duck/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.IllegalDateFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.SemanticException;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.SyntaxException;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" * Manages all the operations of tasks on the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" private List\u003cTask\u003e listOfTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" this.listOfTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":" public TaskList(List\u003cTask\u003e t) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" this.listOfTasks \u003d t;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":" this.listOfTasks.add(t);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":" public Task removeIndex(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":" return this.listOfTasks.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"newway1814"},"content":" public void markTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"newway1814"},"content":" this.listOfTasks.get(index).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"newway1814"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"newway1814"},"content":" this.listOfTasks.get(index).markUndone();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"newway1814"},"content":" public int size() {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"newway1814"},"content":" return this.listOfTasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"newway1814"},"content":" public Task get(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"newway1814"},"content":" return this.listOfTasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"newway1814"},"content":" public Deadline setDeadline(String str) throws IllegalDateFormatException, SyntaxException {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"newway1814"},"content":" String[] arr \u003d str.split(\"/by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"newway1814"},"content":" if (arr.length !\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"newway1814"},"content":" throw new SyntaxException(\"Please check the command syntax\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"newway1814"},"content":" return new Deadline(arr[0], parseDateTime(arr[1]));","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"newway1814"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"newway1814"},"content":" throw new IllegalDateFormatException(\"Wrong Format for the date kindly put in \\nyyyy-MM-dd HHmm.\", str);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"newway1814"},"content":" public Events setEvent(String str) throws IllegalDateFormatException, SyntaxException {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"newway1814"},"content":" String[] event \u003d str.split(\"/from | /to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"newway1814"},"content":" if (event.length !\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"newway1814"},"content":" throw new SyntaxException(\"Please check the command syntax\");","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"newway1814"},"content":" return new Events(LocalDateTime.parse(event[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"newway1814"},"content":" LocalDateTime.parse(event[2], DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")), event[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"newway1814"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"newway1814"},"content":" throw new IllegalDateFormatException(\"Wrong Format for the date kindly put in \\nyyyy-MM-dd HHmm.\", str);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"newway1814"},"content":" private LocalDateTime parseDateTime(String dateTime) throws IllegalDateFormatException {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"newway1814"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"newway1814"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"newway1814"},"content":" throw new IllegalDateFormatException(\"Incorrect format\", dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"newway1814"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"newway1814"},"content":" * Deletes a particular task from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"newway1814"},"content":" * @param str Contains the delete command.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"newway1814"},"content":" * @param taskList It is the tasklist consisting of all the tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"newway1814"},"content":" * @return Task object.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"newway1814"},"content":" * @throws SyntaxException Throws invalid Syntax exception for wrong syntax.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"newway1814"},"content":" * @throws SemanticException Throws Exception when invalid values are given.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"newway1814"},"content":" public Task deleteTask(String str, TaskList taskList) throws SyntaxException, SemanticException {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"newway1814"},"content":" String[] string \u003d str.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"newway1814"},"content":" if (string.length !\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"newway1814"},"content":" throw new SyntaxException(\"Need only index number after delete\");","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"newway1814"},"content":" int index \u003d Integer.parseInt(string[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"newway1814"},"content":" return taskList.removeIndex(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"newway1814"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"newway1814"},"content":" throw new SyntaxException(\"Need only index number after delete\");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"newway1814"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"newway1814"},"content":" throw new SemanticException(\"Index is out of bounds, please write correct index number\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"newway1814"},"content":" private int getIndexOfMark(String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"newway1814"},"content":" return Integer.parseInt(str.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"newway1814"},"content":" public Task setDone(String str, TaskList taskList) throws SyntaxException, SemanticException {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"newway1814"},"content":" int index \u003d getIndexOfMark(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"newway1814"},"content":" taskList.markTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"newway1814"},"content":" return taskList.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"newway1814"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"newway1814"},"content":" throw new SyntaxException(\"Need only index number to mark as done\");","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"newway1814"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"newway1814"},"content":" throw new SemanticException(\"Index is out of bounds, please write correct index number\");","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"newway1814"},"content":" public Task setUndone(String str, TaskList taskList) throws SyntaxException, SemanticException {","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"newway1814"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"newway1814"},"content":" int index \u003d getIndexOfUnmark(str);","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"newway1814"},"content":" taskList.unmarkTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"newway1814"},"content":" return taskList.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"newway1814"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"newway1814"},"content":" throw new SyntaxException(\"Need only index number to mark as undone\");","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"newway1814"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"newway1814"},"content":" throw new SemanticException(\"Index is out of bounds, please write correct index number\");","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"newway1814"},"content":" private int getIndexOfUnmark(String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"newway1814"},"content":" return Integer.parseInt(str.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"newway1814"},"content":" public ToDo setToDo(String str) throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"newway1814"},"content":" String[] todo \u003d str.strip().split(\"todo ?+\");","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"newway1814"},"content":" if (todo.length \u003e 0 \u0026\u0026 !todo[0].isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"newway1814"},"content":" return new ToDo(todo[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"newway1814"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"newway1814"},"content":" throw new DuckException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"newway1814"},"content":" public ArrayList\u003cTask\u003e find(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"newway1814"},"content":" ArrayList\u003cTask\u003e searchedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"newway1814"},"content":" for (int i \u003d 0; i \u003c listOfTasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"newway1814"},"content":" if (listOfTasks.get(i).getDescription().contains(command)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"newway1814"},"content":" searchedTasks.add(listOfTasks.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"newway1814"},"content":" return searchedTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":160}},{"path":"src/main/java/duck/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":" * Represents the todo type of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":" public ToDo(String str) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":" super(str);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" return \"[T]\" + super.toString().substring(3);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" public String type() {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" return \"T\";","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"newway1814":21}},{"path":"src/main/java/duck/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":" * Class made for User-Interface.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":" public Ui() {}","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"newway1814":8}},{"path":"src/test/java/duck/task/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"import duck.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":" public void identifyTestWithCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":" String command \u003d parser.identify(\"deadline return book /by 2023-03-03 1220\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" assertEquals(\"deadline\", command);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" command \u003d parser.identify(\"event attend marraige /from 2023-09-09 1220 /to 2023-09-10 1220\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" assertEquals(\"event\", command);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" command \u003d parser.identify(\"todo project\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" assertEquals(\"todo\", command);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"newway1814":23}},{"path":"src/test/java/duck/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"package duck.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"import duck.exceptions.DuckException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"newway1814"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"newway1814"},"content":" public void testSetToDo() throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"newway1814"},"content":" String input \u003d \"Do ip\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"newway1814"},"content":" TaskList test \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"newway1814"},"content":" ToDo todo \u003d test.setToDo(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"newway1814"},"content":" assertEquals(\"Do ip\", todo.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"newway1814"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":" public void testEmptySpaces() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"newway1814"},"content":" String input \u003d \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"newway1814"},"content":" TaskList test \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"newway1814"},"content":" assertThrows(DuckException.class, ()-\u003etest.setToDo(input));","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"newway1814"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"newway1814"},"content":" public void testSpacesAndWords() throws DuckException {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"newway1814"},"content":" String input \u003d \" project \";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"newway1814"},"content":" TaskList test \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"newway1814"},"content":" ToDo todo \u003d test.setToDo(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"newway1814"},"content":" assertEquals(\"project\", todo.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"newway1814"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"newway1814"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"newway1814"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"newway1814":34}},{"path":"text-ui-test/data/duck.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"D | 0 | return book | Mar 09 2034 12:00","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"E | 0 | project meeting | Sept 08 2032 12:30-Sept 08 2032 12:30","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"newway1814":2}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"newway1814"},"content":"list","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"newway1814"},"content":"delete 3 fnwlfkn","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"newway1814"},"content":"delete 3","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"newway1814"},"content":"todo project","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"newway1814"},"content":"deadline return book /by sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"newway1814"},"content":"deadline return book /by 2034-03-09 1200","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"newway1814"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"newway1814"},"content":"event project meeting /from 2032-09-08 1230 /by 2032-09-08 1230","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"newway1814"},"content":"event project meeting /from 2032-09-08 1230 /to 2032-09-08 1230","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"newway1814"},"content":"delete 0","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"newway1814"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"newway1814":11}},{"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":"newway1814"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\duck\\*.java","lastModifiedDate":"2023-08-30"},{"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":"newway1814"},"content":"rmdir /s /q \"./data\"","lastModifiedDate":"2023-08-30"},{"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":"newway1814"},"content":"java -classpath ..\\bin duck.Duck \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"newway1814"},"content":"FC /w ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"-":16,"newway1814":4}}] diff --git a/newway1814_ip_master/commits.json b/newway1814_ip_master/commits.json index 66a60574..b0317f95 100644 --- a/newway1814_ip_master/commits.json +++ b/newway1814_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"newway1814":[{"date":"2023-08-21","commitResults":[{"hash":"d42f96bb8e4da557af7a48e019ddcb08d4d70db8","isMergeCommit":false,"messageTitle":"Completed Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"8f55f340e45de94b32afa30cb70936ca142b09cc","isMergeCommit":false,"messageTitle":"Completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"81b86166e103585dd91e441ba80c734e5c7f999c","isMergeCommit":false,"messageTitle":"Completed Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":5}}}]},{"date":"2023-08-22","commitResults":[{"hash":"538f536c5d5239927f248f15be977b3547667b49","isMergeCommit":false,"messageTitle":"Completed Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":15}}}]},{"date":"2023-08-23","commitResults":[{"hash":"1629c14337e0ce258340287e44cc613b101ba3f6","isMergeCommit":false,"messageTitle":"Completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":19}}},{"hash":"e5d48b14970de13986bfe88b741d67e05d286249","isMergeCommit":false,"messageTitle":"Completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":34},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"c7fb908f5a9b70b4cefda2a3fabf876db88b444b","isMergeCommit":false,"messageTitle":"Completed Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"33b4900041f576db8dad24c04effedd2b49d09b6","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":5,"deletions":4},"bat":{"insertions":0,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"e3eee20de7828887e124e1dfae5476e22b1864f6","isMergeCommit":false,"messageTitle":"Completed Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":203,"deletions":54}}},{"hash":"af42de9e8d7635329a5b8aa15a5f07a7010d4c56","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"320d8cf47c4c5f246795650226ae3a34fc9c1d48","isMergeCommit":false,"messageTitle":"make illegal date format exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"ed81083c0231e589a441e99ac047f841a39d0512","isMergeCommit":false,"messageTitle":"add basic date parsing functionality for deadline events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":16}}},{"hash":"6526e142c7c5b168a9743da4ecfc6aca3be699d9","isMergeCommit":true,"messageTitle":"fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"788372ea8d770e7fac539ab3c2452c012912f322","isMergeCommit":false,"messageTitle":"fix datetime parse error in halting the program","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}}]},{"date":"2023-08-30","commitResults":[{"hash":"2634eb189025a2a5adcff0fc9f602b5a82b1827f","isMergeCommit":false,"messageTitle":"Applied OOP Principles","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":4},"java":{"insertions":383,"deletions":256},"bat":{"insertions":3,"deletions":3}}},{"hash":"4bfe79fcbc6ff3861c78c15d393a0c6780fcce14","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-OOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"f184cff5d421a3c0f6419da6e043a669aa73f30e","isMergeCommit":false,"messageTitle":"Organised the code into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":18},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-31","commitResults":[{"hash":"e01de48d9b0d76166d8d40765e6b0a611c0b9be9","isMergeCommit":false,"messageTitle":"Solve conflicts","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":183,"deletions":172}}},{"hash":"b871ba6e18ebd232dee7f56588d65d4a78461520","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"adf006df8d52a879eb6b17559e3f14f2679cd1ac","isMergeCommit":false,"messageTitle":"Add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":11,"deletions":2},"txt":{"insertions":0,"deletions":3},"java":{"insertions":0,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"newway1814":{"java":602,"md":2,"fxml":0,"sh":0,"bat":4,"gradle":11,"txt":13}},"authorContributionVariance":{"newway1814":38527.797},"authorDisplayNameMap":{"newway1814":"CS2103T-W15-1 GAND..EJAS"}} +{"authorDailyContributionsMap":{"newway1814":[{"date":"2023-08-21","commitResults":[{"hash":"d42f96bb8e4da557af7a48e019ddcb08d4d70db8","isMergeCommit":false,"messageTitle":"Completed Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"8f55f340e45de94b32afa30cb70936ca142b09cc","isMergeCommit":false,"messageTitle":"Completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"81b86166e103585dd91e441ba80c734e5c7f999c","isMergeCommit":false,"messageTitle":"Completed Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":5}}}]},{"date":"2023-08-22","commitResults":[{"hash":"538f536c5d5239927f248f15be977b3547667b49","isMergeCommit":false,"messageTitle":"Completed Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":15}}}]},{"date":"2023-08-23","commitResults":[{"hash":"1629c14337e0ce258340287e44cc613b101ba3f6","isMergeCommit":false,"messageTitle":"Completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":19}}},{"hash":"e5d48b14970de13986bfe88b741d67e05d286249","isMergeCommit":false,"messageTitle":"Completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":34},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"c7fb908f5a9b70b4cefda2a3fabf876db88b444b","isMergeCommit":false,"messageTitle":"Completed Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"33b4900041f576db8dad24c04effedd2b49d09b6","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":5,"deletions":4},"bat":{"insertions":0,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"e3eee20de7828887e124e1dfae5476e22b1864f6","isMergeCommit":false,"messageTitle":"Completed Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":203,"deletions":54}}},{"hash":"af42de9e8d7635329a5b8aa15a5f07a7010d4c56","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"320d8cf47c4c5f246795650226ae3a34fc9c1d48","isMergeCommit":false,"messageTitle":"make illegal date format exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"ed81083c0231e589a441e99ac047f841a39d0512","isMergeCommit":false,"messageTitle":"add basic date parsing functionality for deadline events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":16}}},{"hash":"6526e142c7c5b168a9743da4ecfc6aca3be699d9","isMergeCommit":true,"messageTitle":"fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"788372ea8d770e7fac539ab3c2452c012912f322","isMergeCommit":false,"messageTitle":"fix datetime parse error in halting the program","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}}]},{"date":"2023-08-30","commitResults":[{"hash":"2634eb189025a2a5adcff0fc9f602b5a82b1827f","isMergeCommit":false,"messageTitle":"Applied OOP Principles","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":4},"java":{"insertions":383,"deletions":256},"bat":{"insertions":3,"deletions":3}}},{"hash":"4bfe79fcbc6ff3861c78c15d393a0c6780fcce14","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-OOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"f184cff5d421a3c0f6419da6e043a669aa73f30e","isMergeCommit":false,"messageTitle":"Organised the code into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":18},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-31","commitResults":[{"hash":"e01de48d9b0d76166d8d40765e6b0a611c0b9be9","isMergeCommit":false,"messageTitle":"Solve conflicts","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":183,"deletions":172}}},{"hash":"b871ba6e18ebd232dee7f56588d65d4a78461520","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"adf006df8d52a879eb6b17559e3f14f2679cd1ac","isMergeCommit":false,"messageTitle":"Add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":11,"deletions":2},"txt":{"insertions":0,"deletions":3},"java":{"insertions":0,"deletions":0}}},{"hash":"500afb1d0a5a7b6aae051958ec85080922cc7291","isMergeCommit":false,"messageTitle":"Set up J-unit","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":228,"deletions":149}}},{"hash":"48d6d4d1ece48d0dd148e1881c2d99b23e1bf3f6","isMergeCommit":false,"messageTitle":"Set up jar file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":1,"deletions":0}}},{"hash":"40e6496abb2910b62aa7b26e00c337ae0580887b","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":163,"deletions":30}}},{"hash":"5faff06e0021565f2a0f4280288da24f8aa13ac6","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"3725ad9b4e7d5e5723bb798077c705d062f42cda","isMergeCommit":false,"messageTitle":"Complete Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"5723567b110e95b5b2ddf2ff13ebee976c00231b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"85a98055054da922c558d70ca601942a736c6c07","isMergeCommit":false,"messageTitle":"Add Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"51f34448b5cf3c97dad7fdcb1c3bb4ca8705767b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"newway1814":{"java":840,"md":2,"fxml":0,"sh":0,"bat":4,"gradle":12,"txt":13}},"authorContributionVariance":{"newway1814":52759.45},"authorDisplayNameMap":{"newway1814":"CS2103T-W15-1 GAND..EJAS"}} diff --git a/nicolengk_ip_master/authorship.json b/nicolengk_ip_master/authorship.json index ddf06113..099d1861 100644 --- a/nicolengk_ip_master/authorship.json +++ b/nicolengk_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"T | 1 | read book","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":"E | 0 | project meeting | Mon 2pm - 4pm","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":"D | 1 | return book | Sunday","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":"T | 0 | eat book","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":"D | 0 | eat book | Sunday","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":"D | 0 | eat book | Sunday","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nicolengk":6}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":" private String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nicolengk"},"content":" public String toString () {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nicolengk"},"content":" return \"D\" + super.toString() + \" | \" + this.by;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nicolengk"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nicolengk"},"content":" char taskType \u003d \u0027D\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nicolengk"},"content":" return taskType + \" | \" + super.toFileString() + \" | \" + by;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nicolengk"},"content":" public static Deadline createDeadlineFromData(String taskData) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nicolengk"},"content":" String[] taskParts \u003d taskData.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nicolengk"},"content":" if (taskParts.length \u003e\u003d 3 \u0026\u0026 taskParts[0].trim().equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nicolengk"},"content":" String doneStatus \u003d taskParts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nicolengk"},"content":" String description \u003d taskParts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nicolengk"},"content":" String by \u003d taskParts[3].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nicolengk"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nicolengk"},"content":" if (doneStatus.equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nicolengk"},"content":" deadline.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nicolengk"},"content":" return deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nicolengk"},"content":" return null; // incomplete data.txt","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"nicolengk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nicolengk":36}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nicolengk"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"nicolengk"},"content":" //create empty list to store stuff to do","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nicolengk"},"content":" private static List\u003cTask\u003e toDoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nicolengk"},"content":" //create scanner to read user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nicolengk"},"content":" private static Scanner scan \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nicolengk"},"content":" private static final String DATA_FILE_PATH \u003d \"data.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"nicolengk"},"content":" //load tasks from file","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nicolengk"},"content":" loadTasksFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nicolengk"},"content":" //greeting","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Hello! I\u0027m Sara\");","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"nicolengk"},"content":" //processing user commands","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"nicolengk"},"content":" while (true) {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"nicolengk"},"content":" //read user input","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"nicolengk"},"content":" String userInput \u003d scan.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"nicolengk"},"content":" //check for exit command first","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"nicolengk"},"content":" if (userInput.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"nicolengk"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"nicolengk"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"nicolengk"},"content":" processInput(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"nicolengk"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"☹ OOPS!!! \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"nicolengk"},"content":" private static void processInput(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"nicolengk"},"content":" if (userInput.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"nicolengk"},"content":" listTasks();","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"nicolengk"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"nicolengk"},"content":" markTaskDone(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"nicolengk"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"nicolengk"},"content":" unmarkTask(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"nicolengk"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"nicolengk"},"content":" addTodoTask(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"nicolengk"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"nicolengk"},"content":" addDeadlineTask(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"nicolengk"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"nicolengk"},"content":" addEventTask(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"nicolengk"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"nicolengk"},"content":" deleteTask(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"nicolengk"},"content":" private static void listTasks() {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Here are the tasks in your List:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"nicolengk"},"content":" for (int i \u003d 0; i \u003c toDoList.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"nicolengk"},"content":" System.out.println(((i + 1) + \". \" + toDoList.get(i)));","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"nicolengk"},"content":" private static void markTaskDone(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"nicolengk"},"content":" String[] splitInput \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"nicolengk"},"content":" if (splitInput.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"nicolengk"},"content":" int taskIndex \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"nicolengk"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c toDoList.size()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"nicolengk"},"content":" toDoList.get(taskIndex).markDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" + toDoList.get(taskIndex));","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"nicolengk"},"content":" saveTasksToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"invalid task number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"task number required\");","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"nicolengk"},"content":" private static void unmarkTask(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"nicolengk"},"content":" String[] splitInput \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"nicolengk"},"content":" if (splitInput.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"nicolengk"},"content":" int taskIndex \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"nicolengk"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c toDoList.size()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"nicolengk"},"content":" toDoList.get(taskIndex).markNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" + toDoList.get(taskIndex));","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"nicolengk"},"content":" saveTasksToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"invalid task number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"task number required\");","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"nicolengk"},"content":" private static void addTodoTask(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"nicolengk"},"content":" if (userInput.length() \u003c\u003d 5) {","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"nicolengk"},"content":" String description \u003d userInput.substring(5).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"nicolengk"},"content":" Task newTask \u003d new Todo(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"nicolengk"},"content":" toDoList.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Now you have \" + toDoList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"nicolengk"},"content":" saveTasksToFile(); //save to-do task to file","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"nicolengk"},"content":" private static void addDeadlineTask(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"nicolengk"},"content":" if (userInput.length() \u003c\u003d 9) {","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"nicolengk"},"content":" String[] splitInput \u003d userInput.split(\"/by\");","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"nicolengk"},"content":" if (splitInput.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"nicolengk"},"content":" String description \u003d splitInput[0].substring(9).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"nicolengk"},"content":" String by \u003d splitInput[1].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"nicolengk"},"content":" Task newTask \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"nicolengk"},"content":" toDoList.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Now you have \" + toDoList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"nicolengk"},"content":" saveTasksToFile(); // save deadline task to file","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"nicolengk"},"content":" private static void addEventTask(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"nicolengk"},"content":" if (userInput.length() \u003c\u003d 6) {","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"nicolengk"},"content":" String[] splitInput \u003d userInput.split(\"/from\");","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"nicolengk"},"content":" if (splitInput.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"nicolengk"},"content":" String description \u003d splitInput[0].substring(6).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"nicolengk"},"content":" String[] eventDetails \u003d splitInput[1].split(\"/to\");","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"nicolengk"},"content":" if (eventDetails.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"nicolengk"},"content":" String from \u003d eventDetails[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"nicolengk"},"content":" String to \u003d eventDetails[1].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"nicolengk"},"content":" Task newTask \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"nicolengk"},"content":" toDoList.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Now you have \" + toDoList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"nicolengk"},"content":" saveTasksToFile(); //save event task to file","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":150,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"nicolengk"},"content":" private static void deleteTask(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"nicolengk"},"content":" if (userInput.length() \u003c\u003d 7) {","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"Please specify what to delete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"nicolengk"},"content":" String[] splitInput \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"nicolengk"},"content":" int taskIndex \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"nicolengk"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c toDoList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"nicolengk"},"content":" Task removedTask \u003d toDoList.remove(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\" + removedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Now you have \" + toDoList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"nicolengk"},"content":" saveTasksToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"invalid task number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":169,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"nicolengk"},"content":" private static void saveTasksToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"nicolengk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"nicolengk"},"content":" FileWriter writer \u003d new FileWriter(DATA_FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"nicolengk"},"content":" for (Task task : toDoList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"nicolengk"},"content":" writer.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"nicolengk"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"nicolengk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Error saving task to file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"nicolengk"},"content":" private static void loadTasksFromFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"nicolengk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"nicolengk"},"content":" File file \u003d new File(DATA_FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"nicolengk"},"content":" if (file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"nicolengk"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"nicolengk"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"nicolengk"},"content":" String taskData \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"nicolengk"},"content":" Task task \u003d Task.createTaskFromData(taskData);","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"nicolengk"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"nicolengk"},"content":" toDoList.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"nicolengk"},"content":" scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"nicolengk"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Error loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"nicolengk":196,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nicolengk":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":" private String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":" private String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nicolengk"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nicolengk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nicolengk"},"content":" return \"E\" + super.toString() + \" | \" + this.from + \"-\" + this.to;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nicolengk"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nicolengk"},"content":" char taskType \u003d \u0027E\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nicolengk"},"content":" return taskType + \" | \" + super.toFileString() + \" | \" + from + \" - \" + to;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nicolengk"},"content":" public static Event createEventFromData(String taskData) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nicolengk"},"content":" String[] taskParts \u003d taskData.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nicolengk"},"content":" if (taskParts.length \u003e\u003d 4 \u0026\u0026 taskParts[0].trim().equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nicolengk"},"content":" String doneStatus \u003d taskParts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nicolengk"},"content":" String description \u003d taskParts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nicolengk"},"content":" String fromTo \u003d taskParts[3].trim(); // Combine from-to time as a single string","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nicolengk"},"content":" // Split from-to time into separate \u0027from\u0027 and \u0027to\u0027 parts","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nicolengk"},"content":" String[] fromToParts \u003d fromTo.split(\"-\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nicolengk"},"content":" if (fromToParts.length \u003e\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nicolengk"},"content":" String from \u003d fromToParts[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nicolengk"},"content":" String to \u003d fromToParts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nicolengk"},"content":" Event event \u003d new Event(description, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nicolengk"},"content":" if (doneStatus.equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nicolengk"},"content":" event.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nicolengk"},"content":" return event;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"nicolengk"},"content":" return null; // incomplete data.txt","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"nicolengk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nicolengk":48}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":" protected String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":" protected Boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":" public Task (String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nicolengk"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nicolengk"},"content":" public String getTaskType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nicolengk"},"content":" return \"\"; // Return an empty string for the base class","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nicolengk"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nicolengk"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nicolengk"},"content":" public void markNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nicolengk"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nicolengk"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nicolengk"},"content":" char doneStatus \u003d isDone ? \u00271\u0027 : \u00270\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nicolengk"},"content":" return doneStatus + \" | \" + description;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nicolengk"},"content":" public static Task createTaskFromData(String taskData) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nicolengk"},"content":" String[] taskParts \u003d taskData.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nicolengk"},"content":" if (taskParts.length \u003e\u003d 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nicolengk"},"content":" String taskType \u003d taskParts[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nicolengk"},"content":" String doneStatus \u003d taskParts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nicolengk"},"content":" String description \u003d taskParts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nicolengk"},"content":" Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nicolengk"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nicolengk"},"content":" task \u003d Todo.createTodoFromData(taskData);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nicolengk"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nicolengk"},"content":" task \u003d Deadline.createDeadlineFromData(taskData);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nicolengk"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nicolengk"},"content":" task \u003d Event.createEventFromData(taskData);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Unrecognized task type: \" + taskType);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nicolengk"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"nicolengk"},"content":" if (doneStatus.equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"nicolengk"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"nicolengk"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"nicolengk"},"content":" return null; // Incomplete data","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"nicolengk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"nicolengk"},"content":" String status \u003d isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"nicolengk"},"content":" return getTaskType() + \" | \" + status + \" | \" + description;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"nicolengk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nicolengk":62}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nicolengk"},"content":" return \"T\" + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nicolengk"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nicolengk"},"content":" char taskType \u003d \u0027T\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nicolengk"},"content":" return taskType + \" | \" + super.toFileString();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nicolengk"},"content":" public static Todo createTodoFromData(String taskData) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nicolengk"},"content":" String[] taskParts \u003d taskData.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nicolengk"},"content":" if (taskParts.length \u003e\u003d 3 \u0026\u0026 taskParts[0].trim().equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nicolengk"},"content":" String doneStatus \u003d taskParts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nicolengk"},"content":" String description \u003d taskParts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nicolengk"},"content":" Todo todo \u003d new Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nicolengk"},"content":" if (doneStatus.equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nicolengk"},"content":" todo.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nicolengk"},"content":" return todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nicolengk"},"content":" return null; // Incomplete data","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nicolengk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nicolengk":33}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nicolengk"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"nicolengk"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nicolengk":8}}] +[{"path":"data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"T | 1 | read book","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":"D | 0 | eat | 2020-12-30 10:40","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":"E | 0 | die | 2020-12-30 10:40 | 2020-12-30 10:50","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"nicolengk":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":" private LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nicolengk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nicolengk"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nicolengk"},"content":" public String toString () {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nicolengk"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nicolengk"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(formatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nicolengk"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nicolengk"},"content":" char taskType \u003d \u0027D\u0027;//remove ltr","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nicolengk"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nicolengk"},"content":" return taskType + \" | \" + super.toFileString() + \" | \" + by.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nicolengk"},"content":" public static Deadline createDeadlineFromData(String taskData) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nicolengk"},"content":" String[] taskParts \u003d taskData.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nicolengk"},"content":" if (taskParts.length \u003e\u003d 3 \u0026\u0026 taskParts[0].trim().equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nicolengk"},"content":" String doneStatus \u003d taskParts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nicolengk"},"content":" String description \u003d taskParts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nicolengk"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nicolengk"},"content":" LocalDateTime by \u003d LocalDateTime.parse(taskParts[3].trim(), formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nicolengk"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nicolengk"},"content":" if (doneStatus.equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nicolengk"},"content":" deadline.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nicolengk"},"content":" return deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nicolengk"},"content":" return null; // incomplete data.txt","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"nicolengk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nicolengk":43}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"nicolengk"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nicolengk"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nicolengk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nicolengk"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"nicolengk"},"content":" //create empty list to store stuff to do","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nicolengk"},"content":" private static List\u003cTask\u003e toDoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nicolengk"},"content":" //create scanner to read user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nicolengk"},"content":" private static Scanner scan \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nicolengk"},"content":" private static final String DATA_FILE_PATH \u003d \"data.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":21,"author":{"gitId":"nicolengk"},"content":" //load tasks from file","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nicolengk"},"content":" loadTasksFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nicolengk"},"content":" //greeting","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Hello! I\u0027m Sara\");","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"nicolengk"},"content":" //processing user commands","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"nicolengk"},"content":" while (true) {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"nicolengk"},"content":" //read user input","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"nicolengk"},"content":" String userInput \u003d scan.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"nicolengk"},"content":" //check for exit command first","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"nicolengk"},"content":" if (userInput.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"nicolengk"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"nicolengk"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"nicolengk"},"content":" processInput(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"nicolengk"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"☹ OOPS!!! \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"nicolengk"},"content":" private static void processInput(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"nicolengk"},"content":" if (userInput.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"nicolengk"},"content":" listTasks();","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"nicolengk"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"nicolengk"},"content":" markTaskDone(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"nicolengk"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"nicolengk"},"content":" unmarkTask(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"nicolengk"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"nicolengk"},"content":" addTodoTask(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"nicolengk"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"nicolengk"},"content":" addDeadlineTask(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"nicolengk"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"nicolengk"},"content":" addEventTask(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"nicolengk"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"nicolengk"},"content":" deleteTask(userInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"nicolengk"},"content":" private static void listTasks() {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Here are the tasks in your List:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"nicolengk"},"content":" for (int i \u003d 0; i \u003c toDoList.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"nicolengk"},"content":" System.out.println(((i + 1) + \". \" + toDoList.get(i)));","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"nicolengk"},"content":" private static void markTaskDone(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"nicolengk"},"content":" String[] splitInput \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"nicolengk"},"content":" if (splitInput.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"nicolengk"},"content":" int taskIndex \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"nicolengk"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c toDoList.size()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"nicolengk"},"content":" toDoList.get(taskIndex).markDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" + toDoList.get(taskIndex));","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"nicolengk"},"content":" saveTasksToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"invalid task number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"task number required\");","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"nicolengk"},"content":" private static void unmarkTask(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"nicolengk"},"content":" String[] splitInput \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"nicolengk"},"content":" if (splitInput.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"nicolengk"},"content":" int taskIndex \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"nicolengk"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c toDoList.size()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"nicolengk"},"content":" toDoList.get(taskIndex).markNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" + toDoList.get(taskIndex));","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"nicolengk"},"content":" saveTasksToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"invalid task number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"task number required\");","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"nicolengk"},"content":" private static void addTodoTask(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"nicolengk"},"content":" if (userInput.length() \u003c\u003d 5) {","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"nicolengk"},"content":" String description \u003d userInput.substring(5).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"nicolengk"},"content":" Task newTask \u003d new Todo(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"nicolengk"},"content":" toDoList.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Now you have \" + toDoList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"nicolengk"},"content":" saveTasksToFile(); //save to-do task to file","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"nicolengk"},"content":" private static void addDeadlineTask(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"nicolengk"},"content":" if (userInput.length() \u003c\u003d 9) {","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"nicolengk"},"content":" String[] splitInput \u003d userInput.split(\"/by\");","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"nicolengk"},"content":" if (splitInput.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"nicolengk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"nicolengk"},"content":" String description \u003d splitInput[0].substring(9).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"nicolengk"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"nicolengk"},"content":" LocalDateTime by \u003d LocalDateTime.parse(splitInput[1].trim(), formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"nicolengk"},"content":" Task newTask \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"nicolengk"},"content":" toDoList.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Now you have \" + toDoList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"nicolengk"},"content":" saveTasksToFile(); // save deadline task to file","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"nicolengk"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"nicolengk"},"content":" private static void addEventTask(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"nicolengk"},"content":" if (userInput.length() \u003c\u003d 6) {","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"nicolengk"},"content":" String[] splitInput \u003d userInput.split(\"/from\");","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"nicolengk"},"content":" if (splitInput.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"nicolengk"},"content":" String description \u003d splitInput[0].substring(6).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"nicolengk"},"content":" String[] eventDetails \u003d splitInput[1].split(\"/to\");","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"nicolengk"},"content":" if (eventDetails.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"nicolengk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"nicolengk"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"nicolengk"},"content":" LocalDateTime from \u003d LocalDateTime.parse(eventDetails[0].trim(), formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"nicolengk"},"content":" LocalDateTime to \u003d LocalDateTime.parse(eventDetails[1].trim(), formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"nicolengk"},"content":" Task newTask \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"nicolengk"},"content":" toDoList.add(newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + newTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Now you have \" + toDoList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"nicolengk"},"content":" saveTasksToFile(); //save event task to file","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"nicolengk"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":166,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"nicolengk"},"content":" private static void deleteTask(String userInput) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"nicolengk"},"content":" if (userInput.length() \u003c\u003d 7) {","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"Please specify what to delete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"nicolengk"},"content":" String[] splitInput \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"nicolengk"},"content":" int taskIndex \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"nicolengk"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c toDoList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"nicolengk"},"content":" Task removedTask \u003d toDoList.remove(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\" + removedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Now you have \" + toDoList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"nicolengk"},"content":" saveTasksToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"nicolengk"},"content":" throw new DukeException(\"invalid task number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":185,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"nicolengk"},"content":" private static void saveTasksToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"nicolengk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"nicolengk"},"content":" FileWriter writer \u003d new FileWriter(DATA_FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"nicolengk"},"content":" for (Task task : toDoList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"nicolengk"},"content":" writer.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"nicolengk"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"nicolengk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Error saving task to file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"nicolengk"},"content":" private static void loadTasksFromFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"nicolengk"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"nicolengk"},"content":" File file \u003d new File(DATA_FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"nicolengk"},"content":" if (file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"nicolengk"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"nicolengk"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"nicolengk"},"content":" String taskData \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"nicolengk"},"content":" Task task \u003d Task.createTaskFromData(taskData);","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"nicolengk"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"nicolengk"},"content":" toDoList.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"nicolengk"},"content":" scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"nicolengk"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Error loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"nicolengk":212,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nicolengk":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nicolengk"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nicolengk"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"nicolengk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nicolengk"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nicolengk"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nicolengk"},"content":" public String toString () {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nicolengk"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nicolengk"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(formatter) + \" to: \" + to.format(formatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nicolengk"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nicolengk"},"content":" char taskType \u003d \u0027E\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nicolengk"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nicolengk"},"content":" return taskType + \" | \" + super.toFileString() + \" | \" + from.format(formatter) + \" | \" + to.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nicolengk"},"content":" public static Event createEventFromData(String taskData) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nicolengk"},"content":" String[] taskParts \u003d taskData.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nicolengk"},"content":" if (taskParts.length \u003e\u003d 4 \u0026\u0026 taskParts[0].trim().equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nicolengk"},"content":" String doneStatus \u003d taskParts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nicolengk"},"content":" String description \u003d taskParts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nicolengk"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nicolengk"},"content":" LocalDateTime from \u003d LocalDateTime.parse(taskParts[3].trim(), formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nicolengk"},"content":" LocalDateTime to \u003d LocalDateTime.parse(taskParts[4].trim(), formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nicolengk"},"content":" Event event \u003d new Event(description, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nicolengk"},"content":" if (doneStatus.equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nicolengk"},"content":" event.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"nicolengk"},"content":" return event;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"nicolengk"},"content":" return null; // incomplete data.txt","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"nicolengk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nicolengk":49}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":" protected String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":" protected Boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":" public Task (String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nicolengk"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nicolengk"},"content":" public String getTaskType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nicolengk"},"content":" return \"\"; // Return an empty string for the base class","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nicolengk"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nicolengk"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nicolengk"},"content":" public void markNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nicolengk"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nicolengk"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nicolengk"},"content":" char doneStatus \u003d isDone ? \u00271\u0027 : \u00270\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nicolengk"},"content":" return doneStatus + \" | \" + description;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nicolengk"},"content":" public static Task createTaskFromData(String taskData) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nicolengk"},"content":" String[] taskParts \u003d taskData.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nicolengk"},"content":" if (taskParts.length \u003e\u003d 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nicolengk"},"content":" String taskType \u003d taskParts[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nicolengk"},"content":" String doneStatus \u003d taskParts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nicolengk"},"content":" String description \u003d taskParts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nicolengk"},"content":" Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"nicolengk"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"nicolengk"},"content":" task \u003d Todo.createTodoFromData(taskData);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"nicolengk"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"nicolengk"},"content":" task \u003d Deadline.createDeadlineFromData(taskData);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"nicolengk"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"nicolengk"},"content":" task \u003d Event.createEventFromData(taskData);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"nicolengk"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"nicolengk"},"content":" System.out.println(\"Unrecognized task type: \" + taskType);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"nicolengk"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"nicolengk"},"content":" if (doneStatus.equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"nicolengk"},"content":" task.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"nicolengk"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"nicolengk"},"content":" return null; // Incomplete data","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"nicolengk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"nicolengk"},"content":" String status \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"nicolengk"},"content":" return getTaskType() + \" [\" + status + \"] \" + description;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"nicolengk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nicolengk":62}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nicolengk"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nicolengk"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nicolengk"},"content":" public String toFileString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nicolengk"},"content":" char taskType \u003d \u0027T\u0027;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nicolengk"},"content":" return taskType + \" | \" + super.toFileString();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"nicolengk"},"content":" public static Todo createTodoFromData(String taskData) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"nicolengk"},"content":" String[] taskParts \u003d taskData.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nicolengk"},"content":" if (taskParts.length \u003e\u003d 3 \u0026\u0026 taskParts[0].trim().equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nicolengk"},"content":" String doneStatus \u003d taskParts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nicolengk"},"content":" String description \u003d taskParts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"nicolengk"},"content":" Todo todo \u003d new Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"nicolengk"},"content":" if (doneStatus.equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nicolengk"},"content":" todo.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nicolengk"},"content":" return todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"nicolengk"},"content":" return null; // Incomplete data","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"nicolengk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"nicolengk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"nicolengk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nicolengk":33}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nicolengk"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"nicolengk"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nicolengk"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nicolengk"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nicolengk"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nicolengk"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nicolengk"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"nicolengk"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nicolengk":8}}] diff --git a/nicolengk_ip_master/commits.json b/nicolengk_ip_master/commits.json index a702dc04..1c3ed206 100644 --- a/nicolengk_ip_master/commits.json +++ b/nicolengk_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"nicolengk":[{"date":"2023-08-21","commitResults":[{"hash":"7f8d4e66d653fdc905e918407a433d138ef84087","isMergeCommit":false,"messageTitle":"feat: added goodbye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"d2c6e7ca11b8a1f34b31fc0a94e1ae33ede19eef","isMergeCommit":false,"messageTitle":"feat: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":7}}}]},{"date":"2023-08-22","commitResults":[{"hash":"cc4f941d0e7e992b6cb5d3070d2ae35a23ed4e24","isMergeCommit":false,"messageTitle":"feat: echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}}]},{"date":"2023-08-23","commitResults":[{"hash":"16f4a626f51d5046c8207a6b2d92e58dad44c99a","isMergeCommit":false,"messageTitle":"feat: add, list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":7}}},{"hash":"63784f5a3c13c4118d8d4747948e8d1a3d0f7c9d","isMergeCommit":false,"messageTitle":"level 2 fix","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}},{"hash":"0532d9a19a0f8aff430ab45a9e8b59236d0f74e5","isMergeCommit":false,"messageTitle":"feat: mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":4}}},{"hash":"e2d00518c19cb9fc36436eeeafa24dd94e36597e","isMergeCommit":false,"messageTitle":"feat: todos,events,deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":5}}},{"hash":"afd81beea8873a6e80fceb89c44d39ff9de15684","isMergeCommit":false,"messageTitle":"testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"15c297003682395828c7dc362d792af39f1ce243","isMergeCommit":false,"messageTitle":"feat: handle errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":62}}},{"hash":"942d60cd47b7d768ff1963c18297fa568d2c7b3c","isMergeCommit":false,"messageTitle":"handle error fix","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"5087bb5e93616b547c7f8dde792d4546fb4f18af","isMergeCommit":false,"messageTitle":"feat: delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":7}}},{"hash":"f111cefb4e120aec358d8b96c52cadde0589044c","isMergeCommit":false,"messageTitle":"seperating classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":75}}},{"hash":"27fbbee4b8231da1458e760e96f370d0487cd0e7","isMergeCommit":false,"messageTitle":"refactoring","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":108}}}]},{"date":"2023-09-01","commitResults":[{"hash":"1b9edc5b4abec88ccd245dbb22ec5c5d64f3a708","isMergeCommit":false,"messageTitle":"add save feature that save the tasks automatically","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":177,"deletions":8}}}]}]},"authorFileTypeContributionMap":{"nicolengk":{"java":380,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":14}},"authorContributionVariance":{"nicolengk":21654.781},"authorDisplayNameMap":{"nicolengk":"CS2103T-W11-2 NG G..COLE"}} +{"authorDailyContributionsMap":{"nicolengk":[{"date":"2023-08-21","commitResults":[{"hash":"7f8d4e66d653fdc905e918407a433d138ef84087","isMergeCommit":false,"messageTitle":"feat: added goodbye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"d2c6e7ca11b8a1f34b31fc0a94e1ae33ede19eef","isMergeCommit":false,"messageTitle":"feat: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":7}}}]},{"date":"2023-08-22","commitResults":[{"hash":"cc4f941d0e7e992b6cb5d3070d2ae35a23ed4e24","isMergeCommit":false,"messageTitle":"feat: echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}}]},{"date":"2023-08-23","commitResults":[{"hash":"16f4a626f51d5046c8207a6b2d92e58dad44c99a","isMergeCommit":false,"messageTitle":"feat: add, list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":7}}},{"hash":"63784f5a3c13c4118d8d4747948e8d1a3d0f7c9d","isMergeCommit":false,"messageTitle":"level 2 fix","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}},{"hash":"0532d9a19a0f8aff430ab45a9e8b59236d0f74e5","isMergeCommit":false,"messageTitle":"feat: mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":4}}},{"hash":"e2d00518c19cb9fc36436eeeafa24dd94e36597e","isMergeCommit":false,"messageTitle":"feat: todos,events,deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":5}}},{"hash":"afd81beea8873a6e80fceb89c44d39ff9de15684","isMergeCommit":false,"messageTitle":"testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"15c297003682395828c7dc362d792af39f1ce243","isMergeCommit":false,"messageTitle":"feat: handle errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":62}}},{"hash":"942d60cd47b7d768ff1963c18297fa568d2c7b3c","isMergeCommit":false,"messageTitle":"handle error fix","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"5087bb5e93616b547c7f8dde792d4546fb4f18af","isMergeCommit":false,"messageTitle":"feat: delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":7}}},{"hash":"f111cefb4e120aec358d8b96c52cadde0589044c","isMergeCommit":false,"messageTitle":"seperating classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":75}}},{"hash":"27fbbee4b8231da1458e760e96f370d0487cd0e7","isMergeCommit":false,"messageTitle":"refactoring","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":108}}}]},{"date":"2023-09-01","commitResults":[{"hash":"1b9edc5b4abec88ccd245dbb22ec5c5d64f3a708","isMergeCommit":false,"messageTitle":"add save feature that save the tasks automatically","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":177,"deletions":8}}},{"hash":"7e38c02854072d5e1e4ad75713a632285a0520f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"555f4bafb615b09e99d60515a56ba003331a610f","isMergeCommit":false,"messageTitle":"add feature to read date and time","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":5},"java":{"insertions":67,"deletions":43}}},{"hash":"3a274d5a9ef84f300d7d79665db7eabf859f5d0a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"nicolengk":{"java":404,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"nicolengk":24481.496},"authorDisplayNameMap":{"nicolengk":"CS2103T-W11-2 NG G..COLE"}} diff --git a/nikele2001_ip_master/authorship.json b/nikele2001_ip_master/authorship.json index 33e801a7..10bcd8c4 100644 --- a/nikele2001_ip_master/authorship.json +++ b/nikele2001_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" getDestinationDirectory().set(new File(projectDir, \"./src\")) // to specify jar file location","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"nikele2001":2,"-":41}},{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"T | 1 | read book","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"D | 0 | book | 2019-10-10","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"E | 1 | bookk | 2019-10-10 | 2019-10-10","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"T | 0 | read book1","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"D | 0 | read another book | 2020-10-10","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"T | 0 | abc","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"T | 1 | read abcd","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"T | 1 | read dcba","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"nikele2001":8}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"public class Duke {","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":" private Storage storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" private Ui ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" public void run() {","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" this.ui.greeting();","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" // basic user input processing","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" Command c \u003d Parser.parse(userInput);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" c.execute(this.tasks, this.ui, this.storage);","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" } finally {","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" ui.printLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" ui.ending();","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":45}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.command.AddCommand;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"import duke.exception.UnknownTaskTypeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" * A class that deals with making sense of the user commands","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":"public class Parser {","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" public Parser() {","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" * A method that returns an integer which represents the type of command user","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * inputted.","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" * @params userInput string that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" * @return integer based on the type of command user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" public static int getCommand(String userInput) {","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" userInput \u003d userInput.trim();","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" boolean isList \u003d userInput.equals(\"list\");","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" boolean isMark \u003d Pattern.compile(\"^mark\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" boolean isUnmark \u003d Pattern.compile(\"^unmark\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" boolean isTodo \u003d Pattern.compile(\"^todo\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" boolean isDeadline \u003d Pattern.compile(\"^deadline\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" boolean isEvent \u003d Pattern.compile(\"^event\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" boolean isDelete \u003d Pattern.compile(\"^delete\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" boolean isExit \u003d Pattern.compile(\"^bye\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" boolean isFind \u003d Pattern.compile(\"^find\").matcher(userInput).find();","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" boolean isValidTask \u003d isTodo || isDeadline || isEvent;","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" return isList","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" ? 0","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" : isMark","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" ? 1","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" : isUnmark","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" ? 2","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" : isValidTask","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" ? 3","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" : isDelete","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" ? 4","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" : isFind","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" ? 5","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":" : isExit","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" ? 6","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" : 7;","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" * A method that returns an integer based on the type of task user wants to add","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" * @params userInput string that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":" * @return integer based on the type of task user wants to add","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":" public static int getTaskType(String userInput) {","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":" boolean isTodo \u003d Pattern.compile(\"^todo\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":" boolean isDeadline \u003d Pattern.compile(\"^deadline\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"nikele2001"},"content":" // boolean isEvent \u003d Pattern.compile(\"^event\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"nikele2001"},"content":" return isTodo ? 0 : isDeadline ? 1 : 2;","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"nikele2001"},"content":" * A method that gets the index of a task that user specified in command, if any","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"nikele2001"},"content":" * @params userInput string that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"nikele2001"},"content":" * @return index that user specified","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"nikele2001"},"content":" // how to check if string is parseable without parsing it?","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"nikele2001"},"content":" public static int getIndex(String userInput) {","lastModifiedDate":"2023-08-26"},{"lineNumber":89,"author":{"gitId":"nikele2001"},"content":" return Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"nikele2001"},"content":" public static String getKeyString(String userInput) {","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"nikele2001"},"content":" return userInput.split(\" \", 2)[1].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"nikele2001"},"content":" * A method to parse command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"nikele2001"},"content":" * @params fullCommand string that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"nikele2001"},"content":" * @return A Command object representing the command user gives","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"nikele2001"},"content":" * @throws DukeException when user input does not represent any particular","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"nikele2001"},"content":" * command","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"nikele2001"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":108,"author":{"gitId":"nikele2001"},"content":" int taskType \u003d Parser.getCommand(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":109,"author":{"gitId":"nikele2001"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-26"},{"lineNumber":110,"author":{"gitId":"nikele2001"},"content":" case 0: {","lastModifiedDate":"2023-08-26"},{"lineNumber":111,"author":{"gitId":"nikele2001"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-26"},{"lineNumber":112,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":113,"author":{"gitId":"nikele2001"},"content":" case 1: {","lastModifiedDate":"2023-08-26"},{"lineNumber":114,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"mark \").matcher(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":115,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":116,"author":{"gitId":"nikele2001"},"content":" // return error","lastModifiedDate":"2023-08-26"},{"lineNumber":117,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":118,"author":{"gitId":"nikele2001"},"content":" int index \u003d Parser.getIndex(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":119,"author":{"gitId":"nikele2001"},"content":" return new MarkCommand(index - 1);","lastModifiedDate":"2023-08-26"},{"lineNumber":120,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":121,"author":{"gitId":"nikele2001"},"content":" case 2: {","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"unmark \").matcher(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":124,"author":{"gitId":"nikele2001"},"content":" // return error","lastModifiedDate":"2023-08-26"},{"lineNumber":125,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":126,"author":{"gitId":"nikele2001"},"content":" int index \u003d Parser.getIndex(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":127,"author":{"gitId":"nikele2001"},"content":" return new UnmarkCommand(index - 1);","lastModifiedDate":"2023-08-26"},{"lineNumber":128,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":129,"author":{"gitId":"nikele2001"},"content":" case 3: {","lastModifiedDate":"2023-08-26"},{"lineNumber":130,"author":{"gitId":"nikele2001"},"content":" switch (Parser.getTaskType(fullCommand)) {","lastModifiedDate":"2023-08-26"},{"lineNumber":131,"author":{"gitId":"nikele2001"},"content":" case 0: {","lastModifiedDate":"2023-08-26"},{"lineNumber":132,"author":{"gitId":"nikele2001"},"content":" return new AddCommand().new TodoCommand(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":133,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":134,"author":{"gitId":"nikele2001"},"content":" case 1: {","lastModifiedDate":"2023-08-26"},{"lineNumber":135,"author":{"gitId":"nikele2001"},"content":" return new AddCommand().new DeadlineCommand(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":136,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":137,"author":{"gitId":"nikele2001"},"content":" case 2: {","lastModifiedDate":"2023-08-26"},{"lineNumber":138,"author":{"gitId":"nikele2001"},"content":" return new AddCommand().new EventCommand(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":139,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":140,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":141,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":142,"author":{"gitId":"nikele2001"},"content":" case 4: {","lastModifiedDate":"2023-08-26"},{"lineNumber":143,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"delete \").matcher(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":144,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":145,"author":{"gitId":"nikele2001"},"content":" // return error","lastModifiedDate":"2023-08-26"},{"lineNumber":146,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":147,"author":{"gitId":"nikele2001"},"content":" int index \u003d Parser.getIndex(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":148,"author":{"gitId":"nikele2001"},"content":" return new DeleteCommand(index - 1);","lastModifiedDate":"2023-08-26"},{"lineNumber":149,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":150,"author":{"gitId":"nikele2001"},"content":" case 5: {","lastModifiedDate":"2023-08-26"},{"lineNumber":151,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"find \").matcher(fullCommand);","lastModifiedDate":"2023-08-28"},{"lineNumber":152,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"nikele2001"},"content":" // return error","lastModifiedDate":"2023-08-28"},{"lineNumber":154,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":155,"author":{"gitId":"nikele2001"},"content":" String keyString \u003d Parser.getKeyString(fullCommand);","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"nikele2001"},"content":" return new FindCommand(keyString);","lastModifiedDate":"2023-08-28"},{"lineNumber":157,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":158,"author":{"gitId":"nikele2001"},"content":" case 6: {","lastModifiedDate":"2023-08-28"},{"lineNumber":159,"author":{"gitId":"nikele2001"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-26"},{"lineNumber":160,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":161,"author":{"gitId":"nikele2001"},"content":" default: {","lastModifiedDate":"2023-08-26"},{"lineNumber":162,"author":{"gitId":"nikele2001"},"content":" throw new UnknownTaskTypeException();","lastModifiedDate":"2023-08-26"},{"lineNumber":163,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":164,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":165,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":166,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":167,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":167}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.io.File;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" * A class that deals with loading tasks from the file and saving tasks in the file","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"public class Storage {","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" private String filePath;","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" * A method that returns a Task ArrayList based on stored data.","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" * ArrayList generated is then used to initialise TaskList object","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * @return ArrayList\u003cTask\u003e based on stored data","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" public ArrayList\u003cTask\u003e load() throws Exception {","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" Scanner dataSc \u003d new Scanner(f);","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" while (dataSc.hasNextLine()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" String[] task \u003d dataSc.nextLine().trim().split(\"\\\\|\");","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" task[0] \u003d task[0].trim();","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" int taskType \u003d task[0].equals(\"T\") ? 0 : task[0].equals(\"D\") ? 1 : 2;","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" case 0: {","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" String dataString \u003d \"todo \" + task[2].trim();","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" arr.add(Todo.of(dataString));","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" case 1: {","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" String dataString \u003d \"deadline \" + task[2].trim() + \" /by \" + task[3].trim();","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" arr.add(Deadline.of(dataString));","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" case 2: {","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" String dataString \u003d \"event \" + task[2].trim() + \" /from \" + task[3].trim() + \" /to \"","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" + task[4].trim();","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":" arr.add(Event.of(dataString));","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":" if (task[1].trim().equals(\"1\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" arr.get(arr.size() - 1).markAsDone();","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" arr.get(arr.size() - 1).markAsNotDone();","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"file is corrupted! dieee\");","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":" dataSc.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"nikele2001"},"content":" throw e;","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"nikele2001"},"content":" return arr;","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"nikele2001"},"content":" * A method to update stored data based on latest user input on the program","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"nikele2001"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"nikele2001"},"content":" * @params arr active TaskList object of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"nikele2001"},"content":" public void update(TaskList arr) {","lastModifiedDate":"2023-08-26"},{"lineNumber":88,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":89,"author":{"gitId":"nikele2001"},"content":" FileOutputStream object \u003d new FileOutputStream(this.filePath, false);","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"nikele2001"},"content":" for (char c : arr.storage().toCharArray()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"nikele2001"},"content":" object.write(c);","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"nikele2001"},"content":" object.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":94,"author":{"gitId":"nikele2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":95,"author":{"gitId":"nikele2001"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":97,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":98,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":98}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.IndexOutOfBoundsException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" * A class that represents a list that stores tasks inputted by user","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"public class TaskList {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" protected ArrayList\u003cTask\u003e taskArr;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" public TaskList() {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" this.taskArr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" public TaskList(ArrayList\u003cTask\u003e arr) {","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" this.taskArr \u003d arr;","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * A method that returns task object at given index of TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" * @param index index of Task object","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" * @return specified Task object","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" * @throws DukeException when index is out of range","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" public Task getTask(int index) throws DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" return this.taskArr.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" * A method that returns length of TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" * @return length of TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" public int length() {","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" return this.taskArr.size();","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" * A method that marks specified Task object as done","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" * @params index index of Task object","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" * @throws DukeException when index is out of range","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" public void markTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" this.getTask(index).markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" * A method that unmarks specified Task object as done","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":" * @params index index of Task object","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" * @throws DukeException when index is out of range","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" public void markTaskAsNotDone(int index) throws DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" this.getTask(index).markAsNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":" * A method that returns the string representation of a Task object","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"nikele2001"},"content":" * at specified index","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"nikele2001"},"content":" * @param index task at given index of TaskList object","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"nikele2001"},"content":" * @return string representation of the Task object","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"nikele2001"},"content":" public String taskToString(int index) {","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"nikele2001"},"content":" return this.taskArr.get(index).toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"nikele2001"},"content":" * A method that returns a string representation of the number of","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"nikele2001"},"content":" * tasks in a TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"nikele2001"},"content":" * @return string representation of the number of tasks in the TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"nikele2001"},"content":" public String numTasksToString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"nikele2001"},"content":" if (this.length() \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"nikele2001"},"content":" return \" task\";","lastModifiedDate":"2023-08-26"},{"lineNumber":94,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"nikele2001"},"content":" return \" tasks\";","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"nikele2001"},"content":" * A method to to add a task to the TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"nikele2001"},"content":" * @param task task object to be added","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"nikele2001"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"nikele2001"},"content":" this.taskArr.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"nikele2001"},"content":" * A method to add a task to the TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"nikele2001"},"content":" * @param index index of Task object that user wants to delete","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"nikele2001"},"content":" public void delete(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"nikele2001"},"content":" this.taskArr.remove(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"nikele2001"},"content":" * A method to generate a string representing the TaskList in a format that can","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"nikele2001"},"content":" * be stored in the .txt file","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"nikele2001"},"content":" * String is passed to the Storage object to be processed","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"nikele2001"},"content":" * @return string representation of TaskList to be stored","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"nikele2001"},"content":" public String storage() {","lastModifiedDate":"2023-08-25"},{"lineNumber":124,"author":{"gitId":"nikele2001"},"content":" String out \u003d \"\";","lastModifiedDate":"2023-08-25"},{"lineNumber":125,"author":{"gitId":"nikele2001"},"content":" for (Task task : this.taskArr) {","lastModifiedDate":"2023-08-25"},{"lineNumber":126,"author":{"gitId":"nikele2001"},"content":" out +\u003d task.toBeStored();","lastModifiedDate":"2023-08-25"},{"lineNumber":127,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":128,"author":{"gitId":"nikele2001"},"content":" return out;","lastModifiedDate":"2023-08-25"},{"lineNumber":129,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":130,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"nikele2001"},"content":" public TaskList filter(String keyString) {","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"nikele2001"},"content":" ArrayList\u003cTask\u003e out \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"nikele2001"},"content":" for (Task task : this.taskArr) {","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"nikele2001"},"content":" if (task.isKey(keyString)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"nikele2001"},"content":" out.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"nikele2001"},"content":" return new TaskList(out);","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"nikele2001":140}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" * A class that handles all the user interactions of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"public class Ui {","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" String lnspace \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" private final Scanner sc;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" public Ui() {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" * A method that prints greeting when program starts","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * @return string representing greeting","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" public String greeting() {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" String greeting \u003d lnspace + \"\\n\"","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" + \"Hello! I\u0027m Lorem\\n\"","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" + lnspace + \"\\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" return greeting;","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" * A method that prints ending when program terminates","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" * @return string representing ending","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" public String ending() {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" String ending \u003d \"Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" + lnspace;","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" System.out.println(ending);","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" this.sc.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" return ending;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" * A method that prints a straight line","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" * @return string representing straight line","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" public String printLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" System.out.println(lnspace);","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" return lnspace;","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" * A method that prints error message when existing data file is not found","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" * @return string representing error message","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" public String showLoadingError() {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" String out \u003d \"Existing data not found. Creating new data file tasks.txt found in ./data/ folder.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":" System.out.println(out);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" return out;","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" * A method that prints the error message specified","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" * @params message error message that user wants to print","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" * @return string that user inputted as argument","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" public String showError(String message) {","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":" return message;","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"nikele2001"},"content":" * A method that reads the next command that user inputted","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"nikele2001"},"content":" * @returns string that user inputted","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"nikele2001"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"nikele2001"},"content":" return this.sc.nextLine().trim();","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"nikele2001"},"content":" * A method that prints message during task addition","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"nikele2001"},"content":" * @params arr TaskList object that task object is added to","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"nikele2001"},"content":" public void addTask(TaskList arr) {","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"nikele2001"},"content":" System.out.println(arr.taskToString(arr.length() - 1));","lastModifiedDate":"2023-08-26"},{"lineNumber":94,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"Now you have \" + (arr.length()) + arr.numTasksToString() + \" in the list.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":95,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":97,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"nikele2001"},"content":" * A method that prints message during task marking","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"nikele2001"},"content":" * @params index index of Task object that user marked in specified TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"nikele2001"},"content":" * object","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"nikele2001"},"content":" * @params arr TaskList object that contains Task object that user marked","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"nikele2001"},"content":" public void markTask(int index, TaskList arr) {","lastModifiedDate":"2023-08-26"},{"lineNumber":106,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":107,"author":{"gitId":"nikele2001"},"content":" System.out.println(arr.taskToString(index));","lastModifiedDate":"2023-08-26"},{"lineNumber":108,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":109,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":110,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"nikele2001"},"content":" * A method that prints message during task unmarking","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"nikele2001"},"content":" * @params index index of Task object that user unmarked in specified TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"nikele2001"},"content":" * object","lastModifiedDate":"2023-08-28"},{"lineNumber":115,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":116,"author":{"gitId":"nikele2001"},"content":" * @params arr TaskList object that contains Task object that user unmarked","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"nikele2001"},"content":" public void unmarkTask(int index, TaskList arr) {","lastModifiedDate":"2023-08-26"},{"lineNumber":119,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":120,"author":{"gitId":"nikele2001"},"content":" System.out.println(arr.taskToString(index));","lastModifiedDate":"2023-08-26"},{"lineNumber":121,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"nikele2001"},"content":" * A method that prints message when user wants a list of tasks in TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"nikele2001"},"content":" * object","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"nikele2001"},"content":" * @params arr TaskList object that contains existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"nikele2001"},"content":" * @return string that is printed representing list of tasks in specified","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"nikele2001"},"content":" * TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"nikele2001"},"content":" public String list(TaskList arr) {","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"nikele2001"},"content":" String out \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"nikele2001"},"content":" for (int i \u003d 0; i \u003c arr.length(); i++) {","lastModifiedDate":"2023-08-26"},{"lineNumber":135,"author":{"gitId":"nikele2001"},"content":" out \u003d out + (i + 1) + \". \" + arr.taskToString(i) + \"\\n\";","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":137,"author":{"gitId":"nikele2001"},"content":" System.out.println(out);","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"nikele2001"},"content":" return out;","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":140,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":141,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":142,"author":{"gitId":"nikele2001"},"content":" * A method that finds all existing tasks that contains specified substring and lists it","lastModifiedDate":"2023-08-28"},{"lineNumber":143,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":144,"author":{"gitId":"nikele2001"},"content":" * @params arr taskList object that contains existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":145,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":146,"author":{"gitId":"nikele2001"},"content":" * @params keyString string that user wants to search for","lastModifiedDate":"2023-08-28"},{"lineNumber":147,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":148,"author":{"gitId":"nikele2001"},"content":" * @return string that lists all tasks with descriptions containing specified substring","lastModifiedDate":"2023-08-28"},{"lineNumber":149,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":150,"author":{"gitId":"nikele2001"},"content":" public String find(TaskList arr, String keyString) {","lastModifiedDate":"2023-08-28"},{"lineNumber":151,"author":{"gitId":"nikele2001"},"content":" String out \u003d \"Here are the matching tasks in your list:\\n\";","lastModifiedDate":"2023-08-28"},{"lineNumber":152,"author":{"gitId":"nikele2001"},"content":" TaskList outTaskList \u003d arr.filter(keyString);","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"nikele2001"},"content":" if (outTaskList.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":154,"author":{"gitId":"nikele2001"},"content":" out \u003d \"There are no matching tasks in the list.\";","lastModifiedDate":"2023-08-28"},{"lineNumber":155,"author":{"gitId":"nikele2001"},"content":" System.out.println(out);","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"nikele2001"},"content":" return out;","lastModifiedDate":"2023-08-28"},{"lineNumber":157,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":158,"author":{"gitId":"nikele2001"},"content":" for (int i \u003d 0; i \u003c outTaskList.length(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":159,"author":{"gitId":"nikele2001"},"content":" out \u003d out + (i + 1) + \". \" + outTaskList.taskToString(i) + \"\\n\";","lastModifiedDate":"2023-08-28"},{"lineNumber":160,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":161,"author":{"gitId":"nikele2001"},"content":" System.out.println(out);","lastModifiedDate":"2023-08-28"},{"lineNumber":162,"author":{"gitId":"nikele2001"},"content":" return out;","lastModifiedDate":"2023-08-28"},{"lineNumber":163,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":164,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":165,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":166,"author":{"gitId":"nikele2001"},"content":" * A method that prints message when user deletes a task in TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":167,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":168,"author":{"gitId":"nikele2001"},"content":" * @params arr TaskList where deleted Task is contained in","lastModifiedDate":"2023-08-28"},{"lineNumber":169,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":170,"author":{"gitId":"nikele2001"},"content":" * @params index index of Task object that was deleted","lastModifiedDate":"2023-08-28"},{"lineNumber":171,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":172,"author":{"gitId":"nikele2001"},"content":" public void deleteTask(TaskList arr, int index) {","lastModifiedDate":"2023-08-26"},{"lineNumber":173,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":174,"author":{"gitId":"nikele2001"},"content":" System.out.println(arr.taskToString(index));","lastModifiedDate":"2023-08-26"},{"lineNumber":175,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"Now you have \" + (arr.length() - 1) + arr.numTasksToString() + \" in the list.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":176,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":177,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":177}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" * A class that represents all task addition commands that user can give","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" private Task task;","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" public AddCommand() {","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * A method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" tasks.addTask(this.task);","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" ui.addTask(tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to add a Todo task","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" public class TodoCommand extends AddCommand {","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" public TodoCommand(String fullCommand) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" super.task \u003d Todo.of(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" throw e;","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to add a Deadline task","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" public class DeadlineCommand extends AddCommand {","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" public DeadlineCommand(String fullCommand) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" super.task \u003d Deadline.of(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" throw e;","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to add an Event task","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" public class EventCommand extends AddCommand {","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" public EventCommand(String fullCommand) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":" super.task \u003d Event.of(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":" throw e;","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":76}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" * An abstract class that represents all commands that user can possibly make","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" * All commands user can make are subtypes of this class","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" * An abstract method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" return this.isExit;","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":30}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to delete a task","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" private int index;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" * A method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" ui.deleteTask(tasks, index);","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" tasks.delete(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":33}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":" public ExitCommand() {","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" return true;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" * A method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":29}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":" private String keyString;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" public FindCommand(String keyString) {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" this.keyString \u003d keyString;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" @Override ","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" ui.find(tasks, this.keyString);","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"nikele2001":18}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to list all existing tasks","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" * A method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" ui.list(tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":25}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to mark a task","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" private int index;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * A method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" tasks.markTaskAsDone(index);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" ui.markTask(index, tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" throw e;","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":37}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to unmark a task","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" private int index;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * A method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" tasks.markTaskAsNotDone(index);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" ui.unmarkTask(index, tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" throw e;","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":37}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class EmptyDescriptionException extends MissingInformationException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public EmptyDescriptionException(String taskType) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! The description of a \" + taskType + \" cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/IndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class IndexOutOfBoundsException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public IndexOutOfBoundsException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! Index provided is invalid.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class InvalidDateException extends DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public InvalidDateException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! Date format given is invalid. Please input date in the following format: yyyy-mm-dd\");","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/MissingDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class MissingDeadlineException extends MissingInformationException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public MissingDeadlineException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! Deadline is required for task to be created. Denote deadline with a /by.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/MissingEndTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class MissingEndTimeException extends MissingInformationException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public MissingEndTimeException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! end time is required for task to be created. Denote end time with a /to.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/MissingInformationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public abstract class MissingInformationException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" public MissingInformationException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":9}},{"path":"src/main/java/duke/exception/MissingStartTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class MissingStartTimeException extends MissingInformationException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public MissingStartTimeException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! Start time is required for task to be created. Denote start time with a /from.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/UnknownTaskTypeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class UnknownTaskTypeException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public UnknownTaskTypeException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.task;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.*;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.exception.MissingDeadlineException;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.MissingInformationException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" * A class that is represents the Deadline class. It is ","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" * a subtype of the abstract Task class.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" protected LocalDate deadline;","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" public Deadline(String description, LocalDate deadline) {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" * Factory method of Deadline class.","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" * String input is guaranteed to start with \"deadline\"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" * @param input user input from terminal.","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" * @return a Deadline object given the input string.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" * @throws MissingInformationException due to possibly an empty","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" * description of the Deadline task or a missing /by deadline for","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" * the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" public static Deadline of(String input) throws MissingInformationException {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"deadline \").matcher(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" matcher.find();","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" String info \u003d input.substring(matcher.end()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" matcher \u003d Pattern.compile(\" /by \").matcher(info);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" throw new MissingDeadlineException();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" String description \u003d info.substring(0, matcher.start()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" String deadline \u003d info.substring(matcher.end()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" LocalDate deadlineDate \u003d LocalDate.parse(deadline);","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" return new Deadline(description, deadlineDate);","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" * A method that returns the string representation of a Deadline object.","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" * @return string representation of the Deadline object.","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" public String toBeStored() {","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":" String marked \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":" return \"D | \" + marked + \" | \" + this.getDescription() + \" | \" + this.deadline + \"\\n\";","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"nikele2001":66}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.task;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import duke.exception.MissingEndTimeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"import duke.exception.MissingStartTimeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" * A class that is represents the Event class. It is ","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" * a subtype of the abstract Task class.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" protected LocalDate start;","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" protected LocalDate end;","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" public Event(String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * Factory method of Event class.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" * String input is guaranteed to start with \"event\"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" * @param input user input from terminal.","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" * @return a Event object given the input string.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" * @throws MissingInformationException due to possibly an empty","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" * description of the Event task or a missing /from start time or a","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" * missing /to end time for the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" public static Event of(String input) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"event \").matcher(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" matcher.find();","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" String info \u003d input.substring(matcher.end()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" matcher \u003d Pattern.compile(\" /from \").matcher(info);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" throw new MissingStartTimeException();","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" String description \u003d info.substring(0, matcher.start()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" String tmp \u003d info.substring(matcher.end()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" matcher \u003d Pattern.compile(\" /to \").matcher(tmp);","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" throw new MissingEndTimeException();","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" String start \u003d tmp.substring(0, matcher.start()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" String end \u003d tmp.substring(matcher.end()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" LocalDate startDate \u003d LocalDate.parse(start);","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" LocalDate endDate \u003d LocalDate.parse(end);","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" return new Event(description, startDate, endDate);","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":" * A method that returns the string representation of an Event object.","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" * @return string representation of the Event object.","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" + \" to: \" + this.end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"nikele2001"},"content":" public String toBeStored() {","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"nikele2001"},"content":" String marked \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"nikele2001"},"content":" return \"E | \" + marked + \" | \" + this.getDescription() + \" | \" + this.start + \" | \" + this.end + \"\\n\";","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"nikele2001":79}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.task;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":" * An abstract class that is the supertype of all ","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" * tasks that program accepts (Todo, Deadline, Event).","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * A method to return the description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * @return description of the task entered by the user.","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" return this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" * A method that retrieves the marked status of a task.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" * @return the status of the task based on whether it is marked or not.","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" return this.isDone;","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" * A method that marks task as done.","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" * A method that marks task as not done.","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" * A method that returns the string representation of a task.","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" * @return string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" public boolean isKey(String keyString) {","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(keyString).matcher(this.getDescription());","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":" public abstract String toBeStored();","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"nikele2001":74}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.task;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import duke.exception.MissingInformationException;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" * A class that is represents the Event class. It is ","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" * a subtype of the abstract Task class.","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * A factory method of Todo class.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * String input is guaranteed to start with \"todo\"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * @param input user input from terminal.","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" * @return a Todo object given the input string.","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" * @throws MissingInformationException due to possibly an empty","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * description of the todo task.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" public static Todo of(String input) throws MissingInformationException {","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" input \u003d input.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" if (input.length() \u003c\u003d 0) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"todo \").matcher(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" matcher.find();","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" String description \u003d input.substring(matcher.end()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" return new Todo(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" * A method that returns the string representation of a Todo object.","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" * @return string representation of the Todo object.","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" public String toBeStored() {","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" String marked \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" return \"T | \" + marked + \" | \" + this.getDescription() + \"\\n\";","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"nikele2001":61}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" public void EmptyTaskListLengthTest() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" TaskList a \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" TaskList b \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" assertEquals(a.length(), b.length());","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" public void EmptyTaskListTest() {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" Task task \u003d Todo.of(\"todo read book\");","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" TaskList a \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" TaskList b \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" a.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" b.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" assertEquals(a.getTask(0), b.getTask(0));","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"nikele2001":32}},{"path":"src/test/java/duke/UiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"public class UiTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" public void greetingTest() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" String lnspace \u003d ui.lnspace;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" assertEquals(lnspace + \"\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" + \"Hello! I\u0027m Lorem\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" + lnspace + \"\\n\", ui.greeting());","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" public void endingTest() {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" String lnspace \u003d ui.lnspace;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" assertEquals(\"Bye. Hope to see you again soon!\\n\" + lnspace, ui.ending());","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"nikele2001":26}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"todo read book","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":1}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"# DukePro","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"\u003e “Your mind is for having ideas, not holding them.” – David Allen ([source](https://boulderbugle.com/quotes-185mla85))","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"DukePro frees your mind of having to remember things you need to do. It\u0027s,","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"- text-based","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"- easy to learn","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"- ~~FAST~~ *SUPER* FAST to use","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"All you need to do is,","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"1. download it from here.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"2. double-click it.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"3. add your tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"4. let it manage your tasks for you 😉","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"And it is **FREE**!","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":"Features:","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"- [x] Managing tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":"- [ ] Managing deadlines (coming soon)","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":"- [ ] Reminders (coming soon)","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":"If you are a Java programmer, you can use it to practise Java too. Here\u0027s the `main` method:","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":"public class Main {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"nikele2001":23,"-":6}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" getDestinationDirectory().set(new File(projectDir, \"./src\")) // to specify jar file location","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"nikele2001":2,"-":41}},{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"T | 1 | read book","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"D | 0 | book | 2019-10-10","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"E | 1 | bookk | 2019-10-10 | 2019-10-10","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"T | 0 | read book1","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"D | 0 | read another book | 2020-10-10","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"T | 0 | abc","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"T | 1 | read abcd","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"T | 1 | read dcba","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"nikele2001":8}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"public class Duke {","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":" private Storage storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" private Ui ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" public void run() {","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" this.ui.greeting();","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" // basic user input processing","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" Command c \u003d Parser.parse(userInput);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" c.execute(this.tasks, this.ui, this.storage);","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" } finally {","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" ui.printLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" ui.ending();","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":45}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.command.AddCommand;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"import duke.exception.UnknownTaskTypeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" * A class that deals with making sense of the user commands","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":"public class Parser {","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" public Parser() {","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" * A method that returns an integer which represents the type of command user","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * inputted.","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" * @params userInput string that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" * @return integer based on the type of command user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" public static int getCommand(String userInput) {","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" userInput \u003d userInput.trim();","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" boolean isList \u003d userInput.equals(\"list\");","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" boolean isMark \u003d Pattern.compile(\"^mark\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" boolean isUnmark \u003d Pattern.compile(\"^unmark\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" boolean isTodo \u003d Pattern.compile(\"^todo\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" boolean isDeadline \u003d Pattern.compile(\"^deadline\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" boolean isEvent \u003d Pattern.compile(\"^event\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" boolean isDelete \u003d Pattern.compile(\"^delete\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" boolean isExit \u003d Pattern.compile(\"^bye\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" boolean isFind \u003d Pattern.compile(\"^find\").matcher(userInput).find();","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" boolean isValidTask \u003d isTodo || isDeadline || isEvent;","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" return isList","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" ? 0","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" : isMark","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" ? 1","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" : isUnmark","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" ? 2","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" : isValidTask","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" ? 3","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" : isDelete","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" ? 4","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" : isFind","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" ? 5","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":" : isExit","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" ? 6","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" : 7;","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" * A method that returns an integer based on the type of task user wants to add","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" * @params userInput string that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":" * @return integer based on the type of task user wants to add","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":" public static int getTaskType(String userInput) {","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":" boolean isTodo \u003d Pattern.compile(\"^todo\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":" boolean isDeadline \u003d Pattern.compile(\"^deadline\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"nikele2001"},"content":" // boolean isEvent \u003d Pattern.compile(\"^event\").matcher(userInput).find();","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"nikele2001"},"content":" return isTodo ? 0 : isDeadline ? 1 : 2;","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"nikele2001"},"content":" * A method that gets the index of a task that user specified in command, if any","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"nikele2001"},"content":" * @params userInput string that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"nikele2001"},"content":" * @return index that user specified","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"nikele2001"},"content":" // how to check if string is parseable without parsing it?","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"nikele2001"},"content":" public static int getIndex(String userInput) {","lastModifiedDate":"2023-08-26"},{"lineNumber":89,"author":{"gitId":"nikele2001"},"content":" return Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"nikele2001"},"content":" public static String getKeyString(String userInput) {","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"nikele2001"},"content":" return userInput.split(\" \", 2)[1].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"nikele2001"},"content":" * A method to parse command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"nikele2001"},"content":" * @params fullCommand string that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"nikele2001"},"content":" * @return A Command object representing the command user gives","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"nikele2001"},"content":" * @throws DukeException when user input does not represent any particular","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"nikele2001"},"content":" * command","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"nikele2001"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":108,"author":{"gitId":"nikele2001"},"content":" int taskType \u003d Parser.getCommand(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":109,"author":{"gitId":"nikele2001"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-26"},{"lineNumber":110,"author":{"gitId":"nikele2001"},"content":" case 0: {","lastModifiedDate":"2023-08-26"},{"lineNumber":111,"author":{"gitId":"nikele2001"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-26"},{"lineNumber":112,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":113,"author":{"gitId":"nikele2001"},"content":" case 1: {","lastModifiedDate":"2023-08-26"},{"lineNumber":114,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"mark \").matcher(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":115,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":116,"author":{"gitId":"nikele2001"},"content":" // return error","lastModifiedDate":"2023-08-26"},{"lineNumber":117,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":118,"author":{"gitId":"nikele2001"},"content":" int index \u003d Parser.getIndex(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":119,"author":{"gitId":"nikele2001"},"content":" return new MarkCommand(index - 1);","lastModifiedDate":"2023-08-26"},{"lineNumber":120,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":121,"author":{"gitId":"nikele2001"},"content":" case 2: {","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"unmark \").matcher(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":124,"author":{"gitId":"nikele2001"},"content":" // return error","lastModifiedDate":"2023-08-26"},{"lineNumber":125,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":126,"author":{"gitId":"nikele2001"},"content":" int index \u003d Parser.getIndex(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":127,"author":{"gitId":"nikele2001"},"content":" return new UnmarkCommand(index - 1);","lastModifiedDate":"2023-08-26"},{"lineNumber":128,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":129,"author":{"gitId":"nikele2001"},"content":" case 3: {","lastModifiedDate":"2023-08-26"},{"lineNumber":130,"author":{"gitId":"nikele2001"},"content":" switch (Parser.getTaskType(fullCommand)) {","lastModifiedDate":"2023-08-26"},{"lineNumber":131,"author":{"gitId":"nikele2001"},"content":" case 0: {","lastModifiedDate":"2023-08-26"},{"lineNumber":132,"author":{"gitId":"nikele2001"},"content":" return new AddCommand().new TodoCommand(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":133,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":134,"author":{"gitId":"nikele2001"},"content":" case 1: {","lastModifiedDate":"2023-08-26"},{"lineNumber":135,"author":{"gitId":"nikele2001"},"content":" return new AddCommand().new DeadlineCommand(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":136,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":137,"author":{"gitId":"nikele2001"},"content":" case 2: {","lastModifiedDate":"2023-08-26"},{"lineNumber":138,"author":{"gitId":"nikele2001"},"content":" return new AddCommand().new EventCommand(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":139,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":140,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":141,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":142,"author":{"gitId":"nikele2001"},"content":" case 4: {","lastModifiedDate":"2023-08-26"},{"lineNumber":143,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"delete \").matcher(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":144,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":145,"author":{"gitId":"nikele2001"},"content":" // return error","lastModifiedDate":"2023-08-26"},{"lineNumber":146,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":147,"author":{"gitId":"nikele2001"},"content":" int index \u003d Parser.getIndex(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":148,"author":{"gitId":"nikele2001"},"content":" return new DeleteCommand(index - 1);","lastModifiedDate":"2023-08-26"},{"lineNumber":149,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":150,"author":{"gitId":"nikele2001"},"content":" case 5: {","lastModifiedDate":"2023-08-26"},{"lineNumber":151,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"find \").matcher(fullCommand);","lastModifiedDate":"2023-08-28"},{"lineNumber":152,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"nikele2001"},"content":" // return error","lastModifiedDate":"2023-08-28"},{"lineNumber":154,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":155,"author":{"gitId":"nikele2001"},"content":" String keyString \u003d Parser.getKeyString(fullCommand);","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"nikele2001"},"content":" return new FindCommand(keyString);","lastModifiedDate":"2023-08-28"},{"lineNumber":157,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":158,"author":{"gitId":"nikele2001"},"content":" case 6: {","lastModifiedDate":"2023-08-28"},{"lineNumber":159,"author":{"gitId":"nikele2001"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-26"},{"lineNumber":160,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":161,"author":{"gitId":"nikele2001"},"content":" default: {","lastModifiedDate":"2023-08-26"},{"lineNumber":162,"author":{"gitId":"nikele2001"},"content":" throw new UnknownTaskTypeException();","lastModifiedDate":"2023-08-26"},{"lineNumber":163,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":164,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":165,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":166,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":167,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":167}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.io.File;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" * A class that deals with loading tasks from the file and saving tasks in the file","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"public class Storage {","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" private String filePath;","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" * A method that returns a Task ArrayList based on stored data.","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" * ArrayList generated is then used to initialise TaskList object","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * @return ArrayList\u003cTask\u003e based on stored data","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" public ArrayList\u003cTask\u003e load() throws Exception {","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" Scanner dataSc \u003d new Scanner(f);","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" while (dataSc.hasNextLine()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" String[] task \u003d dataSc.nextLine().trim().split(\"\\\\|\");","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" task[0] \u003d task[0].trim();","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" int taskType \u003d task[0].equals(\"T\") ? 0 : task[0].equals(\"D\") ? 1 : 2;","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" case 0: {","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" String dataString \u003d \"todo \" + task[2].trim();","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" arr.add(Todo.of(dataString));","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" case 1: {","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" String dataString \u003d \"deadline \" + task[2].trim() + \" /by \" + task[3].trim();","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" arr.add(Deadline.of(dataString));","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" case 2: {","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" String dataString \u003d \"event \" + task[2].trim() + \" /from \" + task[3].trim() + \" /to \"","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" + task[4].trim();","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":" arr.add(Event.of(dataString));","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":" if (task[1].trim().equals(\"1\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" arr.get(arr.size() - 1).markAsDone();","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" arr.get(arr.size() - 1).markAsNotDone();","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"file is corrupted! dieee\");","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":" dataSc.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"nikele2001"},"content":" throw e;","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"nikele2001"},"content":" return arr;","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"nikele2001"},"content":" * A method to update stored data based on latest user input on the program","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"nikele2001"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"nikele2001"},"content":" * @params arr active TaskList object of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"nikele2001"},"content":" public void update(TaskList arr) {","lastModifiedDate":"2023-08-26"},{"lineNumber":88,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":89,"author":{"gitId":"nikele2001"},"content":" FileOutputStream object \u003d new FileOutputStream(this.filePath, false);","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"nikele2001"},"content":" for (char c : arr.storage().toCharArray()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"nikele2001"},"content":" object.write(c);","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"nikele2001"},"content":" object.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":94,"author":{"gitId":"nikele2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":95,"author":{"gitId":"nikele2001"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":97,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":98,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":98}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.IndexOutOfBoundsException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" * A class that represents a list that stores tasks inputted by user","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"public class TaskList {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" protected ArrayList\u003cTask\u003e taskArr;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" public TaskList() {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" this.taskArr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" public TaskList(ArrayList\u003cTask\u003e arr) {","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" this.taskArr \u003d arr;","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * A method that returns task object at given index of TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" * @param index index of Task object","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" * @return specified Task object","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" * @throws DukeException when index is out of range","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" public Task getTask(int index) throws DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" return this.taskArr.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" * A method that returns length of TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" * @return length of TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" public int length() {","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" return this.taskArr.size();","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" * A method that marks specified Task object as done","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" * @params index index of Task object","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" * @throws DukeException when index is out of range","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" public void markTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" this.getTask(index).markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" * A method that unmarks specified Task object as done","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":" * @params index index of Task object","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" * @throws DukeException when index is out of range","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" public void markTaskAsNotDone(int index) throws DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" this.getTask(index).markAsNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":" * A method that returns the string representation of a Task object","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"nikele2001"},"content":" * at specified index","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"nikele2001"},"content":" * @param index task at given index of TaskList object","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"nikele2001"},"content":" * @return string representation of the Task object","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"nikele2001"},"content":" public String taskToString(int index) {","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"nikele2001"},"content":" return this.taskArr.get(index).toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"nikele2001"},"content":" * A method that returns a string representation of the number of","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"nikele2001"},"content":" * tasks in a TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"nikele2001"},"content":" * @return string representation of the number of tasks in the TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"nikele2001"},"content":" public String numTasksToString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"nikele2001"},"content":" if (this.length() \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"nikele2001"},"content":" return \" task\";","lastModifiedDate":"2023-08-26"},{"lineNumber":94,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"nikele2001"},"content":" return \" tasks\";","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"nikele2001"},"content":" * A method to to add a task to the TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"nikele2001"},"content":" * @param task task object to be added","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"nikele2001"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"nikele2001"},"content":" this.taskArr.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"nikele2001"},"content":" * A method to add a task to the TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"nikele2001"},"content":" * @param index index of Task object that user wants to delete","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"nikele2001"},"content":" public void delete(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"nikele2001"},"content":" this.taskArr.remove(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"nikele2001"},"content":" * A method to generate a string representing the TaskList in a format that can","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"nikele2001"},"content":" * be stored in the .txt file","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"nikele2001"},"content":" * String is passed to the Storage object to be processed","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"nikele2001"},"content":" * @return string representation of TaskList to be stored","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"nikele2001"},"content":" public String storage() {","lastModifiedDate":"2023-08-25"},{"lineNumber":124,"author":{"gitId":"nikele2001"},"content":" String out \u003d \"\";","lastModifiedDate":"2023-08-25"},{"lineNumber":125,"author":{"gitId":"nikele2001"},"content":" for (Task task : this.taskArr) {","lastModifiedDate":"2023-08-25"},{"lineNumber":126,"author":{"gitId":"nikele2001"},"content":" out +\u003d task.toBeStored();","lastModifiedDate":"2023-08-25"},{"lineNumber":127,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":128,"author":{"gitId":"nikele2001"},"content":" return out;","lastModifiedDate":"2023-08-25"},{"lineNumber":129,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":130,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"nikele2001"},"content":" public TaskList filter(String keyString) {","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"nikele2001"},"content":" ArrayList\u003cTask\u003e out \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"nikele2001"},"content":" for (Task task : this.taskArr) {","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"nikele2001"},"content":" if (task.isKey(keyString)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"nikele2001"},"content":" out.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"nikele2001"},"content":" return new TaskList(out);","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"nikele2001":140}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" * A class that handles all the user interactions of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"public class Ui {","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" String lnspace \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" private final Scanner sc;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" public Ui() {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" * A method that prints greeting when program starts","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * @return string representing greeting","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" public String greeting() {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" String greeting \u003d lnspace + \"\\n\"","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" + \"Hello! I\u0027m Lorem\\n\"","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" + lnspace + \"\\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" return greeting;","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" * A method that prints ending when program terminates","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" * @return string representing ending","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" public String ending() {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" String ending \u003d \"Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" + lnspace;","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" System.out.println(ending);","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" this.sc.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" return ending;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" * A method that prints a straight line","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" * @return string representing straight line","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" public String printLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" System.out.println(lnspace);","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" return lnspace;","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" * A method that prints error message when existing data file is not found","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" * @return string representing error message","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" public String showLoadingError() {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" String out \u003d \"Existing data not found. Creating new data file tasks.txt found in ./data/ folder.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":" System.out.println(out);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" return out;","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" * A method that prints the error message specified","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" * @params message error message that user wants to print","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" * @return string that user inputted as argument","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" public String showError(String message) {","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":" return message;","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"nikele2001"},"content":" * A method that reads the next command that user inputted","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"nikele2001"},"content":" * @returns string that user inputted","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"nikele2001"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"nikele2001"},"content":" return this.sc.nextLine().trim();","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"nikele2001"},"content":" * A method that prints message during task addition","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"nikele2001"},"content":" * @params arr TaskList object that task object is added to","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"nikele2001"},"content":" public void addTask(TaskList arr) {","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"nikele2001"},"content":" System.out.println(arr.taskToString(arr.length() - 1));","lastModifiedDate":"2023-08-26"},{"lineNumber":94,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"Now you have \" + (arr.length()) + arr.numTasksToString() + \" in the list.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":95,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":97,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"nikele2001"},"content":" * A method that prints message during task marking","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"nikele2001"},"content":" * @params index index of Task object that user marked in specified TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"nikele2001"},"content":" * object","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"nikele2001"},"content":" * @params arr TaskList object that contains Task object that user marked","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"nikele2001"},"content":" public void markTask(int index, TaskList arr) {","lastModifiedDate":"2023-08-26"},{"lineNumber":106,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":107,"author":{"gitId":"nikele2001"},"content":" System.out.println(arr.taskToString(index));","lastModifiedDate":"2023-08-26"},{"lineNumber":108,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":109,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":110,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"nikele2001"},"content":" * A method that prints message during task unmarking","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"nikele2001"},"content":" * @params index index of Task object that user unmarked in specified TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"nikele2001"},"content":" * object","lastModifiedDate":"2023-08-28"},{"lineNumber":115,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":116,"author":{"gitId":"nikele2001"},"content":" * @params arr TaskList object that contains Task object that user unmarked","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"nikele2001"},"content":" public void unmarkTask(int index, TaskList arr) {","lastModifiedDate":"2023-08-26"},{"lineNumber":119,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":120,"author":{"gitId":"nikele2001"},"content":" System.out.println(arr.taskToString(index));","lastModifiedDate":"2023-08-26"},{"lineNumber":121,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"nikele2001"},"content":" * A method that prints message when user wants a list of tasks in TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"nikele2001"},"content":" * object","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"nikele2001"},"content":" * @params arr TaskList object that contains existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"nikele2001"},"content":" * @return string that is printed representing list of tasks in specified","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"nikele2001"},"content":" * TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"nikele2001"},"content":" public String list(TaskList arr) {","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"nikele2001"},"content":" String out \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"nikele2001"},"content":" for (int i \u003d 0; i \u003c arr.length(); i++) {","lastModifiedDate":"2023-08-26"},{"lineNumber":135,"author":{"gitId":"nikele2001"},"content":" out \u003d out + (i + 1) + \". \" + arr.taskToString(i) + \"\\n\";","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":137,"author":{"gitId":"nikele2001"},"content":" System.out.println(out);","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"nikele2001"},"content":" return out;","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":140,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":141,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":142,"author":{"gitId":"nikele2001"},"content":" * A method that finds all existing tasks that contains specified substring and lists it","lastModifiedDate":"2023-08-28"},{"lineNumber":143,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":144,"author":{"gitId":"nikele2001"},"content":" * @params arr taskList object that contains existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":145,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":146,"author":{"gitId":"nikele2001"},"content":" * @params keyString string that user wants to search for","lastModifiedDate":"2023-08-28"},{"lineNumber":147,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":148,"author":{"gitId":"nikele2001"},"content":" * @return string that lists all tasks with descriptions containing specified substring","lastModifiedDate":"2023-08-28"},{"lineNumber":149,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":150,"author":{"gitId":"nikele2001"},"content":" public String find(TaskList arr, String keyString) {","lastModifiedDate":"2023-08-28"},{"lineNumber":151,"author":{"gitId":"nikele2001"},"content":" String out \u003d \"Here are the matching tasks in your list:\\n\";","lastModifiedDate":"2023-08-28"},{"lineNumber":152,"author":{"gitId":"nikele2001"},"content":" TaskList outTaskList \u003d arr.filter(keyString);","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"nikele2001"},"content":" if (outTaskList.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":154,"author":{"gitId":"nikele2001"},"content":" out \u003d \"There are no matching tasks in the list.\";","lastModifiedDate":"2023-08-28"},{"lineNumber":155,"author":{"gitId":"nikele2001"},"content":" System.out.println(out);","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"nikele2001"},"content":" return out;","lastModifiedDate":"2023-08-28"},{"lineNumber":157,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":158,"author":{"gitId":"nikele2001"},"content":" for (int i \u003d 0; i \u003c outTaskList.length(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":159,"author":{"gitId":"nikele2001"},"content":" out \u003d out + (i + 1) + \". \" + outTaskList.taskToString(i) + \"\\n\";","lastModifiedDate":"2023-08-28"},{"lineNumber":160,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":161,"author":{"gitId":"nikele2001"},"content":" System.out.println(out);","lastModifiedDate":"2023-08-28"},{"lineNumber":162,"author":{"gitId":"nikele2001"},"content":" return out;","lastModifiedDate":"2023-08-28"},{"lineNumber":163,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":164,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":165,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":166,"author":{"gitId":"nikele2001"},"content":" * A method that prints message when user deletes a task in TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":167,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":168,"author":{"gitId":"nikele2001"},"content":" * @params arr TaskList where deleted Task is contained in","lastModifiedDate":"2023-08-28"},{"lineNumber":169,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":170,"author":{"gitId":"nikele2001"},"content":" * @params index index of Task object that was deleted","lastModifiedDate":"2023-08-28"},{"lineNumber":171,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":172,"author":{"gitId":"nikele2001"},"content":" public void deleteTask(TaskList arr, int index) {","lastModifiedDate":"2023-08-26"},{"lineNumber":173,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":174,"author":{"gitId":"nikele2001"},"content":" System.out.println(arr.taskToString(index));","lastModifiedDate":"2023-08-26"},{"lineNumber":175,"author":{"gitId":"nikele2001"},"content":" System.out.println(\"Now you have \" + (arr.length() - 1) + arr.numTasksToString() + \" in the list.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":176,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":177,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":177}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" * A class that represents all task addition commands that user can give","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" private Task task;","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" public AddCommand() {","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * A method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" tasks.addTask(this.task);","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" ui.addTask(tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to add a Todo task","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" public class TodoCommand extends AddCommand {","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" public TodoCommand(String fullCommand) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" super.task \u003d Todo.of(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" throw e;","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to add a Deadline task","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" public class DeadlineCommand extends AddCommand {","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" public DeadlineCommand(String fullCommand) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" super.task \u003d Deadline.of(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" throw e;","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to add an Event task","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" public class EventCommand extends AddCommand {","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" public EventCommand(String fullCommand) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":" super.task \u003d Event.of(fullCommand);","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":" throw e;","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":76}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" * An abstract class that represents all commands that user can possibly make","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" * All commands user can make are subtypes of this class","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" * An abstract method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" return this.isExit;","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":30}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to delete a task","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" private int index;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" * A method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" ui.deleteTask(tasks, index);","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" tasks.delete(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":33}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":" public ExitCommand() {","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" return true;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" * A method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":29}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":" private String keyString;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" public FindCommand(String keyString) {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" this.keyString \u003d keyString;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" @Override ","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" ui.find(tasks, this.keyString);","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"nikele2001":18}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to list all existing tasks","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" * A method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" ui.list(tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":25}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to mark a task","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" private int index;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * A method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" tasks.markTaskAsDone(index);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" ui.markTask(index, tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" throw e;","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":37}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.command;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" * A class that represents the user command to unmark a task","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" private int index;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" * A method that executes the command that user gave","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * @params tasks TaskList containing all existing Task objects","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * @params ui UI interface that is used to print messages to the terminak","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" * @params storage Storage object that houses database of the program","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" tasks.markTaskAsNotDone(index);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" ui.unmarkTask(index, tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" storage.update(tasks);","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" throw e;","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"nikele2001":37}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class EmptyDescriptionException extends MissingInformationException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public EmptyDescriptionException(String taskType) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! The description of a \" + taskType + \" cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/IndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class IndexOutOfBoundsException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public IndexOutOfBoundsException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! Index provided is invalid.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class InvalidDateException extends DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public InvalidDateException() {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! Date format given is invalid. Please input date in the following format: yyyy-mm-dd\");","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/MissingDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class MissingDeadlineException extends MissingInformationException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public MissingDeadlineException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! Deadline is required for task to be created. Denote deadline with a /by.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/MissingEndTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class MissingEndTimeException extends MissingInformationException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public MissingEndTimeException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! end time is required for task to be created. Denote end time with a /to.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/MissingInformationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public abstract class MissingInformationException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" public MissingInformationException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":9}},{"path":"src/main/java/duke/exception/MissingStartTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class MissingStartTimeException extends MissingInformationException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public MissingStartTimeException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! Start time is required for task to be created. Denote start time with a /from.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/exception/UnknownTaskTypeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.exception;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"public class UnknownTaskTypeException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" public UnknownTaskTypeException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" super(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":7}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.task;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.*;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.exception.MissingDeadlineException;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.MissingInformationException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" * A class that is represents the Deadline class. It is ","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" * a subtype of the abstract Task class.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" protected LocalDate deadline;","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" public Deadline(String description, LocalDate deadline) {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" * Factory method of Deadline class.","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" * String input is guaranteed to start with \"deadline\"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" * @param input user input from terminal.","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" * @return a Deadline object given the input string.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" * @throws MissingInformationException due to possibly an empty","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" * description of the Deadline task or a missing /by deadline for","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" * the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" public static Deadline of(String input) throws MissingInformationException {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"deadline \").matcher(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" matcher.find();","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" String info \u003d input.substring(matcher.end()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" matcher \u003d Pattern.compile(\" /by \").matcher(info);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" throw new MissingDeadlineException();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" String description \u003d info.substring(0, matcher.start()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" String deadline \u003d info.substring(matcher.end()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" LocalDate deadlineDate \u003d LocalDate.parse(deadline);","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" return new Deadline(description, deadlineDate);","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" * A method that returns the string representation of a Deadline object.","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" * @return string representation of the Deadline object.","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" public String toBeStored() {","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":" String marked \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":" return \"D | \" + marked + \" | \" + this.getDescription() + \" | \" + this.deadline + \"\\n\";","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"nikele2001":66}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.task;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import duke.exception.MissingEndTimeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"import duke.exception.MissingStartTimeException;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" * A class that is represents the Event class. It is ","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" * a subtype of the abstract Task class.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" protected LocalDate start;","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" protected LocalDate end;","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" public Event(String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * Factory method of Event class.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" * String input is guaranteed to start with \"event\"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" * @param input user input from terminal.","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" * @return a Event object given the input string.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" * @throws MissingInformationException due to possibly an empty","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" * description of the Event task or a missing /from start time or a","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" * missing /to end time for the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" public static Event of(String input) throws DukeException {","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"event \").matcher(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" matcher.find();","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" String info \u003d input.substring(matcher.end()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" matcher \u003d Pattern.compile(\" /from \").matcher(info);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" throw new MissingStartTimeException();","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" String description \u003d info.substring(0, matcher.start()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" String tmp \u003d info.substring(matcher.end()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" matcher \u003d Pattern.compile(\" /to \").matcher(tmp);","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" throw new MissingEndTimeException();","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" String start \u003d tmp.substring(0, matcher.start()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":" String end \u003d tmp.substring(matcher.end()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" LocalDate startDate \u003d LocalDate.parse(start);","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" LocalDate endDate \u003d LocalDate.parse(end);","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" return new Event(description, startDate, endDate);","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":" * A method that returns the string representation of an Event object.","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" * @return string representation of the Event object.","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" + \" to: \" + this.end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"nikele2001"},"content":" public String toBeStored() {","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"nikele2001"},"content":" String marked \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"nikele2001"},"content":" return \"E | \" + marked + \" | \" + this.getDescription() + \" | \" + this.start + \" | \" + this.end + \"\\n\";","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"nikele2001":79}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.task;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":" * An abstract class that is the supertype of all ","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":" * tasks that program accepts (Todo, Deadline, Event).","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * A method to return the description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * @return description of the task entered by the user.","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" return this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" * A method that retrieves the marked status of a task.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" * @return the status of the task based on whether it is marked or not.","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" return this.isDone;","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" * A method that marks task as done.","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" * A method that marks task as not done.","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" * A method that returns the string representation of a task.","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" * @return string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"nikele2001"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"nikele2001"},"content":" public boolean isKey(String keyString) {","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(keyString).matcher(this.getDescription());","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"nikele2001"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"nikele2001"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"nikele2001"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"nikele2001"},"content":" public abstract String toBeStored();","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"nikele2001":74}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke.task;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import duke.exception.MissingInformationException;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"/*","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" * A class that is represents the Event class. It is ","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" * a subtype of the abstract Task class.","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" * A factory method of Todo class.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" * String input is guaranteed to start with \"todo\"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" * @param input user input from terminal.","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" * @return a Todo object given the input string.","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" * @throws MissingInformationException due to possibly an empty","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" * description of the todo task.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" public static Todo of(String input) throws MissingInformationException {","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":" input \u003d input.trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"nikele2001"},"content":" if (input.length() \u003c\u003d 0) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"nikele2001"},"content":" throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"nikele2001"},"content":" Matcher matcher \u003d Pattern.compile(\"todo \").matcher(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"nikele2001"},"content":" matcher.find();","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"nikele2001"},"content":" String description \u003d input.substring(matcher.end()).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"nikele2001"},"content":" return new Todo(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"nikele2001"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"nikele2001"},"content":" throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"nikele2001"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"nikele2001"},"content":" * A method that returns the string representation of a Todo object.","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"nikele2001"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"nikele2001"},"content":" * @return string representation of the Todo object.","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"nikele2001"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"nikele2001"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"nikele2001"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"nikele2001"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"nikele2001"},"content":" public String toBeStored() {","lastModifiedDate":"2023-08-25"},{"lineNumber":58,"author":{"gitId":"nikele2001"},"content":" String marked \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"nikele2001"},"content":" return \"T | \" + marked + \" | \" + this.getDescription() + \"\\n\";","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"nikele2001":61}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" public void EmptyTaskListLengthTest() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" TaskList a \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" TaskList b \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" assertEquals(a.length(), b.length());","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" public void EmptyTaskListTest() {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" Task task \u003d Todo.of(\"todo read book\");","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":" TaskList a \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" TaskList b \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" a.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":" b.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"nikele2001"},"content":" assertEquals(a.getTask(0), b.getTask(0));","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"nikele2001"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"nikele2001"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"nikele2001":32}},{"path":"src/test/java/duke/UiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"nikele2001"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"nikele2001"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"nikele2001"},"content":"public class UiTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"nikele2001"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"nikele2001"},"content":" public void greetingTest() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"nikele2001"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"nikele2001"},"content":" String lnspace \u003d ui.lnspace;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"nikele2001"},"content":" assertEquals(lnspace + \"\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"nikele2001"},"content":" + \"Hello! I\u0027m Lorem\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"nikele2001"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"nikele2001"},"content":" + lnspace + \"\\n\", ui.greeting());","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"nikele2001"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"nikele2001"},"content":" public void endingTest() {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"nikele2001"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"nikele2001"},"content":" String lnspace \u003d ui.lnspace;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"nikele2001"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"nikele2001"},"content":" assertEquals(\"Bye. Hope to see you again soon!\\n\" + lnspace, ui.ending());","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"nikele2001"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"nikele2001"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"nikele2001":26}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nikele2001"},"content":"todo read book","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nikele2001":1}}] diff --git a/nikele2001_ip_master/commits.json b/nikele2001_ip_master/commits.json index de4785e4..247b3c94 100644 --- a/nikele2001_ip_master/commits.json +++ b/nikele2001_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"nikele2001":[{"date":"2023-08-22","commitResults":[{"hash":"e6146b9d29ca7be68b90ee98aa4a7539c620bd83","isMergeCommit":false,"messageTitle":"completed level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"3ddce8728dd2d61e79567dfd07898c2c84e7005c","isMergeCommit":false,"messageTitle":"completed level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"048f0e7d73fdcb7011feb97ea7205e806af67c3e","isMergeCommit":false,"messageTitle":"amended level 1 submission","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":11}}},{"hash":"4821b45b5a1a2b70fa011f34ce343983cc7edf7a","isMergeCommit":false,"messageTitle":"completed level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":7}}},{"hash":"67cb95f2de3d80b52a379594741822f1aedf4423","isMergeCommit":false,"messageTitle":"completed level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":10}}},{"hash":"54f2cadc2ec5c7cbf673fe1c06b3d90e12eac23a","isMergeCommit":false,"messageTitle":"completed level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":132,"deletions":12}}}]},{"date":"2023-08-23","commitResults":[{"hash":"82300b6e8fb64d1183f2cd22f4b8f1bfef547f72","isMergeCommit":false,"messageTitle":"completed level A-TextUiTesting, Level 5 and Level 6","messageBody":"","tags":["Level-5","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":243,"deletions":128}}}]},{"date":"2023-08-24","commitResults":[{"hash":"28efae7f5204c3b26161919f4b879098b69e9237","isMergeCommit":false,"messageTitle":"completed A-Enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":64}}},{"hash":"34b6e1ea4392cca904918ab62e58a8eb86cdf753","isMergeCommit":false,"messageTitle":"added some documentation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":13}}},{"hash":"02ad00296f7afb5cf3be21bcf75f831bc59cfaee","isMergeCommit":false,"messageTitle":"added more documentation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}}]},{"date":"2023-08-25","commitResults":[{"hash":"40676e0f1dfb6fea6ab19bddd8d0eb3f699dc087","isMergeCommit":false,"messageTitle":"fixed some bugs with regards to missing matcher.find() statements","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"d3300e412c95fce0db20d70a390034fa9d12b686","isMergeCommit":false,"messageTitle":"implemented Level-7 on level 7 branch","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":102,"deletions":16}}},{"hash":"25d442054a1ffb7f086e08611ef1f7b9ec0635fb","isMergeCommit":false,"messageTitle":"completed Level-8 on level 8 branch","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":35,"deletions":14}}}]},{"date":"2023-08-26","commitResults":[{"hash":"255c9fc15865135ca78ee38cc4795246806a115e","isMergeCommit":false,"messageTitle":"completed A-MoreOOP","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":6},"java":{"insertions":512,"deletions":227}}}]},{"date":"2023-08-27","commitResults":[{"hash":"43dc32f302146dcc27d61d3d9861a6e0c34260b3","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-MoreOOP\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"582daba0132aea1721f2d440fe39b26f11a1ead9","isMergeCommit":false,"messageTitle":"completed A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"86a65baa60d5212885953a64bcbb39fbc87fde87","isMergeCommit":false,"messageTitle":"completed A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":6}}},{"hash":"1b9fb7290cbd9fb5bd15ee1f346266aed6cfff6d","isMergeCommit":false,"messageTitle":"added more tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"33c0e849e1febfbf630d8e2ef739aea62f31ba30","isMergeCommit":true,"messageTitle":"Merge pull request #1 from nikele2001/A-JUnit","messageBody":"added more tests","fileTypesAndContributionMap":{}},{"hash":"3f365d5b6adfe3e7285918429860911680b338b2","isMergeCommit":false,"messageTitle":"completed A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"e0a0ef1a8140249c9711108289ebb6446c0e4342","isMergeCommit":false,"messageTitle":"completed A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":274,"deletions":13}}},{"hash":"bb59be95efd0d457d9b3f0b3520c1194ec271aa3","isMergeCommit":false,"messageTitle":"complete A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":11}}},{"hash":"41467645aaf30915d388d342357b204c410f46fd","isMergeCommit":false,"messageTitle":"complete Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":2}}},{"hash":"b8b26b32572517f09f77cff0231a00e5cd408ccf","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"94173d5396ae4adb14547093e35d58a8bdc24516","isMergeCommit":false,"messageTitle":"merge A-JavaDoc and Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":20}}},{"hash":"72cc2d7df23c83813f2490ae0b7037a5d00a4f4b","isMergeCommit":false,"messageTitle":"fix bug regarding deletion of last task in tasklist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"cb0fa2b1620e69919146c30880ee5ae9061053e6","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"262fe18861209e686be50f4f0243b8860cd00918","isMergeCommit":false,"messageTitle":"fix a bug that does not process find commands correctly in parser","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"nikele2001":{"java":1315,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":9}},"authorContributionVariance":{"nikele2001":52483.316},"authorDisplayNameMap":{"nikele2001":"CS2103T-F12-1 NICH.. JIE"}} +{"authorDailyContributionsMap":{"nikele2001":[{"date":"2023-08-22","commitResults":[{"hash":"e6146b9d29ca7be68b90ee98aa4a7539c620bd83","isMergeCommit":false,"messageTitle":"completed level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"3ddce8728dd2d61e79567dfd07898c2c84e7005c","isMergeCommit":false,"messageTitle":"completed level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"048f0e7d73fdcb7011feb97ea7205e806af67c3e","isMergeCommit":false,"messageTitle":"amended level 1 submission","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":11}}},{"hash":"4821b45b5a1a2b70fa011f34ce343983cc7edf7a","isMergeCommit":false,"messageTitle":"completed level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":7}}},{"hash":"67cb95f2de3d80b52a379594741822f1aedf4423","isMergeCommit":false,"messageTitle":"completed level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":10}}},{"hash":"54f2cadc2ec5c7cbf673fe1c06b3d90e12eac23a","isMergeCommit":false,"messageTitle":"completed level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":132,"deletions":12}}}]},{"date":"2023-08-23","commitResults":[{"hash":"82300b6e8fb64d1183f2cd22f4b8f1bfef547f72","isMergeCommit":false,"messageTitle":"completed level A-TextUiTesting, Level 5 and Level 6","messageBody":"","tags":["Level-5","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":243,"deletions":128}}}]},{"date":"2023-08-24","commitResults":[{"hash":"28efae7f5204c3b26161919f4b879098b69e9237","isMergeCommit":false,"messageTitle":"completed A-Enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":64}}},{"hash":"34b6e1ea4392cca904918ab62e58a8eb86cdf753","isMergeCommit":false,"messageTitle":"added some documentation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":13}}},{"hash":"02ad00296f7afb5cf3be21bcf75f831bc59cfaee","isMergeCommit":false,"messageTitle":"added more documentation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}}]},{"date":"2023-08-25","commitResults":[{"hash":"40676e0f1dfb6fea6ab19bddd8d0eb3f699dc087","isMergeCommit":false,"messageTitle":"fixed some bugs with regards to missing matcher.find() statements","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"d3300e412c95fce0db20d70a390034fa9d12b686","isMergeCommit":false,"messageTitle":"implemented Level-7 on level 7 branch","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":102,"deletions":16}}},{"hash":"25d442054a1ffb7f086e08611ef1f7b9ec0635fb","isMergeCommit":false,"messageTitle":"completed Level-8 on level 8 branch","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":35,"deletions":14}}}]},{"date":"2023-08-26","commitResults":[{"hash":"255c9fc15865135ca78ee38cc4795246806a115e","isMergeCommit":false,"messageTitle":"completed A-MoreOOP","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":6},"java":{"insertions":512,"deletions":227}}}]},{"date":"2023-08-27","commitResults":[{"hash":"43dc32f302146dcc27d61d3d9861a6e0c34260b3","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-MoreOOP\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"582daba0132aea1721f2d440fe39b26f11a1ead9","isMergeCommit":false,"messageTitle":"completed A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"86a65baa60d5212885953a64bcbb39fbc87fde87","isMergeCommit":false,"messageTitle":"completed A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":6}}},{"hash":"1b9fb7290cbd9fb5bd15ee1f346266aed6cfff6d","isMergeCommit":false,"messageTitle":"added more tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"33c0e849e1febfbf630d8e2ef739aea62f31ba30","isMergeCommit":true,"messageTitle":"Merge pull request #1 from nikele2001/A-JUnit","messageBody":"added more tests","fileTypesAndContributionMap":{}},{"hash":"3f365d5b6adfe3e7285918429860911680b338b2","isMergeCommit":false,"messageTitle":"completed A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"e0a0ef1a8140249c9711108289ebb6446c0e4342","isMergeCommit":false,"messageTitle":"completed A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":274,"deletions":13}}},{"hash":"bb59be95efd0d457d9b3f0b3520c1194ec271aa3","isMergeCommit":false,"messageTitle":"complete A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":11}}},{"hash":"41467645aaf30915d388d342357b204c410f46fd","isMergeCommit":false,"messageTitle":"complete Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":2}}},{"hash":"b8b26b32572517f09f77cff0231a00e5cd408ccf","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"94173d5396ae4adb14547093e35d58a8bdc24516","isMergeCommit":false,"messageTitle":"merge A-JavaDoc and Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":20}}},{"hash":"72cc2d7df23c83813f2490ae0b7037a5d00a4f4b","isMergeCommit":false,"messageTitle":"fix bug regarding deletion of last task in tasklist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"cb0fa2b1620e69919146c30880ee5ae9061053e6","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"262fe18861209e686be50f4f0243b8860cd00918","isMergeCommit":false,"messageTitle":"fix a bug that does not process find commands correctly in parser","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}}]},{"date":"2023-09-01","commitResults":[{"hash":"3ae88c97041c4db45d8b4a1180e02a09d4aa6f49","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":25,"deletions":20}}}]}]},"authorFileTypeContributionMap":{"nikele2001":{"java":1315,"md":23,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":9}},"authorContributionVariance":{"nikele2001":47304.73},"authorDisplayNameMap":{"nikele2001":"CS2103T-F12-1 NICH.. JIE"}} diff --git a/p-xp_ip_master/authorship.json b/p-xp_ip_master/authorship.json index 5bb42b34..29925847 100644 --- a/p-xp_ip_master/authorship.json +++ b/p-xp_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/ChatbotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"public class ChatbotException extends Exception {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":" public ChatbotException(String message) {","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":" super(message);","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":" return \"Sucks to be you, but \" + this.getMessage();","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"p-xp":10}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":" protected String by;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"p-xp":12}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":" protected String startTime;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":" protected String endTime;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" return \"[E]\" + super.toString() + \" (\" + this.startTime + \" to \" + this.endTime + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"p-xp":16}},{"path":"src/main/java/Remy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":"public class Remy {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" private static String divider \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" private static String shortDivider \u003d \"_____________\";","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":" String welcomeContent \u003d","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" \"I\u0027m Remy, and it is NOT nice to see you.\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" \"Faster tell me what you want and go away.\";","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" String exitMessage \u003d \"Hope to never see you again!\\n\" + divider;","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":" Path filePath \u003d Paths.get(\".\", \"data\", \"remy.ser\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":" if (Files.exists(filePath)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":" taskList \u003d loadTasksFromFile(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"p-xp"},"content":" taskList \u003d new ArrayList(100);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"p-xp"},"content":" printSandwichContent(welcomeContent, \"long\");","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"p-xp"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"p-xp"},"content":" String input;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"p-xp"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"p-xp"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"p-xp"},"content":" String taskType \u003d parseTaskType(input);","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"p-xp"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"p-xp"},"content":" if (taskType.equals(\"bye\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"p-xp"},"content":" System.out.println(exitMessage);","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"p-xp"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"p-xp"},"content":" } else if (taskType.equals(\"list\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"p-xp"},"content":" System.out.println(shortDivider);","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"p-xp"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"p-xp"},"content":" System.out.println(\" \" + (i + 1) + \". \" + taskList.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"p-xp"},"content":" System.out.println(shortDivider);","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"p-xp"},"content":" } else if (taskType.equals(\"mark\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"p-xp"},"content":" // Marks item as done","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"p-xp"},"content":" if (input.length() \u003c 6) throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"p-xp"},"content":" int index \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"p-xp"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"p-xp"},"content":" taskList.get(index).markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"p-xp"},"content":" String content \u003d \"Done. You happy?\\n\" + taskList.get(index).toString();","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"p-xp"},"content":" saveTasksToFile(filePath, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"p-xp"},"content":" printSandwichContent(content, \"short\");","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"no such item lah.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"p-xp"},"content":" } else if (taskType.equals(\"unmark\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"p-xp"},"content":" // Marks item as undone","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"p-xp"},"content":" if (input.length() \u003c 8) throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"p-xp"},"content":" int index \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"p-xp"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"p-xp"},"content":" taskList.get(index).markAsUndone();","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"p-xp"},"content":" String content \u003d \"Done. You happy?\\n\" + taskList.get(index).toString();","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"p-xp"},"content":" saveTasksToFile(filePath, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"p-xp"},"content":" printSandwichContent(content, \"short\");","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"no such item lah.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"p-xp"},"content":" } else if (taskType.equals(\"delete\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"p-xp"},"content":" if (input.length() \u003c 8) throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"p-xp"},"content":" int index \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"p-xp"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c taskList.size()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"p-xp"},"content":" String task \u003d taskList.get(index).toString();","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"p-xp"},"content":" taskList.remove(index);","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"p-xp"},"content":" String content \u003d \"Done. Can you don\u0027t be so troublesome?\\n\" + task;","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"p-xp"},"content":" saveTasksToFile(filePath, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"p-xp"},"content":" printSandwichContent(content, \"short\");","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":87,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"no such item lah.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"p-xp"},"content":" } else if (taskType.equals(\"todo\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"p-xp"},"content":" if (input.length() \u003c 6) throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":91,"author":{"gitId":"p-xp"},"content":" String description \u003d input.substring(5);","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"p-xp"},"content":" Todo temp \u003d new Todo(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"p-xp"},"content":" taskList.add(temp);","lastModifiedDate":"2023-08-25"},{"lineNumber":94,"author":{"gitId":"p-xp"},"content":" saveTasksToFile(filePath, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"p-xp"},"content":" addTask(temp, taskList.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":96,"author":{"gitId":"p-xp"},"content":" } else if (taskType.equals(\"deadline\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":97,"author":{"gitId":"p-xp"},"content":" if (input.length() \u003c 10) throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"p-xp"},"content":" String[] parts \u003d input.substring(9).split(\" /by \");","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"p-xp"},"content":" if (parts.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-25"},{"lineNumber":100,"author":{"gitId":"p-xp"},"content":" Deadline temp \u003d new Deadline(parts[0], parts[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":101,"author":{"gitId":"p-xp"},"content":" taskList.add(temp);","lastModifiedDate":"2023-08-25"},{"lineNumber":102,"author":{"gitId":"p-xp"},"content":" saveTasksToFile(filePath, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"p-xp"},"content":" addTask(temp, taskList.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":104,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"wrong format lah.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":106,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":107,"author":{"gitId":"p-xp"},"content":" } else if (taskType.equals(\"event\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":108,"author":{"gitId":"p-xp"},"content":" if (input.length() \u003c 7) throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":109,"author":{"gitId":"p-xp"},"content":" String[] parts \u003d input.substring(6).split(\" /from | /to \");","lastModifiedDate":"2023-08-25"},{"lineNumber":110,"author":{"gitId":"p-xp"},"content":" if (parts.length \u003d\u003d 3) {","lastModifiedDate":"2023-08-25"},{"lineNumber":111,"author":{"gitId":"p-xp"},"content":" Event temp \u003d new Event(parts[0], parts[1], parts[2]);","lastModifiedDate":"2023-08-25"},{"lineNumber":112,"author":{"gitId":"p-xp"},"content":" taskList.add(temp);","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"p-xp"},"content":" saveTasksToFile(filePath, taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"p-xp"},"content":" addTask(temp, taskList.size());","lastModifiedDate":"2023-08-25"},{"lineNumber":115,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"wrong format lah.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":117,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":118,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":119,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"that\u0027s not a command.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":120,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":121,"author":{"gitId":"p-xp"},"content":" } catch (ChatbotException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":122,"author":{"gitId":"p-xp"},"content":" printSandwichContent(e.toString(), \"long\");","lastModifiedDate":"2023-08-25"},{"lineNumber":123,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":124,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":125,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"p-xp"},"content":" public static String parseTaskType(String input) {","lastModifiedDate":"2023-08-25"},{"lineNumber":128,"author":{"gitId":"p-xp"},"content":" if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":129,"author":{"gitId":"p-xp"},"content":" return \"list\";","lastModifiedDate":"2023-08-25"},{"lineNumber":130,"author":{"gitId":"p-xp"},"content":" } else if (input.toLowerCase().startsWith(\"mark\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":131,"author":{"gitId":"p-xp"},"content":" return \"mark\";","lastModifiedDate":"2023-08-25"},{"lineNumber":132,"author":{"gitId":"p-xp"},"content":" } else if (input.toLowerCase().startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":133,"author":{"gitId":"p-xp"},"content":" return \"unmark\";","lastModifiedDate":"2023-08-25"},{"lineNumber":134,"author":{"gitId":"p-xp"},"content":" } else if (input.toLowerCase().startsWith(\"todo\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":135,"author":{"gitId":"p-xp"},"content":" return \"todo\";","lastModifiedDate":"2023-08-25"},{"lineNumber":136,"author":{"gitId":"p-xp"},"content":" } else if (input.toLowerCase().startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":137,"author":{"gitId":"p-xp"},"content":" return \"deadline\";","lastModifiedDate":"2023-08-25"},{"lineNumber":138,"author":{"gitId":"p-xp"},"content":" } else if (input.toLowerCase().startsWith(\"event\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":139,"author":{"gitId":"p-xp"},"content":" return \"event\";","lastModifiedDate":"2023-08-25"},{"lineNumber":140,"author":{"gitId":"p-xp"},"content":" } else if (input.toLowerCase().startsWith(\"delete\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":141,"author":{"gitId":"p-xp"},"content":" return \"delete\";","lastModifiedDate":"2023-08-25"},{"lineNumber":142,"author":{"gitId":"p-xp"},"content":" } else if (input.toLowerCase().equals(\"bye\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":143,"author":{"gitId":"p-xp"},"content":" return \"bye\";","lastModifiedDate":"2023-08-25"},{"lineNumber":144,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":145,"author":{"gitId":"p-xp"},"content":" return \"invalid\";","lastModifiedDate":"2023-08-25"},{"lineNumber":146,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":147,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":148,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":149,"author":{"gitId":"p-xp"},"content":" public static void printSandwichContent(String content, String dividerType) {","lastModifiedDate":"2023-08-25"},{"lineNumber":150,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"p-xp"},"content":" if (dividerType \u003d\u003d \"short\") {","lastModifiedDate":"2023-08-25"},{"lineNumber":152,"author":{"gitId":"p-xp"},"content":" System.out.println(shortDivider);","lastModifiedDate":"2023-08-25"},{"lineNumber":153,"author":{"gitId":"p-xp"},"content":" System.out.println(content);","lastModifiedDate":"2023-08-25"},{"lineNumber":154,"author":{"gitId":"p-xp"},"content":" System.out.println(shortDivider);","lastModifiedDate":"2023-08-25"},{"lineNumber":155,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":156,"author":{"gitId":"p-xp"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-25"},{"lineNumber":157,"author":{"gitId":"p-xp"},"content":" System.out.println(content);","lastModifiedDate":"2023-08-25"},{"lineNumber":158,"author":{"gitId":"p-xp"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-25"},{"lineNumber":159,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":162,"author":{"gitId":"p-xp"},"content":" public static void addTask(Task task, int num) {","lastModifiedDate":"2023-08-25"},{"lineNumber":163,"author":{"gitId":"p-xp"},"content":" String content \u003d \"Added, now scram.\\n\" +","lastModifiedDate":"2023-08-25"},{"lineNumber":164,"author":{"gitId":"p-xp"},"content":" task.toString() + \"\\n\" +","lastModifiedDate":"2023-08-25"},{"lineNumber":165,"author":{"gitId":"p-xp"},"content":" \"Now you have \" + num + \" tasks in the list.\";","lastModifiedDate":"2023-08-25"},{"lineNumber":166,"author":{"gitId":"p-xp"},"content":" printSandwichContent(content, \"short\");","lastModifiedDate":"2023-08-25"},{"lineNumber":167,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":168,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"p-xp"},"content":" // Solution below adapted from https://stackoverflow.com/questions/10404698/saving-arrays-to-the-hard-disk","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"p-xp"},"content":" public static void saveTasksToFile(Path filePath, ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"p-xp"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"p-xp"},"content":" if (!Files.exists(filePath.getParent())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"p-xp"},"content":" // Create parent directories if they don\u0027t exist","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"p-xp"},"content":" Files.createDirectories(filePath.getParent());","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"p-xp"},"content":" ObjectOutputStream oos \u003d new ObjectOutputStream(Files.newOutputStream(filePath));","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"p-xp"},"content":" oos.writeObject(tasks); // writes the tasks ArrayList to the file","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"p-xp"},"content":" oos.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"p-xp"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"p-xp"},"content":" System.out.println(\"error saving tasks to file, probably some issue on your end: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"p-xp"},"content":" // Solution below adapted from https://stackoverflow.com/questions/10404698/saving-arrays-to-the-hard-disk","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"p-xp"},"content":" private static ArrayList\u003cTask\u003e loadTasksFromFile(Path filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"p-xp"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"p-xp"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"p-xp"},"content":" ObjectInputStream ois \u003d new ObjectInputStream(Files.newInputStream(filePath));","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"p-xp"},"content":" tasks \u003d (ArrayList\u003cTask\u003e) ois.readObject();","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"p-xp"},"content":" ois.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"p-xp"},"content":" } catch (IOException | ClassNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"p-xp"},"content":" System.out.println(\"error loading tasks from file, your fault lah: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"p-xp"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"p-xp":201}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"import java.io.Serializable;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"public class Task implements Serializable {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":" String status \u003d getStatusIcon();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":" return \"[\" + status + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"p-xp":29}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"p-xp":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"todo borrow book","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"bye","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"p-xp":5}},{"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":"p-xp"},"content":"java -classpath ..\\bin Remy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-25"},{"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":{"p-xp":1,"-":20}}] +[{"path":"src/main/java/Remy/ChatbotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"public class ChatbotException extends Exception {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":" public ChatbotException(String message) {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":" super(message);","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" return this.getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"p-xp":12}},{"path":"src/main/java/Remy/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import Remy.command.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":" * A class that makes sense of user inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" * Parses user input and carries out any follow-up action (e.g. Remy.Remy.task.Remy.Remy.task creation).","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":" * Solution below inspired by addressbook Level 2 implementation.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" * @param input","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" public static Command parse(String input) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" // Obtains first word of user input, which should state the action to be performed","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" String action \u003d input.split(\" \")[0].toLowerCase();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":" switch (action) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":" case MarkCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" return new MarkCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":" case UnmarkCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":" return new UnmarkCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":" case TodoCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":" return new TodoCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" case DeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":" return new DeadlineCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":" case EventCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":" return new EventCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"p-xp"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"p-xp"},"content":" return new DeleteCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"p-xp"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"p-xp"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"p-xp"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"No such command lah.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":40}},{"path":"src/main/java/Remy/Remy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import Remy.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import Remy.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"// CS2103T Website Increment description-reused","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":"// Reused the example code from the website.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":"public class Remy {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" public Remy(Path filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":" } catch (ChatbotException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" Ui.printLongSandwich(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":" Ui.printWelcomeMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"p-xp"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"p-xp"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"p-xp"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"p-xp"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"p-xp"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"p-xp"},"content":" } catch (ChatbotException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"p-xp"},"content":" Ui.printError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"p-xp"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"p-xp"},"content":" Path filePath \u003d Paths.get(\".\", \"data\", \"remy.ser\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"p-xp"},"content":" new Remy(filePath).run();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"p-xp":49}},{"path":"src/main/java/Remy/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"import Remy.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" private Path filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" public Storage(Path filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":" // Solution below adapted from https://stackoverflow.com/questions/10404698/saving-arrays-to-the-hard-disk","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":" public TaskList load() throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" if (!Files.exists(this.filePath)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":" ObjectInputStream ois \u003d new ObjectInputStream(Files.newInputStream(filePath));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":" tasks \u003d (TaskList) ois.readObject();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" ois.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"p-xp"},"content":" } catch (IOException | ClassNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"error loading tasks from file, your fault lah: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"p-xp"},"content":" // Solution below adapted from https://stackoverflow.com/questions/10404698/saving-arrays-to-the-hard-disk","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"p-xp"},"content":" public void save(TaskList tasks) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"p-xp"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"p-xp"},"content":" if (!Files.exists(this.filePath.getParent())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"p-xp"},"content":" // Create parent directories if they don\u0027t exist","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"p-xp"},"content":" Files.createDirectories(this.filePath.getParent());","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"p-xp"},"content":" ObjectOutputStream oos \u003d new ObjectOutputStream(Files.newOutputStream(this.filePath));","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"p-xp"},"content":" oos.writeObject(tasks); // writes the tasks ArrayList to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"p-xp"},"content":" oos.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"p-xp"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"IOException saving tasks to file, confirm your fault: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":53}},{"path":"src/main/java/Remy/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import Remy.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import Remy.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" public final Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":" private static String divider \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" private static String shortDivider \u003d \"_____________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" private static String welcomeMessage \u003d","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" \"I\u0027m Remy.Remy, and it is NOT nice to see you.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" \"Faster tell me what you want and go away.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" private static String exitMessage \u003d \"Hope to never see you again!\\n\" + divider;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" public static void printDivider() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":" System.out.println(divider);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":" public static void printWelcomeMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" printLongSandwich(welcomeMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":" public static void printExitMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"p-xp"},"content":" System.out.println(exitMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"p-xp"},"content":" System.out.println(divider);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"p-xp"},"content":" public static void printShortSandwich(String content) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"p-xp"},"content":" System.out.println(shortDivider);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"p-xp"},"content":" System.out.println(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"p-xp"},"content":" System.out.println(shortDivider);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"p-xp"},"content":" public static void printLongSandwich(String content) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"p-xp"},"content":" System.out.println(divider);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"p-xp"},"content":" System.out.println(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"p-xp"},"content":" System.out.println(divider);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"p-xp"},"content":" public static void printError(String errorMessage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"p-xp"},"content":" System.out.println(\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"p-xp"},"content":" System.out.println(errorMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"p-xp"},"content":" System.out.println(\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"p-xp"},"content":" public static void printList(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"p-xp"},"content":" printShortSandwich(taskList.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"p-xp"},"content":" public static void printAddedTask(Task task, int num) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"p-xp"},"content":" String content \u003d \"Added, now scram.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"p-xp"},"content":" task.toString() + \"\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"p-xp"},"content":" \"Now you have \" + num + \" tasks in the list.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"p-xp"},"content":" Ui.printShortSandwich(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" //@@author samuelim01-reused","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Reused Samuel\u0027s inplementation of this method","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" while (input.trim().isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"-"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return input;","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":64,"-":10}},{"path":"src/main/java/Remy/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"import Remy.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import Remy.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import Remy.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"import Remy.ChatbotException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws ChatbotException;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":11}},{"path":"src/main/java/Remy/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import Remy.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import Remy.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"import Remy.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"import Remy.ChatbotException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"import Remy.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":" private String taskName;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" private String dueDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" public static final String COMMAND_WORD \u003d \"deadline\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" public DeadlineCommand(String input) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" if (input.length() \u003c 10) throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" String[] parts \u003d input.substring(9).split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":" if (parts.length \u003d\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":" this.taskName \u003d parts[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" this.dueDate \u003d parts[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"p-xp"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"p-xp"},"content":" Deadline temp \u003d new Deadline(this.taskName, this.dueDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"p-xp"},"content":" taskList.add(temp);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"p-xp"},"content":" storage.save(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"p-xp"},"content":" Ui.printAddedTask(temp, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"p-xp"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"You don\u0027t know how to write the time isit?: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":41}},{"path":"src/main/java/Remy/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import Remy.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import Remy.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"import Remy.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"import Remy.ChatbotException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" public DeleteCommand(String input) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" if (input.length() \u003c 8) throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" int index \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" if (index \u003e\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":" String task \u003d taskList.get(this.index).toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" taskList.remove(this.index);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":" String content \u003d \"Done. Can you don\u0027t be so troublesome?\\n\" + task;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":" storage.save(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":" Ui.printShortSandwich(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":33}},{"path":"src/main/java/Remy/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import Remy.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import Remy.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"import Remy.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"import Remy.ChatbotException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"import Remy.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" private String eventName;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":" private String startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" private String endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" public static final String COMMAND_WORD \u003d \"event\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" public EventCommand(String input) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" if (input.length() \u003c 7) throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" String[] parts \u003d input.substring(6).split(\" /from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":" if (parts.length \u003d\u003d 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":" this.eventName \u003d parts[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" this.startDate \u003d parts[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" this.endDate \u003d parts[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"p-xp"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"p-xp"},"content":" Event temp \u003d new Event(this.eventName, this.startDate, this.endDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"p-xp"},"content":" taskList.add(temp);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"p-xp"},"content":" storage.save(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"p-xp"},"content":" Ui.printAddedTask(temp, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":38}},{"path":"src/main/java/Remy/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import Remy.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import Remy.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"import Remy.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" Ui.printExitMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":18}},{"path":"src/main/java/Remy/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"import Remy.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import Remy.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import Remy.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" Ui.printList(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":17}},{"path":"src/main/java/Remy/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import Remy.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import Remy.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"import Remy.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"import Remy.ChatbotException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" public MarkCommand(String input) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" if (input.length() \u003c 6) throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" int index \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" if (index \u003e\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":" if (this.index \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"Your task list don\u0027t have this number lah.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":" taskList.get(index).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":" String content \u003d \"Done. You happy?\\n\" + taskList.get(index).toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":" storage.save(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"p-xp"},"content":" Ui.printShortSandwich(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":35}},{"path":"src/main/java/Remy/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"import Remy.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import Remy.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import Remy.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"import Remy.ChatbotException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"import Remy.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" private String taskName;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" public static final String COMMAND_WORD \u003d \"todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" public TodoCommand(String input) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" if (input.length() \u003c 6) throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" String taskName \u003d input.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" if (taskName.trim().length() \u003e 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":" Todo temp \u003d new Todo(this.taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":" taskList.add(temp);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":" storage.save(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"p-xp"},"content":" Ui.printAddedTask(temp, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":34}},{"path":"src/main/java/Remy/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import Remy.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import Remy.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"import Remy.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"import Remy.ChatbotException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" public UnmarkCommand(String input) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" if (input.length() \u003c 8) throw new ChatbotException(\"missing info lah.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" int index \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" if (index \u003e\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws ChatbotException {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":" if (this.index \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":" throw new ChatbotException(\"No such item lah.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"p-xp"},"content":" taskList.get(index).markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"p-xp"},"content":" String content \u003d \"Done. You happy?\\n\" + taskList.get(index).toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"p-xp"},"content":" storage.save(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"p-xp"},"content":" Ui.printShortSandwich(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":37}},{"path":"src/main/java/Remy/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":" protected String by;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" public Deadline(String description, String by) throws DateTimeParseException {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" // Accepts time String in yyyy-MM-dd format","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" // Stores as dd MMM yyyy format","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" LocalDate temp \u003d LocalDate.parse(by);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" this.by \u003d temp.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"p-xp":23}},{"path":"src/main/java/Remy/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":" protected String startTime;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":" protected String endTime;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" return \"[E]\" + super.toString() + \" (\" + this.startTime + \" to \" + this.endTime + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"p-xp":18}},{"path":"src/main/java/Remy/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import java.io.Serializable;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"public class Task implements Serializable {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" String status \u003d getStatusIcon();","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":" return \"[\" + status + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"p-xp":31}},{"path":"src/main/java/Remy/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"import java.io.Serializable;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":"public class TaskList implements Serializable {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":" public TaskList(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"p-xp"},"content":" this.tasks \u003d tasks.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"p-xp"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"p-xp"},"content":" * Returns Remy.Remy.task.Remy.Remy.task at index i","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"p-xp"},"content":" * @param i","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"p-xp"},"content":" * @return Remy.Remy.task.Remy.Remy.task at index i","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"p-xp"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"p-xp"},"content":" public Task get(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"p-xp"},"content":" return this.tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"p-xp"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"p-xp"},"content":" * @return length of Remy.Remy.task.Remy.Remy.task.TaskList","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"p-xp"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"p-xp"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"p-xp"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"p-xp"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"p-xp"},"content":" * Removes Remy.Remy.task.Remy.Remy.task at index i","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"p-xp"},"content":" * @param i","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"p-xp"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"p-xp"},"content":" public void remove(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"p-xp"},"content":" this.tasks.remove(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"p-xp"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"p-xp"},"content":" * Adds task to the end of Remy.Remy.task.Remy.Remy.task.TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"p-xp"},"content":" * @param task","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"p-xp"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"p-xp"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"p-xp"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"p-xp"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"p-xp"},"content":" String taskString \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"p-xp"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"p-xp"},"content":" taskString +\u003d (\" \" + (i + 1) + \". \" + this.tasks.get(i) + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"p-xp"},"content":" return taskString;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"p-xp":56}},{"path":"src/main/java/Remy/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"package Remy.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"p-xp"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"p-xp"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"p-xp"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"p-xp"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"p-xp"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"p-xp"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"p-xp":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"p-xp"},"content":"todo borrow book","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"p-xp"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"p-xp"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"p-xp"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"p-xp"},"content":"bye","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"p-xp":5}},{"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":"p-xp"},"content":"java -classpath ..\\bin Remy.Remy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"p-xp":1,"-":20}}] diff --git a/p-xp_ip_master/commits.json b/p-xp_ip_master/commits.json index 6b89b2f4..bd4f52e9 100644 --- a/p-xp_ip_master/commits.json +++ b/p-xp_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"p-xp":[{"date":"2023-08-24","commitResults":[{"hash":"f511d1c075decb275fafe2ff5832f904dfa53b00","isMergeCommit":false,"messageTitle":"feat: implement Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"8d543c6d4582f2d87f2cd829345ff2118aa3705b","isMergeCommit":false,"messageTitle":"feat: implement Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"4b72f755de056e1ae73c791d5fda73eb2675d22f","isMergeCommit":false,"messageTitle":"feat: implement Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"12a042e973582c8215737fd7040dd366a4732101","isMergeCommit":false,"messageTitle":"feat: implement Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":16}}}]},{"date":"2023-08-25","commitResults":[{"hash":"b5c7a1c40d3b2026a3d27b68bdab398c4d010cb6","isMergeCommit":false,"messageTitle":"feat: implement Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":31}}},{"hash":"ea64a6dca24b3e8d56c2d7f24094f1ab75ac508b","isMergeCommit":false,"messageTitle":"feat: implement TextUITesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"5786cd6bd88506f01bd8749f4fc885e51bbde5d1","isMergeCommit":false,"messageTitle":"feat: implement Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":50}}},{"hash":"e1413e2d377d155ae850860b01ffe7aa4b46dd92","isMergeCommit":false,"messageTitle":"feat: implement Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":5}}}]},{"date":"2023-08-31","commitResults":[{"hash":"92262d75af2a7aa4c87e6e77ed66404e696a4595","isMergeCommit":false,"messageTitle":"feat: implement Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":2}}},{"hash":"ce06e1c7a1e1f68f7811a2d00039954c5a42b0e0","isMergeCommit":true,"messageTitle":"Merge pull request #1 from p-xp/branch-Level-7","messageBody":"feat: implement Level-7","fileTypesAndContributionMap":{}},{"hash":"4aa175f5684dbdd726e1e64fd3e9b25dff04c3d1","isMergeCommit":false,"messageTitle":"add citations to Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"45fa30b40db2c8c0a1c5f825d350585b6a4f7715","isMergeCommit":true,"messageTitle":"Merge pull request #2 from p-xp/branch-Level-7","messageBody":"add citations to Level-7","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"p-xp":{"java":278,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":5}},"authorContributionVariance":{"p-xp":6761.9424},"authorDisplayNameMap":{"p-xp":"CS2103T-F11-2 PAN ..PING"}} +{"authorDailyContributionsMap":{"p-xp":[{"date":"2023-08-24","commitResults":[{"hash":"f511d1c075decb275fafe2ff5832f904dfa53b00","isMergeCommit":false,"messageTitle":"feat: implement Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"8d543c6d4582f2d87f2cd829345ff2118aa3705b","isMergeCommit":false,"messageTitle":"feat: implement Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"4b72f755de056e1ae73c791d5fda73eb2675d22f","isMergeCommit":false,"messageTitle":"feat: implement Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"12a042e973582c8215737fd7040dd366a4732101","isMergeCommit":false,"messageTitle":"feat: implement Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":16}}}]},{"date":"2023-08-25","commitResults":[{"hash":"b5c7a1c40d3b2026a3d27b68bdab398c4d010cb6","isMergeCommit":false,"messageTitle":"feat: implement Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":31}}},{"hash":"ea64a6dca24b3e8d56c2d7f24094f1ab75ac508b","isMergeCommit":false,"messageTitle":"feat: implement TextUITesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"5786cd6bd88506f01bd8749f4fc885e51bbde5d1","isMergeCommit":false,"messageTitle":"feat: implement Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":50}}},{"hash":"e1413e2d377d155ae850860b01ffe7aa4b46dd92","isMergeCommit":false,"messageTitle":"feat: implement Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":5}}}]},{"date":"2023-08-31","commitResults":[{"hash":"92262d75af2a7aa4c87e6e77ed66404e696a4595","isMergeCommit":false,"messageTitle":"feat: implement Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":2}}},{"hash":"ce06e1c7a1e1f68f7811a2d00039954c5a42b0e0","isMergeCommit":true,"messageTitle":"Merge pull request #1 from p-xp/branch-Level-7","messageBody":"feat: implement Level-7","fileTypesAndContributionMap":{}},{"hash":"4aa175f5684dbdd726e1e64fd3e9b25dff04c3d1","isMergeCommit":false,"messageTitle":"add citations to Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"45fa30b40db2c8c0a1c5f825d350585b6a4f7715","isMergeCommit":true,"messageTitle":"Merge pull request #2 from p-xp/branch-Level-7","messageBody":"add citations to Level-7","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"2e441919f7780486c3b1e72718232741cf20e744","isMergeCommit":false,"messageTitle":"feat: implement date parsing","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}},{"hash":"3c1838ca230de72d4f7ccf72c2bb6787164ebc7d","isMergeCommit":true,"messageTitle":"Merge pull request #3 from p-xp/branch-Level-8","messageBody":"feat: implement date parsing","fileTypesAndContributionMap":{}},{"hash":"9ee5eccf7f919771ea359d8d843a743a446e3bce","isMergeCommit":false,"messageTitle":"feat: implement OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":465,"deletions":116}}},{"hash":"1285352b9c3419f4434ea5b8c02b27727b2a7e73","isMergeCommit":false,"messageTitle":"delete unused code","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":97}}},{"hash":"3fade9c12fcf1184ddfd8a9f731b4c50eae2f701","isMergeCommit":true,"messageTitle":"Merge pull request #4 from p-xp/branch-A-MoreOOP","messageBody":"implement OOP","fileTypesAndContributionMap":{}},{"hash":"3dcd0a5de9dfe1c245fbc3e1d91012f331976fc8","isMergeCommit":false,"messageTitle":"feat: split into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":45},"bat":{"insertions":1,"deletions":1}}},{"hash":"0e69622cba8f07fc0aac01620c17648fc0020984","isMergeCommit":true,"messageTitle":"Merge pull request #5 from p-xp/branch-A-Packages","messageBody":"feat: split into packages","fileTypesAndContributionMap":{}},{"hash":"3eee5baed9d4b0b33819d9ab014bb7b143f45dee","isMergeCommit":true,"messageTitle":"Merge pull request #6 from p-xp/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"p-xp":{"java":622,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":5}},"authorContributionVariance":{"p-xp":50282.37},"authorDisplayNameMap":{"p-xp":"CS2103T-F11-2 PAN ..PING"}} diff --git a/pangyyen_ip_master/authorship.json b/pangyyen_ip_master/authorship.json index 777e9f9b..965b296f 100644 --- a/pangyyen_ip_master/authorship.json +++ b/pangyyen_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"# duke.main.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":"3. After that, locate the `src/main/java/duke.main.Duke.java` file, right-click it, and choose `Run duke.main.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"pangyyen":2,"-":22}},{"path":"src/main/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"D | 1 | return book | 2023-01-01","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"E | 0 | supernova | 2023-12-01 | 2023-01-10","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"D | 0 | return | 2023-10-01","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":3}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"public class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" private final String commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" private int taskIndex;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" private LocalDate deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" private LocalDate eventFromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" private LocalDate eventToDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" public Command(String commandType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" public Command(String commandType, String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" public Command(String commandType, int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" public Command(String commandType, String description, LocalDate deadlineDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" this.deadlineDate \u003d deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" public Command(String commandType, String description, LocalDate eventFromDate, LocalDate eventToDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" this.eventFromDate \u003d eventFromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" this.eventToDate \u003d eventToDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" public int getTaskIndex() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" return this.taskIndex;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":" public String getCommandType() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":" return this.commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" return this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":" public LocalDate getDeadlineDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" return this.deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":" public LocalDate getEventFromDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":" return this.eventFromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" public LocalDate getEventToDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":" return this.eventToDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"pangyyen":62}},{"path":"src/main/java/duke/commands/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import duke.exception.DeadlineException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"import duke.exception.EventException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" private static final DateTimeFormatter dataFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" public static Command parse(String userInput) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" String commandType \u003d getCommandType(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" return new Command(commandType);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" return new Command(commandType, getTaskIndex(userInput)); // taskIndex is -1 if invalid","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" return new Command(commandType, getDescription(userInput));","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" return new Command(commandType, getDescription(userInput), getDeadlineDate(userInput));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" LocalDate[] eventDates \u003d getEventDates(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" LocalDate eventFromDate \u003d eventDates[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" LocalDate eventToDate \u003d eventDates[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" return new Command(commandType, getDescription(userInput), eventFromDate, eventToDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":" * Parses the data string from the storage file and returns the corresponding task.","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":" * example of data string:","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":" * T | 1 | read book","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" * D | 0 | return book | June 6th","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" * E | 0 | project meeting | Aug 6th 2-4pm","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":" * file corruption not handled","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":" * @return The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":" public static Task parseFileString(String taskData) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" String[] parts \u003d taskData.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":" String type \u003d parts[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"pangyyen"},"content":" String isDone \u003d parts[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"pangyyen"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"pangyyen"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"pangyyen"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"pangyyen"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"pangyyen"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"pangyyen"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"pangyyen"},"content":" String by \u003d parts[3].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"pangyyen"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"pangyyen"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"pangyyen"},"content":" String from \u003d parts[3].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"pangyyen"},"content":" String to \u003d parts[4].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"pangyyen"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"pangyyen"},"content":" if (isDone.equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"pangyyen"},"content":" assert task !\u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"pangyyen"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"pangyyen"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"pangyyen"},"content":" * reads the task and returns the corresponding data string to be written to the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"pangyyen"},"content":" * @param task The task to be read.","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"pangyyen"},"content":" * @return String to be written to the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"pangyyen"},"content":" public static String readTaskToFile(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"pangyyen"},"content":" StringBuilder data \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"pangyyen"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"pangyyen"},"content":" data.append(\"T\");","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(task.isDone() ? \"1\" : \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(task.getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"pangyyen"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"pangyyen"},"content":" data.append(\"D\");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(task.isDone() ? \"1\" : \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(task.getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(((Deadline) task).getBy());","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"pangyyen"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"pangyyen"},"content":" data.append(\"E\");","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(task.isDone() ? \"1\" : \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(task.getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(((Event) task).getFrom()).append(\" | \").append(((Event) task).getTo());","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"pangyyen"},"content":" return data.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"pangyyen"},"content":" private static String getCommandType(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"pangyyen"},"content":" String[] parts \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"pangyyen"},"content":" return parts.length \u003e 0 ? parts[0] : \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"pangyyen"},"content":" public static String getDescription(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"pangyyen"},"content":" String[] parts \u003d userInput.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"pangyyen"},"content":" return parts.length \u003e 1 ? parts[1] : \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"pangyyen"},"content":" public static int getTaskIndex(String userInput) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"pangyyen"},"content":" String[] parts \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"pangyyen"},"content":" if (parts.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"pangyyen"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"pangyyen"},"content":" return Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"pangyyen"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"pangyyen"},"content":" throw new DukeException(\"Error, please enter a number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"pangyyen"},"content":" return -1;","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"pangyyen"},"content":" private static LocalDate getDeadlineDate(String userInput) throws DeadlineException {","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"pangyyen"},"content":" String[] parts \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"pangyyen"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"pangyyen"},"content":" throw new DeadlineException(\"detail: Description or deadline date is empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"pangyyen"},"content":" String description \u003d parts[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"pangyyen"},"content":" // Check if /by exists in the description","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"pangyyen"},"content":" if (!description.contains(\"/by\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"pangyyen"},"content":" throw new DeadlineException(\"detail: Description does not contain /by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"pangyyen"},"content":" String[] desArray \u003d description.split(\"/by\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"pangyyen"},"content":" String taskDescription \u003d desArray[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"pangyyen"},"content":" String deadlineDate \u003d desArray[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"pangyyen"},"content":" if (taskDescription.isEmpty() || deadlineDate.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"pangyyen"},"content":" throw new DeadlineException(\"detail: Description or deadline date is empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"pangyyen"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"pangyyen"},"content":" // Validate date format and return LocalDate object","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"pangyyen"},"content":" return LocalDate.parse(deadlineDate, dataFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"pangyyen"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"pangyyen"},"content":" throw new DeadlineException(\"detail: Invalid date format. Please use yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"pangyyen"},"content":" private static LocalDate[] getEventDates(String userInput) throws EventException {","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"pangyyen"},"content":" String[] parts \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"pangyyen"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"pangyyen"},"content":" throw new EventException(\"details: Description or event dates are empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"pangyyen"},"content":" String description \u003d parts[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"pangyyen"},"content":" // Check if both /from and /to exist in the description","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"pangyyen"},"content":" if (!description.contains(\"/from\") || !description.contains(\"/to\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"pangyyen"},"content":" throw new EventException(\"details: Description does not contain /from or /to\");","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"pangyyen"},"content":" String[] desArray \u003d description.split(\"/from\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"pangyyen"},"content":" String taskDescription \u003d desArray[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"pangyyen"},"content":" // Split the timing description further using /to","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"pangyyen"},"content":" String[] timingArr \u003d desArray[1].split(\"/to\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"pangyyen"},"content":" String eventFrom \u003d timingArr[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"pangyyen"},"content":" String eventTo \u003d timingArr[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"pangyyen"},"content":" if (taskDescription.isEmpty() || eventFrom.isEmpty() || eventTo.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"pangyyen"},"content":" throw new EventException(\"details: Description or event dates are empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"pangyyen"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"pangyyen"},"content":" LocalDate eventFromDate \u003d LocalDate.parse(eventFrom, dataFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"pangyyen"},"content":" LocalDate eventToDate \u003d LocalDate.parse(eventTo, dataFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"pangyyen"},"content":" return new LocalDate[]{eventFromDate, eventToDate};","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"pangyyen"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"pangyyen"},"content":" throw new EventException(\"details: Invalid date format. Please use yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"pangyyen":200}},{"path":"src/main/java/duke/exception/DeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"public class DeadlineException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":" public DeadlineException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":" super(\"The format for adding a deadline is incorrect. Please use: \u0027deadline [description] /by [yyyy-MM-dd]\u0027\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" public DeadlineException(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" super(\"The format for adding a deadline is incorrect. Please use: \u0027deadline [description] /by [yyyy-MM-dd]\u0027\"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" + \"\\n\" + s);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":12}},{"path":"src/main/java/duke/exception/DeleteException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"public class DeleteException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" public DeleteException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":" super(\"The format for deleting a task is incorrect. Please use: \u0027delete [index of task]\u0027\");","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" public DeleteException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" super(\"The format for deleting a task is incorrect. Please use: \u0027delete [index of task]\u0027\"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" + \"\\n\" + message);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":14}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":7}},{"path":"src/main/java/duke/exception/EventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"public class EventException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" public EventException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":" super(\"The format for adding an event is incorrect. Please use: \u0027event [description] /from [yyyy-MM-dd] /to [yyyy-MM-dd]\u0027\");","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" public EventException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" super(\"The format for adding an event is incorrect. Please use: \u0027event [description] /from [yyyy-MM-dd] /to [yyyy-MM-dd]\u0027\"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" + \"\\n\" + message);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":14}},{"path":"src/main/java/duke/exception/TodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"public class TodoException extends DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" public TodoException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":" super(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":9}},{"path":"src/main/java/duke/main/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.main;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"import duke.task.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.exception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"import duke.commands.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" * The main class that initiates the chatbot application","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" private final String FILE_PATH \u003d \"./src/main/data/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" private final Storage storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" * Initializes the Chatbot with an empty task list","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" public Duke() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" * Marks a task as done and provides user feedback","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" * @param taskIndex Index of the task to be marked as done, starts from \u00271\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" public void markTaskByBot(int taskIndex) throws DeleteException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" if (!taskList.isValidListIndex(taskIndex - 1)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" throw new DeleteException(\"Invalid Index of task!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" taskList.markTaskAsDone(taskIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" saveTasksToFile(this.taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(taskList.getTaskDetails(taskIndex - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":" * Marks a task as not done and provides user feedback","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" * @param taskIndex Index of the task to be marked as not done, starts from \u00271\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":" public void unmarkTaskByBot(int taskIndex) throws DeleteException {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" if (!taskList.isValidListIndex(taskIndex - 1)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":" throw new DeleteException(\"detail: Invalid Index of task!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" taskList.markTaskAsNotDone(taskIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" saveTasksToFile(this.taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(\" OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":" taskList.getTaskDetails(taskIndex - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":" * Deletes a task from the task list based on the provided input.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"pangyyen"},"content":" * @param taskIndex The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"pangyyen"},"content":" * @throws DeleteException If the input string is not numeric or if the task index is out of valid range.","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"pangyyen"},"content":" public void deleteTaskByBot(int taskIndex) throws DeleteException {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"pangyyen"},"content":" if (taskIndex \u003c 1 || taskIndex \u003e taskList.getTaskCount()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"pangyyen"},"content":" throw new DeleteException(\"Invalid Index of task!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(\" Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"pangyyen"},"content":" this.taskList.getTaskDetails(taskIndex - 1) +","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"pangyyen"},"content":" \"\\n Now you have \" + (taskList.getTaskCount() - 1) + \" tasks in the list.\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"pangyyen"},"content":" taskList.deleteTask(taskIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"pangyyen"},"content":" public void addTodo(String description) throws TodoException {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"pangyyen"},"content":" Task newTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"pangyyen"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"pangyyen"},"content":" throw new TodoException();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"pangyyen"},"content":" newTask \u003d new Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"pangyyen"},"content":" \" Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"pangyyen"},"content":" newTask +","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"pangyyen"},"content":" \"\\n Now you have \" + taskList.getTaskCount() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"pangyyen"},"content":" public void addDeadline(String description, LocalDate deadlineDate) throws DeadlineException {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"pangyyen"},"content":" if (description.isEmpty() || deadlineDate \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"Error in addDeadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"pangyyen"},"content":" throw new DeadlineException();","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"pangyyen"},"content":" Task newTask \u003d new Deadline(description, deadlineDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"pangyyen"},"content":" \" Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"pangyyen"},"content":" newTask +","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"pangyyen"},"content":" \"\\n Now you have \" + taskList.getTaskCount() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"pangyyen"},"content":" public void addEvent(String description, LocalDate eventFromDate, LocalDate eventToDate) throws EventException {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"pangyyen"},"content":" if (description.isEmpty() || eventFromDate \u003d\u003d null || eventToDate \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"pangyyen"},"content":" throw new EventException();","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"pangyyen"},"content":" Task newTask \u003d new Event(description, eventFromDate, eventToDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"pangyyen"},"content":" \" Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"pangyyen"},"content":" newTask +","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"pangyyen"},"content":" \"\\n Now you have \" + taskList.getTaskCount() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"pangyyen"},"content":" private void loadTasksFromFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"pangyyen"},"content":" for (Task taskData : storage.loadTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"pangyyen"},"content":" this.taskList.addTask(taskData);","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"pangyyen"},"content":" if (!this.taskList.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"pangyyen"},"content":" System.out.println(this.taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"pangyyen"},"content":" * Saves the tasks to the storage file","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"pangyyen"},"content":" private void saveTasksToFile(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"pangyyen"},"content":" this.storage.saveTasks(taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"pangyyen"},"content":" public boolean handleCommand(Command command) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"pangyyen"},"content":" String commandType \u003d command.getCommandType();","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"pangyyen"},"content":" String description \u003d command.getDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"pangyyen"},"content":" int taskIndex \u003d command.getTaskIndex();","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"pangyyen"},"content":" LocalDate deadlineDate \u003d command.getDeadlineDate();","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"pangyyen"},"content":" LocalDate eventFromDate \u003d command.getEventFromDate();","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"pangyyen"},"content":" LocalDate eventToDate \u003d command.getEventToDate();","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"pangyyen"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"pangyyen"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"pangyyen"},"content":" this.markTaskByBot(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"pangyyen"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"pangyyen"},"content":" this.unmarkTaskByBot(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"pangyyen"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"pangyyen"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"pangyyen"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(this.taskList.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"pangyyen"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"pangyyen"},"content":" this.addTodo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"pangyyen"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"pangyyen"},"content":" this.addDeadline(description, deadlineDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"pangyyen"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"pangyyen"},"content":" this.addEvent(description, eventFromDate, eventToDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"pangyyen"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"pangyyen"},"content":" this.deleteTaskByBot(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"pangyyen"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"pangyyen"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"pangyyen"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"pangyyen"},"content":" public void start() {","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"pangyyen"},"content":" Ui.showWelcomeMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"pangyyen"},"content":" String userInput;","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"pangyyen"},"content":" Command parsedCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"pangyyen"},"content":" this.loadTasksFromFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"pangyyen"},"content":" boolean isContinuing \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"pangyyen"},"content":" while (isContinuing) {","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"pangyyen"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"pangyyen"},"content":" userInput \u003d Ui.getUserInput();","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"pangyyen"},"content":" parsedCommand \u003d Parser.parse(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"pangyyen"},"content":" isContinuing \u003d handleCommand(parsedCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"pangyyen"},"content":" this.saveTasksToFile(this.taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"pangyyen"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"pangyyen"},"content":" Ui.showErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"pangyyen"},"content":" Ui.showGoodByeMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":195,"author":{"gitId":"pangyyen"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"pangyyen"},"content":" duke.start();","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"pangyyen":194,"-":4}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.commands.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" private final String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" try (Scanner scanner \u003d new Scanner(new File(filePath))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" task \u003d Parser.parseFileString(scanner.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(\"Data file not found, starting with an empty task list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" public void saveTasks(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" for (int i \u003d 0; i \u003c tasks.getTaskCount(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" writer.println(Parser.readTaskToFile(tasks.getTask(i)));","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" Ui.showErrorMessage(\"Error saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"pangyyen":43}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" public LocalDate getBy() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" return this.by;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" return \"[D]\" + super.toString() + \" (by: \"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":29}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":" protected LocalDate from;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" protected LocalDate to;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" this.from \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" this.to \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" public LocalDate getFrom() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" return this.from;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" public LocalDate getTo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" return this.to;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" return String.format(\"[E]%s (from: %s to: %s)\",","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" super.toString(),","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":37}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":" * Represents a generic task with a description and completion status","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" * Gets the status icon representing the completion status of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" * @return \"X\" if the task is done, \" \" (space) if not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" * Gets the description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" * @return The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" return (this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" * Marks the task as done by setting the completion status to true.","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":" * Marks the task as not done by setting the completion status to false.","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" return this.isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":" return String.format(\"[\" + this.getStatusIcon() + \"] \" + this.getDescription());","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":60}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" * Represents a list of tasks and provides methods to manipulate them","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" private int taskCount;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" * Initializes a dynamic empty task list with a maximum capacity.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" public TaskList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" taskCount \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" * Checks if the given task index is valid within the task list.","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" * @param taskListIndex The index of the task to be checked.","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" * @return True if the task index is valid, otherwise false.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" public boolean isValidListIndex(int taskListIndex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" return (taskListIndex \u003e\u003d 0 \u0026\u0026 taskListIndex \u003c taskCount);","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" * Retrieves details of a specific task within the task list.","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" * @param taskListIndex The index of the task in the task list.","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" * @return Details of the task as a formatted string, or null if the index is invalid.","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" public String getTaskDetails(int taskListIndex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" if (isValidListIndex(taskListIndex)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" Task task \u003d tasks.get(taskListIndex);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" return task.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"Invalid Index of task!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" return null;","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":" * Retrieves a specific task within the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" * @param taskListIndex The index of the task in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" * @return The task, or null if the index is invalid.","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":" public Task getTask(int taskListIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":" if (isValidListIndex(taskListIndex)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":" return tasks.get(taskListIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"Invalid Index of task!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"pangyyen"},"content":" * Gets the current count of tasks in the task list.","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"pangyyen"},"content":" * @return The count of tasks in the task list.","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"pangyyen"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"pangyyen"},"content":" return this.taskCount;","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"pangyyen"},"content":" * Adds a task to the task list if space is available.","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"pangyyen"},"content":" * @param task The task to be added to the task list.","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"pangyyen"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"pangyyen"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"pangyyen"},"content":" this.taskCount++;","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"pangyyen"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"pangyyen"},"content":" * @param taskListIndex The index of the task to be deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"pangyyen"},"content":" public void deleteTask(int taskListIndex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"pangyyen"},"content":" this.tasks.remove(taskListIndex);","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"pangyyen"},"content":" this.taskCount--;","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"pangyyen"},"content":" * Marks a task in the task list as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"pangyyen"},"content":" * @param taskListIndex The index of the task to be marked as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"pangyyen"},"content":" public void markTaskAsDone(int taskListIndex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"pangyyen"},"content":" if (isValidListIndex(taskListIndex)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"pangyyen"},"content":" this.tasks.get(taskListIndex).markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"pangyyen"},"content":" * Marks a task in the task list as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"pangyyen"},"content":" * @param taskListIndex The index of the task to be marked as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"pangyyen"},"content":" public void markTaskAsNotDone(int taskListIndex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"pangyyen"},"content":" if (isValidListIndex(taskListIndex)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"pangyyen"},"content":" this.tasks.get(taskListIndex).markAsNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"pangyyen"},"content":" * Displays the tasks in the task list with their details.","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"pangyyen"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"pangyyen"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"pangyyen"},"content":" if (taskCount \u003d\u003d 0) {","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"pangyyen"},"content":" return \"Horray!! No tasks in the task list!\";","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"pangyyen"},"content":" StringBuilder taskListString \u003d new StringBuilder(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"pangyyen"},"content":" for (int i \u003d 0; i \u003c taskCount; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"pangyyen"},"content":" taskListString.append((i + 1)).append(\". \").append(this.getTaskDetails(i)).append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"pangyyen"},"content":" return taskListString.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"pangyyen"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"pangyyen"},"content":" return (taskCount \u003d\u003d 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":134}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":14}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" private static final Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" public static void showWelcomeMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" System.out.println(\" Hello! I\u0027m duke.main.Duke\\n What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" public static void showGoodByeMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" public static void showMessage(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" public static void showErrorMessage(String error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" showMessage(\"☹ OOPS!!! \" + error);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" public static String getUserInput() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"pangyyen":33}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"event student life fair /from Mon /to Sun","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"todo eat dinner","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"delete 4","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"delete 5","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"delete","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":"deadline go fairprice","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":"deadlien go fairprice /by","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":"deadline go fairprice /by","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":"event go fairprice","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":"event go fairprice /to /ftrom","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":"event go fairprice /to sun /from mon","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":"event go fair price /from sun","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":"event go fair price /to sun","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":25}},{"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":"pangyyen"},"content":"java -classpath ..\\bin duke.main.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"pangyyen":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"# duke.main.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":"3. After that, locate the `src/main/java/duke.main.Duke.java` file, right-click it, and choose `Run duke.main.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"pangyyen":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" mainClass.set(\"duke.main.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"pangyyen":1,"-":41}},{"path":"src/main/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"D | 1 | return book | 2023-01-01","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"E | 0 | supernova | 2023-12-01 | 2023-01-10","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"D | 0 | return | 2023-10-01","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"T | 0 | borrow","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":4}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"public class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" private final String commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" private int taskIndex;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" private LocalDate deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" private LocalDate eventFromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" private LocalDate eventToDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" public Command(String commandType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" public Command(String commandType, String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" public Command(String commandType, int taskIndex) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" public Command(String commandType, String description, LocalDate deadlineDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" this.deadlineDate \u003d deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" public Command(String commandType, String description, LocalDate eventFromDate, LocalDate eventToDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" this.eventFromDate \u003d eventFromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" this.eventToDate \u003d eventToDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" public int getTaskIndex() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" return this.taskIndex;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":" public String getCommandType() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":" return this.commandType;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" return this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":" public LocalDate getDeadlineDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" return this.deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":" public LocalDate getEventFromDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":" return this.eventFromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" public LocalDate getEventToDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":" return this.eventToDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"pangyyen":62}},{"path":"src/main/java/duke/commands/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import duke.exception.DeadlineException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"import duke.exception.EventException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" private static final DateTimeFormatter dataFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" public static Command parse(String userInput) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" String commandType \u003d getCommandType(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" return new Command(commandType);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" return new Command(commandType, getTaskIndex(userInput)); // taskIndex is -1 if invalid","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" return new Command(commandType, getDescription(userInput));","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" return new Command(commandType, getDescription(userInput), getDeadlineDate(userInput));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" LocalDate[] eventDates \u003d getEventDates(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" LocalDate eventFromDate \u003d eventDates[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" LocalDate eventToDate \u003d eventDates[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" return new Command(commandType, getDescription(userInput), eventFromDate, eventToDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":" * Parses the data string from the storage file and returns the corresponding task.","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":" * example of data string:","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":" * T | 1 | read book","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" * D | 0 | return book | June 6th","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" * E | 0 | project meeting | Aug 6th 2-4pm","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":" * file corruption not handled","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":" * @return The completion status of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":" public static Task parseFileString(String taskData) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" String[] parts \u003d taskData.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":" String type \u003d parts[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"pangyyen"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"pangyyen"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"pangyyen"},"content":" String isDone \u003d parts[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"pangyyen"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"pangyyen"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"pangyyen"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"pangyyen"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"pangyyen"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"pangyyen"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"pangyyen"},"content":" String by \u003d parts[3].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"pangyyen"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"pangyyen"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"pangyyen"},"content":" String from \u003d parts[3].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"pangyyen"},"content":" String to \u003d parts[4].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"pangyyen"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"pangyyen"},"content":" if (isDone.equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"pangyyen"},"content":" assert task !\u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"pangyyen"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"pangyyen"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"pangyyen"},"content":" * reads the task and returns the corresponding data string to be written to the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"pangyyen"},"content":" * @param task The task to be read.","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"pangyyen"},"content":" * @return String to be written to the storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"pangyyen"},"content":" public static String readTaskToFile(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"pangyyen"},"content":" StringBuilder data \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"pangyyen"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"pangyyen"},"content":" data.append(\"T\");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(task.isDone() ? \"1\" : \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(task.getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"pangyyen"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"pangyyen"},"content":" data.append(\"D\");","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(task.isDone() ? \"1\" : \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(task.getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(((Deadline) task).getBy());","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"pangyyen"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"pangyyen"},"content":" data.append(\"E\");","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(task.isDone() ? \"1\" : \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(task.getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"pangyyen"},"content":" data.append(\" | \").append(((Event) task).getFrom()).append(\" | \").append(((Event) task).getTo());","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"pangyyen"},"content":" return data.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"pangyyen"},"content":" private static String getCommandType(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"pangyyen"},"content":" String[] parts \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"pangyyen"},"content":" return parts.length \u003e 0 ? parts[0] : \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"pangyyen"},"content":" public static String getDescription(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"pangyyen"},"content":" String[] parts \u003d userInput.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"pangyyen"},"content":" return parts.length \u003e 1 ? parts[1] : \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"pangyyen"},"content":" public static int getTaskIndex(String userInput) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"pangyyen"},"content":" String[] parts \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"pangyyen"},"content":" if (parts.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"pangyyen"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"pangyyen"},"content":" return Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"pangyyen"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"pangyyen"},"content":" throw new DukeException(\"Error, please enter a number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"pangyyen"},"content":" return -1;","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"pangyyen"},"content":" private static LocalDate getDeadlineDate(String userInput) throws DeadlineException {","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"pangyyen"},"content":" String[] parts \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"pangyyen"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"pangyyen"},"content":" throw new DeadlineException(\"detail: Description or deadline date is empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"pangyyen"},"content":" String description \u003d parts[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"pangyyen"},"content":" // Check if /by exists in the description","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"pangyyen"},"content":" if (!description.contains(\"/by\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"pangyyen"},"content":" throw new DeadlineException(\"detail: Description does not contain /by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"pangyyen"},"content":" String[] desArray \u003d description.split(\"/by\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"pangyyen"},"content":" String taskDescription \u003d desArray[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"pangyyen"},"content":" String deadlineDate \u003d desArray[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"pangyyen"},"content":" if (taskDescription.isEmpty() || deadlineDate.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"pangyyen"},"content":" throw new DeadlineException(\"detail: Description or deadline date is empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"pangyyen"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"pangyyen"},"content":" // Validate date format and return LocalDate object","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"pangyyen"},"content":" return LocalDate.parse(deadlineDate, dataFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"pangyyen"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"pangyyen"},"content":" throw new DeadlineException(\"detail: Invalid date format. Please use yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"pangyyen"},"content":" private static LocalDate[] getEventDates(String userInput) throws EventException {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"pangyyen"},"content":" String[] parts \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"pangyyen"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"pangyyen"},"content":" throw new EventException(\"details: Description or event dates are empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"pangyyen"},"content":" String description \u003d parts[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"pangyyen"},"content":" // Check if both /from and /to exist in the description","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"pangyyen"},"content":" if (!description.contains(\"/from\") || !description.contains(\"/to\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"pangyyen"},"content":" throw new EventException(\"details: Description does not contain /from or /to\");","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"pangyyen"},"content":" String[] desArray \u003d description.split(\"/from\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"pangyyen"},"content":" String taskDescription \u003d desArray[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"pangyyen"},"content":" // Split the timing description further using /to","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"pangyyen"},"content":" String[] timingArr \u003d desArray[1].split(\"/to\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"pangyyen"},"content":" String eventFrom \u003d timingArr[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"pangyyen"},"content":" String eventTo \u003d timingArr[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"pangyyen"},"content":" if (taskDescription.isEmpty() || eventFrom.isEmpty() || eventTo.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"pangyyen"},"content":" throw new EventException(\"details: Description or event dates are empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"pangyyen"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"pangyyen"},"content":" LocalDate eventFromDate \u003d LocalDate.parse(eventFrom, dataFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"pangyyen"},"content":" LocalDate eventToDate \u003d LocalDate.parse(eventTo, dataFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"pangyyen"},"content":" return new LocalDate[]{eventFromDate, eventToDate};","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"pangyyen"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"pangyyen"},"content":" throw new EventException(\"details: Invalid date format. Please use yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"pangyyen":203}},{"path":"src/main/java/duke/exception/DeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"public class DeadlineException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":" public DeadlineException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":" super(\"The format for adding a deadline is incorrect. Please use: \u0027deadline [description] /by [yyyy-MM-dd]\u0027\");","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" public DeadlineException(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" super(\"The format for adding a deadline is incorrect. Please use: \u0027deadline [description] /by [yyyy-MM-dd]\u0027\"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" + \"\\n\" + s);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":12}},{"path":"src/main/java/duke/exception/DeleteException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"public class DeleteException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" public DeleteException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":" super(\"The format for deleting a task is incorrect. Please use: \u0027delete [index of task]\u0027\");","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" public DeleteException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" super(\"The format for deleting a task is incorrect. Please use: \u0027delete [index of task]\u0027\"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" + \"\\n\" + message);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":14}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":7}},{"path":"src/main/java/duke/exception/EventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"public class EventException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" public EventException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":" super(\"The format for adding an event is incorrect. Please use: \u0027event [description] /from [yyyy-MM-dd] /to [yyyy-MM-dd]\u0027\");","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" public EventException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" super(\"The format for adding an event is incorrect. Please use: \u0027event [description] /from [yyyy-MM-dd] /to [yyyy-MM-dd]\u0027\"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" + \"\\n\" + message);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":14}},{"path":"src/main/java/duke/exception/TodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"public class TodoException extends DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" public TodoException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":" super(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":9}},{"path":"src/main/java/duke/main/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.main;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"import duke.task.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.exception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"import duke.commands.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" * The main class that initiates the chatbot application","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" private final String FILE_PATH \u003d \"./src/main/data/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" private final Storage storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" * Initializes the Chatbot with an empty task list","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" public Duke() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" * Marks a task as done and provides user feedback","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" * @param taskIndex Index of the task to be marked as done, starts from \u00271\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" public void markTaskByBot(int taskIndex) throws DeleteException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" if (!taskList.isValidListIndex(taskIndex - 1)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" throw new DeleteException(\"Invalid Index of task!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" taskList.markTaskAsDone(taskIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" saveTasksToFile(this.taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(taskList.getTaskDetails(taskIndex - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":" * Marks a task as not done and provides user feedback","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" * @param taskIndex Index of the task to be marked as not done, starts from \u00271\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":" public void unmarkTaskByBot(int taskIndex) throws DeleteException {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" if (!taskList.isValidListIndex(taskIndex - 1)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":" throw new DeleteException(\"detail: Invalid Index of task!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" taskList.markTaskAsNotDone(taskIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" saveTasksToFile(this.taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(\" OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":" taskList.getTaskDetails(taskIndex - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":" * Deletes a task from the task list based on the provided input.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"pangyyen"},"content":" * @param taskIndex The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"pangyyen"},"content":" * @throws DeleteException If the input string is not numeric or if the task index is out of valid range.","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"pangyyen"},"content":" public void deleteTaskByBot(int taskIndex) throws DeleteException {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"pangyyen"},"content":" if (taskIndex \u003c 1 || taskIndex \u003e taskList.getTaskCount()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"pangyyen"},"content":" throw new DeleteException(\"Invalid Index of task!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(\" Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"pangyyen"},"content":" this.taskList.getTaskDetails(taskIndex - 1) +","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"pangyyen"},"content":" \"\\n Now you have \" + (taskList.getTaskCount() - 1) + \" tasks in the list.\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"pangyyen"},"content":" taskList.deleteTask(taskIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"pangyyen"},"content":" public void addTodo(String description) throws TodoException {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"pangyyen"},"content":" Task newTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"pangyyen"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"pangyyen"},"content":" throw new TodoException();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"pangyyen"},"content":" newTask \u003d new Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"pangyyen"},"content":" \" Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"pangyyen"},"content":" newTask +","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"pangyyen"},"content":" \"\\n Now you have \" + taskList.getTaskCount() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"pangyyen"},"content":" public void addDeadline(String description, LocalDate deadlineDate) throws DeadlineException {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"pangyyen"},"content":" if (description.isEmpty() || deadlineDate \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"Error in addDeadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"pangyyen"},"content":" throw new DeadlineException();","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"pangyyen"},"content":" Task newTask \u003d new Deadline(description, deadlineDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"pangyyen"},"content":" \" Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"pangyyen"},"content":" newTask +","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"pangyyen"},"content":" \"\\n Now you have \" + taskList.getTaskCount() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"pangyyen"},"content":" public void addEvent(String description, LocalDate eventFromDate, LocalDate eventToDate) throws EventException {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"pangyyen"},"content":" if (description.isEmpty() || eventFromDate \u003d\u003d null || eventToDate \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"pangyyen"},"content":" throw new EventException();","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"pangyyen"},"content":" Task newTask \u003d new Event(description, eventFromDate, eventToDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"pangyyen"},"content":" \" Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"pangyyen"},"content":" newTask +","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"pangyyen"},"content":" \"\\n Now you have \" + taskList.getTaskCount() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"pangyyen"},"content":" private void loadTasksFromFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"pangyyen"},"content":" for (Task taskData : storage.loadTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"pangyyen"},"content":" this.taskList.addTask(taskData);","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"pangyyen"},"content":" if (!this.taskList.isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"pangyyen"},"content":" System.out.println(this.taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"pangyyen"},"content":" * Saves the tasks to the storage file","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"pangyyen"},"content":" private void saveTasksToFile(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"pangyyen"},"content":" this.storage.saveTasks(taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"pangyyen"},"content":" public boolean handleCommand(Command command) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"pangyyen"},"content":" String commandType \u003d command.getCommandType();","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"pangyyen"},"content":" String description \u003d command.getDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"pangyyen"},"content":" int taskIndex \u003d command.getTaskIndex();","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"pangyyen"},"content":" LocalDate deadlineDate \u003d command.getDeadlineDate();","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"pangyyen"},"content":" LocalDate eventFromDate \u003d command.getEventFromDate();","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"pangyyen"},"content":" LocalDate eventToDate \u003d command.getEventToDate();","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"pangyyen"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"pangyyen"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"pangyyen"},"content":" this.markTaskByBot(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"pangyyen"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"pangyyen"},"content":" this.unmarkTaskByBot(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"pangyyen"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"pangyyen"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"pangyyen"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(this.taskList.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"pangyyen"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"pangyyen"},"content":" this.addTodo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"pangyyen"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"pangyyen"},"content":" this.addDeadline(description, deadlineDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"pangyyen"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"pangyyen"},"content":" this.addEvent(description, eventFromDate, eventToDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"pangyyen"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"pangyyen"},"content":" this.deleteTaskByBot(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"pangyyen"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"pangyyen"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"pangyyen"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"pangyyen"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"pangyyen"},"content":" public void start() {","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"pangyyen"},"content":" Ui.showWelcomeMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"pangyyen"},"content":" String userInput;","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"pangyyen"},"content":" Command parsedCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"pangyyen"},"content":" this.loadTasksFromFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"pangyyen"},"content":" boolean isContinuing \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"pangyyen"},"content":" while (isContinuing) {","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"pangyyen"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"pangyyen"},"content":" userInput \u003d Ui.getUserInput();","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"pangyyen"},"content":" parsedCommand \u003d Parser.parse(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"pangyyen"},"content":" isContinuing \u003d handleCommand(parsedCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"pangyyen"},"content":" this.saveTasksToFile(this.taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"pangyyen"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"pangyyen"},"content":" Ui.showErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"pangyyen"},"content":" Ui.showGoodByeMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":195,"author":{"gitId":"pangyyen"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"pangyyen"},"content":" duke.start();","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"pangyyen":194,"-":4}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.commands.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" private final String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" try (Scanner scanner \u003d new Scanner(new File(filePath))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" task \u003d Parser.parseFileString(scanner.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(\"Data file not found, starting with an empty task list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" public void saveTasks(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" for (int i \u003d 0; i \u003c tasks.getTaskCount(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" writer.println(Parser.readTaskToFile(tasks.getTask(i)));","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" Ui.showErrorMessage(\"Error saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"pangyyen":43}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" public LocalDate getBy() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" return this.by;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" return \"[D]\" + super.toString() + \" (by: \"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":29}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":" protected LocalDate from;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" protected LocalDate to;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" this.from \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" this.to \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" public LocalDate getFrom() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" return this.from;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" public LocalDate getTo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" return this.to;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" return String.format(\"[E]%s (from: %s to: %s)\",","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" super.toString(),","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")),","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":37}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":" * Represents a generic task with a description and completion status","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" * Gets the status icon representing the completion status of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" * @return \"X\" if the task is done, \" \" (space) if not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" * Gets the description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" * @return The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" return (this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" * Marks the task as done by setting the completion status to true.","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":" * Marks the task as not done by setting the completion status to false.","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" return this.isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":" return String.format(\"[\" + this.getStatusIcon() + \"] \" + this.getDescription());","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":60}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" * Represents a list of tasks and provides methods to manipulate them","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" private int taskCount;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" * Initializes a dynamic empty task list with a maximum capacity.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" public TaskList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" taskCount \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" * Checks if the given task index is valid within the task list.","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" * @param taskListIndex The index of the task to be checked.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" * @return True if the task index is valid, otherwise false.","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" public boolean isValidListIndex(int taskListIndex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" return (taskListIndex \u003e\u003d 0 \u0026\u0026 taskListIndex \u003c taskCount);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" * Retrieves details of a specific task within the task list.","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" * @param taskListIndex The index of the task in the task list.","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" * @return Details of the task as a formatted string, or null if the index is invalid.","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" public String getTaskDetails(int taskListIndex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" if (isValidListIndex(taskListIndex)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" Task task \u003d tasks.get(taskListIndex);","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":" return task.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(\"Invalid Index of task!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":" return null;","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":" * Retrieves a specific task within the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" * @param taskListIndex The index of the task in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":" * @return The task, or null if the index is invalid.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":" public Task getTask(int taskListIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":" if (isValidListIndex(taskListIndex)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":" return tasks.get(taskListIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":" Ui.showMessage(\"Invalid Index of task!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"pangyyen"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"pangyyen"},"content":" * Gets the current count of tasks in the task list.","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"pangyyen"},"content":" * @return The count of tasks in the task list.","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"pangyyen"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"pangyyen"},"content":" return this.taskCount;","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"pangyyen"},"content":" * Adds a task to the task list if space is available.","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"pangyyen"},"content":" * @param task The task to be added to the task list.","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"pangyyen"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"pangyyen"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"pangyyen"},"content":" this.taskCount++;","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"pangyyen"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"pangyyen"},"content":" * @param taskListIndex The index of the task to be deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"pangyyen"},"content":" public void deleteTask(int taskListIndex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"pangyyen"},"content":" this.tasks.remove(taskListIndex);","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"pangyyen"},"content":" this.taskCount--;","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"pangyyen"},"content":" * Marks a task in the task list as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"pangyyen"},"content":" * @param taskListIndex The index of the task to be marked as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"pangyyen"},"content":" public void markTaskAsDone(int taskListIndex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"pangyyen"},"content":" if (isValidListIndex(taskListIndex)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"pangyyen"},"content":" this.tasks.get(taskListIndex).markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"pangyyen"},"content":" * Marks a task in the task list as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"pangyyen"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"pangyyen"},"content":" * @param taskListIndex The index of the task to be marked as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"pangyyen"},"content":" public void markTaskAsNotDone(int taskListIndex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"pangyyen"},"content":" if (isValidListIndex(taskListIndex)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"pangyyen"},"content":" this.tasks.get(taskListIndex).markAsNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"pangyyen"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"pangyyen"},"content":" * Displays the tasks in the task list with their details.","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"pangyyen"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"pangyyen"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"pangyyen"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"pangyyen"},"content":" if (taskCount \u003d\u003d 0) {","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"pangyyen"},"content":" return \"Horray!! No tasks in the task list!\";","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"pangyyen"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"pangyyen"},"content":" StringBuilder taskListString \u003d new StringBuilder(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"pangyyen"},"content":" for (int i \u003d 0; i \u003c taskCount; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"pangyyen"},"content":" taskListString.append((i + 1)).append(\". \").append(this.getTaskDetails(i)).append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"pangyyen"},"content":" return taskListString.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"pangyyen"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"pangyyen"},"content":" return (taskCount \u003d\u003d 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":135}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":12}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":" private static final Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" public static void showWelcomeMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" System.out.println(\" Hello! I\u0027m duke.main.Duke\\n What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" public static void showGoodByeMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" public static void showMessage(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" public static void showErrorMessage(String error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" showMessage(\"☹ OOPS!!! \" + error);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" public static String getUserInput() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"pangyyen":33}},{"path":"src/test/data/dukeTest.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":2}},{"path":"src/test/java/commands/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import duke.commands.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import duke.exception.DeadlineException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"import duke.exception.EventException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" public void parseTodoTest() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" String userInput \u003d \"todo Sample\";","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" Command command \u003d Parser.parse(userInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" assertEquals(command.getCommandType(), \"todo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"Sample\", command.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" public void parseDeadlineTest() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" String userInput \u003d \"deadline Sample /by 2023-12-31\";","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" Command command \u003d Parser.parse(userInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" assertEquals(command.getCommandType(), \"deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"Sample\", command.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" assertEquals(LocalDate.parse(\"2023-12-31\"), command.getDeadlineDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" public void parseEventTest() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" String userInput \u003d \"event Sample /from 2023-12-31 /to 2024-01-01\";","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" Command command \u003d Parser.parse(userInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":" assertEquals(command.getCommandType(), \"event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"Sample\", command.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":" assertEquals(LocalDate.parse(\"2023-12-31\"), command.getEventFromDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":" assertEquals(LocalDate.parse(\"2024-01-01\"), command.getEventToDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":" public void parseInvalidCommandTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" String userInput \u003d \"invalidCommand\";","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" assertThrows(DukeException.class, () -\u003e Parser.parse(userInput));","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":" public void parseFileStringTodoTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":" String taskData \u003d \"T | 1 | Sample Todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" Task task \u003d Parser.parseFileString(taskData);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"pangyyen"},"content":" assertTrue(task instanceof Todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"Sample Todo\", task.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"pangyyen"},"content":" assertTrue(task.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"pangyyen"},"content":" public void parseFileStringDeadlineTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"pangyyen"},"content":" String taskData \u003d \"D | 0 | Sample Deadline | 2023-12-31\";","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"pangyyen"},"content":" Task task \u003d Parser.parseFileString(taskData);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"pangyyen"},"content":" assertTrue(task instanceof Deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"Sample Deadline\", task.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":74}},{"path":"src/test/java/duke/commands/CommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"public class CommandTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" public void constructorWithTypeOnlyTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" Command command \u003d new Command(\"bye\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"bye\", command.getCommandType());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" assertEquals(0, command.getTaskIndex());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getDeadlineDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getEventFromDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getEventToDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" public void constructorWithTypeAndDescriptionTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" Command command \u003d new Command(\"todo\", \"Sample Todo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"todo\", command.getCommandType());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"Sample Todo\", command.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" assertEquals(0, command.getTaskIndex());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getDeadlineDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getEventFromDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getEventToDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" public void constructorWithTypeAndTaskIndexTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" Command command \u003d new Command(\"delete\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"delete\", command.getCommandType());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" assertEquals(2, command.getTaskIndex());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getDeadlineDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getEventFromDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getEventToDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":" public void constructorWithTypeDescriptionAndDeadlineDateTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":" LocalDate deadlineDate \u003d LocalDate.parse(\"2023-12-31\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" Command command \u003d new Command(\"deadline\", \"Sample Deadline\", deadlineDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"deadline\", command.getCommandType());","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"Sample Deadline\", command.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":" assertEquals(0, command.getTaskIndex());","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" assertEquals(deadlineDate, command.getDeadlineDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getEventFromDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getEventToDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":" public void constructorWithTypeDescriptionAndEventDatesTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" LocalDate eventFromDate \u003d LocalDate.parse(\"2023-12-31\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":" LocalDate eventToDate \u003d LocalDate.parse(\"2024-01-01\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"pangyyen"},"content":" Command command \u003d new Command(\"event\", \"Sample Event\", eventFromDate, eventToDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"event\", command.getCommandType());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"Sample Event\", command.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"pangyyen"},"content":" assertEquals(0, command.getTaskIndex());","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"pangyyen"},"content":" assertNull(command.getDeadlineDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"pangyyen"},"content":" assertEquals(eventFromDate, command.getEventFromDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"pangyyen"},"content":" assertEquals(eventToDate, command.getEventToDate());","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":69}},{"path":"src/test/java/duke/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" void getByTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" LocalDate date \u003d LocalDate.now();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" Deadline deadline \u003d new Deadline(\"Sample Deadline\", date);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" assertEquals(date, deadline.getBy());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" void testToStringTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" LocalDate date \u003d LocalDate.now();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" Deadline deadline \u003d new Deadline(\"Sample Deadline\", date);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"[D][ ] Sample Deadline (by: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" + date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" + \")\", deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"[D][X] Sample Deadline (by: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" + date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" + \")\", deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":32}},{"path":"src/test/java/duke/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"class EventTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" void getFromAndToTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" LocalDate fromDate \u003d LocalDate.now();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" LocalDate toDate \u003d fromDate.plusDays(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" Event event \u003d new Event(\"Sample Event\", fromDate, toDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" assertEquals(fromDate, event.getFrom());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" assertEquals(toDate, event.getTo());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" void toStringTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" LocalDate fromDate \u003d LocalDate.now();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" LocalDate toDate \u003d fromDate.plusDays(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" Event event \u003d new Event(\"Sample Event\", fromDate, toDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"[E][ ] Sample Event (from: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" + fromDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" + \" to: \" + toDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\", event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" event.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"[E][X] Sample Event (from: \"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" + fromDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" + \" to: \" + toDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\", event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":38}},{"path":"src/test/java/duke/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"import static org.junit.jupiter.api.Assertions.assertSame;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" public void setUp() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" void getTaskDetails() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" Task task1 \u003d new Task(\"Sample Task 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" Task task2 \u003d new Task(\"Sample Task 2\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(task1);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(task2);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"[ ] Sample Task 1\", taskList.getTaskDetails(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"[ ] Sample Task 2\", taskList.getTaskDetails(1));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" void addTaskTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" assertEquals(1, taskList.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" assertSame(taskList.getTask(0), task);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" void deleteTaskTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":" assertEquals(1, taskList.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":" taskList.deleteTask(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" assertEquals(0, taskList.getTaskCount());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":" assertNull(taskList.getTask(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" void markTaskAsDoneTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pangyyen"},"content":" assertFalse(task.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pangyyen"},"content":" taskList.markTaskAsDone(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pangyyen"},"content":" assertTrue(task.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"pangyyen"},"content":" void markTaskAsNotDoneTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"pangyyen"},"content":" Task task \u003d new Task(\"Sample Task\", true);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"pangyyen"},"content":" assertTrue(task.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"pangyyen"},"content":" taskList.markTaskAsNotDone(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"pangyyen"},"content":" assertFalse(task.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"pangyyen"},"content":" public void testIsEmpty() {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"pangyyen"},"content":" assertTrue(taskList.isEmpty());","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"pangyyen"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"pangyyen"},"content":" assertFalse(taskList.isEmpty());","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"pangyyen"},"content":" void toStringTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"Horray!! No tasks in the task list!\", taskList.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"pangyyen"},"content":" Task task1 \u003d new Task(\"Sample Task 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"pangyyen"},"content":" Task task2 \u003d new Task(\"Sample Task 2\");","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(task1);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"pangyyen"},"content":" taskList.addTask(task2);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"pangyyen"},"content":" String expected \u003d \"Here are the tasks in your list:\\n1. [ ] Sample Task 1\\n2. [ ] Sample Task 2\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"pangyyen"},"content":" assertEquals(expected, taskList.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":93}},{"path":"src/test/java/duke/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"class TaskTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" void getStatusIconTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" Task task1 \u003d new Task(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" assertFalse(task1.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" assertEquals(\" \", task1.getStatusIcon());","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" Task task2 \u003d new Task(\"Completed Task\", true);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" assertTrue(task2.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"X\", task2.getStatusIcon());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":" void getDescriptionTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":" Task task1 \u003d new Task(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"Sample Task\", task1.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":" Task task2 \u003d new Task(\"Another Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"Another Task\", task2.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pangyyen"},"content":" void markAsDoneTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pangyyen"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pangyyen"},"content":" assertFalse(task.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pangyyen"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pangyyen"},"content":" assertTrue(task.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pangyyen"},"content":" void markAsNotDoneTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pangyyen"},"content":" Task task \u003d new Task(\"Sample Task\", true);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pangyyen"},"content":" assertTrue(task.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pangyyen"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pangyyen"},"content":" assertFalse(task.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pangyyen"},"content":" public void toStringTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pangyyen"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"[ ] Sample Task\", task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pangyyen"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"[X] Sample Task\", task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":55}},{"path":"src/test/java/duke/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"class TodoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" void toStringTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" Todo todo \u003d new Todo(\"Sample Todo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"[T][ ] Sample Todo\", todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" assertEquals(\"[T][X] Sample Todo\", todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":17}},{"path":"src/test/java/duke/ui/UiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"package duke.ui; //same package as the class being tested","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"public class UiTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":" public void dummyTest(){","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":" public void anotherDummyTest(){","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":" assertEquals(4, 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pangyyen":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"pangyyen"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"pangyyen"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"pangyyen"},"content":"event student life fair /from Mon /to Sun","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pangyyen"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pangyyen"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pangyyen"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pangyyen"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pangyyen"},"content":"todo eat dinner","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pangyyen"},"content":"delete 4","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pangyyen"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pangyyen"},"content":"delete 5","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pangyyen"},"content":"delete","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pangyyen"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pangyyen"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"pangyyen"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"pangyyen"},"content":"deadline go fairprice","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"pangyyen"},"content":"deadlien go fairprice /by","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"pangyyen"},"content":"deadline go fairprice /by","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"pangyyen"},"content":"event go fairprice","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"pangyyen"},"content":"event go fairprice /to /ftrom","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"pangyyen"},"content":"event go fairprice /to sun /from mon","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"pangyyen"},"content":"event go fair price /from sun","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"pangyyen"},"content":"event go fair price /to sun","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"pangyyen"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"pangyyen"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pangyyen":25}},{"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":"pangyyen"},"content":"java -classpath ..\\bin duke.main.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"pangyyen":1,"-":20}}] diff --git a/pangyyen_ip_master/commits.json b/pangyyen_ip_master/commits.json index 823cb232..8577048c 100644 --- a/pangyyen_ip_master/commits.json +++ b/pangyyen_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"pangyyen":[{"date":"2023-08-23","commitResults":[{"hash":"9ed4f3ed5f7ade36d849415638de291941605855","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"(a) Give your chatbot a new name\n(b) Implement an initial skeletal version\n","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"deb402c77969d4771b0bb22832ceae2c99d77e9f","isMergeCommit":false,"messageTitle":"Echo","messageBody":"echos commands entered by the user, and exits when the user types the command bye\n","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"2dc7e8bba6b9fb88e0b3421a60ca05a62baa6e1e","isMergeCommit":false,"messageTitle":"level-2 Add List","messageBody":"create Chatbot and TaskList\n","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":29}}},{"hash":"3e196a6b18dcb402ed0ffa8774e67e33906fafd5","isMergeCommit":false,"messageTitle":"level-3 Mark as Done","messageBody":"it could unmark as not done as well\n","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":6}}},{"hash":"2418dd39d176d2f44dbb33c937f706efa1a49dce","isMergeCommit":false,"messageTitle":"level-4 ToDos, Events, Deadlines","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":9}}},{"hash":"1b7d7647c8b52137d1d94342a43d0e1e683e71a4","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"Automated Text UI Testing\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"e698ee67348f33d5574d9077892a9ca242bd9099","isMergeCommit":false,"messageTitle":"level-5 handle errors","messageBody":"DukeException is created, and extended to DeadlineException, EventException\n","tags":["level-5"],"fileTypesAndContributionMap":{"java":{"insertions":186,"deletions":55}}},{"hash":"2b5beefb15caa9ec33e4d2915def42da1320ffe4","isMergeCommit":false,"messageTitle":"level-6 Delete","messageBody":"TaskList is modified as dynamic list which allows dynamic delete, deleteException is also introduced\n","tags":["level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":21,"deletions":7},"java":{"insertions":67,"deletions":17}}}]},{"date":"2023-08-30","commitResults":[{"hash":"c3b5152eaf0a4d139b06cc50d9e927f1226e862c","isMergeCommit":false,"messageTitle":"level-7 Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":164,"deletions":18}}},{"hash":"a075f4dd629971ab7f1a87f49a30b5b92a102416","isMergeCommit":false,"messageTitle":"Add javadoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"e629e2cae0df70b357740685cdf2c82805301546","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"Javadoc are added to the newly created public method\n","tags":["level-7"],"fileTypesAndContributionMap":{}},{"hash":"ef86d151af7ce598d6b7cb055c1f54bc950e0592","isMergeCommit":false,"messageTitle":"Change date format from String to java.time.LocalDate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":26}}},{"hash":"4241358767b360dc1da47c88566f82eb85845a8a","isMergeCommit":false,"messageTitle":"level-8 Fix format for input and output date","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":4},"java":{"insertions":69,"deletions":45}}},{"hash":"4b39a051a4fd8162ff97b4cc3401cd5f6ae3d094","isMergeCommit":false,"messageTitle":"Exstraction of user-input handling out of main method \u0027start()\u0027","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":37}}},{"hash":"d8ebd982731ce5685f32acc5ee3ec08d070ecb28","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"Handle date as java.time.LocalDate instead of String\n","tags":["level-8"],"fileTypesAndContributionMap":{}},{"hash":"f6e3d538160f545504fdb4c85be78093add4e628","isMergeCommit":false,"messageTitle":"Move Chatbot to Duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":276,"deletions":279}}}]},{"date":"2023-08-31","commitResults":[{"hash":"9ec368f465b1b66e56b178463e0a35538f1d488e","isMergeCommit":false,"messageTitle":"Clear error in Command.java and Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":373,"deletions":63}}},{"hash":"56bed3b377150afc88dfbf5e7cd16bdf060d4ace","isMergeCommit":false,"messageTitle":"Clear all existing errors in Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":160,"deletions":97}}}]},{"date":"2023-09-01","commitResults":[{"hash":"d30b55335b89c9d9b63f8439d72d225858fb0ac3","isMergeCommit":false,"messageTitle":"A-MoreOOP: abstract Ui, Storage, Parser","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":132,"deletions":327}}},{"hash":"032994dbe8c7b2c6e45befce552db4e82169039d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"Abstract out Ui, Storage and Parser class\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"9af8641e833bfe305b3d59fac880af6b4fce89e1","isMergeCommit":false,"messageTitle":"A-Packages: Organize files into Packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":70,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"5ef6bc4671fc8f2050cda63090352c7f33313671","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"Organize the java files into duke, duke.commands, duke.task, duke.storage, duke.ui, duke.exceptions\"\n","fileTypesAndContributionMap":{}},{"hash":"374568776da41423d6dc8a3a1454cd3db4409d07","isMergeCommit":false,"messageTitle":"Move Duke.java into package duke.main","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"pangyyen":{"java":862,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":28}},"authorContributionVariance":{"pangyyen":116010.21},"authorDisplayNameMap":{"pangyyen":"CS2103T-F08-1 GAN .. YEN"}} +{"authorDailyContributionsMap":{"pangyyen":[{"date":"2023-08-23","commitResults":[{"hash":"9ed4f3ed5f7ade36d849415638de291941605855","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"(a) Give your chatbot a new name\n(b) Implement an initial skeletal version\n","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"deb402c77969d4771b0bb22832ceae2c99d77e9f","isMergeCommit":false,"messageTitle":"Echo","messageBody":"echos commands entered by the user, and exits when the user types the command bye\n","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"2dc7e8bba6b9fb88e0b3421a60ca05a62baa6e1e","isMergeCommit":false,"messageTitle":"level-2 Add List","messageBody":"create Chatbot and TaskList\n","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":29}}},{"hash":"3e196a6b18dcb402ed0ffa8774e67e33906fafd5","isMergeCommit":false,"messageTitle":"level-3 Mark as Done","messageBody":"it could unmark as not done as well\n","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":6}}},{"hash":"2418dd39d176d2f44dbb33c937f706efa1a49dce","isMergeCommit":false,"messageTitle":"level-4 ToDos, Events, Deadlines","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":9}}},{"hash":"1b7d7647c8b52137d1d94342a43d0e1e683e71a4","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"Automated Text UI Testing\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"e698ee67348f33d5574d9077892a9ca242bd9099","isMergeCommit":false,"messageTitle":"level-5 handle errors","messageBody":"DukeException is created, and extended to DeadlineException, EventException\n","tags":["level-5"],"fileTypesAndContributionMap":{"java":{"insertions":186,"deletions":55}}},{"hash":"2b5beefb15caa9ec33e4d2915def42da1320ffe4","isMergeCommit":false,"messageTitle":"level-6 Delete","messageBody":"TaskList is modified as dynamic list which allows dynamic delete, deleteException is also introduced\n","tags":["level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":21,"deletions":7},"java":{"insertions":67,"deletions":17}}}]},{"date":"2023-08-30","commitResults":[{"hash":"c3b5152eaf0a4d139b06cc50d9e927f1226e862c","isMergeCommit":false,"messageTitle":"level-7 Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":164,"deletions":18}}},{"hash":"a075f4dd629971ab7f1a87f49a30b5b92a102416","isMergeCommit":false,"messageTitle":"Add javadoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"e629e2cae0df70b357740685cdf2c82805301546","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"Javadoc are added to the newly created public method\n","tags":["level-7"],"fileTypesAndContributionMap":{}},{"hash":"ef86d151af7ce598d6b7cb055c1f54bc950e0592","isMergeCommit":false,"messageTitle":"Change date format from String to java.time.LocalDate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":26}}},{"hash":"4241358767b360dc1da47c88566f82eb85845a8a","isMergeCommit":false,"messageTitle":"level-8 Fix format for input and output date","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":4},"java":{"insertions":69,"deletions":45}}},{"hash":"4b39a051a4fd8162ff97b4cc3401cd5f6ae3d094","isMergeCommit":false,"messageTitle":"Exstraction of user-input handling out of main method \u0027start()\u0027","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":37}}},{"hash":"d8ebd982731ce5685f32acc5ee3ec08d070ecb28","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"Handle date as java.time.LocalDate instead of String\n","tags":["level-8"],"fileTypesAndContributionMap":{}},{"hash":"f6e3d538160f545504fdb4c85be78093add4e628","isMergeCommit":false,"messageTitle":"Move Chatbot to Duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":276,"deletions":279}}}]},{"date":"2023-08-31","commitResults":[{"hash":"9ec368f465b1b66e56b178463e0a35538f1d488e","isMergeCommit":false,"messageTitle":"Clear error in Command.java and Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":373,"deletions":63}}},{"hash":"56bed3b377150afc88dfbf5e7cd16bdf060d4ace","isMergeCommit":false,"messageTitle":"Clear all existing errors in Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":160,"deletions":97}}}]},{"date":"2023-09-01","commitResults":[{"hash":"d30b55335b89c9d9b63f8439d72d225858fb0ac3","isMergeCommit":false,"messageTitle":"A-MoreOOP: abstract Ui, Storage, Parser","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":132,"deletions":327}}},{"hash":"032994dbe8c7b2c6e45befce552db4e82169039d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"Abstract out Ui, Storage and Parser class\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"9af8641e833bfe305b3d59fac880af6b4fce89e1","isMergeCommit":false,"messageTitle":"A-Packages: Organize files into Packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":70,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"5ef6bc4671fc8f2050cda63090352c7f33313671","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"Organize the java files into duke, duke.commands, duke.task, duke.storage, duke.ui, duke.exceptions\"\n","fileTypesAndContributionMap":{}},{"hash":"374568776da41423d6dc8a3a1454cd3db4409d07","isMergeCommit":false,"messageTitle":"Move Duke.java into package duke.main","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"eced4171eb65dd890a7c3798f7b3eba10d475df4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch\u0027","messageBody":"Add add-gradle-support to project directory\n","fileTypesAndContributionMap":{}},{"hash":"ff0eb5d68bd90a6c19b3a26b3c89d97368d696d7","isMergeCommit":false,"messageTitle":"Build Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"82f595b6d1c0ed83bcda8c138698a27a85bc7d8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"Build gradle and set mainClass to duke.main.Duke\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"e9c3e0f7e547ce7b058ff20e2cccd3eafe9d7599","isMergeCommit":false,"messageTitle":"Build JUnit tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":402,"deletions":5}}},{"hash":"c7d054e2aa2bd167254bb861233b409116f39e01","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"Build JUnit test for commands, Task and Ui packages\n","tags":["A-JUnit"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"pangyyen":{"java":1259,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":31}},"authorContributionVariance":{"pangyyen":146763.94},"authorDisplayNameMap":{"pangyyen":"CS2103T-F08-1 GAN .. YEN"}} diff --git a/papataco14_ip_master/authorship.json b/papataco14_ip_master/authorship.json index d2e5ff27..286fe7dc 100644 --- a/papataco14_ip_master/authorship.json +++ b/papataco14_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"# Main project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":"3. After that, locate the `src/main/java/Main.java` file, right-click it, and choose `Run Main.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"papataco14":2,"-":22}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"import chatengine.ChatEngine;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"public class Main {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" ChatEngine chatEngine \u003d new ChatEngine();","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" chatEngine.start();","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":8}},{"path":"src/main/java/chatengine/ChadException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package chatengine;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"public class ChadException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":" public ChadException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" public static class InvalidCommandException extends ChadException {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" public static class InvalidArgumentException extends ChadException {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":" public InvalidArgumentException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"papataco14"},"content":" public static class InvalidFormatException extends ChadException {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"papataco14"},"content":" public InvalidFormatException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"papataco14"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":25}},{"path":"src/main/java/chatengine/ChatEngine.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package chatengine;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"import io.IOHandler;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":"import io.ConsoleIO;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":"public class ChatEngine {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" private final IOHandler ioHandler;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":" private final TaskList taskList; // stores list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":" public ChatEngine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" this.ioHandler \u003d new ConsoleIO();","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":" public void start() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"papataco14"},"content":" ioHandler.greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"papataco14"},"content":" String input;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"papataco14"},"content":" while(!(input \u003d ioHandler.readInput()).equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"papataco14"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"papataco14"},"content":" processInput(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"papataco14"},"content":" } catch (ChadException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(\"Error: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"papataco14"},"content":" ioHandler.sayGoodbye();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"papataco14"},"content":" private void processInput(String input) throws ChadException {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"papataco14"},"content":" if (input.trim().isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidArgumentException(\"Input cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"papataco14"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"papataco14"},"content":" String command \u003d parts[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"papataco14"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"papataco14"},"content":" switch (command.toLowerCase()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"papataco14"},"content":" case \"mark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"papataco14"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"papataco14"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidArgumentException(\"Missing index for \" + command);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"papataco14"},"content":" int index \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"papataco14"},"content":" String response \u003d \"mark\".equalsIgnoreCase(command) ? taskList.markTaskAsDone(index) : taskList.markTaskAsNotDone(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(response);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"papataco14"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"papataco14"},"content":" case \"list\":","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(taskList.displayTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"papataco14"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"papataco14"},"content":" case \"todo\":","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"papataco14"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidArgumentException(\"Missing task description for ToDo.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"papataco14"},"content":" taskList.addTodo(parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(\"Added new ToDo: \" + parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"papataco14"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"papataco14"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"papataco14"},"content":" if (parts.length \u003c 2 || !parts[1].contains(\" /by \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidArgumentException(\"Invalid format for Deadline. Use: deadline {task} /by {date}\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"papataco14"},"content":" String[] deadlineParts \u003d parts[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"papataco14"},"content":" taskList.addDeadline(deadlineParts[0], deadlineParts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(\"Added new Deadline: \" + deadlineParts[0] + \" by \" + deadlineParts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"papataco14"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"papataco14"},"content":" case \"event\":","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"papataco14"},"content":" if (parts.length \u003c 2 || !parts[1].contains(\" /from \") || !parts[1].contains(\" /to \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidArgumentException(\"Invalid format for Event. Use: event {task} /from {start} /to {end}\");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"papataco14"},"content":" String[] eventParts \u003d parts[1].split(\" /from | /to \", 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"papataco14"},"content":" taskList.addEvent(eventParts[0], eventParts[1], eventParts[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(\"Added new Event: \" + eventParts[0] + \" from \" + eventParts[1] + \" to \" + eventParts[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"papataco14"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"papataco14"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidCommandException(\"Unknown command: \" + command);","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"papataco14"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidFormatException(\"Invalid number format.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":87}},{"path":"src/main/java/io/ConsoleIO.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package io;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":"public class ConsoleIO implements IOHandler{","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" private Scanner sc;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" public ConsoleIO() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" public void greet() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":" System.out.println(\"Hello! I\u0027m Chad!\\nWhat do you want?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":" System.out.println(\"______________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"papataco14"},"content":" public void sayGoodbye() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"papataco14"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"papataco14"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"papataco14"},"content":" public String readInput() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"papataco14"},"content":" return sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"papataco14"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"papataco14"},"content":" public void writeOutput(String output) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"papataco14"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":32}},{"path":"src/main/java/io/IOHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package io;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"public interface IOHandler {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":" String readInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" void writeOutput(String output);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" void greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":" void sayGoodbye();","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":8}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":" private String dueDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" public Deadline(String description, String dueDate) {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" super(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" String output \u003d String.format(\"[D][%s] %s (by: %s)\", super.getStatusIcon(), description, dueDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":15}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":" private String start;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" private String end;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":" super(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" String output \u003d String.format(\"[E][%s] %s (from: %s to: %s)\", super.getStatusIcon(), description, start, end);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":17}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":" protected String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":" public void mark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"papataco14"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"papataco14"},"content":" public void unMark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"papataco14"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"papataco14"},"content":" public abstract String toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":26}},{"path":"src/main/java/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" public void addTodo(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":" tasks.add(new ToDo(description));","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":" public void addDeadline(String description, String dueDate) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"papataco14"},"content":" tasks.add(new Deadline(description, dueDate));","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"papataco14"},"content":" public void addEvent(String description, String start, String end) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"papataco14"},"content":" tasks.add(new Event(description, start, end));","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"papataco14"},"content":" public String markTaskAsDone(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"papataco14"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"papataco14"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"papataco14"},"content":" task.mark();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"papataco14"},"content":" return \"Nice! I\u0027ve marked this task as done:\\n\" + task.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"papataco14"},"content":" return \"Invalid task index.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"papataco14"},"content":" public String markTaskAsNotDone(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"papataco14"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"papataco14"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"papataco14"},"content":" task.unMark();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"papataco14"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n\" + task.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"papataco14"},"content":" return \"Invalid task index.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"papataco14"},"content":" public String displayTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"papataco14"},"content":" StringBuilder sb \u003d new StringBuilder(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"papataco14"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"papataco14"},"content":" sb.append((i + 1) + \".\" + tasks.get(i).toString()).append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"papataco14"},"content":" sb.append(\"Now you have \" + tasks.size() + \" tasks in your list\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"papataco14"},"content":" return sb.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":50}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" super(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":" String output \u003d String.format(\"[T][%s] %s\", super.getStatusIcon(), description);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"toDo one","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"deadline two /by Friday","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"Event three /from saturday /to sun","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":"list","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":"bye","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":5}},{"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":"papataco14"},"content":"java -classpath ..\\bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"papataco14":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"# Main project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":"3. After that, locate the `src/main/java/Main.java` file, right-click it, and choose `Run Main.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"papataco14":2,"-":22}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"import chatengine.ChatEngine;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"public class Main {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" ChatEngine chatEngine \u003d new ChatEngine();","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" chatEngine.start();","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":8}},{"path":"src/main/java/chatengine/ChadException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package chatengine;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"public class ChadException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":" public ChadException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" public static class InvalidCommandException extends ChadException {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" public static class InvalidArgumentException extends ChadException {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":" public InvalidArgumentException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"papataco14"},"content":" public static class InvalidFormatException extends ChadException {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"papataco14"},"content":" public InvalidFormatException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"papataco14"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":25}},{"path":"src/main/java/chatengine/ChatEngine.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package chatengine;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"import io.IOHandler;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":"import io.ConsoleIO;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":"public class ChatEngine {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" private final IOHandler ioHandler;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":" private final TaskList taskList; // stores list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":" public enum CommandType {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" BYE, MARK, UNMARK, LIST, TODO, DEADLINE, EVENT, DELETE, UNKNOWN","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":" public ChatEngine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":" this.ioHandler \u003d new ConsoleIO();","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"papataco14"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"papataco14"},"content":" public void start() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"papataco14"},"content":" ioHandler.greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"papataco14"},"content":" boolean canContinueChat \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"papataco14"},"content":" while(canContinueChat) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"papataco14"},"content":" String input \u003d ioHandler.readInput();;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"papataco14"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"papataco14"},"content":" canContinueChat \u003d commandHandler(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"papataco14"},"content":" } catch (ChadException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(\"Error: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"papataco14"},"content":" ioHandler.sayGoodbye();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"papataco14"},"content":" private CommandType parseCommandType(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"papataco14"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"papataco14"},"content":" return CommandType.valueOf(command.toUpperCase());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"papataco14"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"papataco14"},"content":" return CommandType.UNKNOWN;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"papataco14"},"content":" private boolean commandHandler(String input) throws ChadException {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"papataco14"},"content":" if (input.trim().isEmpty()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidArgumentException(\"Input cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"papataco14"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"papataco14"},"content":" CommandType command \u003d parseCommandType(parts[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"papataco14"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"papataco14"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"papataco14"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"papataco14"},"content":" case UNMARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"papataco14"},"content":" handleMarkUnmark(parts, command);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"papataco14"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"papataco14"},"content":" case LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(taskList.displayTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"papataco14"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"papataco14"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"papataco14"},"content":" handleTodo(parts);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"papataco14"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"papataco14"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"papataco14"},"content":" handleDeadline(parts);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"papataco14"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"papataco14"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"papataco14"},"content":" handleEvent(parts);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"papataco14"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"papataco14"},"content":" case DELETE:","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"papataco14"},"content":" handleDelete(parts);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"papataco14"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"papataco14"},"content":" case BYE:","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"papataco14"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"papataco14"},"content":" case UNKNOWN:","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"papataco14"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidCommandException(\"Unknown command: \" + parts[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"papataco14"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidFormatException(\"Invalid number format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"papataco14"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"papataco14"},"content":" private void handleMarkUnmark(String[] parts, CommandType command) throws ChadException {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"papataco14"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidArgumentException(\"Missing index for \" + command);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"papataco14"},"content":" int index \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"papataco14"},"content":" String response \u003d (command \u003d\u003d CommandType.MARK) ? taskList.markTaskAsDone(index) : taskList.markTaskAsNotDone(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(response);","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"papataco14"},"content":" private void handleTodo(String[] parts) throws ChadException {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"papataco14"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidArgumentException(\"Missing task description for ToDo.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"papataco14"},"content":" taskList.addTodo(parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(\"Added new ToDo: \" + parts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"papataco14"},"content":" private void handleDeadline(String[] parts) throws ChadException {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"papataco14"},"content":" if (parts.length \u003c 2 || !parts[1].contains(\" /by \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidArgumentException(\"Invalid format for Deadline. Use: deadline {task} /by {date}\");","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"papataco14"},"content":" String[] deadlineParts \u003d parts[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"papataco14"},"content":" taskList.addDeadline(deadlineParts[0], deadlineParts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(\"Added new Deadline: \" + deadlineParts[0] + \" by \" + deadlineParts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"papataco14"},"content":" private void handleEvent(String[] parts) throws ChadException {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"papataco14"},"content":" if (parts.length \u003c 2 || !parts[1].contains(\" /from \") || !parts[1].contains(\" /to \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidArgumentException(\"Invalid format for Event. Use: event {task} /from {start} /to {end}\");","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"papataco14"},"content":" String[] eventParts \u003d parts[1].split(\" /from | /to \", 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"papataco14"},"content":" taskList.addEvent(eventParts[0], eventParts[1], eventParts[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(\"Added new Event: \" + eventParts[0] + \" from \" + eventParts[1] + \" to \" + eventParts[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"papataco14"},"content":" private void handleDelete(String[] parts) throws ChadException {","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"papataco14"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"papataco14"},"content":" throw new ChadException.InvalidArgumentException(\"Invalid format for Delete Task Operation. Use: delete {taskIndex}\");","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"papataco14"},"content":" int index \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"papataco14"},"content":" String response \u003d taskList.deleteTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"papataco14"},"content":" ioHandler.writeOutput(response);","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":128}},{"path":"src/main/java/io/ConsoleIO.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package io;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":"public class ConsoleIO implements IOHandler{","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" private Scanner sc;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" public ConsoleIO() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" public void greet() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":" System.out.println(\"Hello! I\u0027m Chad!\\nWhat do you want?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":" System.out.println(\"______________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"papataco14"},"content":" public void sayGoodbye() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"papataco14"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"papataco14"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"papataco14"},"content":" public String readInput() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"papataco14"},"content":" return sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"papataco14"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"papataco14"},"content":" public void writeOutput(String output) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"papataco14"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":32}},{"path":"src/main/java/io/IOHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package io;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"public interface IOHandler {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":" String readInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" void writeOutput(String output);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" void greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":" void sayGoodbye();","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":8}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":" private String dueDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" public Deadline(String description, String dueDate) {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" super(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" String output \u003d String.format(\"[D][%s] %s (by: %s)\", super.getStatusIcon(), description, dueDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":15}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":" private String start;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" private String end;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":" super(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" String output \u003d String.format(\"[E][%s] %s (from: %s to: %s)\", super.getStatusIcon(), description, start, end);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":17}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":" protected String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":" public void mark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"papataco14"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"papataco14"},"content":" public void unMark() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"papataco14"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"papataco14"},"content":" public abstract String toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":26}},{"path":"src/main/java/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" public void addTodo(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":" tasks.add(new ToDo(description));","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"papataco14"},"content":" public void addDeadline(String description, String dueDate) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"papataco14"},"content":" tasks.add(new Deadline(description, dueDate));","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"papataco14"},"content":" public void addEvent(String description, String start, String end) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"papataco14"},"content":" tasks.add(new Event(description, start, end));","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"papataco14"},"content":" public String markTaskAsDone(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"papataco14"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"papataco14"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"papataco14"},"content":" task.mark();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"papataco14"},"content":" return \"Yessir! This task is marked as done:\\n\" + task.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"papataco14"},"content":" return \"Invalid task index.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"papataco14"},"content":" public String markTaskAsNotDone(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"papataco14"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"papataco14"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"papataco14"},"content":" task.unMark();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"papataco14"},"content":" return \"Aite, I\u0027ve marked this task as not done yet:\\n\" + task.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"papataco14"},"content":" return \"Invalid task index.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"papataco14"},"content":" public String displayTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"papataco14"},"content":" StringBuilder sb \u003d new StringBuilder(\"Here\u0027s your tasks m8:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"papataco14"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"papataco14"},"content":" sb.append((i + 1) + \".\" + tasks.get(i).toString()).append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"papataco14"},"content":" sb.append(\"Now you have \" + tasks.size() + \" tasks in your list\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"papataco14"},"content":" return sb.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"papataco14"},"content":" public String deleteTask(int taskIndex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"papataco14"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"papataco14"},"content":" Task task \u003d tasks.get(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"papataco14"},"content":" tasks.remove(taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"papataco14"},"content":" return \"Aite, this task is gone bro: \" + task.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"papataco14"},"content":" return \"Invalid task index.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":59}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"papataco14"},"content":" super(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"papataco14"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"papataco14"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"papataco14"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"papataco14"},"content":" String output \u003d String.format(\"[T][%s] %s\", super.getStatusIcon(), description);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"papataco14"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"papataco14"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"papataco14"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"papataco14"},"content":"toDo one","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"papataco14"},"content":"deadline two /by Friday","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"papataco14"},"content":"Event three /from saturday /to sun","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"papataco14"},"content":"list","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"papataco14"},"content":"bye","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"papataco14":5}},{"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":"papataco14"},"content":"java -classpath ..\\bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"papataco14":1,"-":20}}] diff --git a/papataco14_ip_master/commits.json b/papataco14_ip_master/commits.json index ee973997..07dda9af 100644 --- a/papataco14_ip_master/commits.json +++ b/papataco14_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"papataco14":[{"date":"2023-08-30","commitResults":[{"hash":"f4ef71591f4fad985bd4c14371234fd46f3065ba","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"- Gave chatbot a new name\n- Implement an initial skeletal version that greets and exits\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"a17a1d326c537394a220d5294b712dc39d43189f","isMergeCommit":false,"messageTitle":"Echo","messageBody":"- refactored code\n- Added io \u0026 chatengine packages\n- Added IOHandler interface and ConsoleIO class\n- Added ChatEngine class\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":11},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"fd178f80ca63a698d2ec7d44580275bca239b7a7","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"- added ability to store texts by user\n- users can retrieve list of text inputs stored\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":5}}},{"hash":"0d9d4e13f4345c0376643fccfe48323b49d23c42","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"- added option to mark and unmark tasks\n- added Task class to store task info\n- added TaskList class to store list of tasks\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":18}}},{"hash":"51574dcdbb0c4fb5b3ce9f17881fca996c04f838","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"- added support for tracking ToDos, Events \u0026 Deadlines\n- changed Task to abstract class\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":18}}},{"hash":"02819b95e0503a6c2c071ca2bacf36c3ebecd807","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"- Added test cases for testing of basic event adding and querying\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"745a5f1c50b05a5156100ca6c632ae834605815d","isMergeCommit":false,"messageTitle":"Added error handling","messageBody":"- refactored code to allow for better error handling\n- added three types of exceptions common for chadbot: invalid commands, arguments, and format\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":28}}}]}]},"authorFileTypeContributionMap":{"papataco14":{"java":282,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":5}},"authorContributionVariance":{"papataco14":14700.0},"authorDisplayNameMap":{"papataco14":"CS2103T-T17-2 RAMU..IJAY"}} +{"authorDailyContributionsMap":{"papataco14":[{"date":"2023-08-30","commitResults":[{"hash":"f4ef71591f4fad985bd4c14371234fd46f3065ba","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"- Gave chatbot a new name\n- Implement an initial skeletal version that greets and exits\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"a17a1d326c537394a220d5294b712dc39d43189f","isMergeCommit":false,"messageTitle":"Echo","messageBody":"- refactored code\n- Added io \u0026 chatengine packages\n- Added IOHandler interface and ConsoleIO class\n- Added ChatEngine class\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":11},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"fd178f80ca63a698d2ec7d44580275bca239b7a7","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"- added ability to store texts by user\n- users can retrieve list of text inputs stored\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":5}}},{"hash":"0d9d4e13f4345c0376643fccfe48323b49d23c42","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"- added option to mark and unmark tasks\n- added Task class to store task info\n- added TaskList class to store list of tasks\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":18}}},{"hash":"51574dcdbb0c4fb5b3ce9f17881fca996c04f838","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"- added support for tracking ToDos, Events \u0026 Deadlines\n- changed Task to abstract class\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":18}}},{"hash":"02819b95e0503a6c2c071ca2bacf36c3ebecd807","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"- Added test cases for testing of basic event adding and querying\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"745a5f1c50b05a5156100ca6c632ae834605815d","isMergeCommit":false,"messageTitle":"Added error handling","messageBody":"- refactored code to allow for better error handling\n- added three types of exceptions common for chadbot: invalid commands, arguments, and format\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":28}}}]},{"date":"2023-09-01","commitResults":[{"hash":"0704afb7cd768da9e7ce1c3436a63e0ec3a53b18","isMergeCommit":false,"messageTitle":"Add delete operation","messageBody":"The task manager does not offer delete task functionality.\n\nUsers might want to delete tasks they have completed already or for any other reason.\n\nLet\u0027s remove tasks stored in the taskList class and offer the user commands to delete tasks by their index shown to the user.\n","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"765f4adf23179828f92e6e3907bc56ce3ad39404","isMergeCommit":false,"messageTitle":"Refactor ChatEngine command handling and use enums","messageBody":"Hardcoding of commands may lead to more problems in the future.\n\nHandling all command logic in processInput is not maintainable.\n\nLets use enums for the commands that Chad can accept for improved Readability and Type Safety.\n\nBy abstracting out the logic for handling each of the commands into separate functions, commandHandler will now only need to be concerned with deciding which handler function to choose, leading to better separation of concerns.\n","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":52}}}]}]},"authorFileTypeContributionMap":{"papataco14":{"java":332,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":5}},"authorContributionVariance":{"papataco14":13734.373},"authorDisplayNameMap":{"papataco14":"CS2103T-T17-2 RAMU..IJAY"}} diff --git a/peasantbird_ip_master/authorship.json b/peasantbird_ip_master/authorship.json index ec436415..b088e3b6 100644 --- a/peasantbird_ip_master/authorship.json +++ b/peasantbird_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Bert.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" * A chatbot named Bert that keeps track of a task list.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":"public class Bert {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" * botName stores the name of the chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":" private static final String botName \u003d \"Bert\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"peasantbird"},"content":" * al stores the list of tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"peasantbird"},"content":" private static ArrayList\u003cTask\u003e al \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"peasantbird"},"content":" * Introduces itself.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"peasantbird"},"content":" private static void introduce() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"peasantbird"},"content":" \"Hello! I\u0027m \" + Bert.botName + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"peasantbird"},"content":" \"What can I do for you?\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"peasantbird"},"content":" * Sends exit message.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"peasantbird"},"content":" private static void exit() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"peasantbird"},"content":" \"Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"peasantbird"},"content":" * Prints out the list of tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"peasantbird"},"content":" private static void list() {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"peasantbird"},"content":" \"Here are the tasks in your list:\"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"peasantbird"},"content":" for (int i \u003d 0; i \u003c al.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"peasantbird"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"peasantbird"},"content":" System.out.println(index + \".\" + al.get(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"peasantbird"},"content":" System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"peasantbird"},"content":" * Marks a task at a specific index of the list as done.","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"peasantbird"},"content":" * @param i The index of a task on the list","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"peasantbird"},"content":" private static void mark(int i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"peasantbird"},"content":" Task t \u003d al.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"peasantbird"},"content":" t.markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"peasantbird"},"content":" al.set(i, t);","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"peasantbird"},"content":" \"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"peasantbird"},"content":" \" \" + t + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"peasantbird"},"content":" * Marks a task at a specific index of the list as undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"peasantbird"},"content":" * @param i The index of a task on the list","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"peasantbird"},"content":" private static void unmark(int i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"peasantbird"},"content":" Task t \u003d al.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"peasantbird"},"content":" t.markAsUndone();","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"peasantbird"},"content":" al.set(i, t);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"peasantbird"},"content":" \"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"peasantbird"},"content":" \" \" + t + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"peasantbird"},"content":" * Adds a todo task to the list, and prints out the size of list thereafter.","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that follows the todo command","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"peasantbird"},"content":" * @throws BertEmptyTaskException This exception is thrown when the task description is empty","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"peasantbird"},"content":" private static void todo(String description) throws BertEmptyTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"peasantbird"},"content":" if (description.isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"peasantbird"},"content":" throw new BertEmptyTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"peasantbird"},"content":" ToDo t \u003d new ToDo(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"peasantbird"},"content":" al.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"peasantbird"},"content":" \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"peasantbird"},"content":" \" \" + t + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"peasantbird"},"content":" \"Now you have \" + al.size() + \" tasks in the list.\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"peasantbird"},"content":" * Adds a deadline task to the list, and prints out the size of list thereafter.","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"peasantbird"},"content":" * @param substring The substring that follows the deadline command","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"peasantbird"},"content":" * @throws BertEmptyTaskException This exception is thrown when the task description is empty","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"peasantbird"},"content":" private static void deadline(String substring) throws BertEmptyTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"peasantbird"},"content":" if (substring.isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"peasantbird"},"content":" throw new BertEmptyTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"peasantbird"},"content":" String[] inputs \u003d substring.split(\" /by \");","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"peasantbird"},"content":" Deadline t \u003d new Deadline(inputs[0], inputs[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"peasantbird"},"content":" al.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"peasantbird"},"content":" \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"peasantbird"},"content":" \" \" + t + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"peasantbird"},"content":" \"Now you have \" + al.size() + \" tasks in the list.\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"peasantbird"},"content":" * Adds an event task to the list, and prints out the size of list thereafter.","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"peasantbird"},"content":" * @param substring The substring that follows the event command","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"peasantbird"},"content":" * @throws BertEmptyTaskException This exception is thrown when the task description is empty","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"peasantbird"},"content":" private static void event(String substring) throws BertEmptyTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"peasantbird"},"content":" if (substring.isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"peasantbird"},"content":" throw new BertEmptyTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"peasantbird"},"content":" String[] descriptionAndTimes \u003d substring.split(\" /from \");","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"peasantbird"},"content":" String[] times \u003d descriptionAndTimes[1].split(\" /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"peasantbird"},"content":" Event t \u003d new Event(descriptionAndTimes[0], times[0], times[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"peasantbird"},"content":" al.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"peasantbird"},"content":" \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"peasantbird"},"content":" \" \" + t + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"peasantbird"},"content":" \"Now you have \" + al.size() + \" tasks in the list.\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"peasantbird"},"content":" * Deletes the task at the specific index of the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"peasantbird"},"content":" * @param i The index of a task on the list","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"peasantbird"},"content":" private static void delete(int i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"peasantbird"},"content":" Task t \u003d al.remove(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"peasantbird"},"content":" \"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"peasantbird"},"content":" \" \" + t + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"peasantbird"},"content":" \"Now you have \" + al.size() + \" tasks in the list.\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"peasantbird"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"peasantbird"},"content":" Bert.introduce();","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"peasantbird"},"content":" // Initialise a scanner and read the first line of user input","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"peasantbird"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"peasantbird"},"content":" String s \u003d sc.nextLine().trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"peasantbird"},"content":" // The program runs until the user enters \u0027bye\u0027","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"peasantbird"},"content":" while (!s.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"peasantbird"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"peasantbird"},"content":" String cmd;","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"peasantbird"},"content":" int indexOfFirstSpace \u003d s.indexOf(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"peasantbird"},"content":" if (indexOfFirstSpace \u003d\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"peasantbird"},"content":" cmd \u003d s;","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"peasantbird"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"peasantbird"},"content":" cmd \u003d s.substring(0, indexOfFirstSpace);","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"peasantbird"},"content":" // Typing \u0027list\u0027 prints out the list of tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"peasantbird"},"content":" if (cmd.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"peasantbird"},"content":" Bert.list();","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"peasantbird"},"content":" // Typing \u0027mark x\u0027 marks a task at a specific index on the list","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"peasantbird"},"content":" } else if (cmd.equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"peasantbird"},"content":" int i \u003d Integer.parseInt(s.substring(indexOfFirstSpace + 1)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"peasantbird"},"content":" Bert.mark(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"peasantbird"},"content":" // Typing \u0027unmark x\u0027 unmarks a task at a specific index on the list","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"peasantbird"},"content":" } else if (cmd.equals(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"peasantbird"},"content":" int i \u003d Integer.parseInt(s.substring(indexOfFirstSpace + 1)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"peasantbird"},"content":" Bert.unmark(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"peasantbird"},"content":" // Typing \u0027todo...\u0027 stores a todo task","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"peasantbird"},"content":" } else if (cmd.equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"peasantbird"},"content":" String remainder;","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"peasantbird"},"content":" if (indexOfFirstSpace \u003d\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"peasantbird"},"content":" remainder \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"peasantbird"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"peasantbird"},"content":" remainder \u003d s.substring(indexOfFirstSpace + 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"peasantbird"},"content":" Bert.todo(remainder);","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"peasantbird"},"content":" // Typing \u0027deadline...\u0027 stores a deadline task","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"peasantbird"},"content":" } else if (cmd.equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"peasantbird"},"content":" String remainder;","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"peasantbird"},"content":" if (indexOfFirstSpace \u003d\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"peasantbird"},"content":" remainder \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"peasantbird"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"peasantbird"},"content":" remainder \u003d s.substring(indexOfFirstSpace + 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"peasantbird"},"content":" Bert.deadline(remainder);","lastModifiedDate":"2023-08-24"},{"lineNumber":217,"author":{"gitId":"peasantbird"},"content":" // Typing \u0027event...\u0027 stores an event task","lastModifiedDate":"2023-08-24"},{"lineNumber":218,"author":{"gitId":"peasantbird"},"content":" } else if (cmd.equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"peasantbird"},"content":" String remainder;","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"peasantbird"},"content":" if (indexOfFirstSpace \u003d\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":221,"author":{"gitId":"peasantbird"},"content":" remainder \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":222,"author":{"gitId":"peasantbird"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"peasantbird"},"content":" remainder \u003d s.substring(indexOfFirstSpace + 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"peasantbird"},"content":" Bert.event(remainder);","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"peasantbird"},"content":" // Typing delete deletes a task","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"peasantbird"},"content":" } else if (cmd.equals(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"peasantbird"},"content":" int i \u003d Integer.parseInt(s.substring(indexOfFirstSpace + 1)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"peasantbird"},"content":" Bert.delete(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":230,"author":{"gitId":"peasantbird"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":231,"author":{"gitId":"peasantbird"},"content":" throw new BertInvalidTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"peasantbird"},"content":" } catch (BertEmptyTaskException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":234,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":236,"author":{"gitId":"peasantbird"},"content":" \"OOPS!!! \" + e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":238,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"peasantbird"},"content":" } catch (BertInvalidTaskException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":240,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":241,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"peasantbird"},"content":" \"OOPS!!! \" + e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":243,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":244,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":245,"author":{"gitId":"peasantbird"},"content":" } finally {","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"peasantbird"},"content":" s \u003d sc.nextLine().trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":247,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":248,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":249,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":250,"author":{"gitId":"peasantbird"},"content":" sc.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":251,"author":{"gitId":"peasantbird"},"content":" Bert.exit();","lastModifiedDate":"2023-08-24"},{"lineNumber":252,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":253}},{"path":"src/main/java/BertEmptyTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represents an exception that is thrown when an empty task description is passed.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class BertEmptyTaskException extends BertException {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" * Constructs an empty task exception","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" public BertEmptyTaskException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" super(\"The description cannot be empty\");","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":11}},{"path":"src/main/java/BertException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represents an exception in the Bert chatbot program.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class BertException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" public BertException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":8}},{"path":"src/main/java/BertInvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represents an exception that is thrown when an invalid task command is passed.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class BertInvalidTaskException extends BertException {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" * Constructs an invalid task exception","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" public BertInvalidTaskException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" super(\"The task command is invalid\");","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":11}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represent a task that need to be done before a specific date/time.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" protected String deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" * Creates a deadline task that is initially undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":" * @param deadline The deadline that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"peasantbird"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"peasantbird"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"peasantbird"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"peasantbird"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"peasantbird"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"peasantbird"},"content":" return \"[D][\" + this.getStatusIcon() + \"] \" + this.description +","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"peasantbird"},"content":" \" (by: \" + this.deadline + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":23}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represent a task that start at a specific date/time and ends at a specific date/time.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" protected String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" protected String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" * Creates a event task that is initially undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"peasantbird"},"content":" * @param start The start time that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"peasantbird"},"content":" * @param end The ending time that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"peasantbird"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"peasantbird"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"peasantbird"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"peasantbird"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"peasantbird"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"peasantbird"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"peasantbird"},"content":" return \"[E][\" + this.getStatusIcon() + \"] \" + this.description +","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"peasantbird"},"content":" \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":26}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represent a task that is either done or not done.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" * Creates a task that is initially undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"peasantbird"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"peasantbird"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"peasantbird"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"peasantbird"},"content":" * Returns X if a task is done, returns a blank space if it is not.","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"peasantbird"},"content":" * @return A string which is either X or \u0027 \u0027","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"peasantbird"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"peasantbird"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"peasantbird"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"peasantbird"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"peasantbird"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"peasantbird"},"content":" * Marks the task as undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"peasantbird"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"peasantbird"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"peasantbird"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"peasantbird"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"peasantbird"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":45}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represent a task without any date/time attached to it.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" * Creates a todo task that is initially undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"peasantbird"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"peasantbird"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"peasantbird"},"content":" return \"[T][\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"mark 2","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":"unmark 2","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":"delete 3","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":"list","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":"asdf","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":"deadline","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":10}},{"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":"peasantbird"},"content":"java -classpath ..\\bin Bert \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"peasantbird":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":"peasantbird"},"content":"java -classpath ../bin Bert \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":{"peasantbird":1,"-":37}}] +[{"path":"src/main/java/Bert.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" * A chatbot named Bert that keeps track of a task list.","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"peasantbird"},"content":"public class Bert {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"peasantbird"},"content":" private static final String BOT_NAME \u003d \"Bert\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"peasantbird"},"content":" private static final String FILE_PATH \u003d \"./data/bert.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"peasantbird"},"content":" private static ArrayList\u003cTask\u003e al \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"peasantbird"},"content":" * Introduces itself.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"peasantbird"},"content":" private static void introduce() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"peasantbird"},"content":" \"Hello! I\u0027m \" + Bert.BOT_NAME + \"\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"peasantbird"},"content":" \"What can I do for you?\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"peasantbird"},"content":" * Sends exit message.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"peasantbird"},"content":" private static void exit() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"peasantbird"},"content":" \"Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"peasantbird"},"content":" * Prints out the list of tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"peasantbird"},"content":" private static void list() {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"peasantbird"},"content":" \"Here are the tasks in your list:\"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"peasantbird"},"content":" for (int i \u003d 0; i \u003c al.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"peasantbird"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"peasantbird"},"content":" System.out.println(index + \".\" + al.get(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"peasantbird"},"content":" System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"peasantbird"},"content":" * Marks a task at a specific index of the list as done.","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"peasantbird"},"content":" * @param index The index of a task on the list","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"peasantbird"},"content":" private static void mark(String index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"peasantbird"},"content":" int i \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"peasantbird"},"content":" Task t \u003d al.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"peasantbird"},"content":" t.markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"peasantbird"},"content":" al.set(i, t);","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"peasantbird"},"content":" \"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"peasantbird"},"content":" \" \" + t + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"peasantbird"},"content":" * Marks a task at a specific index of the list as undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"peasantbird"},"content":" * @param index The index of a task on the list","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"peasantbird"},"content":" private static void unmark(String index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"peasantbird"},"content":" int i \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"peasantbird"},"content":" Task t \u003d al.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"peasantbird"},"content":" t.markAsUndone();","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"peasantbird"},"content":" al.set(i, t);","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"peasantbird"},"content":" \"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"peasantbird"},"content":" \" \" + t + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"peasantbird"},"content":" * Adds a todo task to the list, and prints out the size of list thereafter.","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that follows the todo command","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"peasantbird"},"content":" * @throws BertEmptyTaskException This exception is thrown when the task description is empty","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"peasantbird"},"content":" private static void todo(String description) throws BertEmptyTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"peasantbird"},"content":" if (description.isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"peasantbird"},"content":" throw new BertEmptyTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"peasantbird"},"content":" ToDo t \u003d new ToDo(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"peasantbird"},"content":" al.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"peasantbird"},"content":" \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"peasantbird"},"content":" \" \" + t + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"peasantbird"},"content":" \"Now you have \" + al.size() + \" tasks in the list.\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"peasantbird"},"content":" * Adds a deadline task to the list, and prints out the size of list thereafter.","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"peasantbird"},"content":" * @param substring The substring that follows the deadline command","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"peasantbird"},"content":" * @throws BertEmptyTaskException This exception is thrown when the task description is empty","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"peasantbird"},"content":" private static void deadline(String substring) throws BertEmptyTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"peasantbird"},"content":" if (substring.isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"peasantbird"},"content":" throw new BertEmptyTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"peasantbird"},"content":" String[] inputs \u003d substring.split(\" /by \");","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"peasantbird"},"content":" Deadline t \u003d new Deadline(inputs[0], inputs[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"peasantbird"},"content":" al.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"peasantbird"},"content":" \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"peasantbird"},"content":" \" \" + t + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"peasantbird"},"content":" \"Now you have \" + al.size() + \" tasks in the list.\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"peasantbird"},"content":" * Adds an event task to the list, and prints out the size of list thereafter.","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"peasantbird"},"content":" * @param substring The substring that follows the event command","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"peasantbird"},"content":" * @throws BertEmptyTaskException This exception is thrown when the task description is empty","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"peasantbird"},"content":" private static void event(String substring) throws BertEmptyTaskException {","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"peasantbird"},"content":" if (substring.isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"peasantbird"},"content":" throw new BertEmptyTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"peasantbird"},"content":" String[] descriptionAndTimes \u003d substring.split(\" /from \");","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"peasantbird"},"content":" String[] times \u003d descriptionAndTimes[1].split(\" /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"peasantbird"},"content":" Event t \u003d new Event(descriptionAndTimes[0], times[0], times[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"peasantbird"},"content":" al.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"peasantbird"},"content":" \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"peasantbird"},"content":" \" \" + t + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"peasantbird"},"content":" \"Now you have \" + al.size() + \" tasks in the list.\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"peasantbird"},"content":" * Deletes the task at the specific index of the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"peasantbird"},"content":" * @param index The index of a task on the list","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"peasantbird"},"content":" private static void delete(String index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"peasantbird"},"content":" int i \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"peasantbird"},"content":" Task t \u003d al.remove(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"peasantbird"},"content":" \"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"peasantbird"},"content":" \" \" + t + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"peasantbird"},"content":" \"Now you have \" + al.size() + \" tasks in the list.\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"peasantbird"},"content":" * Saves the task list into ip/data/bert.txt.","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"peasantbird"},"content":" private static void saveTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"peasantbird"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"peasantbird"},"content":" ensureTaskFileExists();","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"peasantbird"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"peasantbird"},"content":" \"OOPS!!! An error occurred while creating the task file.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"peasantbird"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"peasantbird"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"peasantbird"},"content":" Bert.writeToFile(FILE_PATH, Bert.taskListToSaveFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"peasantbird"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"peasantbird"},"content":" \"OOPS!!! An error occurred while saving tasks.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"peasantbird"},"content":" * Checks if ip/data/bert.txt exists.","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"peasantbird"},"content":" * If the directory or the file does not exist,","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"peasantbird"},"content":" * creates the directory and the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"peasantbird"},"content":" * @throws IOException This exception is thrown when an error occurs while creating","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"peasantbird"},"content":" * the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"peasantbird"},"content":" private static void ensureTaskFileExists() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"peasantbird"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"peasantbird"},"content":" if (!file.getParentFile().isDirectory()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"peasantbird"},"content":" file.getParentFile().mkdir();","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"peasantbird"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"peasantbird"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"peasantbird"},"content":" * Converts the task list into its save format.","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"peasantbird"},"content":" * @return The String representation of the formatted task list","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"peasantbird"},"content":" private static String taskListToSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"peasantbird"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"peasantbird"},"content":" for (Task t : al) {","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"peasantbird"},"content":" sb.append(t.toSaveFormat() + System.lineSeparator());","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"peasantbird"},"content":" return sb.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"peasantbird"},"content":" * Writes the textToAdd input into a file specified by filePath.","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"peasantbird"},"content":" * @param filePath The path to the file to be written","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"peasantbird"},"content":" * @param textToAdd The String of text to be written in the file","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"peasantbird"},"content":" * @throws IOException This exception is thrown when an error occurs while opening","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"peasantbird"},"content":" * the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"peasantbird"},"content":" private static void writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"peasantbird"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"peasantbird"},"content":" fw.write(textToAdd);","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"peasantbird"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":246,"author":{"gitId":"peasantbird"},"content":" * Loads tasks from the save data into the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":247,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"peasantbird"},"content":" private static void loadTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"peasantbird"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"peasantbird"},"content":" ensureTaskFileExists();","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"peasantbird"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"peasantbird"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"peasantbird"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"peasantbird"},"content":" String task \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"peasantbird"},"content":" switch (task.charAt(0)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":256,"author":{"gitId":"peasantbird"},"content":" case \u0027T\u0027:","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"peasantbird"},"content":" ToDo t \u003d ToDo.createFromSaveFormat(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"peasantbird"},"content":" al.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"peasantbird"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":260,"author":{"gitId":"peasantbird"},"content":" case \u0027D\u0027:","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"peasantbird"},"content":" Deadline d \u003d Deadline.createFromSaveFormat(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"peasantbird"},"content":" al.add(d);","lastModifiedDate":"2023-09-01"},{"lineNumber":263,"author":{"gitId":"peasantbird"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":264,"author":{"gitId":"peasantbird"},"content":" case \u0027E\u0027:","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"peasantbird"},"content":" Event e \u003d Event.createFromSaveFormat(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"peasantbird"},"content":" al.add(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"peasantbird"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":270,"author":{"gitId":"peasantbird"},"content":" sc.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"peasantbird"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":272,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":273,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":274,"author":{"gitId":"peasantbird"},"content":" \"OOPS!!! The attempt to open the file has failed.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":275,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":276,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"peasantbird"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":278,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-09-01"},{"lineNumber":279,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":280,"author":{"gitId":"peasantbird"},"content":" \"OOPS!!! An error occurred while creating the task file.\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":281,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":282,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":283,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":284,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":285,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":286,"author":{"gitId":"peasantbird"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":287,"author":{"gitId":"peasantbird"},"content":" Bert.introduce();","lastModifiedDate":"2023-08-24"},{"lineNumber":288,"author":{"gitId":"peasantbird"},"content":" Bert.loadTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":289,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":290,"author":{"gitId":"peasantbird"},"content":" // Initialise a scanner and read the first line of user input","lastModifiedDate":"2023-08-24"},{"lineNumber":291,"author":{"gitId":"peasantbird"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":292,"author":{"gitId":"peasantbird"},"content":" String s \u003d sc.nextLine().trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":293,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":294,"author":{"gitId":"peasantbird"},"content":" // The program runs until the user enters \u0027bye\u0027","lastModifiedDate":"2023-08-24"},{"lineNumber":295,"author":{"gitId":"peasantbird"},"content":" while (!s.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":296,"author":{"gitId":"peasantbird"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":297,"author":{"gitId":"peasantbird"},"content":" String cmd;","lastModifiedDate":"2023-08-24"},{"lineNumber":298,"author":{"gitId":"peasantbird"},"content":" String input \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":299,"author":{"gitId":"peasantbird"},"content":" int indexOfFirstSpace \u003d s.indexOf(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":300,"author":{"gitId":"peasantbird"},"content":" if (indexOfFirstSpace \u003d\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":301,"author":{"gitId":"peasantbird"},"content":" cmd \u003d s;","lastModifiedDate":"2023-08-24"},{"lineNumber":302,"author":{"gitId":"peasantbird"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":303,"author":{"gitId":"peasantbird"},"content":" cmd \u003d s.substring(0, indexOfFirstSpace);","lastModifiedDate":"2023-08-24"},{"lineNumber":304,"author":{"gitId":"peasantbird"},"content":" input \u003d s.substring(indexOfFirstSpace + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":305,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":306,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":307,"author":{"gitId":"peasantbird"},"content":" switch (cmd) {","lastModifiedDate":"2023-09-01"},{"lineNumber":308,"author":{"gitId":"peasantbird"},"content":" // Typing \u0027list\u0027 prints out the list of tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":309,"author":{"gitId":"peasantbird"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":310,"author":{"gitId":"peasantbird"},"content":" Bert.list();","lastModifiedDate":"2023-08-24"},{"lineNumber":311,"author":{"gitId":"peasantbird"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":312,"author":{"gitId":"peasantbird"},"content":" // Typing \u0027mark x\u0027 marks a task at a specific index on the list","lastModifiedDate":"2023-08-24"},{"lineNumber":313,"author":{"gitId":"peasantbird"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":314,"author":{"gitId":"peasantbird"},"content":" Bert.mark(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":315,"author":{"gitId":"peasantbird"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":316,"author":{"gitId":"peasantbird"},"content":" // Typing \u0027unmark x\u0027 unmarks a task at a specific index on the list","lastModifiedDate":"2023-08-24"},{"lineNumber":317,"author":{"gitId":"peasantbird"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":318,"author":{"gitId":"peasantbird"},"content":" Bert.unmark(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":319,"author":{"gitId":"peasantbird"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":320,"author":{"gitId":"peasantbird"},"content":" // Typing \u0027todo...\u0027 stores a todo task","lastModifiedDate":"2023-08-24"},{"lineNumber":321,"author":{"gitId":"peasantbird"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":322,"author":{"gitId":"peasantbird"},"content":" Bert.todo(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":323,"author":{"gitId":"peasantbird"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":324,"author":{"gitId":"peasantbird"},"content":" // Typing \u0027deadline...\u0027 stores a deadline task","lastModifiedDate":"2023-08-24"},{"lineNumber":325,"author":{"gitId":"peasantbird"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":326,"author":{"gitId":"peasantbird"},"content":" Bert.deadline(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":327,"author":{"gitId":"peasantbird"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":328,"author":{"gitId":"peasantbird"},"content":" // Typing \u0027event...\u0027 stores an event task","lastModifiedDate":"2023-08-24"},{"lineNumber":329,"author":{"gitId":"peasantbird"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":330,"author":{"gitId":"peasantbird"},"content":" Bert.event(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":331,"author":{"gitId":"peasantbird"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":332,"author":{"gitId":"peasantbird"},"content":" // Typing delete deletes a task","lastModifiedDate":"2023-08-24"},{"lineNumber":333,"author":{"gitId":"peasantbird"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":334,"author":{"gitId":"peasantbird"},"content":" Bert.delete(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":335,"author":{"gitId":"peasantbird"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":336,"author":{"gitId":"peasantbird"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":337,"author":{"gitId":"peasantbird"},"content":" throw new BertInvalidTaskException();","lastModifiedDate":"2023-08-24"},{"lineNumber":338,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":339,"author":{"gitId":"peasantbird"},"content":" } catch (BertException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":340,"author":{"gitId":"peasantbird"},"content":" System.out.println(","lastModifiedDate":"2023-08-24"},{"lineNumber":341,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":342,"author":{"gitId":"peasantbird"},"content":" \"OOPS!!! \" + e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":343,"author":{"gitId":"peasantbird"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":344,"author":{"gitId":"peasantbird"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":345,"author":{"gitId":"peasantbird"},"content":" } finally {","lastModifiedDate":"2023-08-24"},{"lineNumber":346,"author":{"gitId":"peasantbird"},"content":" s \u003d sc.nextLine().trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":347,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":348,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":349,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":350,"author":{"gitId":"peasantbird"},"content":" sc.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":351,"author":{"gitId":"peasantbird"},"content":" Bert.saveTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":352,"author":{"gitId":"peasantbird"},"content":" Bert.exit();","lastModifiedDate":"2023-08-24"},{"lineNumber":353,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":354,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":354}},{"path":"src/main/java/BertEmptyTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represents an exception that is thrown when an empty task description is passed.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class BertEmptyTaskException extends BertException {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" * Constructs an empty task exception","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" public BertEmptyTaskException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" super(\"The description cannot be empty\");","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":11}},{"path":"src/main/java/BertException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represents an exception in the Bert chatbot program.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class BertException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" public BertException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":8}},{"path":"src/main/java/BertInvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represents an exception that is thrown when an invalid task command is passed.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class BertInvalidTaskException extends BertException {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" * Constructs an invalid task exception","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" public BertInvalidTaskException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" super(\"The task command is invalid\");","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":11}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represent a task that need to be done before a specific date/time.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" protected String deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" * Creates a deadline task that is initially undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":" * @param deadline The deadline that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"peasantbird"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"peasantbird"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"peasantbird"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"peasantbird"},"content":" * Creates a deadline task that could be done or undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"peasantbird"},"content":" * @param isDone Whether the task is done or undone","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that the user inputs","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"peasantbird"},"content":" * @param deadline The deadline that the user inputs","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"peasantbird"},"content":" public Deadline(boolean isDone, String description, String deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"peasantbird"},"content":" super(isDone, description);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"peasantbird"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"peasantbird"},"content":" * Creates a deadline task from the save format.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"peasantbird"},"content":" * @param formattedTask The string representation of the deadline task","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"peasantbird"},"content":" * @return A deadline task","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"peasantbird"},"content":" public static Deadline createFromSaveFormat(String formattedTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"peasantbird"},"content":" String[] args \u003d formattedTask.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"peasantbird"},"content":" boolean isDone \u003d args[1].equals(\"1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"peasantbird"},"content":" return new Deadline(isDone, args[2], args[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"peasantbird"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"peasantbird"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"peasantbird"},"content":" return \"D | \" + super.toSaveFormat() + \" | \" + this.deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"peasantbird"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"peasantbird"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"peasantbird"},"content":" return \"[D][\" + this.getStatusIcon() + \"] \" + this.description +","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"peasantbird"},"content":" \" (by: \" + this.deadline + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":52}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represent a task that start at a specific date/time and ends at a specific date/time.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" protected String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" protected String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" * Creates an event task that is initially undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"peasantbird"},"content":" * @param start The start time that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"peasantbird"},"content":" * @param end The ending time that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"peasantbird"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"peasantbird"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"peasantbird"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"peasantbird"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"peasantbird"},"content":" * Creates an event task that could be done or undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"peasantbird"},"content":" * @param isDone Whether the task is done or undone","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that the user inputs","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"peasantbird"},"content":" * @param start The start time that the user inputs","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"peasantbird"},"content":" * @param end The ending time that the user inputs","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"peasantbird"},"content":" public Event(boolean isDone, String description, String start, String end) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"peasantbird"},"content":" super(isDone, description);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"peasantbird"},"content":" this.start \u003d start;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"peasantbird"},"content":" this.end \u003d end;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"peasantbird"},"content":" * Creates an event task from the save format.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"peasantbird"},"content":" * @param formattedTask The string representation of the event task","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"peasantbird"},"content":" * @return An event task","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"peasantbird"},"content":" public static Event createFromSaveFormat(String formattedTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"peasantbird"},"content":" String[] args \u003d formattedTask.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"peasantbird"},"content":" boolean isDone \u003d args[1].equals(\"1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"peasantbird"},"content":" String[] times \u003d args[3].split(\"-\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"peasantbird"},"content":" return new Event(isDone, args[2], times[0], times[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"peasantbird"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"peasantbird"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"peasantbird"},"content":" return \"E | \" + super.toSaveFormat() + \" | \" + this.start + \"-\" + this.end;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"peasantbird"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"peasantbird"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"peasantbird"},"content":" return \"[E][\" + this.getStatusIcon() + \"] \" + this.description +","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"peasantbird"},"content":" \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":58}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represent a task that is either done or not done.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public abstract class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" * Creates a task that is initially undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"peasantbird"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"peasantbird"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"peasantbird"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"peasantbird"},"content":" * Creates a task that could be done or undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"peasantbird"},"content":" * @param isDone Whether a task is done or undone","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that the user inputs","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"peasantbird"},"content":" public Task(boolean isDone, String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"peasantbird"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"peasantbird"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"peasantbird"},"content":" * Returns X if a task is done, returns a blank space if it is not.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"peasantbird"},"content":" * @return A string which is either X or \u0027 \u0027","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"peasantbird"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"peasantbird"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"peasantbird"},"content":" * Marks the task as done.","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"peasantbird"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"peasantbird"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"peasantbird"},"content":" * Marks the task as undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"peasantbird"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"peasantbird"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"peasantbird"},"content":" * Returns the string of a formatted task for saving","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"peasantbird"},"content":" * @return String representation of formatted task","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"peasantbird"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"peasantbird"},"content":" return (isDone ? \"1\" : \"0\") + \" | \" + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"peasantbird"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"peasantbird"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"peasantbird"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":65}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":" * Represent a task without any date/time attached to it.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":" * Creates a todo task that is initially undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that the user inputs","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peasantbird"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"peasantbird"},"content":" * Creates a todo task that could be done or undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"peasantbird"},"content":" * @param isDone Whether the task is done or undone","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"peasantbird"},"content":" * @param description The description of the task that the user inputs","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"peasantbird"},"content":" public ToDo(boolean isDone, String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"peasantbird"},"content":" super(isDone, description);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"peasantbird"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"peasantbird"},"content":" * Creates a todo task from the save format.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"peasantbird"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"peasantbird"},"content":" * @param formattedTask The string representation of the todo task","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"peasantbird"},"content":" * @return A todo task","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"peasantbird"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"peasantbird"},"content":" public static ToDo createFromSaveFormat(String formattedTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"peasantbird"},"content":" String[] args \u003d formattedTask.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"peasantbird"},"content":" boolean isDone \u003d args[1].equals(\"1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"peasantbird"},"content":" return new ToDo(isDone, args[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"peasantbird"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"peasantbird"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"peasantbird"},"content":" return \"T | \" + super.toSaveFormat();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"peasantbird"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"peasantbird"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"peasantbird"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"peasantbird"},"content":" return \"[T][\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"peasantbird"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"peasantbird"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":45}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"peasantbird"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peasantbird"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peasantbird"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peasantbird"},"content":"mark 2","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"peasantbird"},"content":"unmark 2","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"peasantbird"},"content":"delete 3","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"peasantbird"},"content":"list","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"peasantbird"},"content":"asdf","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"peasantbird"},"content":"deadline","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"peasantbird"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peasantbird":10}},{"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":"peasantbird"},"content":"java -classpath ..\\bin Bert \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"peasantbird":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":"peasantbird"},"content":"java -classpath ../bin Bert \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":{"peasantbird":1,"-":37}}] diff --git a/peasantbird_ip_master/commits.json b/peasantbird_ip_master/commits.json index d314391c..c1e49ac7 100644 --- a/peasantbird_ip_master/commits.json +++ b/peasantbird_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"peasantbird":[{"date":"2023-08-24","commitResults":[{"hash":"4062a72fe3fbe0d6d6cb9f37b8964b77171ab2b8","isMergeCommit":false,"messageTitle":"Change Duke.java to Bert.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":10},"bat":{"insertions":1,"deletions":1}}},{"hash":"7d961f9438d7e4f4373c0357ac7dab9f4ab801fd","isMergeCommit":false,"messageTitle":"Add echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"bd581ee4e224c41c57525648ae1088786417b8f7","isMergeCommit":false,"messageTitle":"Add list and add features","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}},{"hash":"7ecd07d89a3886b84449e3e47c9252c464167144","isMergeCommit":false,"messageTitle":"Add Task.java, and mark and unmark feature to Bert.java","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":13}}},{"hash":"1b40d5222e8bcb0945c87f736e9f300c3594a8d1","isMergeCommit":false,"messageTitle":"Add ToDo.java, Deadline.java, Event.java and support for tracking these tasks in Bert.java","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":248,"deletions":65}}},{"hash":"5ce98c5f18fec05bc3fe97c828d7786d6ee11ff1","isMergeCommit":false,"messageTitle":"Test Bert.java","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"ce93740fe07c1d7f7da8b764a26e55f19bf704b9","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":58}}},{"hash":"2f1e0c09b2f3edc36535bd5e8ed67e4e5f35c157","isMergeCommit":false,"messageTitle":"Add delete functionality","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":18}}}]},{"date":"2023-08-31","commitResults":[{"hash":"9f80daa6b489a5bfd256afa9b6a1ec58c2a18db6","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"93de7a7b18636bb2f375e3575cc72cd28efb628f","isMergeCommit":false,"messageTitle":"Update UI and add error testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":4,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"peasantbird":{"java":395,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"peasantbird":36129.742},"authorDisplayNameMap":{"peasantbird":"CS2103T-F11-3 WONG..RAND"}} +{"authorDailyContributionsMap":{"peasantbird":[{"date":"2023-08-24","commitResults":[{"hash":"4062a72fe3fbe0d6d6cb9f37b8964b77171ab2b8","isMergeCommit":false,"messageTitle":"Change Duke.java to Bert.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":10},"bat":{"insertions":1,"deletions":1}}},{"hash":"7d961f9438d7e4f4373c0357ac7dab9f4ab801fd","isMergeCommit":false,"messageTitle":"Add echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"bd581ee4e224c41c57525648ae1088786417b8f7","isMergeCommit":false,"messageTitle":"Add list and add features","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}},{"hash":"7ecd07d89a3886b84449e3e47c9252c464167144","isMergeCommit":false,"messageTitle":"Add Task.java, and mark and unmark feature to Bert.java","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":13}}},{"hash":"1b40d5222e8bcb0945c87f736e9f300c3594a8d1","isMergeCommit":false,"messageTitle":"Add ToDo.java, Deadline.java, Event.java and support for tracking these tasks in Bert.java","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":248,"deletions":65}}},{"hash":"5ce98c5f18fec05bc3fe97c828d7786d6ee11ff1","isMergeCommit":false,"messageTitle":"Test Bert.java","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"ce93740fe07c1d7f7da8b764a26e55f19bf704b9","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":58}}},{"hash":"2f1e0c09b2f3edc36535bd5e8ed67e4e5f35c157","isMergeCommit":false,"messageTitle":"Add delete functionality","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":18}}}]},{"date":"2023-08-31","commitResults":[{"hash":"9f80daa6b489a5bfd256afa9b6a1ec58c2a18db6","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"93de7a7b18636bb2f375e3575cc72cd28efb628f","isMergeCommit":false,"messageTitle":"Update UI and add error testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":4,"deletions":4}}}]},{"date":"2023-09-01","commitResults":[{"hash":"860081325ba55d06de1321dd6722b01b87ecc7f3","isMergeCommit":false,"messageTitle":"Add save tasks feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":105,"deletions":9}}},{"hash":"b37b6f4d8610d108139b28be5124e5fde032c06b","isMergeCommit":false,"messageTitle":"Clean up code and add new constructors to tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":53}}},{"hash":"d08829fba779b4659e352746003faa0334fecfd1","isMergeCommit":false,"messageTitle":"Add load task feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":12}}},{"hash":"e0fa9c64f0c52ae09da00261eb80bc5bf70bab90","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"peasantbird":{"java":604,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"peasantbird":39441.734},"authorDisplayNameMap":{"peasantbird":"CS2103T-F11-3 WONG..RAND"}} diff --git a/ph-nathan_ip_master/authorship.json b/ph-nathan_ip_master/authorship.json index ed1142f9..c59809c2 100644 --- a/ph-nathan_ip_master/authorship.json +++ b/ph-nathan_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" mainClass.set(\"pippi.Pippi\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":" archiveBaseName \u003d \"pippi\"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ph-nathan":2,"-":40}},{"path":"data/Pippi.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"T | 0 | borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"D | 1 | return book | 2019-10-15","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"E | 0 | project meeting | Mon 2pm to 4pm","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"T | 0 | borrow water","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":4}},{"path":"src/main/java/pippi/Pippi.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import pippi.parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"import pippi.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"import pippi.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":"public class Pippi {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" private static boolean inPokeball \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" public static void returnToPokeball() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" Pippi.inPokeball \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" public void start() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Hello trainer, I\u0027m Pippi!\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" ArrayList\u003cTask\u003e tasks \u003d Storage.read();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" while (!this.inPokeball) {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" String userMessage \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" Parser.reply(userMessage, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" Pippi pippi \u003d new Pippi();","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" pippi.start();","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ph-nathan":31}},{"path":"src/main/java/pippi/PippiException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"public class PippiException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":" public PippiException(String err) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":" super(err);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ph-nathan":7}},{"path":"src/main/java/pippi/parser/DateFormatter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"public class DateFormatter {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" public static final DateTimeFormatter format \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" public static LocalDate convertToLocalDate(String date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" return LocalDate.parse(date, format);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":" public static String convertDateToString(LocalDate date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" public static boolean isValidFormat(String date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" System.out.println(\"here\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" LocalDate.parse(date, format);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ph-nathan":25}},{"path":"src/main/java/pippi/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import pippi.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"import pippi.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":"import pippi.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" public static void reply(String userMessage, ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" String[] input \u003d userMessage.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" String command \u003d input[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" switch (command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" Pippi.returnToPokeball();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" if ((input.length \u003c 2) || input[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Moonblast!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" ToDo td \u003d new ToDo(input[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" tasks.add(td);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" Storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Got it. I\u0027ve added this task:\\n\" + td.toString() +","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ph-nathan"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ph-nathan"},"content":" if (input.length \u003c 2 || input[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":" throw new PippiException(\"Metronome!!! The description and due time of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ph-nathan"},"content":" if (input[1].split(\"/by\").length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ph-nathan"},"content":" throw new PippiException(\"Metronome!!! Due time or description is missing\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ph-nathan"},"content":" String title \u003d input[1].split(\"/by \")[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ph-nathan"},"content":" String due \u003d input[1].split(\"/by \")[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ph-nathan"},"content":" if (!DateFormatter.isValidFormat(due)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ph-nathan"},"content":" throw new PippiException(\"Please enter due in format yyyy-mm-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ph-nathan"},"content":" Deadline dl \u003d new Deadline(title, DateFormatter.convertToLocalDate(due));","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ph-nathan"},"content":" tasks.add(dl);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ph-nathan"},"content":" Storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Got it. I\u0027ve added this task:\\n\" + dl.toString() +","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ph-nathan"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ph-nathan"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ph-nathan"},"content":" if (input.length \u003c 2 || input[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ph-nathan"},"content":" throw new PippiException(\"Pound!!! The description and start, end time of an event cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ph-nathan"},"content":" if (input[1].split(\"/from\").length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ph-nathan"},"content":" throw new PippiException(\"Pound!!! pippi.task.Event title or duration is missing\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ph-nathan"},"content":" String evTitle \u003d input[1].split(\"/from \")[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ph-nathan"},"content":" String duration \u003d input[1].split(\"/from \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ph-nathan"},"content":" if (duration.split(\"/to \").length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ph-nathan"},"content":" throw new PippiException(\"Pound!!! Start or end time is missing\");","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ph-nathan"},"content":" String start \u003d duration.split(\"/to \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ph-nathan"},"content":" String end \u003d duration.split(\"/to \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ph-nathan"},"content":" Event event \u003d new Event(evTitle, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ph-nathan"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"ph-nathan"},"content":" Storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Got it. I\u0027ve added this task:\\n\" + event.toString() +","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"ph-nathan"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"ph-nathan"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ph-nathan"},"content":" String all \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ph-nathan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ph-nathan"},"content":" Task curr \u003d tasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ph-nathan"},"content":" all \u003d all + String.valueOf(i + 1) + \".\" + curr.toString() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Here are the tasks in your list:\\n\" + all);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"ph-nathan"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"ph-nathan"},"content":" int idx \u003d Integer.parseInt(input[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"ph-nathan"},"content":" tasks.get(idx).mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Nice I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"ph-nathan"},"content":" tasks.get(idx).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"ph-nathan"},"content":" Storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"ph-nathan"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"ph-nathan"},"content":" int id \u003d Integer.parseInt(input[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"ph-nathan"},"content":" tasks.get(id).unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"ph-nathan"},"content":" tasks.get(id).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ph-nathan"},"content":" Storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"ph-nathan"},"content":" case \"find\":","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"ph-nathan"},"content":" String keyword \u003d input[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"ph-nathan"},"content":" String found \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"ph-nathan"},"content":" int count \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"ph-nathan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"ph-nathan"},"content":" Task curr \u003d tasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"ph-nathan"},"content":" if (curr.getDescription().contains(keyword)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"ph-nathan"},"content":" found \u003d found + String.valueOf(count) + \".\" + curr.toString() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"ph-nathan"},"content":" count ++;","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Here are the matching tasks in your list:\\n\" + found);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"ph-nathan"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"ph-nathan"},"content":" int i \u003d Integer.parseInt(input[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"ph-nathan"},"content":" tasks.get(i).toString() +","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"ph-nathan"},"content":" \"\\nNow you have \" + (tasks.size() - 1) + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"ph-nathan"},"content":" tasks.remove(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"ph-nathan"},"content":" Storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"ph-nathan"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Amnesia!!! I\u0027m sorry, but I don\u0027t know what that means\");","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"ph-nathan"},"content":" } catch (PippiException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":123}},{"path":"src/main/java/pippi/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"import pippi.parser.DateFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" private static final String filePath \u003d \"./data/Pippi.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" public static ArrayList\u003cTask\u003e read() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" FileReader fr \u003d new FileReader(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" BufferedReader br \u003d new BufferedReader(fr);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" String[] parts \u003dline.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" if (parts.length \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":" continue;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" String status \u003d parts[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ph-nathan"},"content":" ToDo t \u003d new ToDo(parts[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ph-nathan"},"content":" // System.out.println(status);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ph-nathan"},"content":" if (status.equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":" // System.out.println(\"called\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ph-nathan"},"content":" t.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ph-nathan"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ph-nathan"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ph-nathan"},"content":" Deadline d \u003d new Deadline(parts[2],","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ph-nathan"},"content":" DateFormatter.convertToLocalDate(parts[3].trim()));","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ph-nathan"},"content":" if (status.equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ph-nathan"},"content":" d.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ph-nathan"},"content":" tasks.add(d);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ph-nathan"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ph-nathan"},"content":" String start \u003d parts[3].split(\"to \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ph-nathan"},"content":" String end \u003d parts[3].split(\"to \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ph-nathan"},"content":" Event e \u003d new Event(parts[2], start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ph-nathan"},"content":" if (status.equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ph-nathan"},"content":" e.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ph-nathan"},"content":" tasks.add(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ph-nathan"},"content":" // FileReader will open that file from that","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ph-nathan"},"content":" // directory, if there is no file found it will","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ph-nathan"},"content":" // throw an IOException","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ph-nathan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ph-nathan"},"content":" System.out.println(\"No file found exception\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ph-nathan"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ph-nathan"},"content":" public static void update(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ph-nathan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"ph-nathan"},"content":" // Creating a FileWriter object","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ph-nathan"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"ph-nathan"},"content":" String all \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"ph-nathan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"ph-nathan"},"content":" Task curr \u003d tasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ph-nathan"},"content":" all \u003d all + curr.toMemory() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ph-nathan"},"content":" fw.write(all);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ph-nathan"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"ph-nathan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"ph-nathan"},"content":" System.out.println(\"File input/output not found exception\");","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":84}},{"path":"src/main/java/pippi/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import pippi.parser.DateFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":" private LocalDate due;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" public Deadline(String desc, LocalDate due) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" super(desc);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" this.due \u003d due;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + DateFormatter.convertDateToString(due) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" // D | 0 | return book | June 6th","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" public String toMemory() { return \"D \" + super.getStatus() + super.getDescription() + \" | \" + due.format(DateFormatter.format); }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ph-nathan":21}},{"path":"src/main/java/pippi/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":" private String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":" private String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":" public Event(String desc, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":" super(desc);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start + \"to: \" + this.end + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" public String toMemory() { return \"E \" + super.getStatus() + super.getDescription() + \" | \" + start + \"to \" + end; }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ph-nathan":19}},{"path":"src/main/java/pippi/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" return (this.isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" return (this.isDone ? \"| 1 | \" : \"| 0 | \");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" return this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":" public String toMemory() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" return this.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"ph-nathan"},"content":" };","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"ph-nathan"},"content":" return this.getStatusIcon() + this.getDescription();","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ph-nathan":38}},{"path":"src/main/java/pippi/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" public String toMemory() { return \"T \" + super.getStatus() + super.getDescription(); }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ph-nathan":15}},{"path":"src/main/java/pippi/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":" public static void wrapText(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":" String line \u003d \"_____________________________________\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":" System.out.println(line + content + \"\\n\" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":8}},{"path":"src/test/java/pippi/PippiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"public class PippiTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" public void dummyTest(){","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" public void anotherDummyTest(){","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" assertEquals(4, 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":17}},{"path":"src/test/java/pippi/parser/DateFormatterTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"public class DateFormatterTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" public void testConvertToLocalDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" String inputDate \u003d \"2023-08-31\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" LocalDate expectedDate \u003d LocalDate.of(2023, 8, 31);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":" LocalDate result \u003d DateFormatter.convertToLocalDate(inputDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" assertEquals(expectedDate, result);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" public void testConvertDateToString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" LocalDate inputDate \u003d LocalDate.of(2023, 8, 31);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" String expectedString \u003d \"Aug 31 2023\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" String result \u003d DateFormatter.convertDateToString(inputDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" assertEquals(expectedString, result);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" public void testIsValidFormatValidDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" String validDate \u003d \"2023-08-31\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" boolean isValid \u003d DateFormatter.isValidFormat(validDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ph-nathan"},"content":" assertTrue(isValid);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ph-nathan"},"content":" public void testIsValidFormatInvalidDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ph-nathan"},"content":" String invalidDate \u003d \"2023-13-31\"; // Invalid month (13)","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ph-nathan"},"content":" boolean isValid \u003d DateFormatter.isValidFormat(invalidDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ph-nathan"},"content":" assertFalse(isValid);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":44}},{"path":"src/test/java/pippi/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"public class TaskTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" @BeforeEach","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" public void setUp() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":" task \u003d new Task(\"Sample task\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" public void testConstructor() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"Sample task\", task.getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" assertFalse(task.isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" public void testMarkAsDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" assertTrue(task.isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" public void testUnmark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":" task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" assertFalse(task.isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":" public void testGetStatusIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[ ] \", task.getStatusIcon());","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ph-nathan"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[X] \", task.getStatusIcon());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ph-nathan"},"content":" public void testGetStatus() {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"| 0 | \", task.getStatus());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ph-nathan"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"| 1 | \", task.getStatus());","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ph-nathan"},"content":" public void testToString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[ ] Sample task\", task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ph-nathan"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[X] Sample task\", task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ph-nathan"},"content":" public void testToMemory() {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[ ] Sample task\", task.toMemory());","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":59}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ph-nathan":8}},{"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":"ph-nathan"},"content":"java -classpath ..\\bin Pippi \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"ph-nathan":1,"-":20}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" mainClass.set(\"pippi.Pippi\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":" archiveBaseName \u003d \"pippi\"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ph-nathan":2,"-":40}},{"path":"data/Pippi.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"T | 0 | borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"D | 1 | return book | 2019-10-15","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"E | 0 | project meeting | Mon 2pm to 4pm","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"T | 0 | borrow water","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":4}},{"path":"src/main/java/pippi/Pippi.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import pippi.parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"import pippi.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"import pippi.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":"public class Pippi {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" private static boolean inPokeball \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" public static void returnToPokeball() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" Pippi.inPokeball \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" * Initiates the program\u0027s start and working flow","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" public void start() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Hello trainer, I\u0027m Pippi!\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" ArrayList\u003cTask\u003e tasks \u003d Storage.read();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" while (!this.inPokeball) {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":" String userMessage \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" Parser.reply(userMessage, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" Pippi pippi \u003d new Pippi();","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"ph-nathan"},"content":" pippi.start();","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ph-nathan":34}},{"path":"src/main/java/pippi/PippiException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"public class PippiException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":" public PippiException(String err) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":" super(err);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ph-nathan":7}},{"path":"src/main/java/pippi/parser/DateFormatter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"public class DateFormatter {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" public static final DateTimeFormatter format \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" * Returns a LocalDate representation of the input String","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" * @param date String of date in yyyy-MM-dd format","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":" * @return LocalDate","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" public static LocalDate convertToLocalDate(String date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" return LocalDate.parse(date, format);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" * Returns a String representation of the input LocalDate","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" * @param date LocalDate","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" * @return String in MMM dd yyyy format","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" public static String convertDateToString(LocalDate date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" * Returns true if date string is in valid format of yyyy-MM-dd","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" * @param date String of input date","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":" * @return boolean value of whether string is in correct format","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ph-nathan"},"content":" public static boolean isValidFormat(String date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"ph-nathan"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ph-nathan"},"content":" System.out.println(\"here\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":" LocalDate.parse(date, format);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"ph-nathan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ph-nathan"},"content":" return false;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"ph-nathan"},"content":" return true;","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ph-nathan":41}},{"path":"src/main/java/pippi/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import pippi.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"import pippi.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":"import pippi.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" public static void reply(String userMessage, ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" String[] input \u003d userMessage.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" String command \u003d input[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" switch (command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" Pippi.returnToPokeball();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" if ((input.length \u003c 2) || input[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Moonblast!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" ToDo td \u003d new ToDo(input[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" tasks.add(td);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":" Storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Got it. I\u0027ve added this task:\\n\" + td.toString() +","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ph-nathan"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ph-nathan"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":" if (input.length \u003c 2 || input[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ph-nathan"},"content":" throw new PippiException(\"Metronome!!! The description and due time of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ph-nathan"},"content":" if (input[1].split(\"/by\").length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ph-nathan"},"content":" throw new PippiException(\"Metronome!!! Due time or description is missing\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ph-nathan"},"content":" String title \u003d input[1].split(\"/by \")[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ph-nathan"},"content":" String due \u003d input[1].split(\"/by \")[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ph-nathan"},"content":" if (!DateFormatter.isValidFormat(due)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ph-nathan"},"content":" throw new PippiException(\"Please enter due in format yyyy-mm-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ph-nathan"},"content":" Deadline dl \u003d new Deadline(title, DateFormatter.convertToLocalDate(due));","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ph-nathan"},"content":" tasks.add(dl);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ph-nathan"},"content":" Storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Got it. I\u0027ve added this task:\\n\" + dl.toString() +","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ph-nathan"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ph-nathan"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ph-nathan"},"content":" if (input.length \u003c 2 || input[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ph-nathan"},"content":" throw new PippiException(\"Pound!!! The description and start, end time of an event cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ph-nathan"},"content":" if (input[1].split(\"/from\").length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ph-nathan"},"content":" throw new PippiException(\"Pound!!! pippi.task.Event title or duration is missing\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ph-nathan"},"content":" String evTitle \u003d input[1].split(\"/from \")[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ph-nathan"},"content":" String duration \u003d input[1].split(\"/from \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ph-nathan"},"content":" if (duration.split(\"/to \").length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ph-nathan"},"content":" throw new PippiException(\"Pound!!! Start or end time is missing\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ph-nathan"},"content":" String start \u003d duration.split(\"/to \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ph-nathan"},"content":" String end \u003d duration.split(\"/to \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ph-nathan"},"content":" Event event \u003d new Event(evTitle, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"ph-nathan"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ph-nathan"},"content":" Storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Got it. I\u0027ve added this task:\\n\" + event.toString() +","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"ph-nathan"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ph-nathan"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ph-nathan"},"content":" String all \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ph-nathan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ph-nathan"},"content":" Task curr \u003d tasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"ph-nathan"},"content":" all \u003d all + String.valueOf(i + 1) + \".\" + curr.toString() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Here are the tasks in your list:\\n\" + all);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"ph-nathan"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"ph-nathan"},"content":" int idx \u003d Integer.parseInt(input[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"ph-nathan"},"content":" tasks.get(idx).mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Nice I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"ph-nathan"},"content":" tasks.get(idx).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"ph-nathan"},"content":" Storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"ph-nathan"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"ph-nathan"},"content":" int id \u003d Integer.parseInt(input[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"ph-nathan"},"content":" tasks.get(id).unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ph-nathan"},"content":" tasks.get(id).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"ph-nathan"},"content":" Storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"ph-nathan"},"content":" case \"find\":","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"ph-nathan"},"content":" String keyword \u003d input[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"ph-nathan"},"content":" String found \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"ph-nathan"},"content":" int count \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"ph-nathan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"ph-nathan"},"content":" Task curr \u003d tasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"ph-nathan"},"content":" if (curr.getDescription().contains(keyword)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"ph-nathan"},"content":" found \u003d found + String.valueOf(count) + \".\" + curr.toString() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"ph-nathan"},"content":" count ++;","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Here are the matching tasks in your list:\\n\" + found);","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"ph-nathan"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"ph-nathan"},"content":" int i \u003d Integer.parseInt(input[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"ph-nathan"},"content":" tasks.get(i).toString() +","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"ph-nathan"},"content":" \"\\nNow you have \" + (tasks.size() - 1) + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"ph-nathan"},"content":" tasks.remove(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"ph-nathan"},"content":" Storage.update(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"ph-nathan"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(\"Amnesia!!! I\u0027m sorry, but I don\u0027t know what that means\");","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"ph-nathan"},"content":" } catch (PippiException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"ph-nathan"},"content":" Ui.wrapText(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":124}},{"path":"src/main/java/pippi/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"import pippi.parser.DateFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":"import pippi.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" private static final String filePath \u003d \"./data/Pippi.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" * Returns an array list of tasks stored in the Pippi.txt file","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" * (array is empty if file is empty or not found)","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" * @return Array List of tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" public static ArrayList\u003cTask\u003e read() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":" FileReader fr \u003d new FileReader(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" BufferedReader br \u003d new BufferedReader(fr);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":" String[] parts \u003dline.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" if (parts.length \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ph-nathan"},"content":" continue;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ph-nathan"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":" String status \u003d parts[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ph-nathan"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ph-nathan"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ph-nathan"},"content":" ToDo t \u003d new ToDo(parts[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ph-nathan"},"content":" if (status.equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ph-nathan"},"content":" t.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ph-nathan"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ph-nathan"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ph-nathan"},"content":" Deadline d \u003d new Deadline(parts[2],","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ph-nathan"},"content":" DateFormatter.convertToLocalDate(parts[3].trim()));","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ph-nathan"},"content":" if (status.equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ph-nathan"},"content":" d.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ph-nathan"},"content":" tasks.add(d);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ph-nathan"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ph-nathan"},"content":" String start \u003d parts[3].split(\"to \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ph-nathan"},"content":" String end \u003d parts[3].split(\"to \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ph-nathan"},"content":" Event e \u003d new Event(parts[2], start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ph-nathan"},"content":" if (status.equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ph-nathan"},"content":" e.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ph-nathan"},"content":" tasks.add(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"ph-nathan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ph-nathan"},"content":" // FileReader will open that file from that","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ph-nathan"},"content":" // directory, if there is no file found it will","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ph-nathan"},"content":" // throw an IOException","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"ph-nathan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"ph-nathan"},"content":" System.out.println(\"No file found exception\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"ph-nathan"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"ph-nathan"},"content":" * Updates the memory when a task is modified or added","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"ph-nathan"},"content":" * @param tasks (an array list of tasks after updated)","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"ph-nathan"},"content":" public static void update(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ph-nathan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"ph-nathan"},"content":" // Creating a FileWriter object","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"ph-nathan"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"ph-nathan"},"content":" String all \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"ph-nathan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"ph-nathan"},"content":" Task curr \u003d tasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"ph-nathan"},"content":" all \u003d all + curr.toMemory() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"ph-nathan"},"content":" fw.write(all);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"ph-nathan"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"ph-nathan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"ph-nathan"},"content":" System.out.println(\"File input/output not found exception\");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":93}},{"path":"src/main/java/pippi/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import pippi.parser.DateFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":" private LocalDate due;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" public Deadline(String desc, LocalDate due) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" super(desc);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" this.due \u003d due;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" * Returns the String representation of a deadline task to the UI","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" * @return Deadline string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + DateFormatter.convertDateToString(due) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" * Returns the String representation of a deadline task written to the memory","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" * @return Deadline string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" public String toMemory() { return \"D \" + super.getStatus() + super.getDescription() + \" | \" + due.format(DateFormatter.format); }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ph-nathan":29}},{"path":"src/main/java/pippi/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":" private String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":" private String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":" public Event(String desc, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":" super(desc);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" * Returns the String representation of an event task to the UI","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" * @return Event string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start + \"to: \" + this.end + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" * Returns the String representation of an event task written to the memory","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" * @return Event string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":" public String toMemory() { return \"E \" + super.getStatus() + super.getDescription() + \" | \" + start + \"to \" + end; }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ph-nathan":27}},{"path":"src/main/java/pippi/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":" private boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" * Returns the completion status of a task presented to the UI","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" * @return completion status string of a task","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" return (this.isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" * Returns the completion status of a task written to memory","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" * @return completion status string of a task","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" return (this.isDone ? \"| 1 | \" : \"| 0 | \");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" * Returns the description of a task","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":" * @return description string of a task","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ph-nathan"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"ph-nathan"},"content":" return this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ph-nathan"},"content":" * Marks the status of a task as done","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ph-nathan"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"ph-nathan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ph-nathan"},"content":" * Marks the status of a task as not done","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ph-nathan"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"ph-nathan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ph-nathan"},"content":" public String toMemory() {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"ph-nathan"},"content":" return this.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"ph-nathan"},"content":" };","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ph-nathan"},"content":" * Returns the common representation of a task to the UI","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ph-nathan"},"content":" * @return Task string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"ph-nathan"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"ph-nathan"},"content":" return this.getStatusIcon() + this.getDescription();","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ph-nathan":63}},{"path":"src/main/java/pippi/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" * Returns the String representation of a ToDo task to the UI","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" * @return ToDo string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" * Returns the String representation of a ToDo task written to the memory","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" * @return ToDo string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" public String toMemory() { return \"T \" + super.getStatus() + super.getDescription(); }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ph-nathan":23}},{"path":"src/main/java/pippi/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":" * Wraps responses in upper and lower lines","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" public static void wrapText(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" String line \u003d \"_____________________________________\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" System.out.println(line + content + \"\\n\" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":12}},{"path":"src/test/java/pippi/PippiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"public class PippiTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" public void dummyTest(){","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" public void anotherDummyTest(){","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" assertEquals(4, 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":17}},{"path":"src/test/java/pippi/parser/DateFormatterTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"public class DateFormatterTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" public void testConvertToLocalDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":" String inputDate \u003d \"2023-08-31\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" LocalDate expectedDate \u003d LocalDate.of(2023, 8, 31);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":" LocalDate result \u003d DateFormatter.convertToLocalDate(inputDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":" assertEquals(expectedDate, result);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" public void testConvertDateToString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" LocalDate inputDate \u003d LocalDate.of(2023, 8, 31);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":" String expectedString \u003d \"Aug 31 2023\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" String result \u003d DateFormatter.convertDateToString(inputDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" assertEquals(expectedString, result);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" public void testIsValidFormatValidDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" String validDate \u003d \"2023-08-31\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" boolean isValid \u003d DateFormatter.isValidFormat(validDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ph-nathan"},"content":" assertTrue(isValid);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ph-nathan"},"content":" public void testIsValidFormatInvalidDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ph-nathan"},"content":" String invalidDate \u003d \"2023-13-31\"; // Invalid month (13)","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ph-nathan"},"content":" boolean isValid \u003d DateFormatter.isValidFormat(invalidDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ph-nathan"},"content":" assertFalse(isValid);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":44}},{"path":"src/test/java/pippi/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"package pippi.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"public class TaskTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":" private Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ph-nathan"},"content":" @BeforeEach","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ph-nathan"},"content":" public void setUp() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ph-nathan"},"content":" task \u003d new Task(\"Sample task\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ph-nathan"},"content":" public void testConstructor() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"Sample task\", task.getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[ ] \", task.getStatusIcon());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ph-nathan"},"content":" public void testMarkAsDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ph-nathan"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[X] \", task.getStatusIcon());","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ph-nathan"},"content":" public void testUnmark() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ph-nathan"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ph-nathan"},"content":" task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[ ] \", task.getStatusIcon());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ph-nathan"},"content":" public void testGetStatusIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[ ] \", task.getStatusIcon());","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ph-nathan"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[X] \", task.getStatusIcon());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ph-nathan"},"content":" public void testGetStatus() {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"| 0 | \", task.getStatus());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ph-nathan"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"| 1 | \", task.getStatus());","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"ph-nathan"},"content":" public void testToString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[ ] Sample task\", task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ph-nathan"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[X] Sample task\", task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"ph-nathan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"ph-nathan"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"ph-nathan"},"content":" public void testToMemory() {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"ph-nathan"},"content":" assertEquals(\"[ ] Sample task\", task.toMemory());","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"ph-nathan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"ph-nathan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ph-nathan":59}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ph-nathan"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ph-nathan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ph-nathan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ph-nathan"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ph-nathan"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ph-nathan"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ph-nathan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ph-nathan"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ph-nathan":8}},{"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":"ph-nathan"},"content":"java -classpath ..\\bin Pippi \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"ph-nathan":1,"-":20}}] diff --git a/ph-nathan_ip_master/commits.json b/ph-nathan_ip_master/commits.json index 94886e2c..eb278341 100644 --- a/ph-nathan_ip_master/commits.json +++ b/ph-nathan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ph-nathan":[{"date":"2023-08-23","commitResults":[{"hash":"3374d21d86f2ca2415ec1ce03bf6bfeecfc34bb2","isMergeCommit":false,"messageTitle":"Refactor code for level 0: Rename, Greet and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":10}}},{"hash":"78478b1b7bd5c32a987f6f39669a70055d38a929","isMergeCommit":false,"messageTitle":"Add logic for Level 1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":20}}},{"hash":"851b8259458eade32a54235940f2c3ebb6b2e4c2","isMergeCommit":false,"messageTitle":"Add logic for adding tasks and listing for Level 2: Add, list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}}]},{"date":"2023-08-24","commitResults":[{"hash":"3b5efb6752040054ee3c5d73551fe5258304d1d5","isMergeCommit":false,"messageTitle":"Add logic for marking and unmarking of tasks for Level 3: Mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":39}}},{"hash":"b25d2e7f01e0409f18edf7244711bec9a7494303","isMergeCommit":false,"messageTitle":"Add logic to handle adding different event types for Level 4: ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":23}}},{"hash":"d1dec12dabf181154dce497e173227c7e9785c75","isMergeCommit":false,"messageTitle":"Add testing for Level-A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"1dfca71c39c780777497633d69adde9896a72149","isMergeCommit":false,"messageTitle":"Add exception handling for Level-5: Handle Error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"2fe14a60632c3cc45dc8416fb1597e8f33614802","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"225a7f9b0b8d2d7f46089d1a2f08a6650feb3a21","isMergeCommit":false,"messageTitle":"Fix error with previous commit and add logic for deleting events for Level 5 + 6","messageBody":"","tags":["Level-6","Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":60}}}]},{"date":"2023-08-30","commitResults":[{"hash":"2d7feda494779acaeca66d9103ccc8e0c3b4855d","isMergeCommit":false,"messageTitle":"Add logic for saving and retrieving saved tasks for Level 7: Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":98,"deletions":5}}},{"hash":"c720ce02152db085563ad3eabc11bc080756d6a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 into master branch","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"c7d23c9032ddb8c98bb00065ced12af80d64735b","isMergeCommit":false,"messageTitle":"Add date formatter for deadline tasks for Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":39,"deletions":7}}},{"hash":"230c05abaed609362a9a1539b20cacddf8443067","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"c6dc3565f47a2fa7797db720b7e9cdd1c10ce19e","isMergeCommit":false,"messageTitle":"Refactor codebase to follow OOP for increment A","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":185,"deletions":184}}},{"hash":"27fbc6d5a8105b009948c94bb59dd09c21d29774","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"eafe114be6a40ed37a24f8c30ae9727207e903ec","isMergeCommit":false,"messageTitle":"Refactor code into packages for increment A-Packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":49,"deletions":3}}},{"hash":"35ca6401dc5a2fac257eec2d16b6546947f9cfeb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"fac7dcbe93f4c8b0ba8610f97347ca16c1a5223d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5a3f043926d41b1bc7888bfb661d6baa5e3df6ad","isMergeCommit":false,"messageTitle":"Add gradle to project for increment A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"java":{"insertions":17,"deletions":15}}},{"hash":"f16ea0440fa75014eafe3f95d36dde06cb23fe9a","isMergeCommit":false,"messageTitle":"Add JUnit tests for Task and DateFormatter classes","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":0}}},{"hash":"533a87459cc112018fff419962720e45f257e74a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"e8b98f1d7810dc3537134f96d1719da54c0a7809","isMergeCommit":false,"messageTitle":"Add logic for finding tasks for Level-9: Find","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":13,"deletions":0}}},{"hash":"d12e3835db9e1babbdf5b91d7d90edc7ae742dfc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ph-nathan":{"java":491,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":12}},"authorContributionVariance":{"ph-nathan":30669.943},"authorDisplayNameMap":{"ph-nathan":"CS2103T-F11-1 PHAM..NHAT"}} +{"authorDailyContributionsMap":{"ph-nathan":[{"date":"2023-08-23","commitResults":[{"hash":"3374d21d86f2ca2415ec1ce03bf6bfeecfc34bb2","isMergeCommit":false,"messageTitle":"Refactor code for level 0: Rename, Greet and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":10}}},{"hash":"78478b1b7bd5c32a987f6f39669a70055d38a929","isMergeCommit":false,"messageTitle":"Add logic for Level 1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":20}}},{"hash":"851b8259458eade32a54235940f2c3ebb6b2e4c2","isMergeCommit":false,"messageTitle":"Add logic for adding tasks and listing for Level 2: Add, list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}}]},{"date":"2023-08-24","commitResults":[{"hash":"3b5efb6752040054ee3c5d73551fe5258304d1d5","isMergeCommit":false,"messageTitle":"Add logic for marking and unmarking of tasks for Level 3: Mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":39}}},{"hash":"b25d2e7f01e0409f18edf7244711bec9a7494303","isMergeCommit":false,"messageTitle":"Add logic to handle adding different event types for Level 4: ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":23}}},{"hash":"d1dec12dabf181154dce497e173227c7e9785c75","isMergeCommit":false,"messageTitle":"Add testing for Level-A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"1dfca71c39c780777497633d69adde9896a72149","isMergeCommit":false,"messageTitle":"Add exception handling for Level-5: Handle Error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"2fe14a60632c3cc45dc8416fb1597e8f33614802","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"225a7f9b0b8d2d7f46089d1a2f08a6650feb3a21","isMergeCommit":false,"messageTitle":"Fix error with previous commit and add logic for deleting events for Level 5 + 6","messageBody":"","tags":["Level-6","Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":60}}}]},{"date":"2023-08-30","commitResults":[{"hash":"2d7feda494779acaeca66d9103ccc8e0c3b4855d","isMergeCommit":false,"messageTitle":"Add logic for saving and retrieving saved tasks for Level 7: Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":98,"deletions":5}}},{"hash":"c720ce02152db085563ad3eabc11bc080756d6a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 into master branch","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"c7d23c9032ddb8c98bb00065ced12af80d64735b","isMergeCommit":false,"messageTitle":"Add date formatter for deadline tasks for Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":39,"deletions":7}}},{"hash":"230c05abaed609362a9a1539b20cacddf8443067","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"c6dc3565f47a2fa7797db720b7e9cdd1c10ce19e","isMergeCommit":false,"messageTitle":"Refactor codebase to follow OOP for increment A","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":185,"deletions":184}}},{"hash":"27fbc6d5a8105b009948c94bb59dd09c21d29774","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"eafe114be6a40ed37a24f8c30ae9727207e903ec","isMergeCommit":false,"messageTitle":"Refactor code into packages for increment A-Packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":49,"deletions":3}}},{"hash":"35ca6401dc5a2fac257eec2d16b6546947f9cfeb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"fac7dcbe93f4c8b0ba8610f97347ca16c1a5223d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5a3f043926d41b1bc7888bfb661d6baa5e3df6ad","isMergeCommit":false,"messageTitle":"Add gradle to project for increment A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"java":{"insertions":17,"deletions":15}}},{"hash":"f16ea0440fa75014eafe3f95d36dde06cb23fe9a","isMergeCommit":false,"messageTitle":"Add JUnit tests for Task and DateFormatter classes","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":0}}},{"hash":"533a87459cc112018fff419962720e45f257e74a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"e8b98f1d7810dc3537134f96d1719da54c0a7809","isMergeCommit":false,"messageTitle":"Add logic for finding tasks for Level-9: Find","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":13,"deletions":0}}},{"hash":"d12e3835db9e1babbdf5b91d7d90edc7ae742dfc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"61fc0fde670904bae549732781d2a9e84f94f9b2","isMergeCommit":false,"messageTitle":"Add javadoc for methods for increment A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":8}}},{"hash":"192cf58161439d1d2336a4e8eabfe78cae59fd11","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ph-nathan":{"java":573,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":12}},"authorContributionVariance":{"ph-nathan":28629.627},"authorDisplayNameMap":{"ph-nathan":"CS2103T-F11-1 PHAM..NHAT"}} diff --git a/phiphi-tan_ip_master/authorship.json b/phiphi-tan_ip_master/authorship.json index c1da7e3f..77eecbf9 100644 --- a/phiphi-tan_ip_master/authorship.json +++ b/phiphi-tan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/tasklist.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"T|true|cry","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"T|false|coding homework","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"D|false|get better at coding|ASAP","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"E|false|more coding|now|end of time","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":"D|false|finish project|Aug 31 2023","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"phiphi-tan":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":" String deadlineString;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":" public Deadline(String msg, boolean isDone, String deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":" super(Type.D,isDone, msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" this.deadlineString \u003d deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" LocalDate deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":" DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" deadlineDate \u003d LocalDate.parse(deadlineString, inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":" this.deadlineString \u003d deadlineDate.format(outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Can\u0027t find a proper date format, using deadline as a String\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"phiphi-tan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"phiphi-tan"},"content":" return super.toString() + String.format(\" (by: %s)\", deadlineString);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"phiphi-tan"},"content":" public static Deadline newDeadline(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"phiphi-tan"},"content":" if (!input.startsWith(\"deadline \")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"phiphi-tan"},"content":" String.format(\"Hey genius, did you mean \\\"deadline %s\\\"...\", input.substring(8)));","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"phiphi-tan"},"content":" } else if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Look at which moron didn\u0027t add a deadline with the \\\"/by\\\" flag\");","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"phiphi-tan"},"content":" int byFlag \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"phiphi-tan"},"content":" if (byFlag \u003d\u003d 9) {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Come on you have to fill in something...\");","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.endsWith(\"/by\") || input.endsWith(\"/by \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Hey you have to give me a deadline!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"phiphi-tan"},"content":" String taskMsg \u003d input.substring(9, byFlag - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"phiphi-tan"},"content":" String deadlineString \u003d input.substring(byFlag + 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"phiphi-tan"},"content":" return new Deadline(taskMsg, false, deadlineString);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"phiphi-tan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"phiphi-tan"},"content":" public String outputFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"phiphi-tan"},"content":" return String.format(\"%s|%b|%s|%s\", taskType.toString(), done, taskName, deadlineString);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"phiphi-tan":53}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":" String start;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":" String end;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":" public Event(String msg, boolean isDone, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" super(Type.E, isDone, msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" LocalDate startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":" LocalDate endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":" startDate \u003d LocalDate.parse(start, inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":" this.start \u003d startDate.format(outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Can\u0027t find a proper date format, using /from input as a String\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"phiphi-tan"},"content":" endDate \u003d LocalDate.parse(end, inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"phiphi-tan"},"content":" this.end \u003d endDate.format(outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"phiphi-tan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Can\u0027t find a proper date format, using /to input as a String\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"phiphi-tan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"phiphi-tan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"phiphi-tan"},"content":" return super.toString() + String.format(\" (from: %s to: %s)\", start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"phiphi-tan"},"content":" public static Event newEvent(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"phiphi-tan"},"content":" if (!input.startsWith(\"event \")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"phiphi-tan"},"content":" String.format(\"Hey genius, did you mean \\\"event %s\\\"...\", input.substring(5)));","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"phiphi-tan"},"content":" } else if (!input.contains(\"/from\") \u0026\u0026 !input.contains(\"/to\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Congratulations you\u0027re the only idiot who would leave out both \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"phiphi-tan"},"content":" \"\\\"/from\\\" and \\\"/to\\\" flags\");","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"phiphi-tan"},"content":" } else if (!input.contains(\"/from\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"You need to add a \\\"/from\\\" flag before the \\\"/to\\\" flag, halfwit\");","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"phiphi-tan"},"content":" } else if (!input.contains(\"/to\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"You need to add a \\\"/to\\\" flag after the \\\"/from\\\" flag, dimwit\");","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"phiphi-tan"},"content":" int fromFlagStart \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"phiphi-tan"},"content":" int fromFlagEnd \u003d fromFlagStart + 6;","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"phiphi-tan"},"content":" int toFlagStart \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"phiphi-tan"},"content":" int toFlagEnd \u003d toFlagStart + 4;","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"phiphi-tan"},"content":" if (fromFlagStart \u003e toFlagStart) {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Please put the \\\"/from\\\" flag before the \\\"/to\\\" flag, thanksss\");","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"phiphi-tan"},"content":" } else if (fromFlagStart \u003d\u003d 6) {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Come on you have to fill in something...\");","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"phiphi-tan"},"content":" } else if (toFlagStart \u003d\u003d fromFlagEnd) {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Your \\\"/from\\\" flag can\u0027t be empty! Leave a space if you want it blank.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.endsWith(\"/to\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Your \\\"/to\\\" flag can\u0027t be empty! Leave a space if you want it blank.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"phiphi-tan"},"content":" String taskMsg \u003d input.substring(6, fromFlagStart - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"phiphi-tan"},"content":" String fromStr \u003d input.substring(fromFlagEnd, toFlagStart - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"phiphi-tan"},"content":" String toStr \u003d input.substring(toFlagEnd);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"phiphi-tan"},"content":" return new Event(taskMsg, false, fromStr, toStr);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"phiphi-tan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"phiphi-tan"},"content":" public String outputFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"phiphi-tan"},"content":" return String.format(\"%s|%b|%s|%s|%s\", taskType.toString(), done, taskName, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"phiphi-tan":79}},{"path":"src/main/java/Phi.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":"public class Phi {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":" // scanner object for user input","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":" static Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" // arrayList to store input text given","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" static TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" readFromFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" greeting();","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":" if (input.startsWith(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":" taskList.printList(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"phiphi-tan"},"content":" taskList.doTask(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"phiphi-tan"},"content":" taskList.undoTask(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"phiphi-tan"},"content":" taskList.addTask(ToDo.newToDo(input));","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"phiphi-tan"},"content":" taskList.addTask(Deadline.newDeadline(input));","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"phiphi-tan"},"content":" taskList.addTask(Event.newEvent(input));","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"phiphi-tan"},"content":" taskList.deleteTask(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"phiphi-tan"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"SIKE I can\u0027t process that! Try again or say \\\"bye\\\" to exit\");","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"phiphi-tan"},"content":" catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"phiphi-tan"},"content":" writeToFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"phiphi-tan"},"content":" System.out.println();","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"phiphi-tan"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"phiphi-tan"},"content":" sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"phiphi-tan"},"content":" writeToFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"phiphi-tan"},"content":" goodbye();","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"phiphi-tan"},"content":" public static void greeting() {","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"phiphi-tan"},"content":" String logo \u003d \" ___ _ _ ___\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"phiphi-tan"},"content":" \"| _ \\\\ || |_ _|\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"phiphi-tan"},"content":" \"| _/ __ || | \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"phiphi-tan"},"content":" \"|_| |_||_|___| \\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"phiphi-tan"},"content":" String greetingMsg \u003d \"Hellos! I\u0027m PHI (Programmed Human Interaction)\\nWhat can I do for you?\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(logo + greetingMsg);","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"phiphi-tan"},"content":" public static void readFromFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"phiphi-tan"},"content":" File txtFile \u003d new File(\"./data/tasklist.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Attempting to read from text file...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"phiphi-tan"},"content":" Scanner txtScanner \u003d new Scanner(txtFile);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"phiphi-tan"},"content":" while (txtScanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"phiphi-tan"},"content":" taskList.addFromSc(txtScanner.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"phiphi-tan"},"content":" txtScanner.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Text file has been scanned!\\n\" + taskList.taskList.size() + \" items in the list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"phiphi-tan"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"I can\u0027t find it :( Creating new .txt file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"phiphi-tan"},"content":" txtFile.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"New .txt file created :)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"phiphi-tan"},"content":" } catch (IOException i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(i.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"phiphi-tan"},"content":" public static void writeToFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"phiphi-tan"},"content":" File txtFile \u003d new File(\"./data/tasklist.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"phiphi-tan"},"content":" FileWriter output \u003d new FileWriter(txtFile);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"phiphi-tan"},"content":" output.write(taskList.outputList());","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"phiphi-tan"},"content":" output.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"phiphi-tan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"phiphi-tan"},"content":" e.getStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"phiphi-tan"},"content":" public static void goodbye() {","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"phiphi-tan"},"content":" String exitMsg \u003d \"okk THANKS FOR COMING BYE!\";","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(exitMsg);","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"phiphi-tan":101}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":" enum Type {T, D, E}","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":" Type taskType;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":" boolean done;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":" String taskName;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":" public Task(Type taskType, boolean done, String taskName) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" public void markDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":" return done","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"phiphi-tan"},"content":" ? String.format(\"[%s][X] %s\", taskType, taskName)","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"phiphi-tan"},"content":" : String.format(\"[%s][ ] %s\", taskType, taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"phiphi-tan"},"content":" public abstract String outputFormat();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"phiphi-tan":30}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":" ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":" public TaskList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" private Task getTask(int i) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" if (i \u003c\u003d 0 || i \u003e taskList.size()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"this task does not exist, genius..\");","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":" return taskList.get(i - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":" public void doTask(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":" int number \u003d Integer.parseInt(input.substring(5));","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":" Task t \u003d getTask(number);","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"ALRIGHT NICE I\u0027ll mark this as completed :)\");","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":" t.markDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"phiphi-tan"},"content":" catch (NumberFormatException n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"OI open ur eyes and give a proper input ITS \\\"mark\\\" AND A NUMBER\");","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"phiphi-tan"},"content":" catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"phiphi-tan"},"content":" public void undoTask(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"phiphi-tan"},"content":" int number \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"phiphi-tan"},"content":" Task t \u003d getTask(number);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Oh nooo I will mark this undone then :(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"phiphi-tan"},"content":" t.markUndone();","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"phiphi-tan"},"content":" catch (NumberFormatException n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"OI open ur eyes and give a proper input ITS \\\"unmark\\\" AND A NUMBER\");","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"phiphi-tan"},"content":" catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"phiphi-tan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"phiphi-tan"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Added:\\n\" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"phiphi-tan"},"content":" public void deleteTask(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"phiphi-tan"},"content":" int number \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"phiphi-tan"},"content":" Task t \u003d getTask(number);","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(String.format(\"Alright say bye bye to task %d!\", number));","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"phiphi-tan"},"content":" this.taskList.remove(t);","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(String.format(\"There\u0027s %d task(s) in the list now.\", taskList.size()));","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"phiphi-tan"},"content":" catch (NumberFormatException n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Ugh to delete stuff, you have to input \\\"delete\\\" and the number...\");","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"phiphi-tan"},"content":" catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"phiphi-tan"},"content":" public void printList(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"phiphi-tan"},"content":" if (!input.equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Nice job did you mean \\\"list\\\" coz what you gave wasn\u0027t an accepted input\");","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"phiphi-tan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"phiphi-tan"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"You do know that to SHOW a list there has to be stuff INSIDE the (currently empty) list right?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"phiphi-tan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"phiphi-tan"},"content":" for (Task t : taskList) {","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"phiphi-tan"},"content":" System.out.printf(\"%d.%s%n\", taskList.indexOf(t) + 1, t.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"phiphi-tan"},"content":" public void addFromSc(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"phiphi-tan"},"content":" Scanner sc \u003d new Scanner(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"phiphi-tan"},"content":" sc.useDelimiter(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"phiphi-tan"},"content":" // parameter handling","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"phiphi-tan"},"content":" String taskType \u003d sc.next();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"phiphi-tan"},"content":" boolean isComplete \u003d Boolean.parseBoolean(sc.next());","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"phiphi-tan"},"content":" String taskMsg \u003d sc.next();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"phiphi-tan"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"phiphi-tan"},"content":" // todo task","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"phiphi-tan"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"phiphi-tan"},"content":" this.taskList.add(new ToDo(taskMsg, isComplete));","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"phiphi-tan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"phiphi-tan"},"content":" // deadline task","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"phiphi-tan"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"phiphi-tan"},"content":" String deadline \u003d sc.next();","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"phiphi-tan"},"content":" this.taskList.add(new Deadline(taskMsg, isComplete, deadline));","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"phiphi-tan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"phiphi-tan"},"content":" // event task","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"phiphi-tan"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"phiphi-tan"},"content":" String start \u003d sc.next();","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"phiphi-tan"},"content":" String end \u003d sc.next();","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"phiphi-tan"},"content":" this.taskList.add(new Event(taskMsg, isComplete, start, end));","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"phiphi-tan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"phiphi-tan"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"something went wrong...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"phiphi-tan"},"content":" public String outputList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"phiphi-tan"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"phiphi-tan"},"content":" for (Task t : this.taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"phiphi-tan"},"content":" output.append(t.outputFormat()).append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"phiphi-tan"},"content":" return output.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"phiphi-tan":124}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":" public ToDo(String msg, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":" super(Type.T,isDone, msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":" public static ToDo newToDo(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":" if (!input.startsWith(\"todo \")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":" String.format(\"Hey genius, did you mean \\\"todo %s\\\"...\", input.substring(4)));","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" return new ToDo(input.substring(5), false);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" public String outputFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" return String.format(\"%s|%b|%s\", taskType.toString(), done, taskName);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"phiphi-tan":23}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"todo write better code","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"todogiveproperinput","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"deadline get better at coding /by ASAP","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"deadline remember to give the flag","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":"deadline /by sometime","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":"deadline don\u0027t give a deadline /by","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":"event code /from now /to end of time","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":"event do something but I didn\u0027t add any flags","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":"event forget one flag /to tomorrow","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":"event /from here /to then","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":"listbutican\u0027tspell","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":"mark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":"marker","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":"unacceptableinput","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":"delete 2","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":"delete one","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"phiphi-tan":21}},{"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":"phiphi-tan"},"content":"java -classpath ..\\bin Phi \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"-":20,"phiphi-tan":1}}] +[{"path":"data/tasklist.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"T|true|cry","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"T|false|coding homework","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"D|false|get better at coding|ASAP","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"E|false|more coding|now|end of time","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":"D|false|something|Dec 03 2011","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"phiphi-tan":5}},{"path":"src/main/java/phi/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"package phi;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":" private String deadlineString;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":" public Deadline(String msg, boolean isDone, String deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" super(Type.D,isDone, msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" this.deadlineString \u003d deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":" LocalDate deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":" DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":" deadlineDate \u003d LocalDate.parse(deadlineString, inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":" this.deadlineString \u003d deadlineDate.format(outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Can\u0027t find a proper date format, using deadline as a String\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"phiphi-tan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"phiphi-tan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"phiphi-tan"},"content":" return super.toString() + String.format(\" (by: %s)\", deadlineString);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"phiphi-tan"},"content":" public static Deadline newDeadline(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"phiphi-tan"},"content":" if (!input.startsWith(\"deadline \")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"phiphi-tan"},"content":" String.format(\"Hey genius, did you mean \\\"deadline %s\\\"...\", input.substring(8)));","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"phiphi-tan"},"content":" } else if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Look at which moron didn\u0027t add a deadline with the \\\"/by\\\" flag\");","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"phiphi-tan"},"content":" int byFlag \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"phiphi-tan"},"content":" if (byFlag \u003d\u003d 9) {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Come on you have to fill in something...\");","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.endsWith(\"/by\") || input.endsWith(\"/by \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Hey you have to give me a deadline!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"phiphi-tan"},"content":" String taskMsg \u003d input.substring(9, byFlag - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"phiphi-tan"},"content":" String deadlineString \u003d input.substring(byFlag + 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"phiphi-tan"},"content":" return new Deadline(taskMsg, false, deadlineString);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"phiphi-tan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"phiphi-tan"},"content":" public String outputFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"phiphi-tan"},"content":" return String.format(\"%s|%b|%s|%s\", taskType.toString(), done, taskName, deadlineString);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"phiphi-tan":54}},{"path":"src/main/java/phi/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"package phi;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":" private String start;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":" private String end;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" public Event(String msg, boolean isDone, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" super(Type.E, isDone, msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":" LocalDate startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" LocalDate endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":" DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":" startDate \u003d LocalDate.parse(start, inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":" this.start \u003d startDate.format(outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Can\u0027t find a proper date format, using /from input as a String\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"phiphi-tan"},"content":" endDate \u003d LocalDate.parse(end, inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"phiphi-tan"},"content":" this.end \u003d endDate.format(outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"phiphi-tan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Can\u0027t find a proper date format, using /to input as a String\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"phiphi-tan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"phiphi-tan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"phiphi-tan"},"content":" return super.toString() + String.format(\" (from: %s to: %s)\", start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"phiphi-tan"},"content":" public static Event newEvent(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"phiphi-tan"},"content":" if (!input.startsWith(\"event \")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"phiphi-tan"},"content":" String.format(\"Hey genius, did you mean \\\"event %s\\\"...\", input.substring(5)));","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"phiphi-tan"},"content":" } else if (!input.contains(\"/from\") \u0026\u0026 !input.contains(\"/to\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Congratulations you\u0027re the only idiot who would leave out both \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"phiphi-tan"},"content":" \"\\\"/from\\\" and \\\"/to\\\" flags\");","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"phiphi-tan"},"content":" } else if (!input.contains(\"/from\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"You need to add a \\\"/from\\\" flag before the \\\"/to\\\" flag, halfwit\");","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"phiphi-tan"},"content":" } else if (!input.contains(\"/to\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"You need to add a \\\"/to\\\" flag after the \\\"/from\\\" flag, dimwit\");","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"phiphi-tan"},"content":" int fromFlagStart \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"phiphi-tan"},"content":" int fromFlagEnd \u003d fromFlagStart + 6;","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"phiphi-tan"},"content":" int toFlagStart \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"phiphi-tan"},"content":" int toFlagEnd \u003d toFlagStart + 4;","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"phiphi-tan"},"content":" if (fromFlagStart \u003e toFlagStart) {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Please put the \\\"/from\\\" flag before the \\\"/to\\\" flag, thanksss\");","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"phiphi-tan"},"content":" } else if (fromFlagStart \u003d\u003d 6) {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Come on you have to fill in something...\");","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"phiphi-tan"},"content":" } else if (toFlagStart \u003d\u003d fromFlagEnd) {","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Your \\\"/from\\\" flag can\u0027t be empty! Leave a space if you want it blank.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.endsWith(\"/to\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Your \\\"/to\\\" flag can\u0027t be empty! Leave a space if you want it blank.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"phiphi-tan"},"content":" String taskMsg \u003d input.substring(6, fromFlagStart - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"phiphi-tan"},"content":" String fromStr \u003d input.substring(fromFlagEnd, toFlagStart - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"phiphi-tan"},"content":" String toStr \u003d input.substring(toFlagEnd);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"phiphi-tan"},"content":" return new Event(taskMsg, false, fromStr, toStr);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"phiphi-tan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"phiphi-tan"},"content":" public String outputFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"phiphi-tan"},"content":" return String.format(\"%s|%b|%s|%s|%s\", taskType.toString(), done, taskName, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"phiphi-tan":80}},{"path":"src/main/java/phi/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"package phi;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":" public Parser(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":" public void handle(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" if (input.startsWith(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" tasks.printList(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" tasks.doTask(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" tasks.undoTask(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":" tasks.addTask(ToDo.newToDo(input));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":" tasks.addTask(Deadline.newDeadline(input));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":" tasks.addTask(Event.newEvent(input));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":" tasks.deleteTask(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"phiphi-tan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"SIKE I can\u0027t process that! Try again or say \\\"bye\\\" to exit\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"phiphi-tan"},"content":" catch (IllegalArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"phiphi-tan":34}},{"path":"src/main/java/phi/Phi.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"package phi;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"public class Phi {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":" private final Ui phiUi;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":" private final Storage taskStorage;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":" private final Parser phiParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":" public Phi(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" phiUi \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" taskStorage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":" tasks \u003d taskStorage.readFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" phiParser \u003d new Parser(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":" new Phi(\"./data/tasklist.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":" private void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":" phiUi.greeting();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":" takeInput();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":" phiUi.goodbye();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"phiphi-tan"},"content":" private void takeInput() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"phiphi-tan"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"phiphi-tan"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"phiphi-tan"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"phiphi-tan"},"content":" phiParser.handle(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"phiphi-tan"},"content":" taskStorage.writeToFile(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"phiphi-tan"},"content":" System.out.println();","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"phiphi-tan"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"phiphi-tan"},"content":" sc.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"phiphi-tan":38}},{"path":"src/main/java/phi/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"package phi;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":" String filepath;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":" File txtFile;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" public Storage(String filepath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":" this.txtFile \u003d new File(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" public TaskList readFromFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Attempting to read from text file...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":" Scanner txtScanner \u003d new Scanner(txtFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":" while (txtScanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":" tasks.addFromSc(txtScanner.nextLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":" txtScanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Text file has been scanned!\\n\" + tasks.listSize() + \" items in the list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"phiphi-tan"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"I can\u0027t find it :( Creating new .txt file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"phiphi-tan"},"content":" return new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"phiphi-tan"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"phiphi-tan"},"content":" public void writeToFile(TaskList taskInput) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"phiphi-tan"},"content":" FileWriter output \u003d new FileWriter(txtFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"phiphi-tan"},"content":" output.write(taskInput.outputList());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"phiphi-tan"},"content":" output.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"phiphi-tan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"phiphi-tan"},"content":" e.getStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"phiphi-tan":43}},{"path":"src/main/java/phi/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"package phi;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":" protected enum Type {T, D, E}","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":" protected Type taskType;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":" protected boolean done;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":" protected String taskName;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":" public Task(Type taskType, boolean done, String taskName) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" public void markDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"phiphi-tan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"phiphi-tan"},"content":" return done","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"phiphi-tan"},"content":" ? String.format(\"[%s][X] %s\", taskType, taskName)","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"phiphi-tan"},"content":" : String.format(\"[%s][ ] %s\", taskType, taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"phiphi-tan"},"content":" public abstract String outputFormat();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"phiphi-tan":32}},{"path":"src/main/java/phi/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"package phi;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":" public TaskList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":" private Task getTask(int i) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" if (i \u003c\u003d 0 || i \u003e taskList.size()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"this task does not exist, genius..\");","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" return taskList.get(i - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":" public void doTask(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":" int number \u003d Integer.parseInt(input.substring(5));","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":" Task t \u003d getTask(number);","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"ALRIGHT NICE I\u0027ll mark this as completed :)\");","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"phiphi-tan"},"content":" t.markDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"phiphi-tan"},"content":" catch (NumberFormatException n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"OI open ur eyes and give a proper input ITS \\\"mark\\\" AND A NUMBER\");","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"phiphi-tan"},"content":" catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"phiphi-tan"},"content":" public void undoTask(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"phiphi-tan"},"content":" int number \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"phiphi-tan"},"content":" Task t \u003d getTask(number);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Oh nooo I will mark this undone then :(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"phiphi-tan"},"content":" t.markUndone();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"phiphi-tan"},"content":" catch (NumberFormatException n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"OI open ur eyes and give a proper input ITS \\\"unmark\\\" AND A NUMBER\");","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"phiphi-tan"},"content":" catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"phiphi-tan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"phiphi-tan"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Added:\\n\" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"phiphi-tan"},"content":" public void deleteTask(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"phiphi-tan"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"phiphi-tan"},"content":" int number \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"phiphi-tan"},"content":" Task t \u003d getTask(number);","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"phiphi-tan"},"content":" System.out.printf(\"Alright say bye bye to task %d!%n\", number);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"phiphi-tan"},"content":" this.taskList.remove(t);","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"phiphi-tan"},"content":" System.out.printf(\"There\u0027s %d task(s) in the list now.%n\", taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"phiphi-tan"},"content":" catch (NumberFormatException n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"Ugh to delete stuff, you have to input \\\"delete\\\" and the number...\");","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"phiphi-tan"},"content":" catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"phiphi-tan"},"content":" public void printList(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"phiphi-tan"},"content":" if (!input.equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(\"Nice job did you mean \\\"list\\\" coz what you gave wasn\u0027t an accepted input\");","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"phiphi-tan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"phiphi-tan"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"You do know that to SHOW a list there has to be stuff INSIDE the (currently empty) list right?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"phiphi-tan"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"phiphi-tan"},"content":" for (Task t : taskList) {","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"phiphi-tan"},"content":" System.out.printf(\"%d.%s%n\", taskList.indexOf(t) + 1, t.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"phiphi-tan"},"content":" public void addFromSc(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"phiphi-tan"},"content":" Scanner sc \u003d new Scanner(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"phiphi-tan"},"content":" sc.useDelimiter(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"phiphi-tan"},"content":" // parameter handling","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"phiphi-tan"},"content":" String taskType \u003d sc.next();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"phiphi-tan"},"content":" boolean isComplete \u003d Boolean.parseBoolean(sc.next());","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"phiphi-tan"},"content":" String taskMsg \u003d sc.next();","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"phiphi-tan"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"phiphi-tan"},"content":" // todo task","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"phiphi-tan"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"phiphi-tan"},"content":" this.taskList.add(new ToDo(taskMsg, isComplete));","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"phiphi-tan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"phiphi-tan"},"content":" // deadline task","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"phiphi-tan"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"phiphi-tan"},"content":" String deadline \u003d sc.next();","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"phiphi-tan"},"content":" this.taskList.add(new Deadline(taskMsg, isComplete, deadline));","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"phiphi-tan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"phiphi-tan"},"content":" // event task","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"phiphi-tan"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"phiphi-tan"},"content":" String start \u003d sc.next();","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"phiphi-tan"},"content":" String end \u003d sc.next();","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"phiphi-tan"},"content":" this.taskList.add(new Event(taskMsg, isComplete, start, end));","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"phiphi-tan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"phiphi-tan"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(\"something went wrong...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"phiphi-tan"},"content":" public String outputList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"phiphi-tan"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"phiphi-tan"},"content":" for (Task t : this.taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"phiphi-tan"},"content":" output.append(t.outputFormat()).append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"phiphi-tan"},"content":" return output.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"phiphi-tan"},"content":" public int listSize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"phiphi-tan"},"content":" return this.taskList.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"phiphi-tan":130}},{"path":"src/main/java/phi/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"package phi;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":" public ToDo(String msg, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":" super(Type.T,isDone, msg);","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":" public static ToDo newToDo(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":" if (!input.startsWith(\"todo \")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":" throw new IllegalArgumentException(","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" String.format(\"Hey genius, did you mean \\\"todo %s\\\"...\", input.substring(4)));","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":" return new ToDo(input.substring(5), false);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" public String outputFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":" return String.format(\"%s|%b|%s\", taskType.toString(), done, taskName);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"phiphi-tan":24}},{"path":"src/main/java/phi/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"package phi;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":" public void greeting() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":" String logo \u003d \" ___ _ _ ___\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":" \"| _ \\\\ || |_ _|\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":" \"| _/ __ || | \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":" \"|_| |_||_|___| \\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":" String greetingMsg \u003d \"Hellos! I\u0027m PHI (Programmed Human Interaction)\\nWhat can I do for you?\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(logo + greetingMsg);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":" public void goodbye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":" String exitMsg \u003d \"okk THANKS FOR COMING BYE!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":" System.out.println(exitMsg);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"phiphi-tan":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"phiphi-tan"},"content":"todo write better code","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"phiphi-tan"},"content":"todogiveproperinput","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"phiphi-tan"},"content":"deadline get better at coding /by ASAP","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"phiphi-tan"},"content":"deadline remember to give the flag","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"phiphi-tan"},"content":"deadline /by sometime","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"phiphi-tan"},"content":"deadline don\u0027t give a deadline /by","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"phiphi-tan"},"content":"event code /from now /to end of time","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"phiphi-tan"},"content":"event do something but I didn\u0027t add any flags","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"phiphi-tan"},"content":"event forget one flag /to tomorrow","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"phiphi-tan"},"content":"event /from here /to then","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"phiphi-tan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"phiphi-tan"},"content":"listbutican\u0027tspell","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"phiphi-tan"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"phiphi-tan"},"content":"mark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"phiphi-tan"},"content":"marker","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"phiphi-tan"},"content":"unacceptableinput","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"phiphi-tan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"phiphi-tan"},"content":"delete 2","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"phiphi-tan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"phiphi-tan"},"content":"delete one","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"phiphi-tan"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"phiphi-tan":21}},{"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":"phiphi-tan"},"content":"java -classpath ..\\bin Phi \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"-":20,"phiphi-tan":1}}] diff --git a/phiphi-tan_ip_master/commits.json b/phiphi-tan_ip_master/commits.json index 5edc0cb2..8beaa552 100644 --- a/phiphi-tan_ip_master/commits.json +++ b/phiphi-tan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"phiphi-tan":[{"date":"2023-08-22","commitResults":[{"hash":"90fb8bab85741b25fa27852921b46a16ae815a80","isMergeCommit":false,"messageTitle":"\"Level-0 Commit\"","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":10}}},{"hash":"1393a7785e18178279367fb703cb90c296c949d0","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":10}}},{"hash":"b34dc9ec462593efca7c72ce8295e6f601d400d9","isMergeCommit":true,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8f8779fac736ae39f29f6511f837b17ce1ed1d57","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":4}}}]},{"date":"2023-08-23","commitResults":[{"hash":"c41cd6d4fe9f045d5e2b657a0834a8d55c487ec4","isMergeCommit":false,"messageTitle":"Level-3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":14}}},{"hash":"e18c794b3a9a3a27ef64f5dd46c6dc0a30afa381","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":25}}},{"hash":"a1fbcfbc2d3a13d1db827ecda13adc16b1e4ccc6","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":3,"deletions":2},"bat":{"insertions":1,"deletions":1}}},{"hash":"531019e7dbc30b5c3f3254d87e2ece36b5940154","isMergeCommit":false,"messageTitle":"Level-5: Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":6},"java":{"insertions":77,"deletions":26}}},{"hash":"e459417fa0de8c144561099ae388e157416a1ccb","isMergeCommit":false,"messageTitle":"Level-6: Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":35,"deletions":12}}},{"hash":"c79f76cfa11a343c22fd2be00602a592cccd83bf","isMergeCommit":false,"messageTitle":"A-Enums: Use Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":38,"deletions":18}}}]},{"date":"2023-08-31","commitResults":[{"hash":"472439bd3fa889bd67e0be5949a9c7392462b6a7","isMergeCommit":false,"messageTitle":"Added ./data/tasklist.txt and read/write functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":100,"deletions":10}}},{"hash":"cd203ae84b62cd161c0db9c3e890243c974f0477","isMergeCommit":false,"messageTitle":"Added proper abstraction and support for FileNotFound exceptions","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":21,"deletions":13}}},{"hash":"017ed8ef4089143f618f892f8f0e9607187ac897","isMergeCommit":false,"messageTitle":"Updated Deadline.java and Event.java for LocalDate handling","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":56,"deletions":12}}}]}]},"authorFileTypeContributionMap":{"phiphi-tan":{"java":410,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":26}},"authorContributionVariance":{"phiphi-tan":15789.07},"authorDisplayNameMap":{"phiphi-tan":"CS2103T-W15-4 PHIN.. TAN"}} +{"authorDailyContributionsMap":{"phiphi-tan":[{"date":"2023-08-22","commitResults":[{"hash":"90fb8bab85741b25fa27852921b46a16ae815a80","isMergeCommit":false,"messageTitle":"\"Level-0 Commit\"","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":10}}},{"hash":"1393a7785e18178279367fb703cb90c296c949d0","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":10}}},{"hash":"b34dc9ec462593efca7c72ce8295e6f601d400d9","isMergeCommit":true,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8f8779fac736ae39f29f6511f837b17ce1ed1d57","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":4}}}]},{"date":"2023-08-23","commitResults":[{"hash":"c41cd6d4fe9f045d5e2b657a0834a8d55c487ec4","isMergeCommit":false,"messageTitle":"Level-3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":14}}},{"hash":"e18c794b3a9a3a27ef64f5dd46c6dc0a30afa381","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":25}}},{"hash":"a1fbcfbc2d3a13d1db827ecda13adc16b1e4ccc6","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":3,"deletions":2},"bat":{"insertions":1,"deletions":1}}},{"hash":"531019e7dbc30b5c3f3254d87e2ece36b5940154","isMergeCommit":false,"messageTitle":"Level-5: Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":6},"java":{"insertions":77,"deletions":26}}},{"hash":"e459417fa0de8c144561099ae388e157416a1ccb","isMergeCommit":false,"messageTitle":"Level-6: Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":35,"deletions":12}}},{"hash":"c79f76cfa11a343c22fd2be00602a592cccd83bf","isMergeCommit":false,"messageTitle":"A-Enums: Use Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":38,"deletions":18}}}]},{"date":"2023-08-31","commitResults":[{"hash":"472439bd3fa889bd67e0be5949a9c7392462b6a7","isMergeCommit":false,"messageTitle":"Added ./data/tasklist.txt and read/write functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":100,"deletions":10}}},{"hash":"cd203ae84b62cd161c0db9c3e890243c974f0477","isMergeCommit":false,"messageTitle":"Added proper abstraction and support for FileNotFound exceptions","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":21,"deletions":13}}},{"hash":"017ed8ef4089143f618f892f8f0e9607187ac897","isMergeCommit":false,"messageTitle":"Updated Deadline.java and Event.java for LocalDate handling","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":56,"deletions":12}}}]},{"date":"2023-09-01","commitResults":[{"hash":"93b405d95cd1e929c14adced941abcb3aa6cc5b3","isMergeCommit":false,"messageTitle":"Added Parser.java, Storage.java, Ui.java for more OOP abstractions","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":113,"deletions":86}}},{"hash":"7a6b2134bc8dbc2f420c6bbb98cf29074398de41","isMergeCommit":false,"messageTitle":"Organised classes into a single package and fixed access modifiers","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":21}}}]}]},"authorFileTypeContributionMap":{"phiphi-tan":{"java":453,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":26}},"authorContributionVariance":{"phiphi-tan":17353.176},"authorDisplayNameMap":{"phiphi-tan":"CS2103T-W15-4 PHIN.. TAN"}} diff --git a/pzl111_ip_master/authorship.json b/pzl111_ip_master/authorship.json index ee08952f..e2db2058 100644 --- a/pzl111_ip_master/authorship.json +++ b/pzl111_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"T1read book","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"T0borrow book","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"D0return book /by 2/12/2019 1800","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"D0return book /by 2/01/2019 1100","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"E0dfasdf /from 2/12/2019 1800 /to 2/12/3011 0800","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"pzl111":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(formatter) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" public String encode() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" DateTimeFormatter stringformatter \u003d DateTimeFormatter.ofPattern(\"d/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" return \"D\"+getStatusNumber()+super.description + \" /by \" + this.by.format(stringformatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"pzl111":24}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(formatter) + \" to: \" + this.to.format(formatter) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" public String encode() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" return \"E\"+getStatusNumber()+super.description + \" /from \" + this.from.format(formatter) + \" /to \" + this.to.format(formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"pzl111":26}},{"path":"src/main/java/InvalidDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"public class InvalidDateTimeException extends Exception{","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":" public InvalidDateTimeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" super();","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" return \"☹ OOPS!!! Please provide a valid date and time.\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"pzl111":12}},{"path":"src/main/java/InvalidNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"public class InvalidNumberException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":" String task_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" public InvalidNumberException(String task_type) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":" super();","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" this.task_type \u003d task_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" return \"☹ OOPS!!! Please provide a valid number to \" + task_type + \".\";","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pzl111":15}},{"path":"src/main/java/InvalidRangeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"public class InvalidRangeException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":" public InvalidRangeException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" super();","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" return \"☹ OOPS!!! Please provide a valid number within the range.\";","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pzl111":12}},{"path":"src/main/java/MissingDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"public class MissingDescriptionException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":" String task_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" public MissingDescriptionException(String task_type) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" super();","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":" this.task_type \u003d task_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" return \"☹ OOPS!!! The description of a \" + task_type + \" cannot be empty.\";","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pzl111":14}},{"path":"src/main/java/MissingTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"public class MissingTimeException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":" String task_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" String time_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" public MissingTimeException(String time_type, String task_type) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":" super();","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" this.task_type \u003d task_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" this.time_type \u003d time_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" return \"☹ OOPS!!! The \" + time_type + \" time of a \" + task_type + \" cannot be empty.\";","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pzl111":16}},{"path":"src/main/java/Smolbrain.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"public class Smolbrain {","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" public static final String DATA_PATH \u003d \"data.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" public static boolean loading \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" public static boolean run \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" public static ArrayList\u003cTask\u003e data \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" private static void readFile(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" File f \u003d new File(filePath); // create a File for the given file path","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" ArrayList\u003cString\u003e strings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" Scanner s \u003d new Scanner(f); // create a Scanner using the File as the source","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Welcome back!!!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" strings.add(s.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 0; i \u003c strings.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" String type \u003d strings.get(i).substring(0, 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" String marked \u003d strings.get(i).substring(1, 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" String remain \u003d strings.get(i).substring(2);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" String txt \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" txt \u003d \"todo \" + remain;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" txt \u003d \"deadline \" + remain;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" txt \u003d \"event \" + remain;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" parse(txt.split(\" \"), data);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":" if (marked.equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" data.get(i).mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"pzl111"},"content":" System.out.println(\"New user!!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"pzl111"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"pzl111"},"content":" } catch (IOException e1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"pzl111"},"content":" System.out.println(e1);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"pzl111"},"content":" private static void appendToFile(String textToAppend) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"pzl111"},"content":" FileWriter fw \u003d new FileWriter(DATA_PATH, true); // create a FileWriter in append mode","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"pzl111"},"content":" fw.write(textToAppend);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"pzl111"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"pzl111"},"content":" private static void writeToFile(String txt) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"pzl111"},"content":" FileWriter fw \u003d new FileWriter(DATA_PATH); // create a FileWriter in append mode","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"pzl111"},"content":" fw.write(txt);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"pzl111"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"pzl111"},"content":" private static void updateData(ArrayList\u003cTask\u003e data) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 0; i \u003c data.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"pzl111"},"content":" if (i \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"pzl111"},"content":" writeToFile(data.get(i).encode());","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"pzl111"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"pzl111"},"content":" appendToFile(System.lineSeparator() + data.get(i).encode());","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"pzl111"},"content":" public static void parse(String[] words, ArrayList\u003cTask\u003e data) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"pzl111"},"content":" String descr \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"pzl111"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/MM/yyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"pzl111"},"content":" LocalDateTime dateTime \u003d LocalDateTime.now();","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"pzl111"},"content":" LocalDateTime dateTime2 \u003d LocalDateTime.now();","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"pzl111"},"content":" switch (words[0]) {","lastModifiedDate":"2023-08-20"},{"lineNumber":91,"author":{"gitId":"pzl111"},"content":" case \"list\":","lastModifiedDate":"2023-08-20"},{"lineNumber":92,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Here are the tasks in your list: \");","lastModifiedDate":"2023-08-20"},{"lineNumber":93,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 0; i \u003c data.size(); i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":94,"author":{"gitId":"pzl111"},"content":" System.out.println((i + 1) + \". \" + data.get(i));","lastModifiedDate":"2023-08-20"},{"lineNumber":95,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":96,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":97,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":98,"author":{"gitId":"pzl111"},"content":" case \"todo\":","lastModifiedDate":"2023-08-20"},{"lineNumber":99,"author":{"gitId":"pzl111"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"pzl111"},"content":" throw new MissingDescriptionException(\"todo\");","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 1; i \u003c words.length; i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":103,"author":{"gitId":"pzl111"},"content":" descr \u003d descr + words[i] + \" \";","lastModifiedDate":"2023-08-20"},{"lineNumber":104,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":105,"author":{"gitId":"pzl111"},"content":" descr \u003d descr.substring(0, descr.length() - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":106,"author":{"gitId":"pzl111"},"content":" Todo todo \u003d new Todo(descr);","lastModifiedDate":"2023-08-20"},{"lineNumber":107,"author":{"gitId":"pzl111"},"content":" data.add(todo);","lastModifiedDate":"2023-08-20"},{"lineNumber":108,"author":{"gitId":"pzl111"},"content":" if (!loading) {","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + todo);","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Now you have \" + data.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-20"},{"lineNumber":111,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":113,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":114,"author":{"gitId":"pzl111"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-20"},{"lineNumber":115,"author":{"gitId":"pzl111"},"content":" boolean by \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":116,"author":{"gitId":"pzl111"},"content":" String by_text \u003d \"\";","lastModifiedDate":"2023-08-20"},{"lineNumber":117,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 1; i \u003c words.length; i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":118,"author":{"gitId":"pzl111"},"content":" if (words[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":119,"author":{"gitId":"pzl111"},"content":" by \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":120,"author":{"gitId":"pzl111"},"content":" continue;","lastModifiedDate":"2023-08-20"},{"lineNumber":121,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":122,"author":{"gitId":"pzl111"},"content":" if (by) {","lastModifiedDate":"2023-08-20"},{"lineNumber":123,"author":{"gitId":"pzl111"},"content":" by_text \u003d by_text + words[i] + \" \";","lastModifiedDate":"2023-08-20"},{"lineNumber":124,"author":{"gitId":"pzl111"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":125,"author":{"gitId":"pzl111"},"content":" descr \u003d descr + words[i] + \" \";","lastModifiedDate":"2023-08-20"},{"lineNumber":126,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":127,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":128,"author":{"gitId":"pzl111"},"content":" if (descr.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"pzl111"},"content":" throw new MissingDescriptionException(\"deadline\");","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"pzl111"},"content":" } else if (by_text.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"pzl111"},"content":" throw new MissingTimeException(\"ending\", \"deadline\");","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"pzl111"},"content":" descr \u003d descr.substring(0, descr.length() - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":134,"author":{"gitId":"pzl111"},"content":" by_text \u003d by_text.substring(0, by_text.length() - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":135,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"pzl111"},"content":" dateTime \u003d LocalDateTime.parse(by_text, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"pzl111"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"pzl111"},"content":" throw new InvalidDateTimeException();","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"pzl111"},"content":" Deadline deadline \u003d new Deadline(descr, dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"pzl111"},"content":" data.add(deadline);","lastModifiedDate":"2023-08-20"},{"lineNumber":143,"author":{"gitId":"pzl111"},"content":" if (!loading) {","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + deadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Now you have \" + data.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-20"},{"lineNumber":146,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":148,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":149,"author":{"gitId":"pzl111"},"content":" case \"event\":","lastModifiedDate":"2023-08-20"},{"lineNumber":150,"author":{"gitId":"pzl111"},"content":" boolean from \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":151,"author":{"gitId":"pzl111"},"content":" boolean to \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":152,"author":{"gitId":"pzl111"},"content":" String from_text \u003d \"\";","lastModifiedDate":"2023-08-20"},{"lineNumber":153,"author":{"gitId":"pzl111"},"content":" String to_text \u003d \"\";","lastModifiedDate":"2023-08-20"},{"lineNumber":154,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 1; i \u003c words.length; i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":155,"author":{"gitId":"pzl111"},"content":" if (words[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":156,"author":{"gitId":"pzl111"},"content":" from \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":157,"author":{"gitId":"pzl111"},"content":" continue;","lastModifiedDate":"2023-08-20"},{"lineNumber":158,"author":{"gitId":"pzl111"},"content":" } else if (words[i].equals(\"/to\")){","lastModifiedDate":"2023-08-20"},{"lineNumber":159,"author":{"gitId":"pzl111"},"content":" to \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":160,"author":{"gitId":"pzl111"},"content":" continue;","lastModifiedDate":"2023-08-20"},{"lineNumber":161,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":162,"author":{"gitId":"pzl111"},"content":" if (to) {","lastModifiedDate":"2023-08-20"},{"lineNumber":163,"author":{"gitId":"pzl111"},"content":" to_text \u003d to_text + words[i] + \" \";","lastModifiedDate":"2023-08-20"},{"lineNumber":164,"author":{"gitId":"pzl111"},"content":" } else if (from) {","lastModifiedDate":"2023-08-20"},{"lineNumber":165,"author":{"gitId":"pzl111"},"content":" from_text \u003d from_text + words[i] + \" \";","lastModifiedDate":"2023-08-20"},{"lineNumber":166,"author":{"gitId":"pzl111"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":167,"author":{"gitId":"pzl111"},"content":" descr \u003d descr + words[i] + \" \";","lastModifiedDate":"2023-08-20"},{"lineNumber":168,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":169,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":170,"author":{"gitId":"pzl111"},"content":" if (descr.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"pzl111"},"content":" throw new MissingDescriptionException(\"event\");","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"pzl111"},"content":" } else if (from_text.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"pzl111"},"content":" throw new MissingTimeException(\"start\", \"event\");","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"pzl111"},"content":" } else if (to_text.equals(\"\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"pzl111"},"content":" throw new MissingTimeException(\"end\", \"event\");","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"pzl111"},"content":" descr \u003d descr.substring(0, descr.length() - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":178,"author":{"gitId":"pzl111"},"content":" from_text \u003d from_text.substring(0, from_text.length() - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":179,"author":{"gitId":"pzl111"},"content":" to_text \u003d to_text.substring(0, to_text.length() - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":180,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"pzl111"},"content":" dateTime \u003d LocalDateTime.parse(from_text, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"pzl111"},"content":" dateTime2 \u003d LocalDateTime.parse(to_text, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"pzl111"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"pzl111"},"content":" throw new InvalidDateTimeException();","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"pzl111"},"content":" Event event \u003d new Event(descr, dateTime, dateTime2);","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"pzl111"},"content":" data.add(event);","lastModifiedDate":"2023-08-20"},{"lineNumber":188,"author":{"gitId":"pzl111"},"content":" if (!loading) {","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + event);","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Now you have \" + data.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-20"},{"lineNumber":191,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":193,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":194,"author":{"gitId":"pzl111"},"content":" case \"mark\":","lastModifiedDate":"2023-08-20"},{"lineNumber":195,"author":{"gitId":"pzl111"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":196,"author":{"gitId":"pzl111"},"content":" throw new InvalidNumberException(\"mark\");","lastModifiedDate":"2023-08-23"},{"lineNumber":197,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":198,"author":{"gitId":"pzl111"},"content":" int marknum;","lastModifiedDate":"2023-08-23"},{"lineNumber":199,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"pzl111"},"content":" marknum \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":201,"author":{"gitId":"pzl111"},"content":" data.get(marknum - 1).mark();","lastModifiedDate":"2023-08-20"},{"lineNumber":202,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\" + data.get(marknum - 1));","lastModifiedDate":"2023-08-23"},{"lineNumber":203,"author":{"gitId":"pzl111"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":204,"author":{"gitId":"pzl111"},"content":" throw new InvalidNumberException(\"mark\");","lastModifiedDate":"2023-08-23"},{"lineNumber":205,"author":{"gitId":"pzl111"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":206,"author":{"gitId":"pzl111"},"content":" throw new InvalidRangeException();","lastModifiedDate":"2023-08-23"},{"lineNumber":207,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":208,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":209,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":210,"author":{"gitId":"pzl111"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-20"},{"lineNumber":211,"author":{"gitId":"pzl111"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":212,"author":{"gitId":"pzl111"},"content":" throw new InvalidNumberException(\"unmark\");","lastModifiedDate":"2023-08-23"},{"lineNumber":213,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":214,"author":{"gitId":"pzl111"},"content":" int unmarknum;","lastModifiedDate":"2023-08-23"},{"lineNumber":215,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":216,"author":{"gitId":"pzl111"},"content":" unmarknum \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":217,"author":{"gitId":"pzl111"},"content":" data.get(unmarknum - 1).unmark();","lastModifiedDate":"2023-08-20"},{"lineNumber":218,"author":{"gitId":"pzl111"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \\n\" + data.get(unmarknum - 1));","lastModifiedDate":"2023-08-23"},{"lineNumber":219,"author":{"gitId":"pzl111"},"content":" } catch (NumberFormatException ex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":220,"author":{"gitId":"pzl111"},"content":" throw new InvalidNumberException(\"unmark\");","lastModifiedDate":"2023-08-23"},{"lineNumber":221,"author":{"gitId":"pzl111"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":222,"author":{"gitId":"pzl111"},"content":" throw new InvalidRangeException();","lastModifiedDate":"2023-08-23"},{"lineNumber":223,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":224,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":225,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":226,"author":{"gitId":"pzl111"},"content":" case \"delete\":","lastModifiedDate":"2023-08-23"},{"lineNumber":227,"author":{"gitId":"pzl111"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":228,"author":{"gitId":"pzl111"},"content":" throw new InvalidNumberException(\"delete\");","lastModifiedDate":"2023-08-23"},{"lineNumber":229,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":230,"author":{"gitId":"pzl111"},"content":" int delnum;","lastModifiedDate":"2023-08-23"},{"lineNumber":231,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":232,"author":{"gitId":"pzl111"},"content":" delnum \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":233,"author":{"gitId":"pzl111"},"content":" String task \u003d data.get(delnum - 1).toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":234,"author":{"gitId":"pzl111"},"content":" data.remove(delnum - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":235,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\" + task);","lastModifiedDate":"2023-08-23"},{"lineNumber":236,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Now you have \" + data.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":237,"author":{"gitId":"pzl111"},"content":" } catch (NumberFormatException ex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":238,"author":{"gitId":"pzl111"},"content":" throw new InvalidNumberException(\"delete\");","lastModifiedDate":"2023-08-23"},{"lineNumber":239,"author":{"gitId":"pzl111"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":240,"author":{"gitId":"pzl111"},"content":" throw new InvalidRangeException();","lastModifiedDate":"2023-08-23"},{"lineNumber":241,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":242,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":243,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":244,"author":{"gitId":"pzl111"},"content":" case \"bye\":","lastModifiedDate":"2023-08-20"},{"lineNumber":245,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-20"},{"lineNumber":246,"author":{"gitId":"pzl111"},"content":" run \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":247,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":248,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":249,"author":{"gitId":"pzl111"},"content":" default:","lastModifiedDate":"2023-08-20"},{"lineNumber":250,"author":{"gitId":"pzl111"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-20"},{"lineNumber":251,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":252,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":253,"author":{"gitId":"pzl111"},"content":" } catch (InvalidRangeException | MissingDescriptionException | MissingTimeException | InvalidNumberException |","lastModifiedDate":"2023-08-31"},{"lineNumber":254,"author":{"gitId":"pzl111"},"content":" InvalidDateTimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":255,"author":{"gitId":"pzl111"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-23"},{"lineNumber":256,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":257,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":258,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":259,"author":{"gitId":"pzl111"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":260,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":261,"author":{"gitId":"pzl111"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":262,"author":{"gitId":"pzl111"},"content":" readFile(\"data.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":263,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Hello! I\u0027m Smolbrain\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":264,"author":{"gitId":"pzl111"},"content":" System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":265,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":266,"author":{"gitId":"pzl111"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":267,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":268,"author":{"gitId":"pzl111"},"content":" loading \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":269,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":270,"author":{"gitId":"pzl111"},"content":" while(run) {","lastModifiedDate":"2023-08-31"},{"lineNumber":271,"author":{"gitId":"pzl111"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":272,"author":{"gitId":"pzl111"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":273,"author":{"gitId":"pzl111"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":274,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":275,"author":{"gitId":"pzl111"},"content":" parse(words, data);","lastModifiedDate":"2023-08-31"},{"lineNumber":276,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":277,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":278,"author":{"gitId":"pzl111"},"content":" updateData(data);","lastModifiedDate":"2023-08-31"},{"lineNumber":279,"author":{"gitId":"pzl111"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":280,"author":{"gitId":"pzl111"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":281,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":282,"author":{"gitId":"pzl111"},"content":" System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":283,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":284,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":285,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":286,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"pzl111":286}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":" protected String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" public String getStatusNumber() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" return (isDone ? \"1\" : \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" public void mark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" public void unmark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" public String encode() { return \"\"; }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), description);","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"pzl111":32}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" public String encode() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" return \"T\"+getStatusNumber()+super.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"pzl111":16}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"delete","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"delete -1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"todo join sports club","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"mark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":"delete 4","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":"bye","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"pzl111":20}},{"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":"pzl111"},"content":"java -classpath ..\\bin Smolbrain \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"pzl111":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":"pzl111"},"content":"java -classpath ../bin Smolbrain \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-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":"-"},"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":{"pzl111":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":"pzl111"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" mainClass.set(\"smolbrain.Smolbrain\")","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" archiveBaseName \u003d \"smolbrain\"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":7,"-":40}},{"path":"data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"T1todo1","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"T1todo2","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"D0d1 /by 06/12/2001 1800","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"D0d2 /by 06/12/2002 2100","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"E0e1 /from 06/12/2002 2100 /to 06/12/2002 2200","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"T1todo3","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"T0todo4","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"T1todo5","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"T0todo 6","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":9}},{"path":"src/main/java/smolbrain/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.command.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.exception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" * Parses any commands or string input.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" static String descr;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" static LocalDateTime dateTime \u003d LocalDateTime.now();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" static LocalDateTime dateTime2 \u003d LocalDateTime.now();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" * Parses a list command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" * @param words Array of strings that was split by spaces.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" * @return List command.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" public static Command parseList(String[] words) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" * Parses a todo command.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" * @param words Array of strings that was split by spaces.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" * @return Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" * @throws MissingDescriptionException If there was no description provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" public static Task parseTodo(String[] words) throws MissingDescriptionException {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" descr \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" throw new MissingDescriptionException(\"todo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 1; i \u003c words.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" descr \u003d descr + words[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" descr \u003d descr.substring(0, descr.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":" return new Todo(descr);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pzl111"},"content":" * Parses a deadline command.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pzl111"},"content":" * @param words Array of strings that was split by spaces.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pzl111"},"content":" * @return Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pzl111"},"content":" * @throws MissingDescriptionException If there was no description provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pzl111"},"content":" * @throws MissingTimeException If there was no time provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"pzl111"},"content":" * @throws InvalidDateTimeException If the provided date or time was invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"pzl111"},"content":" public static Task parseDeadline(String[] words) throws MissingDescriptionException, MissingTimeException, InvalidDateTimeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"pzl111"},"content":" boolean by \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"pzl111"},"content":" descr \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"pzl111"},"content":" String by_text \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 1; i \u003c words.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"pzl111"},"content":" if (words[i].equals(\"/by\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"pzl111"},"content":" by \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"pzl111"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"pzl111"},"content":" if (by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"pzl111"},"content":" by_text \u003d by_text + words[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"pzl111"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"pzl111"},"content":" descr \u003d descr + words[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"pzl111"},"content":" if (descr.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"pzl111"},"content":" throw new MissingDescriptionException(\"deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"pzl111"},"content":" } else if (by_text.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"pzl111"},"content":" throw new MissingTimeException(\"ending\", \"deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"pzl111"},"content":" descr \u003d descr.substring(0, descr.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"pzl111"},"content":" by_text \u003d by_text.substring(0, by_text.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"pzl111"},"content":" dateTime \u003d LocalDateTime.parse(by_text, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"pzl111"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"pzl111"},"content":" throw new InvalidDateTimeException();","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"pzl111"},"content":" return new Deadline(descr, dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"pzl111"},"content":" * Parses an event command.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"pzl111"},"content":" * @param words Array of strings that was split by spaces.","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"pzl111"},"content":" * @return Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"pzl111"},"content":" * @throws MissingDescriptionException If there was no description provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"pzl111"},"content":" * @throws MissingTimeException If there was no time provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"pzl111"},"content":" * @throws InvalidDateTimeException If the provided date or time was invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"pzl111"},"content":" public static Task parseEvent(String[] words) throws MissingDescriptionException, MissingTimeException, InvalidDateTimeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"pzl111"},"content":" boolean from \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"pzl111"},"content":" boolean to \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"pzl111"},"content":" descr \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"pzl111"},"content":" String from_text \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"pzl111"},"content":" String to_text \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 1; i \u003c words.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"pzl111"},"content":" if (words[i].equals(\"/from\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"pzl111"},"content":" from \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"pzl111"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"pzl111"},"content":" } else if (words[i].equals(\"/to\")){","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"pzl111"},"content":" to \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"pzl111"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"pzl111"},"content":" if (to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"pzl111"},"content":" to_text \u003d to_text + words[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"pzl111"},"content":" } else if (from) {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"pzl111"},"content":" from_text \u003d from_text + words[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"pzl111"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"pzl111"},"content":" descr \u003d descr + words[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"pzl111"},"content":" if (descr.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"pzl111"},"content":" throw new MissingDescriptionException(\"event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"pzl111"},"content":" } else if (from_text.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"pzl111"},"content":" throw new MissingTimeException(\"start\", \"event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"pzl111"},"content":" } else if (to_text.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"pzl111"},"content":" throw new MissingTimeException(\"end\", \"event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"pzl111"},"content":" descr \u003d descr.substring(0, descr.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"pzl111"},"content":" from_text \u003d from_text.substring(0, from_text.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"pzl111"},"content":" to_text \u003d to_text.substring(0, to_text.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"pzl111"},"content":" dateTime \u003d LocalDateTime.parse(from_text, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"pzl111"},"content":" dateTime2 \u003d LocalDateTime.parse(to_text, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"pzl111"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"pzl111"},"content":" throw new InvalidDateTimeException();","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"pzl111"},"content":" return new Event(descr, dateTime, dateTime2);","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"pzl111"},"content":" * Parses a mark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"pzl111"},"content":" * @param words Array of strings that was split by spaces.","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"pzl111"},"content":" * @return Mark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"pzl111"},"content":" * @throws InvalidNumberException If the provided number cannot be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"pzl111"},"content":" * @throws InvalidRangeException If the provided number is out of range.","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"pzl111"},"content":" public static Command parseMark(String[] words) throws InvalidNumberException, InvalidRangeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"pzl111"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"pzl111"},"content":" throw new InvalidNumberException(\"mark\");","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"pzl111"},"content":" return new MarkCommand(Integer.parseInt(words[1])-1);","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"pzl111"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"pzl111"},"content":" throw new InvalidNumberException(\"mark\");","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"pzl111"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"pzl111"},"content":" throw new InvalidRangeException();","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"pzl111"},"content":" * Parses a unmark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"pzl111"},"content":" * @param words Array of strings that was split by spaces.","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"pzl111"},"content":" * @return Unmark command.","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"pzl111"},"content":" * @throws InvalidNumberException If the provided number cannot be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"pzl111"},"content":" * @throws InvalidRangeException If the provided number is out of range.","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"pzl111"},"content":" public static Command parseUnmark(String[] words) throws InvalidNumberException, InvalidRangeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"pzl111"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"pzl111"},"content":" throw new InvalidNumberException(\"mark\");","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"pzl111"},"content":" return new UnmarkCommand(Integer.parseInt(words[1])-1);","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"pzl111"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"pzl111"},"content":" throw new InvalidNumberException(\"mark\");","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"pzl111"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"pzl111"},"content":" throw new InvalidRangeException();","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"pzl111"},"content":" * Parses a delete command.","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"pzl111"},"content":" * @param words Array of strings that was split by spaces.","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"pzl111"},"content":" * @return Delete command.","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"pzl111"},"content":" * @throws InvalidNumberException If the provided number cannot be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"pzl111"},"content":" * @throws InvalidRangeException If the provided number is out of range.","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"pzl111"},"content":" public static Command parseDelete(String[] words) throws InvalidNumberException, InvalidRangeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"pzl111"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"pzl111"},"content":" throw new InvalidNumberException(\"delete\");","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"pzl111"},"content":" return new DeleteCommand(Integer.parseInt(words[1])-1);","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"pzl111"},"content":" } catch (NumberFormatException ex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"pzl111"},"content":" throw new InvalidNumberException(\"delete\");","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"pzl111"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"pzl111"},"content":" throw new InvalidRangeException();","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"pzl111"},"content":" public static Command parseFind(String[] words) throws MissingKeywordException {","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"pzl111"},"content":" descr \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"pzl111"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"pzl111"},"content":" throw new MissingKeywordException();","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 1; i \u003c words.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"pzl111"},"content":" descr \u003d descr + words[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"pzl111"},"content":" descr \u003d descr.substring(0, descr.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"pzl111"},"content":" return new FindCommand(descr);","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"pzl111"},"content":" * Parses the given input by the user including passing it into its separate parse functions.","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"pzl111"},"content":" * @param input String of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"pzl111"},"content":" * @return Command that was parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"pzl111"},"content":" * @throws MissingDescriptionException If there was no description provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"pzl111"},"content":" * @throws MissingTimeException If there was no time provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"pzl111"},"content":" * @throws InvalidDateTimeException If the provided date or time was invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"pzl111"},"content":" * @throws InvalidNumberException If the provided number cannot be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"pzl111"},"content":" * @throws InvalidRangeException If the provided number is out of range.","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"pzl111"},"content":" public static Command parse(String input) throws MissingDescriptionException, MissingTimeException, InvalidDateTimeException, InvalidNumberException, InvalidRangeException, MissingKeywordException {","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"pzl111"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"pzl111"},"content":" switch (words[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"pzl111"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"pzl111"},"content":" return parseList(words);","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"pzl111"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"pzl111"},"content":" return new AddCommand(parseTodo(words));","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"pzl111"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"pzl111"},"content":" return new AddCommand(parseDeadline(words));","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"pzl111"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"pzl111"},"content":" return new AddCommand(parseEvent(words));","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":246,"author":{"gitId":"pzl111"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":247,"author":{"gitId":"pzl111"},"content":" return parseMark(words);","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"pzl111"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"pzl111"},"content":" return parseUnmark(words);","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"pzl111"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"pzl111"},"content":" return parseDelete(words);","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"pzl111"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":256,"author":{"gitId":"pzl111"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"pzl111"},"content":" case \"find\":","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"pzl111"},"content":" return parseFind(words);","lastModifiedDate":"2023-09-01"},{"lineNumber":260,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"pzl111"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"pzl111"},"content":" return new InvalidCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":263,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":264,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"pzl111"},"content":" * Used for save file parsing, it parses the given input by the user including passing it into its separate parse functions.","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"pzl111"},"content":" * @param input String of command.","lastModifiedDate":"2023-09-01"},{"lineNumber":270,"author":{"gitId":"pzl111"},"content":" * @return Task parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"pzl111"},"content":" * @throws MissingDescriptionException If there was no description provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":272,"author":{"gitId":"pzl111"},"content":" * @throws MissingTimeException If there was no time provided.","lastModifiedDate":"2023-09-01"},{"lineNumber":273,"author":{"gitId":"pzl111"},"content":" * @throws InvalidDateTimeException If the provided date or time was invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":274,"author":{"gitId":"pzl111"},"content":" * @throws InvalidNumberException If the provided number cannot be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":275,"author":{"gitId":"pzl111"},"content":" * @throws InvalidRangeException If the provided number is out of range.","lastModifiedDate":"2023-09-01"},{"lineNumber":276,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"pzl111"},"content":" public static Task parseLoading(String input) throws MissingDescriptionException, MissingTimeException, InvalidDateTimeException, InvalidNumberException, InvalidRangeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":278,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":279,"author":{"gitId":"pzl111"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":280,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":281,"author":{"gitId":"pzl111"},"content":" switch (words[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":282,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":283,"author":{"gitId":"pzl111"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":284,"author":{"gitId":"pzl111"},"content":" return parseTodo(words);","lastModifiedDate":"2023-09-01"},{"lineNumber":285,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":286,"author":{"gitId":"pzl111"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":287,"author":{"gitId":"pzl111"},"content":" return parseDeadline(words);","lastModifiedDate":"2023-09-01"},{"lineNumber":288,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":289,"author":{"gitId":"pzl111"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":290,"author":{"gitId":"pzl111"},"content":" return parseEvent(words);","lastModifiedDate":"2023-09-01"},{"lineNumber":291,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":292,"author":{"gitId":"pzl111"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":293,"author":{"gitId":"pzl111"},"content":" return new Task(\"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":294,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":295,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":296,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":297,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":298,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":299,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":299}},{"path":"src/main/java/smolbrain/Smolbrain.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.exception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" * Smolbrain class which is the chatbot. It takes in input to create and save tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"public class Smolbrain {","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" public static boolean loading \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" * Creates a smolbrain object.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" * @param filePath Filepath of the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" public Smolbrain(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" * Runs the smolbrain chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" while(!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" Command c \u003d Parser.parse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" } catch (InvalidRangeException | MissingDescriptionException | MissingTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" InvalidNumberException | InvalidDateTimeException | MissingKeywordException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" ui.showError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pzl111"},"content":" * Creates a new Smolbrain chatbot object with specified save file path and runs the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pzl111"},"content":" * @param args User inputs for commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pzl111"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pzl111"},"content":" new Smolbrain(\"data.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":60,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"pzl111":60}},{"path":"src/main/java/smolbrain/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.exception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" * Manages the save file with creation, editing and loading functionalities.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" private String FILE_PATH;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" * Creates a storage object.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" * @param filePath Filepath of the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" FILE_PATH \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" * Appends the text passed into the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" * @param text Text to append to save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" * @throws IOException If there is problems accessing the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" public void appendToFile(String text) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" fw.write(text);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" * Writes the text passed into the save file, overwriting any previous data.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" * @param text Text to write to save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" * @throws IOException If there is problems accessing the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" public void writeToFile(String text) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" fw.write(text);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pzl111"},"content":" * Loads the save file contents for the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pzl111"},"content":" * @return ArrayList of tasks from the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pzl111"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"pzl111"},"content":" File f \u003d new File(FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"pzl111"},"content":" ArrayList\u003cTask\u003e tasklist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"pzl111"},"content":" ArrayList\u003cString\u003e strings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"pzl111"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"pzl111"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"pzl111"},"content":" strings.add(s.nextLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 0; i \u003c strings.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"pzl111"},"content":" String type \u003d strings.get(i).substring(0, 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"pzl111"},"content":" String marked \u003d strings.get(i).substring(1, 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"pzl111"},"content":" String remain \u003d strings.get(i).substring(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"pzl111"},"content":" String txt \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"pzl111"},"content":" switch (type) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"pzl111"},"content":" case \"T\":","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"pzl111"},"content":" txt \u003d \"todo \" + remain;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"pzl111"},"content":" case \"D\":","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"pzl111"},"content":" txt \u003d \"deadline \" + remain;","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"pzl111"},"content":" case \"E\":","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"pzl111"},"content":" txt \u003d \"event \" + remain;","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"pzl111"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(txt);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"pzl111"},"content":" tasklist.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"pzl111"},"content":" if (marked.equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"pzl111"},"content":" task.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"pzl111"},"content":" InvalidDateTimeException | MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"pzl111"},"content":" new Ui().showError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"pzl111"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"pzl111"},"content":" f.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"pzl111"},"content":" } catch (IOException e1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"pzl111"},"content":" new Ui().showError(e1);","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"pzl111"},"content":" return tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":112}},{"path":"src/main/java/smolbrain/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":" * Deals with user interaction and display of messages.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" private Scanner sc;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" * Creates a Ui object.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" * Displays a welcome message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" System.out.println(\"Hello! I\u0027m Smolbrain\\nWhat can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" * Displays a straight line to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" * Reads the next line that is entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" * @return String input from user.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" return sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" * Displays a formatted error message from the exception passed.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" * @param e Exception encountered by program.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" public void showError(Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":" System.out.println(\"☹ OOPS!!! \" + e);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pzl111"},"content":" * Displays the specified message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pzl111"},"content":" * @param s Message to display.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pzl111"},"content":" public void showMessage(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pzl111"},"content":" System.out.println(s);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":62}},{"path":"src/main/java/smolbrain/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" * Handles adding tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"public class AddCommand implements Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" private boolean loading;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" * Creates the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * @param task Task to add.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" * Sets the flag that chatbot is loading to true.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" public void setLoading() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" this.loading \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" * Executes this command.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" * @param tasks List of tasks of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" * @param ui Ui manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" * @param storage Storage manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" if (!loading) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" ui.showMessage(\"Got it. I\u0027ve added this task: \\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" ui.showMessage(\"Now you have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" tasks.updateTasks(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" * Indicates if this command causes chatbot to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":" * @return Boolean value if this command exits the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pzl111"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pzl111"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":57}},{"path":"src/main/java/smolbrain/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import smolbrain.exception.InvalidRangeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" * Used for other classes to implement different commands for chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"public interface Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" * Executes this command.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" * @param tasks List of tasks of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" * @param ui Ui manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * @param storage Storage manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" * @throws InvalidRangeException If the id given by user for array access is out of bound.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws InvalidRangeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" * Indicates if this command causes chatbot to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" * @return Boolean value if this command exits the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" public boolean isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" * Sets the flag that chatbot is loading to true.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" public void setLoading();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":35}},{"path":"src/main/java/smolbrain/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import smolbrain.exception.InvalidRangeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" * Handles deleting tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"public class DeleteCommand implements Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" private int id;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" private boolean loading;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * Creates the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" * @param id Array id of task to delete.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" public DeleteCommand(int id) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" this.id \u003d id;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" * Executes this command.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" * @param tasks List of tasks of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" * @param ui Ui manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" * @param storage Storage manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" * @throws InvalidRangeException If the id given by user for array access is out of bound.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws InvalidRangeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" if (this.id \u003c 0 || this.id \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" throw new InvalidRangeException();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" Task task \u003d tasks.getTask(id);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" tasks.deleteTask(id);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" ui.showMessage(\"Noted. I\u0027ve removed this task: \\n\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" ui.showMessage(\"Now you have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" tasks.updateTasks(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" * Indicates if this command causes chatbot to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":" * @return Boolean value if this command exits the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pzl111"},"content":" * Sets the flag that chatbot is loading to true.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pzl111"},"content":" public void setLoading() {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"pzl111"},"content":" this.loading \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":63}},{"path":"src/main/java/smolbrain/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" * Handles exiting chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"public class ExitCommand implements Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" private boolean loading;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" * Executes this command.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" * @param tasks List of tasks of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * @param ui Ui manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" * @param storage Storage manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" ui.showMessage(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" * Indicates if this command causes chatbot to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" * @return Boolean value if this command exits the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" * Sets the flag that chatbot is loading to true.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" public void setLoading() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" this.loading \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":44}},{"path":"src/main/java/smolbrain/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"public class FindCommand implements Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" private String keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" private boolean loading;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" ui.showMessage(\"Here are the matching tasks in your list: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" tasks.findTasks(this.keyword, ui);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" public void setLoading() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" this.loading \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":32}},{"path":"src/main/java/smolbrain/command/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import smolbrain.exception.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" * Handles an invalid or unknown command given by user.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"public class InvalidCommand implements Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" private boolean loading;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" * Executes this command.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * @param tasks List of tasks of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" * @param ui Ui manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" * @param storage Storage manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" ui.showError(new InvalidCommandException());","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" * Indicates if this command causes chatbot to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" * @return Boolean value if this command exits the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" * Sets the flag that chatbot is loading to true.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" public void setLoading() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" this.loading \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":45}},{"path":"src/main/java/smolbrain/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" * Handles listing of all tasks of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" private boolean loading;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" * Executes this command.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" * @param tasks List of tasks of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * @param ui Ui manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" * @param storage Storage manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" ui.showMessage(\"Here are the tasks in your list: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" tasks.displayTasks(ui);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" * Indicates if this command causes chatbot to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" * @return Boolean value if this command exits the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" * Sets the flag that chatbot is loading to true.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" public void setLoading() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" this.loading \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":45}},{"path":"src/main/java/smolbrain/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import smolbrain.exception.InvalidRangeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" * Handles marking tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"public class MarkCommand implements Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" private int id;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" private boolean loading;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" * Creates the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * @param id Array id of task to mark.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" public MarkCommand(int id) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" this.id \u003d id;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" * Executes this command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" * @param tasks List of tasks of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" * @param ui Ui manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" * @param storage Storage manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" * @throws InvalidRangeException If the id given by user for array access is out of bound.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws InvalidRangeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" if (this.id \u003c 0 || this.id \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" throw new InvalidRangeException();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" tasks.markTask(id);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" ui.showMessage(\"Nice! I\u0027ve marked this task as done: \\n\" + tasks.getTask(id));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" tasks.updateTasks(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" * Indicates if this command causes chatbot to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" * @return Boolean value if this command exits the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pzl111"},"content":" * Sets the flag that chatbot is loading to true.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pzl111"},"content":" public void setLoading() {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pzl111"},"content":" this.loading \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":60}},{"path":"src/main/java/smolbrain/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import smolbrain.exception.InvalidRangeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" * Handles unmarking tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"public class UnmarkCommand implements Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" private int id;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" private boolean loading;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" * Creates the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * @param id Array id of task to unmark.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" public UnmarkCommand(int id) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" this.id \u003d id;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" * Executes this command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" * @param tasks List of tasks of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" * @param ui Ui manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" * @param storage Storage manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" * @throws InvalidRangeException If the id given by user for array access is out of bound.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws InvalidRangeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" if (this.id \u003c 0 || this.id \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" throw new InvalidRangeException();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" tasks.unmarkTask(id);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" ui.showMessage(\"OK, I\u0027ve marked this task as not done yet: \\n\" + tasks.getTask(id));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" tasks.updateTasks(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" * Indicates if this command causes chatbot to exit.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" * @return Boolean value if this command exits the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pzl111"},"content":" * Sets the flag that chatbot is loading to true.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pzl111"},"content":" public void setLoading() {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pzl111"},"content":" this.loading \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":60}},{"path":"src/main/java/smolbrain/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" * Handles an invalid or unknown command given by user.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"public class InvalidCommandException extends Exception{","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" * Creates the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" super();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" * Returns the string representation of the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * @return String representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" return \"I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":25}},{"path":"src/main/java/smolbrain/exception/InvalidDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" * Handles an invalid date or time given by user.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"public class InvalidDateTimeException extends Exception{","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" * Creates the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" public InvalidDateTimeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" super();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" * Returns the string representation of the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * @return String representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" return \"Please provide a valid date and time with format of dd//MM/yyyy HHmm.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"pzl111":25}},{"path":"src/main/java/smolbrain/exception/InvalidNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" * Handles an invalid number given by user.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"public class InvalidNumberException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" String task_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" * Creates the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" * @param task_type Type of task involved.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" public InvalidNumberException(String task_type) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" super();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" this.task_type \u003d task_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" * Returns the string representation of the exception, specified with the task type.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" * @return String representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" return \"Please provide a valid number to \" + task_type + \".\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pzl111":30}},{"path":"src/main/java/smolbrain/exception/InvalidRangeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" * Handles out of bound array access id given by user.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"public class InvalidRangeException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" * Creates the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" public InvalidRangeException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" super();","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" * Returns the string representation of the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * @return String representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" return \"Please provide a valid number within the range.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pzl111":25}},{"path":"src/main/java/smolbrain/exception/MissingDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" * Handles when task description is missing.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"public class MissingDescriptionException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" String task_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" * Creates the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" * @param task_type Type of task involved.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" public MissingDescriptionException(String task_type) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" super();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" this.task_type \u003d task_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" * Returns the string representation of the exception, specified with the task type.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" * @return String representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" return \"The description of a \" + task_type + \" cannot be empty.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pzl111":30}},{"path":"src/main/java/smolbrain/exception/MissingKeywordException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"public class MissingKeywordException extends Exception{","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" public MissingKeywordException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":" super();","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" return \"Please provide a keyword for finding task(s).\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":14}},{"path":"src/main/java/smolbrain/exception/MissingTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" * Handles when required time for task is missing.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"public class MissingTimeException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" String task_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" String time_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" * Creates the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" * @param time_type Type of time that was missing.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" * @param task_type Type of task involved.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" public MissingTimeException(String time_type, String task_type) {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" super();","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" this.task_type \u003d task_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" this.time_type \u003d time_type;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" * Returns the string representation of the exception, specified with the time and task type.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" * @return String representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" return \"The \" + time_type + \" time of a \" + task_type + \" cannot be empty.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"pzl111":33}},{"path":"src/main/java/smolbrain/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" * Creates a deadline task with description and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" * Creates a deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" * @param description Task description.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" * @param by Task end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" * Returns the string representation of this task.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" * @return String representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(formatter) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" * Encodes this task into a string for saving into save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" * @return Encoded string representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" public String encode() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" DateTimeFormatter stringformatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" return \"D\"+getStatusNumber()+super.description + \" /by \" + this.by.format(stringformatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"pzl111":45}},{"path":"src/main/java/smolbrain/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" * Creates a event task with description, start and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" * Creates a deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" * @param description Task description.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * @param from Task start time.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" * @param to Task end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" * Returns the string representation of this task.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" * @return String representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(formatter) + \" to: \" + this.to.format(formatter) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" * Encodes this task into a string for saving into save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" * @return Encoded string representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" public String encode() {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" return \"E\" + getStatusNumber() + super.description + \" /from \" + this.from.format(formatter) + \" /to \" + this.to.format(formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"pzl111":48}},{"path":"src/main/java/smolbrain/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" * Used to create different task types","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" protected String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" * Creates a task with specified description.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" * @param description Task description.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" * Returns the string symbol indicating if task is marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" * @return String symbol.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" * Returns a number as a string indicating if task is marked, for saving into save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" * @return String representation of marked number.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" public String getStatusNumber() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" return (isDone ? \"1\" : \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" * Marks this task.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" public void mark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" * Unmarks this task.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" public void unmark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pzl111"},"content":" * Checks if task description contains the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pzl111"},"content":" * @param keyword Keyword to check.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pzl111"},"content":" * @return Whether task description contains the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"pzl111"},"content":" public boolean contain(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"pzl111"},"content":" return this.description.contains(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"pzl111"},"content":" * Encodes this task into a string for saving into save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"pzl111"},"content":" * @return Encoded string representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"pzl111"},"content":" public String encode() { return \"\"; }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"pzl111"},"content":" * Returns the string representation of this task.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"pzl111"},"content":" * @return String representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":77,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":78,"author":{"gitId":"pzl111"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), description);","lastModifiedDate":"2023-08-20"},{"lineNumber":79,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":80,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"pzl111":81}},{"path":"src/main/java/smolbrain/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import smolbrain.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" * List of tasks for chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" private ArrayList\u003cTask\u003e tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" * Creates a tasklist with the given ArrayList of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" * @param tasklist Tasklist using given ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" public TaskList(ArrayList\u003cTask\u003e tasklist) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" this.tasklist \u003d tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" * Adds the given task into tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" * @param task Task to add.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" tasklist.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" * Deletes the given task from tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" * @param id Id of task to delete.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" public void deleteTask(int id) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" tasklist.remove(id);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" * Marks the given task in tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" * @param id Id of task to mark.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" public void markTask(int id) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" tasklist.get(id).mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":" * Unmarks the given task in tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":" * @param id Id of task to unmark.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pzl111"},"content":" public void unmarkTask(int id) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pzl111"},"content":" tasklist.get(id).unmark();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pzl111"},"content":" * Returns the number of tasks in tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"pzl111"},"content":" * @return Number of tasks in tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"pzl111"},"content":" public int getSize(){","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"pzl111"},"content":" return tasklist.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"pzl111"},"content":" * Displays all the tasks in tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"pzl111"},"content":" * @param ui Ui manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"pzl111"},"content":" public void displayTasks(Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 0; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"pzl111"},"content":" ui.showMessage((i + 1) + \". \" + tasklist.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"pzl111"},"content":" * Returns the specified task in tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"pzl111"},"content":" * @param id Id of task to retriece.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"pzl111"},"content":" public Task getTask(int id) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"pzl111"},"content":" return tasklist.get(id);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"pzl111"},"content":" * Saves the tasks in tasklist into save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"pzl111"},"content":" * @param storage Storage manager of chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"pzl111"},"content":" public void updateTasks(Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"pzl111"},"content":" if (tasklist.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"pzl111"},"content":" storage.writeToFile(\"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"pzl111"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 0; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"pzl111"},"content":" if (i \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"pzl111"},"content":" storage.writeToFile(tasklist.get(i).encode());","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"pzl111"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"pzl111"},"content":" storage.appendToFile(System.lineSeparator() + tasklist.get(i).encode());","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"pzl111"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"pzl111"},"content":" new Ui().showError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"pzl111"},"content":" public void findTasks(String keyword, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"pzl111"},"content":" if (tasklist.size() \u003e 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"pzl111"},"content":" for (int i \u003d 0; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"pzl111"},"content":" if (tasklist.get(i).contain(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"pzl111"},"content":" ui.showMessage((i + 1) + \". \" + tasklist.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":118}},{"path":"src/main/java/smolbrain/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":" * Creates a todo task with desription.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" * Creates a todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" * @param description Task description.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" * Returns the string representation of this task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" * @return String representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" * Encodes this task into a string for saving into save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" * @return Encoded string representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" public String encode() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" return \"T\" + getStatusNumber() + super.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"pzl111":37}},{"path":"src/test/java/smolbrain/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"import smolbrain.exception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import smolbrain.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" public void parseTodoTest1() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" String input \u003d \"todo todo1\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" String output \u003d \"[T][ ] todo1\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" assertEquals(output, task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" public void parseTodoTest2() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" String input \u003d \"todo tododescription 123\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":" String output \u003d \"[T][ ] tododescription 123\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" assertEquals(output, task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" public void parseInvalidTodo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" String input \u003d \"todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! The description of a todo cannot be empty.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":" public void parseDeadlineTest1() {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"pzl111"},"content":" String input \u003d \"deadline newdeadline1 /by 06/12/2020 1800\";","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"pzl111"},"content":" String output \u003d \"[D][ ] newdeadline1 (by: Dec 06 2020 18:00)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"pzl111"},"content":" assertEquals(output, task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"pzl111"},"content":" public void parseDeadlineTest2() {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"pzl111"},"content":" String input \u003d \"deadline newdeadline1 with spaced out text /by 16/02/2120 1100\";","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"pzl111"},"content":" String output \u003d \"[D][ ] newdeadline1 with spaced out text (by: Feb 16 2120 11:00)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"pzl111"},"content":" assertEquals(output, task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"pzl111"},"content":" public void parseInvalidDeadlineTest1() {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"pzl111"},"content":" String input \u003d \"deadline\";","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! The description of a deadline cannot be empty.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"pzl111"},"content":" public void parseInvalidDeadlineTest2() {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"pzl111"},"content":" String input \u003d \"deadline description\";","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! The ending time of a deadline cannot be empty.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"pzl111"},"content":" public void parseInvalidDeadlineTest3() {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"pzl111"},"content":" String input \u003d \"deadline description /by 12/2/2000 1900\";","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! Please provide a valid date and time with format of dd//MM/yyyy HHmm.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"pzl111"},"content":" public void parseInvalidDeadlineTest4() {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"pzl111"},"content":" String input \u003d \"deadline description /by 12/31/2000 1900\";","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! Please provide a valid date and time with format of dd//MM/yyyy HHmm.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"pzl111"},"content":" public void parseInvalidDeadlineTest5() {","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"pzl111"},"content":" String input \u003d \"deadline description /by 12/11/2000 2500\";","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! Please provide a valid date and time with format of dd//MM/yyyy HHmm.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"pzl111"},"content":" public void parseInvalidDeadlineTest6() {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"pzl111"},"content":" String input \u003d \"deadline description /by 12/11/2000 11:00\";","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! Please provide a valid date and time with format of dd//MM/yyyy HHmm.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"pzl111"},"content":" public void parseEventTest1() {","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"pzl111"},"content":" String input \u003d \"event newevent1 /from 06/12/2020 1800 /to 06/12/3020 1800\";","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"pzl111"},"content":" String output \u003d \"[E][ ] newevent1 (from: Dec 06 2020 18:00 to: Dec 06 3020 18:00)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"pzl111"},"content":" assertEquals(output, task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"pzl111"},"content":" public void parseEventTest2() {","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"pzl111"},"content":" String input \u003d \"event newevent2 with space text /from 06/11/1900 1800 /to 06/12/2020 2300\";","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"pzl111"},"content":" String output \u003d \"[E][ ] newevent2 with space text (from: Nov 06 1900 18:00 to: Dec 06 2020 23:00)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"pzl111"},"content":" assertEquals(output, task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"pzl111"},"content":" public void parseInvalidEventTest1() {","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"pzl111"},"content":" String input \u003d \"event\";","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! The description of a event cannot be empty.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"pzl111"},"content":" public void parseInvalidEventTest2() {","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"pzl111"},"content":" String input \u003d \"event eventdescr\";","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! The start time of a event cannot be empty.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"pzl111"},"content":" public void parseInvalidEventTest3() {","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"pzl111"},"content":" String input \u003d \"event eventdescr /from 06/11/1900 1800\";","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! The end time of a event cannot be empty.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"pzl111"},"content":" public void parseInvalidEventTest4() {","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"pzl111"},"content":" String input \u003d \"event description /from 12/2/2000 1900 /to 12/2/2000 1900\";","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! Please provide a valid date and time with format of dd//MM/yyyy HHmm.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"pzl111"},"content":" public void parseInvalidEventTest5() {","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"pzl111"},"content":" String input \u003d \"event description /from 12/31/2000 1900 /to 12/31/2000 1900\";","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! Please provide a valid date and time with format of dd//MM/yyyy HHmm.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":246,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":247,"author":{"gitId":"pzl111"},"content":" public void parseInvalidEventTest6() {","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"pzl111"},"content":" String input \u003d \"event description /from 12/11/2000 2500 /to 12/11/2000 2500\";","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! Please provide a valid date and time with format of dd//MM/yyyy HHmm.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":256,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":260,"author":{"gitId":"pzl111"},"content":" public void parseInvalidEventTest7() {","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"pzl111"},"content":" String input \u003d \"event description /from 12/11/2000 11:00 /to 12/11/2000 11:00\";","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"pzl111"},"content":" String output \u003d \"☹ OOPS!!! Please provide a valid date and time with format of dd//MM/yyyy HHmm.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":263,"author":{"gitId":"pzl111"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":264,"author":{"gitId":"pzl111"},"content":" Task task \u003d Parser.parseLoading(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"pzl111"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"pzl111"},"content":" } catch (InvalidNumberException | InvalidRangeException | MissingTimeException | InvalidDateTimeException |","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"pzl111"},"content":" MissingDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"pzl111"},"content":" assertEquals(output, new UiStub().showError(e));","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":270,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":271}},{"path":"src/test/java/smolbrain/UiStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"public class UiStub {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":" public String showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":" return \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" public String showError(Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" return \"☹ OOPS!!! \" + e;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" public String showMessage(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":" return s;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":17}},{"path":"src/test/java/smolbrain/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"package smolbrain.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":" public void newTodoTest1() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":" String descr \u003d \"[T][ ] todo1description\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":" assertEquals(descr, new Todo(\"todo1description\").toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":" public void newTodoTest2() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":" String descr \u003d \"[T][ ] todo2description\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":" assertEquals(descr, new Todo(\"todo2description\").toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"pzl111"},"content":" public void markedTodoTest1() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"pzl111"},"content":" String descr \u003d \"[T][X] todo1description\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"pzl111"},"content":" Todo todo \u003d new Todo(\"todo1description\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"pzl111"},"content":" todo.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"pzl111"},"content":" assertEquals(descr, todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"pzl111"},"content":" public void markedTodoTest2() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"pzl111"},"content":" String descr \u003d \"[T][X] todo2description\";","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"pzl111"},"content":" Todo todo \u003d new Todo(\"todo2description\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"pzl111"},"content":" todo.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"pzl111"},"content":" assertEquals(descr, todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"pzl111"},"content":" public void encodeUnmarkedTodoTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"pzl111"},"content":" String descr \u003d \"T0todo1description\";","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"pzl111"},"content":" assertEquals(descr, new Todo(\"todo1description\").encode());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"pzl111"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"pzl111"},"content":" public void encodeMarkedTodoTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"pzl111"},"content":" String descr \u003d \"T1todo2description\";","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"pzl111"},"content":" Todo todo \u003d new Todo(\"todo2description\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"pzl111"},"content":" todo.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"pzl111"},"content":" assertEquals(descr, todo.encode());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"pzl111"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"pzl111"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"pzl111"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":52}},{"path":"text-ui-test/data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"T1read book","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"D0return book /by 06/06/1999 1800","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"E0project meeting /from 06/06/1999 1800 /to 06/12/2009 2200","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"T0borrow book","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"pzl111":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"pzl111"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"pzl111"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"pzl111"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"pzl111"},"content":"delete","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"pzl111"},"content":"delete -1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"pzl111"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"pzl111"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"pzl111"},"content":"deadline return book /by 06/06/1999 1800","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"pzl111"},"content":"event project meeting /from 06/06/1999 1800 /to 06/12/2009 2200","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"pzl111"},"content":"todo join sports club","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"pzl111"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"pzl111"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"pzl111"},"content":"mark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"pzl111"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"pzl111"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"pzl111"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"pzl111"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"pzl111"},"content":"delete 4","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"pzl111"},"content":"bye","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"pzl111":19}},{"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":"pzl111"},"content":"java -classpath ..\\bin Smolbrain \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"pzl111":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":"pzl111"},"content":"java -classpath ../bin Smolbrain \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-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":"-"},"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":{"pzl111":1,"-":37}}] diff --git a/pzl111_ip_master/commits.json b/pzl111_ip_master/commits.json index db7f977a..9f053aa9 100644 --- a/pzl111_ip_master/commits.json +++ b/pzl111_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"pzl111":[{"date":"2023-08-20","commitResults":[{"hash":"38eda6dcb2bb8a465e1ae52d0bfe56dea0b9b018","isMergeCommit":false,"messageTitle":"Completed Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}},{"hash":"3d1ad9eb69ddf7363bf550e3789af2b1227ec56b","isMergeCommit":false,"messageTitle":"Completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"3ba642b5a286c65f7d99b088825db394d5f78e56","isMergeCommit":false,"messageTitle":"Completed Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"eca12aae0f79ae0efe9de1eefbf466619b0d5ee7","isMergeCommit":false,"messageTitle":"Completed Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":3}}},{"hash":"de0378263b8c86acdc2729310b98ecca4dbcdcd9","isMergeCommit":false,"messageTitle":"Completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":27}}}]},{"date":"2023-08-23","commitResults":[{"hash":"2a8a0356f79c5e7089bfc627a55a5f3894efb071","isMergeCommit":false,"messageTitle":"Level-6 completed","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":85,"deletions":10},"bat":{"insertions":1,"deletions":1}}},{"hash":"bda46fdc317e6af779c8d9aac122b2f7a1eb7707","isMergeCommit":false,"messageTitle":"Completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":190,"deletions":157}}},{"hash":"26c2903701d94d099388cf4eff3e6acee9885b6a","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":18,"deletions":1}}}]},{"date":"2023-08-25","commitResults":[{"hash":"2698f04c318a300e7c39a00c5a6ccfa51e944cd6","isMergeCommit":false,"messageTitle":"Fixed A-TextUiTesting not working because of \u0027FC\u0027 command not found","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"7e9323312748a33fd1012c8a317d4416c44eef37","isMergeCommit":false,"messageTitle":"Complete Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":253,"deletions":141}}},{"hash":"d15dc02b2b4acce8b9918bce301f61f71309f73e","isMergeCommit":false,"messageTitle":"Add LocalDate imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"90d56fa27146c2a9c112f03fb8aa8883943bace9","isMergeCommit":false,"messageTitle":"Finish implementing dateTime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5},"java":{"insertions":30,"deletions":11}}},{"hash":"6d765fee16c7a09fe8b19b320bc7093663d14671","isMergeCommit":false,"messageTitle":"Add error checking for dateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"bbe9851ef91c2c0cb0d9c346f996ab3150c874c6","isMergeCommit":false,"messageTitle":"Complete Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":7}}},{"hash":"822d7eeb956f5a10860f5d2a4370853e7a699f0c","isMergeCommit":false,"messageTitle":"Change data.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5}}},{"hash":"e8aef76830d1ce2646b13a16cde7d4d366743f93","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"pzl111":{"java":453,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":25}},"authorContributionVariance":{"pzl111":30445.834},"authorDisplayNameMap":{"pzl111":"CS2103T-T11-3 PHUA..LIAN"}} +{"authorDailyContributionsMap":{"pzl111":[{"date":"2023-08-20","commitResults":[{"hash":"38eda6dcb2bb8a465e1ae52d0bfe56dea0b9b018","isMergeCommit":false,"messageTitle":"Completed Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}},{"hash":"3d1ad9eb69ddf7363bf550e3789af2b1227ec56b","isMergeCommit":false,"messageTitle":"Completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"3ba642b5a286c65f7d99b088825db394d5f78e56","isMergeCommit":false,"messageTitle":"Completed Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"eca12aae0f79ae0efe9de1eefbf466619b0d5ee7","isMergeCommit":false,"messageTitle":"Completed Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":3}}},{"hash":"de0378263b8c86acdc2729310b98ecca4dbcdcd9","isMergeCommit":false,"messageTitle":"Completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":27}}}]},{"date":"2023-08-23","commitResults":[{"hash":"2a8a0356f79c5e7089bfc627a55a5f3894efb071","isMergeCommit":false,"messageTitle":"Level-6 completed","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":85,"deletions":10},"bat":{"insertions":1,"deletions":1}}},{"hash":"bda46fdc317e6af779c8d9aac122b2f7a1eb7707","isMergeCommit":false,"messageTitle":"Completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":190,"deletions":157}}},{"hash":"26c2903701d94d099388cf4eff3e6acee9885b6a","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":18,"deletions":1}}}]},{"date":"2023-08-25","commitResults":[{"hash":"2698f04c318a300e7c39a00c5a6ccfa51e944cd6","isMergeCommit":false,"messageTitle":"Fixed A-TextUiTesting not working because of \u0027FC\u0027 command not found","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-31","commitResults":[{"hash":"7e9323312748a33fd1012c8a317d4416c44eef37","isMergeCommit":false,"messageTitle":"Complete Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":253,"deletions":141}}},{"hash":"d15dc02b2b4acce8b9918bce301f61f71309f73e","isMergeCommit":false,"messageTitle":"Add LocalDate imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"90d56fa27146c2a9c112f03fb8aa8883943bace9","isMergeCommit":false,"messageTitle":"Finish implementing dateTime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5},"java":{"insertions":30,"deletions":11}}},{"hash":"6d765fee16c7a09fe8b19b320bc7093663d14671","isMergeCommit":false,"messageTitle":"Add error checking for dateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"bbe9851ef91c2c0cb0d9c346f996ab3150c874c6","isMergeCommit":false,"messageTitle":"Complete Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":7}}},{"hash":"822d7eeb956f5a10860f5d2a4370853e7a699f0c","isMergeCommit":false,"messageTitle":"Change data.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5}}},{"hash":"e8aef76830d1ce2646b13a16cde7d4d366743f93","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"cf2ea201ad0b51bfc4cba8943ef15fc78aa681fd","isMergeCommit":false,"messageTitle":"Complete A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":8},"java":{"insertions":581,"deletions":277}}},{"hash":"78243bcf086fd54e23467c9db8feec4c8cf30945","isMergeCommit":false,"messageTitle":"Make Command Interface public","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"2d823d236b91dde3b3c6de28b6dbdfb900fc28e8","isMergeCommit":false,"messageTitle":"Complete A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":144,"deletions":21}}},{"hash":"24b295bfcc4d33d5622869b051ed573c9d05ee47","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into branch-Increments","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3d0aa004de2b652ca26440abd79896e0068facc9","isMergeCommit":false,"messageTitle":"Complete A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"txt":{"insertions":3,"deletions":1}}},{"hash":"f4eaea820e6658e0f55ecebe5e46766330d83fb5","isMergeCommit":false,"messageTitle":"Setup JUnit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"9eb3168e1b72993d88663063248ee9b4c94da735","isMergeCommit":false,"messageTitle":"Testing Todo with JUnit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":0}}},{"hash":"09d8a89459e9e50a52628c0fe6d3a45b7428f659","isMergeCommit":false,"messageTitle":"Complete A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":290,"deletions":17}}},{"hash":"9f378cfe225b5bfa28650534894343cf379b12e4","isMergeCommit":false,"messageTitle":"Complete A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"dded3a5c67816a3e23adf4eb99714f38b5bacc6d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Increments\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"10caa3bb2816afa239bd4ef39508b47b5c306378","isMergeCommit":false,"messageTitle":"Complete Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":96,"deletions":21}}},{"hash":"93b331e6bda98f2d13187451b5fa12abf75466f5","isMergeCommit":false,"messageTitle":"Complete A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":527,"deletions":4}}},{"hash":"4df8a8b8bfdcdeace8f930a10861c411a8b7fcb3","isMergeCommit":false,"messageTitle":"Configure A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0}}},{"hash":"8e78bbca5a3b8247978281853eefa1c53c064bbc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/smolbrain/Parser.java\n#\tsrc/main/java/smolbrain/task/Task.java\n","fileTypesAndContributionMap":{}},{"hash":"d815fbe52afffa9f6bf3b8111bd1ad2ccd969a1f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"pzl111":{"java":1825,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":7,"txt":32}},"authorContributionVariance":{"pzl111":277020.62},"authorDisplayNameMap":{"pzl111":"CS2103T-T11-3 PHUA..LIAN"}} diff --git a/qz1004_ip_master/authorship.json b/qz1004_ip_master/authorship.json index d1051f5c..09297078 100644 --- a/qz1004_ip_master/authorship.json +++ b/qz1004_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/jo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"qz1004":1}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"qz1004"},"content":" protected String deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"qz1004"},"content":" public Deadline(String description, boolean isDone, String deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"qz1004"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"qz1004"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"qz1004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"qz1004"},"content":" return String.format(\"[D][%s] %s (by: %s)\",","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"qz1004"},"content":" this.getStatusIcon(),","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"qz1004"},"content":" this.description,","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"qz1004"},"content":" this.deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"qz1004"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"qz1004"},"content":" public String toFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"qz1004"},"content":" return String.format(\"D | %s | %s | %s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"qz1004"},"content":" this.isDone ? \"1\" : \"0\", this.description, this.deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"qz1004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"qz1004":25}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"qz1004"},"content":" protected String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"qz1004"},"content":" protected String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"qz1004"},"content":" public Event(String description, boolean isDone, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"qz1004"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"qz1004"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"qz1004"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"qz1004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"qz1004"},"content":" return String.format(\"[E][%s] %s (from: %s to: %s)\",","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"qz1004"},"content":" this.getStatusIcon(),","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"qz1004"},"content":" this.description,","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"qz1004"},"content":" this.start,","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"qz1004"},"content":" this.end","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"qz1004"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"qz1004"},"content":" public String toFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"qz1004"},"content":" return String.format(\"E | %s | %s | %s | %s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"qz1004"},"content":" this.isDone ? \"1\" : \"0\", this.description, this.start, this.end);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"qz1004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"qz1004":28}},{"path":"src/main/java/Jo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"qz1004"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"qz1004"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"qz1004"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"qz1004"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"qz1004"},"content":"import java.util.List;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"qz1004"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"qz1004"},"content":"public class Jo {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"qz1004"},"content":" protected static List\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"qz1004"},"content":" protected static String filePath \u003d \"data/jo.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"qz1004"},"content":" protected enum TASK {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"qz1004"},"content":" todo {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"qz1004"},"content":" public void perform(String input) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"qz1004"},"content":" addTask(new Task(input, false));","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"qz1004"},"content":" },","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"qz1004"},"content":" deadline {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"qz1004"},"content":" public void perform(String input) throws JoException {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"qz1004"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"OOPS!!! Please specify a deadline.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"qz1004"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"qz1004"},"content":" String[] description \u003d input.split(\"/by\", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"qz1004"},"content":" String deadline \u003d description[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"qz1004"},"content":" String taskName \u003d description[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"qz1004"},"content":" addTask(new Deadline(taskName, false, deadline));","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"qz1004"},"content":" },","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"qz1004"},"content":" event {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"qz1004"},"content":" public void perform(String input) throws JoException {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"qz1004"},"content":" if (!input.contains(\"/from\") || !input.contains(\"/to\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"OOPS!!! Please specify a start AND end date.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"qz1004"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"qz1004"},"content":" String[] description \u003d input.split(\"/from\", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"qz1004"},"content":" String[] dates \u003d description[1].split(\"/to\", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"qz1004"},"content":" String start \u003d dates[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"qz1004"},"content":" String end \u003d dates[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"qz1004"},"content":" String taskName \u003d description[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"qz1004"},"content":" addTask(new Event(taskName, false, start, end));","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"qz1004"},"content":" };","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"qz1004"},"content":" public abstract void perform(String s) throws JoException;","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"qz1004"},"content":" protected enum COMMAND {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"qz1004"},"content":" mark {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"qz1004"},"content":" public void perform(int taskIndex) {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"qz1004"},"content":" markDone(taskList.get(taskIndex));","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"qz1004"},"content":" },","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"qz1004"},"content":" unmark {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"qz1004"},"content":" public void perform(int taskIndex) {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"qz1004"},"content":" markNotDone(taskList.get(taskIndex));","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"qz1004"},"content":" },","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"qz1004"},"content":" delete {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"qz1004"},"content":" public void perform(int taskIndex) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"qz1004"},"content":" deleteTask(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"qz1004"},"content":" };","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"qz1004"},"content":" public abstract void perform(int taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"qz1004"},"content":" private static void initiateList() throws FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"qz1004"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"qz1004"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"qz1004"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"qz1004"},"content":" String[] task \u003d s.nextLine().split(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"qz1004"},"content":" String taskType \u003d task[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"qz1004"},"content":" boolean isDone \u003d task[1].trim().equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"qz1004"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"qz1004"},"content":" taskList.add(new Task(task[2].trim(), isDone));","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"qz1004"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"qz1004"},"content":" taskList.add(new Deadline(task[2].trim(), isDone, task[3].trim()));","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"qz1004"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"qz1004"},"content":" taskList.add(new Event(task[2].trim(), isDone, task[3].trim(), task[4].trim()));","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"qz1004"},"content":" private static void updateFile(String filepath) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"qz1004"},"content":" FileWriter fw \u003d new FileWriter(filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"qz1004"},"content":" for (Task t : taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"qz1004"},"content":" fw.write(t.toFile() + System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"qz1004"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"qz1004"},"content":" private static void printFileContents(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"qz1004"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"qz1004"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"qz1004"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"qz1004"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + i + \". \" + s.nextLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"qz1004"},"content":" i++;","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"qz1004"},"content":" public static void markDone(Task task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"qz1004"},"content":" task.mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"qz1004"},"content":" updateFile(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"qz1004"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e OOPS!! Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + task);","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"qz1004"},"content":" public static void markNotDone(Task task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"qz1004"},"content":" task.unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"qz1004"},"content":" updateFile(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"qz1004"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e OOPS!! Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + task);","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"qz1004"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"qz1004"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"qz1004"},"content":" updateFile(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"qz1004"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e OOPS!! Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"qz1004"},"content":" System.out.println(String.format(\"\u003e Now you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"qz1004"},"content":" public static void deleteTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"qz1004"},"content":" Task removedTask \u003d taskList.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"qz1004"},"content":" taskList.remove(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"qz1004"},"content":" updateFile(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"qz1004"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e OOPS!! Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + removedTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"qz1004"},"content":" System.out.println(String.format(\"\u003e Now you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"qz1004"},"content":" public static \u003cE extends Enum\u003cE\u003e\u003e boolean isInEnum(String input, Class\u003cE\u003e enumClass) {","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"qz1004"},"content":" for (E enumValue : enumClass.getEnumConstants()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"qz1004"},"content":" if (enumValue.name().equals(input)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"qz1004"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"qz1004"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"qz1004"},"content":" public static void processInput(String input) throws JoException {","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"qz1004"},"content":" if (input.trim().isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"OOPS!!! The command cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"qz1004"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"qz1004"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"qz1004"},"content":" Task t \u003d taskList.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + (i + 1) + \". \" + t.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"qz1004"},"content":" } else if (isInEnum(input, TASK.class)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"qz1004"},"content":" throw new JoException(String.format(\"OOPS!!! The description of a %s cannot be empty.\", input));","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"qz1004"},"content":" } else if (isInEnum(input, COMMAND.class)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"qz1004"},"content":" throw new JoException(String.format(\"OOPS!!! Please specify a valid task number to %s.\", input));","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"qz1004"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"qz1004"},"content":" String instruction \u003d input.split(\" \", 2)[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"qz1004"},"content":" if (isInEnum(instruction, TASK.class)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"qz1004"},"content":" for (TASK t : TASK.values()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"qz1004"},"content":" if (t.name().equals(instruction)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"qz1004"},"content":" t.perform(input.split(\" \", 2)[1].trim());","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"qz1004"},"content":" } else if (isInEnum(instruction, COMMAND.class)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"qz1004"},"content":" for (COMMAND c : COMMAND.values()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"qz1004"},"content":" if (c.name().equals(instruction)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"qz1004"},"content":" int taskIndex \u003d Character.getNumericValue(input.charAt(input.length() - 1)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"qz1004"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"OOPS!!! This task does not exist.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"qz1004"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"qz1004"},"content":" c.perform(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"qz1004"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"qz1004"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"qz1004"},"content":" initiateList();","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"qz1004"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e OOPS!! Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":220,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Hello! I\u0027m Jo.\\n\u003e What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":222,"author":{"gitId":"qz1004"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"qz1004"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"qz1004"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"qz1004"},"content":" processInput(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"qz1004"},"content":" } catch (JoException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e ☹ \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":230,"author":{"gitId":"qz1004"},"content":" } finally {","lastModifiedDate":"2023-08-24"},{"lineNumber":231,"author":{"gitId":"qz1004"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":234,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":236,"author":{"gitId":"qz1004"},"content":" scanner.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":238,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"qz1004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"qz1004":239}},{"path":"src/main/java/JoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"public class JoException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"qz1004"},"content":" public JoException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"qz1004"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"qz1004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"qz1004":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"qz1004"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"qz1004"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"qz1004"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"qz1004"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"qz1004"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"qz1004"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"qz1004"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"qz1004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"qz1004"},"content":" return String.format(\"[T][%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"qz1004"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"qz1004"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"qz1004"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"qz1004"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"qz1004"},"content":" public String toFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"qz1004"},"content":" return String.format(\"T | %s | %s\", this.isDone ? \"1\" : \"0\", this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"qz1004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"qz1004":29}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"qz1004"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"qz1004"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"qz1004"},"content":"todo join sports club","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"qz1004"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"qz1004"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"qz1004"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"qz1004"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"qz1004"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"qz1004":9}},{"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":"qz1004"},"content":"java -classpath ..\\bin Jo \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"-":20,"qz1004":1}},{"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":"qz1004"},"content":"java -classpath ../bin Jo \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":{"-":37,"qz1004":1}}] +[{"path":"data/jo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"qz1004":1}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"qz1004"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"qz1004"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"qz1004"},"content":" protected LocalDate deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"qz1004"},"content":" public Deadline(String description, boolean isDone, LocalDate deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"qz1004"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"qz1004"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"qz1004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"qz1004"},"content":" return String.format(\"[D][%s] %s (by: %s)\",","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"qz1004"},"content":" this.getStatusIcon(),","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"qz1004"},"content":" this.description,","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"qz1004"},"content":" this.deadline.format(DateTimeFormatter.ofPattern(\"d MMM yyyy\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"qz1004"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"qz1004"},"content":" public String toFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"qz1004"},"content":" return String.format(\"D | %s | %s | %s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"qz1004"},"content":" this.isDone ? \"1\" : \"0\", this.description, this.deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"qz1004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"qz1004":28}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"qz1004"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"qz1004"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"qz1004"},"content":" protected LocalDate start;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"qz1004"},"content":" protected LocalDate end;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"qz1004"},"content":" public Event(String description, boolean isDone, LocalDate start, LocalDate end) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"qz1004"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"qz1004"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"qz1004"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"qz1004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"qz1004"},"content":" return String.format(\"[E][%s] %s (from: %s to: %s)\",","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"qz1004"},"content":" this.getStatusIcon(),","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"qz1004"},"content":" this.description,","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"qz1004"},"content":" this.start.format(DateTimeFormatter.ofPattern(\"d MMM yyyy\")),","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"qz1004"},"content":" this.end.format(DateTimeFormatter.ofPattern(\"d MMM yyyy\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"qz1004"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"qz1004"},"content":" public String toFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"qz1004"},"content":" return String.format(\"E | %s | %s | %s | %s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"qz1004"},"content":" this.isDone ? \"1\" : \"0\", this.description, this.start, this.end);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"qz1004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"qz1004":31}},{"path":"src/main/java/Jo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"qz1004"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"qz1004"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"qz1004"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"qz1004"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"qz1004"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"qz1004"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"qz1004"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"qz1004"},"content":"import java.util.List;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"qz1004"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"qz1004"},"content":"public class Jo {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"qz1004"},"content":" protected static List\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"qz1004"},"content":" protected static String filePath \u003d \"data/jo.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"qz1004"},"content":" protected enum TASK {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"qz1004"},"content":" todo {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"qz1004"},"content":" public void perform(String input) {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"qz1004"},"content":" addTask(new Task(input, false));","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"qz1004"},"content":" },","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"qz1004"},"content":" deadline {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"qz1004"},"content":" public void perform(String input) throws JoException {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"qz1004"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"OOPS!!! Please specify a deadline.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"qz1004"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"qz1004"},"content":" String[] description \u003d input.split(\"/by\", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"qz1004"},"content":" String taskName \u003d description[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"qz1004"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"qz1004"},"content":" LocalDate deadline \u003d LocalDate.parse(description[1].trim(), formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"qz1004"},"content":" addTask(new Deadline(taskName, false, deadline));","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"qz1004"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"\u003e Invalid date format. Please use yyyy-MM-dd.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"qz1004"},"content":" },","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"qz1004"},"content":" event {","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"qz1004"},"content":" public void perform(String input) throws JoException {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"qz1004"},"content":" if (!input.contains(\"/from\") || !input.contains(\"/to\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"OOPS!!! Please specify a start AND end date.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"qz1004"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"qz1004"},"content":" String[] description \u003d input.split(\"/from\", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"qz1004"},"content":" String[] dates \u003d description[1].split(\"/to\", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"qz1004"},"content":" String taskName \u003d description[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"qz1004"},"content":" LocalDate start \u003d LocalDate.parse(dates[0].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"qz1004"},"content":" LocalDate end \u003d LocalDate.parse(dates[1].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"qz1004"},"content":" addTask(new Event(taskName, false, start, end));","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"qz1004"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"\u003e Invalid date format. Please use yyyy-MM-dd with a valid date.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"qz1004"},"content":" },","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"qz1004"},"content":" check {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"qz1004"},"content":" public void perform(String input) throws JoException {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"qz1004"},"content":" LocalDate deadline \u003d LocalDate.parse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"qz1004"},"content":" search(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"qz1004"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"\u003e Invalid date format. Please use yyyy-MM-dd with a valid date.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"qz1004"},"content":" };","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"qz1004"},"content":" public abstract void perform(String s) throws JoException;","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"qz1004"},"content":" protected enum COMMAND {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"qz1004"},"content":" mark {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"qz1004"},"content":" public void perform(int taskIndex) {","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"qz1004"},"content":" markDone(taskList.get(taskIndex));","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"qz1004"},"content":" },","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"qz1004"},"content":" unmark {","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"qz1004"},"content":" public void perform(int taskIndex) {","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"qz1004"},"content":" markNotDone(taskList.get(taskIndex));","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"qz1004"},"content":" },","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"qz1004"},"content":" delete {","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"qz1004"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"qz1004"},"content":" public void perform(int taskIndex) {","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"qz1004"},"content":" deleteTask(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"qz1004"},"content":" };","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"qz1004"},"content":" public abstract void perform(int taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"qz1004"},"content":" private static void initiateList() throws FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"qz1004"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"qz1004"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"qz1004"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"qz1004"},"content":" String[] task \u003d s.nextLine().split(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"qz1004"},"content":" String taskType \u003d task[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"qz1004"},"content":" boolean isDone \u003d task[1].trim().equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"qz1004"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"qz1004"},"content":" taskList.add(new Task(task[2].trim(), isDone));","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"qz1004"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"qz1004"},"content":" taskList.add(new Deadline(task[2].trim(), isDone, LocalDate.parse(task[3].trim())));","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"qz1004"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"qz1004"},"content":" taskList.add(","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"qz1004"},"content":" new Event(","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"qz1004"},"content":" task[2].trim(),","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"qz1004"},"content":" isDone,","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"qz1004"},"content":" LocalDate.parse(task[3].trim()),","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"qz1004"},"content":" LocalDate.parse(task[4].trim())","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"qz1004"},"content":" )","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"qz1004"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"qz1004"},"content":" private static void updateFile(String filepath) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"qz1004"},"content":" FileWriter fw \u003d new FileWriter(filepath);","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"qz1004"},"content":" for (Task t : taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"qz1004"},"content":" fw.write(t.toFile() + System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"qz1004"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"qz1004"},"content":" public static void markDone(Task task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"qz1004"},"content":" task.mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"qz1004"},"content":" updateFile(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"qz1004"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e OOPS!! Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + task);","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"qz1004"},"content":" public static void markNotDone(Task task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"qz1004"},"content":" task.unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"qz1004"},"content":" updateFile(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"qz1004"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e OOPS!! Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + task);","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"qz1004"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"qz1004"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"qz1004"},"content":" updateFile(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"qz1004"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e OOPS!! Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"qz1004"},"content":" System.out.println(String.format(\"\u003e Now you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"qz1004"},"content":" public static void deleteTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"qz1004"},"content":" Task removedTask \u003d taskList.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"qz1004"},"content":" taskList.remove(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"qz1004"},"content":" updateFile(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"qz1004"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e OOPS!! Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + removedTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"qz1004"},"content":" System.out.println(String.format(\"\u003e Now you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"qz1004"},"content":" public static void search(LocalDate deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Here are the tasks that are due on \"","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"qz1004"},"content":" + deadline.format(DateTimeFormatter.ofPattern(\"d MMM yyyy\")) + \": \");","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"qz1004"},"content":" boolean hasTaskDue \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"qz1004"},"content":" for (Task t : taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"qz1004"},"content":" if (t instanceof Deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"qz1004"},"content":" Deadline task \u003d (Deadline) t;","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"qz1004"},"content":" if (task.deadline.equals(deadline) \u0026\u0026 !task.isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"qz1004"},"content":" hasTaskDue \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"qz1004"},"content":" } else if (t instanceof Event) {","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"qz1004"},"content":" Event task \u003d (Event) t;","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"qz1004"},"content":" if (task.end.equals(deadline) \u0026\u0026 !task.isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"qz1004"},"content":" hasTaskDue \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"qz1004"},"content":" if (!hasTaskDue) {","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\tYay, you have no task due on this day!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"qz1004"},"content":" public static \u003cE extends Enum\u003cE\u003e\u003e boolean isInEnum(String input, Class\u003cE\u003e enumClass) {","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"qz1004"},"content":" for (E enumValue : enumClass.getEnumConstants()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"qz1004"},"content":" if (enumValue.name().equals(input)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"qz1004"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"qz1004"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":217,"author":{"gitId":"qz1004"},"content":" public static void processInput(String input) throws JoException {","lastModifiedDate":"2023-08-24"},{"lineNumber":218,"author":{"gitId":"qz1004"},"content":" if (input.trim().isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"OOPS!!! The command cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"qz1004"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":221,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":224,"author":{"gitId":"qz1004"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"qz1004"},"content":" Task t \u003d taskList.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\\t\" + (i + 1) + \". \" + t.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":229,"author":{"gitId":"qz1004"},"content":" } else if (isInEnum(input, TASK.class)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":230,"author":{"gitId":"qz1004"},"content":" throw new JoException(String.format(\"OOPS!!! The description of a %s cannot be empty.\", input));","lastModifiedDate":"2023-08-24"},{"lineNumber":231,"author":{"gitId":"qz1004"},"content":" } else if (isInEnum(input, COMMAND.class)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"qz1004"},"content":" throw new JoException(String.format(\"OOPS!!! Please specify a valid task number to %s.\", input));","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"qz1004"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":234,"author":{"gitId":"qz1004"},"content":" String instruction \u003d input.split(\" \", 2)[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"qz1004"},"content":" if (isInEnum(instruction, TASK.class)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":236,"author":{"gitId":"qz1004"},"content":" for (TASK t : TASK.values()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"qz1004"},"content":" if (t.name().equals(instruction)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":238,"author":{"gitId":"qz1004"},"content":" t.perform(input.split(\" \", 2)[1].trim());","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":240,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":241,"author":{"gitId":"qz1004"},"content":" } else if (isInEnum(instruction, COMMAND.class)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"qz1004"},"content":" for (COMMAND c : COMMAND.values()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":243,"author":{"gitId":"qz1004"},"content":" if (c.name().equals(instruction)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":244,"author":{"gitId":"qz1004"},"content":" int taskIndex \u003d Character.getNumericValue(input.charAt(input.length() - 1)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":245,"author":{"gitId":"qz1004"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"OOPS!!! This task does not exist.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":247,"author":{"gitId":"qz1004"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":248,"author":{"gitId":"qz1004"},"content":" c.perform(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":249,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":250,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":251,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":252,"author":{"gitId":"qz1004"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"qz1004"},"content":" throw new JoException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":254,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":255,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":256,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":258,"author":{"gitId":"qz1004"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":259,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":260,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":261,"author":{"gitId":"qz1004"},"content":" initiateList();","lastModifiedDate":"2023-08-31"},{"lineNumber":262,"author":{"gitId":"qz1004"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":263,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e OOPS!! Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":264,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":265,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":266,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Hello! I\u0027m Jo.\\n\u003e What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":267,"author":{"gitId":"qz1004"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":268,"author":{"gitId":"qz1004"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":269,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":270,"author":{"gitId":"qz1004"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":271,"author":{"gitId":"qz1004"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":272,"author":{"gitId":"qz1004"},"content":" processInput(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":273,"author":{"gitId":"qz1004"},"content":" } catch (JoException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":274,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e ☹ \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":275,"author":{"gitId":"qz1004"},"content":" } finally {","lastModifiedDate":"2023-08-24"},{"lineNumber":276,"author":{"gitId":"qz1004"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":277,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":278,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":279,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":280,"author":{"gitId":"qz1004"},"content":" System.out.println(\"\u003e Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":281,"author":{"gitId":"qz1004"},"content":" scanner.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":282,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":283,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":284,"author":{"gitId":"qz1004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"qz1004":284}},{"path":"src/main/java/JoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"public class JoException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"qz1004"},"content":" public JoException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"qz1004"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"qz1004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"qz1004":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"qz1004"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"qz1004"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"qz1004"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"qz1004"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"qz1004"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"qz1004"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"qz1004"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"qz1004"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"qz1004"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"qz1004"},"content":" return String.format(\"[T][%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"qz1004"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"qz1004"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"qz1004"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"qz1004"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"qz1004"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"qz1004"},"content":" public String toFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"qz1004"},"content":" return String.format(\"T | %s | %s\", this.isDone ? \"1\" : \"0\", this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"qz1004"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"qz1004"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"qz1004":30}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"qz1004"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"qz1004"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"qz1004"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"qz1004"},"content":"todo join sports club","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"qz1004"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"qz1004"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"qz1004"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"qz1004"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"qz1004"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"qz1004":9}},{"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":"qz1004"},"content":"java -classpath ..\\bin Jo \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"-":20,"qz1004":1}},{"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":"qz1004"},"content":"java -classpath ../bin Jo \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":{"-":37,"qz1004":1}}] diff --git a/qz1004_ip_master/commits.json b/qz1004_ip_master/commits.json index 95ac0a11..f3e55568 100644 --- a/qz1004_ip_master/commits.json +++ b/qz1004_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"qz1004":[{"date":"2023-08-24","commitResults":[{"hash":"d5e3c174e0643853bdd626df273dae61a1a5165d","isMergeCommit":false,"messageTitle":"rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"c8bae22bc2e58b374df467fa976830b2b023ccd2","isMergeCommit":false,"messageTitle":"improved skeletal version so that it echos commands and exits when user types bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":7}}},{"hash":"b2f45174d343edd6890e1bfec473be1b8fbc6e3f","isMergeCommit":false,"messageTitle":"added the ability to store whatever text entered by the user and display them back to the user when requested","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"34e18bf9bacbec801ed615534148697b1474a9d4","isMergeCommit":false,"messageTitle":"added the ability to mark tasks as done and change the status back to not done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":4}}},{"hash":"5f49a8743bbd9d1a8a4af21d21d175ce87dcfd27","isMergeCommit":false,"messageTitle":"added support for tracking three types of tasks: ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":7}}},{"hash":"4ceba3cc24d638b91427537202c3c3f1e0f6c8a7","isMergeCommit":false,"messageTitle":"test using the I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":5,"deletions":5},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"0ac4cf6fe188fc760d3fb725b51d85ba7943c236","isMergeCommit":false,"messageTitle":"added exceptions to handle errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":35}}},{"hash":"f39c8e653a2833b5124bcffb622bcbcd56e69c18","isMergeCommit":false,"messageTitle":"added support for deleting tasks from the list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":5}}},{"hash":"bff521a7499da80a6b6c9634625eb0aa0ae74782","isMergeCommit":false,"messageTitle":"added enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":58}}}]},{"date":"2023-08-31","commitResults":[{"hash":"09c194652e961840b298494f5737ed8c859e8818","isMergeCommit":false,"messageTitle":"Add ability to save tasks to hard drive","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":101,"deletions":10}}},{"hash":"d7c3a76e74e967e71baa2945d51c352d44ce6278","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"qz1004":{"java":326,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"qz1004":16453.492},"authorDisplayNameMap":{"qz1004":"CS2103T-F12-4 HWAN..ZHEN"}} +{"authorDailyContributionsMap":{"qz1004":[{"date":"2023-08-24","commitResults":[{"hash":"d5e3c174e0643853bdd626df273dae61a1a5165d","isMergeCommit":false,"messageTitle":"rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"c8bae22bc2e58b374df467fa976830b2b023ccd2","isMergeCommit":false,"messageTitle":"improved skeletal version so that it echos commands and exits when user types bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":7}}},{"hash":"b2f45174d343edd6890e1bfec473be1b8fbc6e3f","isMergeCommit":false,"messageTitle":"added the ability to store whatever text entered by the user and display them back to the user when requested","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"34e18bf9bacbec801ed615534148697b1474a9d4","isMergeCommit":false,"messageTitle":"added the ability to mark tasks as done and change the status back to not done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":4}}},{"hash":"5f49a8743bbd9d1a8a4af21d21d175ce87dcfd27","isMergeCommit":false,"messageTitle":"added support for tracking three types of tasks: ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":7}}},{"hash":"4ceba3cc24d638b91427537202c3c3f1e0f6c8a7","isMergeCommit":false,"messageTitle":"test using the I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":5,"deletions":5},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"0ac4cf6fe188fc760d3fb725b51d85ba7943c236","isMergeCommit":false,"messageTitle":"added exceptions to handle errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":35}}},{"hash":"f39c8e653a2833b5124bcffb622bcbcd56e69c18","isMergeCommit":false,"messageTitle":"added support for deleting tasks from the list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":5}}},{"hash":"bff521a7499da80a6b6c9634625eb0aa0ae74782","isMergeCommit":false,"messageTitle":"added enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":58}}}]},{"date":"2023-08-31","commitResults":[{"hash":"09c194652e961840b298494f5737ed8c859e8818","isMergeCommit":false,"messageTitle":"Add ability to save tasks to hard drive","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":101,"deletions":10}}},{"hash":"d7c3a76e74e967e71baa2945d51c352d44ce6278","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"8b66ea59f9ee6d1a2bbcca35f28a97e75f3b3a5f","isMergeCommit":false,"messageTitle":"Add \u0027check\u0027 command to print tasks occurring on a specific date","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":25}}},{"hash":"a62d53ab4a982f87d4546e1b4fad380f0cc863bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"qz1004":{"java":378,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"qz1004":15571.095},"authorDisplayNameMap":{"qz1004":"CS2103T-F12-4 HWAN..ZHEN"}} diff --git a/raydenlim_ip_master/authorship.json b/raydenlim_ip_master/authorship.json index 28025de2..42a07c5a 100644 --- a/raydenlim_ip_master/authorship.json +++ b/raydenlim_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"[A][X] hi","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"hay hay bay bay","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"[A][X] lol","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"raydenlim":3}},{"path":"src/main/java/Add.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"public class Add extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":" public Add(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"raydenlim":5}},{"path":"src/main/java/DeadLine.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"public class DeadLine extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":" protected String by;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" public DeadLine(String description, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" // return \"[D]\" + (isDone ? \"[X]\" : \"[ ]\") + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" return getTask() + getStatusIcon() + \" \" + description + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"raydenlim":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" private TaskListManager taskListManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" public Duke() throws DukeException, FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" taskListManager \u003d new TaskListManager(\"data\", \"tasks.txt\", taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" taskListManager.loadTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" private Task parseTaskInput(String input) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" TaskType taskType \u003d TaskType.valueOf(words[0].toUpperCase());","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" String taskDescription \u003d input.replaceFirst(words[0], \"\").trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" case ADD:","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"What should I add in? Pleas add in a description :)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" return new Add(taskDescription);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Task Description cannot be EMPTY. Please add in a description :)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" return new ToDo(taskDescription);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" String[] deadlineParts \u003d taskDescription.split(\"/by\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" String description \u003d deadlineParts[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Please provide a task description.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" if (deadlineParts.length \u003c 2 || deadlineParts[0].trim().isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"When is \" + deadlineParts[0] + \" due? use /by: (date)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" return new DeadLine(deadlineParts[0].trim(), deadlineParts[1].trim());","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" case EVENT:","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" String[] eventParts \u003d taskDescription.split(\"/from\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" String desc \u003d eventParts[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" if (desc.isEmpty() || desc.equals(\"/from\") || desc.equals(\"/to\") ) {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Please provide a task description.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" } else if (eventParts.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"When is \" + desc + \"? use /from: (date) /to: (date)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" String[] toParts \u003d eventParts[1].split(\"/to\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" if (toParts.length \u003c 2 || toParts[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"When is \" + eventParts[0] + \"? use /from: (date) /to: (date)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" return new Event(desc, toParts[0].trim(), toParts[1].trim());","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" return null;","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" public void start() throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Hello from\\n\" + \"Bloooooooop\");","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Hello! I\u0027m BloopBot\");","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Keywords: add, deadline, event, todo, bye, echo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"\\n____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" boolean isEcho \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" while (isEcho) {","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" String strInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" String[] words \u003d strInput.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" String firstWord \u003d words[0].toLowerCase();","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" TaskType taskType \u003d TaskType.valueOf(firstWord.toUpperCase());","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" if (firstWord.equals(\"add\") || firstWord.equals(\"todo\") ||","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" firstWord.equals(\"deadline\") || firstWord.equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" Task newTasks \u003d parseTaskInput(strInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" if (newTasks !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" taskList.addTask(newTasks);","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" taskListManager.saveTask(taskList.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" case BYE:","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" isEcho \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" taskListManager.saveTask(taskList.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" taskList.displayTasks();","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" case MARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" int taskIndex \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" if (taskList.isMarked(taskIndex)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Task is already marked\");","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" taskList.doneAndDusted(taskIndex);","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" case UNMARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" taskIndex \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" if (taskList.isMarked(taskIndex)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" taskList.notDoneNotDusted(taskIndex);","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Task is already unmarked\");","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" case DELETE:","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Please provide a task number to delete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" taskIndex \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" taskList.deleteTask(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" case ECHO:","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" String[] echoWords \u003d strInput.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" if (echoWords.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\" Nothing to echo!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" String echoedText \u003d echoWords[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Echo!! \" + echoedText);","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Woops, I don\u0027t know this command. I only know: add, todo, deadline, event, list, mark, unmark, delete, bye, echo\");","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Woops, I don\u0027t know this command, sorry :(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Pay $100 to unlock more features!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"\\n____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" public static void main(String[] args) throws DukeException, FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" Duke bloopBot \u003d new Duke();","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" bloopBot.start();","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" } catch (DukeException | FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"An error occurred: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"raydenlim":155,"-":3}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":" public DukeException(String e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":" super(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"raydenlim":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":" protected String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":" protected String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" // return \"[E]\" + (isDone ? \"[X]\" : \"[ ]\") + super.toString() + \" (from: \" + from + \" to \" + to + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" return getTask() + getStatusIcon() + \" \" + description + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"raydenlim":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":" public Task(String taskDesc) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":" this.description \u003d taskDesc;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" public void isCompleted() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public void isNotCompleted() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" return (isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" public String getTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" return \"[\" + getTypeIcon() + \"]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" if (this instanceof Add) {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" return \"A\";","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" } else if (this instanceof ToDo) {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" return \"T\";","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" } else if (this instanceof DeadLine) {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" return \"D\";","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" } else if (this instanceof Event) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" return \"E\";","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" return \"Error: No Such Task\";","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" return getTask() + getStatusIcon() + \" \" + description;","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"raydenlim":43}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" public TaskList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" public void addTask(Task taskDesc) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" if (taskList.size() \u003c 100) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" taskList.add(taskDesc);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" \" + taskDesc);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" 100/100 Task limit reached.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Pay to upgrade your account.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public void displayTasks() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"No task present in list\");","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" \" + (i + 1) + \".\" + taskList.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" public void doneAndDusted(int taskNum) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" if (taskNum \u003e\u003d 0 \u0026\u0026 taskNum \u003c taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" taskList.get(taskNum).isCompleted();","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" \" + taskList.get(taskNum));","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Error: No such Task Number\");","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" public void notDoneNotDusted(int taskNum) {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" if (taskNum \u003e\u003d 0 \u0026\u0026 taskNum \u003c taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" taskList.get(taskNum).isNotCompleted();","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" \" + taskList.get(taskNum));","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Error: No such Task Number\");","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" public boolean isMarked(int taskNum) {","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" if (taskNum \u003e\u003d 0 \u0026\u0026 taskNum \u003c taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" return taskList.get(taskNum).isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Error: No such Task Number\");","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" public void deleteTask(int taskNum) {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" if (taskNum \u003e\u003d 0 \u0026\u0026 taskNum \u003c taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" Task removedTask \u003d taskList.remove(taskNum);","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" \" + removedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Error: No such Task Number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" return taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" public void loadTasks(TaskList loadedTasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" taskList.clear();","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" taskList.addAll(loadedTasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"raydenlim":83}},{"path":"src/main/java/TaskListManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"public class TaskListManager {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" private String taskDataPath;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" public TaskListManager(String directoryPath, String fileName, TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" this.taskDataPath \u003d directoryPath + \"/\" + fileName;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" if (new File(directoryPath).mkdirs()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Directories are created.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Directories already exist.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" this.file \u003d new File(taskDataPath);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" if (this.file.createNewFile()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"File is created: \" + this.file.getName());","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"File already exists.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" public void saveTask(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" FileWriter w \u003d new FileWriter(taskDataPath);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" w.write(task.toString() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" w.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Error occurred when saving tasks to file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" public void loadTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" File file \u003d new File(taskDataPath);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"No such file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" String taskData \u003d fileScanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" parseTask(taskData);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" fileScanner.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Error occurred when loading tasks from file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"File is corrupted :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" private void parseTask(String taskData) throws FileNotFoundException, DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" String taskType \u003d taskData.substring(1, 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" boolean isDone \u003d taskData.charAt(4) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" String taskInfo \u003d taskData.substring(7);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" Task taskToAdd \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" case \"A\":","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" taskToAdd \u003d new Add(taskInfo);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" taskToAdd \u003d new ToDo(taskInfo);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" taskInfo \u003d taskInfo.substring(0, taskInfo.indexOf(\"(\") - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" String xtraInfo \u003d taskData.substring(taskData.indexOf(\"(\") + 1, taskData.indexOf(\")\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" String[] deadLineInfo \u003d xtraInfo.split(\": \");","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" String by \u003d deadLineInfo[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" taskToAdd \u003d new DeadLine(taskInfo, by);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" taskInfo \u003d taskInfo.substring(0, taskInfo.indexOf(\u0027(\u0027) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" String addInfo \u003d taskData.substring(taskData.indexOf(\u0027(\u0027) + 1, taskData.indexOf(\u0027)\u0027));","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" String[] eventInfo \u003d addInfo.split(\": \");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" String from \u003d eventInfo[1].substring(0, eventInfo[1].length() - 2).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" String to \u003d eventInfo[2].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" taskToAdd \u003d new Event(taskInfo, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"File is corrupted!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" if (taskToAdd !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" taskToAdd.isCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" taskList.addTask(taskToAdd);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" taskList.addTask(new Task(\"(CORRUPTED) \" + taskData));","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"raydenlim":111}},{"path":"src/main/java/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"public enum TaskType {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":" ADD, TODO, DEADLINE, EVENT, LIST, MARK, UNMARK, DELETE, BYE, ECHO, UNKNOWN","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"raydenlim":3}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":" public ToDo(String taskDesc) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":" super(taskDesc);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"raydenlim":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"echo Choo Choo Train!!!","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"add Fish","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"todo Gamble until bankrupt","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"deadline plan summer break 2.0 /by 2024","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"delete 4","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"sup","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"raydenlim":15}},{"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":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"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":24,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"raydenlim":1,"-":38}}] +[{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"[D][ ] die (by: 12/12/12)","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"[D][ ] die (by: 12 Dec 0012 20:12)","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"[D][ ] die1 (by: 12/12/12 12:12)","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"[D][ ] die2 (by: 13 Dec 0012 07:59)","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"[D][ ] die3 (by: 13 Dec 2012 07:59)","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"[D][ ] die5 (by: 12 Dec 2012 16:00)","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"[D][ ] die6 (by: 12 Dec 2012 08:00)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"[E][ ] die7 (from: 12 Dec 2012 08:00 to: 12 Dec 2012 09:00)","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"[D][ ] afterlife (by: 11 Nov 2011 23:59)","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"raydenlim":9}},{"path":"src/main/java/Add.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"public class Add extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":" public Add(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"raydenlim":5}},{"path":"src/main/java/DeadLine.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"public class DeadLine extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" protected LocalDateTime byDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":" protected String byDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" public DeadLine(String description, String byDescription) {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" this.byDescription \u003d byDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" this.byDateTime \u003d parseDateTime(byDescription);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" if (byDateTime !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" return getTask() + getStatusIcon() + \" \" + description + \" (by: \" + super.printDateTime(this.byDateTime) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" return getTask() + getStatusIcon() + \" \" + description + \" (by: \" + byDescription + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"raydenlim":21}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" private TaskListManager taskListManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" public Duke() throws DukeException, FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" taskListManager \u003d new TaskListManager(\"data\", \"tasks.txt\", taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" taskListManager.loadTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" private Task parseTaskInput(String input) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" TaskType taskType \u003d TaskType.valueOf(words[0].toUpperCase());","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" String taskDescription \u003d input.replaceFirst(words[0], \"\").trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" case ADD:","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"What should I add in? Pleas add in a description :)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" return new Add(taskDescription);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Task Description cannot be EMPTY. Please add in a description :)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" return new ToDo(taskDescription);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" String[] deadlineParts \u003d taskDescription.split(\"/by\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" String description \u003d deadlineParts[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Please provide a task description.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" if (deadlineParts.length \u003c 2 || deadlineParts[0].trim().isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"When is \" + deadlineParts[0] + \" due? use /by: (date)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" return new DeadLine(deadlineParts[0].trim(), deadlineParts[1].trim());","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" case EVENT:","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" String[] eventParts \u003d taskDescription.split(\"/from\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" String desc \u003d eventParts[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" if (desc.isEmpty() || desc.equals(\"/from\") || desc.equals(\"/to\") ) {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Please provide a task description.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" } else if (eventParts.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"When is \" + desc + \"? use /from: (date) /to: (date)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" String[] toParts \u003d eventParts[1].split(\"/to\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" if (toParts.length \u003c 2 || toParts[1].trim().isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"When is \" + eventParts[0] + \"? use /from: (date) /to: (date)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" return new Event(desc, toParts[0].trim(), toParts[1].trim());","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" return null;","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" public void start() throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Hello from\\n\" + \"Bloooooooop\");","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Hello! I\u0027m BloopBot\");","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Keywords: add, deadline, event, todo, bye, echo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"\\n____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" boolean isEcho \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" while (isEcho) {","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" String strInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" String[] words \u003d strInput.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" String firstWord \u003d words[0].toLowerCase();","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" TaskType taskType \u003d TaskType.valueOf(firstWord.toUpperCase());","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" if (firstWord.equals(\"add\") || firstWord.equals(\"todo\") ||","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" firstWord.equals(\"deadline\") || firstWord.equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" Task newTasks \u003d parseTaskInput(strInput);","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" if (newTasks !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" taskList.addTask(newTasks);","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" taskListManager.saveTask(taskList.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" case BYE:","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" isEcho \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" taskListManager.saveTask(taskList.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" taskList.displayTasks();","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" case MARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" int taskIndex \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" if (taskList.isMarked(taskIndex)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Task is already marked\");","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" taskList.doneAndDusted(taskIndex);","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":" case UNMARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"raydenlim"},"content":" taskIndex \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"raydenlim"},"content":" if (taskList.isMarked(taskIndex)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"raydenlim"},"content":" taskList.notDoneNotDusted(taskIndex);","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Task is already unmarked\");","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"raydenlim"},"content":" case DELETE:","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"raydenlim"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Please provide a task number to delete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"raydenlim"},"content":" taskIndex \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"raydenlim"},"content":" taskList.deleteTask(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"raydenlim"},"content":" case ECHO:","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"raydenlim"},"content":" String[] echoWords \u003d strInput.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"raydenlim"},"content":" if (echoWords.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\" Nothing to echo!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"raydenlim"},"content":" String echoedText \u003d echoWords[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Echo!! \" + echoedText);","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"raydenlim"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"Woops, I don\u0027t know this command. I only know: add, todo, deadline, event, list, mark, unmark, delete, bye, echo\");","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"raydenlim"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Woops, I don\u0027t know this command, sorry :(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Pay $100 to unlock more features!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"raydenlim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"\\n____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"raydenlim"},"content":" public static void main(String[] args) throws DukeException, FileNotFoundException {","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"raydenlim"},"content":" Duke bloopBot \u003d new Duke();","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"raydenlim"},"content":" bloopBot.start();","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"raydenlim"},"content":" } catch (DukeException | FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"An error occurred: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"raydenlim":155,"-":3}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":" public DukeException(String e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":" super(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"raydenlim":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" protected String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":" protected String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" protected LocalDateTime fromDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" protected LocalDateTime toDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" this.fromDate \u003d parseDateTime(from);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" this.toDate \u003d parseDateTime(to);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" if (fromDate !\u003d null \u0026\u0026 toDate !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" return getTask() + getStatusIcon() + \" \" + description + \" (from: \" + super.printDateTime(this.fromDate) + \" to: \" + super.printDateTime(this.toDate) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" return getTask() + getStatusIcon() + \" \" + description + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"raydenlim":26}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.util.Date;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" protected String dateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" public Task(String taskDesc) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" this.description \u003d taskDesc;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" public void isCompleted() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" public void isNotCompleted() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" return (isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" public String getTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" return \"[\" + getTypeIcon() + \"]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" if (this instanceof Add) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" return \"A\";","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" } else if (this instanceof ToDo) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" return \"T\";","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" } else if (this instanceof DeadLine) {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" return \"D\";","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" } else if (this instanceof Event) {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" return \"E\";","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" return \"Error: No Such Task\";","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" public String printDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter printFormat \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" String formattedDate \u003d dateTime.format(printFormat);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" return formattedDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" public LocalDateTime parseDateTime(String dateTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" SimpleDateFormat inputFormat \u003d new SimpleDateFormat(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" Date date \u003d inputFormat.parse(dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" SimpleDateFormat outputFormat \u003d new SimpleDateFormat(\"dd MMM yyyy HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" String formattedDate \u003d outputFormat.format(date);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" LocalDateTime localDateTime \u003d LocalDateTime.parse(formattedDate, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" return localDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" } catch (java.text.ParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" return getTask() + getStatusIcon() + \" \" + description;","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"raydenlim":70}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":" public TaskList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" public void addTask(Task taskDesc) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":" if (taskList.size() \u003c 100) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" taskList.add(taskDesc);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" \" + taskDesc);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" 100/100 Task limit reached.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Pay to upgrade your account.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":" public void displayTasks() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"No task present in list\");","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" \" + (i + 1) + \".\" + taskList.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" public void doneAndDusted(int taskNum) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" if (taskNum \u003e\u003d 0 \u0026\u0026 taskNum \u003c taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":" taskList.get(taskNum).isCompleted();","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" \" + taskList.get(taskNum));","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Error: No such Task Number\");","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" public void notDoneNotDusted(int taskNum) {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" if (taskNum \u003e\u003d 0 \u0026\u0026 taskNum \u003c taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" taskList.get(taskNum).isNotCompleted();","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" \" + taskList.get(taskNum));","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Error: No such Task Number\");","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" public boolean isMarked(int taskNum) {","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" if (taskNum \u003e\u003d 0 \u0026\u0026 taskNum \u003c taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" return taskList.get(taskNum).isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Error: No such Task Number\");","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" return false;","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" public void deleteTask(int taskNum) {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" if (taskNum \u003e\u003d 0 \u0026\u0026 taskNum \u003c taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" Task removedTask \u003d taskList.remove(taskNum);","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" \" + removedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":" System.out.println(\" Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Error: No such Task Number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":" return taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" public void loadTasks(TaskList loadedTasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" taskList.clear();","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" taskList.addAll(loadedTasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"raydenlim":83}},{"path":"src/main/java/TaskListManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"public class TaskListManager {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":" private String taskDataPath;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":" public TaskListManager(String directoryPath, String fileName, TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":" this.taskDataPath \u003d directoryPath + \"/\" + fileName;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"raydenlim"},"content":" if (new File(directoryPath).mkdirs()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Directories are created.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Directories already exist.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"raydenlim"},"content":" this.file \u003d new File(taskDataPath);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"raydenlim"},"content":" if (this.file.createNewFile()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"File is created: \" + this.file.getName());","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"raydenlim"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"File already exists.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"raydenlim"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"raydenlim"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"raydenlim"},"content":" public void saveTask(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"raydenlim"},"content":" FileWriter w \u003d new FileWriter(taskDataPath);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"raydenlim"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"raydenlim"},"content":" w.write(task.toString() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"raydenlim"},"content":" w.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"raydenlim"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Error occurred when saving tasks to file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"raydenlim"},"content":" public void loadTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"raydenlim"},"content":" File file \u003d new File(taskDataPath);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"raydenlim"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"No such file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"raydenlim"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"raydenlim"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"raydenlim"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"raydenlim"},"content":" String taskData \u003d fileScanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"raydenlim"},"content":" parseTask(taskData);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"raydenlim"},"content":" fileScanner.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"raydenlim"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"Error occurred when loading tasks from file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"raydenlim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"raydenlim"},"content":" System.out.println(\"File is corrupted :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"raydenlim"},"content":" private void parseTask(String taskData) throws FileNotFoundException, DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"raydenlim"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"raydenlim"},"content":" String taskType \u003d taskData.substring(1, 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"raydenlim"},"content":" boolean isDone \u003d taskData.charAt(4) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"raydenlim"},"content":" String taskInfo \u003d taskData.substring(7);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"raydenlim"},"content":" Task taskToAdd \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"raydenlim"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"raydenlim"},"content":" case \"A\":","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"raydenlim"},"content":" taskToAdd \u003d new Add(taskInfo);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"raydenlim"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"raydenlim"},"content":" taskToAdd \u003d new ToDo(taskInfo);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"raydenlim"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"raydenlim"},"content":" taskInfo \u003d taskInfo.substring(0, taskInfo.indexOf(\"(\") - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"raydenlim"},"content":" String xtraInfo \u003d taskData.substring(taskData.indexOf(\"(\") + 1, taskData.indexOf(\")\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"raydenlim"},"content":" String[] deadLineInfo \u003d xtraInfo.split(\": \");","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"raydenlim"},"content":" String by \u003d deadLineInfo[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"raydenlim"},"content":" taskToAdd \u003d new DeadLine(taskInfo, by);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"raydenlim"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"raydenlim"},"content":" taskInfo \u003d taskInfo.substring(0, taskInfo.indexOf(\u0027(\u0027) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"raydenlim"},"content":" String addInfo \u003d taskData.substring(taskData.indexOf(\u0027(\u0027) + 1, taskData.indexOf(\u0027)\u0027));","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"raydenlim"},"content":" String[] eventInfo \u003d addInfo.split(\": \");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"raydenlim"},"content":" String from \u003d eventInfo[1].substring(0, eventInfo[1].length() - 2).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"raydenlim"},"content":" String to \u003d eventInfo[2].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"raydenlim"},"content":" taskToAdd \u003d new Event(taskInfo, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"raydenlim"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"raydenlim"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"raydenlim"},"content":" throw new DukeException(\"File is corrupted!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"raydenlim"},"content":" if (taskToAdd !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"raydenlim"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"raydenlim"},"content":" taskToAdd.isCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"raydenlim"},"content":" taskList.addTask(taskToAdd);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"raydenlim"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"raydenlim"},"content":" taskList.addTask(new Task(\"(CORRUPTED) \" + taskData));","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"raydenlim"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"raydenlim":111}},{"path":"src/main/java/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"public enum TaskType {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":" ADD, TODO, DEADLINE, EVENT, LIST, MARK, UNMARK, DELETE, BYE, ECHO, UNKNOWN","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"raydenlim":3}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":" public ToDo(String taskDesc) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":" super(taskDesc);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"raydenlim":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"raydenlim"},"content":"echo Choo Choo Train!!!","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"raydenlim"},"content":"add Fish","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"raydenlim"},"content":"todo Gamble until bankrupt","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"raydenlim"},"content":"deadline plan summer break 2.0 /by 2024","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"raydenlim"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"raydenlim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"raydenlim"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"raydenlim"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"raydenlim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"raydenlim"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"raydenlim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"raydenlim"},"content":"delete 4","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"raydenlim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"raydenlim"},"content":"sup","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"raydenlim"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"raydenlim":15}},{"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":"raydenlim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"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":24,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"raydenlim":1,"-":38}}] diff --git a/raydenlim_ip_master/commits.json b/raydenlim_ip_master/commits.json index d7328015..6ddb588c 100644 --- a/raydenlim_ip_master/commits.json +++ b/raydenlim_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"raydenlim":[{"date":"2023-08-23","commitResults":[{"hash":"60d1bdd5ed89cf3844eee06e190acfb52fb931ca","isMergeCommit":false,"messageTitle":"“Level-0”","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":5}}},{"hash":"3eddb1804e730081ee3ac88934b20ae2c593c362","isMergeCommit":false,"messageTitle":"“Level-1”","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"6144cb3146f50743cdb2cb22ba699d6641ea628d","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":13}}},{"hash":"494fce3ee1fab51b375e3bedb0655a527618b037","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}},{"hash":"39a9af9fb8e44682b171519a6d98bab33a9f156f","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":15}}},{"hash":"25fb1044f56d154e4e21a09dd677bb6a2c49ed9c","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"37c13b3d624f32dcd959cf11655068cd9911650b","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":30}}},{"hash":"e38b156cfc575a2f97e9e9a29bf9e3f47aa9d28f","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"9882dbe44daad8fec3d90f23e5f233c9973eccb0","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":3,"deletions":11},"sh":{"insertions":1,"deletions":0}}},{"hash":"122638c4d5691cd909393ad84a42ba42b97431bd","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"9895ab7a3b158283fffd65fc8e00e6fd3191354d","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":66}}},{"hash":"743728c2498cf41acf03202e5bd4b0a705defcbe","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":65,"deletions":36}}}]},{"date":"2023-08-31","commitResults":[{"hash":"f699894fb671c190ba39ac05bc5b208ef24a6f6b","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":183,"deletions":54}}},{"hash":"abff3fbbdc59f8c89b965746ec96cd7d9158e718","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"raydenlim":{"java":440,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":18}},"authorContributionVariance":{"raydenlim":17945.408},"authorDisplayNameMap":{"raydenlim":"CS2103T-T15-1 LIM ..SONG"}} +{"authorDailyContributionsMap":{"raydenlim":[{"date":"2023-08-23","commitResults":[{"hash":"60d1bdd5ed89cf3844eee06e190acfb52fb931ca","isMergeCommit":false,"messageTitle":"“Level-0”","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":5}}},{"hash":"3eddb1804e730081ee3ac88934b20ae2c593c362","isMergeCommit":false,"messageTitle":"“Level-1”","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"6144cb3146f50743cdb2cb22ba699d6641ea628d","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":13}}},{"hash":"494fce3ee1fab51b375e3bedb0655a527618b037","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}},{"hash":"39a9af9fb8e44682b171519a6d98bab33a9f156f","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":15}}},{"hash":"25fb1044f56d154e4e21a09dd677bb6a2c49ed9c","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"37c13b3d624f32dcd959cf11655068cd9911650b","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":30}}},{"hash":"e38b156cfc575a2f97e9e9a29bf9e3f47aa9d28f","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"9882dbe44daad8fec3d90f23e5f233c9973eccb0","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":3,"deletions":11},"sh":{"insertions":1,"deletions":0}}},{"hash":"122638c4d5691cd909393ad84a42ba42b97431bd","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"9895ab7a3b158283fffd65fc8e00e6fd3191354d","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":66}}},{"hash":"743728c2498cf41acf03202e5bd4b0a705defcbe","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":65,"deletions":36}}}]},{"date":"2023-08-31","commitResults":[{"hash":"f699894fb671c190ba39ac05bc5b208ef24a6f6b","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":183,"deletions":54}}},{"hash":"abff3fbbdc59f8c89b965746ec96cd7d9158e718","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"381a9f500d26b096cf07cd0a0a7ca093df64e514","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":3},"java":{"insertions":51,"deletions":7}}},{"hash":"80ed4774308e2656ec976e179d783ba3485ec838","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/raydenlim/ip into branch-Level-8","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9de1e506fcb9cc7cce01cdf741809b687d44788a","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"4016ba6864353236bca6c83f8f1e38ae85d7a241","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"raydenlim":{"java":484,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":24}},"authorContributionVariance":{"raydenlim":16749.334},"authorDisplayNameMap":{"raydenlim":"CS2103T-T15-1 LIM ..SONG"}} diff --git a/rayyan35p_ip_master/authorship.json b/rayyan35p_ip_master/authorship.json index 8d4adbc7..c39332c2 100644 --- a/rayyan35p_ip_master/authorship.json +++ b/rayyan35p_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.FormatStyle;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" private LocalDateTime deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" private DateTimeFormatter formatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" public DeadlineTask(String description, String deadlineDate) {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" // time should be in format dd/mm/yyyy HHMM(24h)","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" this.deadlineDate \u003d LocalDateTime.parse(deadlineDate, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"There was an error parsing the date given.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" public String getType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" return \"Deadline\";","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" return formatter.format(this.deadlineDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" DateTimeFormatter stringFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" return \"[D]\" + super.toString() + \" (by: \" + stringFormatter.format(this.deadlineDate) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":34}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" TaskList list \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" File dataDirectory \u003d new File(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" dataDirectory.mkdir();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" File taskFile \u003d new File(\"./data/duke.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" if (taskFile.createNewFile()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Created new file to store your tasks!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Existing task file exists. \");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" list \u003d new TaskList(taskFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Unable to create file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Hello! I\u0027m Bob\");","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" while(true) {","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" list.printList();","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" } else if (input.startsWith(\"mark\") || input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" if (inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Input the task number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" } else if (inputSplit.length \u003e 2) {","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" int taskNo \u003d Integer.parseInt(inputSplit[1]) - 1;","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" list.setTaskComplete(taskNo);","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" list.setTaskIncomplete(taskNo);","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" if (inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Input the task number\");","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" } else if (inputSplit.length \u003e 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" int taskNo \u003d Integer.parseInt(inputSplit[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" list.deleteTask(taskNo);","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" if (input.length() \u003d\u003d 4 || input.equals(\"todo \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description of a todo cannot be empty\");","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" input \u003d input.substring(5);","lastModifiedDate":"2023-08-21"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" list.addTask(new ToDoTask(input));","lastModifiedDate":"2023-08-21"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" if (input.length() \u003d\u003d 8 || input.equals(\"deadline \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description of a deadline cannot be empty\");","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" input \u003d input.substring(9);","lastModifiedDate":"2023-08-21"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" String[] inputArr;","lastModifiedDate":"2023-08-21"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" inputArr \u003d input.split(\" /by \");","lastModifiedDate":"2023-08-21"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" list.addTask(new DeadlineTask(inputArr[0], inputArr[1]));","lastModifiedDate":"2023-08-21"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" if (input.length() \u003d\u003d 5 || input.equals(\"event \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description of an event cannot be empty\");","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" input \u003d input.substring(6);","lastModifiedDate":"2023-08-21"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" String[] inputArr;","lastModifiedDate":"2023-08-21"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" inputArr \u003d input.split(\" /from \");","lastModifiedDate":"2023-08-21"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" String description \u003d inputArr[0];","lastModifiedDate":"2023-08-21"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" inputArr \u003d inputArr[1].split(\" /to \");","lastModifiedDate":"2023-08-21"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" list.addTask(new EventTask(description, inputArr[0], inputArr[1]));","lastModifiedDate":"2023-08-21"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"I don\u0027t know what that means\");","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Please key in a valid index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" list.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" public static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" System.out.println(i + 1 + \".\" + list.get(i));","lastModifiedDate":"2023-08-20"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"rayyan35p":104,"-":5}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":" public DukeException(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" public DukeException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" super(\"test\");","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"rayyan35p":9}},{"path":"src/main/java/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" private LocalDateTime startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" private LocalDateTime endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" private DateTimeFormatter formatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" public EventTask(String description, String startDate, String endDate) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" // time should be in format dd/mm/yyyy HHMM(24h)","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startDate, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endDate, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" if (start.isBefore(end)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" this.startDate \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" this.endDate \u003d end;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Your start date is either the same or after your end date!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"There was an error parsing the date given.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" public String getType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" return \"Event\";","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" return formatter.format(this.startDate) + \",\" + formatter.format(this.endDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" DateTimeFormatter stringFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" return \"[E]\" + super.toString() + \" (from: \" + stringFormatter.format(this.startDate) +","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" \" to: \" + stringFormatter.format(this.endDate) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":43}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":" private String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" public void setDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public void setNotDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" public abstract String getType();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public abstract String getDateTime();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" return \"[X] \" + description;","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" return \"[ ] \" + description;","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" // Need to store type of task, whether it is done, title, date/time","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" String type \u003d this.getType();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" String completed;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" completed \u003d \"1\";","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" completed \u003d \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" String title \u003d this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" String dateTime \u003d this.getDateTime();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" if (this.getDateTime().length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" output.append(type + \",\" + completed + \",\" + title + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" else {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" output.append(type + \",\" + completed + \",\" + title + \",\" + dateTime + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" return output.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":52}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"public class TaskList {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" private File file;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" public TaskList() {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public TaskList(File file) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" String storedTask \u003d scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" String[] taskArray \u003d storedTask.split(\",\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" if (taskArray[0].startsWith(\"Todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" task \u003d new ToDoTask(taskArray[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" } else if (taskArray[0].startsWith(\"Deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" task \u003d new DeadlineTask(taskArray[2], taskArray[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" task \u003d new EventTask(taskArray[2], taskArray[3], taskArray[4]);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" if ((taskArray[1]).equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" this.file \u003d file;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Now you have \" + this.list.size() + \" task(s) in the list.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" public void setTaskComplete(int i) {","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.list.get(i);","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" public void setTaskIncomplete(int i) {","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.list.get(i);","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" task.setNotDone();","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" public Task getTask(int i) {","lastModifiedDate":"2023-08-21"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" return this.list.get(i);","lastModifiedDate":"2023-08-21"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" public void deleteTask(int i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.list.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" this.list.remove(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Now you have \" + this.list.size() + \" task(s) in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" public void printList() {","lastModifiedDate":"2023-08-21"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-21"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" System.out.println(i + 1 + \".\" + list.get(i));","lastModifiedDate":"2023-08-21"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" public void close() {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" FileWriter writer \u003d new FileWriter(this.file);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" for (Task task : list) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" writer.write(task.toFileString());","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"An error occurred while saving your tasks.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":97}},{"path":"src/main/java/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":" public ToDoTask(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" public String getType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" return \"Todo\";","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" return \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"todo read book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"todo join sports club","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"mark 4","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"unmark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":11}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"rayyan35p":1,"-":41}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"import data.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import parser.Parser.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" TaskList list \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" list \u003d new TaskList(storage.getFile());","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" String input \u003d ui.getFirstInput();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" while (true) {","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" Command command \u003d parser.parse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" if (command \u003d\u003d Parser.Command.BYE) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" list.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" ui.end();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" } else if (command \u003d\u003d Parser.Command.LIST) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" list.printList();","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" list.executeCommand(command, input);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" input \u003d ui.getInput();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"rayyan35p":32,"-":4}},{"path":"src/main/java/data/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package data.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":" public DukeException(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"rayyan35p":7}},{"path":"src/main/java/data/task/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package data.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" private LocalDateTime deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" private DateTimeFormatter formatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" public DeadlineTask(String description, String deadlineDate) {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" // time should be in format dd/mm/yyyy HHMM(24h)","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" this.deadlineDate \u003d LocalDateTime.parse(deadlineDate, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"There was an error parsing the date given.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public String getType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" return \"Deadline\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" return formatter.format(this.deadlineDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" DateTimeFormatter stringFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" return \"[D]\" + super.toString() + \" (by: \" + stringFormatter.format(this.deadlineDate) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":36}},{"path":"src/main/java/data/task/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package data.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" private LocalDateTime startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" private LocalDateTime endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" private DateTimeFormatter formatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" public EventTask(String description, String startDate, String endDate) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" // time should be in format dd/mm/yyyy HHMM(24h)","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startDate, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endDate, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" if (start.isBefore(end)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" this.startDate \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" this.endDate \u003d end;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Your start date is either the same or after your end date!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"There was an error parsing the date given.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" public String getType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" return \"Event\";","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" return formatter.format(this.startDate) + \",\" + formatter.format(this.endDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" DateTimeFormatter stringFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" return \"[E]\" + super.toString() + \" (from: \" + stringFormatter.format(this.startDate) +","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" \" to: \" + stringFormatter.format(this.endDate) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":48}},{"path":"src/main/java/data/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package data.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" private String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" public void setDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" public void setNotDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public abstract String getType();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" public abstract String getDateTime();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" return \"[X] \" + description;","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" return \"[ ] \" + description;","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" // Need to store type of task, whether it is done, title, date/time","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" String type \u003d this.getType();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" String completed;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" completed \u003d \"1\";","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" completed \u003d \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" String title \u003d this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" String dateTime \u003d this.getDateTime();","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" if (this.getDateTime().length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" output.append(type + \",\" + completed + \",\" + title + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" else {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" output.append(type + \",\" + completed + \",\" + title + \",\" + dateTime + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" return output.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":54}},{"path":"src/main/java/data/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package data.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import parser.Parser.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"public class TaskList {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" private File file;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public TaskList() {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" public TaskList(File file) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" String storedTask \u003d scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" String[] taskArray \u003d storedTask.split(\",\");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" if (taskArray[0].startsWith(\"Todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" task \u003d new ToDoTask(taskArray[2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" } else if (taskArray[0].startsWith(\"Deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" task \u003d new DeadlineTask(taskArray[2], taskArray[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" task \u003d new EventTask(taskArray[2], taskArray[3], taskArray[4]);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" if ((taskArray[1]).equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" this.file \u003d file;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" public void executeCommand(Command command, String input) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" this.setTaskComplete(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" case UNMARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" this.setTaskIncomplete(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" case DELETE:","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" this.deleteTask(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" this.addTask(command, input);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-21"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Now you have \" + this.list.size() + \" task(s) in the list.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" public void addTask(Command command, String input) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" Task taskToAdd \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" String[] inputArr;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" input \u003d input.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" taskToAdd \u003d new ToDoTask(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" input \u003d input.substring(9);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" inputArr \u003d input.split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" taskToAdd \u003d new DeadlineTask(inputArr[0], inputArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" input \u003d input.substring(6);","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" inputArr \u003d input.split(\" /from \");","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" String description \u003d inputArr[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" inputArr \u003d inputArr[1].split(\" /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" taskToAdd \u003d new EventTask(description, inputArr[0], inputArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" this.list.add(taskToAdd);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" System.out.println(taskToAdd);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Now you have \" + this.list.size() + \" task(s) in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":" public void setTaskComplete(int i) {","lastModifiedDate":"2023-08-21"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.list.get(i);","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-08-21"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":110,"author":{"gitId":"rayyan35p"},"content":" public void setTaskComplete(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"rayyan35p"},"content":" int taskNo \u003d Integer.parseInt(inputSplit[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.list.get(taskNo);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"OK, I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"rayyan35p"},"content":" public void setTaskIncomplete(int i) {","lastModifiedDate":"2023-08-21"},{"lineNumber":120,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.list.get(i);","lastModifiedDate":"2023-08-21"},{"lineNumber":121,"author":{"gitId":"rayyan35p"},"content":" task.setNotDone();","lastModifiedDate":"2023-08-21"},{"lineNumber":122,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":123,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":124,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":125,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":126,"author":{"gitId":"rayyan35p"},"content":" public void setTaskIncomplete(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"rayyan35p"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"rayyan35p"},"content":" int taskNo \u003d Integer.parseInt(inputSplit[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.list.get(taskNo);","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"rayyan35p"},"content":" task.setNotDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"rayyan35p"},"content":" public Task getTask(int i) {","lastModifiedDate":"2023-08-21"},{"lineNumber":136,"author":{"gitId":"rayyan35p"},"content":" return this.list.get(i);","lastModifiedDate":"2023-08-21"},{"lineNumber":137,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":138,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":139,"author":{"gitId":"rayyan35p"},"content":" public void deleteTask(int i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.list.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"rayyan35p"},"content":" this.list.remove(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Now you have \" + this.list.size() + \" task(s) in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"rayyan35p"},"content":" public void deleteTask(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"rayyan35p"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"rayyan35p"},"content":" int taskNo \u003d Integer.parseInt(inputSplit[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.list.get(taskNo);","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"rayyan35p"},"content":" this.list.remove(taskNo);","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Now you have \" + this.list.size() + \" task(s) in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"rayyan35p"},"content":" public void printList() {","lastModifiedDate":"2023-08-21"},{"lineNumber":158,"author":{"gitId":"rayyan35p"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-21"},{"lineNumber":159,"author":{"gitId":"rayyan35p"},"content":" System.out.println(i + 1 + \".\" + list.get(i));","lastModifiedDate":"2023-08-21"},{"lineNumber":160,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":161,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":162,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"rayyan35p"},"content":" public void close() {","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"rayyan35p"},"content":" FileWriter writer \u003d new FileWriter(this.file);","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"rayyan35p"},"content":" for (Task task : list) {","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"rayyan35p"},"content":" writer.write(task.toFileString());","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"rayyan35p"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"An error occurred while saving your tasks.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":175}},{"path":"src/main/java/data/task/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package data.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":" public ToDoTask(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" public String getType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" return \"Todo\";","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" return \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":21}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import data.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" public enum Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" BYE,","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" LIST,","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" MARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" UNMARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" DELETE,","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" TODO,","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" DEADLINE,","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" EVENT","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" public Command parse(String input) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" Command command \u003d this.getCommand(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" switch(command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" case BYE:","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" return Command.BYE;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" case LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" return Command.LIST;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" if (inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Input the task number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" } else if (inputSplit.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" return Command.MARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" case UNMARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" if (inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Input the task number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" } else if (inputSplit.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" return Command.UNMARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" case DELETE:","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" if (inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Input the task number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" } else if (inputSplit.length \u003e 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" return Command.DELETE;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" if (input.length() \u003d\u003d 4 || inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description of a todo cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" return Command.TODO;","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" if (input.length() \u003d\u003d 8 || inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description of a deadline cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" return Command.DEADLINE;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" if (input.length() \u003d\u003d 5 || inputSplit.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description of an event cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" return Command.EVENT;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"No such command.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" private Command getCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" return Command.BYE;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" return Command.LIST;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" return Command.MARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" return Command.UNMARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" return Command.DELETE;","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" return Command.TODO;","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" return Command.DEADLINE;","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" return Command.EVENT;","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"I don\u0027t understand your command.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"rayyan35p":95}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" public Storage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" File dataDirectory \u003d new File(\"./data\");","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" dataDirectory.mkdir();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" File taskFile \u003d new File(\"./data/duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" if (taskFile.createNewFile()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Created new file to store your tasks!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Existing task file exists. \");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" this.file \u003d taskFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Unable to create file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" public File getFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" return this.file;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"rayyan35p":28}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" public Ui()","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" public String getInput() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" return input;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" public String getFirstInput() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Hello! I\u0027m Bob\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" return this.getInput();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" public void end() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"rayyan35p":26}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"Todo,1,read book","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"Deadline,0,return book,06/06/2023 1200","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"Event,0,project meeting,06/08/2023 1400,06/08/2023 1600","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"Todo,1,join sports club","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"Todo,0,borrow book","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"rayyan35p":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"todo read book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"deadline return book /by 06/06/2023 1200","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"event project meeting /from 06/08/2023 1400 /to 06/08/2023 1600","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"todo join sports club","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"mark 4","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"unmark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":11}}] diff --git a/rayyan35p_ip_master/commits.json b/rayyan35p_ip_master/commits.json index 191ba43f..01142812 100644 --- a/rayyan35p_ip_master/commits.json +++ b/rayyan35p_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"rayyan35p":[{"date":"2023-08-20","commitResults":[{"hash":"50891bd022c5a5fa06656a9757f4aa62f4910adf","isMergeCommit":false,"messageTitle":"Replace initial code with new skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"c9e96866874dc97cdfdab8f0410219c3313d0986","isMergeCommit":false,"messageTitle":"Modify chatbot to echo user commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"5e321267466296aca46995eb62123db630e0b3a0","isMergeCommit":false,"messageTitle":"Add ability to store tasks in a list and print the list","messageBody":"","tags":["Level-2","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}}]},{"date":"2023-08-21","commitResults":[{"hash":"4d7212e3f57d5133d3f753009342549ab2d679a7","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"89bd671db9e3737ec25f2299349181790cb55ea9","isMergeCommit":false,"messageTitle":"Update Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"1cd7e16c24e9162bff163c6f870e165359367160","isMergeCommit":false,"messageTitle":"Add TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"cbc3c8be50e99d209df635fc4752a3484a9bffbe","isMergeCommit":false,"messageTitle":"Integrate Task and TaskList into main code","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":7}}},{"hash":"5df1c0e4d38206529278f67d7a2ac8b9f458a851","isMergeCommit":false,"messageTitle":"Add Deadline, Event, ToDo classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"58631d71470d82ec2099e4a564a70560a29f6f42","isMergeCommit":false,"messageTitle":"Update TaskList class with print statements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"d928fcbc1acec1d8b6b63285318bdf10583e6bcd","isMergeCommit":false,"messageTitle":"Integrate new task classes into main code","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":8}}},{"hash":"f555cca75ddb17e68392381abbb68765a1edd874","isMergeCommit":false,"messageTitle":"Remove redundant line","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"9bbe609962d15fad08f1e59357657e7452115f9f","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"2341a4d27de4a7ae092ccbc04c3b6ca42501d626","isMergeCommit":false,"messageTitle":"Add DukeException","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"5d7e5dc25b52e91c0982c8c024a28861177eb071","isMergeCommit":false,"messageTitle":"Modify main code to catch exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":36}}},{"hash":"21eb78729d14f11c332df99dcb8ee40ea93eaa2c","isMergeCommit":false,"messageTitle":"Add deleteTask method to TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"1810dcdb0e5a898516e8debbaa9d68b7d677bd7d","isMergeCommit":false,"messageTitle":"Modify main code to allow chatbot to delete tasks from list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"dc4caafd0924a5059c008936447b8a6b7fa97f3c","isMergeCommit":false,"messageTitle":"Add code to create a folder and file to store tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"464291f09411dd547e825a8098a3afbb029b337e","isMergeCommit":false,"messageTitle":"Update task classes with methods needed for I/O","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":1}}},{"hash":"096fc3b65d28850f485d81892ad4ab12de53f306","isMergeCommit":false,"messageTitle":"Update TaskList class to write tasks to a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":0}}},{"hash":"c27c82966b54ed9736fd76a80af86e6bc569c52e","isMergeCommit":false,"messageTitle":"Integrate file writing operations into main","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":2}}},{"hash":"183caa34e15cf03ce3c62e1c6742d125f4c4a3ce","isMergeCommit":false,"messageTitle":"Modify main code to read previously stored tasks from a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"9659b1d04c19cdb5d4f4e88e062c178c46b1f8aa","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"44cac1b77de81a764e7057f5d7ef31f37067925b","isMergeCommit":false,"messageTitle":"Fix bug where directory to store tasks is not made","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"283fa328b1d8c4521afcc5129231e86d58e34875","isMergeCommit":false,"messageTitle":"Add LocalDateTime functionality to task classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":7}}},{"hash":"7581beba0eb14609865e9cea41277632eaa4953d","isMergeCommit":false,"messageTitle":"Update LocalDateTime functionality in task classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":10}}},{"hash":"38331b41b1f4a3e828a1b143acc832962a59a701","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"rayyan35p":{"java":357,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"rayyan35p":3494.597},"authorDisplayNameMap":{"rayyan35p":"CS2103T-T08-3 RAYY..MAIL"}} +{"authorDailyContributionsMap":{"rayyan35p":[{"date":"2023-08-20","commitResults":[{"hash":"50891bd022c5a5fa06656a9757f4aa62f4910adf","isMergeCommit":false,"messageTitle":"Replace initial code with new skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"c9e96866874dc97cdfdab8f0410219c3313d0986","isMergeCommit":false,"messageTitle":"Modify chatbot to echo user commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"5e321267466296aca46995eb62123db630e0b3a0","isMergeCommit":false,"messageTitle":"Add ability to store tasks in a list and print the list","messageBody":"","tags":["Level-2","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}}]},{"date":"2023-08-21","commitResults":[{"hash":"4d7212e3f57d5133d3f753009342549ab2d679a7","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"89bd671db9e3737ec25f2299349181790cb55ea9","isMergeCommit":false,"messageTitle":"Update Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"1cd7e16c24e9162bff163c6f870e165359367160","isMergeCommit":false,"messageTitle":"Add TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"cbc3c8be50e99d209df635fc4752a3484a9bffbe","isMergeCommit":false,"messageTitle":"Integrate Task and TaskList into main code","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":7}}},{"hash":"5df1c0e4d38206529278f67d7a2ac8b9f458a851","isMergeCommit":false,"messageTitle":"Add Deadline, Event, ToDo classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"58631d71470d82ec2099e4a564a70560a29f6f42","isMergeCommit":false,"messageTitle":"Update TaskList class with print statements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"d928fcbc1acec1d8b6b63285318bdf10583e6bcd","isMergeCommit":false,"messageTitle":"Integrate new task classes into main code","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":8}}},{"hash":"f555cca75ddb17e68392381abbb68765a1edd874","isMergeCommit":false,"messageTitle":"Remove redundant line","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"9bbe609962d15fad08f1e59357657e7452115f9f","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"2341a4d27de4a7ae092ccbc04c3b6ca42501d626","isMergeCommit":false,"messageTitle":"Add DukeException","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"5d7e5dc25b52e91c0982c8c024a28861177eb071","isMergeCommit":false,"messageTitle":"Modify main code to catch exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":36}}},{"hash":"21eb78729d14f11c332df99dcb8ee40ea93eaa2c","isMergeCommit":false,"messageTitle":"Add deleteTask method to TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"1810dcdb0e5a898516e8debbaa9d68b7d677bd7d","isMergeCommit":false,"messageTitle":"Modify main code to allow chatbot to delete tasks from list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"dc4caafd0924a5059c008936447b8a6b7fa97f3c","isMergeCommit":false,"messageTitle":"Add code to create a folder and file to store tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"464291f09411dd547e825a8098a3afbb029b337e","isMergeCommit":false,"messageTitle":"Update task classes with methods needed for I/O","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":1}}},{"hash":"096fc3b65d28850f485d81892ad4ab12de53f306","isMergeCommit":false,"messageTitle":"Update TaskList class to write tasks to a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":0}}},{"hash":"c27c82966b54ed9736fd76a80af86e6bc569c52e","isMergeCommit":false,"messageTitle":"Integrate file writing operations into main","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":2}}},{"hash":"183caa34e15cf03ce3c62e1c6742d125f4c4a3ce","isMergeCommit":false,"messageTitle":"Modify main code to read previously stored tasks from a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"9659b1d04c19cdb5d4f4e88e062c178c46b1f8aa","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"44cac1b77de81a764e7057f5d7ef31f37067925b","isMergeCommit":false,"messageTitle":"Fix bug where directory to store tasks is not made","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"283fa328b1d8c4521afcc5129231e86d58e34875","isMergeCommit":false,"messageTitle":"Add LocalDateTime functionality to task classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":7}}},{"hash":"7581beba0eb14609865e9cea41277632eaa4953d","isMergeCommit":false,"messageTitle":"Update LocalDateTime functionality in task classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":10}}},{"hash":"38331b41b1f4a3e828a1b143acc832962a59a701","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"b5c94ef67ab951b00b2bae3e9ad744010fc80e5c","isMergeCommit":false,"messageTitle":"Add Storage class for handling file operations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}},{"hash":"6b4b33aa513ce3173f40e8b92c02474ef986323b","isMergeCommit":false,"messageTitle":"Integrate Storage class in main code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":14}}}]},{"date":"2023-09-01","commitResults":[{"hash":"469142bf47c138eee21397ef2f0744991d188f66","isMergeCommit":false,"messageTitle":"Add Parser Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":0}}},{"hash":"dac578dbb8e60bc1f834a5a0c3990fcf3db01a71","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"ef368b10df273e5bfbca8f1800e6b4ed2b6e6cc8","isMergeCommit":false,"messageTitle":"Add new methods to TaskList class for executing commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":0}}},{"hash":"a09276750677fd66c84c21d513b08abd16f44b49","isMergeCommit":false,"messageTitle":"Integrate Parser class into main code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":67}}},{"hash":"873f5083390ce11356120a71db1025718d1b4014","isMergeCommit":false,"messageTitle":"Add Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"fc15aa6ec3755e9f6667e4984904664c713948be","isMergeCommit":false,"messageTitle":"Integrate Ui class into main code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"87c4caaab81b90f203f16d7bb92dad045f62219c","isMergeCommit":false,"messageTitle":"Update input.txt with correct datetime format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2}}},{"hash":"924ccfc53cba196bdf80fa7f36064b71e3037287","isMergeCommit":false,"messageTitle":"Add new method to Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"52f069f193417e151e983d65925003519eea4acc","isMergeCommit":false,"messageTitle":"Implement Ui.bye() for bye command in main code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"c368c2ef25a5d4ba7f32efbd1c2875fe18768ee3","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":11}}},{"hash":"f13abdc2eed9ba3864bc910166fab622fefe072c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"1199b3ea53780157ff47de11275c0d12408394e5","isMergeCommit":false,"messageTitle":"Put classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":13}}},{"hash":"d272d29071428abfe3d8670755a7440f6cdb63a6","isMergeCommit":false,"messageTitle":"Modify expected output to match new input text for tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"9402a3ed1990117a7d5f9ab784d8bfe4ecff474e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"153998f915071d5e72b7924d30e7da5633a05115","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a59aa171d91dcd78fb028a04c7da3fbc2eb5263d","isMergeCommit":false,"messageTitle":"Set mainClassName to be Duke","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"rayyan35p":{"java":522,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":16}},"authorContributionVariance":{"rayyan35p":9805.44},"authorDisplayNameMap":{"rayyan35p":"CS2103T-T08-3 RAYY..MAIL"}} diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index f7437c9e..736e195e 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,58 +1,58 @@ -Sep 01, 2023 4:09:42 AM reposense.system.LogsManager addFileHandler +Sep 01, 2023 1:05:49 PM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Sep 01, 2023 4:09:42 AM reposense.parser.CsvParser validateHeader +Sep 01, 2023 1:05:50 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Sep 01, 2023 4:09:44 AM reposense.parser.CsvParser validateHeader +Sep 01, 2023 1:05:51 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias scarletblanks found. The alias will belong to the last author - ScarletBlanks -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kb-tay found. The alias will belong to the last author - Kb-Tay -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ryam found. The alias will belong to the last author - ryamgoh -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias h1410101 found. The alias will belong to the last author - H1410101 -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shashahchk found. The alias will belong to the last author - shashahchk -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yucongkoo found. The alias will belong to the last author - yucongkoo -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kokseng1 found. The alias will belong to the last author - Kokseng1 -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias vanessamae23 found. The alias will belong to the last author - Vanessamae23 -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias singa-pirate found. The alias will belong to the last author - Singa-pirate -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nicholastng010601 found. The alias will belong to the last author - nicholastng010601 -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias weiennn found. The alias will belong to the last author - Weiennn -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias adammangzijun found. The alias will belong to the last author - adammangzijun -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias scarletblanks found. The alias will belong to the last author - ScarletBlanks -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kb-tay found. The alias will belong to the last author - Kb-Tay -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ryam found. The alias will belong to the last author - ryamgoh -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias h1410101 found. The alias will belong to the last author - H1410101 -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shashahchk found. The alias will belong to the last author - shashahchk -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yucongkoo found. The alias will belong to the last author - yucongkoo -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kokseng1 found. The alias will belong to the last author - Kokseng1 -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias vanessamae23 found. The alias will belong to the last author - Vanessamae23 -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias singa-pirate found. The alias will belong to the last author - Singa-pirate -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nicholastng010601 found. The alias will belong to the last author - nicholastng010601 -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias weiennn found. The alias will belong to the last author - Weiennn -Sep 01, 2023 4:09:44 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 01, 2023 1:05:51 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias adammangzijun found. The alias will belong to the last author - adammangzijun -Sep 01, 2023 4:09:44 AM reposense.git.GitConfig getGlobalGitLfsConfig +Sep 01, 2023 1:05:51 PM reposense.git.GitConfig getGlobalGitLfsConfig WARNING: Could not get global git lfs config java.lang.RuntimeException: reposense.system.CommandRunnerProcessException: Error returned from command git config --global --list on path . : fatal: unable to read config file '/home/runner/.gitconfig': No such file or directory @@ -68,8649 +68,8649 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Sep 01, 2023 4:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/CJ-Lee01/ip.git... -Sep 01, 2023 4:09:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/emzm2023/ip.git... -Sep 01, 2023 4:09:44 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/siqirua/ip.git... -Sep 01, 2023 4:09:44 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/emzm2023/ip.git... +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/CJ-Lee01/ip.git... +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/thaddeusong/ip.git... -Sep 01, 2023 4:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/siqirua/ip.git to complete... -Sep 01, 2023 4:09:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/CJ-Lee01/ip.git to complete... -Sep 01, 2023 4:09:44 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/emzm2023/ip.git to complete... -Sep 01, 2023 4:09:44 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/siqirua/ip.git to complete... +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/thaddeusong/ip.git to complete... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/thaddeusong/ip.git completed! -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/CJ-Lee01/ip.git to complete... +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/emzm2023/ip.git completed! +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanteckfang/ip.git... -Sep 01, 2023 4:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [1/480] Analyzing https://github.com/thaddeusong/ip.git (master)... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanteckfang/ip.git to complete... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/CJ-Lee01/ip.git completed! -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/emzm2023/ip.git completed! -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ph-nathan/ip.git... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [1/480] Analyzing https://github.com/emzm2023/ip.git (master)... +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/thaddeusong/ip.git completed! +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/siqirua/ip.git completed! -Sep 01, 2023 4:09:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [2/480] Analyzing https://github.com/CJ-Lee01/ip.git (master)... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ph-nathan/ip.git to complete... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ph-nathan/ip.git... +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/butteredyakiimo/ip.git... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yuxunn/ip.git... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/butteredyakiimo/ip.git to complete... -Sep 01, 2023 4:09:45 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:05:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [2/480] Analyzing https://github.com/thaddeusong/ip.git (master)... +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ph-nathan/ip.git to complete... +Sep 01, 2023 1:05:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/emzm2023/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/emzm2023/ip.git (master)... +Sep 01, 2023 1:05:51 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/thaddeusong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yuxunn/ip.git to complete... -Sep 01, 2023 4:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:05:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/thaddeusong/ip.git (master)... -Sep 01, 2023 4:09:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/CJ-Lee01/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/CJ-Lee01/ip.git (master)... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ph-nathan/ip.git completed! -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/CJ-Lee01/ip.git completed! +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/butteredyakiimo/ip.git to complete... +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yuxunn/ip.git... +Sep 01, 2023 1:05:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yuxunn/ip.git to complete... +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanteckfang/ip.git completed! -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/butteredyakiimo/ip.git completed! -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yuxunn/ip.git completed! -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/RB9823/ip.git... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ph-nathan/ip.git completed! +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/butteredyakiimo/ip.git completed! +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/RB9823/ip.git to complete... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yuxunn/ip.git completed! +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TyrusLye/ip.git... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cxo05/ip.git... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TyrusLye/ip.git to complete... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shyanyong/ip.git... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cxo05/ip.git to complete... -Sep 01, 2023 4:09:45 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shyanyong/ip.git to complete... -Sep 01, 2023 4:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/CJ-Lee01/ip.git (master)... -Sep 01, 2023 4:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/CJ-Lee01/ip.git (master)... -Sep 01, 2023 4:09:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/CJ-Lee01/ip.git (master) completed! -Sep 01, 2023 4:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [3/480] Analyzing https://github.com/emzm2023/ip.git (master)... -Sep 01, 2023 4:09:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/emzm2023/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/emzm2023/ip.git (master)... -Sep 01, 2023 4:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/thaddeusong/ip.git (master)... -Sep 01, 2023 4:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TyrusLye/ip.git completed! -Sep 01, 2023 4:09:46 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/emzm2023/ip.git (master)... +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/RB9823/ip.git completed! -Sep 01, 2023 4:09:46 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/emzm2023/ip.git (master)... +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TyrusLye/ip.git completed! +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/howenc/ip.git... -Sep 01, 2023 4:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cxo05/ip.git completed! -Sep 01, 2023 4:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/thaddeusong/ip.git (master)... -Sep 01, 2023 4:09:46 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/howenc/ip.git to complete... +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kurtyjlee/ip.git... -Sep 01, 2023 4:09:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/josepholim/ip.git... -Sep 01, 2023 4:09:46 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shyanyong/ip.git completed! -Sep 01, 2023 4:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/howenc/ip.git to complete... -Sep 01, 2023 4:09:46 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/emzm2023/ip.git (master) completed! +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Kurtyjlee/ip.git to complete... +Sep 01, 2023 1:05:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [3/480] Analyzing https://github.com/siqirua/ip.git (master)... +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cxo05/ip.git completed! +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/josepholim/ip.git... +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/josepholim/ip.git to complete... -Sep 01, 2023 4:09:46 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/geoffong11/ip.git... -Sep 01, 2023 4:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Kurtyjlee/ip.git to complete... -Sep 01, 2023 4:09:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/geoffong11/ip.git to complete... -Sep 01, 2023 4:09:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/thaddeusong/ip.git (master) completed! -Sep 01, 2023 4:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [4/480] Analyzing https://github.com/siqirua/ip.git (master)... -Sep 01, 2023 4:09:46 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:05:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/siqirua/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:05:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/siqirua/ip.git (master)... -Sep 01, 2023 4:09:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/emzm2023/ip.git (master)... -Sep 01, 2023 4:09:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/emzm2023/ip.git (master)... -Sep 01, 2023 4:09:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/emzm2023/ip.git (master) completed! -Sep 01, 2023 4:09:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [5/480] Analyzing https://github.com/ph-nathan/ip.git (master)... -Sep 01, 2023 4:09:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ph-nathan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ph-nathan/ip.git (master)... -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/josepholim/ip.git completed! -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/geoffong11/ip.git completed! -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/geoffong11/ip.git to complete... +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/howenc/ip.git completed! +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jianrong7/ip.git... -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/thaddeusong/ip.git (master)... +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jianrong7/ip.git to complete... +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/josepholim/ip.git completed! +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/A1WAYSD/ip.git... -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kurtyjlee/ip.git completed! -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/howenc/ip.git completed! -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/NgChunMan/ip.git... -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/geoffong11/ip.git completed! +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/A1WAYSD/ip.git to complete... -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jianrong7/ip.git to complete... -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/thaddeusong/ip.git (master)... +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/NgChunMan/ip.git... +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/NgChunMan/ip.git to complete... -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/thaddeusong/ip.git (master) completed! +Sep 01, 2023 1:05:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [4/480] Analyzing https://github.com/CJ-Lee01/ip.git (master)... +Sep 01, 2023 1:05:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/CJ-Lee01/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/CJ-Lee01/ip.git (master)... +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jianrong7/ip.git completed! +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/limjunxian1/ip.git... -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/limjunxian1/ip.git to complete... -Sep 01, 2023 4:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/siqirua/ip.git (master)... -Sep 01, 2023 4:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/siqirua/ip.git (master)... -Sep 01, 2023 4:09:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/siqirua/ip.git (master) completed! -Sep 01, 2023 4:09:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ph-nathan/ip.git (master)... -Sep 01, 2023 4:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [6/480] Analyzing https://github.com/butteredyakiimo/ip.git (master)... -Sep 01, 2023 4:09:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ph-nathan/ip.git (master)... -Sep 01, 2023 4:09:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ph-nathan/ip.git (master) completed! -Sep 01, 2023 4:09:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [7/480] Analyzing https://github.com/tanteckfang/ip.git (master)... -Sep 01, 2023 4:09:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/butteredyakiimo/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/butteredyakiimo/ip.git (master)... -Sep 01, 2023 4:09:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanteckfang/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanteckfang/ip.git (master)... -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jianrong7/ip.git completed! -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/A1WAYSD/ip.git completed! -Sep 01, 2023 4:09:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/limjunxian1/ip.git completed! -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jack1e0/ip.git... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/hjoneweek/ip.git... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/NgChunMan/ip.git completed! -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jack1e0/ip.git... +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jack1e0/ip.git to complete... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/hjoneweek/ip.git... +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/hjoneweek/ip.git to complete... +Sep 01, 2023 1:05:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/siqirua/ip.git (master)... +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/limjunxian1/ip.git completed! +Sep 01, 2023 1:05:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/siqirua/ip.git (master)... +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dishenggg/ip.git... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/siqirua/ip.git (master) completed! +Sep 01, 2023 1:05:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [5/480] Analyzing https://github.com/tanteckfang/ip.git (master)... +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dishenggg/ip.git to complete... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/hjoneweek/ip.git to complete... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jack1e0/ip.git completed! +Sep 01, 2023 1:05:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/CJ-Lee01/ip.git (master)... +Sep 01, 2023 1:05:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanteckfang/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanteckfang/ip.git (master)... +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhyuhan/ip.git... -Sep 01, 2023 4:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/butteredyakiimo/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhyuhan/ip.git to complete... -Sep 01, 2023 4:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/butteredyakiimo/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/butteredyakiimo/ip.git (master) completed! -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [8/480] Analyzing https://github.com/yuxunn/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yuxunn/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yuxunn/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanteckfang/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanteckfang/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanteckfang/ip.git (master) completed! -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [9/480] Analyzing https://github.com/RB9823/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RB9823/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RB9823/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yuxunn/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yuxunn/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yuxunn/ip.git (master) completed! -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [10/480] Analyzing https://github.com/TyrusLye/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TyrusLye/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TyrusLye/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dishenggg/ip.git completed! -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/CJ-Lee01/ip.git (master)... +Sep 01, 2023 1:05:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/CJ-Lee01/ip.git (master) completed! +Sep 01, 2023 1:05:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [6/480] Analyzing https://github.com/butteredyakiimo/ip.git (master)... +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/hjoneweek/ip.git completed! +Sep 01, 2023 1:05:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/butteredyakiimo/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/butteredyakiimo/ip.git (master)... +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Dioclei/ip.git... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kurtyjlee/ip.git completed! +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Dioclei/ip.git to complete... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/hjoneweek/ip.git completed! -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhyuhan/ip.git completed! -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jack1e0/ip.git completed! -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Daphne789/ip.git... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Daphne789/ip.git to complete... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dishenggg/ip.git completed! +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WinstonLeonard/ip.git... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/peiran18/ip.git... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WinstonLeonard/ip.git to complete... -Sep 01, 2023 4:09:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/peiran18/ip.git to complete... -Sep 01, 2023 4:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RB9823/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RB9823/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RB9823/ip.git (master) completed! -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [11/480] Analyzing https://github.com/cxo05/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TyrusLye/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cxo05/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cxo05/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TyrusLye/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TyrusLye/ip.git (master) completed! -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [12/480] Analyzing https://github.com/shyanyong/ip.git (master)... -Sep 01, 2023 4:09:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shyanyong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shyanyong/ip.git (master)... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhyuhan/ip.git completed! +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Dioclei/ip.git completed! -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/peiran18/ip.git... +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AriellaCallista/ip.git... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AriellaCallista/ip.git to complete... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/peiran18/ip.git to complete... +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Daphne789/ip.git completed! -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AriellaCallista/ip.git to complete... +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/migfoo02/ip.git... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/migfoo02/ip.git to complete... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/WinstonLeonard/ip.git completed! -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/peiran18/ip.git completed! -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jonyxzx/ip.git... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SynapseProgramming/ip.git... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SynapseProgramming/ip.git to complete... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jonyxzx/ip.git to complete... -Sep 01, 2023 4:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cxo05/ip.git (master)... -Sep 01, 2023 4:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cxo05/ip.git (master)... -Sep 01, 2023 4:09:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cxo05/ip.git (master) completed! -Sep 01, 2023 4:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [13/480] Analyzing https://github.com/josepholim/ip.git (master)... -Sep 01, 2023 4:09:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/josepholim/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/josepholim/ip.git (master)... -Sep 01, 2023 4:09:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shyanyong/ip.git (master)... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/butteredyakiimo/ip.git (master)... +Sep 01, 2023 1:05:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/butteredyakiimo/ip.git (master)... +Sep 01, 2023 1:05:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/butteredyakiimo/ip.git (master) completed! +Sep 01, 2023 1:05:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [7/480] Analyzing https://github.com/ph-nathan/ip.git (master)... +Sep 01, 2023 1:05:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ph-nathan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ph-nathan/ip.git (master)... +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AriellaCallista/ip.git completed! -Sep 01, 2023 4:09:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shyanyong/ip.git (master)... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanteckfang/ip.git (master)... +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SynapseProgramming/ip.git... +Sep 01, 2023 1:05:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/peiran18/ip.git completed! +Sep 01, 2023 1:05:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanteckfang/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SynapseProgramming/ip.git to complete... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Darren159/ip.git... -Sep 01, 2023 4:09:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shyanyong/ip.git (master) completed! -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanteckfang/ip.git (master) completed! +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [8/480] Analyzing https://github.com/yuxunn/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Darren159/ip.git to complete... -Sep 01, 2023 4:09:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [14/480] Analyzing https://github.com/geoffong11/ip.git (master)... -Sep 01, 2023 4:09:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/geoffong11/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/geoffong11/ip.git (master)... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/migfoo02/ip.git completed! -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jonyxzx/ip.git completed! -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yuxunn/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yuxunn/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/imkwokyong/ip.git... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/imkwokyong/ip.git to complete... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jonyxzx/ip.git completed! +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/joeng03/ip.git... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/joeng03/ip.git to complete... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SynapseProgramming/ip.git completed! -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/imkwokyong/ip.git to complete... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ph-nathan/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ph-nathan/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Darren159/ip.git completed! +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ph-nathan/ip.git (master) completed! +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [9/480] Analyzing https://github.com/RB9823/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/vijay-shankaranand/ip.git... -Sep 01, 2023 4:09:49 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/vijay-shankaranand/ip.git to complete... -Sep 01, 2023 4:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/josepholim/ip.git (master)... -Sep 01, 2023 4:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/josepholim/ip.git (master)... -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Darren159/ip.git completed! -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SelwynAng/ip.git... -Sep 01, 2023 4:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/josepholim/ip.git (master) completed! -Sep 01, 2023 4:09:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [15/480] Analyzing https://github.com/Kurtyjlee/ip.git (master)... -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SelwynAng/ip.git to complete... -Sep 01, 2023 4:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/geoffong11/ip.git (master)... -Sep 01, 2023 4:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/geoffong11/ip.git (master)... -Sep 01, 2023 4:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/geoffong11/ip.git (master) completed! -Sep 01, 2023 4:09:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [16/480] Analyzing https://github.com/howenc/ip.git (master)... -Sep 01, 2023 4:09:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Kurtyjlee/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Kurtyjlee/ip.git (master)... -Sep 01, 2023 4:09:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/howenc/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/howenc/ip.git (master)... -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RB9823/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RB9823/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yuxunn/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/imkwokyong/ip.git completed! -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yuxunn/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yuxunn/ip.git (master) completed! +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [10/480] Analyzing https://github.com/TyrusLye/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SynapseProgramming/ip.git completed! +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SelwynAng/ip.git... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/joeng03/ip.git completed! +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jeffrey-jian/ip.git... -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SelwynAng/ip.git to complete... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jeffrey-jian/ip.git to complete... -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/vijay-shankaranand/ip.git completed! -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/joeng03/ip.git completed! -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanyyyming/ip.git... -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JCSnap/ip.git... -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TyrusLye/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TyrusLye/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanyyyming/ip.git to complete... -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/vijay-shankaranand/ip.git completed! +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JCSnap/ip.git... +Sep 01, 2023 1:05:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JCSnap/ip.git to complete... -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RB9823/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TyrusLye/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RB9823/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RB9823/ip.git (master) completed! +Sep 01, 2023 1:05:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TyrusLye/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TyrusLye/ip.git (master) completed! +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [11/480] Analyzing https://github.com/shyanyong/ip.git (master)... +Sep 01, 2023 1:05:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [12/480] Analyzing https://github.com/cxo05/ip.git (master)... +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SelwynAng/ip.git completed! -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shyanyong/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shyanyong/ip.git (master)... +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AprupKale/ip.git... -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AprupKale/ip.git to complete... -Sep 01, 2023 4:09:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kurtyjlee/ip.git (master)... -Sep 01, 2023 4:09:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kurtyjlee/ip.git (master)... -Sep 01, 2023 4:09:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kurtyjlee/ip.git (master) completed! -Sep 01, 2023 4:09:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [17/480] Analyzing https://github.com/A1WAYSD/ip.git (master)... -Sep 01, 2023 4:09:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/A1WAYSD/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/A1WAYSD/ip.git (master)... -Sep 01, 2023 4:09:50 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cxo05/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cxo05/ip.git (master)... +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jeffrey-jian/ip.git completed! -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AprupKale/ip.git to complete... +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/woojiahao/ip.git... -Sep 01, 2023 4:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/howenc/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanyyyming/ip.git completed! -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/woojiahao/ip.git to complete... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/PetrichorPrecipice/ip.git... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JCSnap/ip.git completed! -Sep 01, 2023 4:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/howenc/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/woojiahao/ip.git to complete... +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/PetrichorPrecipice/ip.git to complete... -Sep 01, 2023 4:09:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/howenc/ip.git (master) completed! -Sep 01, 2023 4:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [18/480] Analyzing https://github.com/jianrong7/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JCSnap/ip.git completed! +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/syamfarh/ip.git... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/syamfarh/ip.git to complete... -Sep 01, 2023 4:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jianrong7/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jianrong7/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/A1WAYSD/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/A1WAYSD/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/A1WAYSD/ip.git (master) completed! -Sep 01, 2023 4:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [19/480] Analyzing https://github.com/limjunxian1/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/limjunxian1/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/limjunxian1/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AprupKale/ip.git completed! -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/D-Limiter/ip.git... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/D-Limiter/ip.git to complete... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/woojiahao/ip.git completed! -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/coderhuang559/ip.git... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/PetrichorPrecipice/ip.git completed! -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LINCHENYU2030S/ip.git... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/coderhuang559/ip.git to complete... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LINCHENYU2030S/ip.git... +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/syamfarh/ip.git completed! +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LINCHENYU2030S/ip.git to complete... -Sep 01, 2023 4:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jianrong7/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/syamfarh/ip.git completed! -Sep 01, 2023 4:09:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jianrong7/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jianrong7/ip.git (master) completed! -Sep 01, 2023 4:09:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [20/480] Analyzing https://github.com/NgChunMan/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/pra-navi/ip.git... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/pra-navi/ip.git to complete... -Sep 01, 2023 4:09:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NgChunMan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NgChunMan/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/limjunxian1/ip.git (master)... -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shyanyong/ip.git (master)... +Sep 01, 2023 1:05:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cxo05/ip.git (master)... +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/D-Limiter/ip.git completed! -Sep 01, 2023 4:09:51 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shyanyong/ip.git (master)... +Sep 01, 2023 1:05:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shyanyong/ip.git (master) completed! +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/phiphi-tan/ip.git... -Sep 01, 2023 4:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/limjunxian1/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/limjunxian1/ip.git (master) completed! -Sep 01, 2023 4:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [21/480] Analyzing https://github.com/dishenggg/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [13/480] Analyzing https://github.com/howenc/ip.git (master)... +Sep 01, 2023 1:05:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cxo05/ip.git (master)... +Sep 01, 2023 1:05:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cxo05/ip.git (master) completed! +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/phiphi-tan/ip.git to complete... -Sep 01, 2023 4:09:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dishenggg/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dishenggg/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LINCHENYU2030S/ip.git completed! -Sep 01, 2023 4:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/NgChunMan/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [14/480] Analyzing https://github.com/josepholim/ip.git (master)... +Sep 01, 2023 1:05:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/howenc/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/howenc/ip.git (master)... +Sep 01, 2023 1:05:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/josepholim/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/josepholim/ip.git (master)... +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/coderhuang559/ip.git completed! -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ktzy0305/ip.git... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/pra-navi/ip.git completed! +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ktzy0305/ip.git to complete... +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LordSaumya/ip.git... -Sep 01, 2023 4:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/NgChunMan/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LINCHENYU2030S/ip.git completed! +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LordSaumya/ip.git to complete... -Sep 01, 2023 4:09:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/NgChunMan/ip.git (master) completed! -Sep 01, 2023 4:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [22/480] Analyzing https://github.com/jack1e0/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ktzy0305/ip.git to complete... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/pra-navi/ip.git completed! -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Chen1x/ip.git... -Sep 01, 2023 4:09:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jack1e0/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jack1e0/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Chen1x/ip.git to complete... -Sep 01, 2023 4:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dishenggg/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/phiphi-tan/ip.git completed! -Sep 01, 2023 4:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dishenggg/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yanghengtang/ip.git... -Sep 01, 2023 4:09:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dishenggg/ip.git (master) completed! -Sep 01, 2023 4:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [23/480] Analyzing https://github.com/zhyuhan/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhyuhan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhyuhan/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yanghengtang/ip.git to complete... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ktzy0305/ip.git completed! -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/johnnythesnake12/ip.git... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/johnnythesnake12/ip.git to complete... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LordSaumya/ip.git completed! -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/oeggy03/ip.git... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/oeggy03/ip.git to complete... -Sep 01, 2023 4:09:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jack1e0/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Chen1x/ip.git completed! -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/josepholim/ip.git (master)... +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/oeggy03/ip.git... +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/p-xp/ip.git... -Sep 01, 2023 4:09:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jack1e0/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jack1e0/ip.git (master) completed! -Sep 01, 2023 4:09:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [24/480] Analyzing https://github.com/hjoneweek/ip.git (master)... -Sep 01, 2023 4:09:52 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/oeggy03/ip.git to complete... +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/p-xp/ip.git to complete... -Sep 01, 2023 4:09:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/hjoneweek/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/hjoneweek/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/josepholim/ip.git (master)... +Sep 01, 2023 1:05:57 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/josepholim/ip.git (master) completed! +Sep 01, 2023 1:05:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [15/480] Analyzing https://github.com/geoffong11/ip.git (master)... +Sep 01, 2023 1:05:57 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/geoffong11/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/geoffong11/ip.git (master)... +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yanghengtang/ip.git completed! -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/matochichap/ip.git... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/matochichap/ip.git to complete... -Sep 01, 2023 4:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhyuhan/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhyuhan/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhyuhan/ip.git (master) completed! -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [25/480] Analyzing https://github.com/Dioclei/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Dioclei/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Dioclei/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/hjoneweek/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/hjoneweek/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/hjoneweek/ip.git (master) completed! -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [26/480] Analyzing https://github.com/Daphne789/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Daphne789/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Daphne789/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/oeggy03/ip.git completed! -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/johnnythesnake12/ip.git completed! -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/howenc/ip.git (master)... +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/applepiofmyeye/ip.git... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/TiwKangXu/ip.git... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/applepiofmyeye/ip.git to complete... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TiwKangXu/ip.git to complete... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/howenc/ip.git (master)... +Sep 01, 2023 1:05:57 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/howenc/ip.git (master) completed! +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/oeggy03/ip.git completed! +Sep 01, 2023 1:05:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [16/480] Analyzing https://github.com/jianrong7/ip.git (master)... +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/p-xp/ip.git completed! -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/TiwKangXu/ip.git... +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ScarletBlanks/ip.git... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jianrong7/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jianrong7/ip.git (master)... +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ScarletBlanks/ip.git to complete... -Sep 01, 2023 4:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Dioclei/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Dioclei/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Dioclei/ip.git (master) completed! -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [27/480] Analyzing https://github.com/peiran18/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/peiran18/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/peiran18/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TiwKangXu/ip.git to complete... +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/matochichap/ip.git completed! -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chiayunrong/ip.git... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chiayunrong/ip.git to complete... -Sep 01, 2023 4:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Daphne789/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/peiran18/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/peiran18/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/peiran18/ip.git (master) completed! -Sep 01, 2023 4:09:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Daphne789/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Daphne789/ip.git (master) completed! -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [28/480] Analyzing https://github.com/WinstonLeonard/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [29/480] Analyzing https://github.com/AriellaCallista/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AriellaCallista/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AriellaCallista/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/WinstonLeonard/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/WinstonLeonard/ip.git (master)... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/applepiofmyeye/ip.git completed! -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/devanshubisht/ip.git... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/geoffong11/ip.git (master)... +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/devanshubisht/ip.git to complete... +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TiwKangXu/ip.git completed! -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jx124/ip.git... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/devanshubisht/ip.git to complete... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jx124/ip.git to complete... +Sep 01, 2023 1:05:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/geoffong11/ip.git (master)... +Sep 01, 2023 1:05:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/geoffong11/ip.git (master) completed! +Sep 01, 2023 1:05:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [17/480] Analyzing https://github.com/A1WAYSD/ip.git (master)... +Sep 01, 2023 1:05:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/A1WAYSD/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/A1WAYSD/ip.git (master)... +Sep 01, 2023 1:05:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jianrong7/ip.git (master)... +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ScarletBlanks/ip.git completed! -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jianrong7/ip.git (master)... +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Clin-lyx/ip.git... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jx124/ip.git to complete... -Sep 01, 2023 4:09:53 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Clin-lyx/ip.git to complete... -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chiayunrong/ip.git completed! -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jianrong7/ip.git (master) completed! +Sep 01, 2023 1:05:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [18/480] Analyzing https://github.com/NgChunMan/ip.git (master)... +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/devanshubisht/ip.git completed! +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AryanG01/ip.git... -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NgChunMan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NgChunMan/ip.git (master)... +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chiayunrong/ip.git completed! +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jx124/ip.git completed! +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AryanG01/ip.git to complete... -Sep 01, 2023 4:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/WinstonLeonard/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WinstonLeonard/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WinstonLeonard/ip.git (master) completed! -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [30/480] Analyzing https://github.com/Jonyxzx/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jonyxzx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jonyxzx/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AriellaCallista/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AriellaCallista/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AriellaCallista/ip.git (master) completed! -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [31/480] Analyzing https://github.com/migfoo02/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/migfoo02/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/migfoo02/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/devanshubisht/ip.git completed! -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kayabuttertoastt/ip.git... -Sep 01, 2023 4:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/migfoo02/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kayabuttertoastt/ip.git to complete... -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Clin-lyx/ip.git completed! -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jx124/ip.git completed! -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sheryew/ip.git... -Sep 01, 2023 4:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/migfoo02/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/migfoo02/ip.git (master) completed! -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [32/480] Analyzing https://github.com/SynapseProgramming/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kayabuttertoastt/ip.git to complete... +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sheryew/ip.git to complete... -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AryanG01/ip.git completed! -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/A1WAYSD/ip.git (master)... +Sep 01, 2023 1:05:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/A1WAYSD/ip.git (master)... +Sep 01, 2023 1:05:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/A1WAYSD/ip.git (master) completed! +Sep 01, 2023 1:05:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [19/480] Analyzing https://github.com/limjunxian1/ip.git (master)... +Sep 01, 2023 1:05:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/limjunxian1/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/limjunxian1/ip.git (master)... +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Clin-lyx/ip.git completed! +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jonasongg/ip.git... -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yiwen101/ip.git... -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jonasongg/ip.git to complete... -Sep 01, 2023 4:09:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yiwen101/ip.git to complete... -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SynapseProgramming/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SynapseProgramming/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jonyxzx/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jonyxzx/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jonyxzx/ip.git (master) completed! -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [33/480] Analyzing https://github.com/Darren159/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SynapseProgramming/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Darren159/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Darren159/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SynapseProgramming/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SynapseProgramming/ip.git (master) completed! -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [34/480] Analyzing https://github.com/imkwokyong/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/imkwokyong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/imkwokyong/ip.git (master)... -Sep 01, 2023 4:09:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Darren159/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kayabuttertoastt/ip.git completed! -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tiongMax/ip.git... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tiongMax/ip.git to complete... -Sep 01, 2023 4:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Darren159/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Darren159/ip.git (master) completed! -Sep 01, 2023 4:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [35/480] Analyzing https://github.com/joeng03/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AryanG01/ip.git completed! +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sheryew/ip.git completed! -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yiwen101/ip.git... +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tiongMax/ip.git... +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kayabuttertoastt/ip.git completed! +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yiwen101/ip.git to complete... +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chuababyy/ip.git... -Sep 01, 2023 4:09:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/joeng03/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/joeng03/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tiongMax/ip.git to complete... +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chuababyy/ip.git to complete... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yiwen101/ip.git completed! -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/NgChunMan/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/NgChunMan/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/NgChunMan/ip.git (master) completed! +Sep 01, 2023 1:05:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [20/480] Analyzing https://github.com/jack1e0/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jack1e0/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jack1e0/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jonasongg/ip.git completed! -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/supermii2/ip.git... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/remuslum/ip.git... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/supermii2/ip.git to complete... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/remuslum/ip.git to complete... -Sep 01, 2023 4:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/imkwokyong/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/imkwokyong/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/joeng03/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/joeng03/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/joeng03/ip.git (master) completed! -Sep 01, 2023 4:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/imkwokyong/ip.git (master) completed! -Sep 01, 2023 4:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [36/480] Analyzing https://github.com/vijay-shankaranand/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [37/480] Analyzing https://github.com/SelwynAng/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SelwynAng/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SelwynAng/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/vijay-shankaranand/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/vijay-shankaranand/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tiongMax/ip.git completed! -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yiwen101/ip.git completed! +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chuababyy/ip.git completed! +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/remuslum/ip.git... +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kanna-1/ip.git... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kanna-1/ip.git to complete... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chuababyy/ip.git completed! -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/supermii2/ip.git completed! -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/remuslum/ip.git to complete... +Sep 01, 2023 1:05:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/limjunxian1/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tiongMax/ip.git completed! +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nicolengk/ip.git... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/remuslum/ip.git completed! -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/limjunxian1/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/limjunxian1/ip.git (master) completed! +Sep 01, 2023 1:05:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [21/480] Analyzing https://github.com/hjoneweek/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/hjoneweek/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/hjoneweek/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nicolengk/ip.git to complete... +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/supermii2/ip.git completed! +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/newway1814/ip.git... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kanna-1/ip.git completed! +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/glenngnng/ip.git... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nicolengk/ip.git to complete... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/newway1814/ip.git to complete... -Sep 01, 2023 4:09:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/glenngnng/ip.git to complete... -Sep 01, 2023 4:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/vijay-shankaranand/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/vijay-shankaranand/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/vijay-shankaranand/ip.git (master) completed! -Sep 01, 2023 4:09:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [38/480] Analyzing https://github.com/jeffrey-jian/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jeffrey-jian/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jeffrey-jian/ip.git (master)... -Sep 01, 2023 4:09:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SelwynAng/ip.git (master)... -Sep 01, 2023 4:09:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SelwynAng/ip.git (master)... -Sep 01, 2023 4:09:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SelwynAng/ip.git (master) completed! -Sep 01, 2023 4:09:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [39/480] Analyzing https://github.com/tanyyyming/ip.git (master)... -Sep 01, 2023 4:09:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanyyyming/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanyyyming/ip.git (master)... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kanna-1/ip.git completed! -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/remuslum/ip.git completed! +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zsh-eng/ip.git... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zsh-eng/ip.git to complete... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nicolengk/ip.git completed! -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zsh-eng/ip.git to complete... +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mingyuanc/ip.git... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/newway1814/ip.git completed! -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/glenngnng/ip.git completed! -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mingyuanc/ip.git to complete... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:05:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/hjoneweek/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jack1e0/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/hjoneweek/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/hjoneweek/ip.git (master) completed! +Sep 01, 2023 1:05:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [22/480] Analyzing https://github.com/Kurtyjlee/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jack1e0/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jack1e0/ip.git (master) completed! +Sep 01, 2023 1:05:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [23/480] Analyzing https://github.com/dishenggg/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Kurtyjlee/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Kurtyjlee/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dishenggg/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:05:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dishenggg/ip.git (master)... +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/newway1814/ip.git completed! +Sep 01, 2023 1:05:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LamJiuFong/ip.git... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LamJiuFong/ip.git to complete... +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/glenngnng/ip.git completed! +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GlendaChong/ip.git... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GlendaChong/ip.git to complete... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LamJiuFong/ip.git to complete... -Sep 01, 2023 4:09:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jeffrey-jian/ip.git (master)... -Sep 01, 2023 4:09:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jeffrey-jian/ip.git (master)... -Sep 01, 2023 4:09:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jeffrey-jian/ip.git (master) completed! -Sep 01, 2023 4:09:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [40/480] Analyzing https://github.com/JCSnap/ip.git (master)... -Sep 01, 2023 4:09:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JCSnap/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JCSnap/ip.git (master)... -Sep 01, 2023 4:09:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanyyyming/ip.git (master)... -Sep 01, 2023 4:09:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanyyyming/ip.git (master)... -Sep 01, 2023 4:09:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanyyyming/ip.git (master) completed! -Sep 01, 2023 4:09:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [41/480] Analyzing https://github.com/AprupKale/ip.git (master)... -Sep 01, 2023 4:09:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AprupKale/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AprupKale/ip.git (master)... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zsh-eng/ip.git completed! -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/starrylight99/ip.git... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mingyuanc/ip.git completed! +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/starrylight99/ip.git to complete... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GlendaChong/ip.git completed! -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AustinHuang1203/ip.git... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AustinHuang1203/ip.git to complete... +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LamJiuFong/ip.git completed! -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/seewhyjay/ip.git... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mingyuanc/ip.git completed! -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AustinHuang1203/ip.git to complete... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ruth-lim/ip.git... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/seewhyjay/ip.git to complete... -Sep 01, 2023 4:09:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ruth-lim/ip.git to complete... -Sep 01, 2023 4:09:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JCSnap/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JCSnap/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JCSnap/ip.git (master) completed! -Sep 01, 2023 4:09:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [42/480] Analyzing https://github.com/woojiahao/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/woojiahao/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/woojiahao/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AprupKale/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AprupKale/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AprupKale/ip.git (master) completed! -Sep 01, 2023 4:09:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [43/480] Analyzing https://github.com/PetrichorPrecipice/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/PetrichorPrecipice/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/PetrichorPrecipice/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kurtyjlee/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kurtyjlee/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kurtyjlee/ip.git (master) completed! +Sep 01, 2023 1:06:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dishenggg/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [24/480] Analyzing https://github.com/zhyuhan/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GlendaChong/ip.git completed! +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ruth-lim/ip.git... +Sep 01, 2023 1:06:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dishenggg/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dishenggg/ip.git (master) completed! +Sep 01, 2023 1:06:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [25/480] Analyzing https://github.com/Dioclei/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhyuhan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhyuhan/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ruth-lim/ip.git to complete... +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AustinHuang1203/ip.git completed! +Sep 01, 2023 1:06:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Dioclei/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Dioclei/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/starrylight99/ip.git completed! -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/limzhenwy/ip.git... -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/limzhenwy/ip.git to complete... -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AustinHuang1203/ip.git completed! -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xCOLOURx/ip.git... -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/limzhenwy/ip.git to complete... +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xCOLOURx/ip.git to complete... -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/seewhyjay/ip.git completed! -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruth-lim/ip.git completed! -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zacwong2151/ip.git... -Sep 01, 2023 4:09:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/woojiahao/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/limzhenwy/ip.git completed! -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Zjinnnn/ip.git... -Sep 01, 2023 4:09:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/woojiahao/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zacwong2151/ip.git to complete... -Sep 01, 2023 4:09:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/woojiahao/ip.git (master) completed! -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Dioclei/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Dioclei/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Dioclei/ip.git (master) completed! +Sep 01, 2023 1:06:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [26/480] Analyzing https://github.com/Daphne789/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Daphne789/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Daphne789/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruth-lim/ip.git completed! +Sep 01, 2023 1:06:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhyuhan/ip.git (master)... +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Zjinnnn/ip.git... +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Zjinnnn/ip.git to complete... -Sep 01, 2023 4:09:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [44/480] Analyzing https://github.com/syamfarh/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xCOLOURx/ip.git completed! +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/limzhenwy/ip.git completed! +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/awhb/ip.git... -Sep 01, 2023 4:09:57 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/awhb/ip.git to complete... -Sep 01, 2023 4:09:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/syamfarh/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/syamfarh/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PetrichorPrecipice/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PetrichorPrecipice/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PetrichorPrecipice/ip.git (master) completed! -Sep 01, 2023 4:09:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [45/480] Analyzing https://github.com/D-Limiter/ip.git (master)... -Sep 01, 2023 4:09:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/D-Limiter/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/D-Limiter/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xCOLOURx/ip.git completed! -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/teoks0199/ip.git... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhyuhan/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhyuhan/ip.git (master) completed! +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [27/480] Analyzing https://github.com/WinstonLeonard/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/teoks0199/ip.git to complete... -Sep 01, 2023 4:09:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/D-Limiter/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/syamfarh/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/syamfarh/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/D-Limiter/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/D-Limiter/ip.git (master) completed! -Sep 01, 2023 4:09:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [46/480] Analyzing https://github.com/LINCHENYU2030S/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zacwong2151/ip.git completed! -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/WinstonLeonard/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/WinstonLeonard/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/qz1004/ip.git... -Sep 01, 2023 4:09:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/syamfarh/ip.git (master) completed! -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/qz1004/ip.git to complete... -Sep 01, 2023 4:09:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [47/480] Analyzing https://github.com/coderhuang559/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LINCHENYU2030S/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LINCHENYU2030S/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/coderhuang559/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/coderhuang559/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/awhb/ip.git completed! -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Zjinnnn/ip.git completed! -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/pangyyen/ip.git... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Mahidharah/ip.git... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Daphne789/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/pangyyen/ip.git to complete... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/awhb/ip.git completed! +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Mahidharah/ip.git... +Sep 01, 2023 1:06:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Daphne789/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Daphne789/ip.git (master) completed! +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Mahidharah/ip.git to complete... -Sep 01, 2023 4:09:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LINCHENYU2030S/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LINCHENYU2030S/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LINCHENYU2030S/ip.git (master) completed! -Sep 01, 2023 4:09:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [48/480] Analyzing https://github.com/pra-navi/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/teoks0199/ip.git completed! -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [28/480] Analyzing https://github.com/AriellaCallista/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AriellaCallista/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AriellaCallista/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/WinstonLeonard/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WinstonLeonard/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/qz1004/ip.git completed! +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WinstonLeonard/ip.git (master) completed! +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [29/480] Analyzing https://github.com/peiran18/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jason-raiin/ip.git... -Sep 01, 2023 4:09:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/pra-navi/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/pra-navi/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/teoks0199/ip.git completed! +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jason-raiin/ip.git to complete... -Sep 01, 2023 4:09:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/coderhuang559/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/coderhuang559/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/coderhuang559/ip.git (master) completed! -Sep 01, 2023 4:09:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [49/480] Analyzing https://github.com/phiphi-tan/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/qz1004/ip.git completed! -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/peiran18/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/peiran18/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ravern/ip.git... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ravern/ip.git to complete... -Sep 01, 2023 4:09:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/phiphi-tan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/phiphi-tan/ip.git (master)... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Mahidharah/ip.git completed! -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bobscodedump/ip.git... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/pangyyen/ip.git completed! -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bobscodedump/ip.git... +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bobscodedump/ip.git to complete... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/peiran18/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Mahidharah/ip.git completed! +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nixonwidjaja/ip.git... -Sep 01, 2023 4:09:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/peiran18/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/peiran18/ip.git (master) completed! +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nixonwidjaja/ip.git to complete... -Sep 01, 2023 4:09:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/pra-navi/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [30/480] Analyzing https://github.com/migfoo02/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/migfoo02/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/migfoo02/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AriellaCallista/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jason-raiin/ip.git completed! -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/techjay-c/ip.git... -Sep 01, 2023 4:09:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/pra-navi/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/pra-navi/ip.git (master) completed! -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/techjay-c/ip.git to complete... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [50/480] Analyzing https://github.com/ktzy0305/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ktzy0305/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ktzy0305/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/phiphi-tan/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/phiphi-tan/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/phiphi-tan/ip.git (master) completed! -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [51/480] Analyzing https://github.com/LordSaumya/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LordSaumya/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LordSaumya/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LordSaumya/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LordSaumya/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LordSaumya/ip.git (master) completed! -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [52/480] Analyzing https://github.com/Chen1x/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Chen1x/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Chen1x/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bobscodedump/ip.git completed! -Sep 01, 2023 4:09:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Chen1x/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nixonwidjaja/ip.git completed! -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ravern/ip.git completed! -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AriellaCallista/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AriellaCallista/ip.git (master) completed! +Sep 01, 2023 1:06:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [31/480] Analyzing https://github.com/Jonyxzx/ip.git (master)... +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryanozx/ip.git... -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:01 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/techjay-c/ip.git to complete... +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ryanozx/ip.git to complete... +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bobscodedump/ip.git completed! +Sep 01, 2023 1:06:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jonyxzx/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jonyxzx/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LuahJunYang/ip.git... -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LuahJunYang/ip.git to complete... -Sep 01, 2023 4:09:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ktzy0305/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ryanozx/ip.git to complete... -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/techjay-c/ip.git completed! -Sep 01, 2023 4:09:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Chen1x/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Chen1x/ip.git (master) completed! -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [53/480] Analyzing https://github.com/yanghengtang/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nixonwidjaja/ip.git completed! +Sep 01, 2023 1:06:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/migfoo02/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/HEEaZ/ip.git... -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/migfoo02/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/migfoo02/ip.git (master) completed! +Sep 01, 2023 1:06:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [32/480] Analyzing https://github.com/Darren159/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/HEEaZ/ip.git to complete... +Sep 01, 2023 1:06:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Darren159/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Darren159/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/techjay-c/ip.git completed! +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dom-buri/ip.git... -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dom-buri/ip.git to complete... -Sep 01, 2023 4:09:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/HEEaZ/ip.git to complete... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yanghengtang/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yanghengtang/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ktzy0305/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ktzy0305/ip.git (master) completed! -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [54/480] Analyzing https://github.com/oeggy03/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/oeggy03/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/oeggy03/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/oeggy03/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/oeggy03/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/oeggy03/ip.git (master) completed! -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [55/480] Analyzing https://github.com/johnnythesnake12/ip.git (master)... -Sep 01, 2023 4:09:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/johnnythesnake12/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:09:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/johnnythesnake12/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yanghengtang/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yanghengtang/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yanghengtang/ip.git (master) completed! -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [56/480] Analyzing https://github.com/p-xp/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LuahJunYang/ip.git completed! -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ryanozx/ip.git completed! -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/p-xp/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/p-xp/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AlainS87/ip.git... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tiongjjyi/ip.git... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AlainS87/ip.git to complete... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dom-buri/ip.git completed! -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LuahJunYang/ip.git completed! +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tiongjjyi/ip.git... +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/HEEaZ/ip.git completed! -Sep 01, 2023 4:10:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/johnnythesnake12/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tiongjjyi/ip.git to complete... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Vanessamae23/ip.git... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Vanessamae23/ip.git to complete... +Sep 01, 2023 1:06:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jonyxzx/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jonyxzx/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jonyxzx/ip.git (master) completed! +Sep 01, 2023 1:06:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [33/480] Analyzing https://github.com/imkwokyong/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Darren159/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/imkwokyong/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/imkwokyong/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dom-buri/ip.git completed! +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/fuyiqiao/ip.git... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Darren159/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Darren159/ip.git (master) completed! +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/fuyiqiao/ip.git to complete... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Vanessamae23/ip.git to complete... -Sep 01, 2023 4:10:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/johnnythesnake12/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/johnnythesnake12/ip.git (master) completed! -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [57/480] Analyzing https://github.com/matochichap/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/matochichap/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/matochichap/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/p-xp/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/p-xp/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/p-xp/ip.git (master) completed! -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [58/480] Analyzing https://github.com/applepiofmyeye/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/applepiofmyeye/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/applepiofmyeye/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/applepiofmyeye/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AlainS87/ip.git completed! -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tiongjjyi/ip.git completed! -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [34/480] Analyzing https://github.com/SynapseProgramming/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/spatuly/ip.git... -Sep 01, 2023 4:10:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/applepiofmyeye/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/applepiofmyeye/ip.git (master) completed! -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/spatuly/ip.git to complete... -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [59/480] Analyzing https://github.com/TiwKangXu/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tanshiyu1999/ip.git... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SynapseProgramming/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SynapseProgramming/ip.git (master)... +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tiongjjyi/ip.git completed! +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Vanessamae23/ip.git completed! -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Kb-Tay/ip.git... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tanshiyu1999/ip.git... +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanshiyu1999/ip.git to complete... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Kb-Tay/ip.git... +Sep 01, 2023 1:06:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kb-Tay/ip.git to complete... -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TiwKangXu/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TiwKangXu/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/matochichap/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/fuyiqiao/ip.git completed! -Sep 01, 2023 4:10:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/matochichap/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/matochichap/ip.git (master) completed! -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [60/480] Analyzing https://github.com/ScarletBlanks/ip.git (master)... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/beatricecst/ip.git... -Sep 01, 2023 4:10:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/beatricecst/ip.git to complete... -Sep 01, 2023 4:10:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ScarletBlanks/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ScarletBlanks/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ScarletBlanks/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ScarletBlanks/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ScarletBlanks/ip.git (master) completed! -Sep 01, 2023 4:10:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [61/480] Analyzing https://github.com/chiayunrong/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TiwKangXu/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chiayunrong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chiayunrong/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TiwKangXu/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TiwKangXu/ip.git (master) completed! -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanshiyu1999/ip.git completed! -Sep 01, 2023 4:10:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [62/480] Analyzing https://github.com/devanshubisht/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/spatuly/ip.git completed! +Sep 01, 2023 1:06:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SynapseProgramming/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanveersingh10/ip.git... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanveersingh10/ip.git to complete... -Sep 01, 2023 4:10:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/devanshubisht/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/devanshubisht/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kb-Tay/ip.git completed! -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/spatuly/ip.git completed! -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SynapseProgramming/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SynapseProgramming/ip.git (master) completed! +Sep 01, 2023 1:06:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [35/480] Analyzing https://github.com/joeng03/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/imkwokyong/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/joeng03/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/joeng03/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanshiyu1999/ip.git completed! +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/thienmy0/ip.git... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/imkwokyong/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/imkwokyong/ip.git (master) completed! +Sep 01, 2023 1:06:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [36/480] Analyzing https://github.com/vijay-shankaranand/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/thienmy0/ip.git to complete... +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kb-Tay/ip.git completed! +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/s0ngyang/ip.git... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/s0ngyang/ip.git to complete... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/thienmy0/ip.git to complete... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/vijay-shankaranand/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/vijay-shankaranand/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanveersingh10/ip.git completed! +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/beatricecst/ip.git completed! -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ldinghan/ip.git... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/feifeiraindrops/ip.git... +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ldinghan/ip.git to complete... -Sep 01, 2023 4:10:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/devanshubisht/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/devanshubisht/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/devanshubisht/ip.git (master) completed! -Sep 01, 2023 4:10:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [63/480] Analyzing https://github.com/Clin-lyx/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Clin-lyx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Clin-lyx/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chiayunrong/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chiayunrong/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chiayunrong/ip.git (master) completed! -Sep 01, 2023 4:10:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [64/480] Analyzing https://github.com/jx124/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanveersingh10/ip.git completed! -Sep 01, 2023 4:10:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jx124/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jx124/ip.git (master)... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/s0ngyang/ip.git completed! -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/feifeiraindrops/ip.git... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ryanongwx/ip.git... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/thienmy0/ip.git completed! -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ryanongwx/ip.git to complete... -Sep 01, 2023 4:10:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/feifeiraindrops/ip.git to complete... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/thienmy0/ip.git completed! +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ryanongwx/ip.git... +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/s0ngyang/ip.git completed! +Sep 01, 2023 1:06:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/joeng03/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kwangthiag/ip.git... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ryanongwx/ip.git to complete... +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kwangthiag/ip.git to complete... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/joeng03/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/vijay-shankaranand/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/joeng03/ip.git (master) completed! +Sep 01, 2023 1:06:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [37/480] Analyzing https://github.com/SelwynAng/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/vijay-shankaranand/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/vijay-shankaranand/ip.git (master) completed! +Sep 01, 2023 1:06:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [38/480] Analyzing https://github.com/jeffrey-jian/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SelwynAng/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SelwynAng/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jeffrey-jian/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jeffrey-jian/ip.git (master)... +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ldinghan/ip.git completed! -Sep 01, 2023 4:10:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Clin-lyx/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/elhy1999/ip.git... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/elhy1999/ip.git to complete... -Sep 01, 2023 4:10:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Clin-lyx/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Clin-lyx/ip.git (master) completed! -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [65/480] Analyzing https://github.com/AryanG01/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AryanG01/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AryanG01/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AryanG01/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jx124/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AryanG01/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AryanG01/ip.git (master) completed! -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [66/480] Analyzing https://github.com/kayabuttertoastt/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jx124/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kayabuttertoastt/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kayabuttertoastt/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jx124/ip.git (master) completed! -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [67/480] Analyzing https://github.com/sheryew/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sheryew/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sheryew/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/feifeiraindrops/ip.git completed! -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ryanongwx/ip.git completed! -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/elhy1999/ip.git to complete... +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/songgthu/ip.git... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/GohTengFong/ip.git... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/songgthu/ip.git to complete... +Sep 01, 2023 1:06:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kwangthiag/ip.git completed! -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/GohTengFong/ip.git... +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GohTengFong/ip.git to complete... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/songgthu/ip.git to complete... -Sep 01, 2023 4:10:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kayabuttertoastt/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ryanongwx/ip.git completed! +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/simbayippy/ip.git... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/elhy1999/ip.git completed! -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/simbayippy/ip.git to complete... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/elhy1999/ip.git completed! +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Khaleelur-Rahman/ip.git... -Sep 01, 2023 4:10:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kayabuttertoastt/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kayabuttertoastt/ip.git (master) completed! -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [68/480] Analyzing https://github.com/yiwen101/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Khaleelur-Rahman/ip.git to complete... -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yiwen101/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yiwen101/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sheryew/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sheryew/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sheryew/ip.git (master) completed! -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [69/480] Analyzing https://github.com/jonasongg/ip.git (master)... -Sep 01, 2023 4:10:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jonasongg/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jonasongg/ip.git (master)... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/songgthu/ip.git completed! -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/proto-aiken-13/ip.git... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GohTengFong/ip.git completed! -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SelwynAng/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/proto-aiken-13/ip.git to complete... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bwangpj/ip.git... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jeffrey-jian/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jeffrey-jian/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SelwynAng/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SelwynAng/ip.git (master) completed! +Sep 01, 2023 1:06:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jeffrey-jian/ip.git (master) completed! +Sep 01, 2023 1:06:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [39/480] Analyzing https://github.com/tanyyyming/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [40/480] Analyzing https://github.com/JCSnap/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanyyyming/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanyyyming/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JCSnap/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JCSnap/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/simbayippy/ip.git completed! -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bwangpj/ip.git... +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GohTengFong/ip.git completed! +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bwangpj/ip.git to complete... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/weeweh/ip.git... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Khaleelur-Rahman/ip.git completed! -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/weeweh/ip.git to complete... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Khaleelur-Rahman/ip.git completed! +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/s-peiran/ip.git... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/s-peiran/ip.git to complete... -Sep 01, 2023 4:10:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yiwen101/ip.git (master)... -Sep 01, 2023 4:10:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yiwen101/ip.git (master)... -Sep 01, 2023 4:10:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yiwen101/ip.git (master) completed! -Sep 01, 2023 4:10:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [70/480] Analyzing https://github.com/tiongMax/ip.git (master)... -Sep 01, 2023 4:10:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tiongMax/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tiongMax/ip.git (master)... -Sep 01, 2023 4:10:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jonasongg/ip.git (master)... -Sep 01, 2023 4:10:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jonasongg/ip.git (master)... -Sep 01, 2023 4:10:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jonasongg/ip.git (master) completed! -Sep 01, 2023 4:10:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [71/480] Analyzing https://github.com/chuababyy/ip.git (master)... -Sep 01, 2023 4:10:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chuababyy/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chuababyy/ip.git (master)... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bwangpj/ip.git completed! -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/proto-aiken-13/ip.git completed! -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jylow/ip.git... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/s-peiran/ip.git completed! -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/weeweh/ip.git completed! -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jylow/ip.git to complete... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JCSnap/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JCSnap/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JCSnap/ip.git (master) completed! +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bwangpj/ip.git completed! +Sep 01, 2023 1:06:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [41/480] Analyzing https://github.com/AprupKale/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lawruixi/ip.git... -Sep 01, 2023 4:10:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tiongMax/ip.git (master)... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JeremyYong128/ip.git... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lawruixi/ip.git to complete... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AprupKale/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AprupKale/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanyyyming/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/weeweh/ip.git completed! +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/s-peiran/ip.git completed! +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JeremyYong128/ip.git... +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/brandon-nam/ip.git... -Sep 01, 2023 4:10:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tiongMax/ip.git (master)... -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JeremyYong128/ip.git to complete... -Sep 01, 2023 4:10:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tiongMax/ip.git (master) completed! -Sep 01, 2023 4:10:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/brandon-nam/ip.git to complete... -Sep 01, 2023 4:10:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [72/480] Analyzing https://github.com/supermii2/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/supermii2/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/supermii2/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chuababyy/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chuababyy/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chuababyy/ip.git (master) completed! -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [73/480] Analyzing https://github.com/remuslum/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/remuslum/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/remuslum/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanyyyming/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanyyyming/ip.git (master) completed! +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JeremyYong128/ip.git to complete... +Sep 01, 2023 1:06:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [42/480] Analyzing https://github.com/woojiahao/ip.git (master)... +Sep 01, 2023 1:06:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jylow/ip.git completed! -Sep 01, 2023 4:10:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JeremyYong128/ip.git completed! -Sep 01, 2023 4:10:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lawruixi/ip.git completed! -Sep 01, 2023 4:10:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/brandon-nam/ip.git completed! -Sep 01, 2023 4:10:04 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/woojiahao/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/woojiahao/ip.git (master)... +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LHeng1/ip.git... -Sep 01, 2023 4:10:04 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LHeng1/ip.git to complete... +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lawruixi/ip.git completed! +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Leb14/ip.git... -Sep 01, 2023 4:10:04 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Leb14/ip.git to complete... +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JeremyYong128/ip.git completed! +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/B-enguin/ip.git... -Sep 01, 2023 4:10:04 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LHeng1/ip.git completed! +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/B-enguin/ip.git to complete... +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/s-kybound/ip.git... -Sep 01, 2023 4:10:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LHeng1/ip.git to complete... -Sep 01, 2023 4:10:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AprupKale/ip.git (master)... +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/s-kybound/ip.git to complete... -Sep 01, 2023 4:10:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/B-enguin/ip.git to complete... -Sep 01, 2023 4:10:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Leb14/ip.git to complete... -Sep 01, 2023 4:10:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/supermii2/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/supermii2/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/supermii2/ip.git (master) completed! -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [74/480] Analyzing https://github.com/kanna-1/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/remuslum/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kanna-1/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kanna-1/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/remuslum/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/remuslum/ip.git (master) completed! -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [75/480] Analyzing https://github.com/nicolengk/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nicolengk/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nicolengk/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kanna-1/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kanna-1/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kanna-1/ip.git (master) completed! -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [76/480] Analyzing https://github.com/newway1814/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicolengk/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/newway1814/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/newway1814/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nicolengk/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nicolengk/ip.git (master) completed! -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [77/480] Analyzing https://github.com/glenngnng/ip.git (master)... -Sep 01, 2023 4:10:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/glenngnng/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/glenngnng/ip.git (master)... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Leb14/ip.git completed! -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LHeng1/ip.git completed! -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AprupKale/ip.git (master)... +Sep 01, 2023 1:06:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AprupKale/ip.git (master) completed! +Sep 01, 2023 1:06:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [43/480] Analyzing https://github.com/PetrichorPrecipice/ip.git (master)... +Sep 01, 2023 1:06:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/PetrichorPrecipice/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/PetrichorPrecipice/ip.git (master)... +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/brandon-nam/ip.git completed! +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wesho1107/ip.git... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Leb14/ip.git completed! +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wesho1107/ip.git to complete... +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yihfei/ip.git... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/s-kybound/ip.git completed! -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yihfei/ip.git to complete... +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/B-enguin/ip.git completed! -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wesho1107/ip.git to complete... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AaronJT1/ip.git... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/s-kybound/ip.git completed! +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dlathyun/ip.git... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yihfei/ip.git to complete... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dlathyun/ip.git to complete... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AaronJT1/ip.git to complete... -Sep 01, 2023 4:10:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/glenngnng/ip.git (master)... -Sep 01, 2023 4:10:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/glenngnng/ip.git (master)... -Sep 01, 2023 4:10:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/glenngnng/ip.git (master) completed! -Sep 01, 2023 4:10:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [78/480] Analyzing https://github.com/zsh-eng/ip.git (master)... -Sep 01, 2023 4:10:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/newway1814/ip.git (master)... -Sep 01, 2023 4:10:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/newway1814/ip.git (master)... -Sep 01, 2023 4:10:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zsh-eng/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zsh-eng/ip.git (master)... -Sep 01, 2023 4:10:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/newway1814/ip.git (master) completed! -Sep 01, 2023 4:10:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [79/480] Analyzing https://github.com/GlendaChong/ip.git (master)... -Sep 01, 2023 4:10:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/GlendaChong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/GlendaChong/ip.git (master)... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dlathyun/ip.git completed! -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ricketytoc/ip.git... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dlathyun/ip.git to complete... +Sep 01, 2023 1:06:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/woojiahao/ip.git (master)... +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wesho1107/ip.git completed! -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ricketytoc/ip.git to complete... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ricketytoc/ip.git... +Sep 01, 2023 1:06:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/woojiahao/ip.git (master)... +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yihfei/ip.git completed! -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AaronJT1/ip.git completed! -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/woojiahao/ip.git (master) completed! +Sep 01, 2023 1:06:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [44/480] Analyzing https://github.com/syamfarh/ip.git (master)... +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ricketytoc/ip.git to complete... +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Angelyxx/ip.git... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Angelyxx/ip.git to complete... +Sep 01, 2023 1:06:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/syamfarh/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/syamfarh/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AaronJT1/ip.git completed! +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dlathyun/ip.git completed! +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jingting1412/ip.git... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SinhaVedant/ip.git... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jingting1412/ip.git to complete... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Angelyxx/ip.git to complete... -Sep 01, 2023 4:10:05 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PetrichorPrecipice/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SinhaVedant/ip.git to complete... -Sep 01, 2023 4:10:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GlendaChong/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/GlendaChong/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/GlendaChong/ip.git (master) completed! -Sep 01, 2023 4:10:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [80/480] Analyzing https://github.com/LamJiuFong/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LamJiuFong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LamJiuFong/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zsh-eng/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zsh-eng/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zsh-eng/ip.git (master) completed! -Sep 01, 2023 4:10:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [81/480] Analyzing https://github.com/mingyuanc/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mingyuanc/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mingyuanc/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jingting1412/ip.git to complete... +Sep 01, 2023 1:06:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PetrichorPrecipice/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PetrichorPrecipice/ip.git (master) completed! +Sep 01, 2023 1:06:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [45/480] Analyzing https://github.com/D-Limiter/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Angelyxx/ip.git completed! +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ricketytoc/ip.git completed! -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/freddychenyouren2/ip.git... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jordankanghm/ip.git... +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jordankanghm/ip.git to complete... +Sep 01, 2023 1:06:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/D-Limiter/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/D-Limiter/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/freddychenyouren2/ip.git to complete... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/syamfarh/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/syamfarh/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/syamfarh/ip.git (master) completed! +Sep 01, 2023 1:06:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [46/480] Analyzing https://github.com/coderhuang559/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/coderhuang559/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/coderhuang559/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/D-Limiter/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SinhaVedant/ip.git completed! -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Angelyxx/ip.git completed! -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jordankanghm/ip.git... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jingting1412/ip.git completed! -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/adhigop13/ip.git... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/waseemingly/ip.git... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jordankanghm/ip.git to complete... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/waseemingly/ip.git to complete... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/D-Limiter/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/D-Limiter/ip.git (master) completed! +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/adhigop13/ip.git to complete... -Sep 01, 2023 4:10:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LamJiuFong/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LamJiuFong/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LamJiuFong/ip.git (master) completed! -Sep 01, 2023 4:10:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [82/480] Analyzing https://github.com/starrylight99/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/starrylight99/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/starrylight99/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [47/480] Analyzing https://github.com/pra-navi/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/waseemingly/ip.git to complete... +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/freddychenyouren2/ip.git completed! -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/raydenlim/ip.git... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/pra-navi/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/pra-navi/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/raydenlim/ip.git to complete... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jordankanghm/ip.git completed! -Sep 01, 2023 4:10:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mingyuanc/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/adhigop13/ip.git completed! -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jingyu987/ip.git... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jingyu987/ip.git to complete... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/FerdiHS/ip.git... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/coderhuang559/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/coderhuang559/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/coderhuang559/ip.git (master) completed! +Sep 01, 2023 1:06:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [48/480] Analyzing https://github.com/LINCHENYU2030S/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/waseemingly/ip.git completed! -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LINCHENYU2030S/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LINCHENYU2030S/ip.git (master)... +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/FerdiHS/ip.git... +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/adhigop13/ip.git completed! +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/FerdiHS/ip.git to complete... -Sep 01, 2023 4:10:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/starrylight99/ip.git (master)... -Sep 01, 2023 4:10:06 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jrchoo/ip.git... -Sep 01, 2023 4:10:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mingyuanc/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/raydenlim/ip.git completed! +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jrchoo/ip.git to complete... -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mingyuanc/ip.git (master) completed! -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [83/480] Analyzing https://github.com/AustinHuang1203/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/starrylight99/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/starrylight99/ip.git (master) completed! -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [84/480] Analyzing https://github.com/seewhyjay/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/seewhyjay/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/seewhyjay/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AustinHuang1203/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AustinHuang1203/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/raydenlim/ip.git completed! -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jingyu987/ip.git completed! +Sep 01, 2023 1:06:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/RiyaMehta2211/ip.git... -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/RiyaMehta2211/ip.git to complete... -Sep 01, 2023 4:10:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AustinHuang1203/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/seewhyjay/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AustinHuang1203/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AustinHuang1203/ip.git (master) completed! -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [85/480] Analyzing https://github.com/ruth-lim/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/seewhyjay/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/seewhyjay/ip.git (master) completed! -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [86/480] Analyzing https://github.com/limzhenwy/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ruth-lim/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ruth-lim/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/limzhenwy/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/limzhenwy/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/FerdiHS/ip.git completed! -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/pra-navi/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leezhanpeng/ip.git... -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jingyu987/ip.git completed! -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leezhanpeng/ip.git to complete... -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jrchoo/ip.git completed! -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/pra-navi/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/pra-navi/ip.git (master) completed! +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [49/480] Analyzing https://github.com/phiphi-tan/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/phiphi-tan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/phiphi-tan/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LINCHENYU2030S/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LINCHENYU2030S/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LINCHENYU2030S/ip.git (master) completed! +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [50/480] Analyzing https://github.com/ktzy0305/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ktzy0305/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ktzy0305/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/FerdiHS/ip.git completed! +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/juzzztinsoong/ip.git... -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/darrentfy/ip.git... -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/darrentfy/ip.git to complete... -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jrchoo/ip.git completed! +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/juzzztinsoong/ip.git to complete... -Sep 01, 2023 4:10:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/limzhenwy/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/limzhenwy/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/limzhenwy/ip.git (master) completed! -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [87/480] Analyzing https://github.com/xCOLOURx/ip.git (master)... -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/RiyaMehta2211/ip.git completed! -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/darrentfy/ip.git... +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/leezhanpeng/ip.git completed! +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/darrentfy/ip.git to complete... +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/redtailedfox/ip.git... -Sep 01, 2023 4:10:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Fallman2/ip.git... +Sep 01, 2023 1:06:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/phiphi-tan/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/redtailedfox/ip.git to complete... -Sep 01, 2023 4:10:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xCOLOURx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xCOLOURx/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xCOLOURx/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Fallman2/ip.git to complete... +Sep 01, 2023 1:06:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/phiphi-tan/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/phiphi-tan/ip.git (master) completed! +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [51/480] Analyzing https://github.com/LordSaumya/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LordSaumya/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LordSaumya/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/juzzztinsoong/ip.git completed! -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/darrentfy/ip.git completed! -Sep 01, 2023 4:10:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xCOLOURx/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xCOLOURx/ip.git (master) completed! -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/leezhanpeng/ip.git completed! -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Fallman2/ip.git... -Sep 01, 2023 4:10:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [88/480] Analyzing https://github.com/zacwong2151/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Heran9/ip.git... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Fallman2/ip.git to complete... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/VN-Hao/ip.git... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Heran9/ip.git to complete... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/darrentfy/ip.git completed! +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/VN-Hao/ip.git... +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/VN-Hao/ip.git to complete... -Sep 01, 2023 4:10:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ruth-lim/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zacwong2151/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zacwong2151/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ruth-lim/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ruth-lim/ip.git (master) completed! -Sep 01, 2023 4:10:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [89/480] Analyzing https://github.com/awhb/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/awhb/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/awhb/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/redtailedfox/ip.git completed! -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jingjie88/ip.git... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Fallman2/ip.git completed! +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jingjie88/ip.git to complete... -Sep 01, 2023 4:10:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zacwong2151/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zacwong2151/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zacwong2151/ip.git (master) completed! -Sep 01, 2023 4:10:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [90/480] Analyzing https://github.com/Zjinnnn/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Zjinnnn/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Zjinnnn/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Heran9/ip.git completed! -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/VN-Hao/ip.git completed! -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/H1410101/ip.git... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/H1410101/ip.git to complete... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LordSaumya/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LordSaumya/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LordSaumya/ip.git (master) completed! +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [52/480] Analyzing https://github.com/Chen1x/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ktzy0305/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Chen1x/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Chen1x/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ktzy0305/ip.git (master)... +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ktzy0305/ip.git (master) completed! +Sep 01, 2023 1:06:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [53/480] Analyzing https://github.com/yanghengtang/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Heran9/ip.git completed! +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yanghengtang/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yanghengtang/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Chen1x/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kimshitong/ip.git... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Fallman2/ip.git completed! -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ivanleekk/ip.git... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kimshitong/ip.git to complete... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ivanleekk/ip.git to complete... -Sep 01, 2023 4:10:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/awhb/ip.git (master)... -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Chen1x/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Chen1x/ip.git (master) completed! +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [54/480] Analyzing https://github.com/johnnythesnake12/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/johnnythesnake12/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/johnnythesnake12/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jingjie88/ip.git completed! -Sep 01, 2023 4:10:08 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ivanleekk/ip.git... +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/VN-Hao/ip.git completed! +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ivanleekk/ip.git to complete... +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lamchenghou/ip.git... -Sep 01, 2023 4:10:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/awhb/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/awhb/ip.git (master) completed! -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [91/480] Analyzing https://github.com/teoks0199/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lamchenghou/ip.git to complete... -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/teoks0199/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/teoks0199/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Zjinnnn/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Zjinnnn/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Zjinnnn/ip.git (master) completed! -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [92/480] Analyzing https://github.com/qz1004/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/qz1004/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/qz1004/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kimshitong/ip.git completed! -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tayruxin/ip.git... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/johnnythesnake12/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/johnnythesnake12/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/johnnythesnake12/ip.git (master) completed! +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [55/480] Analyzing https://github.com/oeggy03/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/oeggy03/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/oeggy03/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/H1410101/ip.git completed! -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tayruxin/ip.git... +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tayruxin/ip.git to complete... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ivanleekk/ip.git completed! +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/raynertjx/ip.git... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/raynertjx/ip.git to complete... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ivanleekk/ip.git completed! -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kimshitong/ip.git completed! +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lamchenghou/ip.git completed! +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhengyup/ip.git... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhengyup/ip.git to complete... -Sep 01, 2023 4:10:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/teoks0199/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/teoks0199/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/teoks0199/ip.git (master) completed! -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [93/480] Analyzing https://github.com/Mahidharah/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/qz1004/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lamchenghou/ip.git completed! -Sep 01, 2023 4:10:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/qz1004/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/larrywang0701/ip.git... -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/qz1004/ip.git (master) completed! -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Mahidharah/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Mahidharah/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [94/480] Analyzing https://github.com/pangyyen/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yanghengtang/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/larrywang0701/ip.git to complete... -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/pangyyen/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/pangyyen/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Mahidharah/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Mahidharah/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Mahidharah/ip.git (master) completed! -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [95/480] Analyzing https://github.com/jason-raiin/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jason-raiin/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jason-raiin/ip.git (master)... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yanghengtang/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yanghengtang/ip.git (master) completed! +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [56/480] Analyzing https://github.com/p-xp/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/p-xp/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/p-xp/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/oeggy03/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/oeggy03/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/oeggy03/ip.git (master) completed! +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tayruxin/ip.git completed! -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [57/480] Analyzing https://github.com/matochichap/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Carlintyj/ip.git... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Carlintyj/ip.git to complete... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/matochichap/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/matochichap/ip.git (master)... +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/raynertjx/ip.git completed! -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wxwern/ip.git... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zhengyup/ip.git completed! -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/larrywang0701/ip.git completed! +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wxwern/ip.git to complete... -Sep 01, 2023 4:10:09 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nubnubyas/ip.git... -Sep 01, 2023 4:10:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/pangyyen/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nubnubyas/ip.git to complete... -Sep 01, 2023 4:10:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/pangyyen/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/pangyyen/ip.git (master) completed! -Sep 01, 2023 4:10:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [96/480] Analyzing https://github.com/nixonwidjaja/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/larrywang0701/ip.git completed! -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aslam341/ip.git... -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nubnubyas/ip.git to complete... +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/aslam341/ip.git to complete... -Sep 01, 2023 4:10:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nixonwidjaja/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nixonwidjaja/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jason-raiin/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jason-raiin/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jason-raiin/ip.git (master) completed! -Sep 01, 2023 4:10:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [97/480] Analyzing https://github.com/bobscodedump/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bobscodedump/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bobscodedump/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nixonwidjaja/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nixonwidjaja/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nixonwidjaja/ip.git (master) completed! -Sep 01, 2023 4:10:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [98/480] Analyzing https://github.com/ravern/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ravern/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ravern/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/p-xp/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/p-xp/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/p-xp/ip.git (master) completed! +Sep 01, 2023 1:06:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [58/480] Analyzing https://github.com/applepiofmyeye/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/applepiofmyeye/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/applepiofmyeye/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Carlintyj/ip.git completed! -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wxwern/ip.git completed! -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LWZ19/ip.git... -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LWZ19/ip.git to complete... +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nubnubyas/ip.git completed! -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wxwern/ip.git completed! +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/timleow/ip.git... -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/rayshawntan/ip.git... -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LWZ19/ip.git to complete... -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/timleow/ip.git to complete... -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/rayshawntan/ip.git to complete... -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/matochichap/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/matochichap/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/matochichap/ip.git (master) completed! +Sep 01, 2023 1:06:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [59/480] Analyzing https://github.com/TiwKangXu/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TiwKangXu/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TiwKangXu/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/aslam341/ip.git completed! -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/applepiofmyeye/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aexolate/ip.git... -Sep 01, 2023 4:10:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LWZ19/ip.git completed! +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/aexolate/ip.git to complete... -Sep 01, 2023 4:10:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bobscodedump/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bobscodedump/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bobscodedump/ip.git (master) completed! -Sep 01, 2023 4:10:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [99/480] Analyzing https://github.com/techjay-c/ip.git (master)... -Sep 01, 2023 4:10:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/techjay-c/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/techjay-c/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ravern/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/timleow/ip.git completed! -Sep 01, 2023 4:10:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ravern/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ravern/ip.git (master) completed! -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/applepiofmyeye/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/applepiofmyeye/ip.git (master) completed! +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Sheeepen/ip.git... -Sep 01, 2023 4:10:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [100/480] Analyzing https://github.com/ryanozx/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [60/480] Analyzing https://github.com/ScarletBlanks/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Sheeepen/ip.git to complete... -Sep 01, 2023 4:10:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ryanozx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ryanozx/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LWZ19/ip.git completed! -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ScarletBlanks/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ScarletBlanks/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/rayshawntan/ip.git completed! -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shuyangk/ip.git... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shuyangk/ip.git to complete... +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/timleow/ip.git completed! +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ncmathan/ip.git... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ncmathan/ip.git to complete... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shuyangk/ip.git to complete... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aexolate/ip.git completed! -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Sheeepen/ip.git completed! +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/iyioon/ip.git... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TiwKangXu/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aexolate/ip.git completed! +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/iyioon/ip.git to complete... -Sep 01, 2023 4:10:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/techjay-c/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/techjay-c/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/techjay-c/ip.git (master) completed! -Sep 01, 2023 4:10:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [101/480] Analyzing https://github.com/LuahJunYang/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LuahJunYang/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LuahJunYang/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Sheeepen/ip.git completed! -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kiwibang/ip.git... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kiwibang/ip.git to complete... -Sep 01, 2023 4:10:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LuahJunYang/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LuahJunYang/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LuahJunYang/ip.git (master) completed! -Sep 01, 2023 4:10:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [102/480] Analyzing https://github.com/dom-buri/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dom-buri/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dom-buri/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryanozx/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ncmathan/ip.git completed! -Sep 01, 2023 4:10:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryanozx/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryanozx/ip.git (master) completed! -Sep 01, 2023 4:10:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [103/480] Analyzing https://github.com/HEEaZ/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TiwKangXu/ip.git (master)... +Sep 01, 2023 1:06:09 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TiwKangXu/ip.git (master) completed! +Sep 01, 2023 1:06:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [61/480] Analyzing https://github.com/devanshubisht/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/devanshubisht/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/devanshubisht/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shuyangk/ip.git completed! +Sep 01, 2023 1:06:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ScarletBlanks/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mingyu-wan/ip.git... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mingyu-wan/ip.git to complete... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shuyangk/ip.git completed! -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/iyioon/ip.git completed! -Sep 01, 2023 4:10:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/HEEaZ/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/HEEaZ/ip.git (master)... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ScarletBlanks/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ScarletBlanks/ip.git (master) completed! +Sep 01, 2023 1:06:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [62/480] Analyzing https://github.com/jx124/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ncmathan/ip.git completed! +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LuoZYi/ip.git... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jx124/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jx124/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LuoZYi/ip.git to complete... +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/iyioon/ip.git completed! +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/asdfghjkxd/ip.git... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/asdfghjkxd/ip.git to complete... -Sep 01, 2023 4:10:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LuoZYi/ip.git to complete... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kiwibang/ip.git completed! -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mingyu-wan/ip.git completed! +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sushiyade/ip.git... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kiwibang/ip.git completed! +Sep 01, 2023 1:06:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/devanshubisht/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LuoZYi/ip.git completed! +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sushiyade/ip.git to complete... -Sep 01, 2023 4:10:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dom-buri/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dom-buri/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/HEEaZ/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dom-buri/ip.git (master) completed! -Sep 01, 2023 4:10:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [104/480] Analyzing https://github.com/AlainS87/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/HEEaZ/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/HEEaZ/ip.git (master) completed! -Sep 01, 2023 4:10:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [105/480] Analyzing https://github.com/tiongjjyi/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AlainS87/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AlainS87/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tiongjjyi/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tiongjjyi/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mingyu-wan/ip.git completed! -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Nid21cs/ip.git... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Nid21cs/ip.git to complete... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LuoZYi/ip.git completed! -Sep 01, 2023 4:10:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tiongjjyi/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/devanshubisht/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/devanshubisht/ip.git (master) completed! +Sep 01, 2023 1:06:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [63/480] Analyzing https://github.com/chiayunrong/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/McNaBry/ip.git... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sushiyade/ip.git completed! -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/asdfghjkxd/ip.git completed! -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/McNaBry/ip.git to complete... -Sep 01, 2023 4:10:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tiongjjyi/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chiayunrong/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chiayunrong/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/asdfghjkxd/ip.git completed! +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/miljyy/ip.git... -Sep 01, 2023 4:10:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tiongjjyi/ip.git (master) completed! -Sep 01, 2023 4:10:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [106/480] Analyzing https://github.com/Vanessamae23/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ncduy0303/ip.git... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/miljyy/ip.git to complete... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jx124/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jx124/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jx124/ip.git (master) completed! +Sep 01, 2023 1:06:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [64/480] Analyzing https://github.com/Clin-lyx/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Clin-lyx/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Clin-lyx/ip.git (master)... +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sushiyade/ip.git completed! +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ncduy0303/ip.git... +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ncduy0303/ip.git to complete... -Sep 01, 2023 4:10:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Vanessamae23/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Vanessamae23/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AlainS87/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AlainS87/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AlainS87/ip.git (master) completed! -Sep 01, 2023 4:10:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [107/480] Analyzing https://github.com/fuyiqiao/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/fuyiqiao/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/fuyiqiao/ip.git (master)... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Nid21cs/ip.git completed! -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/McNaBry/ip.git completed! +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/eyelessrhyme7/ip.git... -Sep 01, 2023 4:10:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/eyelessrhyme7/ip.git to complete... -Sep 01, 2023 4:10:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Vanessamae23/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Vanessamae23/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Vanessamae23/ip.git (master) completed! -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [108/480] Analyzing https://github.com/tanshiyu1999/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanshiyu1999/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanshiyu1999/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/fuyiqiao/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/fuyiqiao/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/fuyiqiao/ip.git (master) completed! -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [109/480] Analyzing https://github.com/Kb-Tay/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Kb-Tay/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Kb-Tay/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/miljyy/ip.git completed! -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ruishanteo/ip.git... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ncduy0303/ip.git completed! -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ruishanteo/ip.git to complete... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/McNaBry/ip.git completed! -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/miljyy/ip.git completed! +Sep 01, 2023 1:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/m1oojv/ip.git... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/m1oojv/ip.git to complete... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Nixx162/ip.git... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Nixx162/ip.git to complete... -Sep 01, 2023 4:10:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanshiyu1999/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanshiyu1999/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanshiyu1999/ip.git (master) completed! -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [110/480] Analyzing https://github.com/spatuly/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/spatuly/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/spatuly/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Clin-lyx/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Clin-lyx/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Clin-lyx/ip.git (master) completed! +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [65/480] Analyzing https://github.com/AryanG01/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AryanG01/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AryanG01/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/eyelessrhyme7/ip.git completed! -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chiayunrong/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ncduy0303/ip.git completed! +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Nixx162/ip.git... +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Gabriel4357/ip.git... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Gabriel4357/ip.git to complete... -Sep 01, 2023 4:10:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/spatuly/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/spatuly/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/spatuly/ip.git (master) completed! -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [111/480] Analyzing https://github.com/beatricecst/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/beatricecst/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/beatricecst/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kb-Tay/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kb-Tay/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kb-Tay/ip.git (master) completed! -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [112/480] Analyzing https://github.com/tanveersingh10/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanveersingh10/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanveersingh10/ip.git (master)... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/m1oojv/ip.git completed! -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Nixx162/ip.git completed! -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruishanteo/ip.git completed! +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mfjkri/ip.git... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Gabriel4357/ip.git to complete... +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Nixx162/ip.git to complete... +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mfjkri/ip.git to complete... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/m1oojv/ip.git completed! +Sep 01, 2023 1:06:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chiayunrong/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chiayunrong/ip.git (master) completed! +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [66/480] Analyzing https://github.com/sheryew/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/junhonglow/ip.git... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruishanteo/ip.git completed! -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/junhonglow/ip.git to complete... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sheryew/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sheryew/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AryanG01/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AryanG01/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AryanG01/ip.git (master) completed! +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [67/480] Analyzing https://github.com/kayabuttertoastt/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kayabuttertoastt/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kayabuttertoastt/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Nixx162/ip.git completed! +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/RoeReRe/ip.git... -Sep 01, 2023 4:10:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mfjkri/ip.git completed! +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/RoeReRe/ip.git to complete... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Gabriel4357/ip.git completed! -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/beatricecst/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Badatprogrammiing/ip.git... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Badatprogrammiing/ip.git to complete... -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/beatricecst/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/beatricecst/ip.git (master) completed! -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [113/480] Analyzing https://github.com/s0ngyang/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/s0ngyang/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/s0ngyang/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanveersingh10/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanveersingh10/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanveersingh10/ip.git (master) completed! -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [114/480] Analyzing https://github.com/thienmy0/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/thienmy0/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/thienmy0/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/s0ngyang/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/s0ngyang/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/s0ngyang/ip.git (master) completed! -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [115/480] Analyzing https://github.com/ldinghan/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ldinghan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ldinghan/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/junhonglow/ip.git completed! -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Gabriel4357/ip.git completed! +Sep 01, 2023 1:06:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sheryew/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nknguyenhc/ip.git... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Badatprogrammiing/ip.git to complete... +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nknguyenhc/ip.git to complete... -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/thienmy0/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mfjkri/ip.git completed! -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RoeReRe/ip.git completed! -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kayabuttertoastt/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sheryew/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sheryew/ip.git (master) completed! +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [68/480] Analyzing https://github.com/jonasongg/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/winson8222/ip.git... -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/thienmy0/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wujy28/ip.git... -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/thienmy0/ip.git (master) completed! -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [116/480] Analyzing https://github.com/feifeiraindrops/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/winson8222/ip.git to complete... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kayabuttertoastt/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kayabuttertoastt/ip.git (master) completed! +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [69/480] Analyzing https://github.com/yiwen101/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jonasongg/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jonasongg/ip.git (master)... +Sep 01, 2023 1:06:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yiwen101/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yiwen101/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RoeReRe/ip.git completed! +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wujy28/ip.git... +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nknguyenhc/ip.git completed! +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wujy28/ip.git to complete... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Badatprogrammiing/ip.git completed! -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/feifeiraindrops/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/feifeiraindrops/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SimWPEric/ip.git... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SimWPEric/ip.git to complete... -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ldinghan/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ldinghan/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ldinghan/ip.git (master) completed! -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [117/480] Analyzing https://github.com/ryanongwx/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ryanongwx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ryanongwx/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/feifeiraindrops/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/feifeiraindrops/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/feifeiraindrops/ip.git (master) completed! -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [118/480] Analyzing https://github.com/kwangthiag/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kwangthiag/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kwangthiag/ip.git (master)... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nknguyenhc/ip.git completed! -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/HugeNoob/ip.git... -Sep 01, 2023 4:10:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/HugeNoob/ip.git to complete... -Sep 01, 2023 4:10:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryanongwx/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryanongwx/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryanongwx/ip.git (master) completed! -Sep 01, 2023 4:10:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [119/480] Analyzing https://github.com/elhy1999/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Badatprogrammiing/ip.git completed! +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/winson8222/ip.git completed! -Sep 01, 2023 4:10:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/elhy1999/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/elhy1999/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wujy28/ip.git completed! -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SimWPEric/ip.git completed! -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/HugeNoob/ip.git... +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lerxuann/ip.git... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lerxuann/ip.git to complete... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/HugeNoob/ip.git to complete... +Sep 01, 2023 1:06:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jonasongg/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jonasongg/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yiwen101/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jonasongg/ip.git (master) completed! +Sep 01, 2023 1:06:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [70/480] Analyzing https://github.com/chuababyy/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yiwen101/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yiwen101/ip.git (master) completed! +Sep 01, 2023 1:06:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [71/480] Analyzing https://github.com/tiongMax/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chuababyy/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chuababyy/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tiongMax/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tiongMax/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SimWPEric/ip.git completed! +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lerxuann/ip.git completed! +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Weiennn/ip.git... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/maj0-0/ip.git... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Weiennn/ip.git to complete... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/maj0-0/ip.git to complete... -Sep 01, 2023 4:10:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kwangthiag/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kwangthiag/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kwangthiag/ip.git (master) completed! -Sep 01, 2023 4:10:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [120/480] Analyzing https://github.com/songgthu/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/songgthu/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/songgthu/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/HugeNoob/ip.git completed! -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/maj0-0/ip.git to complete... +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wujy28/ip.git completed! +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/qyaner/ip.git... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lerxuann/ip.git completed! -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ruiyangzh/ip.git... +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ruiyangzh/ip.git to complete... +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/qyaner/ip.git to complete... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/maj0-0/ip.git completed! -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ruiyangzh/ip.git... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tiongMax/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Bombbird2001/ip.git... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Bombbird2001/ip.git to complete... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ruiyangzh/ip.git to complete... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Weiennn/ip.git completed! -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/hyc17003/ip.git... -Sep 01, 2023 4:10:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/hyc17003/ip.git to complete... -Sep 01, 2023 4:10:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/elhy1999/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/elhy1999/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/elhy1999/ip.git (master) completed! -Sep 01, 2023 4:10:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [121/480] Analyzing https://github.com/GohTengFong/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/songgthu/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/songgthu/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/songgthu/ip.git (master) completed! -Sep 01, 2023 4:10:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [122/480] Analyzing https://github.com/simbayippy/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/GohTengFong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/GohTengFong/ip.git (master)... -Sep 01, 2023 4:10:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/simbayippy/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/simbayippy/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/qyaner/ip.git completed! -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Bombbird2001/ip.git to complete... +Sep 01, 2023 1:06:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chuababyy/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tiongMax/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tiongMax/ip.git (master) completed! +Sep 01, 2023 1:06:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [72/480] Analyzing https://github.com/supermii2/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ruiyangzh/ip.git completed! -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/qyaner/ip.git completed! +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/hyc17003/ip.git... +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/adammangzijun/ip.git... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/supermii2/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/supermii2/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chuababyy/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chuababyy/ip.git (master) completed! +Sep 01, 2023 1:06:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [73/480] Analyzing https://github.com/kanna-1/ip.git (master)... +Sep 01, 2023 1:06:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/andytoh1/ip.git... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Bombbird2001/ip.git completed! -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/adammangzijun/ip.git to complete... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/hyc17003/ip.git to complete... +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/andytoh1/ip.git to complete... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Originalidk/ip.git... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Originalidk/ip.git to complete... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kanna-1/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kanna-1/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kanna-1/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kanna-1/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kanna-1/ip.git (master) completed! +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [74/480] Analyzing https://github.com/remuslum/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/remuslum/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/remuslum/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/supermii2/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/supermii2/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/supermii2/ip.git (master) completed! +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [75/480] Analyzing https://github.com/nicolengk/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nicolengk/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nicolengk/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Bombbird2001/ip.git completed! +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/andytoh1/ip.git completed! +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/hyc17003/ip.git completed! -Sep 01, 2023 4:10:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GohTengFong/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Originalidk/ip.git... +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/quzhetao01/ip.git... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/InfiBeyond/ip.git... +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/quzhetao01/ip.git to complete... -Sep 01, 2023 4:10:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/GohTengFong/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/simbayippy/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/GohTengFong/ip.git (master) completed! -Sep 01, 2023 4:10:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [123/480] Analyzing https://github.com/Khaleelur-Rahman/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/simbayippy/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/simbayippy/ip.git (master) completed! -Sep 01, 2023 4:10:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [124/480] Analyzing https://github.com/bwangpj/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Khaleelur-Rahman/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Khaleelur-Rahman/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bwangpj/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bwangpj/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bwangpj/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bwangpj/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bwangpj/ip.git (master) completed! -Sep 01, 2023 4:10:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [125/480] Analyzing https://github.com/proto-aiken-13/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/proto-aiken-13/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/proto-aiken-13/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Khaleelur-Rahman/ip.git (master) completed! -Sep 01, 2023 4:10:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [126/480] Analyzing https://github.com/s-peiran/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/andytoh1/ip.git completed! -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Originalidk/ip.git to complete... +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/InfiBeyond/ip.git to complete... +Sep 01, 2023 1:06:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicolengk/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nicolengk/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nicolengk/ip.git (master) completed! +Sep 01, 2023 1:06:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/remuslum/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [76/480] Analyzing https://github.com/newway1814/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/remuslum/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/remuslum/ip.git (master) completed! +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [77/480] Analyzing https://github.com/glenngnng/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/glenngnng/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/glenngnng/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/newway1814/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/newway1814/ip.git (master)... +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/adammangzijun/ip.git completed! -Sep 01, 2023 4:10:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/s-peiran/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/s-peiran/ip.git (master)... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/InfiBeyond/ip.git... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Originalidk/ip.git completed! -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Bearypop/ip.git... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/quzhetao01/ip.git completed! -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sp4ce-cowboy/ip.git... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JasonLCY-Temp/ip.git... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/InfiBeyond/ip.git to complete... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Bearypop/ip.git to complete... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JasonLCY-Temp/ip.git to complete... -Sep 01, 2023 4:10:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sp4ce-cowboy/ip.git to complete... -Sep 01, 2023 4:10:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/proto-aiken-13/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/proto-aiken-13/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/proto-aiken-13/ip.git (master) completed! -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [127/480] Analyzing https://github.com/weeweh/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/s-peiran/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/weeweh/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/weeweh/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/s-peiran/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/s-peiran/ip.git (master) completed! -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [128/480] Analyzing https://github.com/jylow/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jylow/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jylow/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jylow/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jylow/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jylow/ip.git (master) completed! -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [129/480] Analyzing https://github.com/lawruixi/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lawruixi/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lawruixi/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/InfiBeyond/ip.git completed! -Sep 01, 2023 4:10:17 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sp4ce-cowboy/ip.git... +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/quzhetao01/ip.git completed! +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Originalidk/ip.git completed! +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sp4ce-cowboy/ip.git to complete... +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JasonLCY-Temp/ip.git... +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wjayee/ip.git... -Sep 01, 2023 4:10:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Bearypop/ip.git completed! -Sep 01, 2023 4:10:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JasonLCY-Temp/ip.git completed! -Sep 01, 2023 4:10:17 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wjayee/ip.git to complete... -Sep 01, 2023 4:10:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sp4ce-cowboy/ip.git completed! -Sep 01, 2023 4:10:17 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JasonLCY-Temp/ip.git to complete... +Sep 01, 2023 1:06:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/glenngnng/ip.git (master)... +Sep 01, 2023 1:06:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/glenngnng/ip.git (master)... +Sep 01, 2023 1:06:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/glenngnng/ip.git (master) completed! +Sep 01, 2023 1:06:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [78/480] Analyzing https://github.com/zsh-eng/ip.git (master)... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Bearypop/ip.git completed! +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/vivienherq/ip.git... -Sep 01, 2023 4:10:17 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jamesebond/ip.git... -Sep 01, 2023 4:10:17 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zsh-eng/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zsh-eng/ip.git (master)... +Sep 01, 2023 1:06:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/newway1814/ip.git (master)... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/vivienherq/ip.git to complete... -Sep 01, 2023 4:10:17 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sp4ce-cowboy/ip.git completed! +Sep 01, 2023 1:06:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/newway1814/ip.git (master)... +Sep 01, 2023 1:06:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/newway1814/ip.git (master) completed! +Sep 01, 2023 1:06:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [79/480] Analyzing https://github.com/mingyuanc/ip.git (master)... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JasonLCY-Temp/ip.git completed! +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jamesebond/ip.git... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jonyeokj/ip.git... -Sep 01, 2023 4:10:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jonyeokj/ip.git to complete... -Sep 01, 2023 4:10:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jamesebond/ip.git to complete... -Sep 01, 2023 4:10:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/weeweh/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/weeweh/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/weeweh/ip.git (master) completed! -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [130/480] Analyzing https://github.com/JeremyYong128/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JeremyYong128/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JeremyYong128/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lawruixi/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lawruixi/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lawruixi/ip.git (master) completed! -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [131/480] Analyzing https://github.com/brandon-nam/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/brandon-nam/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/brandon-nam/ip.git (master)... -Sep 01, 2023 4:10:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JeremyYong128/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JeremyYong128/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JeremyYong128/ip.git (master) completed! -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [132/480] Analyzing https://github.com/Leb14/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/brandon-nam/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jamesebond/ip.git completed! -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wjayee/ip.git completed! -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Leb14/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Leb14/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/brandon-nam/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/brandon-nam/ip.git (master) completed! -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [133/480] Analyzing https://github.com/LHeng1/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jamesebond/ip.git to complete... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jonyeokj/ip.git to complete... +Sep 01, 2023 1:06:14 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mingyuanc/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mingyuanc/ip.git (master)... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/victorlaiyeeteng/ip.git... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lyuanww/ip.git... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/victorlaiyeeteng/ip.git to complete... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/vivienherq/ip.git completed! -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lyuanww/ip.git to complete... -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LHeng1/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LHeng1/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lyuanww/ip.git... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jonyeokj/ip.git completed! -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lyuanww/ip.git to complete... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yongning0310/ip.git... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Cloud7050/ip.git... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jamesebond/ip.git completed! +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yongning0310/ip.git to complete... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Cloud7050/ip.git to complete... -Sep 01, 2023 4:10:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LHeng1/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LHeng1/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LHeng1/ip.git (master) completed! -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [134/480] Analyzing https://github.com/B-enguin/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/B-enguin/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/B-enguin/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Leb14/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Leb14/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Leb14/ip.git (master) completed! -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [135/480] Analyzing https://github.com/s-kybound/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Cloud7050/ip.git... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/victorlaiyeeteng/ip.git completed! -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Cloud7050/ip.git to complete... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LoMaply/ip.git... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LoMaply/ip.git to complete... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yongning0310/ip.git completed! -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/s-kybound/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/s-kybound/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lyuanww/ip.git completed! -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tllshan/ip.git... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Cloud7050/ip.git completed! -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Gavino3o/ip.git... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/HollaG/ip.git... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yongning0310/ip.git completed! +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tllshan/ip.git to complete... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Gavino3o/ip.git... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Cloud7050/ip.git completed! +Sep 01, 2023 1:06:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mingyuanc/ip.git (master)... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Gavino3o/ip.git to complete... -Sep 01, 2023 4:10:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/HollaG/ip.git to complete... -Sep 01, 2023 4:10:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/s-kybound/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/s-kybound/ip.git (master)... -Sep 01, 2023 4:10:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/s-kybound/ip.git (master) completed! -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [136/480] Analyzing https://github.com/dlathyun/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dlathyun/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dlathyun/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/B-enguin/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/B-enguin/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/B-enguin/ip.git (master) completed! -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [137/480] Analyzing https://github.com/AaronJT1/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AaronJT1/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AaronJT1/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/HollaG/ip.git... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LoMaply/ip.git completed! -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/HollaG/ip.git to complete... +Sep 01, 2023 1:06:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cheeggered/ip.git... -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mingyuanc/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mingyuanc/ip.git (master) completed! +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cheeggered/ip.git to complete... -Sep 01, 2023 4:10:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dlathyun/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dlathyun/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dlathyun/ip.git (master) completed! -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [138/480] Analyzing https://github.com/yihfei/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [80/480] Analyzing https://github.com/LamJiuFong/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zsh-eng/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LamJiuFong/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LamJiuFong/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zsh-eng/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zsh-eng/ip.git (master) completed! +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [81/480] Analyzing https://github.com/GlendaChong/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/GlendaChong/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/GlendaChong/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tllshan/ip.git completed! -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xenosf/ip.git... -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yihfei/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yihfei/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xenosf/ip.git to complete... -Sep 01, 2023 4:10:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AaronJT1/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HollaG/ip.git completed! -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Gavino3o/ip.git completed! -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TehOPanas/ip.git... -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/neyapraveen/ip.git... -Sep 01, 2023 4:10:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AaronJT1/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AaronJT1/ip.git (master) completed! -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/neyapraveen/ip.git to complete... -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [139/480] Analyzing https://github.com/wesho1107/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TehOPanas/ip.git to complete... -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wesho1107/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wesho1107/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yihfei/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/cheeggered/ip.git completed! -Sep 01, 2023 4:10:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yihfei/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yihfei/ip.git (master) completed! -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [140/480] Analyzing https://github.com/ricketytoc/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/neyapraveen/ip.git... +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/neyapraveen/ip.git to complete... +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HollaG/ip.git completed! +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/richiehx/ip.git... -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/richiehx/ip.git to complete... -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ricketytoc/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ricketytoc/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wesho1107/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ricketytoc/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ricketytoc/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ricketytoc/ip.git (master) completed! -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [141/480] Analyzing https://github.com/Angelyxx/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GlendaChong/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/GlendaChong/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/GlendaChong/ip.git (master) completed! +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [82/480] Analyzing https://github.com/AustinHuang1203/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LamJiuFong/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AustinHuang1203/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AustinHuang1203/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LamJiuFong/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LamJiuFong/ip.git (master) completed! +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [83/480] Analyzing https://github.com/starrylight99/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/xenosf/ip.git completed! -Sep 01, 2023 4:10:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wesho1107/ip.git (master)... -Sep 01, 2023 4:10:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wesho1107/ip.git (master) completed! -Sep 01, 2023 4:10:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [142/480] Analyzing https://github.com/SinhaVedant/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Angelyxx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Angelyxx/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AlyssaPng/ip.git... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AlyssaPng/ip.git to complete... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/starrylight99/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/starrylight99/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TehOPanas/ip.git completed! -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/neyapraveen/ip.git completed! -Sep 01, 2023 4:10:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SinhaVedant/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SinhaVedant/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AlyssaPng/ip.git... +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leezhengjing/ip.git... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/neyapraveen/ip.git completed! +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AlyssaPng/ip.git to complete... +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leezhengjing/ip.git to complete... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/seantehds/ip.git... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/seantehds/ip.git to complete... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/richiehx/ip.git completed! -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ceilingFan456/ip.git... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ceilingFan456/ip.git to complete... -Sep 01, 2023 4:10:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SinhaVedant/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SinhaVedant/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SinhaVedant/ip.git (master) completed! -Sep 01, 2023 4:10:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [143/480] Analyzing https://github.com/jingting1412/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jingting1412/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jingting1412/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AlyssaPng/ip.git completed! -Sep 01, 2023 4:10:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Angelyxx/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lihongguang00/ip.git... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/leezhengjing/ip.git completed! -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AustinHuang1203/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AustinHuang1203/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AustinHuang1203/ip.git (master) completed! +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [84/480] Analyzing https://github.com/seewhyjay/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/starrylight99/ip.git (master)... +Sep 01, 2023 1:06:15 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/seewhyjay/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/seewhyjay/ip.git (master)... +Sep 01, 2023 1:06:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/starrylight99/ip.git (master)... +Sep 01, 2023 1:06:16 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/starrylight99/ip.git (master) completed! +Sep 01, 2023 1:06:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [85/480] Analyzing https://github.com/ruth-lim/ip.git (master)... +Sep 01, 2023 1:06:16 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ruth-lim/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ruth-lim/ip.git (master)... +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/seantehds/ip.git completed! -Sep 01, 2023 4:10:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Angelyxx/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Angelyxx/ip.git (master) completed! -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/leezhengjing/ip.git completed! +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lihongguang00/ip.git... +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AlyssaPng/ip.git completed! +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Singa-pirate/ip.git... -Sep 01, 2023 4:10:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [144/480] Analyzing https://github.com/freddychenyouren2/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lihongguang00/ip.git to complete... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Singa-pirate/ip.git to complete... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/songfangyl/ip.git... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Singa-pirate/ip.git to complete... +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ceilingFan456/ip.git completed! -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/songfangyl/ip.git to complete... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/vansh284/ip.git... -Sep 01, 2023 4:10:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/freddychenyouren2/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/freddychenyouren2/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/songfangyl/ip.git to complete... +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/vansh284/ip.git to complete... -Sep 01, 2023 4:10:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jingting1412/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jingting1412/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jingting1412/ip.git (master) completed! -Sep 01, 2023 4:10:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [145/480] Analyzing https://github.com/jordankanghm/ip.git (master)... -Sep 01, 2023 4:10:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jordankanghm/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jordankanghm/ip.git (master)... -Sep 01, 2023 4:10:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/freddychenyouren2/ip.git (master)... -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/seewhyjay/ip.git (master)... +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lihongguang00/ip.git completed! -Sep 01, 2023 4:10:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/freddychenyouren2/ip.git (master)... -Sep 01, 2023 4:10:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/freddychenyouren2/ip.git (master) completed! -Sep 01, 2023 4:10:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [146/480] Analyzing https://github.com/adhigop13/ip.git (master)... -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/YeoBohShin/ip.git... -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/YeoBohShin/ip.git to complete... -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/songfangyl/ip.git completed! -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/seewhyjay/ip.git (master)... +Sep 01, 2023 1:06:16 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/seewhyjay/ip.git (master) completed! +Sep 01, 2023 1:06:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [86/480] Analyzing https://github.com/xCOLOURx/ip.git (master)... +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Singa-pirate/ip.git completed! -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/songfangyl/ip.git completed! +Sep 01, 2023 1:06:16 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xCOLOURx/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xCOLOURx/ip.git (master)... +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shuenj/ip.git... -Sep 01, 2023 4:10:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/adhigop13/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/adhigop13/ip.git (master)... -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lunaroddity/ip.git... -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/vansh284/ip.git completed! -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shuenj/ip.git to complete... -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/andrechuakj/ip.git... -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lunaroddity/ip.git to complete... -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/vansh284/ip.git completed! +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/andrechuakj/ip.git... +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/andrechuakj/ip.git to complete... -Sep 01, 2023 4:10:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/adhigop13/ip.git (master)... -Sep 01, 2023 4:10:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/adhigop13/ip.git (master)... -Sep 01, 2023 4:10:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/adhigop13/ip.git (master) completed! -Sep 01, 2023 4:10:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [147/480] Analyzing https://github.com/waseemingly/ip.git (master)... -Sep 01, 2023 4:10:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/waseemingly/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/waseemingly/ip.git (master)... -Sep 01, 2023 4:10:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jordankanghm/ip.git (master)... -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/YeoBohShin/ip.git completed! -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ruth-lim/ip.git (master)... +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WeeMingQing/ip.git... -Sep 01, 2023 4:10:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jordankanghm/ip.git (master)... -Sep 01, 2023 4:10:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jordankanghm/ip.git (master) completed! -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WeeMingQing/ip.git to complete... -Sep 01, 2023 4:10:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [148/480] Analyzing https://github.com/raydenlim/ip.git (master)... -Sep 01, 2023 4:10:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ruth-lim/ip.git (master)... +Sep 01, 2023 1:06:16 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ruth-lim/ip.git (master) completed! +Sep 01, 2023 1:06:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [87/480] Analyzing https://github.com/limzhenwy/ip.git (master)... +Sep 01, 2023 1:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lunaroddity/ip.git completed! -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/andrechuakj/ip.git completed! -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/limzhenwy/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/limzhenwy/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aliciamichellew/ip.git... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shuenj/ip.git completed! -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/raydenlim/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/raydenlim/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/aliciamichellew/ip.git to complete... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shuenj/ip.git completed! +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/andrechuakj/ip.git completed! +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/samuelmui8/ip.git... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/samuelmui8/ip.git to complete... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/antonTan96/ip.git... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/antonTan96/ip.git to complete... -Sep 01, 2023 4:10:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/waseemingly/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/waseemingly/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/waseemingly/ip.git (master) completed! -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [149/480] Analyzing https://github.com/FerdiHS/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/raydenlim/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/FerdiHS/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/FerdiHS/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/raydenlim/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/raydenlim/ip.git (master) completed! -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [150/480] Analyzing https://github.com/jingyu987/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jingyu987/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jingyu987/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jingyu987/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jingyu987/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jingyu987/ip.git (master) completed! -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [151/480] Analyzing https://github.com/jrchoo/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/samuelmui8/ip.git to complete... +Sep 01, 2023 1:06:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xCOLOURx/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/WeeMingQing/ip.git completed! -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/owenyeo/ip.git... -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jrchoo/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jrchoo/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/owenyeo/ip.git to complete... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aliciamichellew/ip.git completed! -Sep 01, 2023 4:10:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/FerdiHS/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/samuelmui8/ip.git completed! -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xCOLOURx/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xCOLOURx/ip.git (master) completed! +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [88/480] Analyzing https://github.com/zacwong2151/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zacwong2151/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zacwong2151/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/limzhenwy/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/limzhenwy/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/limzhenwy/ip.git (master) completed! +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [89/480] Analyzing https://github.com/Zjinnnn/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zacwong2151/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/antonTan96/ip.git completed! -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Zjinnnn/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Zjinnnn/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gongg21/ip.git... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/gongg21/ip.git to complete... +Sep 01, 2023 1:06:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zacwong2151/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zacwong2151/ip.git (master) completed! +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [90/480] Analyzing https://github.com/awhb/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/awhb/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/awhb/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aliciamichellew/ip.git completed! +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nabonitasen/ip.git... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/erohsikivar/ip.git... -Sep 01, 2023 4:10:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/FerdiHS/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/FerdiHS/ip.git (master) completed! -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [152/480] Analyzing https://github.com/RiyaMehta2211/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/samuelmui8/ip.git completed! +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nabonitasen/ip.git to complete... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/gongg21/ip.git to complete... -Sep 01, 2023 4:10:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/erohsikivar/ip.git to complete... -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RiyaMehta2211/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RiyaMehta2211/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jrchoo/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jrchoo/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jrchoo/ip.git (master) completed! -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [153/480] Analyzing https://github.com/juzzztinsoong/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/juzzztinsoong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/juzzztinsoong/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RiyaMehta2211/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RiyaMehta2211/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RiyaMehta2211/ip.git (master) completed! -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [154/480] Analyzing https://github.com/darrentfy/ip.git (master)... -Sep 01, 2023 4:10:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/darrentfy/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/darrentfy/ip.git (master)... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/owenyeo/ip.git completed! -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/erohsikivar/ip.git... +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/pzl111/ip.git... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/pzl111/ip.git to complete... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/erohsikivar/ip.git to complete... +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/gongg21/ip.git completed! -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nabonitasen/ip.git completed! -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/teozern1/ip.git... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/teozern1/ip.git to complete... +Sep 01, 2023 1:06:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Zjinnnn/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Zjinnnn/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Zjinnnn/ip.git (master) completed! +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [91/480] Analyzing https://github.com/qz1004/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nabonitasen/ip.git completed! +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Elijah5399/ip.git... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/erohsikivar/ip.git completed! -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/qz1004/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/qz1004/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Elijah5399/ip.git to complete... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/teozern1/ip.git to complete... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nicleongyj/ip.git... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nicleongyj/ip.git to complete... -Sep 01, 2023 4:10:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/juzzztinsoong/ip.git (master)... -Sep 01, 2023 4:10:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/juzzztinsoong/ip.git (master)... -Sep 01, 2023 4:10:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/juzzztinsoong/ip.git (master) completed! -Sep 01, 2023 4:10:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [155/480] Analyzing https://github.com/leezhanpeng/ip.git (master)... -Sep 01, 2023 4:10:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/darrentfy/ip.git (master)... -Sep 01, 2023 4:10:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/leezhanpeng/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/leezhanpeng/ip.git (master)... -Sep 01, 2023 4:10:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/darrentfy/ip.git (master)... -Sep 01, 2023 4:10:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/darrentfy/ip.git (master) completed! -Sep 01, 2023 4:10:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [156/480] Analyzing https://github.com/redtailedfox/ip.git (master)... -Sep 01, 2023 4:10:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/redtailedfox/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/redtailedfox/ip.git (master)... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/awhb/ip.git (master)... +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/erohsikivar/ip.git completed! +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/pzl111/ip.git completed! -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:17 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nicleongyj/ip.git... +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WinSheng1/ip.git... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nicleongyj/ip.git to complete... +Sep 01, 2023 1:06:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/awhb/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/awhb/ip.git (master) completed! +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [92/480] Analyzing https://github.com/teoks0199/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WinSheng1/ip.git to complete... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/teoks0199/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/teoks0199/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/qz1004/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/qz1004/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/qz1004/ip.git (master) completed! +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [93/480] Analyzing https://github.com/pangyyen/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/teozern1/ip.git completed! -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Elijah5399/ip.git completed! -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/pangyyen/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/pangyyen/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryamgoh/ip.git... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yucongkoo/ip.git... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicleongyj/ip.git completed! -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ryamgoh/ip.git to complete... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicleongyj/ip.git completed! +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yucongkoo/ip.git... +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Elijah5399/ip.git completed! +Sep 01, 2023 1:06:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/teoks0199/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Chen-Kuei/ip.git... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yucongkoo/ip.git to complete... -Sep 01, 2023 4:10:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Chen-Kuei/ip.git to complete... -Sep 01, 2023 4:10:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/redtailedfox/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/redtailedfox/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/redtailedfox/ip.git (master) completed! -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [157/480] Analyzing https://github.com/VN-Hao/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/VN-Hao/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/VN-Hao/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/leezhanpeng/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/leezhanpeng/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/leezhanpeng/ip.git (master) completed! -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [158/480] Analyzing https://github.com/Heran9/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Heran9/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Heran9/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/VN-Hao/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/VN-Hao/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/VN-Hao/ip.git (master) completed! -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [159/480] Analyzing https://github.com/Fallman2/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/WinSheng1/ip.git completed! -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Fallman2/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Fallman2/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/teoks0199/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/teoks0199/ip.git (master) completed! +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/conradsoon/ip.git... -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/conradsoon/ip.git to complete... -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [94/480] Analyzing https://github.com/Mahidharah/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ryamgoh/ip.git completed! -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/conradsoon/ip.git to complete... +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GSgiansen/ip.git... -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GSgiansen/ip.git to complete... -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yucongkoo/ip.git completed! -Sep 01, 2023 4:10:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Fallman2/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/et-irl/ip.git... -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Mahidharah/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Mahidharah/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Mahidharah/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/pangyyen/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Mahidharah/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Mahidharah/ip.git (master) completed! +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [95/480] Analyzing https://github.com/jason-raiin/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/pangyyen/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/pangyyen/ip.git (master) completed! +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [96/480] Analyzing https://github.com/ravern/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ravern/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ravern/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jason-raiin/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jason-raiin/ip.git (master)... +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Chen-Kuei/ip.git completed! -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/et-irl/ip.git... +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/et-irl/ip.git to complete... -Sep 01, 2023 4:10:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Fallman2/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yucongkoo/ip.git completed! +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/marioalvaro/ip.git... -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Fallman2/ip.git (master) completed! -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/marioalvaro/ip.git to complete... -Sep 01, 2023 4:10:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Heran9/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [160/480] Analyzing https://github.com/jingjie88/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Heran9/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Heran9/ip.git (master) completed! -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [161/480] Analyzing https://github.com/kimshitong/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jingjie88/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jingjie88/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kimshitong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kimshitong/ip.git (master)... -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/conradsoon/ip.git completed! -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/marioalvaro/ip.git to complete... +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Seonlo99/ip.git... -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Seonlo99/ip.git to complete... -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/GSgiansen/ip.git completed! -Sep 01, 2023 4:10:24 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Seonlo99/ip.git to complete... +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/joel-foo/ip.git... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/joel-foo/ip.git to complete... -Sep 01, 2023 4:10:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jingjie88/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jingjie88/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jingjie88/ip.git (master) completed! -Sep 01, 2023 4:10:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [162/480] Analyzing https://github.com/H1410101/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jason-raiin/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jason-raiin/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jason-raiin/ip.git (master) completed! +Sep 01, 2023 1:06:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [97/480] Analyzing https://github.com/bobscodedump/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bobscodedump/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bobscodedump/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/marioalvaro/ip.git completed! -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/et-irl/ip.git completed! -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tim-pipi/ip.git... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/marcellaantania/ip.git... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tim-pipi/ip.git to complete... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/marcellaantania/ip.git to complete... -Sep 01, 2023 4:10:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/H1410101/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/H1410101/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kimshitong/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kimshitong/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kimshitong/ip.git (master) completed! -Sep 01, 2023 4:10:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [163/480] Analyzing https://github.com/ivanleekk/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ivanleekk/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ivanleekk/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/H1410101/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/H1410101/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/H1410101/ip.git (master) completed! -Sep 01, 2023 4:10:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [164/480] Analyzing https://github.com/lamchenghou/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lamchenghou/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lamchenghou/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Seonlo99/ip.git completed! -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/brendanneojw/ip.git... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/marcellaantania/ip.git... +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/marcellaantania/ip.git to complete... +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/joel-foo/ip.git completed! -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/brendanneojw/ip.git... +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/brendanneojw/ip.git to complete... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/et-irl/ip.git completed! +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/li-rongzhi/ip.git... -Sep 01, 2023 4:10:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ivanleekk/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/li-rongzhi/ip.git to complete... -Sep 01, 2023 4:10:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ivanleekk/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ivanleekk/ip.git (master) completed! -Sep 01, 2023 4:10:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [165/480] Analyzing https://github.com/tayruxin/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tayruxin/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tayruxin/ip.git (master)... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marcellaantania/ip.git completed! -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KamiliArsyad/ip.git... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ravern/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ravern/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ravern/ip.git (master) completed! +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tim-pipi/ip.git completed! -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/seraphimstreets/ip.git... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [98/480] Analyzing https://github.com/nixonwidjaja/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KamiliArsyad/ip.git... +Sep 01, 2023 1:06:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nixonwidjaja/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nixonwidjaja/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/KamiliArsyad/ip.git to complete... -Sep 01, 2023 4:10:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marcellaantania/ip.git completed! +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/seraphimstreets/ip.git... +Sep 01, 2023 1:06:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bobscodedump/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/seraphimstreets/ip.git to complete... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/li-rongzhi/ip.git completed! -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bobscodedump/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bobscodedump/ip.git (master) completed! +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/brendanneojw/ip.git completed! -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [99/480] Analyzing https://github.com/techjay-c/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/trgao/ip.git... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/trgao/ip.git to complete... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/techjay-c/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/techjay-c/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/li-rongzhi/ip.git completed! +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lilozz2/ip.git... -Sep 01, 2023 4:10:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tayruxin/ip.git (master)... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lilozz2/ip.git to complete... -Sep 01, 2023 4:10:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tayruxin/ip.git (master)... -Sep 01, 2023 4:10:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tayruxin/ip.git (master) completed! -Sep 01, 2023 4:10:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [166/480] Analyzing https://github.com/raynertjx/ip.git (master)... -Sep 01, 2023 4:10:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/raynertjx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/raynertjx/ip.git (master)... -Sep 01, 2023 4:10:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lamchenghou/ip.git (master)... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/seraphimstreets/ip.git completed! -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/KamiliArsyad/ip.git completed! -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jean-cq/ip.git... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nixonwidjaja/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jean-cq/ip.git to complete... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/seraphimstreets/ip.git completed! +Sep 01, 2023 1:06:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nixonwidjaja/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nixonwidjaja/ip.git (master) completed! +Sep 01, 2023 1:06:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [100/480] Analyzing https://github.com/ryanozx/ip.git (master)... +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jedkohjk/ip.git... -Sep 01, 2023 4:10:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lamchenghou/ip.git (master)... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jedkohjk/ip.git to complete... -Sep 01, 2023 4:10:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lamchenghou/ip.git (master) completed! -Sep 01, 2023 4:10:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [167/480] Analyzing https://github.com/zhengyup/ip.git (master)... -Sep 01, 2023 4:10:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhengyup/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhengyup/ip.git (master)... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lilozz2/ip.git completed! -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ryanozx/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ryanozx/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/techjay-c/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/techjay-c/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/techjay-c/ip.git (master) completed! +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [101/480] Analyzing https://github.com/LuahJunYang/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LuahJunYang/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LuahJunYang/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/trgao/ip.git completed! -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lilozz2/ip.git completed! +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yytan25/ip.git... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jean-cq/ip.git completed! +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryantzr1/ip.git... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yytan25/ip.git to complete... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ryantzr1/ip.git to complete... -Sep 01, 2023 4:10:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/raynertjx/ip.git (master)... -Sep 01, 2023 4:10:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/raynertjx/ip.git (master)... -Sep 01, 2023 4:10:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/raynertjx/ip.git (master) completed! -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jedkohjk/ip.git completed! -Sep 01, 2023 4:10:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [168/480] Analyzing https://github.com/larrywang0701/ip.git (master)... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jean-cq/ip.git completed! -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/maypfv/ip.git... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/maypfv/ip.git to complete... -Sep 01, 2023 4:10:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jedkohjk/ip.git completed! +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TohLiYuan/ip.git... -Sep 01, 2023 4:10:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/larrywang0701/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/larrywang0701/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TohLiYuan/ip.git to complete... -Sep 01, 2023 4:10:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhengyup/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhengyup/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhengyup/ip.git (master) completed! -Sep 01, 2023 4:10:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [169/480] Analyzing https://github.com/Carlintyj/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LuahJunYang/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LuahJunYang/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LuahJunYang/ip.git (master) completed! +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [102/480] Analyzing https://github.com/HEEaZ/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryanozx/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/HEEaZ/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/HEEaZ/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryanozx/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryanozx/ip.git (master) completed! +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [103/480] Analyzing https://github.com/dom-buri/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dom-buri/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dom-buri/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ryantzr1/ip.git completed! -Sep 01, 2023 4:10:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Carlintyj/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Carlintyj/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JizhuoChen/ip.git... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JizhuoChen/ip.git to complete... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yytan25/ip.git completed! -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/maypfv/ip.git completed! +Sep 01, 2023 1:06:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/HEEaZ/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChongWeiJie29/ip.git... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChongWeiJie29/ip.git to complete... -Sep 01, 2023 4:10:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/larrywang0701/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/larrywang0701/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/larrywang0701/ip.git (master) completed! -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TohLiYuan/ip.git completed! -Sep 01, 2023 4:10:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [170/480] Analyzing https://github.com/wxwern/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/maypfv/ip.git completed! -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/HEEaZ/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/HEEaZ/ip.git (master) completed! +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [104/480] Analyzing https://github.com/AlainS87/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Goh-Li-Ting/ip.git... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kristayeo/ip.git... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kristayeo/ip.git to complete... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChongWeiJie29/ip.git to complete... +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Goh-Li-Ting/ip.git to complete... -Sep 01, 2023 4:10:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wxwern/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wxwern/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Carlintyj/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Carlintyj/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Carlintyj/ip.git (master) completed! -Sep 01, 2023 4:10:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [171/480] Analyzing https://github.com/nubnubyas/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AlainS87/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AlainS87/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dom-buri/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dom-buri/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dom-buri/ip.git (master) completed! +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [105/480] Analyzing https://github.com/tiongjjyi/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tiongjjyi/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tiongjjyi/ip.git (master)... +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JizhuoChen/ip.git completed! -Sep 01, 2023 4:10:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nubnubyas/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nubnubyas/ip.git (master)... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kristayeo/ip.git... +Sep 01, 2023 1:06:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kristayeo/ip.git to complete... +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Goh-Li-Ting/ip.git completed! +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/derekjxtan/ip.git... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/derekjxtan/ip.git to complete... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChongWeiJie29/ip.git completed! -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/derekjxtan/ip.git to complete... +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shashahchk/ip.git... -Sep 01, 2023 4:10:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shashahchk/ip.git to complete... -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AlainS87/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AlainS87/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AlainS87/ip.git (master) completed! +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [106/480] Analyzing https://github.com/Vanessamae23/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tiongjjyi/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Vanessamae23/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Vanessamae23/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tiongjjyi/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tiongjjyi/ip.git (master) completed! +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [107/480] Analyzing https://github.com/fuyiqiao/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/fuyiqiao/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/fuyiqiao/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kristayeo/ip.git completed! -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Goh-Li-Ting/ip.git completed! -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Chandan8186/ip.git... -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alyssaongyx/ip.git... -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Chandan8186/ip.git to complete... -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/alyssaongyx/ip.git to complete... -Sep 01, 2023 4:10:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nubnubyas/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wxwern/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nubnubyas/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nubnubyas/ip.git (master) completed! -Sep 01, 2023 4:10:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [172/480] Analyzing https://github.com/aslam341/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wxwern/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wxwern/ip.git (master) completed! -Sep 01, 2023 4:10:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [173/480] Analyzing https://github.com/timleow/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/timleow/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/timleow/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aslam341/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aslam341/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shashahchk/ip.git completed! -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/derekjxtan/ip.git completed! -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Vanessamae23/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shashahchk/ip.git completed! +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alyssaongyx/ip.git... +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/alyssaongyx/ip.git to complete... +Sep 01, 2023 1:06:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Vanessamae23/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Vanessamae23/ip.git (master) completed! +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [108/480] Analyzing https://github.com/spatuly/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AndrewJanong/ip.git... -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AndrewJanong/ip.git to complete... +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/spatuly/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/spatuly/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yytan25/ip.git completed! +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kailash201/ip.git... -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kailash201/ip.git to complete... -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AndrewJanong/ip.git to complete... -Sep 01, 2023 4:10:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/aslam341/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/fuyiqiao/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/fuyiqiao/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/fuyiqiao/ip.git (master) completed! +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [109/480] Analyzing https://github.com/tanshiyu1999/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/spatuly/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanshiyu1999/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanshiyu1999/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/spatuly/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/spatuly/ip.git (master) completed! +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [110/480] Analyzing https://github.com/Kb-Tay/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Kb-Tay/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Kb-Tay/ip.git (master)... +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chandan8186/ip.git completed! +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/alyssaongyx/ip.git completed! -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/laurenlim2112/ip.git... -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/laurenlim2112/ip.git to complete... -Sep 01, 2023 4:10:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/aslam341/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/aslam341/ip.git (master) completed! -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chandan8186/ip.git completed! -Sep 01, 2023 4:10:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [174/480] Analyzing https://github.com/LWZ19/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lambraydon/ip.git... -Sep 01, 2023 4:10:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lambraydon/ip.git to complete... -Sep 01, 2023 4:10:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/timleow/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LWZ19/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LWZ19/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/timleow/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/timleow/ip.git (master) completed! -Sep 01, 2023 4:10:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [175/480] Analyzing https://github.com/rayshawntan/ip.git (master)... -Sep 01, 2023 4:10:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rayshawntan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rayshawntan/ip.git (master)... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AndrewJanong/ip.git completed! -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kailash201/ip.git completed! -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lambraydon/ip.git to complete... +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/laurenlim2112/ip.git to complete... +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sk2001git/ip.git... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chonguschonguschongus/ip.git... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kailash201/ip.git completed! +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sk2001git/ip.git to complete... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chonguschonguschongus/ip.git... +Sep 01, 2023 1:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chonguschonguschongus/ip.git to complete... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanshiyu1999/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanshiyu1999/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanshiyu1999/ip.git (master) completed! +Sep 01, 2023 1:06:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [111/480] Analyzing https://github.com/beatricecst/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/laurenlim2112/ip.git completed! -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lambraydon/ip.git completed! -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lshaoqin/ip.git... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/beatricecst/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/beatricecst/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lshaoqin/ip.git to complete... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/peasantbird/ip.git... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/peasantbird/ip.git to complete... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lambraydon/ip.git completed! +Sep 01, 2023 1:06:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kb-Tay/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sk2001git/ip.git completed! -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/peasantbird/ip.git... +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chonguschonguschongus/ip.git completed! -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WangCheng0116/ip.git... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/teozhengyang/ip.git... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/peasantbird/ip.git to complete... +Sep 01, 2023 1:06:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kb-Tay/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kb-Tay/ip.git (master) completed! +Sep 01, 2023 1:06:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [112/480] Analyzing https://github.com/tanveersingh10/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WangCheng0116/ip.git to complete... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/teozhengyang/ip.git... +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/teozhengyang/ip.git to complete... -Sep 01, 2023 4:10:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rayshawntan/ip.git (master)... -Sep 01, 2023 4:10:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rayshawntan/ip.git (master)... -Sep 01, 2023 4:10:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rayshawntan/ip.git (master) completed! -Sep 01, 2023 4:10:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [176/480] Analyzing https://github.com/aexolate/ip.git (master)... -Sep 01, 2023 4:10:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanveersingh10/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanveersingh10/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lshaoqin/ip.git completed! -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/peasantbird/ip.git completed! -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aexolate/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aexolate/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chewjh1234/ip.git... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/elaineshijie/ip.git... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chewjh1234/ip.git to complete... -Sep 01, 2023 4:10:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LWZ19/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/elaineshijie/ip.git to complete... -Sep 01, 2023 4:10:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LWZ19/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LWZ19/ip.git (master) completed! -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [177/480] Analyzing https://github.com/Sheeepen/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Sheeepen/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Sheeepen/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Sheeepen/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Sheeepen/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Sheeepen/ip.git (master) completed! -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [178/480] Analyzing https://github.com/ncmathan/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/aexolate/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/teozhengyang/ip.git completed! -Sep 01, 2023 4:10:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/aexolate/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/beatricecst/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/peasantbird/ip.git completed! +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/WangCheng0116/ip.git completed! -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/aexolate/ip.git (master) completed! -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/teozhengyang/ip.git completed! +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/elaineshijie/ip.git... +Sep 01, 2023 1:06:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/beatricecst/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/beatricecst/ip.git (master) completed! +Sep 01, 2023 1:06:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [113/480] Analyzing https://github.com/thienmy0/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lynnlow175/ip.git... -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [179/480] Analyzing https://github.com/iyioon/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/elaineshijie/ip.git to complete... +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lordidiot/ip.git... -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ncmathan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ncmathan/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lynnlow175/ip.git to complete... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chewjh1234/ip.git completed! -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/thienmy0/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/thienmy0/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lordidiot/ip.git to complete... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanveersingh10/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanveersingh10/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanveersingh10/ip.git (master) completed! +Sep 01, 2023 1:06:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [114/480] Analyzing https://github.com/s0ngyang/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/s0ngyang/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/s0ngyang/ip.git (master)... +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chewjh1234/ip.git completed! +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chew01/ip.git... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/elaineshijie/ip.git completed! -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/iyioon/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/iyioon/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chew01/ip.git to complete... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RSXIX/ip.git... -Sep 01, 2023 4:10:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RSXIX/ip.git to complete... -Sep 01, 2023 4:10:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ncmathan/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ncmathan/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ncmathan/ip.git (master) completed! -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [180/480] Analyzing https://github.com/shuyangk/ip.git (master)... -Sep 01, 2023 4:10:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shuyangk/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shuyangk/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/iyioon/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/iyioon/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/iyioon/ip.git (master) completed! -Sep 01, 2023 4:10:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [181/480] Analyzing https://github.com/kiwibang/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kiwibang/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kiwibang/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lynnlow175/ip.git completed! -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/elaineshijie/ip.git completed! +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lordidiot/ip.git completed! -Sep 01, 2023 4:10:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shuyangk/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chew01/ip.git completed! -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RSXIX/ip.git completed! -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RSXIX/ip.git... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/juliusgambe/ip.git... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RSXIX/ip.git to complete... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/juliusgambe/ip.git to complete... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhonghan721/ip.git... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/s0ngyang/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/thienmy0/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zhonghan721/ip.git to complete... +Sep 01, 2023 1:06:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/thienmy0/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/thienmy0/ip.git (master) completed! +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [115/480] Analyzing https://github.com/ldinghan/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/s0ngyang/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/s0ngyang/ip.git (master) completed! +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [116/480] Analyzing https://github.com/feifeiraindrops/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/feifeiraindrops/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/feifeiraindrops/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chew01/ip.git completed! +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WZWren/ip.git... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/inezkok/ip.git... -Sep 01, 2023 4:10:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shuyangk/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shuyangk/ip.git (master) completed! -Sep 01, 2023 4:10:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [182/480] Analyzing https://github.com/mingyu-wan/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ldinghan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ldinghan/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WZWren/ip.git to complete... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zhonghan721/ip.git to complete... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/juliusgambe/ip.git to complete... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/inezkok/ip.git to complete... -Sep 01, 2023 4:10:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mingyu-wan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mingyu-wan/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mingyu-wan/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kiwibang/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mingyu-wan/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kiwibang/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kiwibang/ip.git (master) completed! -Sep 01, 2023 4:10:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mingyu-wan/ip.git (master) completed! -Sep 01, 2023 4:10:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [183/480] Analyzing https://github.com/LuoZYi/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [184/480] Analyzing https://github.com/sushiyade/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LuoZYi/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LuoZYi/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sushiyade/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sushiyade/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/juliusgambe/ip.git completed! -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/inezkok/ip.git... +Sep 01, 2023 1:06:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ldinghan/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhonghan721/ip.git completed! +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/inezkok/ip.git to complete... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wasjoe1/ip.git... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WZWren/ip.git completed! -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/inezkok/ip.git completed! -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ldinghan/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ldinghan/ip.git (master) completed! +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [117/480] Analyzing https://github.com/kwangthiag/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wasjoe1/ip.git to complete... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/feifeiraindrops/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RSXIX/ip.git completed! +Sep 01, 2023 1:06:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/feifeiraindrops/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/feifeiraindrops/ip.git (master) completed! +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kokrui/ip.git... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jinyang628/ip.git... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kwangthiag/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kwangthiag/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [118/480] Analyzing https://github.com/ryanongwx/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WZWren/ip.git completed! +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kokrui/ip.git to complete... -Sep 01, 2023 4:10:31 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jinyang628/ip.git... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jinyang628/ip.git to complete... -Sep 01, 2023 4:10:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sushiyade/ip.git (master)... -Sep 01, 2023 4:10:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LuoZYi/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sushiyade/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sushiyade/ip.git (master) completed! -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [185/480] Analyzing https://github.com/asdfghjkxd/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LuoZYi/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LuoZYi/ip.git (master) completed! -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [186/480] Analyzing https://github.com/Nid21cs/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhonghan721/ip.git completed! -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Nid21cs/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Nid21cs/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/asdfghjkxd/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/asdfghjkxd/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ryanongwx/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ryanongwx/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/inezkok/ip.git completed! +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nananakx-x/ip.git... -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nananakx-x/ip.git to complete... -Sep 01, 2023 4:10:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Nid21cs/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Nid21cs/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Nid21cs/ip.git (master) completed! -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [187/480] Analyzing https://github.com/miljyy/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wasjoe1/ip.git completed! -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kwangthiag/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jinyang628/ip.git completed! +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ylyma/ip.git... -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/miljyy/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/miljyy/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kwangthiag/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ylyma/ip.git to complete... -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kokrui/ip.git completed! -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jinyang628/ip.git completed! -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AnnabelTing/ip.git... -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kwangthiag/ip.git (master) completed! +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [119/480] Analyzing https://github.com/elhy1999/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AnnabelTing/ip.git to complete... -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryanongwx/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryanongwx/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryanongwx/ip.git (master) completed! +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [120/480] Analyzing https://github.com/songgthu/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/elhy1999/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/elhy1999/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/songgthu/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/songgthu/ip.git (master)... +Sep 01, 2023 1:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kokrui/ip.git completed! +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/timetraveller-123/ip.git... -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/timetraveller-123/ip.git to complete... -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nananakx-x/ip.git completed! -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LicongHuang/ip.git... -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LicongHuang/ip.git to complete... -Sep 01, 2023 4:10:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/miljyy/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/miljyy/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/miljyy/ip.git (master) completed! -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [188/480] Analyzing https://github.com/ncduy0303/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ncduy0303/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ncduy0303/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/asdfghjkxd/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/asdfghjkxd/ip.git (master)... -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/asdfghjkxd/ip.git (master) completed! -Sep 01, 2023 4:10:32 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ylyma/ip.git completed! -Sep 01, 2023 4:10:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [189/480] Analyzing https://github.com/McNaBry/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jweng88/ip.git... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AnnabelTing/ip.git completed! -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jweng88/ip.git to complete... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AnnabelTing/ip.git completed! +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/EricXiong420/ip.git... -Sep 01, 2023 4:10:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/McNaBry/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/McNaBry/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/EricXiong420/ip.git to complete... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/songgthu/ip.git (master)... +Sep 01, 2023 1:06:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/songgthu/ip.git (master)... +Sep 01, 2023 1:06:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/songgthu/ip.git (master) completed! +Sep 01, 2023 1:06:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [121/480] Analyzing https://github.com/simbayippy/ip.git (master)... +Sep 01, 2023 1:06:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/simbayippy/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/simbayippy/ip.git (master)... +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/timetraveller-123/ip.git completed! -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jovkusuma/ip.git... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LicongHuang/ip.git completed! -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jovkusuma/ip.git to complete... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner spawnCloneProcess +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jovkusuma/ip.git... +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bhnuka/ip.git... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jovkusuma/ip.git to complete... +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bhnuka/ip.git to complete... -Sep 01, 2023 4:10:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ncduy0303/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ncduy0303/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ncduy0303/ip.git (master) completed! -Sep 01, 2023 4:10:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [190/480] Analyzing https://github.com/eyelessrhyme7/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jweng88/ip.git completed! +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/EricXiong420/ip.git completed! +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/J-hta-n/ip.git... +Sep 01, 2023 1:06:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/elhy1999/ip.git (master)... +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Tim-Siu/ip.git... +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Tim-Siu/ip.git to complete... +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/J-hta-n/ip.git to complete... +Sep 01, 2023 1:06:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/elhy1999/ip.git (master)... +Sep 01, 2023 1:06:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/elhy1999/ip.git (master) completed! +Sep 01, 2023 1:06:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [122/480] Analyzing https://github.com/GohTengFong/ip.git (master)... +Sep 01, 2023 1:06:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/GohTengFong/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/GohTengFong/ip.git (master)... +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jovkusuma/ip.git completed! +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yarnmengnus/ip.git... +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bhnuka/ip.git completed! +Sep 01, 2023 1:06:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/simbayippy/ip.git (master)... +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sopa301/ip.git... +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yarnmengnus/ip.git to complete... +Sep 01, 2023 1:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sopa301/ip.git to complete... +Sep 01, 2023 1:06:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/simbayippy/ip.git (master)... +Sep 01, 2023 1:06:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/simbayippy/ip.git (master) completed! +Sep 01, 2023 1:06:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [123/480] Analyzing https://github.com/Khaleelur-Rahman/ip.git (master)... +Sep 01, 2023 1:06:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Khaleelur-Rahman/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Khaleelur-Rahman/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/J-hta-n/ip.git completed! +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Tim-Siu/ip.git completed! +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ngeeyonglim/ip.git... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/flexibo/ip.git... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ngeeyonglim/ip.git to complete... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/flexibo/ip.git to complete... +Sep 01, 2023 1:06:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GohTengFong/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/GohTengFong/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/GohTengFong/ip.git (master) completed! +Sep 01, 2023 1:06:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [124/480] Analyzing https://github.com/proto-aiken-13/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yarnmengnus/ip.git completed! +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ItsTYtan/ip.git... +Sep 01, 2023 1:06:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/proto-aiken-13/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/proto-aiken-13/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sopa301/ip.git completed! +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ItsTYtan/ip.git to complete... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/javinchua/ip.git... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/javinchua/ip.git to complete... +Sep 01, 2023 1:06:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/proto-aiken-13/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/proto-aiken-13/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/proto-aiken-13/ip.git (master) completed! +Sep 01, 2023 1:06:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [125/480] Analyzing https://github.com/bwangpj/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Khaleelur-Rahman/ip.git (master) completed! +Sep 01, 2023 1:06:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [126/480] Analyzing https://github.com/weeweh/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bwangpj/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bwangpj/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/weeweh/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/weeweh/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/flexibo/ip.git completed! +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ngeeyonglim/ip.git completed! +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ItsTYtan/ip.git completed! +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/amosting/ip.git... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Cleon2/ip.git... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ketweeen/ip.git... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/javinchua/ip.git completed! +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Cleon2/ip.git to complete... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/amosting/ip.git to complete... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sudarshan2401/ip.git... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ketweeen/ip.git to complete... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sudarshan2401/ip.git to complete... +Sep 01, 2023 1:06:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bwangpj/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bwangpj/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bwangpj/ip.git (master) completed! +Sep 01, 2023 1:06:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [127/480] Analyzing https://github.com/s-peiran/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/s-peiran/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/s-peiran/ip.git (master)... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/amosting/ip.git completed! +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wui-hong/ip.git... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wui-hong/ip.git to complete... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Cleon2/ip.git completed! +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ketweeen/ip.git completed! +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Respirayson/ip.git... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Chrainx/ip.git... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Chrainx/ip.git to complete... +Sep 01, 2023 1:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sudarshan2401/ip.git completed! +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Respirayson/ip.git to complete... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shishirbychapur/ip.git... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shishirbychapur/ip.git to complete... +Sep 01, 2023 1:06:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/s-peiran/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/weeweh/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/s-peiran/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/s-peiran/ip.git (master) completed! +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [128/480] Analyzing https://github.com/jylow/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/weeweh/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/weeweh/ip.git (master) completed! +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [129/480] Analyzing https://github.com/lawruixi/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jylow/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jylow/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lawruixi/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lawruixi/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wui-hong/ip.git completed! +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sunzihan23/ip.git... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sunzihan23/ip.git to complete... +Sep 01, 2023 1:06:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jylow/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Respirayson/ip.git completed! +Sep 01, 2023 1:06:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jylow/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jylow/ip.git (master) completed! +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [130/480] Analyzing https://github.com/JeremyYong128/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wj331/ip.git... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wj331/ip.git to complete... +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JeremyYong128/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JeremyYong128/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chrainx/ip.git completed! +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shishirbychapur/ip.git completed! +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tjch-o/ip.git... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/licongshen12/ip.git... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/licongshen12/ip.git to complete... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tjch-o/ip.git to complete... +Sep 01, 2023 1:06:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lawruixi/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lawruixi/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lawruixi/ip.git (master) completed! +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [131/480] Analyzing https://github.com/LHeng1/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LHeng1/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LHeng1/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sunzihan23/ip.git completed! +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/mamayuan/ip.git... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/mamayuan/ip.git to complete... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wj331/ip.git completed! +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ong-wei-hong/ip.git... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ong-wei-hong/ip.git to complete... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/licongshen12/ip.git completed! +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tjch-o/ip.git completed! +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tanboonkhong/ip.git... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cbj252/ip.git... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tanboonkhong/ip.git to complete... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cbj252/ip.git to complete... +Sep 01, 2023 1:06:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LHeng1/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JeremyYong128/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LHeng1/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LHeng1/ip.git (master) completed! +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [132/480] Analyzing https://github.com/brandon-nam/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/brandon-nam/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/brandon-nam/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JeremyYong128/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JeremyYong128/ip.git (master) completed! +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [133/480] Analyzing https://github.com/Leb14/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Leb14/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Leb14/ip.git (master)... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mamayuan/ip.git completed! +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AlfredBeNoel/ip.git... +Sep 01, 2023 1:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AlfredBeNoel/ip.git to complete... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ong-wei-hong/ip.git completed! +Sep 01, 2023 1:06:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/brandon-nam/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/keaganpzh/ip.git... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/keaganpzh/ip.git to complete... +Sep 01, 2023 1:06:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/brandon-nam/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/brandon-nam/ip.git (master) completed! +Sep 01, 2023 1:06:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [134/480] Analyzing https://github.com/B-enguin/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/B-enguin/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/B-enguin/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cbj252/ip.git completed! +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanboonkhong/ip.git completed! +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ElginTZM/ip.git... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LimJH2002/ip.git... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ElginTZM/ip.git to complete... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LimJH2002/ip.git to complete... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AlfredBeNoel/ip.git completed! +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cmHuang777/ip.git... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cmHuang777/ip.git to complete... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/keaganpzh/ip.git completed! +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/WeeeHung/ip.git... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/WeeeHung/ip.git to complete... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ElginTZM/ip.git completed! +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xxiaoweii/ip.git... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xxiaoweii/ip.git to complete... +Sep 01, 2023 1:06:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Leb14/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Leb14/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Leb14/ip.git (master) completed! +Sep 01, 2023 1:06:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [135/480] Analyzing https://github.com/s-kybound/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LimJH2002/ip.git completed! +Sep 01, 2023 1:06:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/s-kybound/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/s-kybound/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rayyan35p/ip.git... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cmHuang777/ip.git completed! +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dhruvir29/ip.git... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rayyan35p/ip.git to complete... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dhruvir29/ip.git to complete... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WeeeHung/ip.git completed! +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LinWanLeii/ip.git... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LinWanLeii/ip.git to complete... +Sep 01, 2023 1:06:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/s-kybound/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/B-enguin/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xxiaoweii/ip.git completed! +Sep 01, 2023 1:06:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/s-kybound/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/s-kybound/ip.git (master) completed! +Sep 01, 2023 1:06:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [136/480] Analyzing https://github.com/wesho1107/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Song-Mengfei/ip.git... +Sep 01, 2023 1:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Song-Mengfei/ip.git to complete... +Sep 01, 2023 1:06:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/B-enguin/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/B-enguin/ip.git (master) completed! +Sep 01, 2023 1:06:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [137/480] Analyzing https://github.com/yihfei/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wesho1107/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wesho1107/ip.git (master)... +Sep 01, 2023 1:06:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yihfei/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yihfei/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rayyan35p/ip.git completed! +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dhruvir29/ip.git completed! +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jinyuan0425/ip.git... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jinyuan0425/ip.git to complete... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tiif/ip.git... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tiif/ip.git to complete... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LinWanLeii/ip.git completed! +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nicholascher/ip.git... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nicholascher/ip.git to complete... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Song-Mengfei/ip.git completed! +Sep 01, 2023 1:06:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yihfei/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/hcs1203/ip.git... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/hcs1203/ip.git to complete... +Sep 01, 2023 1:06:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yihfei/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yihfei/ip.git (master) completed! +Sep 01, 2023 1:06:28 PM reposense.report.ReportGenerator analyzeRepos +INFO: [138/480] Analyzing https://github.com/dlathyun/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dlathyun/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dlathyun/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jinyuan0425/ip.git completed! +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/papataco14/ip.git... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/papataco14/ip.git to complete... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tiif/ip.git completed! +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KamJiaYue/ip.git... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KamJiaYue/ip.git to complete... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicholascher/ip.git completed! +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/NereusWB922/ip.git... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/NereusWB922/ip.git to complete... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/hcs1203/ip.git completed! +Sep 01, 2023 1:06:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wesho1107/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/PohSayKeong/ip.git... +Sep 01, 2023 1:06:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wesho1107/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PohSayKeong/ip.git to complete... +Sep 01, 2023 1:06:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wesho1107/ip.git (master) completed! +Sep 01, 2023 1:06:28 PM reposense.report.ReportGenerator analyzeRepos +INFO: [139/480] Analyzing https://github.com/AaronJT1/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AaronJT1/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AaronJT1/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dlathyun/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dlathyun/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dlathyun/ip.git (master) completed! +Sep 01, 2023 1:06:28 PM reposense.report.ReportGenerator analyzeRepos +INFO: [140/480] Analyzing https://github.com/Angelyxx/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Angelyxx/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Angelyxx/ip.git (master)... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KamJiaYue/ip.git completed! +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ivyy-poison/ip.git... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ivyy-poison/ip.git to complete... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NereusWB922/ip.git completed! +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jacobcuison/ip.git... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/PohSayKeong/ip.git completed! +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ji-just-ji/ip.git... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jacobcuison/ip.git to complete... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ji-just-ji/ip.git to complete... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/papataco14/ip.git completed! +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kohkaijie/ip.git... +Sep 01, 2023 1:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kohkaijie/ip.git to complete... +Sep 01, 2023 1:06:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AaronJT1/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AaronJT1/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AaronJT1/ip.git (master) completed! +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [141/480] Analyzing https://github.com/ricketytoc/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ricketytoc/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ricketytoc/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Angelyxx/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jacobcuison/ip.git completed! +Sep 01, 2023 1:06:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ricketytoc/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rocketninja7/ip.git... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ivyy-poison/ip.git completed! +Sep 01, 2023 1:06:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Angelyxx/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Angelyxx/ip.git (master) completed! +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [142/480] Analyzing https://github.com/jingting1412/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zekone/ip.git... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rocketninja7/ip.git to complete... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zekone/ip.git to complete... +Sep 01, 2023 1:06:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ricketytoc/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ricketytoc/ip.git (master) completed! +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [143/480] Analyzing https://github.com/SinhaVedant/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jingting1412/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jingting1412/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SinhaVedant/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SinhaVedant/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kohkaijie/ip.git completed! +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/markgcera/ip.git... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/markgcera/ip.git to complete... +Sep 01, 2023 1:06:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SinhaVedant/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SinhaVedant/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SinhaVedant/ip.git (master) completed! +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [144/480] Analyzing https://github.com/freddychenyouren2/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/freddychenyouren2/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/freddychenyouren2/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rocketninja7/ip.git completed! +Sep 01, 2023 1:06:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jingting1412/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/PearlynnT/ip.git... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zekone/ip.git completed! +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PearlynnT/ip.git to complete... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/StevenLiudw/ip.git... +Sep 01, 2023 1:06:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jingting1412/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jingting1412/ip.git (master) completed! +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [145/480] Analyzing https://github.com/jordankanghm/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/StevenLiudw/ip.git to complete... +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jordankanghm/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jordankanghm/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/markgcera/ip.git completed! +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/TeeRenJing/ip.git... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TeeRenJing/ip.git to complete... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/PearlynnT/ip.git completed! +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/StevenLiudw/ip.git completed! +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/mounilsankar/ip.git... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dloh2236/ip.git... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dloh2236/ip.git to complete... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/mounilsankar/ip.git to complete... +Sep 01, 2023 1:06:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/freddychenyouren2/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/freddychenyouren2/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/freddychenyouren2/ip.git (master) completed! +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [146/480] Analyzing https://github.com/waseemingly/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/waseemingly/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/waseemingly/ip.git (master)... +Sep 01, 2023 1:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TeeRenJing/ip.git completed! +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zannloo/ip.git... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zannloo/ip.git to complete... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mounilsankar/ip.git completed! +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dloh2236/ip.git completed! +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/junnengsoo/ip.git... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/junnengsoo/ip.git to complete... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/freshcabbage123/ip.git... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/freshcabbage123/ip.git to complete... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ji-just-ji/ip.git completed! +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Kokseng1/ip.git... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Kokseng1/ip.git to complete... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zannloo/ip.git completed! +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/itsNatTan/ip.git... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/itsNatTan/ip.git to complete... +Sep 01, 2023 1:06:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/waseemingly/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jordankanghm/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/waseemingly/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/waseemingly/ip.git (master) completed! +Sep 01, 2023 1:06:30 PM reposense.report.ReportGenerator analyzeRepos +INFO: [147/480] Analyzing https://github.com/adhigop13/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jordankanghm/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jordankanghm/ip.git (master) completed! +Sep 01, 2023 1:06:30 PM reposense.report.ReportGenerator analyzeRepos +INFO: [148/480] Analyzing https://github.com/raydenlim/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/adhigop13/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/adhigop13/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/junnengsoo/ip.git completed! +Sep 01, 2023 1:06:30 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/raydenlim/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/raydenlim/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tjingsheng/ip.git... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/freshcabbage123/ip.git completed! +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ZD292/ip.git... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tjingsheng/ip.git to complete... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kokseng1/ip.git completed! +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alientian/ip.git... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ZD292/ip.git to complete... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/alientian/ip.git to complete... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/itsNatTan/ip.git completed! +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/frrrrry/ip.git... +Sep 01, 2023 1:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/frrrrry/ip.git to complete... +Sep 01, 2023 1:06:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/raydenlim/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/adhigop13/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/raydenlim/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/raydenlim/ip.git (master) completed! +Sep 01, 2023 1:06:30 PM reposense.report.ReportGenerator analyzeRepos +INFO: [149/480] Analyzing https://github.com/jingyu987/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/adhigop13/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/adhigop13/ip.git (master) completed! +Sep 01, 2023 1:06:30 PM reposense.report.ReportGenerator analyzeRepos +INFO: [150/480] Analyzing https://github.com/FerdiHS/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jingyu987/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jingyu987/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/FerdiHS/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/FerdiHS/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jingyu987/ip.git (master)... +Sep 01, 2023 1:06:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jingyu987/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jingyu987/ip.git (master) completed! +Sep 01, 2023 1:06:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [151/480] Analyzing https://github.com/jrchoo/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jrchoo/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jrchoo/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ZD292/ip.git completed! +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tjingsheng/ip.git completed! +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/frrrrry/ip.git completed! +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alientian/ip.git completed! +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wanghejin/ip.git... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/MagnificentCreature/ip.git... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SungMatt/ip.git... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/andrefoo/ip.git... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/andrefoo/ip.git to complete... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SungMatt/ip.git to complete... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wanghejin/ip.git to complete... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/MagnificentCreature/ip.git to complete... +Sep 01, 2023 1:06:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/FerdiHS/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/FerdiHS/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/FerdiHS/ip.git (master) completed! +Sep 01, 2023 1:06:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [152/480] Analyzing https://github.com/RiyaMehta2211/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jrchoo/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RiyaMehta2211/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RiyaMehta2211/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jrchoo/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jrchoo/ip.git (master) completed! +Sep 01, 2023 1:06:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [153/480] Analyzing https://github.com/leezhanpeng/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/leezhanpeng/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/leezhanpeng/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SungMatt/ip.git completed! +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wanghejin/ip.git completed! +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tohpinren/ip.git... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tohpinren/ip.git to complete... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/XihuaZ/ip.git... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/andrefoo/ip.git completed! +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/MagnificentCreature/ip.git completed! +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/XihuaZ/ip.git to complete... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xavierpok/ip.git... +Sep 01, 2023 1:06:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RiyaMehta2211/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bkjwjason/ip.git... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bkjwjason/ip.git to complete... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xavierpok/ip.git to complete... +Sep 01, 2023 1:06:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RiyaMehta2211/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RiyaMehta2211/ip.git (master) completed! +Sep 01, 2023 1:06:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [154/480] Analyzing https://github.com/juzzztinsoong/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/juzzztinsoong/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/juzzztinsoong/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/XihuaZ/ip.git completed! +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bkjwjason/ip.git completed! +Sep 01, 2023 1:06:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/leezhanpeng/ip.git (master)... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xavierpok/ip.git completed! +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Choonyan02/ip.git... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tohpinren/ip.git completed! +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/aarontxz/ip.git... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jianyangg/ip.git... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/aarontxz/ip.git to complete... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tayian/ip.git... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Choonyan02/ip.git to complete... +Sep 01, 2023 1:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tayian/ip.git to complete... +Sep 01, 2023 1:06:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/leezhanpeng/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/leezhanpeng/ip.git (master) completed! +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator analyzeRepos +INFO: [155/480] Analyzing https://github.com/darrentfy/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jianyangg/ip.git to complete... +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/darrentfy/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/darrentfy/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/juzzztinsoong/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/juzzztinsoong/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/juzzztinsoong/ip.git (master) completed! +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator analyzeRepos +INFO: [156/480] Analyzing https://github.com/redtailedfox/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/redtailedfox/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/redtailedfox/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aarontxz/ip.git completed! +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Choonyan02/ip.git completed! +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tayian/ip.git completed! +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wnchan/ip.git... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Jweewee/ip.git... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jweewee/ip.git to complete... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cyaoxuan/ip.git... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jianyangg/ip.git completed! +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wnchan/ip.git to complete... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cyaoxuan/ip.git to complete... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/anthonytamzil/ip.git... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/anthonytamzil/ip.git to complete... +Sep 01, 2023 1:06:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/darrentfy/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/darrentfy/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/darrentfy/ip.git (master) completed! +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator analyzeRepos +INFO: [157/480] Analyzing https://github.com/Fallman2/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Fallman2/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Fallman2/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/redtailedfox/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/redtailedfox/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/redtailedfox/ip.git (master) completed! +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator analyzeRepos +INFO: [158/480] Analyzing https://github.com/Heran9/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Heran9/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Heran9/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wnchan/ip.git completed! +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cyaoxuan/ip.git completed! +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/anthonytamzil/ip.git completed! +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jweewee/ip.git completed! +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/CelestineTan03/ip.git... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/CelestineTan03/ip.git to complete... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/saltedfishxx/ip.git... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/euchangxian/ip.git... +Sep 01, 2023 1:06:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Fallman2/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AlagappanRa/ip.git... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/euchangxian/ip.git to complete... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/saltedfishxx/ip.git to complete... +Sep 01, 2023 1:06:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Fallman2/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Fallman2/ip.git (master) completed! +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator analyzeRepos +INFO: [159/480] Analyzing https://github.com/jingjie88/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AlagappanRa/ip.git to complete... +Sep 01, 2023 1:06:32 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jingjie88/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jingjie88/ip.git (master)... +Sep 01, 2023 1:06:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Heran9/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Heran9/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Heran9/ip.git (master) completed! +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [160/480] Analyzing https://github.com/VN-Hao/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/VN-Hao/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/VN-Hao/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/CelestineTan03/ip.git completed! +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Ken-Lai/ip.git... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AlagappanRa/ip.git completed! +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/saltedfishxx/ip.git completed! +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/euchangxian/ip.git completed! +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/felibunnyy/ip.git... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/itssisi/ip.git... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Ken-Lai/ip.git to complete... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/itssisi/ip.git to complete... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/felibunnyy/ip.git to complete... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jamz903/ip.git... +Sep 01, 2023 1:06:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/VN-Hao/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jamz903/ip.git to complete... +Sep 01, 2023 1:06:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jingjie88/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/VN-Hao/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/VN-Hao/ip.git (master) completed! +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [161/480] Analyzing https://github.com/H1410101/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jingjie88/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jingjie88/ip.git (master) completed! +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [162/480] Analyzing https://github.com/ivanleekk/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/H1410101/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/H1410101/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ivanleekk/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ivanleekk/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/felibunnyy/ip.git completed! +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Kevin-Liusx/ip.git... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Kevin-Liusx/ip.git to complete... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ken-Lai/ip.git completed! +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Propene-Dan/ip.git... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/itssisi/ip.git completed! +Sep 01, 2023 1:06:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/H1410101/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChuanXinNg/ip.git... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jamz903/ip.git completed! +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Propene-Dan/ip.git to complete... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kenvynKwek/ip.git... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChuanXinNg/ip.git to complete... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kenvynKwek/ip.git to complete... +Sep 01, 2023 1:06:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/H1410101/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/H1410101/ip.git (master) completed! +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [163/480] Analyzing https://github.com/kimshitong/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kimshitong/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kimshitong/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +WARNING: Exception met while trying to clone the repo "Propene-Dan/ip[master]", will skip this repo. +reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/Propene-Dan/ip.git' 'repos/Propene-Dan_ip/ip_bare' on path . : +Cloning into bare repository 'repos/Propene-Dan_ip/ip_bare'... +fatal: could not read Username for 'https://github.com': No such device or address + + at reposense.system.CommandRunnerProcess.waitForProcess(CommandRunnerProcess.java:46) + at reposense.report.RepoCloner.waitForCloneProcess(RepoCloner.java:323) + at reposense.report.RepoCloner.getClonedRepoLocation(RepoCloner.java:123) + at reposense.report.ReportGenerator.cloneRepo(ReportGenerator.java:263) + at reposense.report.ReportGenerator.lambda$cloneAndAnalyzeRepos$0(ReportGenerator.java:208) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) + at java.base/java.lang.Thread.run(Thread.java:829) + +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Ruizhi2001/ip.git... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Ruizhi2001/ip.git to complete... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kevin-Liusx/ip.git completed! +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/prawnzyy/ip.git... +Sep 01, 2023 1:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/prawnzyy/ip.git to complete... +Sep 01, 2023 1:06:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ivanleekk/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ivanleekk/ip.git (master)... +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ivanleekk/ip.git (master) completed! +Sep 01, 2023 1:06:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [164/480] Analyzing https://github.com/lamchenghou/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChuanXinNg/ip.git completed! +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kenvynKwek/ip.git completed! +Sep 01, 2023 1:06:34 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lamchenghou/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lamchenghou/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/saraozn/ip.git... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/saraozn/ip.git to complete... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nicholastng010601/ip.git... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ruizhi2001/ip.git completed! +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nicholastng010601/ip.git to complete... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DistractedCat/ip.git... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DistractedCat/ip.git to complete... +Sep 01, 2023 1:06:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kimshitong/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kimshitong/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kimshitong/ip.git (master) completed! +Sep 01, 2023 1:06:34 PM reposense.report.ReportGenerator analyzeRepos +INFO: [165/480] Analyzing https://github.com/tayruxin/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tayruxin/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tayruxin/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/prawnzyy/ip.git completed! +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yezkez10/ip.git... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/saraozn/ip.git completed! +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yezkez10/ip.git to complete... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/revdrag/ip.git... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicholastng010601/ip.git completed! +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alvinlim277/ip.git... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/revdrag/ip.git to complete... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DistractedCat/ip.git completed! +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/alvinlim277/ip.git to complete... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JasonRay168/ip.git... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JasonRay168/ip.git to complete... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yezkez10/ip.git completed! +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/billieboy7/ip.git... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/billieboy7/ip.git to complete... +Sep 01, 2023 1:06:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tayruxin/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lamchenghou/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tayruxin/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tayruxin/ip.git (master) completed! +Sep 01, 2023 1:06:34 PM reposense.report.ReportGenerator analyzeRepos +INFO: [166/480] Analyzing https://github.com/raynertjx/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/revdrag/ip.git completed! +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alvinlim277/ip.git completed! +Sep 01, 2023 1:06:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lamchenghou/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/raynertjx/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/raynertjx/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lamchenghou/ip.git (master) completed! +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jannnice/ip.git... +Sep 01, 2023 1:06:34 PM reposense.report.ReportGenerator analyzeRepos +INFO: [167/480] Analyzing https://github.com/zhengyup/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/evanyan13/ip.git... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jannnice/ip.git to complete... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/evanyan13/ip.git to complete... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JasonRay168/ip.git completed! +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/samuelim01/ip.git... +Sep 01, 2023 1:06:34 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhengyup/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhengyup/ip.git (master)... +Sep 01, 2023 1:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/samuelim01/ip.git to complete... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/billieboy7/ip.git completed! +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dinde2004/ip.git... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dinde2004/ip.git to complete... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jannnice/ip.git completed! +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/seanpzk/ip.git... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/evanyan13/ip.git completed! +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/seanpzk/ip.git to complete... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KumChaiYin/ip.git... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KumChaiYin/ip.git to complete... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/samuelim01/ip.git completed! +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lsyurea/ip.git... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lsyurea/ip.git to complete... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dinde2004/ip.git completed! +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Sasmik23/ip.git... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Sasmik23/ip.git to complete... +Sep 01, 2023 1:06:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/raynertjx/ip.git (master)... +Sep 01, 2023 1:06:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhengyup/ip.git (master)... +Sep 01, 2023 1:06:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/raynertjx/ip.git (master)... +Sep 01, 2023 1:06:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/raynertjx/ip.git (master) completed! +Sep 01, 2023 1:06:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [168/480] Analyzing https://github.com/larrywang0701/ip.git (master)... +Sep 01, 2023 1:06:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhengyup/ip.git (master)... +Sep 01, 2023 1:06:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhengyup/ip.git (master) completed! +Sep 01, 2023 1:06:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [169/480] Analyzing https://github.com/Carlintyj/ip.git (master)... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/seanpzk/ip.git completed! +Sep 01, 2023 1:06:35 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/larrywang0701/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/larrywang0701/ip.git (master)... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/geraldngjx/ip.git... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KumChaiYin/ip.git completed! +Sep 01, 2023 1:06:35 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Carlintyj/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Carlintyj/ip.git (master)... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lululwtv/ip.git... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/geraldngjx/ip.git to complete... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lululwtv/ip.git to complete... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lsyurea/ip.git completed! +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/garylow2001/ip.git... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/garylow2001/ip.git to complete... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Sasmik23/ip.git completed! +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/leontan2/ip.git... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/leontan2/ip.git to complete... +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/geraldngjx/ip.git completed! +Sep 01, 2023 1:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lululwtv/ip.git completed! +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wamps-jp/ip.git... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dickongwd/ip.git... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wamps-jp/ip.git to complete... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dickongwd/ip.git to complete... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/garylow2001/ip.git completed! +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jacksonyuan256/ip.git... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jacksonyuan256/ip.git to complete... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/leontan2/ip.git completed! +Sep 01, 2023 1:06:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/larrywang0701/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/suryanshkushwaha/ip.git... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/suryanshkushwaha/ip.git to complete... +Sep 01, 2023 1:06:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/larrywang0701/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/larrywang0701/ip.git (master) completed! +Sep 01, 2023 1:06:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [170/480] Analyzing https://github.com/wxwern/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wxwern/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wxwern/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Carlintyj/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Carlintyj/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Carlintyj/ip.git (master) completed! +Sep 01, 2023 1:06:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [171/480] Analyzing https://github.com/nubnubyas/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nubnubyas/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nubnubyas/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wamps-jp/ip.git completed! +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wr1159/ip.git... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wr1159/ip.git to complete... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jacksonyuan256/ip.git completed! +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dickongwd/ip.git completed! +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/suryanshkushwaha/ip.git completed! +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Nauxe/ip.git... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yyyaohhh/ip.git... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Nauxe/ip.git to complete... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zhanyang01/ip.git... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yyyaohhh/ip.git to complete... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zhanyang01/ip.git to complete... +Sep 01, 2023 1:06:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nubnubyas/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nubnubyas/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nubnubyas/ip.git (master) completed! +Sep 01, 2023 1:06:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [172/480] Analyzing https://github.com/aslam341/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wxwern/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aslam341/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aslam341/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wxwern/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wxwern/ip.git (master) completed! +Sep 01, 2023 1:06:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [173/480] Analyzing https://github.com/LWZ19/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LWZ19/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LWZ19/ip.git (master)... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wr1159/ip.git completed! +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/czhiruo/ip.git... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/czhiruo/ip.git to complete... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yyyaohhh/ip.git completed! +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/victorpengmx/ip.git... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Nauxe/ip.git completed! +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/longnguyentan/ip.git... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/victorpengmx/ip.git to complete... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhanyang01/ip.git completed! +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Cikguseven/ip.git... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/longnguyentan/ip.git to complete... +Sep 01, 2023 1:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Cikguseven/ip.git to complete... +Sep 01, 2023 1:06:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/aslam341/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/aslam341/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/aslam341/ip.git (master) completed! +Sep 01, 2023 1:06:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [174/480] Analyzing https://github.com/rayshawntan/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rayshawntan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rayshawntan/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/czhiruo/ip.git completed! +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/longnguyentan/ip.git completed! +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/victorpengmx/ip.git completed! +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Eola-Z/ip.git... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jibtaf/ip.git... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lipwei1808/ip.git... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Cikguseven/ip.git completed! +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Eola-Z/ip.git to complete... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jibtaf/ip.git to complete... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lipwei1808/ip.git to complete... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Mohammed-Faizzzz/ip.git... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Mohammed-Faizzzz/ip.git to complete... +Sep 01, 2023 1:06:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LWZ19/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rayshawntan/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LWZ19/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LWZ19/ip.git (master) completed! +Sep 01, 2023 1:06:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [175/480] Analyzing https://github.com/timleow/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Eola-Z/ip.git completed! +Sep 01, 2023 1:06:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rayshawntan/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rayshawntan/ip.git (master) completed! +Sep 01, 2023 1:06:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [176/480] Analyzing https://github.com/Sheeepen/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lipwei1808/ip.git completed! +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dylkaw/ip.git... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dylkaw/ip.git to complete... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nikele2001/ip.git... +Sep 01, 2023 1:06:37 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/timleow/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/timleow/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Mohammed-Faizzzz/ip.git completed! +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nikele2001/ip.git to complete... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jibtaf/ip.git completed! +Sep 01, 2023 1:06:37 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Sheeepen/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Sheeepen/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DeltonCheng/ip.git... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChangruHenryQian/ip.git... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DeltonCheng/ip.git to complete... +Sep 01, 2023 1:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChangruHenryQian/ip.git to complete... +Sep 01, 2023 1:06:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Sheeepen/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Sheeepen/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Sheeepen/ip.git (master) completed! +Sep 01, 2023 1:06:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [177/480] Analyzing https://github.com/aexolate/ip.git (master)... +Sep 01, 2023 1:06:37 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aexolate/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aexolate/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dylkaw/ip.git completed! +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nikele2001/ip.git completed! +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/craigtonlian/ip.git... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ruo-x/ip.git... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/craigtonlian/ip.git to complete... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DeltonCheng/ip.git completed! +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ruo-x/ip.git to complete... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/iantsaii/ip.git... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChangruHenryQian/ip.git completed! +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/iantsaii/ip.git to complete... +Sep 01, 2023 1:06:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/timleow/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wjacobw/ip.git... +Sep 01, 2023 1:06:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/timleow/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/timleow/ip.git (master) completed! +Sep 01, 2023 1:06:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [178/480] Analyzing https://github.com/shuyangk/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wjacobw/ip.git to complete... +Sep 01, 2023 1:06:38 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shuyangk/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shuyangk/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/craigtonlian/ip.git completed! +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/angkyakdifp/ip.git... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/iantsaii/ip.git completed! +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruo-x/ip.git completed! +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/brein62/ip.git... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/angkyakdifp/ip.git to complete... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nicrandomlee/ip.git... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wjacobw/ip.git completed! +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/brein62/ip.git to complete... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Bryan-Goh/ip.git... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nicrandomlee/ip.git to complete... +Sep 01, 2023 1:06:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shuyangk/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Bryan-Goh/ip.git to complete... +Sep 01, 2023 1:06:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/aexolate/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shuyangk/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shuyangk/ip.git (master) completed! +Sep 01, 2023 1:06:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [179/480] Analyzing https://github.com/ncmathan/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/aexolate/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/aexolate/ip.git (master) completed! +Sep 01, 2023 1:06:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [180/480] Analyzing https://github.com/iyioon/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ncmathan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ncmathan/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/iyioon/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/iyioon/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/brein62/ip.git completed! +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kiatkat/ip.git... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kiatkat/ip.git to complete... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicrandomlee/ip.git completed! +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/angkyakdifp/ip.git completed! +Sep 01, 2023 1:06:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ncmathan/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Bryan-Goh/ip.git completed! +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/MadLamprey/ip.git... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xyT-T/ip.git... +Sep 01, 2023 1:06:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ncmathan/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ncmathan/ip.git (master) completed! +Sep 01, 2023 1:06:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [181/480] Analyzing https://github.com/mingyu-wan/ip.git (master)... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jiakai-17/ip.git... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xyT-T/ip.git to complete... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/MadLamprey/ip.git to complete... +Sep 01, 2023 1:06:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jiakai-17/ip.git to complete... +Sep 01, 2023 1:06:38 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mingyu-wan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mingyu-wan/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/iyioon/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/iyioon/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/iyioon/ip.git (master) completed! +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [182/480] Analyzing https://github.com/kiwibang/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kiwibang/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kiwibang/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kiatkat/ip.git completed! +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nreHieW/ip.git... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/MadLamprey/ip.git completed! +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nreHieW/ip.git to complete... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nathanielcalimag/ip.git... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jiakai-17/ip.git completed! +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Saezenn/ip.git... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nathanielcalimag/ip.git to complete... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Saezenn/ip.git to complete... +Sep 01, 2023 1:06:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mingyu-wan/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mingyu-wan/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mingyu-wan/ip.git (master) completed! +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [183/480] Analyzing https://github.com/LuoZYi/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xyT-T/ip.git completed! +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LuoZYi/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LuoZYi/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jellywaiyan/ip.git... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jellywaiyan/ip.git to complete... +Sep 01, 2023 1:06:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LuoZYi/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LuoZYi/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LuoZYi/ip.git (master) completed! +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [184/480] Analyzing https://github.com/asdfghjkxd/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/asdfghjkxd/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/asdfghjkxd/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nathanielcalimag/ip.git completed! +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/marquestye/ip.git... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/marquestye/ip.git to complete... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nreHieW/ip.git completed! +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Saezenn/ip.git completed! +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Tang-Moyan/ip.git... +Sep 01, 2023 1:06:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kiwibang/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DonovanJJ/ip.git... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Tang-Moyan/ip.git to complete... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DonovanJJ/ip.git to complete... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jellywaiyan/ip.git completed! +Sep 01, 2023 1:06:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kiwibang/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Sebtey/ip.git... +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kiwibang/ip.git (master) completed! +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Sebtey/ip.git to complete... +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [185/480] Analyzing https://github.com/sushiyade/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sushiyade/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sushiyade/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marquestye/ip.git completed! +Sep 01, 2023 1:06:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sushiyade/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rionshocker/ip.git... +Sep 01, 2023 1:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rionshocker/ip.git to complete... +Sep 01, 2023 1:06:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sushiyade/ip.git (master)... +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sushiyade/ip.git (master) completed! +Sep 01, 2023 1:06:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [186/480] Analyzing https://github.com/Nid21cs/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Tang-Moyan/ip.git completed! +Sep 01, 2023 1:06:40 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tyouwei/ip.git... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Nid21cs/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Nid21cs/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tyouwei/ip.git to complete... +Sep 01, 2023 1:06:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DonovanJJ/ip.git completed! +Sep 01, 2023 1:06:40 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Blizzeracz/ip.git... +Sep 01, 2023 1:06:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Sebtey/ip.git completed! +Sep 01, 2023 1:06:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Blizzeracz/ip.git to complete... +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Nid21cs/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rionshocker/ip.git completed! +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Nid21cs/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Nid21cs/ip.git (master) completed! +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [187/480] Analyzing https://github.com/McNaBry/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tyouwei/ip.git completed! +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/McNaBry/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/McNaBry/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Blizzeracz/ip.git completed! +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/asdfghjkxd/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/asdfghjkxd/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/asdfghjkxd/ip.git (master) completed! +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [188/480] Analyzing https://github.com/miljyy/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/miljyy/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/miljyy/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/miljyy/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/miljyy/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/miljyy/ip.git (master) completed! +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [189/480] Analyzing https://github.com/eyelessrhyme7/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/eyelessrhyme7/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/eyelessrhyme7/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/McNaBry/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/McNaBry/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/McNaBry/ip.git (master) completed! +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [190/480] Analyzing https://github.com/ncduy0303/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ncduy0303/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ncduy0303/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/eyelessrhyme7/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/eyelessrhyme7/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/eyelessrhyme7/ip.git (master) completed! -Sep 01, 2023 4:10:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [191/480] Analyzing https://github.com/m1oojv/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [191/480] Analyzing https://github.com/ruishanteo/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ruishanteo/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ruishanteo/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ncduy0303/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ncduy0303/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ncduy0303/ip.git (master) completed! +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [192/480] Analyzing https://github.com/m1oojv/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/m1oojv/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/m1oojv/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/McNaBry/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jweng88/ip.git completed! -Sep 01, 2023 4:10:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/McNaBry/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/J-hta-n/ip.git... -Sep 01, 2023 4:10:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/McNaBry/ip.git (master) completed! -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/EricXiong420/ip.git completed! -Sep 01, 2023 4:10:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [192/480] Analyzing https://github.com/Nixx162/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/J-hta-n/ip.git to complete... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Tim-Siu/ip.git... -Sep 01, 2023 4:10:33 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ruishanteo/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ruishanteo/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ruishanteo/ip.git (master) completed! +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [193/480] Analyzing https://github.com/Nixx162/ip.git (master)... +Sep 01, 2023 1:06:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Nixx162/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Nixx162/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Tim-Siu/ip.git to complete... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jovkusuma/ip.git completed! -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yarnmengnus/ip.git... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yarnmengnus/ip.git to complete... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bhnuka/ip.git completed! -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sopa301/ip.git... -Sep 01, 2023 4:10:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sopa301/ip.git to complete... -Sep 01, 2023 4:10:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Nixx162/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Nixx162/ip.git (master)... -Sep 01, 2023 4:10:33 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Nixx162/ip.git (master) completed! -Sep 01, 2023 4:10:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [193/480] Analyzing https://github.com/ruishanteo/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ruishanteo/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ruishanteo/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [194/480] Analyzing https://github.com/mfjkri/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/m1oojv/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mfjkri/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mfjkri/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/m1oojv/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/m1oojv/ip.git (master) completed! -Sep 01, 2023 4:10:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [194/480] Analyzing https://github.com/Gabriel4357/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/J-hta-n/ip.git completed! -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ngeeyonglim/ip.git... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ngeeyonglim/ip.git to complete... -Sep 01, 2023 4:10:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Gabriel4357/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Gabriel4357/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Tim-Siu/ip.git completed! -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sopa301/ip.git completed! -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/flexibo/ip.git... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ItsTYtan/ip.git... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yarnmengnus/ip.git completed! -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/javinchua/ip.git... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ItsTYtan/ip.git to complete... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/flexibo/ip.git to complete... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/javinchua/ip.git to complete... -Sep 01, 2023 4:10:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ruishanteo/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ruishanteo/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ruishanteo/ip.git (master) completed! -Sep 01, 2023 4:10:34 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepos INFO: [195/480] Analyzing https://github.com/junhonglow/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/junhonglow/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/junhonglow/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Gabriel4357/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Gabriel4357/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Gabriel4357/ip.git (master) completed! -Sep 01, 2023 4:10:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [196/480] Analyzing https://github.com/mfjkri/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mfjkri/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mfjkri/ip.git (master)... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ngeeyonglim/ip.git completed! -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/amosting/ip.git... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/amosting/ip.git to complete... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ItsTYtan/ip.git completed! -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Cleon2/ip.git... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/flexibo/ip.git completed! -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/javinchua/ip.git completed! -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ketweeen/ip.git... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Cleon2/ip.git to complete... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ketweeen/ip.git to complete... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sudarshan2401/ip.git... -Sep 01, 2023 4:10:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sudarshan2401/ip.git to complete... -Sep 01, 2023 4:10:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/junhonglow/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/junhonglow/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/junhonglow/ip.git (master) completed! -Sep 01, 2023 4:10:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [197/480] Analyzing https://github.com/RoeReRe/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RoeReRe/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RoeReRe/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [196/480] Analyzing https://github.com/Gabriel4357/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/mfjkri/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Gabriel4357/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Gabriel4357/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/mfjkri/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/mfjkri/ip.git (master) completed! -Sep 01, 2023 4:10:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [198/480] Analyzing https://github.com/Badatprogrammiing/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Badatprogrammiing/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Badatprogrammiing/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/amosting/ip.git completed! -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wui-hong/ip.git... -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wui-hong/ip.git to complete... -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ketweeen/ip.git completed! -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Respirayson/ip.git... -Sep 01, 2023 4:10:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [197/480] Analyzing https://github.com/RoeReRe/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RoeReRe/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RoeReRe/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Gabriel4357/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/RoeReRe/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Respirayson/ip.git to complete... -Sep 01, 2023 4:10:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/RoeReRe/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/RoeReRe/ip.git (master) completed! -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Cleon2/ip.git completed! -Sep 01, 2023 4:10:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [199/480] Analyzing https://github.com/nknguyenhc/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sudarshan2401/ip.git completed! -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Chrainx/ip.git... -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shishirbychapur/ip.git... -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shishirbychapur/ip.git to complete... -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Chrainx/ip.git to complete... -Sep 01, 2023 4:10:35 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [198/480] Analyzing https://github.com/nknguyenhc/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Gabriel4357/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Gabriel4357/ip.git (master) completed! +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [199/480] Analyzing https://github.com/winson8222/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nknguyenhc/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nknguyenhc/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Badatprogrammiing/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Badatprogrammiing/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Badatprogrammiing/ip.git (master) completed! -Sep 01, 2023 4:10:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [200/480] Analyzing https://github.com/winson8222/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/winson8222/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/winson8222/ip.git (master)... -Sep 01, 2023 4:10:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Respirayson/ip.git completed! -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sunzihan23/ip.git... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wui-hong/ip.git completed! -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sunzihan23/ip.git to complete... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chrainx/ip.git completed! -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wj331/ip.git... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tjch-o/ip.git... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shishirbychapur/ip.git completed! -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tjch-o/ip.git to complete... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wj331/ip.git to complete... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/licongshen12/ip.git... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/licongshen12/ip.git to complete... -Sep 01, 2023 4:10:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/winson8222/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/winson8222/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/winson8222/ip.git (master) completed! +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [200/480] Analyzing https://github.com/Badatprogrammiing/ip.git (master)... +Sep 01, 2023 1:06:41 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Badatprogrammiing/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Badatprogrammiing/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nknguyenhc/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nknguyenhc/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nknguyenhc/ip.git (master) completed! -Sep 01, 2023 4:10:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [201/480] Analyzing https://github.com/SimWPEric/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [201/480] Analyzing https://github.com/lerxuann/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lerxuann/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lerxuann/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Badatprogrammiing/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Badatprogrammiing/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Badatprogrammiing/ip.git (master) completed! +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [202/480] Analyzing https://github.com/SimWPEric/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SimWPEric/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SimWPEric/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/winson8222/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/winson8222/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/winson8222/ip.git (master) completed! -Sep 01, 2023 4:10:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [202/480] Analyzing https://github.com/wujy28/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sunzihan23/ip.git completed! -Sep 01, 2023 4:10:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wujy28/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wujy28/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/mamayuan/ip.git... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/mamayuan/ip.git to complete... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wj331/ip.git completed! -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tjch-o/ip.git completed! -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/licongshen12/ip.git completed! -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ong-wei-hong/ip.git... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tanboonkhong/ip.git... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ong-wei-hong/ip.git to complete... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cbj252/ip.git... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tanboonkhong/ip.git to complete... -Sep 01, 2023 4:10:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cbj252/ip.git to complete... -Sep 01, 2023 4:10:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SimWPEric/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SimWPEric/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SimWPEric/ip.git (master) completed! -Sep 01, 2023 4:10:36 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lerxuann/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lerxuann/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lerxuann/ip.git (master) completed! +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepos INFO: [203/480] Analyzing https://github.com/HugeNoob/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wujy28/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HugeNoob/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HugeNoob/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wujy28/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wujy28/ip.git (master) completed! -Sep 01, 2023 4:10:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [204/480] Analyzing https://github.com/lerxuann/ip.git (master)... -Sep 01, 2023 4:10:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lerxuann/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lerxuann/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mamayuan/ip.git completed! -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AlfredBeNoel/ip.git... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AlfredBeNoel/ip.git to complete... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ong-wei-hong/ip.git completed! -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanboonkhong/ip.git completed! -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cbj252/ip.git completed! -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/keaganpzh/ip.git... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ElginTZM/ip.git... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LimJH2002/ip.git... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ElginTZM/ip.git to complete... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LimJH2002/ip.git to complete... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/keaganpzh/ip.git to complete... -Sep 01, 2023 4:10:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SimWPEric/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SimWPEric/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SimWPEric/ip.git (master) completed! +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [204/480] Analyzing https://github.com/wujy28/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wujy28/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wujy28/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HugeNoob/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lerxuann/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lerxuann/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/HugeNoob/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/HugeNoob/ip.git (master) completed! -Sep 01, 2023 4:10:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lerxuann/ip.git (master) completed! -Sep 01, 2023 4:10:37 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepos INFO: [205/480] Analyzing https://github.com/maj0-0/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [206/480] Analyzing https://github.com/Weiennn/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/maj0-0/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/maj0-0/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wujy28/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wujy28/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wujy28/ip.git (master) completed! +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [206/480] Analyzing https://github.com/Weiennn/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Weiennn/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Weiennn/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AlfredBeNoel/ip.git completed! -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cmHuang777/ip.git... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cmHuang777/ip.git to complete... -Sep 01, 2023 4:10:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/maj0-0/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/maj0-0/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/maj0-0/ip.git (master) completed! -Sep 01, 2023 4:10:37 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepos INFO: [207/480] Analyzing https://github.com/qyaner/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/keaganpzh/ip.git completed! -Sep 01, 2023 4:10:37 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/qyaner/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/qyaner/ip.git (master)... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ElginTZM/ip.git completed! -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/WeeeHung/ip.git... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LimJH2002/ip.git completed! -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/WeeeHung/ip.git to complete... -Sep 01, 2023 4:10:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xxiaoweii/ip.git... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rayyan35p/ip.git... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rayyan35p/ip.git to complete... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xxiaoweii/ip.git to complete... -Sep 01, 2023 4:10:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Weiennn/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Weiennn/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Weiennn/ip.git (master) completed! -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [208/480] Analyzing https://github.com/ruiyangzh/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ruiyangzh/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ruiyangzh/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/qyaner/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cmHuang777/ip.git completed! -Sep 01, 2023 4:10:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/qyaner/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dhruvir29/ip.git... -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/qyaner/ip.git (master) completed! -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dhruvir29/ip.git to complete... -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [208/480] Analyzing https://github.com/ruiyangzh/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ruiyangzh/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ruiyangzh/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Weiennn/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Weiennn/ip.git (master)... +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Weiennn/ip.git (master) completed! +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator analyzeRepos INFO: [209/480] Analyzing https://github.com/Bombbird2001/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Bombbird2001/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Bombbird2001/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ruiyangzh/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WeeeHung/ip.git completed! -Sep 01, 2023 4:10:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ruiyangzh/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LinWanLeii/ip.git... -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ruiyangzh/ip.git (master) completed! -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepos INFO: [210/480] Analyzing https://github.com/hyc17003/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LinWanLeii/ip.git to complete... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rayyan35p/ip.git completed! -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/hyc17003/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/hyc17003/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Song-Mengfei/ip.git... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xxiaoweii/ip.git completed! -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Song-Mengfei/ip.git to complete... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jinyuan0425/ip.git... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jinyuan0425/ip.git to complete... -Sep 01, 2023 4:10:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Bombbird2001/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Bombbird2001/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Bombbird2001/ip.git (master) completed! +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [211/480] Analyzing https://github.com/andytoh1/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/hyc17003/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/hyc17003/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/hyc17003/ip.git (master) completed! -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [211/480] Analyzing https://github.com/andytoh1/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/andytoh1/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/andytoh1/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dhruvir29/ip.git completed! -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tiif/ip.git... -Sep 01, 2023 4:10:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tiif/ip.git to complete... -Sep 01, 2023 4:10:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/hyc17003/ip.git (master) completed! +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [212/480] Analyzing https://github.com/adammangzijun/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/adammangzijun/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/adammangzijun/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/andytoh1/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Bombbird2001/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/andytoh1/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/andytoh1/ip.git (master) completed! -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [212/480] Analyzing https://github.com/Originalidk/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Bombbird2001/ip.git (master)... -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Bombbird2001/ip.git (master) completed! -Sep 01, 2023 4:10:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [213/480] Analyzing https://github.com/adammangzijun/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Originalidk/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Originalidk/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/adammangzijun/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/adammangzijun/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LinWanLeii/ip.git completed! -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nicholascher/ip.git... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nicholascher/ip.git to complete... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Song-Mengfei/ip.git completed! -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jinyuan0425/ip.git completed! -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/hcs1203/ip.git... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/hcs1203/ip.git to complete... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/papataco14/ip.git... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/papataco14/ip.git to complete... -Sep 01, 2023 4:10:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [213/480] Analyzing https://github.com/InfiBeyond/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/InfiBeyond/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/InfiBeyond/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/adammangzijun/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/adammangzijun/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/adammangzijun/ip.git (master) completed! -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepos INFO: [214/480] Analyzing https://github.com/quzhetao01/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/quzhetao01/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/quzhetao01/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Originalidk/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Originalidk/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Originalidk/ip.git (master) completed! -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [215/480] Analyzing https://github.com/InfiBeyond/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/InfiBeyond/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/InfiBeyond/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tiif/ip.git completed! -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KamJiaYue/ip.git... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KamJiaYue/ip.git to complete... -Sep 01, 2023 4:10:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/InfiBeyond/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/InfiBeyond/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/InfiBeyond/ip.git (master) completed! -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [216/480] Analyzing https://github.com/JasonLCY-Temp/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicholascher/ip.git completed! -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/NereusWB922/ip.git... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/NereusWB922/ip.git to complete... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/hcs1203/ip.git completed! -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/PohSayKeong/ip.git... -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JasonLCY-Temp/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JasonLCY-Temp/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PohSayKeong/ip.git to complete... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/papataco14/ip.git completed! -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ivyy-poison/ip.git... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ivyy-poison/ip.git to complete... -Sep 01, 2023 4:10:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [215/480] Analyzing https://github.com/Originalidk/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Originalidk/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Originalidk/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/quzhetao01/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/quzhetao01/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/quzhetao01/ip.git (master) completed! -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [217/480] Analyzing https://github.com/Bearypop/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JasonLCY-Temp/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JasonLCY-Temp/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [216/480] Analyzing https://github.com/Bearypop/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Originalidk/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Bearypop/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Bearypop/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JasonLCY-Temp/ip.git (master) completed! -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [218/480] Analyzing https://github.com/sp4ce-cowboy/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KamJiaYue/ip.git completed! -Sep 01, 2023 4:10:39 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Originalidk/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Originalidk/ip.git (master) completed! +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [217/480] Analyzing https://github.com/sp4ce-cowboy/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sp4ce-cowboy/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sp4ce-cowboy/ip.git (master)... -Sep 01, 2023 4:10:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jacobcuison/ip.git... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jacobcuison/ip.git to complete... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/PohSayKeong/ip.git completed! -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ji-just-ji/ip.git... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NereusWB922/ip.git completed! -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ivyy-poison/ip.git completed! -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ji-just-ji/ip.git to complete... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kohkaijie/ip.git... -Sep 01, 2023 4:10:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sp4ce-cowboy/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rocketninja7/ip.git... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kohkaijie/ip.git to complete... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rocketninja7/ip.git to complete... -Sep 01, 2023 4:10:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sp4ce-cowboy/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sp4ce-cowboy/ip.git (master) completed! -Sep 01, 2023 4:10:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [219/480] Analyzing https://github.com/wjayee/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wjayee/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wjayee/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [218/480] Analyzing https://github.com/JasonLCY-Temp/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Bearypop/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JasonLCY-Temp/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JasonLCY-Temp/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Bearypop/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Bearypop/ip.git (master) completed! -Sep 01, 2023 4:10:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [220/480] Analyzing https://github.com/jamesebond/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jamesebond/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jamesebond/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jacobcuison/ip.git completed! -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zekone/ip.git... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zekone/ip.git to complete... -Sep 01, 2023 4:10:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jamesebond/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jamesebond/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jamesebond/ip.git (master) completed! -Sep 01, 2023 4:10:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [221/480] Analyzing https://github.com/vivienherq/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [219/480] Analyzing https://github.com/wjayee/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wjayee/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wjayee/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JasonLCY-Temp/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JasonLCY-Temp/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JasonLCY-Temp/ip.git (master) completed! +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [220/480] Analyzing https://github.com/vivienherq/ip.git (master)... +Sep 01, 2023 1:06:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/vivienherq/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/vivienherq/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wjayee/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wjayee/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wjayee/ip.git (master) completed! -Sep 01, 2023 4:10:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [222/480] Analyzing https://github.com/jonyeokj/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kohkaijie/ip.git completed! -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/markgcera/ip.git... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/markgcera/ip.git to complete... -Sep 01, 2023 4:10:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jonyeokj/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jonyeokj/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rocketninja7/ip.git completed! -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/PearlynnT/ip.git... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PearlynnT/ip.git to complete... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ji-just-ji/ip.git completed! -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/StevenLiudw/ip.git... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/StevenLiudw/ip.git to complete... -Sep 01, 2023 4:10:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/vivienherq/ip.git (master)... -Sep 01, 2023 4:10:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zekone/ip.git completed! -Sep 01, 2023 4:10:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/vivienherq/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/vivienherq/ip.git (master) completed! -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [223/480] Analyzing https://github.com/victorlaiyeeteng/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/TeeRenJing/ip.git... -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TeeRenJing/ip.git to complete... -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/victorlaiyeeteng/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/victorlaiyeeteng/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [221/480] Analyzing https://github.com/jonyeokj/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wjayee/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jonyeokj/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jonyeokj/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wjayee/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wjayee/ip.git (master) completed! +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [222/480] Analyzing https://github.com/jamesebond/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jamesebond/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jamesebond/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jonyeokj/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jamesebond/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jonyeokj/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jonyeokj/ip.git (master) completed! -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [224/480] Analyzing https://github.com/yongning0310/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yongning0310/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yongning0310/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [223/480] Analyzing https://github.com/victorlaiyeeteng/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jamesebond/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jamesebond/ip.git (master) completed! +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [224/480] Analyzing https://github.com/lyuanww/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/victorlaiyeeteng/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/victorlaiyeeteng/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lyuanww/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lyuanww/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/victorlaiyeeteng/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/victorlaiyeeteng/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lyuanww/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/victorlaiyeeteng/ip.git (master) completed! -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [225/480] Analyzing https://github.com/lyuanww/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lyuanww/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lyuanww/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/markgcera/ip.git completed! -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/mounilsankar/ip.git... -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/PearlynnT/ip.git completed! -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/mounilsankar/ip.git to complete... -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/StevenLiudw/ip.git completed! -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TeeRenJing/ip.git completed! -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dloh2236/ip.git... -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zannloo/ip.git... -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dloh2236/ip.git to complete... -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/junnengsoo/ip.git... -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zannloo/ip.git to complete... -Sep 01, 2023 4:10:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/junnengsoo/ip.git to complete... -Sep 01, 2023 4:10:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yongning0310/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yongning0310/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yongning0310/ip.git (master) completed! -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [225/480] Analyzing https://github.com/yongning0310/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lyuanww/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lyuanww/ip.git (master) completed! +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yongning0310/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yongning0310/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepos INFO: [226/480] Analyzing https://github.com/Cloud7050/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Cloud7050/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Cloud7050/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lyuanww/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lyuanww/ip.git (master)... -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lyuanww/ip.git (master) completed! -Sep 01, 2023 4:10:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [227/480] Analyzing https://github.com/LoMaply/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LoMaply/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LoMaply/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Cloud7050/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Cloud7050/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Cloud7050/ip.git (master) completed! -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [227/480] Analyzing https://github.com/LoMaply/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LoMaply/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LoMaply/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yongning0310/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yongning0310/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yongning0310/ip.git (master) completed! +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LoMaply/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepos INFO: [228/480] Analyzing https://github.com/tllshan/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LoMaply/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tllshan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tllshan/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zannloo/ip.git completed! -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mounilsankar/ip.git completed! -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/freshcabbage123/ip.git... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dloh2236/ip.git completed! -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Kokseng1/ip.git... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/junnengsoo/ip.git completed! -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/freshcabbage123/ip.git to complete... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/itsNatTan/ip.git... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Kokseng1/ip.git to complete... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tjingsheng/ip.git... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tjingsheng/ip.git to complete... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/itsNatTan/ip.git to complete... -Sep 01, 2023 4:10:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tllshan/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LoMaply/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tllshan/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tllshan/ip.git (master) completed! -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [229/480] Analyzing https://github.com/HollaG/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LoMaply/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LoMaply/ip.git (master) completed! -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [230/480] Analyzing https://github.com/Gavino3o/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/HollaG/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/HollaG/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [229/480] Analyzing https://github.com/Gavino3o/ip.git (master)... +Sep 01, 2023 1:06:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Gavino3o/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Gavino3o/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/HollaG/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/HollaG/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/HollaG/ip.git (master) completed! -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [231/480] Analyzing https://github.com/cheeggered/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kokseng1/ip.git completed! -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/freshcabbage123/ip.git completed! -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tjingsheng/ip.git completed! -Sep 01, 2023 4:10:42 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tllshan/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tllshan/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tllshan/ip.git (master) completed! +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [230/480] Analyzing https://github.com/cheeggered/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cheeggered/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cheeggered/ip.git (master)... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ZD292/ip.git... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/itsNatTan/ip.git completed! -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alientian/ip.git... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ZD292/ip.git to complete... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/frrrrry/ip.git... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/frrrrry/ip.git to complete... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/alientian/ip.git to complete... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wanghejin/ip.git... -Sep 01, 2023 4:10:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wanghejin/ip.git to complete... -Sep 01, 2023 4:10:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Gavino3o/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Gavino3o/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Gavino3o/ip.git (master) completed! +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [231/480] Analyzing https://github.com/HollaG/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/HollaG/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/HollaG/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cheeggered/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cheeggered/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cheeggered/ip.git (master) completed! -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepos INFO: [232/480] Analyzing https://github.com/xenosf/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xenosf/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xenosf/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Gavino3o/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Gavino3o/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Gavino3o/ip.git (master) completed! -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/HollaG/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/HollaG/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/HollaG/ip.git (master) completed! +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepos INFO: [233/480] Analyzing https://github.com/TehOPanas/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TehOPanas/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TehOPanas/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/xenosf/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ZD292/ip.git completed! -Sep 01, 2023 4:10:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/MagnificentCreature/ip.git... -Sep 01, 2023 4:10:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/MagnificentCreature/ip.git to complete... -Sep 01, 2023 4:10:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/xenosf/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/xenosf/ip.git (master) completed! -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepos INFO: [234/480] Analyzing https://github.com/neyapraveen/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/neyapraveen/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/neyapraveen/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alientian/ip.git completed! -Sep 01, 2023 4:10:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/frrrrry/ip.git completed! -Sep 01, 2023 4:10:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wanghejin/ip.git completed! -Sep 01, 2023 4:10:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SungMatt/ip.git... -Sep 01, 2023 4:10:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/andrefoo/ip.git... -Sep 01, 2023 4:10:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tohpinren/ip.git... -Sep 01, 2023 4:10:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/andrefoo/ip.git to complete... -Sep 01, 2023 4:10:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SungMatt/ip.git to complete... -Sep 01, 2023 4:10:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tohpinren/ip.git to complete... -Sep 01, 2023 4:10:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/neyapraveen/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TehOPanas/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/neyapraveen/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/neyapraveen/ip.git (master) completed! -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepos INFO: [235/480] Analyzing https://github.com/richiehx/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TehOPanas/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TehOPanas/ip.git (master) completed! -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [236/480] Analyzing https://github.com/AlyssaPng/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/richiehx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/richiehx/ip.git (master)... -Sep 01, 2023 4:10:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AlyssaPng/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AlyssaPng/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/MagnificentCreature/ip.git completed! -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/XihuaZ/ip.git... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/XihuaZ/ip.git to complete... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/andrefoo/ip.git completed! -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xavierpok/ip.git... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SungMatt/ip.git completed! -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tohpinren/ip.git completed! -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xavierpok/ip.git to complete... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bkjwjason/ip.git... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Choonyan02/ip.git... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Choonyan02/ip.git to complete... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bkjwjason/ip.git to complete... -Sep 01, 2023 4:10:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TehOPanas/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TehOPanas/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TehOPanas/ip.git (master) completed! +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [236/480] Analyzing https://github.com/seantehds/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/seantehds/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/seantehds/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/richiehx/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/richiehx/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/richiehx/ip.git (master) completed! -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepos INFO: [237/480] Analyzing https://github.com/leezhengjing/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AlyssaPng/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/leezhengjing/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/leezhengjing/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AlyssaPng/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AlyssaPng/ip.git (master) completed! -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [238/480] Analyzing https://github.com/seantehds/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/seantehds/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/seantehds/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/XihuaZ/ip.git completed! -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/aarontxz/ip.git... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/aarontxz/ip.git to complete... -Sep 01, 2023 4:10:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/seantehds/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/seantehds/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/seantehds/ip.git (master) completed! +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [238/480] Analyzing https://github.com/AlyssaPng/ip.git (master)... +Sep 01, 2023 1:06:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AlyssaPng/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AlyssaPng/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/leezhengjing/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/leezhengjing/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/leezhengjing/ip.git (master) completed! -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepos INFO: [239/480] Analyzing https://github.com/ceilingFan456/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ceilingFan456/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ceilingFan456/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Choonyan02/ip.git completed! -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xavierpok/ip.git completed! -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jianyangg/ip.git... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bkjwjason/ip.git completed! -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jianyangg/ip.git to complete... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tayian/ip.git... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wnchan/ip.git... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tayian/ip.git to complete... -Sep 01, 2023 4:10:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wnchan/ip.git to complete... -Sep 01, 2023 4:10:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/seantehds/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ceilingFan456/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ceilingFan456/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ceilingFan456/ip.git (master) completed! -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AlyssaPng/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AlyssaPng/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AlyssaPng/ip.git (master) completed! +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepos INFO: [240/480] Analyzing https://github.com/lihongguang00/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/seantehds/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/seantehds/ip.git (master) completed! -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [241/480] Analyzing https://github.com/songfangyl/ip.git (master)... -Sep 01, 2023 4:10:44 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ceilingFan456/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lihongguang00/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ceilingFan456/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lihongguang00/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/songfangyl/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/songfangyl/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aarontxz/ip.git completed! -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Jweewee/ip.git... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jweewee/ip.git to complete... -Sep 01, 2023 4:10:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ceilingFan456/ip.git (master) completed! +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [241/480] Analyzing https://github.com/Singa-pirate/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Singa-pirate/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Singa-pirate/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lihongguang00/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lihongguang00/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lihongguang00/ip.git (master) completed! -Sep 01, 2023 4:10:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [242/480] Analyzing https://github.com/Singa-pirate/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Singa-pirate/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Singa-pirate/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tayian/ip.git completed! -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cyaoxuan/ip.git... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cyaoxuan/ip.git to complete... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wnchan/ip.git completed! -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jianyangg/ip.git completed! -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/anthonytamzil/ip.git... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/CelestineTan03/ip.git... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/CelestineTan03/ip.git to complete... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/anthonytamzil/ip.git to complete... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jweewee/ip.git completed! -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/saltedfishxx/ip.git... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/saltedfishxx/ip.git to complete... -Sep 01, 2023 4:10:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/songfangyl/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/songfangyl/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/songfangyl/ip.git (master) completed! -Sep 01, 2023 4:10:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [243/480] Analyzing https://github.com/vansh284/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/vansh284/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/vansh284/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [242/480] Analyzing https://github.com/songfangyl/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/songfangyl/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/songfangyl/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Singa-pirate/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Singa-pirate/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Singa-pirate/ip.git (master) completed! -Sep 01, 2023 4:10:45 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [243/480] Analyzing https://github.com/vansh284/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/vansh284/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/vansh284/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/songfangyl/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/songfangyl/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/songfangyl/ip.git (master) completed! +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepos INFO: [244/480] Analyzing https://github.com/YeoBohShin/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cyaoxuan/ip.git completed! -Sep 01, 2023 4:10:45 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/YeoBohShin/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/YeoBohShin/ip.git (master)... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/CelestineTan03/ip.git completed! -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/euchangxian/ip.git... -Sep 01, 2023 4:10:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AlagappanRa/ip.git... -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AlagappanRa/ip.git to complete... -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/anthonytamzil/ip.git completed! -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/euchangxian/ip.git to complete... -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Ken-Lai/ip.git... -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Ken-Lai/ip.git to complete... -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/saltedfishxx/ip.git completed! -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/felibunnyy/ip.git... -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/felibunnyy/ip.git to complete... -Sep 01, 2023 4:10:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/vansh284/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/vansh284/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/vansh284/ip.git (master) completed! +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/YeoBohShin/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [245/480] Analyzing https://github.com/lunaroddity/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/YeoBohShin/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/YeoBohShin/ip.git (master) completed! -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [245/480] Analyzing https://github.com/lunaroddity/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lunaroddity/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lunaroddity/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/vansh284/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/vansh284/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/vansh284/ip.git (master) completed! -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepos INFO: [246/480] Analyzing https://github.com/andrechuakj/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/andrechuakj/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/andrechuakj/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lunaroddity/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lunaroddity/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lunaroddity/ip.git (master) completed! -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [247/480] Analyzing https://github.com/shuenj/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/euchangxian/ip.git completed! -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/itssisi/ip.git... -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AlagappanRa/ip.git completed! -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/itssisi/ip.git to complete... -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shuenj/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shuenj/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jamz903/ip.git... -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jamz903/ip.git to complete... -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/felibunnyy/ip.git completed! -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Kevin-Liusx/ip.git... -Sep 01, 2023 4:10:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Kevin-Liusx/ip.git to complete... -Sep 01, 2023 4:10:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/andrechuakj/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lunaroddity/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/andrechuakj/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/andrechuakj/ip.git (master) completed! -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [247/480] Analyzing https://github.com/shuenj/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lunaroddity/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lunaroddity/ip.git (master) completed! +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepos INFO: [248/480] Analyzing https://github.com/WeeMingQing/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WeeMingQing/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WeeMingQing/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shuenj/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shuenj/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/WeeMingQing/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/WeeMingQing/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/WeeMingQing/ip.git (master) completed! -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [249/480] Analyzing https://github.com/aliciamichellew/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aliciamichellew/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aliciamichellew/ip.git (master)... -Sep 01, 2023 4:10:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [249/480] Analyzing https://github.com/antonTan96/ip.git (master)... +Sep 01, 2023 1:06:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/antonTan96/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/antonTan96/ip.git (master)... +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shuenj/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/antonTan96/ip.git (master)... +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shuenj/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shuenj/ip.git (master) completed! -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [250/480] Analyzing https://github.com/samuelmui8/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/itssisi/ip.git completed! -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/antonTan96/ip.git (master)... +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [250/480] Analyzing https://github.com/aliciamichellew/ip.git (master)... +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/antonTan96/ip.git (master) completed! +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [251/480] Analyzing https://github.com/samuelmui8/ip.git (master)... +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aliciamichellew/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aliciamichellew/ip.git (master)... +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/samuelmui8/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/samuelmui8/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Propene-Dan/ip.git... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jamz903/ip.git completed! -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Propene-Dan/ip.git to complete... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kevin-Liusx/ip.git completed! -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChuanXinNg/ip.git... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChuanXinNg/ip.git to complete... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kenvynKwek/ip.git... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kenvynKwek/ip.git to complete... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -WARNING: Exception met while trying to clone the repo "Propene-Dan/ip[master]", will skip this repo. -reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/Propene-Dan/ip.git' 'repos/Propene-Dan_ip/ip_bare' on path . : -Cloning into bare repository 'repos/Propene-Dan_ip/ip_bare'... -fatal: could not read Username for 'https://github.com': No such device or address - - at reposense.system.CommandRunnerProcess.waitForProcess(CommandRunnerProcess.java:46) - at reposense.report.RepoCloner.waitForCloneProcess(RepoCloner.java:323) - at reposense.report.RepoCloner.getClonedRepoLocation(RepoCloner.java:123) - at reposense.report.ReportGenerator.cloneRepo(ReportGenerator.java:263) - at reposense.report.ReportGenerator.lambda$cloneAndAnalyzeRepos$0(ReportGenerator.java:208) - at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) - at java.base/java.lang.Thread.run(Thread.java:829) - -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Ruizhi2001/ip.git... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Ruizhi2001/ip.git to complete... -Sep 01, 2023 4:10:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/aliciamichellew/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/samuelmui8/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/aliciamichellew/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/samuelmui8/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/aliciamichellew/ip.git (master) completed! -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/samuelmui8/ip.git (master) completed! -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [251/480] Analyzing https://github.com/antonTan96/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepos INFO: [252/480] Analyzing https://github.com/owenyeo/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/owenyeo/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/owenyeo/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/antonTan96/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/antonTan96/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ken-Lai/ip.git completed! -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/prawnzyy/ip.git... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChuanXinNg/ip.git completed! -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/prawnzyy/ip.git to complete... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/saraozn/ip.git... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/saraozn/ip.git to complete... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kenvynKwek/ip.git completed! -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nicholastng010601/ip.git... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nicholastng010601/ip.git to complete... -Sep 01, 2023 4:10:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/aliciamichellew/ip.git (master)... +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/owenyeo/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/aliciamichellew/ip.git (master)... +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/aliciamichellew/ip.git (master) completed! +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [253/480] Analyzing https://github.com/gongg21/ip.git (master)... +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/owenyeo/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/owenyeo/ip.git (master) completed! -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [253/480] Analyzing https://github.com/gongg21/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/antonTan96/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ruizhi2001/ip.git completed! -Sep 01, 2023 4:10:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/antonTan96/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/antonTan96/ip.git (master) completed! -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepos INFO: [254/480] Analyzing https://github.com/nabonitasen/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DistractedCat/ip.git... -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/gongg21/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/gongg21/ip.git (master)... -Sep 01, 2023 4:10:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DistractedCat/ip.git to complete... -Sep 01, 2023 4:10:47 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nabonitasen/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nabonitasen/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/gongg21/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/gongg21/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/gongg21/ip.git (master) completed! -Sep 01, 2023 4:10:48 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepos INFO: [255/480] Analyzing https://github.com/erohsikivar/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nabonitasen/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/erohsikivar/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/erohsikivar/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nabonitasen/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nabonitasen/ip.git (master) completed! -Sep 01, 2023 4:10:48 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepos INFO: [256/480] Analyzing https://github.com/pzl111/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/pzl111/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/pzl111/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/prawnzyy/ip.git completed! -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yezkez10/ip.git... -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yezkez10/ip.git to complete... -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/saraozn/ip.git completed! -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/revdrag/ip.git... -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/revdrag/ip.git to complete... -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicholastng010601/ip.git completed! -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alvinlim277/ip.git... -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DistractedCat/ip.git completed! -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/alvinlim277/ip.git to complete... -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JasonRay168/ip.git... -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JasonRay168/ip.git to complete... -Sep 01, 2023 4:10:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/erohsikivar/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/erohsikivar/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/erohsikivar/ip.git (master) completed! -Sep 01, 2023 4:10:48 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepos INFO: [257/480] Analyzing https://github.com/teozern1/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/teozern1/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/teozern1/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/pzl111/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/teozern1/ip.git (master)... +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/pzl111/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/pzl111/ip.git (master) completed! -Sep 01, 2023 4:10:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [258/480] Analyzing https://github.com/Elijah5399/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Elijah5399/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Elijah5399/ip.git (master)... -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yezkez10/ip.git completed! -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/billieboy7/ip.git... -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/billieboy7/ip.git to complete... -Sep 01, 2023 4:10:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/revdrag/ip.git completed! -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alvinlim277/ip.git completed! -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jannnice/ip.git... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jannnice/ip.git to complete... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/evanyan13/ip.git... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JasonRay168/ip.git completed! -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/evanyan13/ip.git to complete... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/samuelim01/ip.git... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/samuelim01/ip.git to complete... -Sep 01, 2023 4:10:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/teozern1/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [258/480] Analyzing https://github.com/nicleongyj/ip.git (master)... +Sep 01, 2023 1:06:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/teozern1/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/teozern1/ip.git (master) completed! -Sep 01, 2023 4:10:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [259/480] Analyzing https://github.com/nicleongyj/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [259/480] Analyzing https://github.com/Elijah5399/ip.git (master)... +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nicleongyj/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nicleongyj/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Elijah5399/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Elijah5399/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Elijah5399/ip.git (master) completed! -Sep 01, 2023 4:10:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [260/480] Analyzing https://github.com/WinSheng1/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/WinSheng1/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/WinSheng1/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/billieboy7/ip.git completed! -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dinde2004/ip.git... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dinde2004/ip.git to complete... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jannnice/ip.git completed! -Sep 01, 2023 4:10:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:47 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Elijah5399/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Elijah5399/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nicleongyj/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/seanpzk/ip.git... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/evanyan13/ip.git completed! -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/seanpzk/ip.git to complete... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/samuelim01/ip.git completed! -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KumChaiYin/ip.git... -Sep 01, 2023 4:10:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/WinSheng1/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KumChaiYin/ip.git to complete... -Sep 01, 2023 4:10:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nicleongyj/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nicleongyj/ip.git (master) completed! -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lsyurea/ip.git... -Sep 01, 2023 4:10:49 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [260/480] Analyzing https://github.com/WinSheng1/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Elijah5399/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/WinSheng1/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/WinSheng1/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Elijah5399/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Elijah5399/ip.git (master) completed! +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepos INFO: [261/480] Analyzing https://github.com/ryamgoh/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lsyurea/ip.git to complete... -Sep 01, 2023 4:10:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WinSheng1/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WinSheng1/ip.git (master) completed! -Sep 01, 2023 4:10:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [262/480] Analyzing https://github.com/yucongkoo/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ryamgoh/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ryamgoh/ip.git (master)... -Sep 01, 2023 4:10:49 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/WinSheng1/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WinSheng1/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WinSheng1/ip.git (master) completed! +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [262/480] Analyzing https://github.com/Chen-Kuei/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Chen-Kuei/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Chen-Kuei/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Chen-Kuei/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Chen-Kuei/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Chen-Kuei/ip.git (master) completed! +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [263/480] Analyzing https://github.com/yucongkoo/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yucongkoo/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yucongkoo/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dinde2004/ip.git completed! -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Sasmik23/ip.git... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Sasmik23/ip.git to complete... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KumChaiYin/ip.git completed! -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/seanpzk/ip.git completed! -Sep 01, 2023 4:10:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ryamgoh/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/geraldngjx/ip.git... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lululwtv/ip.git... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/geraldngjx/ip.git to complete... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lsyurea/ip.git completed! -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/garylow2001/ip.git... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lululwtv/ip.git to complete... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/garylow2001/ip.git to complete... -Sep 01, 2023 4:10:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ryamgoh/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ryamgoh/ip.git (master) completed! -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [263/480] Analyzing https://github.com/Chen-Kuei/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Chen-Kuei/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Chen-Kuei/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yucongkoo/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Chen-Kuei/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yucongkoo/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yucongkoo/ip.git (master) completed! -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepos INFO: [264/480] Analyzing https://github.com/conradsoon/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Chen-Kuei/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Chen-Kuei/ip.git (master) completed! -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [265/480] Analyzing https://github.com/GSgiansen/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/conradsoon/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/conradsoon/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/GSgiansen/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/GSgiansen/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/conradsoon/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/conradsoon/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/conradsoon/ip.git (master) completed! -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yucongkoo/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [265/480] Analyzing https://github.com/GSgiansen/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yucongkoo/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yucongkoo/ip.git (master) completed! +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepos INFO: [266/480] Analyzing https://github.com/marioalvaro/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/GSgiansen/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/GSgiansen/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/marioalvaro/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/marioalvaro/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Sasmik23/ip.git completed! -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/leontan2/ip.git... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/leontan2/ip.git to complete... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lululwtv/ip.git completed! -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/geraldngjx/ip.git completed! -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/garylow2001/ip.git completed! -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wamps-jp/ip.git... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dickongwd/ip.git... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jacksonyuan256/ip.git... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jacksonyuan256/ip.git to complete... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dickongwd/ip.git to complete... -Sep 01, 2023 4:10:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wamps-jp/ip.git to complete... -Sep 01, 2023 4:10:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GSgiansen/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/GSgiansen/ip.git (master)... -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/GSgiansen/ip.git (master) completed! -Sep 01, 2023 4:10:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [267/480] Analyzing https://github.com/et-irl/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/et-irl/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/et-irl/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/marioalvaro/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/marioalvaro/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GSgiansen/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/marioalvaro/ip.git (master) completed! -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [268/480] Analyzing https://github.com/Seonlo99/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [267/480] Analyzing https://github.com/Seonlo99/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/GSgiansen/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/GSgiansen/ip.git (master) completed! +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [268/480] Analyzing https://github.com/joel-foo/ip.git (master)... +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Seonlo99/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Seonlo99/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/et-irl/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/leontan2/ip.git completed! -Sep 01, 2023 4:10:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/et-irl/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/suryanshkushwaha/ip.git... -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/et-irl/ip.git (master) completed! -Sep 01, 2023 4:10:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wamps-jp/ip.git completed! -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [269/480] Analyzing https://github.com/joel-foo/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wr1159/ip.git... -Sep 01, 2023 4:10:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/suryanshkushwaha/ip.git to complete... -Sep 01, 2023 4:10:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wr1159/ip.git to complete... -Sep 01, 2023 4:10:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jacksonyuan256/ip.git completed! -Sep 01, 2023 4:10:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dickongwd/ip.git completed! -Sep 01, 2023 4:10:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Nauxe/ip.git... -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/joel-foo/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/joel-foo/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yyyaohhh/ip.git... -Sep 01, 2023 4:10:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Nauxe/ip.git to complete... -Sep 01, 2023 4:10:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yyyaohhh/ip.git to complete... -Sep 01, 2023 4:10:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Seonlo99/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Seonlo99/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Seonlo99/ip.git (master) completed! -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [270/480] Analyzing https://github.com/marcellaantania/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/marcellaantania/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/marcellaantania/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/marcellaantania/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/marcellaantania/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/marcellaantania/ip.git (master) completed! -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [271/480] Analyzing https://github.com/tim-pipi/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tim-pipi/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tim-pipi/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/joel-foo/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/joel-foo/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/joel-foo/ip.git (master) completed! -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [272/480] Analyzing https://github.com/brendanneojw/ip.git (master)... -Sep 01, 2023 4:10:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/brendanneojw/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/brendanneojw/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/suryanshkushwaha/ip.git completed! -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zhanyang01/ip.git... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zhanyang01/ip.git to complete... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wr1159/ip.git completed! -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Nauxe/ip.git completed! -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yyyaohhh/ip.git completed! -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/czhiruo/ip.git... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/victorpengmx/ip.git... -Sep 01, 2023 4:10:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [269/480] Analyzing https://github.com/et-irl/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/et-irl/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/et-irl/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/joel-foo/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/joel-foo/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/joel-foo/ip.git (master) completed! +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [270/480] Analyzing https://github.com/tim-pipi/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tim-pipi/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tim-pipi/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/et-irl/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/et-irl/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/et-irl/ip.git (master) completed! +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [271/480] Analyzing https://github.com/marcellaantania/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/marcellaantania/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/marcellaantania/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tim-pipi/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/czhiruo/ip.git to complete... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/longnguyentan/ip.git... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/longnguyentan/ip.git to complete... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/victorpengmx/ip.git to complete... -Sep 01, 2023 4:10:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tim-pipi/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tim-pipi/ip.git (master) completed! -Sep 01, 2023 4:10:52 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [272/480] Analyzing https://github.com/brendanneojw/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/brendanneojw/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/brendanneojw/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/marcellaantania/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/marcellaantania/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/marcellaantania/ip.git (master) completed! +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepos INFO: [273/480] Analyzing https://github.com/li-rongzhi/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/li-rongzhi/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/li-rongzhi/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/brendanneojw/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/brendanneojw/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/brendanneojw/ip.git (master) completed! -Sep 01, 2023 4:10:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [274/480] Analyzing https://github.com/seraphimstreets/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/seraphimstreets/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/seraphimstreets/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhanyang01/ip.git completed! -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Cikguseven/ip.git... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Cikguseven/ip.git to complete... -Sep 01, 2023 4:10:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/seraphimstreets/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/czhiruo/ip.git completed! -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/victorpengmx/ip.git completed! -Sep 01, 2023 4:10:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/seraphimstreets/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/seraphimstreets/ip.git (master) completed! -Sep 01, 2023 4:10:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [275/480] Analyzing https://github.com/KamiliArsyad/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/longnguyentan/ip.git completed! -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Eola-Z/ip.git... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jibtaf/ip.git... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lipwei1808/ip.git... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jibtaf/ip.git to complete... -Sep 01, 2023 4:10:52 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [274/480] Analyzing https://github.com/KamiliArsyad/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KamiliArsyad/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KamiliArsyad/ip.git (master)... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Eola-Z/ip.git to complete... -Sep 01, 2023 4:10:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lipwei1808/ip.git to complete... -Sep 01, 2023 4:10:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/li-rongzhi/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/li-rongzhi/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/li-rongzhi/ip.git (master) completed! -Sep 01, 2023 4:10:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [276/480] Analyzing https://github.com/lilozz2/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lilozz2/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lilozz2/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Cikguseven/ip.git completed! -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Mohammed-Faizzzz/ip.git... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Mohammed-Faizzzz/ip.git to complete... -Sep 01, 2023 4:10:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/KamiliArsyad/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/li-rongzhi/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/KamiliArsyad/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/KamiliArsyad/ip.git (master) completed! -Sep 01, 2023 4:10:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [277/480] Analyzing https://github.com/trgao/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [275/480] Analyzing https://github.com/seraphimstreets/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/seraphimstreets/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/seraphimstreets/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/li-rongzhi/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/li-rongzhi/ip.git (master) completed! +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [276/480] Analyzing https://github.com/trgao/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/trgao/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/trgao/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Eola-Z/ip.git completed! -Sep 01, 2023 4:10:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lilozz2/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dylkaw/ip.git... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dylkaw/ip.git to complete... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jibtaf/ip.git completed! -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lipwei1808/ip.git completed! -Sep 01, 2023 4:10:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lilozz2/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lilozz2/ip.git (master) completed! -Sep 01, 2023 4:10:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [278/480] Analyzing https://github.com/jedkohjk/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nikele2001/ip.git... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DeltonCheng/ip.git... -Sep 01, 2023 4:10:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jedkohjk/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jedkohjk/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nikele2001/ip.git to complete... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DeltonCheng/ip.git to complete... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Mohammed-Faizzzz/ip.git completed! -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChangruHenryQian/ip.git... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChangruHenryQian/ip.git to complete... -Sep 01, 2023 4:10:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/seraphimstreets/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/seraphimstreets/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/seraphimstreets/ip.git (master) completed! +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [277/480] Analyzing https://github.com/lilozz2/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lilozz2/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lilozz2/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/trgao/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/trgao/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/trgao/ip.git (master) completed! -Sep 01, 2023 4:10:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [279/480] Analyzing https://github.com/jean-cq/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lilozz2/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [278/480] Analyzing https://github.com/jean-cq/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lilozz2/ip.git (master)... +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lilozz2/ip.git (master) completed! +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jean-cq/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jean-cq/ip.git (master)... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dylkaw/ip.git completed! -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/craigtonlian/ip.git... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/craigtonlian/ip.git to complete... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nikele2001/ip.git completed! -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DeltonCheng/ip.git completed! -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ruo-x/ip.git... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ruo-x/ip.git to complete... -Sep 01, 2023 4:10:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/iantsaii/ip.git... -Sep 01, 2023 4:10:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [279/480] Analyzing https://github.com/jedkohjk/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jedkohjk/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jedkohjk/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jean-cq/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/iantsaii/ip.git to complete... -Sep 01, 2023 4:10:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jean-cq/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jean-cq/ip.git (master) completed! -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepos INFO: [280/480] Analyzing https://github.com/ryantzr1/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ryantzr1/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ryantzr1/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChangruHenryQian/ip.git completed! -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wjacobw/ip.git... -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wjacobw/ip.git to complete... -Sep 01, 2023 4:10:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jedkohjk/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jedkohjk/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jedkohjk/ip.git (master) completed! -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [281/480] Analyzing https://github.com/yytan25/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yytan25/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yytan25/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ryantzr1/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ryantzr1/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ryantzr1/ip.git (master) completed! -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [281/480] Analyzing https://github.com/maypfv/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/maypfv/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/maypfv/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jedkohjk/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jedkohjk/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jedkohjk/ip.git (master) completed! +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepos INFO: [282/480] Analyzing https://github.com/TohLiYuan/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TohLiYuan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TohLiYuan/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/craigtonlian/ip.git completed! -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruo-x/ip.git completed! -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/angkyakdifp/ip.git... -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/iantsaii/ip.git completed! -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/brein62/ip.git... -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nicrandomlee/ip.git... -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/angkyakdifp/ip.git to complete... -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nicrandomlee/ip.git to complete... -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wjacobw/ip.git completed! -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/brein62/ip.git to complete... -Sep 01, 2023 4:10:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yytan25/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Bryan-Goh/ip.git... -Sep 01, 2023 4:10:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Bryan-Goh/ip.git to complete... -Sep 01, 2023 4:10:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yytan25/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yytan25/ip.git (master) completed! -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [283/480] Analyzing https://github.com/maypfv/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/maypfv/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/maypfv/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TohLiYuan/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TohLiYuan/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TohLiYuan/ip.git (master) completed! -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [284/480] Analyzing https://github.com/JizhuoChen/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JizhuoChen/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JizhuoChen/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/maypfv/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/maypfv/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/maypfv/ip.git (master) completed! -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [285/480] Analyzing https://github.com/ChongWeiJie29/ip.git (master)... -Sep 01, 2023 4:10:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ChongWeiJie29/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ChongWeiJie29/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/angkyakdifp/ip.git completed! -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kiatkat/ip.git... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/brein62/ip.git completed! -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicrandomlee/ip.git completed! -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kiatkat/ip.git to complete... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/MadLamprey/ip.git... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Bryan-Goh/ip.git completed! -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xyT-T/ip.git... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xyT-T/ip.git to complete... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jiakai-17/ip.git... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/MadLamprey/ip.git to complete... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jiakai-17/ip.git to complete... -Sep 01, 2023 4:10:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [283/480] Analyzing https://github.com/JizhuoChen/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JizhuoChen/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JizhuoChen/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TohLiYuan/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TohLiYuan/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TohLiYuan/ip.git (master) completed! +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [284/480] Analyzing https://github.com/Goh-Li-Ting/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Goh-Li-Ting/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Goh-Li-Ting/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JizhuoChen/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JizhuoChen/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JizhuoChen/ip.git (master) completed! -Sep 01, 2023 4:10:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChongWeiJie29/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [286/480] Analyzing https://github.com/Goh-Li-Ting/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChongWeiJie29/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Goh-Li-Ting/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Goh-Li-Ting/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChongWeiJie29/ip.git (master) completed! -Sep 01, 2023 4:10:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [287/480] Analyzing https://github.com/kristayeo/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kristayeo/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kristayeo/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [285/480] Analyzing https://github.com/ChongWeiJie29/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ChongWeiJie29/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ChongWeiJie29/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Goh-Li-Ting/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Goh-Li-Ting/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Goh-Li-Ting/ip.git (master) completed! -Sep 01, 2023 4:10:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [288/480] Analyzing https://github.com/derekjxtan/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kristayeo/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [286/480] Analyzing https://github.com/kristayeo/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kristayeo/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kristayeo/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChongWeiJie29/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChongWeiJie29/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChongWeiJie29/ip.git (master) completed! +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [287/480] Analyzing https://github.com/derekjxtan/ip.git (master)... +Sep 01, 2023 1:06:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/derekjxtan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/derekjxtan/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kristayeo/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kristayeo/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kristayeo/ip.git (master) completed! -Sep 01, 2023 4:10:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [289/480] Analyzing https://github.com/shashahchk/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [288/480] Analyzing https://github.com/shashahchk/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/shashahchk/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/shashahchk/ip.git (master)... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kiatkat/ip.git completed! -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nreHieW/ip.git... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jiakai-17/ip.git completed! -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nreHieW/ip.git to complete... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xyT-T/ip.git completed! -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/MadLamprey/ip.git completed! -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nathanielcalimag/ip.git... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Saezenn/ip.git... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nathanielcalimag/ip.git to complete... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jellywaiyan/ip.git... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Saezenn/ip.git to complete... -Sep 01, 2023 4:10:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jellywaiyan/ip.git to complete... -Sep 01, 2023 4:10:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shashahchk/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shashahchk/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shashahchk/ip.git (master) completed! -Sep 01, 2023 4:10:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [290/480] Analyzing https://github.com/alyssaongyx/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [289/480] Analyzing https://github.com/yytan25/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/derekjxtan/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/alyssaongyx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/alyssaongyx/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yytan25/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yytan25/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/derekjxtan/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/derekjxtan/ip.git (master) completed! -Sep 01, 2023 4:10:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [291/480] Analyzing https://github.com/Chandan8186/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Chandan8186/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Chandan8186/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nreHieW/ip.git completed! -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/marquestye/ip.git... -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/marquestye/ip.git to complete... -Sep 01, 2023 4:10:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [290/480] Analyzing https://github.com/alyssaongyx/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/alyssaongyx/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/alyssaongyx/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alyssaongyx/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nathanielcalimag/ip.git completed! -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Saezenn/ip.git completed! -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Tang-Moyan/ip.git... -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jellywaiyan/ip.git completed! -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DonovanJJ/ip.git... -Sep 01, 2023 4:10:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alyssaongyx/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yytan25/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alyssaongyx/ip.git (master) completed! -Sep 01, 2023 4:10:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [292/480] Analyzing https://github.com/Kailash201/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Tang-Moyan/ip.git to complete... -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Sebtey/ip.git... -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Sebtey/ip.git to complete... -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DonovanJJ/ip.git to complete... -Sep 01, 2023 4:10:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Kailash201/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Kailash201/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [291/480] Analyzing https://github.com/Chandan8186/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yytan25/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Chandan8186/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Chandan8186/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yytan25/ip.git (master) completed! +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [292/480] Analyzing https://github.com/AndrewJanong/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AndrewJanong/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AndrewJanong/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Chandan8186/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AndrewJanong/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AndrewJanong/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AndrewJanong/ip.git (master) completed! +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [293/480] Analyzing https://github.com/Kailash201/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Chandan8186/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Chandan8186/ip.git (master) completed! -Sep 01, 2023 4:10:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [293/480] Analyzing https://github.com/AndrewJanong/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AndrewJanong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AndrewJanong/ip.git (master)... -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marquestye/ip.git completed! -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rionshocker/ip.git... -Sep 01, 2023 4:10:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rionshocker/ip.git to complete... -Sep 01, 2023 4:10:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Sebtey/ip.git completed! -Sep 01, 2023 4:10:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tyouwei/ip.git... -Sep 01, 2023 4:10:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DonovanJJ/ip.git completed! -Sep 01, 2023 4:10:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Blizzeracz/ip.git... -Sep 01, 2023 4:10:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tyouwei/ip.git to complete... -Sep 01, 2023 4:10:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Blizzeracz/ip.git to complete... -Sep 01, 2023 4:10:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kailash201/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Tang-Moyan/ip.git completed! -Sep 01, 2023 4:10:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kailash201/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kailash201/ip.git (master) completed! -Sep 01, 2023 4:10:57 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepos INFO: [294/480] Analyzing https://github.com/laurenlim2112/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Kailash201/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Kailash201/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/laurenlim2112/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/laurenlim2112/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AndrewJanong/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AndrewJanong/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AndrewJanong/ip.git (master) completed! -Sep 01, 2023 4:10:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [295/480] Analyzing https://github.com/lambraydon/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lambraydon/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lambraydon/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rionshocker/ip.git completed! -Sep 01, 2023 4:10:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kailash201/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/laurenlim2112/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kailash201/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/laurenlim2112/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kailash201/ip.git (master) completed! +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/laurenlim2112/ip.git (master) completed! -Sep 01, 2023 4:10:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lambraydon/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [295/480] Analyzing https://github.com/lambraydon/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator analyzeRepos INFO: [296/480] Analyzing https://github.com/sk2001git/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lambraydon/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lambraydon/ip.git (master)... +Sep 01, 2023 1:06:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sk2001git/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sk2001git/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lambraydon/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lambraydon/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lambraydon/ip.git (master) completed! -Sep 01, 2023 4:10:57 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepos INFO: [297/480] Analyzing https://github.com/chonguschonguschongus/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Blizzeracz/ip.git completed! -Sep 01, 2023 4:10:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sk2001git/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sk2001git/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tyouwei/ip.git completed! -Sep 01, 2023 4:10:57 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sk2001git/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chonguschonguschongus/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chonguschonguschongus/ip.git (master)... -Sep 01, 2023 4:10:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sk2001git/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sk2001git/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sk2001git/ip.git (master) completed! +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [298/480] Analyzing https://github.com/lshaoqin/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lshaoqin/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lshaoqin/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lshaoqin/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lshaoqin/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lshaoqin/ip.git (master) completed! +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [299/480] Analyzing https://github.com/WangCheng0116/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/WangCheng0116/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/WangCheng0116/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chonguschonguschongus/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sk2001git/ip.git (master) completed! -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [298/480] Analyzing https://github.com/peasantbird/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chonguschonguschongus/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chonguschonguschongus/ip.git (master) completed! -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [299/480] Analyzing https://github.com/lshaoqin/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [300/480] Analyzing https://github.com/peasantbird/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/peasantbird/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/peasantbird/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lshaoqin/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lshaoqin/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/peasantbird/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/peasantbird/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/peasantbird/ip.git (master) completed! -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [300/480] Analyzing https://github.com/teozhengyang/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lshaoqin/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [301/480] Analyzing https://github.com/teozhengyang/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/teozhengyang/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/teozhengyang/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lshaoqin/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lshaoqin/ip.git (master) completed! -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [301/480] Analyzing https://github.com/WangCheng0116/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/WangCheng0116/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/WangCheng0116/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/teozhengyang/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/teozhengyang/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/teozhengyang/ip.git (master) completed! -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/WangCheng0116/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WangCheng0116/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WangCheng0116/ip.git (master) completed! +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepos INFO: [302/480] Analyzing https://github.com/chewjh1234/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chewjh1234/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chewjh1234/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chewjh1234/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chewjh1234/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chewjh1234/ip.git (master) completed! -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/teozhengyang/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/teozhengyang/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/teozhengyang/ip.git (master) completed! +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepos INFO: [303/480] Analyzing https://github.com/elaineshijie/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/WangCheng0116/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chewjh1234/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/elaineshijie/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/elaineshijie/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WangCheng0116/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WangCheng0116/ip.git (master) completed! -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chewjh1234/ip.git (master)... +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chewjh1234/ip.git (master) completed! +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator analyzeRepos INFO: [304/480] Analyzing https://github.com/lynnlow175/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lynnlow175/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lynnlow175/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lynnlow175/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/elaineshijie/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lynnlow175/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lynnlow175/ip.git (master) completed! -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [305/480] Analyzing https://github.com/RSXIX/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [305/480] Analyzing https://github.com/lordidiot/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/elaineshijie/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/elaineshijie/ip.git (master) completed! -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepos INFO: [306/480] Analyzing https://github.com/chew01/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RSXIX/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RSXIX/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chew01/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chew01/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RSXIX/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RSXIX/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RSXIX/ip.git (master) completed! -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [307/480] Analyzing https://github.com/lordidiot/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lordidiot/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lordidiot/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chew01/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chew01/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lordidiot/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lordidiot/ip.git (master)... -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lordidiot/ip.git (master) completed! -Sep 01, 2023 4:10:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [308/480] Analyzing https://github.com/juliusgambe/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [307/480] Analyzing https://github.com/juliusgambe/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/juliusgambe/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/juliusgambe/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chew01/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chew01/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chew01/ip.git (master) completed! -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [309/480] Analyzing https://github.com/inezkok/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/inezkok/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/inezkok/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [308/480] Analyzing https://github.com/zhonghan721/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhonghan721/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhonghan721/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/juliusgambe/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/juliusgambe/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/juliusgambe/ip.git (master) completed! -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [309/480] Analyzing https://github.com/RSXIX/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RSXIX/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RSXIX/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RSXIX/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RSXIX/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RSXIX/ip.git (master) completed! +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepos INFO: [310/480] Analyzing https://github.com/WZWren/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhonghan721/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WZWren/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WZWren/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/inezkok/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/inezkok/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/inezkok/ip.git (master) completed! -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [311/480] Analyzing https://github.com/zhonghan721/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhonghan721/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhonghan721/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhonghan721/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhonghan721/ip.git (master) completed! +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [311/480] Analyzing https://github.com/inezkok/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/inezkok/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/inezkok/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/WZWren/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/WZWren/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/WZWren/ip.git (master) completed! -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepos INFO: [312/480] Analyzing https://github.com/wasjoe1/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wasjoe1/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wasjoe1/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wasjoe1/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/inezkok/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wasjoe1/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wasjoe1/ip.git (master) completed! -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepos INFO: [313/480] Analyzing https://github.com/jinyang628/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhonghan721/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/inezkok/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/inezkok/ip.git (master) completed! +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [314/480] Analyzing https://github.com/kokrui/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jinyang628/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jinyang628/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhonghan721/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhonghan721/ip.git (master) completed! -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [314/480] Analyzing https://github.com/kokrui/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kokrui/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kokrui/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kokrui/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kokrui/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kokrui/ip.git (master) completed! -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepos INFO: [315/480] Analyzing https://github.com/nananakx-x/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jinyang628/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nananakx-x/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nananakx-x/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jinyang628/ip.git (master)... +Sep 01, 2023 1:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jinyang628/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jinyang628/ip.git (master) completed! -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:53 PM reposense.report.ReportGenerator analyzeRepos INFO: [316/480] Analyzing https://github.com/ylyma/ip.git (master)... -Sep 01, 2023 4:10:59 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ylyma/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:10:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ylyma/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nananakx-x/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nananakx-x/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nananakx-x/ip.git (master) completed! -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepos INFO: [317/480] Analyzing https://github.com/AnnabelTing/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ylyma/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ylyma/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ylyma/ip.git (master) completed! -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AnnabelTing/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AnnabelTing/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [318/480] Analyzing https://github.com/timetraveller-123/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/timetraveller-123/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/timetraveller-123/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AnnabelTing/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AnnabelTing/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AnnabelTing/ip.git (master) completed! -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [318/480] Analyzing https://github.com/timetraveller-123/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ylyma/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/timetraveller-123/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/timetraveller-123/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ylyma/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ylyma/ip.git (master) completed! +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepos INFO: [319/480] Analyzing https://github.com/LicongHuang/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LicongHuang/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LicongHuang/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LicongHuang/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/timetraveller-123/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LicongHuang/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LicongHuang/ip.git (master) completed! +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [320/480] Analyzing https://github.com/Jweng88/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/timetraveller-123/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/timetraveller-123/ip.git (master) completed! -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [320/480] Analyzing https://github.com/Jweng88/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [321/480] Analyzing https://github.com/EricXiong420/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Jweng88/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Jweng88/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LicongHuang/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LicongHuang/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LicongHuang/ip.git (master) completed! -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [321/480] Analyzing https://github.com/EricXiong420/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/EricXiong420/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/EricXiong420/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Jweng88/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Jweng88/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Jweng88/ip.git (master) completed! -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [322/480] Analyzing https://github.com/jovkusuma/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jovkusuma/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jovkusuma/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/EricXiong420/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [322/480] Analyzing https://github.com/jovkusuma/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/EricXiong420/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/EricXiong420/ip.git (master) completed! -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jovkusuma/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jovkusuma/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepos INFO: [323/480] Analyzing https://github.com/bhnuka/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bhnuka/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bhnuka/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jovkusuma/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jovkusuma/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jovkusuma/ip.git (master) completed! -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepos INFO: [324/480] Analyzing https://github.com/J-hta-n/ip.git (master)... -Sep 01, 2023 4:11:00 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/J-hta-n/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/J-hta-n/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/J-hta-n/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/J-hta-n/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/J-hta-n/ip.git (master) completed! -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [325/480] Analyzing https://github.com/Tim-Siu/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/bhnuka/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Tim-Siu/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Tim-Siu/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/bhnuka/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/bhnuka/ip.git (master) completed! -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [326/480] Analyzing https://github.com/sopa301/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sopa301/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sopa301/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sopa301/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [325/480] Analyzing https://github.com/Tim-Siu/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Tim-Siu/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Tim-Siu/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/J-hta-n/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/J-hta-n/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/J-hta-n/ip.git (master) completed! +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [326/480] Analyzing https://github.com/yarnmengnus/ip.git (master)... +Sep 01, 2023 1:06:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yarnmengnus/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yarnmengnus/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Tim-Siu/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sopa301/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Tim-Siu/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sopa301/ip.git (master) completed! -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Tim-Siu/ip.git (master) completed! -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [327/480] Analyzing https://github.com/yarnmengnus/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [327/480] Analyzing https://github.com/sopa301/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sopa301/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sopa301/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yarnmengnus/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yarnmengnus/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yarnmengnus/ip.git (master) completed! +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepos INFO: [328/480] Analyzing https://github.com/ngeeyonglim/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yarnmengnus/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yarnmengnus/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ngeeyonglim/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ngeeyonglim/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sopa301/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sopa301/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sopa301/ip.git (master) completed! +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [329/480] Analyzing https://github.com/flexibo/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/flexibo/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/flexibo/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ngeeyonglim/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yarnmengnus/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ngeeyonglim/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ngeeyonglim/ip.git (master) completed! -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yarnmengnus/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [329/480] Analyzing https://github.com/ItsTYtan/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yarnmengnus/ip.git (master) completed! -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [330/480] Analyzing https://github.com/flexibo/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ItsTYtan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ItsTYtan/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/flexibo/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/flexibo/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [330/480] Analyzing https://github.com/ItsTYtan/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/flexibo/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/flexibo/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/flexibo/ip.git (master) completed! -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepos INFO: [331/480] Analyzing https://github.com/javinchua/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ItsTYtan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ItsTYtan/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/javinchua/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/javinchua/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ItsTYtan/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ItsTYtan/ip.git (master)... -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ItsTYtan/ip.git (master) completed! -Sep 01, 2023 4:11:01 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepos INFO: [332/480] Analyzing https://github.com/amosting/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/amosting/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/amosting/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/amosting/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/amosting/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/amosting/ip.git (master) completed! -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [333/480] Analyzing https://github.com/ketweeen/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/javinchua/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ketweeen/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ketweeen/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/javinchua/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/javinchua/ip.git (master) completed! -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [333/480] Analyzing https://github.com/ketweeen/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ketweeen/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ketweeen/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/amosting/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/amosting/ip.git (master)... +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/amosting/ip.git (master) completed! +Sep 01, 2023 1:06:55 PM reposense.report.ReportGenerator analyzeRepos INFO: [334/480] Analyzing https://github.com/Cleon2/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Cleon2/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Cleon2/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ketweeen/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ketweeen/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ketweeen/ip.git (master) completed! -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepos INFO: [335/480] Analyzing https://github.com/sudarshan2401/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sudarshan2401/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sudarshan2401/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Cleon2/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Cleon2/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Cleon2/ip.git (master) completed! -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [336/480] Analyzing https://github.com/Respirayson/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Respirayson/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Respirayson/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [336/480] Analyzing https://github.com/wui-hong/ip.git (master)... +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wui-hong/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wui-hong/ip.git (master)... +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sudarshan2401/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sudarshan2401/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sudarshan2401/ip.git (master) completed! -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [337/480] Analyzing https://github.com/wui-hong/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wui-hong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wui-hong/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [337/480] Analyzing https://github.com/Respirayson/ip.git (master)... +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wui-hong/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Respirayson/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Respirayson/ip.git (master)... +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wui-hong/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wui-hong/ip.git (master) completed! -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepos INFO: [338/480] Analyzing https://github.com/Chrainx/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Chrainx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Chrainx/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Respirayson/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Respirayson/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Respirayson/ip.git (master) completed! -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [339/480] Analyzing https://github.com/shishirbychapur/ip.git (master)... -Sep 01, 2023 4:11:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shishirbychapur/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shishirbychapur/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Chrainx/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Chrainx/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Chrainx/ip.git (master) completed! -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [339/480] Analyzing https://github.com/shishirbychapur/ip.git (master)... +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shishirbychapur/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shishirbychapur/ip.git (master)... +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Respirayson/ip.git (master)... +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Respirayson/ip.git (master)... +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Respirayson/ip.git (master) completed! +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepos INFO: [340/480] Analyzing https://github.com/sunzihan23/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sunzihan23/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sunzihan23/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shishirbychapur/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sunzihan23/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shishirbychapur/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shishirbychapur/ip.git (master) completed! -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [341/480] Analyzing https://github.com/wj331/ip.git (master)... +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sunzihan23/ip.git (master)... +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wj331/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wj331/ip.git (master)... +Sep 01, 2023 1:06:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sunzihan23/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sunzihan23/ip.git (master) completed! -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [341/480] Analyzing https://github.com/tjch-o/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [342/480] Analyzing https://github.com/wj331/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [342/480] Analyzing https://github.com/tjch-o/ip.git (master)... +Sep 01, 2023 1:06:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tjch-o/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tjch-o/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wj331/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wj331/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wj331/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tjch-o/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wj331/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wj331/ip.git (master) completed! -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepos INFO: [343/480] Analyzing https://github.com/licongshen12/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/licongshen12/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/licongshen12/ip.git (master)... +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tjch-o/ip.git (master)... +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tjch-o/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tjch-o/ip.git (master) completed! -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepos INFO: [344/480] Analyzing https://github.com/mamayuan/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/licongshen12/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/licongshen12/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/mamayuan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/mamayuan/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/mamayuan/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/mamayuan/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/mamayuan/ip.git (master) completed! -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepos INFO: [345/480] Analyzing https://github.com/ong-wei-hong/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ong-wei-hong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ong-wei-hong/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/licongshen12/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/licongshen12/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/licongshen12/ip.git (master) completed! -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [346/480] Analyzing https://github.com/tanboonkhong/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanboonkhong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanboonkhong/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [346/480] Analyzing https://github.com/cbj252/ip.git (master)... +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cbj252/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cbj252/ip.git (master)... +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cbj252/ip.git (master)... +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ong-wei-hong/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cbj252/ip.git (master)... +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cbj252/ip.git (master) completed! +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [347/480] Analyzing https://github.com/tanboonkhong/ip.git (master)... +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ong-wei-hong/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ong-wei-hong/ip.git (master) completed! -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [347/480] Analyzing https://github.com/cbj252/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cbj252/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cbj252/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanboonkhong/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanboonkhong/ip.git (master)... -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanboonkhong/ip.git (master) completed! -Sep 01, 2023 4:11:03 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepos INFO: [348/480] Analyzing https://github.com/AlfredBeNoel/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanboonkhong/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanboonkhong/ip.git (master)... +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AlfredBeNoel/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AlfredBeNoel/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AlfredBeNoel/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AlfredBeNoel/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AlfredBeNoel/ip.git (master) completed! -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepos INFO: [349/480] Analyzing https://github.com/keaganpzh/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cbj252/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cbj252/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/keaganpzh/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/keaganpzh/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cbj252/ip.git (master) completed! -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanboonkhong/ip.git (master)... +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanboonkhong/ip.git (master)... +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanboonkhong/ip.git (master) completed! +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepos INFO: [350/480] Analyzing https://github.com/ElginTZM/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ElginTZM/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ElginTZM/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/keaganpzh/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ElginTZM/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/keaganpzh/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/keaganpzh/ip.git (master) completed! -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepos INFO: [351/480] Analyzing https://github.com/LimJH2002/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LimJH2002/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LimJH2002/ip.git (master)... +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ElginTZM/ip.git (master)... +Sep 01, 2023 1:06:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ElginTZM/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ElginTZM/ip.git (master) completed! -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator analyzeRepos INFO: [352/480] Analyzing https://github.com/cmHuang777/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LimJH2002/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LimJH2002/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cmHuang777/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cmHuang777/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LimJH2002/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cmHuang777/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LimJH2002/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LimJH2002/ip.git (master) completed! +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cmHuang777/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cmHuang777/ip.git (master) completed! -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepos INFO: [353/480] Analyzing https://github.com/WeeeHung/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [354/480] Analyzing https://github.com/xxiaoweii/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WeeeHung/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WeeeHung/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LimJH2002/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LimJH2002/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LimJH2002/ip.git (master) completed! -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [354/480] Analyzing https://github.com/rayyan35p/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rayyan35p/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rayyan35p/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xxiaoweii/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xxiaoweii/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/WeeeHung/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/WeeeHung/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/WeeeHung/ip.git (master) completed! -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [355/480] Analyzing https://github.com/xxiaoweii/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xxiaoweii/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xxiaoweii/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rayyan35p/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rayyan35p/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rayyan35p/ip.git (master) completed! -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [355/480] Analyzing https://github.com/rayyan35p/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rayyan35p/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rayyan35p/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xxiaoweii/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xxiaoweii/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xxiaoweii/ip.git (master) completed! +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepos INFO: [356/480] Analyzing https://github.com/dhruvir29/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dhruvir29/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dhruvir29/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rayyan35p/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rayyan35p/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dhruvir29/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rayyan35p/ip.git (master) completed! +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [357/480] Analyzing https://github.com/LinWanLeii/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dhruvir29/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dhruvir29/ip.git (master) completed! -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [357/480] Analyzing https://github.com/LinWanLeii/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xxiaoweii/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [358/480] Analyzing https://github.com/Song-Mengfei/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LinWanLeii/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LinWanLeii/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xxiaoweii/ip.git (master)... -Sep 01, 2023 4:11:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xxiaoweii/ip.git (master) completed! -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [358/480] Analyzing https://github.com/Song-Mengfei/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Song-Mengfei/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Song-Mengfei/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LinWanLeii/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Song-Mengfei/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LinWanLeii/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LinWanLeii/ip.git (master) completed! -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepos INFO: [359/480] Analyzing https://github.com/jinyuan0425/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jinyuan0425/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jinyuan0425/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Song-Mengfei/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Song-Mengfei/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Song-Mengfei/ip.git (master) completed! -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepos INFO: [360/480] Analyzing https://github.com/tiif/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jinyuan0425/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jinyuan0425/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tiif/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tiif/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jinyuan0425/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jinyuan0425/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jinyuan0425/ip.git (master) completed! -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [361/480] Analyzing https://github.com/nicholascher/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tiif/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nicholascher/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nicholascher/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tiif/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tiif/ip.git (master) completed! -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [361/480] Analyzing https://github.com/nicholascher/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nicholascher/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nicholascher/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jinyuan0425/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jinyuan0425/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jinyuan0425/ip.git (master) completed! +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepos INFO: [362/480] Analyzing https://github.com/hcs1203/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/hcs1203/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/hcs1203/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/hcs1203/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/hcs1203/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/hcs1203/ip.git (master) completed! -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [363/480] Analyzing https://github.com/papataco14/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/papataco14/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/papataco14/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [363/480] Analyzing https://github.com/KamJiaYue/ip.git (master)... +Sep 01, 2023 1:06:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/KamJiaYue/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/KamJiaYue/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nicholascher/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nicholascher/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/papataco14/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nicholascher/ip.git (master) completed! -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [364/480] Analyzing https://github.com/KamJiaYue/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/papataco14/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/papataco14/ip.git (master) completed! -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [364/480] Analyzing https://github.com/NereusWB922/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NereusWB922/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NereusWB922/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KamJiaYue/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KamJiaYue/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KamJiaYue/ip.git (master) completed! +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepos INFO: [365/480] Analyzing https://github.com/PohSayKeong/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/KamJiaYue/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/KamJiaYue/ip.git (master)... -Sep 01, 2023 4:11:05 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/PohSayKeong/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/PohSayKeong/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/PohSayKeong/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/PohSayKeong/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/PohSayKeong/ip.git (master) completed! -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [366/480] Analyzing https://github.com/ivyy-poison/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ivyy-poison/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ivyy-poison/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KamJiaYue/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KamJiaYue/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KamJiaYue/ip.git (master) completed! -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [367/480] Analyzing https://github.com/NereusWB922/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NereusWB922/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NereusWB922/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ivyy-poison/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ivyy-poison/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ivyy-poison/ip.git (master) completed! -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [368/480] Analyzing https://github.com/jacobcuison/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jacobcuison/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jacobcuison/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [366/480] Analyzing https://github.com/papataco14/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/NereusWB922/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/papataco14/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/papataco14/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/NereusWB922/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/NereusWB922/ip.git (master) completed! -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [369/480] Analyzing https://github.com/kohkaijie/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kohkaijie/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kohkaijie/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [367/480] Analyzing https://github.com/jacobcuison/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jacobcuison/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jacobcuison/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/papataco14/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/papataco14/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/papataco14/ip.git (master) completed! +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [368/480] Analyzing https://github.com/ivyy-poison/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ivyy-poison/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ivyy-poison/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jacobcuison/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jacobcuison/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jacobcuison/ip.git (master) completed! -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [369/480] Analyzing https://github.com/kohkaijie/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kohkaijie/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:06:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kohkaijie/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ivyy-poison/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ivyy-poison/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ivyy-poison/ip.git (master) completed! +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepos INFO: [370/480] Analyzing https://github.com/rocketninja7/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rocketninja7/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rocketninja7/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kohkaijie/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kohkaijie/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kohkaijie/ip.git (master) completed! -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [371/480] Analyzing https://github.com/ji-just-ji/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ji-just-ji/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ji-just-ji/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/rocketninja7/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/rocketninja7/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/rocketninja7/ip.git (master) completed! -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [372/480] Analyzing https://github.com/zekone/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [371/480] Analyzing https://github.com/zekone/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kohkaijie/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zekone/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zekone/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ji-just-ji/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ji-just-ji/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ji-just-ji/ip.git (master) completed! -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [373/480] Analyzing https://github.com/markgcera/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kohkaijie/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kohkaijie/ip.git (master) completed! +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [372/480] Analyzing https://github.com/markgcera/ip.git (master)... +Sep 01, 2023 1:06:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/markgcera/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:06:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/markgcera/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zekone/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zekone/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zekone/ip.git (master) completed! -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [374/480] Analyzing https://github.com/PearlynnT/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/PearlynnT/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/PearlynnT/ip.git (master)... -Sep 01, 2023 4:11:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/markgcera/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:06:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/markgcera/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/markgcera/ip.git (master) completed! -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [373/480] Analyzing https://github.com/PearlynnT/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/PearlynnT/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/PearlynnT/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zekone/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zekone/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zekone/ip.git (master) completed! +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [374/480] Analyzing https://github.com/StevenLiudw/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/StevenLiudw/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/StevenLiudw/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PearlynnT/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PearlynnT/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PearlynnT/ip.git (master) completed! +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepos INFO: [375/480] Analyzing https://github.com/TeeRenJing/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TeeRenJing/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TeeRenJing/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PearlynnT/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/StevenLiudw/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/StevenLiudw/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/StevenLiudw/ip.git (master) completed! +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [376/480] Analyzing https://github.com/dloh2236/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dloh2236/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dloh2236/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TeeRenJing/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TeeRenJing/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PearlynnT/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TeeRenJing/ip.git (master) completed! -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PearlynnT/ip.git (master) completed! -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [376/480] Analyzing https://github.com/StevenLiudw/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepos INFO: [377/480] Analyzing https://github.com/mounilsankar/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/StevenLiudw/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/StevenLiudw/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dloh2236/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/mounilsankar/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/mounilsankar/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dloh2236/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dloh2236/ip.git (master) completed! +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [378/480] Analyzing https://github.com/ji-just-ji/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ji-just-ji/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ji-just-ji/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/mounilsankar/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/mounilsankar/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/mounilsankar/ip.git (master) completed! -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [378/480] Analyzing https://github.com/zannloo/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/StevenLiudw/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/StevenLiudw/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/StevenLiudw/ip.git (master) completed! -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [379/480] Analyzing https://github.com/zannloo/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ji-just-ji/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zannloo/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zannloo/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [379/480] Analyzing https://github.com/junnengsoo/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ji-just-ji/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ji-just-ji/ip.git (master) completed! +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [380/480] Analyzing https://github.com/junnengsoo/ip.git (master)... +Sep 01, 2023 1:07:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/junnengsoo/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/junnengsoo/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/junnengsoo/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/junnengsoo/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/junnengsoo/ip.git (master) completed! -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [380/480] Analyzing https://github.com/dloh2236/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dloh2236/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dloh2236/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zannloo/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zannloo/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zannloo/ip.git (master) completed! -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/junnengsoo/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos INFO: [381/480] Analyzing https://github.com/freshcabbage123/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/junnengsoo/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/freshcabbage123/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/freshcabbage123/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dloh2236/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dloh2236/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dloh2236/ip.git (master) completed! -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/junnengsoo/ip.git (master) completed! +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos INFO: [382/480] Analyzing https://github.com/Kokseng1/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kokseng1/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kokseng1/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Kokseng1/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Kokseng1/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Kokseng1/ip.git (master) completed! -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [383/480] Analyzing https://github.com/tjingsheng/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tjingsheng/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tjingsheng/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [383/480] Analyzing https://github.com/itsNatTan/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/itsNatTan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/itsNatTan/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/freshcabbage123/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/freshcabbage123/ip.git (master)... -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/freshcabbage123/ip.git (master) completed! -Sep 01, 2023 4:11:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [384/480] Analyzing https://github.com/itsNatTan/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/itsNatTan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/itsNatTan/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tjingsheng/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tjingsheng/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tjingsheng/ip.git (master) completed! -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [385/480] Analyzing https://github.com/ZD292/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [384/480] Analyzing https://github.com/ZD292/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ZD292/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ZD292/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/itsNatTan/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ZD292/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ZD292/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ZD292/ip.git (master) completed! -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [385/480] Analyzing https://github.com/tjingsheng/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/itsNatTan/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/itsNatTan/ip.git (master) completed! +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos INFO: [386/480] Analyzing https://github.com/alientian/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tjingsheng/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tjingsheng/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alientian/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alientian/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/itsNatTan/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/itsNatTan/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/itsNatTan/ip.git (master) completed! -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [387/480] Analyzing https://github.com/wanghejin/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wanghejin/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wanghejin/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tjingsheng/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tjingsheng/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tjingsheng/ip.git (master) completed! +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [387/480] Analyzing https://github.com/frrrrry/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/frrrrry/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/frrrrry/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alientian/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alientian/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alientian/ip.git (master) completed! -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [388/480] Analyzing https://github.com/frrrrry/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/frrrrry/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/frrrrry/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wanghejin/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wanghejin/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wanghejin/ip.git (master) completed! -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [389/480] Analyzing https://github.com/MagnificentCreature/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/MagnificentCreature/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/MagnificentCreature/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [388/480] Analyzing https://github.com/SungMatt/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/frrrrry/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SungMatt/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SungMatt/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/frrrrry/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/frrrrry/ip.git (master) completed! -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [389/480] Analyzing https://github.com/wanghejin/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wanghejin/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wanghejin/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SungMatt/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SungMatt/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SungMatt/ip.git (master) completed! +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos INFO: [390/480] Analyzing https://github.com/andrefoo/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/andrefoo/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/andrefoo/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/MagnificentCreature/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/MagnificentCreature/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/andrefoo/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/MagnificentCreature/ip.git (master) completed! -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [391/480] Analyzing https://github.com/tohpinren/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/andrefoo/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/andrefoo/ip.git (master) completed! -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [392/480] Analyzing https://github.com/SungMatt/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SungMatt/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SungMatt/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tohpinren/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tohpinren/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SungMatt/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SungMatt/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SungMatt/ip.git (master) completed! -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [393/480] Analyzing https://github.com/XihuaZ/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [391/480] Analyzing https://github.com/MagnificentCreature/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wanghejin/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/MagnificentCreature/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/MagnificentCreature/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wanghejin/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wanghejin/ip.git (master) completed! +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [392/480] Analyzing https://github.com/XihuaZ/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/XihuaZ/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/XihuaZ/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tohpinren/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tohpinren/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tohpinren/ip.git (master) completed! -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [394/480] Analyzing https://github.com/Choonyan02/ip.git (master)... -Sep 01, 2023 4:11:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Choonyan02/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Choonyan02/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/MagnificentCreature/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/MagnificentCreature/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/MagnificentCreature/ip.git (master) completed! +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [393/480] Analyzing https://github.com/xavierpok/ip.git (master)... +Sep 01, 2023 1:07:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xavierpok/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xavierpok/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/XihuaZ/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/XihuaZ/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/XihuaZ/ip.git (master) completed! -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [395/480] Analyzing https://github.com/xavierpok/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xavierpok/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xavierpok/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Choonyan02/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Choonyan02/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Choonyan02/ip.git (master) completed! -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [396/480] Analyzing https://github.com/bkjwjason/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [394/480] Analyzing https://github.com/bkjwjason/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bkjwjason/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bkjwjason/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/bkjwjason/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/bkjwjason/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/bkjwjason/ip.git (master) completed! -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [397/480] Analyzing https://github.com/aarontxz/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [395/480] Analyzing https://github.com/tohpinren/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tohpinren/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tohpinren/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xavierpok/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xavierpok/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xavierpok/ip.git (master) completed! +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [396/480] Analyzing https://github.com/aarontxz/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/aarontxz/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/aarontxz/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/aarontxz/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/aarontxz/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/aarontxz/ip.git (master) completed! -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tohpinren/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [397/480] Analyzing https://github.com/Choonyan02/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tohpinren/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tohpinren/ip.git (master) completed! +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepos INFO: [398/480] Analyzing https://github.com/tayian/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Choonyan02/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Choonyan02/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tayian/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tayian/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xavierpok/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xavierpok/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xavierpok/ip.git (master) completed! -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [399/480] Analyzing https://github.com/jianyangg/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tayian/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tayian/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tayian/ip.git (master) completed! -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [399/480] Analyzing https://github.com/jianyangg/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jianyangg/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jianyangg/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [400/480] Analyzing https://github.com/wnchan/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wnchan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wnchan/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wnchan/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wnchan/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wnchan/ip.git (master) completed! -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [401/480] Analyzing https://github.com/Jweewee/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jweewee/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jweewee/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Choonyan02/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Choonyan02/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Choonyan02/ip.git (master) completed! +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [400/480] Analyzing https://github.com/cyaoxuan/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cyaoxuan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cyaoxuan/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jianyangg/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jianyangg/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jianyangg/ip.git (master) completed! -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [402/480] Analyzing https://github.com/cyaoxuan/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cyaoxuan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cyaoxuan/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [401/480] Analyzing https://github.com/anthonytamzil/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cyaoxuan/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/anthonytamzil/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/anthonytamzil/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cyaoxuan/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cyaoxuan/ip.git (master) completed! +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [402/480] Analyzing https://github.com/Jweewee/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jweewee/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jweewee/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Jweewee/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Jweewee/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Jweewee/ip.git (master) completed! -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [403/480] Analyzing https://github.com/CelestineTan03/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [403/480] Analyzing https://github.com/wnchan/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wnchan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wnchan/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/anthonytamzil/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wnchan/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wnchan/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wnchan/ip.git (master) completed! +Sep 01, 2023 1:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/anthonytamzil/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/anthonytamzil/ip.git (master) completed! +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [404/480] Analyzing https://github.com/CelestineTan03/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [405/480] Analyzing https://github.com/saltedfishxx/ip.git (master)... +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/CelestineTan03/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/CelestineTan03/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cyaoxuan/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cyaoxuan/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cyaoxuan/ip.git (master) completed! -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [404/480] Analyzing https://github.com/anthonytamzil/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/anthonytamzil/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/anthonytamzil/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/saltedfishxx/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/saltedfishxx/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/CelestineTan03/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/CelestineTan03/ip.git (master)... -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/CelestineTan03/ip.git (master) completed! -Sep 01, 2023 4:11:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [405/480] Analyzing https://github.com/saltedfishxx/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/saltedfishxx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/saltedfishxx/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/anthonytamzil/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/saltedfishxx/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/anthonytamzil/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/anthonytamzil/ip.git (master) completed! -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [406/480] Analyzing https://github.com/euchangxian/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [406/480] Analyzing https://github.com/AlagappanRa/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/saltedfishxx/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/saltedfishxx/ip.git (master) completed! -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [407/480] Analyzing https://github.com/AlagappanRa/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/euchangxian/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/euchangxian/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [407/480] Analyzing https://github.com/euchangxian/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AlagappanRa/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AlagappanRa/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/euchangxian/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/euchangxian/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AlagappanRa/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AlagappanRa/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AlagappanRa/ip.git (master) completed! -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos INFO: [408/480] Analyzing https://github.com/felibunnyy/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/euchangxian/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/euchangxian/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/felibunnyy/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/felibunnyy/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/euchangxian/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/euchangxian/ip.git (master) completed! -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [409/480] Analyzing https://github.com/itssisi/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [409/480] Analyzing https://github.com/Ken-Lai/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/felibunnyy/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/felibunnyy/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/felibunnyy/ip.git (master) completed! -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [410/480] Analyzing https://github.com/itssisi/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Ken-Lai/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Ken-Lai/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/itssisi/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/itssisi/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [410/480] Analyzing https://github.com/jamz903/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ken-Lai/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ken-Lai/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ken-Lai/ip.git (master) completed! +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [411/480] Analyzing https://github.com/jamz903/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jamz903/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jamz903/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/itssisi/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/itssisi/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/itssisi/ip.git (master) completed! -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [412/480] Analyzing https://github.com/Kevin-Liusx/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Kevin-Liusx/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Kevin-Liusx/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jamz903/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [411/480] Analyzing https://github.com/Kevin-Liusx/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jamz903/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jamz903/ip.git (master) completed! -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [412/480] Analyzing https://github.com/Ken-Lai/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Kevin-Liusx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Kevin-Liusx/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Ken-Lai/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Ken-Lai/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [413/480] Analyzing https://github.com/ChuanXinNg/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Kevin-Liusx/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ken-Lai/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Kevin-Liusx/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Kevin-Liusx/ip.git (master) completed! -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ken-Lai/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [413/480] Analyzing https://github.com/ChuanXinNg/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ken-Lai/ip.git (master) completed! -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [414/480] Analyzing https://github.com/kenvynKwek/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChuanXinNg/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChuanXinNg/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [414/480] Analyzing https://github.com/kenvynKwek/ip.git (master)... +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kenvynKwek/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kenvynKwek/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kenvynKwek/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kenvynKwek/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kenvynKwek/ip.git (master) completed! -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos INFO: [415/480] Analyzing https://github.com/Ruizhi2001/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ruizhi2001/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ruizhi2001/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChuanXinNg/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChuanXinNg/ip.git (master)... -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChuanXinNg/ip.git (master) completed! -Sep 01, 2023 4:11:10 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos INFO: [416/480] Analyzing https://github.com/prawnzyy/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/prawnzyy/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/prawnzyy/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Ruizhi2001/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Ruizhi2001/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Ruizhi2001/ip.git (master) completed! -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos INFO: [417/480] Analyzing https://github.com/saraozn/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/saraozn/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/saraozn/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/saraozn/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/saraozn/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/saraozn/ip.git (master) completed! -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator analyzeRepos INFO: [418/480] Analyzing https://github.com/nicholastng010601/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nicholastng010601/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nicholastng010601/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/prawnzyy/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/prawnzyy/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/prawnzyy/ip.git (master) completed! -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [419/480] Analyzing https://github.com/DistractedCat/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/DistractedCat/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/DistractedCat/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nicholastng010601/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nicholastng010601/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nicholastng010601/ip.git (master) completed! -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [420/480] Analyzing https://github.com/yezkez10/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/DistractedCat/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yezkez10/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yezkez10/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/DistractedCat/ip.git (master)... +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DistractedCat/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DistractedCat/ip.git (master) completed! -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [421/480] Analyzing https://github.com/revdrag/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/revdrag/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/revdrag/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yezkez10/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yezkez10/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yezkez10/ip.git (master) completed! -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [422/480] Analyzing https://github.com/alvinlim277/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alvinlim277/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alvinlim277/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/revdrag/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/revdrag/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/revdrag/ip.git (master) completed! -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [423/480] Analyzing https://github.com/JasonRay168/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JasonRay168/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JasonRay168/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JasonRay168/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alvinlim277/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JasonRay168/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JasonRay168/ip.git (master) completed! -Sep 01, 2023 4:11:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [424/480] Analyzing https://github.com/billieboy7/ip.git (master)... -Sep 01, 2023 4:11:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alvinlim277/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alvinlim277/ip.git (master) completed! -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [425/480] Analyzing https://github.com/jannnice/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [424/480] Analyzing https://github.com/billieboy7/ip.git (master)... +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JasonRay168/ip.git (master)... +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/billieboy7/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/billieboy7/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JasonRay168/ip.git (master)... +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JasonRay168/ip.git (master) completed! +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [425/480] Analyzing https://github.com/jannnice/ip.git (master)... +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jannnice/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jannnice/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/billieboy7/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jannnice/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/billieboy7/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/billieboy7/ip.git (master) completed! -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [426/480] Analyzing https://github.com/evanyan13/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/evanyan13/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/evanyan13/ip.git (master)... +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jannnice/ip.git (master)... +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jannnice/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jannnice/ip.git (master) completed! -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [427/480] Analyzing https://github.com/samuelim01/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/evanyan13/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/evanyan13/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/samuelim01/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/samuelim01/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/evanyan13/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/evanyan13/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/evanyan13/ip.git (master) completed! -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [428/480] Analyzing https://github.com/dinde2004/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dinde2004/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dinde2004/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dinde2004/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/samuelim01/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dinde2004/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dinde2004/ip.git (master) completed! -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [429/480] Analyzing https://github.com/KumChaiYin/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [429/480] Analyzing https://github.com/seanpzk/ip.git (master)... +Sep 01, 2023 1:07:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/seanpzk/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/seanpzk/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/samuelim01/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/samuelim01/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/samuelim01/ip.git (master) completed! -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [430/480] Analyzing https://github.com/seanpzk/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [430/480] Analyzing https://github.com/KumChaiYin/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KumChaiYin/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KumChaiYin/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/seanpzk/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/seanpzk/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KumChaiYin/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/seanpzk/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KumChaiYin/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KumChaiYin/ip.git (master) completed! -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/seanpzk/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [431/480] Analyzing https://github.com/lsyurea/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/seanpzk/ip.git (master) completed! -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [432/480] Analyzing https://github.com/Sasmik23/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [431/480] Analyzing https://github.com/lsyurea/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lsyurea/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lsyurea/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KumChaiYin/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KumChaiYin/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KumChaiYin/ip.git (master) completed! +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [432/480] Analyzing https://github.com/Sasmik23/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Sasmik23/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Sasmik23/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lsyurea/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Sasmik23/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lsyurea/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Sasmik23/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lsyurea/ip.git (master) completed! -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Sasmik23/ip.git (master) completed! -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepos INFO: [433/480] Analyzing https://github.com/lululwtv/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [434/480] Analyzing https://github.com/garylow2001/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/garylow2001/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/garylow2001/ip.git (master)... -Sep 01, 2023 4:11:12 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lululwtv/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lululwtv/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Sasmik23/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Sasmik23/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Sasmik23/ip.git (master) completed! +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [434/480] Analyzing https://github.com/geraldngjx/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/geraldngjx/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/geraldngjx/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lululwtv/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lululwtv/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lululwtv/ip.git (master) completed! -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [435/480] Analyzing https://github.com/geraldngjx/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/garylow2001/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/geraldngjx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/geraldngjx/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/garylow2001/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/garylow2001/ip.git (master) completed! -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [436/480] Analyzing https://github.com/leontan2/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/leontan2/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/leontan2/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [435/480] Analyzing https://github.com/garylow2001/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/garylow2001/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/garylow2001/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/geraldngjx/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/geraldngjx/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/geraldngjx/ip.git (master) completed! -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [436/480] Analyzing https://github.com/leontan2/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/leontan2/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/leontan2/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/garylow2001/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/garylow2001/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/garylow2001/ip.git (master) completed! +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepos INFO: [437/480] Analyzing https://github.com/wamps-jp/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wamps-jp/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wamps-jp/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/leontan2/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wamps-jp/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wamps-jp/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wamps-jp/ip.git (master) completed! -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [438/480] Analyzing https://github.com/jacksonyuan256/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/leontan2/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/leontan2/ip.git (master) completed! -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [439/480] Analyzing https://github.com/dickongwd/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jacksonyuan256/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jacksonyuan256/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [438/480] Analyzing https://github.com/dickongwd/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dickongwd/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dickongwd/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/leontan2/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dickongwd/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/leontan2/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/leontan2/ip.git (master) completed! +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [439/480] Analyzing https://github.com/jacksonyuan256/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dickongwd/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dickongwd/ip.git (master) completed! -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepos INFO: [440/480] Analyzing https://github.com/suryanshkushwaha/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jacksonyuan256/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jacksonyuan256/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/suryanshkushwaha/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/suryanshkushwaha/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jacksonyuan256/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jacksonyuan256/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jacksonyuan256/ip.git (master) completed! -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [441/480] Analyzing https://github.com/Nauxe/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Nauxe/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Nauxe/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/suryanshkushwaha/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/suryanshkushwaha/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/suryanshkushwaha/ip.git (master) completed! -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [442/480] Analyzing https://github.com/wr1159/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [441/480] Analyzing https://github.com/wr1159/ip.git (master)... +Sep 01, 2023 1:07:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wr1159/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wr1159/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Nauxe/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jacksonyuan256/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jacksonyuan256/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jacksonyuan256/ip.git (master) completed! +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [442/480] Analyzing https://github.com/yyyaohhh/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yyyaohhh/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yyyaohhh/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wr1159/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Nauxe/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Nauxe/ip.git (master) completed! -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [443/480] Analyzing https://github.com/yyyaohhh/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wr1159/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wr1159/ip.git (master) completed! -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [444/480] Analyzing https://github.com/zhanyang01/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yyyaohhh/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yyyaohhh/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhanyang01/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhanyang01/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [443/480] Analyzing https://github.com/Nauxe/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Nauxe/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Nauxe/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yyyaohhh/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yyyaohhh/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yyyaohhh/ip.git (master) completed! -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [444/480] Analyzing https://github.com/zhanyang01/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhanyang01/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhanyang01/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Nauxe/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Nauxe/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Nauxe/ip.git (master) completed! +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepos INFO: [445/480] Analyzing https://github.com/czhiruo/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/czhiruo/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/czhiruo/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhanyang01/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/czhiruo/ip.git (master)... -Sep 01, 2023 4:11:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhanyang01/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhanyang01/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/czhiruo/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhanyang01/ip.git (master) completed! -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/czhiruo/ip.git (master) completed! -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [446/480] Analyzing https://github.com/longnguyentan/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [447/480] Analyzing https://github.com/victorpengmx/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/longnguyentan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/longnguyentan/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [446/480] Analyzing https://github.com/victorpengmx/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhanyang01/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhanyang01/ip.git (master) completed! +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [447/480] Analyzing https://github.com/longnguyentan/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/victorpengmx/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/victorpengmx/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/longnguyentan/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/longnguyentan/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/longnguyentan/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/longnguyentan/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/longnguyentan/ip.git (master) completed! -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepos INFO: [448/480] Analyzing https://github.com/Cikguseven/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Cikguseven/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Cikguseven/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/victorpengmx/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/victorpengmx/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/victorpengmx/ip.git (master) completed! -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepos INFO: [449/480] Analyzing https://github.com/Eola-Z/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Eola-Z/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Eola-Z/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Eola-Z/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Eola-Z/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Eola-Z/ip.git (master) completed! -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [450/480] Analyzing https://github.com/jibtaf/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jibtaf/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jibtaf/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [450/480] Analyzing https://github.com/lipwei1808/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lipwei1808/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lipwei1808/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Cikguseven/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Cikguseven/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Cikguseven/ip.git (master) completed! -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [451/480] Analyzing https://github.com/lipwei1808/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lipwei1808/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lipwei1808/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [451/480] Analyzing https://github.com/jibtaf/ip.git (master)... +Sep 01, 2023 1:07:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jibtaf/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jibtaf/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jibtaf/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lipwei1808/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jibtaf/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jibtaf/ip.git (master) completed! -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepos INFO: [452/480] Analyzing https://github.com/Mohammed-Faizzzz/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lipwei1808/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lipwei1808/ip.git (master) completed! +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Mohammed-Faizzzz/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Mohammed-Faizzzz/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Mohammed-Faizzzz/ip.git (master) completed! -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepos INFO: [453/480] Analyzing https://github.com/dylkaw/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lipwei1808/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dylkaw/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dylkaw/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lipwei1808/ip.git (master)... -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lipwei1808/ip.git (master) completed! -Sep 01, 2023 4:11:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [454/480] Analyzing https://github.com/nikele2001/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nikele2001/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nikele2001/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dylkaw/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Mohammed-Faizzzz/ip.git (master) completed! +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [454/480] Analyzing https://github.com/nikele2001/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dylkaw/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dylkaw/ip.git (master) completed! -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nikele2001/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nikele2001/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepos INFO: [455/480] Analyzing https://github.com/DeltonCheng/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/DeltonCheng/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/DeltonCheng/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/DeltonCheng/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DeltonCheng/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DeltonCheng/ip.git (master) completed! -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepos INFO: [456/480] Analyzing https://github.com/ChangruHenryQian/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChangruHenryQian/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChangruHenryQian/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nikele2001/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nikele2001/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nikele2001/ip.git (master) completed! -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [457/480] Analyzing https://github.com/craigtonlian/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChangruHenryQian/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/craigtonlian/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/craigtonlian/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChangruHenryQian/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChangruHenryQian/ip.git (master) completed! -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [458/480] Analyzing https://github.com/ruo-x/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ruo-x/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ruo-x/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ruo-x/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ruo-x/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ruo-x/ip.git (master) completed! -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [459/480] Analyzing https://github.com/iantsaii/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [457/480] Analyzing https://github.com/craigtonlian/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nikele2001/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/craigtonlian/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/craigtonlian/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nikele2001/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nikele2001/ip.git (master) completed! +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [458/480] Analyzing https://github.com/iantsaii/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/iantsaii/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/iantsaii/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/craigtonlian/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/craigtonlian/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/craigtonlian/ip.git (master) completed! -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [459/480] Analyzing https://github.com/ruo-x/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/iantsaii/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ruo-x/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ruo-x/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/iantsaii/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/iantsaii/ip.git (master) completed! +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepos INFO: [460/480] Analyzing https://github.com/wjacobw/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wjacobw/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wjacobw/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/iantsaii/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wjacobw/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wjacobw/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wjacobw/ip.git (master) completed! -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [461/480] Analyzing https://github.com/angkyakdifp/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/iantsaii/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/iantsaii/ip.git (master) completed! -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [462/480] Analyzing https://github.com/nicrandomlee/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nicrandomlee/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nicrandomlee/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/angkyakdifp/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/angkyakdifp/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicrandomlee/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nicrandomlee/ip.git (master)... -Sep 01, 2023 4:11:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nicrandomlee/ip.git (master) completed! -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [463/480] Analyzing https://github.com/brein62/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [461/480] Analyzing https://github.com/brein62/ip.git (master)... +Sep 01, 2023 1:07:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/brein62/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/brein62/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ruo-x/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ruo-x/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ruo-x/ip.git (master) completed! +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [462/480] Analyzing https://github.com/angkyakdifp/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/angkyakdifp/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/angkyakdifp/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/angkyakdifp/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/angkyakdifp/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/angkyakdifp/ip.git (master) completed! -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [464/480] Analyzing https://github.com/Bryan-Goh/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Bryan-Goh/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Bryan-Goh/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [463/480] Analyzing https://github.com/nicrandomlee/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nicrandomlee/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nicrandomlee/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/brein62/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/brein62/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/brein62/ip.git (master) completed! -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Bryan-Goh/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [464/480] Analyzing https://github.com/Bryan-Goh/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Bryan-Goh/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Bryan-Goh/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicrandomlee/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nicrandomlee/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nicrandomlee/ip.git (master) completed! +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepos INFO: [465/480] Analyzing https://github.com/kiatkat/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Bryan-Goh/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kiatkat/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kiatkat/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Bryan-Goh/ip.git (master) completed! -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [466/480] Analyzing https://github.com/jiakai-17/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jiakai-17/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jiakai-17/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kiatkat/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kiatkat/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kiatkat/ip.git (master) completed! -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [467/480] Analyzing https://github.com/MadLamprey/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [466/480] Analyzing https://github.com/MadLamprey/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/MadLamprey/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/MadLamprey/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jiakai-17/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jiakai-17/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jiakai-17/ip.git (master) completed! -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Bryan-Goh/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Bryan-Goh/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Bryan-Goh/ip.git (master) completed! +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [467/480] Analyzing https://github.com/jiakai-17/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jiakai-17/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jiakai-17/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/MadLamprey/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/MadLamprey/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/MadLamprey/ip.git (master) completed! +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepos INFO: [468/480] Analyzing https://github.com/xyT-T/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xyT-T/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xyT-T/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jiakai-17/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jiakai-17/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jiakai-17/ip.git (master) completed! +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [469/480] Analyzing https://github.com/nathanielcalimag/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nathanielcalimag/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nathanielcalimag/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/xyT-T/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/xyT-T/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/xyT-T/ip.git (master) completed! -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [469/480] Analyzing https://github.com/nreHieW/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/MadLamprey/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [470/480] Analyzing https://github.com/nreHieW/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nreHieW/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nreHieW/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/MadLamprey/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/MadLamprey/ip.git (master) completed! -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [470/480] Analyzing https://github.com/nathanielcalimag/ip.git (master)... -Sep 01, 2023 4:11:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nathanielcalimag/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nathanielcalimag/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nreHieW/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nathanielcalimag/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nreHieW/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nathanielcalimag/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nreHieW/ip.git (master) completed! -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepos +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nathanielcalimag/ip.git (master) completed! +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepos INFO: [471/480] Analyzing https://github.com/Saezenn/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [472/480] Analyzing https://github.com/jellywaiyan/ip.git (master)... +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Saezenn/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Saezenn/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nathanielcalimag/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nathanielcalimag/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nathanielcalimag/ip.git (master) completed! -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [472/480] Analyzing https://github.com/jellywaiyan/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jellywaiyan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jellywaiyan/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Saezenn/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Saezenn/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Saezenn/ip.git (master) completed! -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [473/480] Analyzing https://github.com/marquestye/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jellywaiyan/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jellywaiyan/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jellywaiyan/ip.git (master) completed! -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [473/480] Analyzing https://github.com/marquestye/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/marquestye/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/marquestye/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [474/480] Analyzing https://github.com/Sebtey/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Sebtey/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Sebtey/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/marquestye/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/marquestye/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/marquestye/ip.git (master) completed! -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [475/480] Analyzing https://github.com/DonovanJJ/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Sebtey/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/DonovanJJ/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/DonovanJJ/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Sebtey/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Sebtey/ip.git (master) completed! -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [476/480] Analyzing https://github.com/Tang-Moyan/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator updateRepoConfig +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Saezenn/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Saezenn/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Saezenn/ip.git (master) completed! +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [474/480] Analyzing https://github.com/Tang-Moyan/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Tang-Moyan/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 01, 2023 1:07:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Tang-Moyan/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Tang-Moyan/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Tang-Moyan/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Tang-Moyan/ip.git (master) completed! -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [477/480] Analyzing https://github.com/rionshocker/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rionshocker/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rionshocker/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [475/480] Analyzing https://github.com/DonovanJJ/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/DonovanJJ/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/DonovanJJ/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/marquestye/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/marquestye/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/marquestye/ip.git (master) completed! +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [476/480] Analyzing https://github.com/Sebtey/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Sebtey/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Sebtey/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/DonovanJJ/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Sebtey/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DonovanJJ/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DonovanJJ/ip.git (master) completed! -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [478/480] Analyzing https://github.com/Blizzeracz/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Blizzeracz/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Blizzeracz/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [477/480] Analyzing https://github.com/rionshocker/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Sebtey/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Sebtey/ip.git (master) completed! +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [478/480] Analyzing https://github.com/tyouwei/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rionshocker/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rionshocker/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tyouwei/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tyouwei/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/rionshocker/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/rionshocker/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/rionshocker/ip.git (master) completed! -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Blizzeracz/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [479/480] Analyzing https://github.com/tyouwei/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Blizzeracz/ip.git (master)... -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Blizzeracz/ip.git (master) completed! -Sep 01, 2023 4:11:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tyouwei/ip.git (master) does not contain a standalone config file. -Sep 01, 2023 4:11:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tyouwei/ip.git (master)... -Sep 01, 2023 4:11:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [479/480] Analyzing https://github.com/Blizzeracz/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Blizzeracz/ip.git (master) does not contain a standalone config file. +Sep 01, 2023 1:07:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Blizzeracz/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tyouwei/ip.git (master)... -Sep 01, 2023 4:11:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tyouwei/ip.git (master)... -Sep 01, 2023 4:11:18 AM reposense.report.ReportGenerator analyzeRepo +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tyouwei/ip.git (master) completed! -Sep 01, 2023 4:11:18 AM reposense.report.ReportGenerator generateReposReport +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Blizzeracz/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Blizzeracz/ip.git (master)... +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Blizzeracz/ip.git (master) completed! +Sep 01, 2023 1:07:09 PM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/ip-dashboard/ip-dashboard/reposense-report -Sep 01, 2023 4:11:19 AM reposense.RepoSense main -INFO: Elapsed processing time: 1 minute(s) 36.39 second(s) +Sep 01, 2023 1:07:10 PM reposense.RepoSense main +INFO: Elapsed processing time: 1 minute(s) 20.94 second(s) diff --git a/revdrag_ip_master/authorship.json b/revdrag_ip_master/authorship.json index f542fd61..aca7719c 100644 --- a/revdrag_ip_master/authorship.json +++ b/revdrag_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/DateHelper.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"public class DateHelper {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":" private final static String dateFormat \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" public static LocalDateTime parse(String datetime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":" return LocalDateTime.parse(datetime, DateTimeFormatter.ofPattern(dateFormat));","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" public static String format(LocalDateTime datetime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" return datetime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mma\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" public static String saveFormat(LocalDateTime datetime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" return datetime.format(DateTimeFormatter.ofPattern(dateFormat));","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"revdrag":18}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" this.by \u003d DateHelper.parse(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" throw new DukeException(DukeException.WRONG_DATETIME_FORMAT);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" public String writeToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" int completed \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" return \"D \" + \"| \" + completed + \" | \" + this.description + \"| \" + DateHelper.saveFormat(this.by) + \"\\r\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":" return \"[D]\" + super.toString() + \"(by: \" + DateHelper.format(by) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"revdrag":28}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" final static String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" public Duke(String filepath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" this.storage \u003d new Storage(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" this.tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":" Ui.greet();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" String input \u003d userInput.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":" parser.parse(input, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":" input \u003d userInput.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":" parser.parse(input, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"revdrag"},"content":" try{","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"revdrag"},"content":" storage.writeTasksToFile(tasks.getTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"revdrag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"revdrag"},"content":" throw new DukeException(\"Cannot write tasks into file!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"revdrag"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"revdrag"},"content":" System.out.println(e.getMessage() + \"\\n\" + line);","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"revdrag"},"content":" new Duke(\"./data/data.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"revdrag":42,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"public class DukeException extends RuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":" private static final String OOPS \u003d \"Oopssss!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":" public static final String NON_EMPTY \u003d \"The description of %s cannot be empty!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":" public static final String UNKNOWN \u003d \"I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":" public static final String WRONG_DATETIME_FORMAT \u003d \"Sorry, please input the datetime in the format yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":" super(String.format(\"%s %s\", OOPS, message));","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"revdrag":10}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" this.from \u003d DateHelper.parse(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" this.to \u003d DateHelper.parse(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" throw new DukeException(DukeException.WRONG_DATETIME_FORMAT);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" public String writeToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":" int completed \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":" return \"E \" + \"| \" + completed + \" | \" + this.description + \" | \" + DateHelper.saveFormat(this.from)","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" + \" | \" + DateHelper.saveFormat(this.to) + \"\\r\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":" return \"[E]\" + super.toString() + \" (from: \" + DateHelper.format(from) + \" to: \" + DateHelper.format(to) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"revdrag":31}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":" final static String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":" public Parser() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" public void parse(String command, TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" String[] commandArr \u003d command.split(\" \",2);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" switch (commandArr[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" tasks.print();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" System.out.print(line + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" int mIndex \u003d command.charAt(5) - 49;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" Task t \u003d tasks.getTask(mIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" t.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" System.out.println(t.toString() + \"\\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":" int umIndex \u003d command.charAt(7) - 49;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" Task umTask \u003d tasks.getTask(umIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" umTask.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":" System.out.println(umTask.toString() + \"\\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":" if (commandArr[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"revdrag"},"content":" throw new DukeException(String.format(DukeException.NON_EMPTY, \"DEADLINE\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"revdrag"},"content":" String[] deadlineArr \u003d commandArr[1].split(\"/by \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"revdrag"},"content":" Task deadline \u003d new Deadline(deadlineArr[0], deadlineArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"revdrag"},"content":" tasks.addTask(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"revdrag"},"content":" System.out.println(\"added \" + deadline.toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list. \\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"revdrag"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"revdrag"},"content":" if (commandArr[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"revdrag"},"content":" throw new DukeException(String.format(DukeException.NON_EMPTY, \"EVENT\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"revdrag"},"content":" String[] eventArr1 \u003d commandArr[1].split(\" /from \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"revdrag"},"content":" String[] eventArr2 \u003d eventArr1[1].split(\" /to \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"revdrag"},"content":" Task event \u003d new Event(eventArr1[0], eventArr2[0], eventArr2[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"revdrag"},"content":" tasks.addTask(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"revdrag"},"content":" System.out.println(\"added \" + event.toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list. \\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"revdrag"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"revdrag"},"content":" if (commandArr[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"revdrag"},"content":" throw new DukeException(String.format(DukeException.NON_EMPTY, \"TODO\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"revdrag"},"content":" Task todo \u003d new Todo(commandArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"revdrag"},"content":" tasks.addTask(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"revdrag"},"content":" System.out.println(\"added \" + todo.toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list. \\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"revdrag"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"revdrag"},"content":" int deleteIndex \u003d command.charAt(7) - 49;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"revdrag"},"content":" Task deleted \u003d tasks.deleteTask(deleteIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Noted. I\u0027ve removed the task: \\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"revdrag"},"content":" System.out.println(deleted.toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list. \\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"revdrag"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"revdrag"},"content":" Ui.bye();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"revdrag"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"revdrag"},"content":" throw new DukeException(DukeException.UNKNOWN);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"revdrag"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"revdrag"},"content":" System.out.println(e.getMessage() + \"\\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"revdrag":76}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" private File dataFile;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" private String filepath;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" public Storage(String filepath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" this.dataFile \u003d new File(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" String directory \u003d dataFile.getParent();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" findDirectory(directory);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" findFile(dataFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" throw new DukeException(\"Cannot find file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" public static void findDirectory(String directory) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" File dataDirectory \u003d new File(directory);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":" if (dataDirectory.exists() \u0026\u0026 dataDirectory.isDirectory()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Directory exists.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":" if (dataDirectory.mkdir()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Directory created.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"revdrag"},"content":" public static void findFile(File dataFile) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"revdrag"},"content":" if (dataFile.exists() \u0026\u0026 dataFile.isFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Data file exists.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"revdrag"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"revdrag"},"content":" if (dataFile.createNewFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Data file created.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"revdrag"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"revdrag"},"content":" ArrayList\u003cTask\u003e storedList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"revdrag"},"content":" Scanner scanner \u003d new Scanner(this.dataFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"revdrag"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"revdrag"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"revdrag"},"content":" String[] existingData \u003d line.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"revdrag"},"content":" if (existingData[0].equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"revdrag"},"content":" Todo todo \u003d new Todo(existingData[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"revdrag"},"content":" if (existingData[1].equals(\"1\")) todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"revdrag"},"content":" storedList.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"revdrag"},"content":" } else if (existingData[0].equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"revdrag"},"content":" Deadline deadline \u003d new Deadline(existingData[2], existingData[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"revdrag"},"content":" if (existingData[1].equals(\"1\")) deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"revdrag"},"content":" storedList.add(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"revdrag"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"revdrag"},"content":" Event event \u003d new Event(existingData[2], existingData[3], existingData[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"revdrag"},"content":" if (existingData[1].equals(\"1\")) event.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"revdrag"},"content":" storedList.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"revdrag"},"content":" return storedList;","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"revdrag"},"content":" } catch (FileNotFoundException e){","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"revdrag"},"content":" throw new DukeException(\"Data File Not Found.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"revdrag"},"content":" public String getFilePath() {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"revdrag"},"content":" return this.filepath;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"revdrag"},"content":" public void writeTasksToFile(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"revdrag"},"content":" FileWriter fw \u003d new FileWriter(this.filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"revdrag"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"revdrag"},"content":" fw.write(task.writeToFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"revdrag"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"revdrag":83}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" return (isDone ? \"[X] \" : \"[ ] \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":" return this.getStatusIcon() + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":" abstract String writeToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"revdrag":30}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":" private final ArrayList\u003cTask\u003e tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" this.tasklist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" public TaskList(ArrayList\u003cTask\u003e loadedFile) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" this.tasklist \u003d loadedFile;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" this.tasklist.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" Task deletedTask \u003d tasklist.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" tasklist.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" return deletedTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" return tasklist.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":" return tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"revdrag"},"content":" public int getSize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"revdrag"},"content":" return tasklist.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"revdrag"},"content":" public void print() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"revdrag"},"content":" System.out.print(\"Here are the tasks in your list: \\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"revdrag"},"content":" for (int i \u003d 0; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"revdrag"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"revdrag"},"content":" Task t \u003d tasklist.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"revdrag"},"content":" System.out.println(index + \".\" + t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"revdrag":44}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" public String writeToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" int completed \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" return \"T \" + \"| \" + completed + \" | \" + this.description + \"\\r\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"revdrag":20}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":" final static String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":" public static void greet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":" String logo \u003d \" ┏┓\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":" + \" ┃┃\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" + \" ┃┗━┳┓╋┏┳━━┓\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":" + \" ┃┏┓┃┃╋┃┃┃━┫\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" + \" ┗━━┻━┓┏┻━━┛\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" + \" ╋╋╋┏━┛┃\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" + \" ╋╋╋┗━━┛\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" System.out.println(\"\\nHello! I\u0027m \\n\" + logo);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" System.out.println(\"How can I help you? \\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" public static void bye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Bye (actually hehe). Hope to see you again!\\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"revdrag":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"todo read a book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"deadline buy groceries /by tmr","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"event dinner /from Monday 6pm /to Monday 7pm","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":"list","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"revdrag":8}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"revdrag":2,"-":22}},{"path":"src/main/java/duke/DateHelper.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"public class DateHelper {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" private final static String dateFormat \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" public static LocalDateTime parse(String datetime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" return LocalDateTime.parse(datetime, DateTimeFormatter.ofPattern(dateFormat));","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" public static String format(LocalDateTime datetime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" return datetime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mma\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" public static String saveFormat(LocalDateTime datetime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" return datetime.format(DateTimeFormatter.ofPattern(dateFormat));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"revdrag":20}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" final static String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" public Duke(String filepath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" this.storage \u003d new Storage(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" this.tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" Ui.greet();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":" String input \u003d userInput.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":" parser.parse(input, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"revdrag"},"content":" input \u003d userInput.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"revdrag"},"content":" parser.parse(input, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"revdrag"},"content":" try{","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"revdrag"},"content":" storage.writeTasksToFile(tasks.getTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"revdrag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"revdrag"},"content":" throw new DukeException(\"Cannot write tasks into file!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"revdrag"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"revdrag"},"content":" System.out.println(e.getMessage() + \"\\n\" + line);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"revdrag"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"revdrag"},"content":" new Duke(\"./data/data.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"revdrag":45,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"public class DukeException extends RuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":" private static final String OOPS \u003d \"Oopssss!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":" public static final String NON_EMPTY \u003d \"The description of %s cannot be empty!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":" public static final String UNKNOWN \u003d \"I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" public static final String WRONG_DATETIME_FORMAT \u003d \"Sorry, please input the datetime in the format yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" super(String.format(\"%s %s\", OOPS, message));","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"revdrag":12}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" final static String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" public Parser() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" public void parse(String command, TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" String[] commandArr \u003d command.split(\" \",2);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" switch (commandArr[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" tasks.print();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" System.out.print(line + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":" int mIndex \u003d command.charAt(5) - 49;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" Task t \u003d tasks.getTask(mIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" t.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":" System.out.println(t.toString() + \"\\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":" int umIndex \u003d command.charAt(7) - 49;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"revdrag"},"content":" Task umTask \u003d tasks.getTask(umIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"revdrag"},"content":" umTask.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"revdrag"},"content":" System.out.println(umTask.toString() + \"\\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"revdrag"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"revdrag"},"content":" if (commandArr[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"revdrag"},"content":" throw new DukeException(String.format(DukeException.NON_EMPTY, \"DEADLINE\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"revdrag"},"content":" String[] deadlineArr \u003d commandArr[1].split(\"/by \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"revdrag"},"content":" Task deadline \u003d new Deadline(deadlineArr[0], deadlineArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"revdrag"},"content":" tasks.addTask(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"revdrag"},"content":" System.out.println(\"added \" + deadline.toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list. \\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"revdrag"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"revdrag"},"content":" if (commandArr[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"revdrag"},"content":" throw new DukeException(String.format(DukeException.NON_EMPTY, \"EVENT\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"revdrag"},"content":" String[] eventArr1 \u003d commandArr[1].split(\" /from \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"revdrag"},"content":" String[] eventArr2 \u003d eventArr1[1].split(\" /to \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"revdrag"},"content":" Task event \u003d new Event(eventArr1[0], eventArr2[0], eventArr2[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"revdrag"},"content":" tasks.addTask(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"revdrag"},"content":" System.out.println(\"added \" + event.toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list. \\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"revdrag"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"revdrag"},"content":" if (commandArr[1].isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"revdrag"},"content":" throw new DukeException(String.format(DukeException.NON_EMPTY, \"TODO\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"revdrag"},"content":" Task todo \u003d new Todo(commandArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"revdrag"},"content":" tasks.addTask(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"revdrag"},"content":" System.out.println(\"added \" + todo.toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list. \\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"revdrag"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"revdrag"},"content":" int deleteIndex \u003d command.charAt(7) - 49;","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"revdrag"},"content":" Task deleted \u003d tasks.deleteTask(deleteIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Noted. I\u0027ve removed the task: \\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"revdrag"},"content":" System.out.println(deleted.toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list. \\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"revdrag"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"revdrag"},"content":" Ui.bye();","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"revdrag"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"revdrag"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"revdrag"},"content":" throw new DukeException(DukeException.UNKNOWN);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"revdrag"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"revdrag"},"content":" System.out.println(e.getMessage() + \"\\n\" + line);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"revdrag":83}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" private File dataFile;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" private String filepath;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" public Storage(String filepath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" this.dataFile \u003d new File(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":" String directory \u003d dataFile.getParent();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":" findDirectory(directory);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" findFile(dataFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":" throw new DukeException(\"Cannot find file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"revdrag"},"content":" public static void findDirectory(String directory) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"revdrag"},"content":" File dataDirectory \u003d new File(directory);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"revdrag"},"content":" if (dataDirectory.exists() \u0026\u0026 dataDirectory.isDirectory()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Directory exists.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"revdrag"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"revdrag"},"content":" if (dataDirectory.mkdir()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Directory created.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"revdrag"},"content":" public static void findFile(File dataFile) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"revdrag"},"content":" if (dataFile.exists() \u0026\u0026 dataFile.isFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Data file exists.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"revdrag"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"revdrag"},"content":" if (dataFile.createNewFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Data file created.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"revdrag"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"revdrag"},"content":" ArrayList\u003cTask\u003e storedList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"revdrag"},"content":" Scanner scanner \u003d new Scanner(this.dataFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"revdrag"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"revdrag"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"revdrag"},"content":" String[] existingData \u003d line.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"revdrag"},"content":" if (existingData[0].equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"revdrag"},"content":" Todo todo \u003d new Todo(existingData[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"revdrag"},"content":" if (existingData[1].equals(\"1\")) todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"revdrag"},"content":" storedList.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"revdrag"},"content":" } else if (existingData[0].equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"revdrag"},"content":" Deadline deadline \u003d new Deadline(existingData[2], existingData[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"revdrag"},"content":" if (existingData[1].equals(\"1\")) deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"revdrag"},"content":" storedList.add(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"revdrag"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"revdrag"},"content":" Event event \u003d new Event(existingData[2], existingData[3], existingData[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"revdrag"},"content":" if (existingData[1].equals(\"1\")) event.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"revdrag"},"content":" storedList.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"revdrag"},"content":" return storedList;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"revdrag"},"content":" } catch (FileNotFoundException e){","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"revdrag"},"content":" throw new DukeException(\"Data File Not Found.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"revdrag"},"content":" public String getFilePath() {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"revdrag"},"content":" return this.filepath;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"revdrag"},"content":" public void writeTasksToFile(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"revdrag"},"content":" FileWriter fw \u003d new FileWriter(this.filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"revdrag"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"revdrag"},"content":" fw.write(task.writeToFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"revdrag"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"revdrag":90}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":" private final ArrayList\u003cTask\u003e tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" this.tasklist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" public TaskList(ArrayList\u003cTask\u003e loadedFile) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" this.tasklist \u003d loadedFile;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" this.tasklist.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":" Task deletedTask \u003d tasklist.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" tasklist.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" return deletedTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":" return tasklist.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"revdrag"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"revdrag"},"content":" return tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"revdrag"},"content":" public int getSize() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"revdrag"},"content":" return tasklist.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"revdrag"},"content":" public void print() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"revdrag"},"content":" System.out.print(\"Here are the tasks in your list: \\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"revdrag"},"content":" for (int i \u003d 0; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"revdrag"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"revdrag"},"content":" Task t \u003d tasklist.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"revdrag"},"content":" System.out.println(index + \".\" + t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"revdrag":48}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":" final static String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":" public static void greet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" String logo \u003d \" ┏┓\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":" + \" ┃┃\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" + \" ┃┗━┳┓╋┏┳━━┓\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" + \" ┃┏┓┃┃╋┃┃┃━┫\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" + \" ┗━━┻━┓┏┻━━┛\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" + \" ╋╋╋┏━┛┃\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" + \" ╋╋╋┗━━┛\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" System.out.println(\"\\nHello! I\u0027m \\n\" + logo);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" System.out.println(\"How can I help you? \\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" public static void bye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" System.out.println(\"Bye (actually hehe). Hope to see you again!\\n\" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"revdrag":21}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"import duke.DateHelper;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" this.by \u003d DateHelper.parse(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" throw new DukeException(DukeException.WRONG_DATETIME_FORMAT);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":" public String writeToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":" int completed \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" return \"D \" + \"| \" + completed + \" | \" + this.description + \"| \" + DateHelper.saveFormat(this.by) + \"\\r\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":" return \"[D]\" + super.toString() + \"(by: \" + DateHelper.format(by) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"revdrag":31}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"import duke.DateHelper;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" this.from \u003d DateHelper.parse(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" this.to \u003d DateHelper.parse(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" throw new DukeException(DukeException.WRONG_DATETIME_FORMAT);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" public String writeToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" int completed \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":" return \"E \" + \"| \" + completed + \" | \" + this.description + \" | \" + DateHelper.saveFormat(this.from)","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":" + \" | \" + DateHelper.saveFormat(this.to) + \"\\r\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"revdrag"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"revdrag"},"content":" return \"[E]\" + super.toString() + \" (from: \" + DateHelper.format(from) + \" to: \" + DateHelper.format(to) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"revdrag":34}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" return (isDone ? \"[X] \" : \"[ ] \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"revdrag"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"revdrag"},"content":" return this.getStatusIcon() + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"revdrag"},"content":" public abstract String writeToFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"revdrag":30}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"revdrag"},"content":" public String writeToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"revdrag"},"content":" int completed \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"revdrag"},"content":" return \"T \" + \"| \" + completed + \" | \" + this.description + \"\\r\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"revdrag"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"revdrag"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"revdrag"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"revdrag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"revdrag"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"revdrag"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"revdrag":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"revdrag"},"content":"todo read a book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"revdrag"},"content":"deadline buy groceries /by tmr","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"revdrag"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"revdrag"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"revdrag"},"content":"event dinner /from Monday 6pm /to Monday 7pm","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"revdrag"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"revdrag"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"revdrag"},"content":"list","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"revdrag":8}},{"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":"revdrag"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"revdrag":1,"-":20}}] diff --git a/revdrag_ip_master/commits.json b/revdrag_ip_master/commits.json index bb171bf3..8075b26f 100644 --- a/revdrag_ip_master/commits.json +++ b/revdrag_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"revdrag":[{"date":"2023-08-22","commitResults":[{"hash":"98012a3b0a1de56d96339159aadf3da2b2f35960","isMergeCommit":false,"messageTitle":"Implemented Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":7}}},{"hash":"fc06ec5c6dfd30cfd762b36a822b5fbf6800552d","isMergeCommit":false,"messageTitle":"Implemented Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"9cca03b42744a83dcd99beb4700bdedd4ae4e2c5","isMergeCommit":false,"messageTitle":"Implemented Level-2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"551b6ee5566b5350ac9b3001d63c2100c48df35f","isMergeCommit":false,"messageTitle":"Fixed a bug with level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"0a7496564e1b78f9ced7b94f3a091e0026081560","isMergeCommit":false,"messageTitle":"Implemented Level-3 and A-Classes","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":4}}},{"hash":"cdbebcd85fb98fe24810c499d0fe97247841756f","isMergeCommit":false,"messageTitle":"Implemented Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":28}}},{"hash":"550705beb9caf5e795c2fc82901751f0ce38e4a2","isMergeCommit":false,"messageTitle":"Implemented A-TextUiTesting and added some extra lines to Duke","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":9,"deletions":3}}},{"hash":"7eeef97b272c2735c6d66cb5c5487269421d0211","isMergeCommit":false,"messageTitle":"Implemented Level-5 and A-Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":48}}},{"hash":"ce0b9d6c6a52b5bbda548e26f4851f3c20548a76","isMergeCommit":false,"messageTitle":"Implemented Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"8ebd889c14ece3a9e9193c8becae47d750717295","isMergeCommit":false,"messageTitle":"Add reading file logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":168,"deletions":75}}},{"hash":"f380b9cd356ab1b98c6c0c147e3f3704a1e69ba1","isMergeCommit":false,"messageTitle":"Implement branch-Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":74}}},{"hash":"c8d4f4ef4e9fd885b390a05382322248dbd2d5c2","isMergeCommit":false,"messageTitle":"This reverts commit f380b9cd356ab1b98c6c0c147e3f3704a1e69ba1.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":93}}},{"hash":"d7ca1bb9586c762edb37a9c1ce87fd18fc500acf","isMergeCommit":false,"messageTitle":"Update Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}},{"hash":"f78ecf6ab6b35514275d7336bc6fe8bfe882ed6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"57f943bd47e7c1504720c92a00cf2076f94feea1","isMergeCommit":false,"messageTitle":"Fix Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}},{"hash":"c1dd4b30d9051325474c31ed774564ec0fc1a33c","isMergeCommit":false,"messageTitle":"Implement Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":81}}},{"hash":"cd6366600c4d2df4dd6e7113f6b390316ab74f75","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"079f0709c7bc9ed50b6b9d7e4c1083576dc52932","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":260,"deletions":180}}},{"hash":"4350a0d6c81254d82c9ef5e97d37205b81a1e8f7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"revdrag":{"java":401,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":8}},"authorContributionVariance":{"revdrag":51850.2},"authorDisplayNameMap":{"revdrag":"CS2103T-T15-3 WANG..ELIN"}} +{"authorDailyContributionsMap":{"revdrag":[{"date":"2023-08-22","commitResults":[{"hash":"98012a3b0a1de56d96339159aadf3da2b2f35960","isMergeCommit":false,"messageTitle":"Implemented Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":7}}},{"hash":"fc06ec5c6dfd30cfd762b36a822b5fbf6800552d","isMergeCommit":false,"messageTitle":"Implemented Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"9cca03b42744a83dcd99beb4700bdedd4ae4e2c5","isMergeCommit":false,"messageTitle":"Implemented Level-2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"551b6ee5566b5350ac9b3001d63c2100c48df35f","isMergeCommit":false,"messageTitle":"Fixed a bug with level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"0a7496564e1b78f9ced7b94f3a091e0026081560","isMergeCommit":false,"messageTitle":"Implemented Level-3 and A-Classes","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":4}}},{"hash":"cdbebcd85fb98fe24810c499d0fe97247841756f","isMergeCommit":false,"messageTitle":"Implemented Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":28}}},{"hash":"550705beb9caf5e795c2fc82901751f0ce38e4a2","isMergeCommit":false,"messageTitle":"Implemented A-TextUiTesting and added some extra lines to Duke","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":9,"deletions":3}}},{"hash":"7eeef97b272c2735c6d66cb5c5487269421d0211","isMergeCommit":false,"messageTitle":"Implemented Level-5 and A-Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":48}}},{"hash":"ce0b9d6c6a52b5bbda548e26f4851f3c20548a76","isMergeCommit":false,"messageTitle":"Implemented Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"8ebd889c14ece3a9e9193c8becae47d750717295","isMergeCommit":false,"messageTitle":"Add reading file logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":168,"deletions":75}}},{"hash":"f380b9cd356ab1b98c6c0c147e3f3704a1e69ba1","isMergeCommit":false,"messageTitle":"Implement branch-Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":74}}},{"hash":"c8d4f4ef4e9fd885b390a05382322248dbd2d5c2","isMergeCommit":false,"messageTitle":"This reverts commit f380b9cd356ab1b98c6c0c147e3f3704a1e69ba1.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":93}}},{"hash":"d7ca1bb9586c762edb37a9c1ce87fd18fc500acf","isMergeCommit":false,"messageTitle":"Update Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}},{"hash":"f78ecf6ab6b35514275d7336bc6fe8bfe882ed6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"57f943bd47e7c1504720c92a00cf2076f94feea1","isMergeCommit":false,"messageTitle":"Fix Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}},{"hash":"c1dd4b30d9051325474c31ed774564ec0fc1a33c","isMergeCommit":false,"messageTitle":"Implement Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":81}}},{"hash":"cd6366600c4d2df4dd6e7113f6b390316ab74f75","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"079f0709c7bc9ed50b6b9d7e4c1083576dc52932","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":260,"deletions":180}}},{"hash":"4350a0d6c81254d82c9ef5e97d37205b81a1e8f7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"26ed1dfbf066df2db56f5a1d40dc9104df2c0624","isMergeCommit":false,"messageTitle":"Implement A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":8},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"736785bd1271bf720a9832cd0682448e9a500a44","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"revdrag":{"java":435,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":8}},"authorContributionVariance":{"revdrag":54478.457},"authorDisplayNameMap":{"revdrag":"CS2103T-T15-3 WANG..ELIN"}} diff --git a/ricketytoc_ip_master/authorship.json b/ricketytoc_ip_master/authorship.json index f0674f24..e2fdb313 100644 --- a/ricketytoc_ip_master/authorship.json +++ b/ricketytoc_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ricketytoc"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ricketytoc"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ricketytoc"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ricketytoc"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ricketytoc"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ricketytoc"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ricketytoc"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ricketytoc"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ricketytoc"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":15}},{"path":"src/main/java/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"public class InvalidInputException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":" public InvalidInputException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":" super(\"OOPS!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":" public InvalidInputException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ricketytoc"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":8}},{"path":"src/main/java/Richie.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":"public class Richie {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":" static private String CHATBOT_NAME \u003d \"Richie\";","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":" static private ArrayList\u003cTask\u003e itemArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":" public static void addItem(Task item) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":" itemArray.add(item);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ricketytoc"},"content":" public static String listItems() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ricketytoc"},"content":" int length \u003d itemArray.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ricketytoc"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ricketytoc"},"content":" for (int i \u003d 0; i \u003c length; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ricketytoc"},"content":" result +\u003d (i + 1) + \".\" + itemArray.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ricketytoc"},"content":" return result;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ricketytoc"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Hello! I\u0027m \" + CHATBOT_NAME + \"\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ricketytoc"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ricketytoc"},"content":" String message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ricketytoc"},"content":" while (!message.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"ricketytoc"},"content":" String[] stringArray \u003d message.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ricketytoc"},"content":" if (message.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"ricketytoc"},"content":" System.out.println(listItems());","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ricketytoc"},"content":" } else if (stringArray[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"ricketytoc"},"content":" int taskIndex \u003d Integer.parseInt(stringArray[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"ricketytoc"},"content":" Task task \u003d itemArray.get(taskIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"ricketytoc"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n \" + task);","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ricketytoc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Incomplete input, please specify which task to mark\");","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"ricketytoc"},"content":" } else if (stringArray[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"ricketytoc"},"content":" int taskIndex \u003d Integer.parseInt(stringArray[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"ricketytoc"},"content":" System.out.println(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"ricketytoc"},"content":" Task task \u003d itemArray.get(taskIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"ricketytoc"},"content":" itemArray.remove(taskIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + task + \"\\nNow you have \" + itemArray.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"ricketytoc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Incomplete input, please specify which task to delete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"ricketytoc"},"content":" } else if (stringArray[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"ricketytoc"},"content":" String[] stringArray2 \u003d stringArray[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"ricketytoc"},"content":" Deadline deadline \u003d new Deadline(stringArray2[0], stringArray2[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"ricketytoc"},"content":" addItem(deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + deadline.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"ricketytoc"},"content":" + \"\\nNow you have \" + itemArray.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"ricketytoc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"OOPS!! Either the description or the deadline is empty!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"ricketytoc"},"content":" } else if (stringArray[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"ricketytoc"},"content":" Todo todo \u003d new Todo(stringArray[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"ricketytoc"},"content":" addItem(todo);","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + todo.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"ricketytoc"},"content":" + \"\\nNow you have \" + itemArray.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"ricketytoc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"OOPS!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"ricketytoc"},"content":" } else if (stringArray[0].equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"ricketytoc"},"content":" String[] stringArray2 \u003d stringArray[1].split(\" /from \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"ricketytoc"},"content":" String[] stringArray3 \u003d stringArray2[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"ricketytoc"},"content":" Event event \u003d new Event(stringArray2[0], stringArray3[0], stringArray3[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"ricketytoc"},"content":" addItem(event);","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + event.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"ricketytoc"},"content":" + \"\\nNow you have \" + itemArray.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"ricketytoc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"OOPS!! The description of a event or the duration of the event is incomplete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"ricketytoc"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"ricketytoc"},"content":" throw new InvalidInputException();","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"ricketytoc"},"content":" } catch (InvalidInputException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"ricketytoc"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"ricketytoc"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":102}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ricketytoc"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ricketytoc"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ricketytoc"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ricketytoc"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ricketytoc"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ricketytoc"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ricketytoc"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":23}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ricketytoc"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ricketytoc"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ricketytoc"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"deadline mop the floor /by 5pm","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":"event project meeting /from 6pm /to 8pm","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":7}},{"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":"ricketytoc"},"content":"java -classpath ../bin Richie \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":{"ricketytoc":1,"-":37}}] +[{"path":"src/data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"T/0/walk dog","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":"D/0/do homework/2009-12-02T04:00","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":"D/0/do project/2024-11-12T16:49","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":"E/0/project meeting/2024-09-01T22:00/2024-09-01T22:00","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":"E/0/project meeting/2024-09-01T21:00/2024-09-01T22:00","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ricketytoc":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":" * Represents a Deadline event in the Richie application","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ricketytoc"},"content":"class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ricketytoc"},"content":" private LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ricketytoc"},"content":" * Constructor for the Deadline task","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ricketytoc"},"content":" * @param description Description of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ricketytoc"},"content":" * @param by The time that the task has to be completed by","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ricketytoc"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ricketytoc"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ricketytoc"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ricketytoc"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"ricketytoc"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ricketytoc"},"content":" return \"[D]\" + super.toString() + \" (by: \" + convertByToString() + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ricketytoc"},"content":" * Returns the LocalDateTime date and time of when the task should be done by","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ricketytoc"},"content":" * @return LocalDateTime of the date and time of deadline of task","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ricketytoc"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ricketytoc"},"content":" return this.by;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ricketytoc"},"content":" * Converts the LocalDateTime by into a String","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ricketytoc"},"content":" * @return String that represents the by","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ricketytoc"},"content":" public String convertByToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ricketytoc"},"content":" return this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy \u0027at\u0027 hh:mm a\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ricketytoc"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":41}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":" * Represents a Event task in Richie application","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":"class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ricketytoc"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ricketytoc"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ricketytoc"},"content":" * Constructor for the Event task","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ricketytoc"},"content":" * @param description Description of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ricketytoc"},"content":" * @param from The time that the event begins","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ricketytoc"},"content":" * @param to The time that the event ends","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ricketytoc"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ricketytoc"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ricketytoc"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ricketytoc"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ricketytoc"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"ricketytoc"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"ricketytoc"},"content":" return \"[E]\" + super.toString() + \" (from: \" + convertFromToString() + \" to: \" + convertToToString() + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ricketytoc"},"content":" * Returns LocalDateTime date and time of when task starts","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ricketytoc"},"content":" * @return LocalDateTime of when the task starts","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ricketytoc"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ricketytoc"},"content":" return this.from;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ricketytoc"},"content":" * Returns LocalDateTime date and time of when task is done","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ricketytoc"},"content":" * @return LocalDateTime of when the task ends","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ricketytoc"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ricketytoc"},"content":" return this.to;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ricketytoc"},"content":" * Converts From to a String format","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ricketytoc"},"content":" * @return String that represents the From","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ricketytoc"},"content":" public String convertFromToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ricketytoc"},"content":" return this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy \u0027at\u0027 hh:mm a\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ricketytoc"},"content":" * Converts To to a string format","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ricketytoc"},"content":" * @return String that represents the To","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ricketytoc"},"content":" public String convertToToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ricketytoc"},"content":" return this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy \u0027at\u0027 hh:mm a\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ricketytoc"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":59}},{"path":"src/main/java/Richie.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":"import java.time.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ricketytoc"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ricketytoc"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ricketytoc"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ricketytoc"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ricketytoc"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ricketytoc"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ricketytoc"},"content":"public class Richie {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ricketytoc"},"content":" static private String CHATBOT_NAME \u003d \"Richie\";","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ricketytoc"},"content":" static private ArrayList\u003cTask\u003e itemArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ricketytoc"},"content":" static private String dataFilePathname \u003d \"src/data.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ricketytoc"},"content":" private static void loadTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ricketytoc"},"content":" File textFile \u003d new File(dataFilePathname);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ricketytoc"},"content":" if (textFile.createNewFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"File created: \" + textFile.getName());","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ricketytoc"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Data file already exists\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ricketytoc"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new FileReader(dataFilePathname));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ricketytoc"},"content":" String taskString;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ricketytoc"},"content":" while ((taskString \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ricketytoc"},"content":" Task task\u003d deconstructStringIntoTask(taskString);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ricketytoc"},"content":" itemArray.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ricketytoc"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ricketytoc"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ricketytoc"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ricketytoc"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ricketytoc"},"content":" } catch (RichieException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ricketytoc"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ricketytoc"},"content":" private static Task deconstructStringIntoTask(String line) throws RichieException {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ricketytoc"},"content":" String[] array \u003d line.split(\"/\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ricketytoc"},"content":" if (array[0].equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ricketytoc"},"content":" String[] arrayT \u003d line.split(\"/\", 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ricketytoc"},"content":" Todo task \u003d new Todo(arrayT[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ricketytoc"},"content":" if (arrayT[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ricketytoc"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ricketytoc"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ricketytoc"},"content":" } else if (array[0].equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ricketytoc"},"content":" String[] arrayD \u003d line.split(\"/\", 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ricketytoc"},"content":" LocalDateTime byDateTime \u003d LocalDateTime.parse(arrayD[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ricketytoc"},"content":" Deadline task \u003d new Deadline(arrayD[2], byDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ricketytoc"},"content":" if (arrayD[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ricketytoc"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ricketytoc"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ricketytoc"},"content":" } else if (array[0].equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ricketytoc"},"content":" String[] arrayE \u003d line.split(\"/\", 5);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ricketytoc"},"content":" LocalDateTime fromDateTime \u003d LocalDateTime.parse(arrayE[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ricketytoc"},"content":" LocalDateTime toDateTime \u003d LocalDateTime.parse(arrayE[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ricketytoc"},"content":" Event task \u003d new Event(arrayE[2], fromDateTime, toDateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ricketytoc"},"content":" if (arrayE[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ricketytoc"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"ricketytoc"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"ricketytoc"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"ricketytoc"},"content":" throw new RichieException(\"Invalid input in data file!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ricketytoc"},"content":" * Adds a task into the task array","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ricketytoc"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"ricketytoc"},"content":" * @Param item The task that should be added to the task array","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"ricketytoc"},"content":" public static void addItem(Task item) {","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"ricketytoc"},"content":" itemArray.add(item);","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"ricketytoc"},"content":" * Returns a formatted string that lists out all the tasks that are in the task array","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"ricketytoc"},"content":" * @return A string that lists out all the tasks that are in the task array","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"ricketytoc"},"content":" public static String listItems() {","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"ricketytoc"},"content":" int length \u003d itemArray.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"ricketytoc"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"ricketytoc"},"content":" for (int i \u003d 0; i \u003c length; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"ricketytoc"},"content":" result +\u003d (i + 1) + \".\" + itemArray.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"ricketytoc"},"content":" return result;","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"ricketytoc"},"content":" private static void saveCurrentTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"ricketytoc"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(new FileWriter(dataFilePathname));","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"ricketytoc"},"content":" for (Task task : itemArray) {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"ricketytoc"},"content":" String doneNum \u003d task.getIsDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"ricketytoc"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"ricketytoc"},"content":"// System.out.println(\"success\");","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"ricketytoc"},"content":" bufferedWriter.append(\"T/\" + doneNum + \"/\" + task.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"ricketytoc"},"content":" bufferedWriter.append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"ricketytoc"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"ricketytoc"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"ricketytoc"},"content":" bufferedWriter.append(\"D/\" + doneNum + \"/\" + deadline.getDescription() + \"/\"","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"ricketytoc"},"content":" + deadline.getBy().toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"ricketytoc"},"content":" bufferedWriter.append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"ricketytoc"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"ricketytoc"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"ricketytoc"},"content":" bufferedWriter.append(\"E/\" + doneNum + \"/\" + event.getDescription() + \"/\"","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"ricketytoc"},"content":" + event.getFrom().toString() + \"/\"","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"ricketytoc"},"content":" + event.getTo().toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"ricketytoc"},"content":" bufferedWriter.append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"ricketytoc"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"ricketytoc"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"ricketytoc"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"ricketytoc"},"content":" private static LocalDateTime convertInputDateAndTimeIntoLocalDateTime(String input) throws RichieException {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"ricketytoc"},"content":" String stringDateTime \u003d input;","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"ricketytoc"},"content":" String[] dateTimeArray \u003d stringDateTime.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"ricketytoc"},"content":" String stringDate \u003d dateTimeArray[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"ricketytoc"},"content":" String stringTime \u003d dateTimeArray[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"ricketytoc"},"content":" String[] dayMonthYearArray \u003d stringDate.split(\"/\", 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"ricketytoc"},"content":" LocalDate date \u003d LocalDate.of(Integer.parseInt(dayMonthYearArray[2]), Integer.parseInt(dayMonthYearArray[1]),","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"ricketytoc"},"content":" Integer.parseInt(dayMonthYearArray[0]));","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"ricketytoc"},"content":" LocalTime time \u003d LocalTime.of(Integer.parseInt(stringTime.substring(0, 2)), Integer.parseInt(stringTime.substring(2, 4)));","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"ricketytoc"},"content":" LocalDateTime dateTime \u003d LocalDateTime.of(date, time);","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"ricketytoc"},"content":" return dateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"ricketytoc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"ricketytoc"},"content":" throw new RichieException(\"Date and Time entered is in the wrong format!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"ricketytoc"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"ricketytoc"},"content":" throw new RichieException(\"Date and Time entered is in the wrong format!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"ricketytoc"},"content":" * Early version of code which handles all parsing on user inputs, storage of tasks and user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"ricketytoc"},"content":" * @param args not used in this application","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"ricketytoc"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Hello! I\u0027m \" + CHATBOT_NAME + \"\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"ricketytoc"},"content":" Richie.loadTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"ricketytoc"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"ricketytoc"},"content":" String message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"ricketytoc"},"content":" while (!message.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"ricketytoc"},"content":" String[] stringArray \u003d message.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"ricketytoc"},"content":" if (message.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"ricketytoc"},"content":" System.out.println(listItems());","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"ricketytoc"},"content":" } else if (stringArray[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"ricketytoc"},"content":" int taskIndex \u003d Integer.parseInt(stringArray[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"ricketytoc"},"content":" Task task \u003d itemArray.get(taskIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"ricketytoc"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"ricketytoc"},"content":" saveCurrentTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n \" + task);","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"ricketytoc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Incomplete input, please specify which task to mark\");","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"ricketytoc"},"content":" } else if (stringArray[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"ricketytoc"},"content":" int taskIndex \u003d Integer.parseInt(stringArray[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"ricketytoc"},"content":" System.out.println(taskIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"ricketytoc"},"content":" Task task \u003d itemArray.get(taskIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"ricketytoc"},"content":" itemArray.remove(taskIndex - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"ricketytoc"},"content":" saveCurrentTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + task + \"\\nNow you have \" + itemArray.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"ricketytoc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Incomplete input, please specify which task to delete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"ricketytoc"},"content":" } else if (stringArray[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"ricketytoc"},"content":" String[] stringArray2 \u003d stringArray[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"ricketytoc"},"content":" LocalDateTime dateTime \u003d convertInputDateAndTimeIntoLocalDateTime(stringArray2[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"ricketytoc"},"content":" Deadline deadline \u003d new Deadline(stringArray2[0], dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"ricketytoc"},"content":" addItem(deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"ricketytoc"},"content":" saveCurrentTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + deadline.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"ricketytoc"},"content":" + \"\\nNow you have \" + itemArray.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"ricketytoc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"OOPS!! Either the description or the deadline is empty!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"ricketytoc"},"content":" } catch (RichieException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"ricketytoc"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"ricketytoc"},"content":" } else if (stringArray[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"ricketytoc"},"content":" Todo todo \u003d new Todo(stringArray[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"ricketytoc"},"content":" addItem(todo);","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"ricketytoc"},"content":" saveCurrentTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + todo.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"ricketytoc"},"content":" + \"\\nNow you have \" + itemArray.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"ricketytoc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"OOPS!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":217,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":218,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"ricketytoc"},"content":" } else if (stringArray[0].equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":221,"author":{"gitId":"ricketytoc"},"content":" String[] stringArray2 \u003d stringArray[1].split(\" /from \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":222,"author":{"gitId":"ricketytoc"},"content":" String[] stringArray3 \u003d stringArray2[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"ricketytoc"},"content":" String stringFromDateTime \u003d stringArray3[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"ricketytoc"},"content":" String stringToDateTime \u003d stringArray3[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"ricketytoc"},"content":" Event event \u003d new Event(stringArray2[0], convertInputDateAndTimeIntoLocalDateTime(stringFromDateTime),","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"ricketytoc"},"content":" convertInputDateAndTimeIntoLocalDateTime(stringToDateTime));","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"ricketytoc"},"content":" addItem(event);","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"ricketytoc"},"content":" saveCurrentTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + event.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":230,"author":{"gitId":"ricketytoc"},"content":" + \"\\nNow you have \" + itemArray.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":231,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"ricketytoc"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"OOPS!! The description of a event or the duration of the event is incomplete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":234,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"ricketytoc"},"content":" } catch (RichieException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"ricketytoc"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":240,"author":{"gitId":"ricketytoc"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":241,"author":{"gitId":"ricketytoc"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"ricketytoc"},"content":" throw new RichieException();","lastModifiedDate":"2023-08-31"},{"lineNumber":243,"author":{"gitId":"ricketytoc"},"content":" } catch (RichieException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":244,"author":{"gitId":"ricketytoc"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":245,"author":{"gitId":"ricketytoc"},"content":" message \u003d input.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":247,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":248,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":249,"author":{"gitId":"ricketytoc"},"content":" saveCurrentTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"ricketytoc"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":251,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":252,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"ricketytoc"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":253}},{"path":"src/main/java/RichieException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":" * Represents an exception that is unique to the Richie application","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":"public class RichieException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":" * Constructs a RichieException with a default error message telling the user that it does not understand the user","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ricketytoc"},"content":" * input","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ricketytoc"},"content":" public RichieException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ricketytoc"},"content":" super(\"OOPS!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ricketytoc"},"content":" * Constructs a RichieException with a specified message","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ricketytoc"},"content":" * @param message Error message to be shown to the user","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ricketytoc"},"content":" public RichieException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ricketytoc"},"content":" super(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ricketytoc"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ricketytoc":21}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":" * Task class for the Richie application","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ricketytoc"},"content":" * Constructor for a task which initialises the task description and whether it is already done","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ricketytoc"},"content":" * @param description Represents the task name","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ricketytoc"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ricketytoc"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ricketytoc"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ricketytoc"},"content":" * Gets the status icon for the task, if the task is done the icon is an X if not it is empty","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ricketytoc"},"content":" * @return X if task is done, space if task is not done","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ricketytoc"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"ricketytoc"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ricketytoc"},"content":" * Returns a string representation of the task which includes whether the task is already done","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ricketytoc"},"content":" * @return A string that includes the task status icon and its description","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ricketytoc"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"ricketytoc"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"ricketytoc"},"content":" * Marks a task as done","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ricketytoc"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"ricketytoc"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ricketytoc"},"content":" * Returns the string description of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ricketytoc"},"content":" * @return String description of task","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ricketytoc"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ricketytoc"},"content":" return this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ricketytoc"},"content":" * Returns whether the task has been done","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ricketytoc"},"content":" * @return boolean representing whether the task has been done","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ricketytoc"},"content":" public boolean getIsDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ricketytoc"},"content":" return this.isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"ricketytoc"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":58}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":" * Represents a task that is ToDo in the Richie application","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":"class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ricketytoc"},"content":" * Constructor for a ToDo task","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ricketytoc"},"content":" * @param description Name or description of the ToDo task","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ricketytoc"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ricketytoc"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ricketytoc"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ricketytoc"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ricketytoc"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ricketytoc"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"ricketytoc"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"ricketytoc"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ricketytoc"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ricketytoc"},"content":"deadline mop the floor /by 5pm","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ricketytoc"},"content":"event project meeting /from 6pm /to 8pm","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ricketytoc"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ricketytoc"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ricketytoc"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ricketytoc"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ricketytoc"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ricketytoc":7}},{"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":"ricketytoc"},"content":"java -classpath ../bin Richie \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":{"ricketytoc":1,"-":37}}] diff --git a/ricketytoc_ip_master/commits.json b/ricketytoc_ip_master/commits.json index 6e7bbdfe..6438b31d 100644 --- a/ricketytoc_ip_master/commits.json +++ b/ricketytoc_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ricketytoc":[{"date":"2023-08-24","commitResults":[{"hash":"41d1a8ce17fbf72d5034613b68b0938925fcfd5e","isMergeCommit":false,"messageTitle":"Renamed Chat bot from Duke to Richie and implemented an initial skeletal version of the chatbot (ie. greeting the user and exit)","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}},{"hash":"4fc07c1eb59059fef45006814ed7543501879328","isMergeCommit":false,"messageTitle":"Allows chatbot to echo user commands and detects the \"bye\" command to exit","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"91bf8982667518dd328d46c4b337b544be6981b7","isMergeCommit":false,"messageTitle":"added ability to store whatever text entered by the user and display them back to the user when required","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"4577a69df44c10746ca06208ffeca7ad6074aabf","isMergeCommit":false,"messageTitle":"Added a task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"a19886b2d0f0db9c504044d4308dd9da93a91419","isMergeCommit":false,"messageTitle":"Added the ability to mark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"45e11f62afb9a70c90ccd6d5cbda2eb102a0fd65","isMergeCommit":false,"messageTitle":"Added support for tracking three types of tasks : ToDos, Deadlines, Events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":4}}},{"hash":"0cb073384745b6c3818ada0be1c3781bd7569490","isMergeCommit":false,"messageTitle":"Added in a set of inputs and the expected outputs (ie. added a test case)","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"383590ae85daaec82b76e873dab4e888005a94b6","isMergeCommit":false,"messageTitle":"Allowed the bot to handle errors or incorrect inputs by adding a InvalidInputException class and a few try catch blocks","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":24}}},{"hash":"39e88808e2d70473b6b7e28199bf22a11fc41d26","isMergeCommit":false,"messageTitle":"Added support for deleting task from the list and also adding a try catch block for marking and deleting to handle errors","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"ricketytoc":{"java":172,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":7}},"authorContributionVariance":{"ricketytoc":8992.775},"authorDisplayNameMap":{"ricketytoc":"CS2103T-T14-1 RICH..IANG"}} +{"authorDailyContributionsMap":{"ricketytoc":[{"date":"2023-08-24","commitResults":[{"hash":"41d1a8ce17fbf72d5034613b68b0938925fcfd5e","isMergeCommit":false,"messageTitle":"Renamed Chat bot from Duke to Richie and implemented an initial skeletal version of the chatbot (ie. greeting the user and exit)","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}},{"hash":"4fc07c1eb59059fef45006814ed7543501879328","isMergeCommit":false,"messageTitle":"Allows chatbot to echo user commands and detects the \"bye\" command to exit","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"91bf8982667518dd328d46c4b337b544be6981b7","isMergeCommit":false,"messageTitle":"added ability to store whatever text entered by the user and display them back to the user when required","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"4577a69df44c10746ca06208ffeca7ad6074aabf","isMergeCommit":false,"messageTitle":"Added a task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"a19886b2d0f0db9c504044d4308dd9da93a91419","isMergeCommit":false,"messageTitle":"Added the ability to mark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"45e11f62afb9a70c90ccd6d5cbda2eb102a0fd65","isMergeCommit":false,"messageTitle":"Added support for tracking three types of tasks : ToDos, Deadlines, Events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":4}}},{"hash":"0cb073384745b6c3818ada0be1c3781bd7569490","isMergeCommit":false,"messageTitle":"Added in a set of inputs and the expected outputs (ie. added a test case)","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"383590ae85daaec82b76e873dab4e888005a94b6","isMergeCommit":false,"messageTitle":"Allowed the bot to handle errors or incorrect inputs by adding a InvalidInputException class and a few try catch blocks","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":24}}},{"hash":"39e88808e2d70473b6b7e28199bf22a11fc41d26","isMergeCommit":false,"messageTitle":"Added support for deleting task from the list and also adding a try catch block for marking and deleting to handle errors","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":5}}}]},{"date":"2023-08-31","commitResults":[{"hash":"2dff6ce0b86f3d8f0a9d0dd11be7afd18944c4ca","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":15}}}]},{"date":"2023-09-01","commitResults":[{"hash":"bb2e3056e0fcb189badc99c3e0d71b31e1576d10","isMergeCommit":false,"messageTitle":"Adds the ability to save the tasks in a text file whenever the task list changes.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":126,"deletions":0}}},{"hash":"bfc08dbbe49ac08d62cfa97e37f67fdbbcf4d7c1","isMergeCommit":false,"messageTitle":"Handle case where data file does not exist","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":6,"deletions":0}}},{"hash":"57b0c56750d0c1f7e0c3d9bb8a03da9a0ac8bc8a","isMergeCommit":false,"messageTitle":"Add data file and Richie Exception class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":21,"deletions":0}}},{"hash":"4e89aea80c4cbe0f6e81475edf282b16143c89bb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"* branch-Level-7:\n Handle case where data file does not exist\n Adds the ability to save the tasks in a text file whenever the task list changes.\n Add javadocs\n","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"768d293696ffd809fb0d3fc8869bff6f2e153919","isMergeCommit":false,"messageTitle":"Teach ChatBot how to understand date and time","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":100,"deletions":28}}},{"hash":"c16fe57c07873abbbdca0a61d4eeb28b9bb87108","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"* branch-Level-8:\n Teach ChatBot how to understand date and time\n","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ricketytoc":{"java":451,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":12}},"authorContributionVariance":{"ricketytoc":9299.182},"authorDisplayNameMap":{"ricketytoc":"CS2103T-T14-1 RICH..IANG"}} diff --git a/ruiyangzh_ip_master/authorship.json b/ruiyangzh_ip_master/authorship.json index d2a6d3e9..403674ec 100644 --- a/ruiyangzh_ip_master/authorship.json +++ b/ruiyangzh_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" LocalDate deadline;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" public Deadline(String name, LocalDate deadline) {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" public String toString(){","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ruiyangzh":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" Scanner reader \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" int counter \u003d -1;","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" boolean isShuttingDown \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" File savedTasks \u003d new File(\"./data/tasks.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" String logo \u003d \" _ _ \\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" + \"| | _ _| | _____ \\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" + \"| | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" + \"| |___| |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" public void startDuke() {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"Hi, I\u0027m \\n\" + logo);","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" loadTasklist();","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" public void loadTasklist() {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" Scanner loader \u003d new Scanner(savedTasks);","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" while (loader.hasNextLine()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" processInput(loader.nextLine());","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"No file, creating one now.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":" savedTasks.createNewFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" } catch (IOException f) {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"Could not create file; shutting down\");","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":" shutdownDuke();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"ruiyangzh"},"content":" } catch (InvalidVarException | InvalidCommandException e){","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"ruiyangzh"},"content":" throw new RuntimeException(\"Need to put a handler for corrupted inputs when loading\");","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"ruiyangzh"},"content":" public void shutdownDuke() {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"Ok byeee\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"ruiyangzh"},"content":" isShuttingDown \u003d true;","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"ruiyangzh"},"content":" public void processInput(String input) throws InvalidCommandException, InvalidVarException {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"ruiyangzh"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"ruiyangzh"},"content":" shutdownDuke();","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"ruiyangzh"},"content":" } else if (input.equals(\"help\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"ruiyangzh"},"content":" helpList();","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"ruiyangzh"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"ruiyangzh"},"content":" listTasks();","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"ruiyangzh"},"content":" } else if (input.startsWith(\"delete \") || input.equals(\"delete\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"ruiyangzh"},"content":" deleteTask(input);","lastModifiedDate":"2023-08-25"},{"lineNumber":56,"author":{"gitId":"ruiyangzh"},"content":" } else if (input.startsWith(\"mark \") || input.equals(\"mark\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":57,"author":{"gitId":"ruiyangzh"},"content":" markTask(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"ruiyangzh"},"content":" } else if (input.startsWith(\"unmark \") || input.equals(\"unmark\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"ruiyangzh"},"content":" unmarkTask(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"ruiyangzh"},"content":" } else if (input.startsWith(\"todo \") || input.equals(\"todo\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"ruiyangzh"},"content":" processToDo(input);","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"ruiyangzh"},"content":" } else if (input.startsWith(\"event \") || input.equals(\"event\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"ruiyangzh"},"content":" processEvent(input);","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"ruiyangzh"},"content":" } else if (input.startsWith(\"deadline \") || input.equals(\"deadline\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"ruiyangzh"},"content":" processDeadline(input);","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"ruiyangzh"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"Unrecognized command\");","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"ruiyangzh"},"content":" public void helpList() {","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"Here\u0027s the guidelines for all functions.\\n\" +","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"ruiyangzh"},"content":" \"list: lists all tasks\\n\" +","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"ruiyangzh"},"content":" \"bye: ends bot\\n\" +","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"ruiyangzh"},"content":" \"mark: mark (int x); marks indicated task\\n\" +","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"ruiyangzh"},"content":" \"unmark: unmark (int x); unmarks indicated task\\n\" +","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"ruiyangzh"},"content":" \"event: event (String name) /from (String start) /to (String end); creates event\\n\" +","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"ruiyangzh"},"content":" \"todo: todo (String name); creates todo\\n\" +","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"ruiyangzh"},"content":" \"deadline: deadline (String name) /by (String deadline); creates deadline\\n\" +","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"ruiyangzh"},"content":" \"delete: delete (int x); deletes indicated task\\n\");","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"ruiyangzh"},"content":" public void listTasks() {","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"ruiyangzh"},"content":" if (counter \u003d\u003d -1) {","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"No list, silly!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"ruiyangzh"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"Here\u0027s the list so far.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"ruiyangzh"},"content":" for (int i \u003d 0; i \u003c counter + 1; i++) {","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"ruiyangzh"},"content":" System.out.println((i + 1) + \". \" + list.get(i));","lastModifiedDate":"2023-08-25"},{"lineNumber":89,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"ruiyangzh"},"content":" public void deleteTask(String input) throws InvalidVarException, InvalidCommandException {","lastModifiedDate":"2023-08-25"},{"lineNumber":94,"author":{"gitId":"ruiyangzh"},"content":" if (input.equals(\"delete\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":95,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"No parameter\");","lastModifiedDate":"2023-08-25"},{"lineNumber":96,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":97,"author":{"gitId":"ruiyangzh"},"content":" int number;","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"ruiyangzh"},"content":" number \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-25"},{"lineNumber":100,"author":{"gitId":"ruiyangzh"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":101,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Task number could not be read\");","lastModifiedDate":"2023-08-25"},{"lineNumber":102,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":103,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":104,"author":{"gitId":"ruiyangzh"},"content":" Task deletedTask \u003d list.get(number - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":105,"author":{"gitId":"ruiyangzh"},"content":" list.remove(number - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":106,"author":{"gitId":"ruiyangzh"},"content":" counter -\u003d 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":107,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"task \" + number + \": \" + deletedTask + \" deleted.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":108,"author":{"gitId":"ruiyangzh"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":109,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Task not found\");","lastModifiedDate":"2023-08-25"},{"lineNumber":110,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":111,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":112,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":113,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":114,"author":{"gitId":"ruiyangzh"},"content":" public void markTask(String input) throws InvalidVarException, InvalidCommandException {","lastModifiedDate":"2023-08-25"},{"lineNumber":115,"author":{"gitId":"ruiyangzh"},"content":" if (input.equals(\"mark\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"No parameter\");","lastModifiedDate":"2023-08-25"},{"lineNumber":117,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":118,"author":{"gitId":"ruiyangzh"},"content":" int number;","lastModifiedDate":"2023-08-25"},{"lineNumber":119,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"ruiyangzh"},"content":" number \u003d Integer.parseInt(input.substring(5));","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"ruiyangzh"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Task number could not be read\");","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"ruiyangzh"},"content":" list.get(number - 1).markDone();","lastModifiedDate":"2023-08-25"},{"lineNumber":126,"author":{"gitId":"ruiyangzh"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Task not found\");","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"task \" + number + \": \" + list.get(number - 1) + \" marked as done.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":130,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"ruiyangzh"},"content":" public void unmarkTask(String input) throws InvalidVarException,InvalidCommandException {","lastModifiedDate":"2023-08-25"},{"lineNumber":133,"author":{"gitId":"ruiyangzh"},"content":" if (input.equals(\"unmark\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":134,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"No parameter\");","lastModifiedDate":"2023-08-25"},{"lineNumber":135,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":136,"author":{"gitId":"ruiyangzh"},"content":" int number;","lastModifiedDate":"2023-08-25"},{"lineNumber":137,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"ruiyangzh"},"content":" number \u003d Integer.parseInt(input.substring(7));","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"ruiyangzh"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Task number could not be read\");","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"ruiyangzh"},"content":" list.get(number - 1).markUndone();","lastModifiedDate":"2023-08-25"},{"lineNumber":144,"author":{"gitId":"ruiyangzh"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Task not found\");","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"task \" + number + \": \" + list.get(number - 1) + \" marked as not done.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":148,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"ruiyangzh"},"content":" public void processToDo(String input) throws InvalidCommandException, InvalidVarException {","lastModifiedDate":"2023-08-25"},{"lineNumber":151,"author":{"gitId":"ruiyangzh"},"content":" if (input.equals(\"todo\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":152,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"No parameter\");","lastModifiedDate":"2023-08-25"},{"lineNumber":153,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":154,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":155,"author":{"gitId":"ruiyangzh"},"content":" if (input.length() \u003c 6) {","lastModifiedDate":"2023-08-25"},{"lineNumber":156,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"No name!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":157,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":158,"author":{"gitId":"ruiyangzh"},"content":" String name \u003d input.substring(5);","lastModifiedDate":"2023-08-25"},{"lineNumber":159,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":160,"author":{"gitId":"ruiyangzh"},"content":" if (name.isBlank()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":161,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Blank name!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":162,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":163,"author":{"gitId":"ruiyangzh"},"content":" ToDo task \u003d new ToDo(name);","lastModifiedDate":"2023-08-25"},{"lineNumber":164,"author":{"gitId":"ruiyangzh"},"content":" addTask(task, input);","lastModifiedDate":"2023-08-28"},{"lineNumber":165,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"ruiyangzh"},"content":" public void processEvent(String input) throws InvalidCommandException, InvalidVarException {","lastModifiedDate":"2023-08-25"},{"lineNumber":168,"author":{"gitId":"ruiyangzh"},"content":" if (input.equals(\"event\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":169,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"No parameter\");","lastModifiedDate":"2023-08-25"},{"lineNumber":170,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":171,"author":{"gitId":"ruiyangzh"},"content":" int split1 \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"ruiyangzh"},"content":" int split2 \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"ruiyangzh"},"content":" if (split1 \u003d\u003d -1 || split2 \u003d\u003d -1) {","lastModifiedDate":"2023-08-25"},{"lineNumber":174,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"Some parameters missing\");","lastModifiedDate":"2023-08-25"},{"lineNumber":175,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":176,"author":{"gitId":"ruiyangzh"},"content":" if (split1 \u003c 7 || split2 \u003c split1 + 5 || input.length() \u003c split2 + 4) {","lastModifiedDate":"2023-08-25"},{"lineNumber":177,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Blank parameters!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":178,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":179,"author":{"gitId":"ruiyangzh"},"content":" String name \u003d input.substring(6, split1 - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":180,"author":{"gitId":"ruiyangzh"},"content":" LocalDate start \u003d LocalDate.parse(input.substring(split1 + 6, split2 - 1));","lastModifiedDate":"2023-08-28"},{"lineNumber":181,"author":{"gitId":"ruiyangzh"},"content":" LocalDate end \u003d LocalDate.parse(input.substring(split2 + 4));","lastModifiedDate":"2023-08-28"},{"lineNumber":182,"author":{"gitId":"ruiyangzh"},"content":" Event task \u003d new Event(name, start, end);","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"ruiyangzh"},"content":" if (name.isBlank()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":184,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Blank parameters!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":185,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":186,"author":{"gitId":"ruiyangzh"},"content":" addTask(task, input);","lastModifiedDate":"2023-08-28"},{"lineNumber":187,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":189,"author":{"gitId":"ruiyangzh"},"content":" public void processDeadline(String input) throws InvalidVarException, InvalidCommandException {","lastModifiedDate":"2023-08-25"},{"lineNumber":190,"author":{"gitId":"ruiyangzh"},"content":" if (input.equals(\"deadline\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":191,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"No parameter\");","lastModifiedDate":"2023-08-25"},{"lineNumber":192,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":193,"author":{"gitId":"ruiyangzh"},"content":" int split \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-08-23"},{"lineNumber":194,"author":{"gitId":"ruiyangzh"},"content":" if (split \u003d\u003d -1) {","lastModifiedDate":"2023-08-25"},{"lineNumber":195,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"Deadline missing\");","lastModifiedDate":"2023-08-25"},{"lineNumber":196,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":197,"author":{"gitId":"ruiyangzh"},"content":" if (split \u003c 10 || input.length() \u003c split + 4) {","lastModifiedDate":"2023-08-25"},{"lineNumber":198,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Blank parameters!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":199,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":200,"author":{"gitId":"ruiyangzh"},"content":" String name \u003d input.substring(9, split - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":201,"author":{"gitId":"ruiyangzh"},"content":" LocalDate deadline \u003d LocalDate.parse(input.substring(split + 4));","lastModifiedDate":"2023-08-28"},{"lineNumber":202,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":203,"author":{"gitId":"ruiyangzh"},"content":" if (name.isBlank()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":204,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Blank parameters!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":205,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":206,"author":{"gitId":"ruiyangzh"},"content":" Deadline task \u003d new Deadline(name, deadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":207,"author":{"gitId":"ruiyangzh"},"content":" addTask(task, input);","lastModifiedDate":"2023-08-28"},{"lineNumber":208,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":209,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":210,"author":{"gitId":"ruiyangzh"},"content":" public void addTask(Task task, String input) {","lastModifiedDate":"2023-08-28"},{"lineNumber":211,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":212,"author":{"gitId":"ruiyangzh"},"content":" list.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":213,"author":{"gitId":"ruiyangzh"},"content":" counter +\u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":214,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"added: \" + task.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":215,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"current task count: \" + (counter + 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":216,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":217,"author":{"gitId":"ruiyangzh"},"content":" FileWriter taskSaver \u003d new FileWriter(\"./data/tasks.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":218,"author":{"gitId":"ruiyangzh"},"content":" taskSaver.write(input);","lastModifiedDate":"2023-08-28"},{"lineNumber":219,"author":{"gitId":"ruiyangzh"},"content":" taskSaver.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":220,"author":{"gitId":"ruiyangzh"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":221,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"Error in saving to disk\");","lastModifiedDate":"2023-08-28"},{"lineNumber":222,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":223,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":224,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":226,"author":{"gitId":"ruiyangzh"},"content":" Duke luke \u003d new Duke();","lastModifiedDate":"2023-08-23"},{"lineNumber":227,"author":{"gitId":"ruiyangzh"},"content":" luke.startDuke();","lastModifiedDate":"2023-08-28"},{"lineNumber":228,"author":{"gitId":"ruiyangzh"},"content":" while (!luke.isShuttingDown) {","lastModifiedDate":"2023-08-28"},{"lineNumber":229,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":230,"author":{"gitId":"ruiyangzh"},"content":" luke.processInput(luke.reader.nextLine());","lastModifiedDate":"2023-08-28"},{"lineNumber":231,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":232,"author":{"gitId":"ruiyangzh"},"content":" catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"Unknown command given; \" + e.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":234,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"ruiyangzh"},"content":" catch (InvalidVarException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":236,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(\"Invalid input; \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":238,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ruiyangzh":235,"-":5}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":" public DukeException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" public DukeException(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ruiyangzh":8}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" LocalDate timestart;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" LocalDate timeend;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" public Event(String name, LocalDate timestart, LocalDate timeend) {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" this.timestart \u003d timestart;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" this.timeend \u003d timeend;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" return (\"[E]\" + super.toString() + \" (from: \" + timestart.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"))","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" + \" to: \" + timeend.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\");","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ruiyangzh":17}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" public InvalidCommandException(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ruiyangzh":8}},{"path":"src/main/java/InvalidVarException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"public class InvalidVarException extends DukeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":" public InvalidVarException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":" super();","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" public InvalidVarException(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" super(s);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ruiyangzh":8}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":" String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":" boolean completeStatus;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" this.completeStatus \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" public void markDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" this.completeStatus \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" this.completeStatus \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" if (completeStatus) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" return (\"[X] \" + name);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" return (\"[ ] \" + name);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ruiyangzh":23}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":" public ToDo(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" public String toString(){","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" return \"[T]\"+ super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ruiyangzh":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"event test1 /from start /to end","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"todo test 2","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"deadline test 3 /by dead line","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":"unknown command","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":"bye bye","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ruiyangzh":16}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"# duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":"3. After that, locate the `src/main/java/duke.java` file, right-click it, and choose `Run duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ruiyangzh":2,"-":22}},{"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":"ruiyangzh"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","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":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ruiyangzh":5,"-":41}},{"path":"data/corruptedStorage.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"hjgkjafdbnhd","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"dfhdjkfdhf","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"sdefhjdsa,fmdsanf","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"adjkbaLFDHAELIUREQWYREHDQW","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":4}},{"path":"src/main/java/command/AddTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"import duke.UserInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.FailureInExecuteException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" * AddTaskCommand represents a command that adds a task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":"public class AddTaskCommand implements Commandable {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" * Sets the task to be added upon execution.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" * @param task the task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" public void setTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" * Executes the adding of the task to the list provided, and provides outputs for the interface to print.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" * @param list the list that receives the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" * @param ui the interface that prints out any necessary outputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" * @return false, since the execution does not end the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" * @throws FailureInExecuteException when there is a failure in writing to the list or its associated file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" public boolean execute(TaskList list, UserInterface ui) throws FailureInExecuteException {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":" list.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" throw new FailureInExecuteException(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":" ui.output(\"Added successfully!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ruiyangzh"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":39}},{"path":"src/main/java/command/ClearCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import duke.UserInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.FailureInExecuteException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"public class ClearCommand implements Commandable {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" public boolean execute(TaskList list, UserInterface ui) throws FailureInExecuteException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" list.clear();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" throw new FailureInExecuteException(\"Could not clear;\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" ui.output(\"Cleared!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":20}},{"path":"src/main/java/command/Commandable.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"import duke.UserInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.FailureInExecuteException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" * A general interface that represents a command, which is able to be executed and returns a boolean that represents","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" * if the execution causes the program to shut down. Also able to throw a FailureInExecuteException if the execution","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" * happens to fail for one reason or another.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":"public interface Commandable {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" boolean execute(TaskList list, UserInterface ui) throws FailureInExecuteException;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ruiyangzh":15}},{"path":"src/main/java/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"import duke.UserInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.FailureInExecuteException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" * Represents a deletion command of a particular task.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":"public class DeleteCommand implements Commandable {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" public void setDelete(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" * Executes the deletion of the task from the list provided, and provides outputs for the interface to print.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" * @param list the list that contains the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" * @param ui the interface that prints out any necessary outputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" * @return false, since the execution does not end the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" * @throws FailureInExecuteException when there is a failure in writing to the list or its associated file,","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" * and when the index does not exist in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" public boolean execute(TaskList list, UserInterface ui) throws FailureInExecuteException {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" if (!list.removeTask(index)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" throw new FailureInExecuteException(\"Out of list index\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":" throw new FailureInExecuteException(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":36}},{"path":"src/main/java/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import duke.UserInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.FailureInExecuteException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"public class FindCommand implements Commandable {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" private String keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" public void setSearch(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" public boolean execute(TaskList list, UserInterface ui) throws FailureInExecuteException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" ArrayList\u003cTask\u003e res \u003d list.findTasksMatching(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" if (res.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" ui.output(\"Could not find task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" String ans \u003d \"Here are the matching items.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" for (int i \u003d 0; i \u003c res.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" ans +\u003d \"\\n\" + (i + 1) + \". \" + res.get(i).toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" ui.output(ans);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":29}},{"path":"src/main/java/command/HelpCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import duke.UserInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" * Represents a command that prints a list of functions.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"public class HelpCommand implements Commandable {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" * Provides a string for the interface to print, providing a list of helpful commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" * @param list the associated list(not needed).","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" * @param ui the interface that prints out the help guide.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" * @return false, since the execution does not end the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" ui.output(\"Here\u0027s the guidelines for all functions.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" + \"help: lists this help guide\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" + \"list: lists all tasks\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" + \"bye: ends bot\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" + \"mark: mark (int x); marks indicated task\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" + \"unmark: unmark (int x); unmarks indicated task\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" + \"event: event (String name) /from (Date start) /to (Date end); creates event\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" + \"todo: todo (String name); creates todo\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" + \"deadline: deadline (String name) /by (Date deadline); creates deadline\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" + \"delete: delete(int x); deletes the indicated task\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" + \"find: find(String keyword); finds any tasks that contain the keyword\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":31}},{"path":"src/main/java/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import duke.UserInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" * Represents a command that outputs the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"public class ListCommand implements Commandable {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" * Prints out the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" * @param list the list to be printed","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" * @param ui the interface that prints out the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" * @return false, since the execution does not end the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" ui.output(list.listString());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":19}},{"path":"src/main/java/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"import duke.UserInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.FailureInExecuteException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" * Represents the marking or unmarking of a certain task.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":"public class MarkCommand implements Commandable {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" private boolean isToBeMarked;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" private int targetIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" public MarkCommand(boolean isToBeMarked) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" this.isToBeMarked \u003d isToBeMarked;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" public void setMark(int targetIndex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" * Executes the marking/unmarking of a given task.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" * @param list the list that contains the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" * @param ui the interface that prints out any necessary outputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" * @return false, since the execution does not end the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" * @throws FailureInExecuteException when there is a failure in marking the task, or the task does not exist.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" public boolean execute(TaskList list, UserInterface ui) throws FailureInExecuteException {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":" if (!list.setMark(targetIndex, isToBeMarked)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" throw new FailureInExecuteException(\"Out of list index\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ruiyangzh"},"content":" throw new FailureInExecuteException(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ruiyangzh"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":41}},{"path":"src/main/java/command/ShutdownCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import duke.UserInterface;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" * Represents a call for the bot to be shut down, which will be interpreted by Duke.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"public class ShutdownCommand implements Commandable {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" * Indicates that the bot is to be shut down.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" * @param list the list that contains the task. (not necessary)","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" * @param ui the interface that prints out any necessary outputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" * @return true, since the execution ends the bot.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" ui.output(\"Shutting down now!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ruiyangzh":19}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import command.Commandable;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.CorruptedFileException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.FailureInExecuteException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.InvalidVarException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" * Duke represents a chatbot that parses user inputs and commands, stores tasks given to it in memory and on a file,","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" * and provides a user interface for easier correspondence.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":"public class Duke {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" private static final String FILE_PATH \u003d \"./data/tasks.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" private static final String LOGO \u003d \" _ _ \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" + \"| | _ _| | _____ \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" + \"| | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" + \"| |___| |_| | \u003c __/\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" private TaskList list;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" private Parser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" private UserInterface ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" * Creates a new Duke instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" public Duke() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" list \u003d new TaskList(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":" ui \u003d new UserInterface();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ruiyangzh"},"content":" * Initializes the storage, list and outputs a greeting.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ruiyangzh"},"content":" * @throws IOException when unable to read from disk.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ruiyangzh"},"content":" * @throws CorruptedFileException when unable to interpret file.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ruiyangzh"},"content":" public void startDuke() throws IOException, CorruptedFileException {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ruiyangzh"},"content":" ui.output(\"Hi, I\u0027m \\n\" + LOGO);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ruiyangzh"},"content":" storage.init(FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ruiyangzh"},"content":" list.loadFromDisk();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ruiyangzh"},"content":" public void closeDuke() {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ruiyangzh"},"content":" ui.output(\"Goodbye!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ruiyangzh"},"content":" * Handler is called when a corrupted file is detected, allowing user to decide how to proceed, such as","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ruiyangzh"},"content":" * clearing the file or shutting down.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ruiyangzh"},"content":" * @return whether the handler decides to call for a shutdown of the Duke instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ruiyangzh"},"content":" public boolean corruptedFileHandler() {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ruiyangzh"},"content":" ui.output(\"File not properly formatted;\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ruiyangzh"},"content":" + \"Clear corrupted file Y/N?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ruiyangzh"},"content":" while (true) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ruiyangzh"},"content":" String input \u003d ui.input();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ruiyangzh"},"content":" ui.output(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ruiyangzh"},"content":" if (input.equals(\"Y\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ruiyangzh"},"content":" storage.clear();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ruiyangzh"},"content":" ui.output(\"File cleared.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ruiyangzh"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ruiyangzh"},"content":" ui.output(\"Error in clearing! Shutting down.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ruiyangzh"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"ruiyangzh"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"ruiyangzh"},"content":" } else if (input.equals(\"N\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"ruiyangzh"},"content":" ui.output(\"Understood. Shutting down.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"ruiyangzh"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"ruiyangzh"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ruiyangzh"},"content":" ui.output(\"Bad input. Input Y/N\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"ruiyangzh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"ruiyangzh"},"content":" boolean isShuttingDown \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"ruiyangzh"},"content":" Duke luke \u003d new Duke();","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"ruiyangzh"},"content":" luke.startDuke();","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"ruiyangzh"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"ruiyangzh"},"content":" luke.ui.output(\"Could not read from file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"ruiyangzh"},"content":" isShuttingDown \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"ruiyangzh"},"content":" } catch (CorruptedFileException f) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"ruiyangzh"},"content":" isShuttingDown \u003d luke.corruptedFileHandler();","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"ruiyangzh"},"content":" while (!isShuttingDown) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"ruiyangzh"},"content":" String input \u003d luke.ui.input();","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"ruiyangzh"},"content":" Commandable command \u003d luke.parser.parse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"ruiyangzh"},"content":" isShuttingDown \u003d command.execute(luke.list, luke.ui);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"ruiyangzh"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"ruiyangzh"},"content":" luke.ui.output(\"Unknown command given; \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"ruiyangzh"},"content":" } catch (InvalidVarException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"ruiyangzh"},"content":" luke.ui.output(\"Invalid input; \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"ruiyangzh"},"content":" } catch (FailureInExecuteException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"ruiyangzh"},"content":" luke.ui.output(\"Failure to execute command; \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"ruiyangzh"},"content":" luke.closeDuke();","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ruiyangzh":105}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"import command.AddTaskCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"import command.ClearCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"import command.Commandable;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":"import command.DeleteCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":"import command.FindCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":"import command.HelpCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":"import command.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":"import command.MarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":"import command.ShutdownCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.InvalidVarException;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":"import task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" * Parses inputs passed via the user interface into commands if possible.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" private HashMap\u003cString, Commandable\u003e stringToCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":" * Initializes the parser.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" public Parser() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" stringToCommand \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":" init();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ruiyangzh"},"content":" private void init() {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ruiyangzh"},"content":" stringToCommand.put(\"bye\", new ShutdownCommand());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ruiyangzh"},"content":" stringToCommand.put(\"help\", new HelpCommand());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ruiyangzh"},"content":" stringToCommand.put(\"list\", new ListCommand());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ruiyangzh"},"content":" stringToCommand.put(\"todo\", new AddTaskCommand());","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ruiyangzh"},"content":" stringToCommand.put(\"deadline\", new AddTaskCommand());","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ruiyangzh"},"content":" stringToCommand.put(\"event\", new AddTaskCommand());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ruiyangzh"},"content":" stringToCommand.put(\"delete\", new DeleteCommand());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ruiyangzh"},"content":" stringToCommand.put(\"mark\", new MarkCommand(true));","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ruiyangzh"},"content":" stringToCommand.put(\"unmark\", new MarkCommand(false));","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ruiyangzh"},"content":" stringToCommand.put(\"find\", new FindCommand());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ruiyangzh"},"content":" stringToCommand.put(\"clear\", new ClearCommand());","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ruiyangzh"},"content":" * Parses the string passed to it and produces the corresponding command.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ruiyangzh"},"content":" * @param input the string passed to the parser that is meant to be interpreted.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ruiyangzh"},"content":" * @return the command that the string represents.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ruiyangzh"},"content":" * @throws InvalidCommandException if the command cannot be identified.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ruiyangzh"},"content":" * @throws InvalidVarException if the command is identifiable but the parameters are incorrect.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ruiyangzh"},"content":" public Commandable parse(String input) throws InvalidCommandException, InvalidVarException {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ruiyangzh"},"content":" String commandIdentifier \u003d input.split(\" \")[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ruiyangzh"},"content":" Commandable command \u003d stringToCommand.get(commandIdentifier);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ruiyangzh"},"content":" if (command instanceof ShutdownCommand","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ruiyangzh"},"content":" || command instanceof HelpCommand","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ruiyangzh"},"content":" || command instanceof ListCommand","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ruiyangzh"},"content":" || command instanceof ClearCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ruiyangzh"},"content":" if (!input.equals(commandIdentifier)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"This command has no variables!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"ruiyangzh"},"content":" if (command instanceof AddTaskCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"ruiyangzh"},"content":" if (input.equals(commandIdentifier)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"No parameters\");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"ruiyangzh"},"content":" Task taskToAdd;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"ruiyangzh"},"content":" String name;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"ruiyangzh"},"content":" switch(commandIdentifier) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"ruiyangzh"},"content":" case (\"todo\"):","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"ruiyangzh"},"content":" if (input.length() \u003c 6) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"No name!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"ruiyangzh"},"content":" name \u003d input.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"ruiyangzh"},"content":" if (name.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Blank name!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"ruiyangzh"},"content":" taskToAdd \u003d new ToDo(name);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"ruiyangzh"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"ruiyangzh"},"content":" case (\"deadline\"):","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"ruiyangzh"},"content":" int split \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"ruiyangzh"},"content":" if (split \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"Deadline missing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"ruiyangzh"},"content":" if (split \u003c 10 || input.length() \u003c split + 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Blank parameters!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"ruiyangzh"},"content":" name \u003d input.substring(9, split - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"ruiyangzh"},"content":" LocalDate deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"ruiyangzh"},"content":" deadline \u003d LocalDate.parse(input.substring(split + 4));","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"ruiyangzh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Could not parse dates!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"ruiyangzh"},"content":" if (name.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Blank parameters!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"ruiyangzh"},"content":" taskToAdd \u003d new Deadline(name, deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"ruiyangzh"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"ruiyangzh"},"content":" case (\"event\"):","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"ruiyangzh"},"content":" int split1 \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"ruiyangzh"},"content":" int split2 \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"ruiyangzh"},"content":" if (split1 \u003d\u003d -1 || split2 \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"Some parameters missing\");","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"ruiyangzh"},"content":" if (split1 \u003c 7 || split2 \u003c split1 + 5 || input.length() \u003c split2 + 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Blank parameters!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"ruiyangzh"},"content":" name \u003d input.substring(6, split1 - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"ruiyangzh"},"content":" LocalDate start;","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"ruiyangzh"},"content":" LocalDate end;","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"ruiyangzh"},"content":" start \u003d LocalDate.parse(input.substring(split1 + 6, split2 - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"ruiyangzh"},"content":" end \u003d LocalDate.parse(input.substring(split2 + 4));","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"ruiyangzh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Could not parse dates!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"ruiyangzh"},"content":" if (name.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Blank parameters!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"ruiyangzh"},"content":" taskToAdd \u003d new Event(name, start, end);","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"ruiyangzh"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"ruiyangzh"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Blank parameters! This should never happen; \"","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"ruiyangzh"},"content":" + \"likely a task type was added without its respective parser.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"ruiyangzh"},"content":" } ((AddTaskCommand) command).setTask(taskToAdd);","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"ruiyangzh"},"content":" } else if (command instanceof DeleteCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"ruiyangzh"},"content":" if (commandIdentifier.equals(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"No parameter\");","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"ruiyangzh"},"content":" int number;","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"ruiyangzh"},"content":" number \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"ruiyangzh"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Task number could not be read\");","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"ruiyangzh"},"content":" } (","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"ruiyangzh"},"content":" (DeleteCommand) command).setDelete(number);","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"ruiyangzh"},"content":" } else if (command instanceof MarkCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"ruiyangzh"},"content":" if (commandIdentifier.equals(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"No parameter\");","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"ruiyangzh"},"content":" int number;","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"ruiyangzh"},"content":" number \u003d Integer.parseInt(input.substring(commandIdentifier.length() + 1)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"ruiyangzh"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Task number could not be read\");","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"ruiyangzh"},"content":" } (","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"ruiyangzh"},"content":" (MarkCommand) command).setMark(number);","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"ruiyangzh"},"content":" else if (command instanceof FindCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"ruiyangzh"},"content":" if (input.length() \u003c 6) {","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"No keyword!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"ruiyangzh"},"content":" String keyword \u003d input.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"ruiyangzh"},"content":" if (keyword.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidVarException(\"Blank keyword!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"ruiyangzh"},"content":" ((FindCommand) command).setSearch(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"ruiyangzh"},"content":" } else if (command \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"ruiyangzh"},"content":" throw new InvalidCommandException(\"Unrecognized command\");","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"ruiyangzh"},"content":" return command;","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":171}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" * Represents a file on the disk that contains strings.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" private File storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" private Scanner storageScanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" public Storage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" * Initializes the storage file to the specified path name.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" * @param pathName the path name of the file to be associated with this object.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" * @throws IOException if the file does not exist, and we are unable to create a new file in the specified path.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" public void init(String pathName) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" storage \u003d new File(pathName);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" storage.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" * Clears the file to an empty text if possible.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" * @throws IOException if we cannot clear the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":" public void clear() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" storage.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" writeToDisk(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ruiyangzh"},"content":" * Writes to the file given an input.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ruiyangzh"},"content":" * @param list An ArrayList representing what we want to write to the disk.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ruiyangzh"},"content":" * @throws IOException if we cannot write to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ruiyangzh"},"content":" public void writeToDisk(ArrayList\u003cString\u003e list) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ruiyangzh"},"content":" FileWriter writer \u003d new FileWriter(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ruiyangzh"},"content":" for (String obj : list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ruiyangzh"},"content":" writer.write(obj);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ruiyangzh"},"content":" writer.write(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ruiyangzh"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ruiyangzh"},"content":" * Produces an ArrayList of type String that represents the text file associated with this instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ruiyangzh"},"content":" * @return ArrayList of type String that represents the text file associated with this instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ruiyangzh"},"content":" * @throws IOException if we cannot read from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ruiyangzh"},"content":" public ArrayList\u003cString\u003e loadFromDisk() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ruiyangzh"},"content":" ArrayList\u003cString\u003e result \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ruiyangzh"},"content":" storageScanner \u003d new Scanner(storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ruiyangzh"},"content":" while (storageScanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ruiyangzh"},"content":" result.add(storageScanner.nextLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ruiyangzh"},"content":" return result;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ruiyangzh":65}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.CorruptedFileException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":"import task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" * A tasklist that stores a group of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" private int counter;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" * Initializes a tasklist, with its associated file.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" * @param storage the file associated with the tasklist.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" public TaskList(Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" counter \u003d -1;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" * Loads the tasklist from the associated file.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" * @throws IOException if we cannot read from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":" * @throws CorruptedFileException if the file cannot be interpreted.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ruiyangzh"},"content":" public void loadFromDisk() throws IOException, CorruptedFileException {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ruiyangzh"},"content":" taskList \u003d stringListToTaskList(storage.loadFromDisk());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ruiyangzh"},"content":" counter \u003d taskList.size() - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ruiyangzh"},"content":" * Writes the tasklist to the associated file.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ruiyangzh"},"content":" * @throws IOException if the file cannot be written to.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ruiyangzh"},"content":" public void writeToDisk() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ruiyangzh"},"content":" storage.writeToDisk(taskListToStringList(taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ruiyangzh"},"content":" * Adds a task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ruiyangzh"},"content":" * @param task task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ruiyangzh"},"content":" * @throws IOException if we cannot write the task to disk.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ruiyangzh"},"content":" public void addTask(Task task) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ruiyangzh"},"content":" taskList.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ruiyangzh"},"content":" counter +\u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ruiyangzh"},"content":" writeToDisk();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ruiyangzh"},"content":" * Removes a task from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ruiyangzh"},"content":" * @param index index of the task to be removed.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ruiyangzh"},"content":" * @return whether the index exists in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ruiyangzh"},"content":" * @throws IOException if the index exists and was deleted, but we cannot write the change to disk.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"ruiyangzh"},"content":" public boolean removeTask(int index) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"ruiyangzh"},"content":" if (index \u003e counter) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"ruiyangzh"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"ruiyangzh"},"content":" taskList.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ruiyangzh"},"content":" counter -\u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"ruiyangzh"},"content":" writeToDisk();","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"ruiyangzh"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"ruiyangzh"},"content":" public void clear() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"ruiyangzh"},"content":" taskList.clear();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"ruiyangzh"},"content":" counter \u003d -1;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"ruiyangzh"},"content":" writeToDisk();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"ruiyangzh"},"content":" public boolean setMark(int targetIndex, boolean isToBeMarked) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"ruiyangzh"},"content":" if (targetIndex \u003e counter || targetIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"ruiyangzh"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"ruiyangzh"},"content":" if (isToBeMarked) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"ruiyangzh"},"content":" taskList.get(targetIndex).markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"ruiyangzh"},"content":" if (!isToBeMarked) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"ruiyangzh"},"content":" taskList.get(targetIndex).markUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"ruiyangzh"},"content":" writeToDisk();","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"ruiyangzh"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"ruiyangzh"},"content":" private ArrayList\u003cTask\u003e stringListToTaskList(ArrayList\u003cString\u003e stringArrayList) throws CorruptedFileException {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"ruiyangzh"},"content":" ArrayList\u003cTask\u003e res \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"ruiyangzh"},"content":" for (String s : stringArrayList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"ruiyangzh"},"content":" String[] temp \u003d s.split(Task.DIVIDER);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"ruiyangzh"},"content":" if (temp.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"ruiyangzh"},"content":" throw new CorruptedFileException();","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"ruiyangzh"},"content":" boolean isComplete;","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"ruiyangzh"},"content":" if (temp[1].equals(\"TRUE\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"ruiyangzh"},"content":" isComplete \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"ruiyangzh"},"content":" } else if (temp[1].equals(\"FALSE\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"ruiyangzh"},"content":" isComplete \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"ruiyangzh"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"ruiyangzh"},"content":" throw new CorruptedFileException();","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"ruiyangzh"},"content":" switch (temp[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"ruiyangzh"},"content":" case (\"TD\"):","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"ruiyangzh"},"content":" res.add(new ToDo(temp[2], isComplete));","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"ruiyangzh"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"ruiyangzh"},"content":" case (\"DL\"):","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"ruiyangzh"},"content":" res.add(new Deadline(temp[2], isComplete, (LocalDate.parse(temp[3]))));","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"ruiyangzh"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"ruiyangzh"},"content":" case (\"EV\"):","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"ruiyangzh"},"content":" res.add(new Event(temp[2], isComplete, LocalDate.parse(temp[3]), LocalDate.parse(temp[4])));","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"ruiyangzh"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"ruiyangzh"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"ruiyangzh"},"content":" throw new CorruptedFileException();","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"ruiyangzh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"ruiyangzh"},"content":" throw new CorruptedFileException();","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"ruiyangzh"},"content":" return res;","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"ruiyangzh"},"content":" private ArrayList\u003cString\u003e taskListToStringList(ArrayList\u003cTask\u003e taskArrayList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"ruiyangzh"},"content":" ArrayList\u003cString\u003e res \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"ruiyangzh"},"content":" for (Task s : taskArrayList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"ruiyangzh"},"content":" res.add(s.fileFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"ruiyangzh"},"content":" return res;","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"ruiyangzh"},"content":" public ArrayList\u003cTask\u003e findTasksMatching(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"ruiyangzh"},"content":" ArrayList\u003cTask\u003e res \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"ruiyangzh"},"content":" for (Task t: taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"ruiyangzh"},"content":" if (t.toString().contains(keyword)){","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"ruiyangzh"},"content":" res.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"ruiyangzh"},"content":" return res;","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"ruiyangzh"},"content":" * Produces a string representation of the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"ruiyangzh"},"content":" * @return a string representation of the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"ruiyangzh"},"content":" public String listString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"ruiyangzh"},"content":" if (counter \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"ruiyangzh"},"content":" return (\"No list, silly!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"ruiyangzh"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"ruiyangzh"},"content":" String res \u003d \"Here\u0027s the list so far.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"ruiyangzh"},"content":" for (int i \u003d 0; i \u003c counter + 1; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"ruiyangzh"},"content":" res +\u003d (\"\\n\" + (i + 1) + \". \" + taskList.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"ruiyangzh"},"content":" return res;","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ruiyangzh":165}},{"path":"src/main/java/duke/UserInterface.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" * Represents the user interface of an application.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"public class UserInterface {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" private Scanner userInput;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" private final String lineDivider \u003d \"---------------------------------------------\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" public UserInterface() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" this.userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" public String input() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" return userInput.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" * Takes a string and prints it out to the system, while formatting it with line dividers.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" * @param output the string to be printed.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" public void output(String output) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(output);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(lineDivider);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":28}},{"path":"src/main/java/dukeexception/CorruptedFileException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package dukeexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":" * An extension of DukeException, that represents an accessible but incorrectly formatted file.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"public class CorruptedFileException extends DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" public CorruptedFileException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":" super();","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" public CorruptedFileException(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" super(s);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":13}},{"path":"src/main/java/dukeexception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package dukeexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":" * Represents any exceptions that are unique to Duke.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"public abstract class DukeException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" public DukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":" super();","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" public DukeException(String s) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" super(s);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ruiyangzh":13}},{"path":"src/main/java/dukeexception/FailureInExecuteException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package dukeexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":" * An extension of DukeException, that represents a failure in execution of a Commandable.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"public class FailureInExecuteException extends DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":" public FailureInExecuteException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" super();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" public FailureInExecuteException(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" super(s);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":14}},{"path":"src/main/java/dukeexception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package dukeexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":" * An extension of DukeException, that represents a bad command input.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":" super();","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" public InvalidCommandException(String s) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" super(s);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ruiyangzh":13}},{"path":"src/main/java/dukeexception/InvalidVarException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package dukeexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":" * An extension of DukeException, that represents a command with bad arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"public class InvalidVarException extends DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" public InvalidVarException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":" super();","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" public InvalidVarException(String s) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" super(s);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ruiyangzh":13}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" * Represents an extension of a task, containing a deadline in terms of LocalDate.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" private LocalDate deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" * This is the constructor for a deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" * @param name name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" * @param deadline date at which the task is due.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" public Deadline(String name, LocalDate deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" super(name);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" * An overloading of the above method, for when the isComplete is needed as well.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" * @param name name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" * @param isComplete whether the task is complete.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" * @param deadline date at which the task is due.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" public Deadline(String name, boolean isComplete, LocalDate deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" super(name, isComplete);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" public String fileFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" return \"DL\" + DIVIDER + super.fileFormat() + DIVIDER + deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ruiyangzh":37}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":" * Represents an extension of a task, containing a start and end time in terms of LocalDate.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"public class Event extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" private LocalDate timeStart;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" private LocalDate timeEnd;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" * This is the constructor for an Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" * @param name name of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" * @param timeStart starting time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" * @param timeEnd ending time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" public Event(String name, LocalDate timeStart, LocalDate timeEnd) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" super(name);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" this.timeStart \u003d timeStart;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" this.timeEnd \u003d timeEnd;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" * This is an overloading of the constructor for an Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" * @param name name of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" * @param isComplete whether the event is complete.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" * @param timeStart starting time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" * @param timeEnd ending time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" public Event(String name, boolean isComplete, LocalDate timeStart, LocalDate timeEnd) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":" super(name, isComplete);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":" this.timeStart \u003d timeStart;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" this.timeEnd \u003d timeEnd;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ruiyangzh"},"content":" * Formats the event, for example parsing the start and end times into a more readable format.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ruiyangzh"},"content":" * @return a string representation of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ruiyangzh"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ruiyangzh"},"content":" return (\"[E]\" + super.toString() + \" (from: \" + timeStart.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ruiyangzh"},"content":" + \" to: \" + timeEnd.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ruiyangzh"},"content":" public String fileFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ruiyangzh"},"content":" return \"EV\" + DIVIDER + super.fileFormat() + DIVIDER + timeStart + DIVIDER + timeEnd;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":48}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":" * A generic task, containing a name and completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"public class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" public static final String DIVIDER \u003d \"%!%\";","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":" private String name;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" private boolean isComplete;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" * Initializes a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" * @param name name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" public Task(String name) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" * Initializes a task with its status.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" * @param name name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" * @param isComplete whether the task is complete.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" public Task(String name, boolean isComplete) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" this.isComplete \u003d isComplete;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" public void markDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" this.isComplete \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" public void markUndone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ruiyangzh"},"content":" * Formats the task for user reading.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ruiyangzh"},"content":" * @return a user-friendly task representation as a String.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ruiyangzh"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ruiyangzh"},"content":" if (isComplete) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ruiyangzh"},"content":" return (\"[X] \" + name);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ruiyangzh"},"content":" return (\"[ ] \" + name);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ruiyangzh"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ruiyangzh"},"content":" * Formats the task for saving to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ruiyangzh"},"content":" * @return file-formatted task String.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ruiyangzh"},"content":" public String fileFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ruiyangzh"},"content":" if (isComplete) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ruiyangzh"},"content":" return (\"TRUE\" + DIVIDER + name);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ruiyangzh"},"content":" return (\"FALSE\" + DIVIDER + name);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":59}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":" * Represents an extension of a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":" public ToDo(String name) {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":" super(name);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":" public ToDo(String name, boolean isComplete) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":" super(name, isComplete);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" public String fileFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" return \"TD\" + DIVIDER + super.fileFormat();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":22}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"import static org.junit.jupiter.api.Assertions.assertInstanceOf;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"import command.AddTaskCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"import command.DeleteCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":"import command.HelpCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":"import command.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":"import command.MarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":"import command.ShutdownCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.InvalidVarException;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" Parser testParser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" public void simpleTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" assertInstanceOf(ShutdownCommand.class, testParser.parse(\"bye\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" assertInstanceOf(HelpCommand.class, testParser.parse(\"help\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":" assertInstanceOf(ListCommand.class, testParser.parse(\"list\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" assertInstanceOf(AddTaskCommand.class, testParser.parse(\"event name /from 2001-12-01 /to 2003-12-03\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" assertInstanceOf(AddTaskCommand.class, testParser.parse(\"deadline name /by 2002-02-01\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" assertInstanceOf(AddTaskCommand.class, testParser.parse(\"todo name\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" assertInstanceOf(MarkCommand.class, testParser.parse(\"mark 1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" assertInstanceOf(MarkCommand.class, testParser.parse(\"unmark 1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" assertInstanceOf(DeleteCommand.class, testParser.parse(\"delete 1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" } catch (InvalidVarException | InvalidCommandException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":" System.out.println(e.getMessage() + e.getCause());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ruiyangzh"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ruiyangzh"},"content":" public void invalidCommandsTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidCommandException.class, () -\u003e testParser.parse(\"fljdkfesjflks\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidCommandException.class, () -\u003e testParser.parse(\"listlistlistlist\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidCommandException.class, () -\u003e testParser.parse(\" bye\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidCommandException.class, () -\u003e testParser.parse(\"deadline\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidCommandException.class, () -\u003e testParser.parse(\"deadlinne name /by 2001-01-01\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidCommandException.class, () -\u003e testParser.parse(\"deadLInE name /by 2001-01-01\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ruiyangzh"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ruiyangzh"},"content":" public void invalidVarsTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidVarException.class, () -\u003e testParser.parse(\"deadline name /by 2001-1-1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidVarException.class, () -\u003e testParser.parse(\"bye bye\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidVarException.class, () -\u003e testParser.parse(\"mark x\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidVarException.class, () -\u003e testParser.parse(\"mark y\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidVarException.class, () -\u003e testParser.parse(\"deadline /by 2001-99-99\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidVarException.class, () -\u003e testParser.parse(\"delete two\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidVarException.class, () -\u003e testParser.parse(\"todo \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidVarException.class, () -\u003e testParser.parse(\"mark \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(InvalidVarException.class, () -\u003e testParser.parse(\"delete \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":59}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"import dukeexception.CorruptedFileException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":"import task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":" public void corruptionTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":" Storage corrupted \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":" TaskList corruptionList \u003d new TaskList(corrupted);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruiyangzh"},"content":" corrupted.init(\"./data/corruptedStorage.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruiyangzh"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruiyangzh"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruiyangzh"},"content":" assertThrows(CorruptedFileException.class, () -\u003e corruptionList.loadFromDisk());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruiyangzh"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruiyangzh"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruiyangzh"},"content":" public void TaskListTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruiyangzh"},"content":" Storage tester \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruiyangzh"},"content":" TaskList testerList \u003d new TaskList(tester);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruiyangzh"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruiyangzh"},"content":" tester.init(\"./data/testStorage.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruiyangzh"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruiyangzh"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruiyangzh"},"content":" assertDoesNotThrow(() -\u003e testerList.loadFromDisk());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruiyangzh"},"content":" assertDoesNotThrow(() -\u003e testerList.addTask(new ToDo(\"name\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruiyangzh"},"content":" assertDoesNotThrow(() -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ruiyangzh"},"content":" assertEquals(true, testerList.setMark(0, true));","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ruiyangzh"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ruiyangzh"},"content":" assertDoesNotThrow(() -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ruiyangzh"},"content":" assertEquals(true, testerList.setMark(0, true));","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ruiyangzh"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ruiyangzh"},"content":" assertDoesNotThrow(() -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ruiyangzh"},"content":" assertEquals(true, testerList.setMark(0, false));","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ruiyangzh"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ruiyangzh"},"content":" assertDoesNotThrow(() -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ruiyangzh"},"content":" assertEquals(false, testerList.setMark(-1, true));","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ruiyangzh"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ruiyangzh"},"content":" assertDoesNotThrow(() -\u003e tester.clear());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ruiyangzh"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ruiyangzh"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruiyangzh":50}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ruiyangzh"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ruiyangzh"},"content":"event test1 /from start /to end","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ruiyangzh"},"content":"todo test 2","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ruiyangzh"},"content":"deadline test 3 /by dead line","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ruiyangzh"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ruiyangzh"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ruiyangzh"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ruiyangzh"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ruiyangzh"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ruiyangzh"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ruiyangzh"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ruiyangzh"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"ruiyangzh"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"ruiyangzh"},"content":"unknown command","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"ruiyangzh"},"content":"bye bye","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ruiyangzh"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ruiyangzh":16}}] diff --git a/ruiyangzh_ip_master/commits.json b/ruiyangzh_ip_master/commits.json index 7753b304..0031b146 100644 --- a/ruiyangzh_ip_master/commits.json +++ b/ruiyangzh_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ruiyangzh":[{"date":"2023-08-22","commitResults":[{"hash":"440db9aeeda30333f3a2d07dfdf3a5bdc594c596","isMergeCommit":false,"messageTitle":"Stage 1; renamed bot to Luke. Gave it basic startup and end lines.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"b4b3d7887e339512078d5c88bc4f1ae636215f7f","isMergeCommit":false,"messageTitle":"Stage 1; added echo for user input, implemented using scanner.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"49ec4fca52e2d74ba90a950038f95bfcbd4b98f2","isMergeCommit":false,"messageTitle":"Level 2. Added list functionality (implemented using an array of String).","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"18768f5c56b1a3d046c7c8d143a34f1a4ae345cc","isMergeCommit":false,"messageTitle":"Level 3. Implemented Task class, added ability to mark tasks as done or undone. Restructured the holding array from String[] to Task[].","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":4}}},{"hash":"5bae13cf8d960d7a165ebc0816178a86fe351739","isMergeCommit":false,"messageTitle":"Added Deadline, Event and ToDo classes that extend Task.","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":0}}},{"hash":"652cff0150e1555af277433a7ce65437c784a4ae","isMergeCommit":false,"messageTitle":"Restructured Duke; with a processInput that handles scanner inputs. Implemented adding each task variant into the list of Duke.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":30}}}]},{"date":"2023-08-24","commitResults":[{"hash":"ef93a524c36e9f440e540bff7b740011c6f03bf1","isMergeCommit":false,"messageTitle":"Implemented A-TextUiTesting, with defined input/output.","messageBody":"","tags":["A-TextUiTesting","A-Exception"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"79ac7dfd9870a7d858368a128d046337d7787762","isMergeCommit":false,"messageTitle":"Implemented A-Exceptions, partway through Level 5.","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":10}}}]},{"date":"2023-08-25","commitResults":[{"hash":"394be8b9216f35e397bbe960a399aeeda820c391","isMergeCommit":false,"messageTitle":"Implemented Level 5, exceptions added for invalid user inputs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":20}}},{"hash":"89ee93595bf9ea2de0c6a90433fd4b2507a2519f","isMergeCommit":false,"messageTitle":"Implemented A-Collections, using an arraylist to store tasks.","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"7ea7fcf712239d13035757bb0a0d9637759349db","isMergeCommit":false,"messageTitle":"Implemented Level-6, added delete functionality.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":2}}}]},{"date":"2023-08-28","commitResults":[{"hash":"fbd7257f01ff932db3eec86e663c7f7c9d91f5fb","isMergeCommit":false,"messageTitle":"Implemented Level 7.","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":14}}},{"hash":"c1548c4b7e768779cf77bc70860a5f7a76170496","isMergeCommit":false,"messageTitle":"Implemented Level 8. TODO-Handle parsing errors.","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":12}}}]}]},"authorFileTypeContributionMap":{"ruiyangzh":{"java":323,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":16}},"authorContributionVariance":{"ruiyangzh":4736.7446},"authorDisplayNameMap":{"ruiyangzh":"CS2103T-F11-3 ZHAO..YANG"}} +{"authorDailyContributionsMap":{"ruiyangzh":[{"date":"2023-08-22","commitResults":[{"hash":"440db9aeeda30333f3a2d07dfdf3a5bdc594c596","isMergeCommit":false,"messageTitle":"Stage 1; renamed bot to Luke. Gave it basic startup and end lines.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"b4b3d7887e339512078d5c88bc4f1ae636215f7f","isMergeCommit":false,"messageTitle":"Stage 1; added echo for user input, implemented using scanner.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"49ec4fca52e2d74ba90a950038f95bfcbd4b98f2","isMergeCommit":false,"messageTitle":"Level 2. Added list functionality (implemented using an array of String).","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"18768f5c56b1a3d046c7c8d143a34f1a4ae345cc","isMergeCommit":false,"messageTitle":"Level 3. Implemented Task class, added ability to mark tasks as done or undone. Restructured the holding array from String[] to Task[].","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":4}}},{"hash":"5bae13cf8d960d7a165ebc0816178a86fe351739","isMergeCommit":false,"messageTitle":"Added Deadline, Event and ToDo classes that extend Task.","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":0}}},{"hash":"652cff0150e1555af277433a7ce65437c784a4ae","isMergeCommit":false,"messageTitle":"Restructured Duke; with a processInput that handles scanner inputs. Implemented adding each task variant into the list of Duke.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":30}}}]},{"date":"2023-08-24","commitResults":[{"hash":"ef93a524c36e9f440e540bff7b740011c6f03bf1","isMergeCommit":false,"messageTitle":"Implemented A-TextUiTesting, with defined input/output.","messageBody":"","tags":["A-TextUiTesting","A-Exception"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"79ac7dfd9870a7d858368a128d046337d7787762","isMergeCommit":false,"messageTitle":"Implemented A-Exceptions, partway through Level 5.","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":10}}}]},{"date":"2023-08-25","commitResults":[{"hash":"394be8b9216f35e397bbe960a399aeeda820c391","isMergeCommit":false,"messageTitle":"Implemented Level 5, exceptions added for invalid user inputs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":20}}},{"hash":"89ee93595bf9ea2de0c6a90433fd4b2507a2519f","isMergeCommit":false,"messageTitle":"Implemented A-Collections, using an arraylist to store tasks.","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"7ea7fcf712239d13035757bb0a0d9637759349db","isMergeCommit":false,"messageTitle":"Implemented Level-6, added delete functionality.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":2}}}]},{"date":"2023-08-28","commitResults":[{"hash":"fbd7257f01ff932db3eec86e663c7f7c9d91f5fb","isMergeCommit":false,"messageTitle":"Implemented Level 7.","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":14}}},{"hash":"c1548c4b7e768779cf77bc70860a5f7a76170496","isMergeCommit":false,"messageTitle":"Implemented Level 8. TODO-Handle parsing errors.","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":12}}}]},{"date":"2023-08-31","commitResults":[{"hash":"d1f2e9fa82b40b33bd70cc515850a7e72d267f70","isMergeCommit":false,"messageTitle":"Partially implement OOP and packages - not complete.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":328}}},{"hash":"3022c3ccbd54349b1f965d5bed922d2ddfe64e0e","isMergeCommit":false,"messageTitle":"Partially implement OOP and packages - not complete.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":380,"deletions":0}}}]},{"date":"2023-09-01","commitResults":[{"hash":"aaea03acf9f6c68ee45a6a32fa6c616d1cb51c2d","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP and A-Packages.","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":543,"deletions":311}}},{"hash":"94a5836685a3812631adee9d592618c302145598","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-OOP-and-Packages\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"59578f080e00b1cdb600428c6cbb3df6e60e538d","isMergeCommit":false,"messageTitle":"Implement A-Gradle. Partial stylecheck compliance.","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":1},"java":{"insertions":273,"deletions":257},"md":{"insertions":2,"deletions":2}}},{"hash":"0e7322d92f9af801c5932b14a7f245d953e694b8","isMergeCommit":false,"messageTitle":"Implement A-JUnit. Package as JAR file, in releases.(Implement A-Jar)","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":4,"deletions":0},"java":{"insertions":130,"deletions":19}}},{"hash":"031de672aeded42ca605895630329b71274dea0b","isMergeCommit":false,"messageTitle":"Implement Level-9.","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":4}}},{"hash":"0ba8fb51c76a0d00841d93d3f0e3bc591b295302","isMergeCommit":false,"messageTitle":"Implement A-JavaDoc.","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":269,"deletions":28}}},{"hash":"6320af79a5c222057974abd6299a337edb3d4a81","isMergeCommit":false,"messageTitle":"Implement A-CodingStandard.","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"7436e9f82a1022712f93ec9f7dff3fb2cc4e0ee9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5f34d02baa277b2a447ac8dd4ae2ddc459743da4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/TaskList.java\n","fileTypesAndContributionMap":{}},{"hash":"4b5ab7d9403b6fc05be22709e03601c6a38b4d8c","isMergeCommit":false,"messageTitle":"Miscellaneous merge fixing.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"ruiyangzh":{"java":1124,"md":2,"fxml":0,"sh":0,"bat":0,"gradle":5,"txt":20}},"authorContributionVariance":{"ruiyangzh":248714.06},"authorDisplayNameMap":{"ruiyangzh":"CS2103T-F11-3 ZHAO..YANG"}} diff --git a/ruo-x_ip_master/authorship.json b/ruo-x_ip_master/authorship.json index 7f41ba59..77767b60 100644 --- a/ruo-x_ip_master/authorship.json +++ b/ruo-x_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Backend.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"import java.io.*;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":"// stores the task list in a text file","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":"public class Backend {","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" // create text file","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" private String pathString;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" public Backend() {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" this.pathString \u003d \"C:\\\\Users\\\\Admin\\\\ip\\\\text-ui-test\\\\data\\\\task.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" // Update task list in text file","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" public void saveTask(Task newTask) {","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" Path path \u003d Paths.get(\"C:\\\\Users\\\\Admin\\\\ip\\\\text-ui-test\", \"data\", \"task.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" String taskString \u003d newTask.toStoreString() + \"\\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" Files.writeString(path, taskString, StandardOpenOption.APPEND);","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" public void updateTask(Task task, int i) {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" String oldTask \u003d task.toStoreString();","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" String newTask \u003d task.toUpdateString(i);","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" File fileToUpdate \u003d new File(this.pathString);","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" String oldContent \u003d \"\";","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" BufferedReader reader \u003d null;","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" FileWriter writer \u003d null;","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" reader \u003d new BufferedReader(new FileReader(fileToUpdate));","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" //Reading all the lines of input text file into oldContent","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":" oldContent +\u003d line + System.lineSeparator();","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"ruo-x"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"ruo-x"},"content":" //Replacing oldString with newString in the oldContent","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"ruo-x"},"content":" String newContent \u003d oldContent.replaceAll(oldTask, newTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"ruo-x"},"content":" //Rewriting the input text file with newContent","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"ruo-x"},"content":" writer \u003d new FileWriter(fileToUpdate);","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"ruo-x"},"content":" writer.write(newContent);","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"ruo-x"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"ruo-x"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"ruo-x"},"content":" } finally {","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"ruo-x"},"content":" //Closing the resources","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"ruo-x"},"content":" reader.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"ruo-x"},"content":" writer.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"ruo-x"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"ruo-x"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"ruo-x"},"content":" // Delete task from task list","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"ruo-x"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"ruo-x"},"content":" String oldTask \u003d task.toStoreString();","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"ruo-x"},"content":" File fileToUpdate \u003d new File(this.pathString);","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"ruo-x"},"content":" String newContent \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"ruo-x"},"content":" BufferedReader reader \u003d null;","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"ruo-x"},"content":" FileWriter writer \u003d null;","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"ruo-x"},"content":" reader \u003d new BufferedReader(new FileReader(fileToUpdate));","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"ruo-x"},"content":" //Reading all the lines of input text file into oldContent","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"ruo-x"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"ruo-x"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"ruo-x"},"content":" if (!line.equals(oldTask)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"ruo-x"},"content":" newContent +\u003d line + System.lineSeparator();","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"ruo-x"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"ruo-x"},"content":" //Rewriting the input text file with newContent","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"ruo-x"},"content":" writer \u003d new FileWriter(fileToUpdate);","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"ruo-x"},"content":" writer.write(newContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"ruo-x"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"ruo-x"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"ruo-x"},"content":" } finally {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"ruo-x"},"content":" //Closing the resources","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"ruo-x"},"content":" reader.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"ruo-x"},"content":" writer.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"ruo-x"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"ruo-x"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"ruo-x"},"content":" // Retrieve task list from text file and convert to readable codes","lastModifiedDate":"2023-08-26"},{"lineNumber":107,"author":{"gitId":"ruo-x"},"content":" public void handleLoad(TaskList list) {","lastModifiedDate":"2023-08-26"},{"lineNumber":108,"author":{"gitId":"ruo-x"},"content":" Scanner sc \u003d null;","lastModifiedDate":"2023-08-26"},{"lineNumber":109,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":110,"author":{"gitId":"ruo-x"},"content":" File file \u003d new File(this.pathString);","lastModifiedDate":"2023-08-26"},{"lineNumber":111,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":112,"author":{"gitId":"ruo-x"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-26"},{"lineNumber":113,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":114,"author":{"gitId":"ruo-x"},"content":" // creates new file if it does not exist","lastModifiedDate":"2023-08-26"},{"lineNumber":115,"author":{"gitId":"ruo-x"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":116,"author":{"gitId":"ruo-x"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-26"},{"lineNumber":117,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":118,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":119,"author":{"gitId":"ruo-x"},"content":" sc \u003d new Scanner(file);","lastModifiedDate":"2023-08-26"},{"lineNumber":120,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":121,"author":{"gitId":"ruo-x"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"ruo-x"},"content":" String[] keyword \u003d sc.nextLine().split(\"/@/\");","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"ruo-x"},"content":" switch (keyword[0]) {","lastModifiedDate":"2023-08-26"},{"lineNumber":124,"author":{"gitId":"ruo-x"},"content":" case \"T\":","lastModifiedDate":"2023-08-26"},{"lineNumber":125,"author":{"gitId":"ruo-x"},"content":" boolean tStatus \u003d keyword[1].equals(\"1\");","lastModifiedDate":"2023-08-26"},{"lineNumber":126,"author":{"gitId":"ruo-x"},"content":" list.addTask(new ToDo(tStatus, keyword[2]));","lastModifiedDate":"2023-08-26"},{"lineNumber":127,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":128,"author":{"gitId":"ruo-x"},"content":" case \"D\":","lastModifiedDate":"2023-08-26"},{"lineNumber":129,"author":{"gitId":"ruo-x"},"content":" boolean dStatus \u003d keyword[1].equals(\"1\");","lastModifiedDate":"2023-08-26"},{"lineNumber":130,"author":{"gitId":"ruo-x"},"content":" list.addTask(new Deadline(dStatus, keyword[2], keyword[3]));","lastModifiedDate":"2023-08-26"},{"lineNumber":131,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":132,"author":{"gitId":"ruo-x"},"content":" case \"E\":","lastModifiedDate":"2023-08-26"},{"lineNumber":133,"author":{"gitId":"ruo-x"},"content":" boolean eStatus \u003d keyword[1].equals(\"1\");","lastModifiedDate":"2023-08-26"},{"lineNumber":134,"author":{"gitId":"ruo-x"},"content":" list.addTask(new Event(eStatus, keyword[2], keyword[3], keyword[4]));","lastModifiedDate":"2023-08-26"},{"lineNumber":135,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":136,"author":{"gitId":"ruo-x"},"content":" default:","lastModifiedDate":"2023-08-26"},{"lineNumber":137,"author":{"gitId":"ruo-x"},"content":" System.out.println(\"error\");","lastModifiedDate":"2023-08-26"},{"lineNumber":138,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":139,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":140,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":141,"author":{"gitId":"ruo-x"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":142,"author":{"gitId":"ruo-x"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":143,"author":{"gitId":"ruo-x"},"content":" } finally {","lastModifiedDate":"2023-08-26"},{"lineNumber":144,"author":{"gitId":"ruo-x"},"content":" sc.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":145,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":146,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":147,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"ruo-x":147}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"public class Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":" private final Backend backend;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":" private final SystemText systemText;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" public Command(Backend backend, SystemText systemText, TaskList taskList) {","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" this.backend \u003d backend;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" this.systemText \u003d systemText;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" // Add to do task","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" public String handleToDo(String input) {","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" String[] keyword \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" if (keyword.length \u003d\u003d 1 || keyword[1].equals(\"\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" // Create new To Do task from input","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" ToDo task \u003d new ToDo(false, keyword[1]);","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" // Add new To Do into task list","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" this.taskList.addTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" // Save new task into backend","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" this.backend.saveTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" // Return system message to inform action","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" return this.systemText.printAddTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" } catch (EmptyTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" return systemText.printError(e);","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":" // Add deadline task","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" public String handleDeadline(String input) {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" // Break input down into variables","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" String[] firstKeyword \u003d input.split(\"/by\");","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" if (firstKeyword.length \u003d\u003d 1 || firstKeyword[1].equals(\" \")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" throw new MissingTimeException();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" String deadline \u003d firstKeyword[1];","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" String[] secondKeyword \u003d firstKeyword[0].split(\" \", 2);","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":" if (secondKeyword.length \u003d\u003d 1 || secondKeyword[1].equals(\"\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"ruo-x"},"content":" String name \u003d secondKeyword[1];","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"ruo-x"},"content":" // Create new Deadline task from variables","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"ruo-x"},"content":" Deadline task \u003d new Deadline(false, name, deadline);","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"ruo-x"},"content":" // Add new Deadline into task list","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"ruo-x"},"content":" this.taskList.addTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"ruo-x"},"content":" // Save new task into backend","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"ruo-x"},"content":" this.backend.saveTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"ruo-x"},"content":" // Return system message to inform action","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"ruo-x"},"content":" return this.systemText.printAddTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"ruo-x"},"content":" } catch (MissingTimeException | EmptyTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"ruo-x"},"content":" return systemText.printError(e);","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"ruo-x"},"content":" // Add event task","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"ruo-x"},"content":" public String handleEvent(String input) {","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"ruo-x"},"content":" // Break input down into variables","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"ruo-x"},"content":" String[] firstSplit \u003d input.split(\"/from\");","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"ruo-x"},"content":" if (firstSplit.length \u003d\u003d 1 || firstSplit[1].equals(\" \")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"ruo-x"},"content":" throw new MissingTimeException();","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"ruo-x"},"content":" String[] secondSplit \u003d firstSplit[0].split(\" \", 2);","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"ruo-x"},"content":" if (secondSplit.length \u003d\u003d 1 || secondSplit[1].equals(\"\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"ruo-x"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"ruo-x"},"content":" String name \u003d secondSplit[1];","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"ruo-x"},"content":" String[] thirdSplit \u003d firstSplit[1].split(\"/to\");","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"ruo-x"},"content":" if (thirdSplit.length \u003d\u003d 1 || thirdSplit[1].equals(\" \") || thirdSplit[0].equals(\" \")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"ruo-x"},"content":" throw new MissingTimeException();","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"ruo-x"},"content":" String start \u003d thirdSplit[0];","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"ruo-x"},"content":" String end \u003d thirdSplit[1];","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"ruo-x"},"content":" // Create new Event task from variables","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"ruo-x"},"content":" Event task \u003d new Event(false, name, start, end);","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"ruo-x"},"content":" // Add new Event into task list","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"ruo-x"},"content":" this.taskList.addTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"ruo-x"},"content":" // Save new task into backend","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"ruo-x"},"content":" this.backend.saveTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"ruo-x"},"content":" // Return system message to inform action","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"ruo-x"},"content":" return this.systemText.printAddTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"ruo-x"},"content":" } catch (MissingTimeException | EmptyTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"ruo-x"},"content":" return systemText.printError(e);","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"ruo-x"},"content":" // Mark task","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"ruo-x"},"content":" public String handleMark(String input) {","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"ruo-x"},"content":" String[] keyword \u003d input.split(\" \");","lastModifiedDate":"2023-08-26"},{"lineNumber":95,"author":{"gitId":"ruo-x"},"content":" if (keyword.length \u003d\u003d 1 || keyword[1].equals(\"\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"ruo-x"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"ruo-x"},"content":" int taskNumber \u003d Integer.parseInt(keyword[1]);","lastModifiedDate":"2023-08-26"},{"lineNumber":99,"author":{"gitId":"ruo-x"},"content":" Task task \u003d this.taskList.getTask(taskNumber);","lastModifiedDate":"2023-08-26"},{"lineNumber":100,"author":{"gitId":"ruo-x"},"content":" // Update backend, important to update backend first!","lastModifiedDate":"2023-08-26"},{"lineNumber":101,"author":{"gitId":"ruo-x"},"content":" this.backend.updateTask(task, 1);","lastModifiedDate":"2023-08-26"},{"lineNumber":102,"author":{"gitId":"ruo-x"},"content":" // Mark task as done","lastModifiedDate":"2023-08-26"},{"lineNumber":103,"author":{"gitId":"ruo-x"},"content":" task.mark();","lastModifiedDate":"2023-08-26"},{"lineNumber":104,"author":{"gitId":"ruo-x"},"content":" // Return system message to inform action","lastModifiedDate":"2023-08-26"},{"lineNumber":105,"author":{"gitId":"ruo-x"},"content":" return this.systemText.printUpdateTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":106,"author":{"gitId":"ruo-x"},"content":" } catch (EmptyTaskException | InvalidTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"ruo-x"},"content":" return systemText.printError(e);","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":110,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":111,"author":{"gitId":"ruo-x"},"content":" // Un-mark task","lastModifiedDate":"2023-08-26"},{"lineNumber":112,"author":{"gitId":"ruo-x"},"content":" public String handleUnMark(String input) {","lastModifiedDate":"2023-08-26"},{"lineNumber":113,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"ruo-x"},"content":" String[] keyword \u003d input.split(\" \");","lastModifiedDate":"2023-08-26"},{"lineNumber":115,"author":{"gitId":"ruo-x"},"content":" if (keyword.length \u003d\u003d 1 || keyword[1].equals(\"\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"ruo-x"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"ruo-x"},"content":" int taskNumber \u003d Integer.parseInt(keyword[1]);","lastModifiedDate":"2023-08-26"},{"lineNumber":119,"author":{"gitId":"ruo-x"},"content":" Task task \u003d this.taskList.getTask(taskNumber);","lastModifiedDate":"2023-08-26"},{"lineNumber":120,"author":{"gitId":"ruo-x"},"content":" // Update backend","lastModifiedDate":"2023-08-26"},{"lineNumber":121,"author":{"gitId":"ruo-x"},"content":" this.backend.updateTask(task, 0);","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"ruo-x"},"content":" // un-mark task","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"ruo-x"},"content":" task.unMark();","lastModifiedDate":"2023-08-26"},{"lineNumber":124,"author":{"gitId":"ruo-x"},"content":" // Return system message to inform action","lastModifiedDate":"2023-08-26"},{"lineNumber":125,"author":{"gitId":"ruo-x"},"content":" return this.systemText.printUpdateTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":126,"author":{"gitId":"ruo-x"},"content":" } catch (EmptyTaskException | InvalidTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"ruo-x"},"content":" return systemText.printError(e);","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":129,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":130,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"ruo-x"},"content":" public String handleDelete(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"ruo-x"},"content":" // Get task from input","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"ruo-x"},"content":" String[] keyword \u003d input.split(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"ruo-x"},"content":" if (keyword.length \u003d\u003d 1 || keyword[1].equals(\"\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"ruo-x"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"ruo-x"},"content":" int taskNumber \u003d Integer.parseInt(keyword[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"ruo-x"},"content":" Task task \u003d this.taskList.getTask(taskNumber);","lastModifiedDate":"2023-08-27"},{"lineNumber":140,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":141,"author":{"gitId":"ruo-x"},"content":" // Delete task from backend","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"ruo-x"},"content":" this.backend.deleteTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"ruo-x"},"content":" // Delete task from task list","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"ruo-x"},"content":" this.taskList.deleteTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":147,"author":{"gitId":"ruo-x"},"content":" // Return system message to inform action","lastModifiedDate":"2023-08-27"},{"lineNumber":148,"author":{"gitId":"ruo-x"},"content":" return this.systemText.printDeleteTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":149,"author":{"gitId":"ruo-x"},"content":" } catch (EmptyTaskException | InvalidTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":150,"author":{"gitId":"ruo-x"},"content":" return systemText.printError(e);","lastModifiedDate":"2023-08-27"},{"lineNumber":151,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":152,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":153,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"ruo-x":153}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":" private String deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":" public Deadline(boolean isDone, String taskName, String deadline) {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" super(isDone, taskName);","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" public String toString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" return \"[D]\" + \"[X] \" + this.taskName + \"(by:\" + this.deadline + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" return \"[D]\" + \"[ ] \" + this.taskName + \"(by:\" + this.deadline + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" public String toStoreString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" return \"D/@/1/@/\" + this.taskName + \"/@/\" + this.deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" return \"D/@/0/@/\" + this.taskName + \"/@/\" + this.deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" public String toUpdateString(int i) {","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" return \"D/@/\" + i + \"/@/\" + this.taskName + \"/@/\" + this.deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"ruo-x":30}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":" System.out.println(SystemText.greeting());","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" // Load list of tasks stored in text file \"task.txt\" into the local TaskList","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" Backend storage \u003d new Backend();","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" storage.handleLoad(list);","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" // Start Scanner to read user inputs","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" SystemText ui \u003d new SystemText(list);","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" String answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" // Initialize relevant classes","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" Command command \u003d new Command(storage, ui, list);","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" // Listens to user commands and perform the relevant functions","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" while (true) {","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" if (answer.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" } else if (answer.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" System.out.println(ui.listTasks());","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" } else if (answer.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" System.out.println(command.handleMark(answer));","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" } else if (answer.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" System.out.println(command.handleUnMark(answer));","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" } else if (answer.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" System.out.println(command.handleToDo(answer));","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" } else if (answer.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" System.out.println(command.handleDeadline(answer));","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" } else if (answer.startsWith(\"event\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" System.out.println(command.handleEvent(answer));","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":" } else if (answer.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" System.out.println(command.handleDelete(answer));","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":" } else if (answer.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" System.out.println(ui.printError(new EmptyCommandException()));","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"ruo-x"},"content":" System.out.println(ui.printError(new InvalidCommandException()));","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"ruo-x"},"content":" System.out.println(SystemText.exit());","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"ruo-x"},"content":" ui.stopScanner();","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ruo-x":49,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":" super(message);","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":5}},{"path":"src/main/java/EmptyCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"public class EmptyCommandException extends DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":" public EmptyCommandException() {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":" super(\"Oh no! Bobi cannot receive empty commands. :/\");","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":5}},{"path":"src/main/java/EmptyTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"public class EmptyTaskException extends DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":" public EmptyTaskException() {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":" super(\"Oh no! Bobi cannot add an empty task. :/\");","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":" private String start;","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":" private String end;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" public Event(boolean isDone, String taskName, String start, String end) {","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" super(isDone, taskName);","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" public String toString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" return \"[E]\" + \"[X] \" + this.taskName + \"(from:\" + this.start + \"to:\" + this.end + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" return \"[E]\" + \"[ ] \" + this.taskName + \"(from:\" + this.start + \"to:\" + this.end + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" public String toStoreString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" return \"E/@/1/@/\" + this.taskName + \"/@/\" + this.start + \"/@/\" + this.end;","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" return \"E/@/0/@/\" + this.taskName + \"/@/\" + this.start + \"/@/\" + this.end;","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" public String toUpdateString(int i) {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" return \"E/@/\" + i + \"/@/\" + this.taskName + \"/@/\" + this.start + \"/@/\" + this.end;","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"ruo-x":33}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":" super(\"Oh no! Bobi does not know what that means... :/\");","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":5}},{"path":"src/main/java/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"public class InvalidTaskException extends DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":" public InvalidTaskException() {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":" super(\"Seems like Bobi cannot find the task you want!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":5}},{"path":"src/main/java/MissingTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"public class MissingTimeException extends DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":" public MissingTimeException() {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":" super(\"Please input a date or time for this task.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":5}},{"path":"src/main/java/SystemText.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"public class SystemText {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" private static final String SEPARATOR \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" private static final String GREETING \u003d \"Hello! I\u0027m Bobi \u003e.\u003c, what can I do for you?\\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" private static final String EXIT \u003d \"Bye! Hope you have a good day today :)\\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" private static final String ADD_TASK \u003d \"New task added to your list:\\n\";","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" private static String COUNT_TASK;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" private static final String LIST_TASKS \u003d \"Things you need to do: \\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" private static final String UPDATE_TASK \u003d \"OK! Your task has now been updated to: \\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" private static final String DELETE_TASK \u003d \"Alright! I have deleted this task from the list:\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" private Scanner sc;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" public SystemText(TaskList taskList) {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" public String getInput() {","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" return this.sc.nextLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" public void stopScanner() {","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" this.sc.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" // greeting message","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" public static String greeting() {","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + GREETING + SEPARATOR;","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" // add a task","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" public String printAddTask(Task task) {","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" COUNT_TASK \u003d \"You currently have \" + this.taskList.getLength() + \" tasks to do.\\n\";","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + ADD_TASK + task.toString() + \"\\n\" + COUNT_TASK + SEPARATOR;","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" // list out tasks","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" public String listTasks() {","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + LIST_TASKS + this.taskList.toString() + SEPARATOR;","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"ruo-x"},"content":" // Update task","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"ruo-x"},"content":" public String printUpdateTask(Task task) {","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + UPDATE_TASK + task.toString() + \"\\n\" + SEPARATOR;","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"ruo-x"},"content":" public String printError(DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + e.getMessage() + \"\\n\" + SEPARATOR;","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"ruo-x"},"content":" public String printDeleteTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"ruo-x"},"content":" COUNT_TASK \u003d \"You currently have \" + this.taskList.getLength() + \" tasks to do.\\n\";","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + DELETE_TASK + task.toString() + \"\\n\" + COUNT_TASK + SEPARATOR;","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"ruo-x"},"content":" // exit message","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"ruo-x"},"content":" public static String exit() {","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + EXIT + SEPARATOR;","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"ruo-x":63}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"public class Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":" String taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":" boolean isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" public Task(Boolean status, String taskName) {","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" this.isDone \u003d status;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" public String getName() {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" return this.taskName;","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" public void mark() {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" public void unMark() {","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" public String toString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" return \"[X] \" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" return \"[ ] \" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" public String toStoreString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" return \"1/@/\" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" return \"0/@/\" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":" public String toUpdateString(int i) {","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" return i + \"/@/\" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"ruo-x":42}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"public class TaskList {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" private ArrayList\u003cTask\u003e array;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" public TaskList() {","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" this.array \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" public void addTask(Task newTask) {","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" // add new task into our array","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" this.array.add(newTask);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" public Task getTask(int taskNumber) throws InvalidTaskException {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" if (taskNumber \u003e this.array.size() || taskNumber \u003d\u003d 0) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" return this.array.get(taskNumber - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" public int getLength() {","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" return this.array.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" for (int i \u003d 0; i \u003c 100; i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" if (this.array.get(i).equals(task)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" this.array.remove(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" // display in numerical pointers","lastModifiedDate":"2023-08-25"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" String list \u003d \"\";","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":" for (int i \u003d 0; i \u003c this.array.size(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" Task task \u003d this.array.get(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" if (task \u003d\u003d null) {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":" list +\u003d (i + 1) + \".\" + task + \"\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"ruo-x"},"content":" return list;","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"ruo-x":49}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":" public ToDo(boolean isDone, String taskName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":" super(isDone, taskName);","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" public String toString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" return \"[T]\" + \"[X] \" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" return \"[T]\" + \"[ ] \" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" public String toStoreString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" return \"T/@/1/@/\" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" return \"T/@/0/@/\" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" public String toUpdateString(int i) {","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" return \"T/@/\" + i + \"/@/\" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"ruo-x":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"todo running","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"deadline school work /by this friday","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"event hackathon /from 2pm /to 5pm","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"mark 0","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":"mark 1","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"mark 2","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":"mark 3","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":"mark 5","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":"unmark 0","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":"unmark 1","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":"unmark 2","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":"unmark 3","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":"unmark 5","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":"todo","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":"deadline","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":"deadline school work","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":"event","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":"event hackathon","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":"event hackathon /from","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":"event hackathon /from 2pm","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":"delete 0","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":"delete 1","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":"delete 1","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":"delete 1","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":"bye","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":31}},{"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":"ruo-x"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Duke.java","lastModifiedDate":"2023-08-27"},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"ruo-x":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":"ruo-x"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/Duke.java","lastModifiedDate":"2023-08-27"},{"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":"-"},"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":{"ruo-x":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"# duke.duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":"3. After that, locate the `src/main/java/duke.duke.java` file, right-click it, and choose `Run duke.duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ruo-x":2,"-":22}},{"path":"src/main/java/duke/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"import duke.exception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":"public class Command {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" private final Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" private final Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" public Command(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" // Add to do task","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" public String handleToDo(String input) {","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" ToDo task \u003d Parser.parseTodo(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" // Add new To Do into task list","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" this.taskList.addTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" // Save new task into backend","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" this.storage.saveTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" // Return system message to inform action","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" return this.ui.printAddTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" } catch (EmptyTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" return ui.printError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" // Add deadline task","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" public String handleDeadline(String input) {","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" Deadline task \u003d Parser.parseDeadline(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ruo-x"},"content":" // Add new Duke.Deadline into task list","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ruo-x"},"content":" this.taskList.addTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ruo-x"},"content":" // Save new task into backend","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"ruo-x"},"content":" this.storage.saveTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ruo-x"},"content":" // Return system message to inform action","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"ruo-x"},"content":" return this.ui.printAddTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ruo-x"},"content":" } catch (MissingTimeException | EmptyTaskException | InvalidDeadlineException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ruo-x"},"content":" return ui.printError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ruo-x"},"content":" } catch (NumberFormatException | DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ruo-x"},"content":" // when time input is incorrect","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ruo-x"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ruo-x"},"content":" } catch (InvalidDeadlineException i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ruo-x"},"content":" return ui.printError(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"ruo-x"},"content":" // Add event task","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"ruo-x"},"content":" public String handleEvent(String input) {","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"ruo-x"},"content":" Event task \u003d Parser.parseEvent(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"ruo-x"},"content":" // Add new Duke.Event into task list","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"ruo-x"},"content":" this.taskList.addTask(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"ruo-x"},"content":" // Save new task into backend","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"ruo-x"},"content":" this.storage.saveTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"ruo-x"},"content":" // Return system message to inform action","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"ruo-x"},"content":" return this.ui.printAddTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"ruo-x"},"content":" } catch (MissingTimeException | EmptyTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"ruo-x"},"content":" return ui.printError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"ruo-x"},"content":" } catch (NumberFormatException | DateTimeException | InvalidEventException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"ruo-x"},"content":" // when time input is incorrect","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"ruo-x"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"ruo-x"},"content":" } catch (InvalidEventException i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"ruo-x"},"content":" return ui.printError(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":89,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"ruo-x"},"content":" // Mark task","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"ruo-x"},"content":" public String handleMark(String input) {","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"ruo-x"},"content":" int taskNumber \u003d Parser.parseActions(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"ruo-x"},"content":" Task task \u003d this.taskList.getTask(taskNumber);","lastModifiedDate":"2023-08-26"},{"lineNumber":95,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"ruo-x"},"content":" // Update backend, important to update backend first!","lastModifiedDate":"2023-08-26"},{"lineNumber":97,"author":{"gitId":"ruo-x"},"content":" this.storage.updateTask(task, 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"ruo-x"},"content":" // Mark task as done","lastModifiedDate":"2023-08-26"},{"lineNumber":100,"author":{"gitId":"ruo-x"},"content":" task.mark();","lastModifiedDate":"2023-08-26"},{"lineNumber":101,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"ruo-x"},"content":" // Return system message to inform action","lastModifiedDate":"2023-08-26"},{"lineNumber":103,"author":{"gitId":"ruo-x"},"content":" return this.ui.printUpdateTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"ruo-x"},"content":" } catch (EmptyTaskException | InvalidTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"ruo-x"},"content":" return ui.printError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":108,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":109,"author":{"gitId":"ruo-x"},"content":" // Un-mark task","lastModifiedDate":"2023-08-26"},{"lineNumber":110,"author":{"gitId":"ruo-x"},"content":" public String handleUnMark(String input) {","lastModifiedDate":"2023-08-26"},{"lineNumber":111,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"ruo-x"},"content":" int taskNumber \u003d Parser.parseActions(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"ruo-x"},"content":" Task task \u003d this.taskList.getTask(taskNumber);","lastModifiedDate":"2023-08-26"},{"lineNumber":114,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"ruo-x"},"content":" // Update backend","lastModifiedDate":"2023-08-26"},{"lineNumber":116,"author":{"gitId":"ruo-x"},"content":" this.storage.updateTask(task, 0);","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"ruo-x"},"content":" // un-mark task","lastModifiedDate":"2023-08-26"},{"lineNumber":119,"author":{"gitId":"ruo-x"},"content":" task.unMark();","lastModifiedDate":"2023-08-26"},{"lineNumber":120,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"ruo-x"},"content":" // Return system message to inform action","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"ruo-x"},"content":" return this.ui.printUpdateTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"ruo-x"},"content":" } catch (EmptyTaskException | InvalidTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"ruo-x"},"content":" return ui.printError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":127,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"ruo-x"},"content":" public String handleDelete(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":129,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":130,"author":{"gitId":"ruo-x"},"content":" // Get task from input","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"ruo-x"},"content":" int taskNumber \u003d Parser.parseActions(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"ruo-x"},"content":" Task task \u003d this.taskList.getTask(taskNumber);","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"ruo-x"},"content":" // Delete task from backend","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"ruo-x"},"content":" this.storage.deleteTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"ruo-x"},"content":" // Delete task from task list","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"ruo-x"},"content":" this.taskList.deleteTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":140,"author":{"gitId":"ruo-x"},"content":" // Return system message to inform action","lastModifiedDate":"2023-08-27"},{"lineNumber":141,"author":{"gitId":"ruo-x"},"content":" return this.ui.printDeleteTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"ruo-x"},"content":" } catch (EmptyTaskException | InvalidTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"ruo-x"},"content":" return ui.printError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"ruo-x":146}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"import duke.exception.EmptyCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"import duke.exception.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" private TaskList list;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" private Command command;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" public Duke() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" this.list \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" // Load list of tasks stored in text file \"task.txt\" into the local Duke.TaskList","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" storage.handleLoad(list);","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" // Start Scanner to read user inputs","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" this.ui \u003d new Ui(list);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" this.command \u003d new Command(storage, ui, list);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" System.out.println(Ui.greeting());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" String answer \u003d ui.getInput();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" // Listens to user commands and perform the relevant functions","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" while (true) {","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" if (answer.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" } else if (answer.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" System.out.println(ui.listTasks());","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" } else if (answer.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" System.out.println(command.handleMark(answer));","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":" } else if (answer.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" System.out.println(command.handleUnMark(answer));","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":" } else if (answer.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" System.out.println(command.handleToDo(answer));","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"ruo-x"},"content":" } else if (answer.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"ruo-x"},"content":" System.out.println(command.handleDeadline(answer));","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"ruo-x"},"content":" } else if (answer.startsWith(\"event\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"ruo-x"},"content":" System.out.println(command.handleEvent(answer));","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"ruo-x"},"content":" } else if (answer.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"ruo-x"},"content":" System.out.println(command.handleDelete(answer));","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"ruo-x"},"content":" } else if (answer.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"ruo-x"},"content":" System.out.println(ui.printError(new EmptyCommandException()));","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"ruo-x"},"content":" System.out.println(ui.printError(new InvalidCommandException()));","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"ruo-x"},"content":" answer \u003d ui.getInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"ruo-x"},"content":" System.out.println(Ui.exit());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ruo-x"},"content":" ui.stopScanner();","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":65,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ruo-x"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ruo-x"},"content":" new Duke().run();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ruo-x":66,"-":3}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"import duke.exception.EmptyTaskException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"import duke.exception.InvalidDeadlineException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"import duke.exception.InvalidEventException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":"import duke.exception.MissingTimeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" public static ToDo parseTodo(String input) throws EmptyTaskException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" String[] keyword \u003d input.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" // checks if user has input a task name","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" if (keyword.length \u003d\u003d 1 || keyword[1].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" // create new To Do task from input","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" return new ToDo(false, keyword[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" public static Deadline parseDeadline(String input) throws MissingTimeException, EmptyTaskException, InvalidDeadlineException {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" // split input by \"/by\"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" String[] firstSplit \u003d input.split(\"/by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" // checks if user has input a deadline","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" if (firstSplit.length \u003d\u003d 1 || firstSplit[1].equals(\" \")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":" throw new MissingTimeException();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" // checks if user has input a task name","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" String[] secondSplit \u003d firstSplit[0].split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" if (secondSplit.length \u003d\u003d 1 || secondSplit[1].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" // fill up a name field with input values","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" String name \u003d secondSplit[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" String[] thirdSplit \u003d firstSplit[1].split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":" // checks if user has input a valid deadline with date and time","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ruo-x"},"content":" if (thirdSplit.length \u003d\u003d 2 || thirdSplit[2].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ruo-x"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ruo-x"},"content":" // create a deadline field with input values","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ruo-x"},"content":" int hour \u003d Integer.parseInt(thirdSplit[2].substring(0, 2));","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ruo-x"},"content":" int minute \u003d Integer.parseInt(thirdSplit[2].substring(2));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ruo-x"},"content":" LocalDate date \u003d LocalDate.parse(thirdSplit[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ruo-x"},"content":" LocalTime time \u003d LocalTime.of(hour, minute);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ruo-x"},"content":" LocalDateTime deadline \u003d LocalDateTime.of(date, time);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ruo-x"},"content":" // create new Duke.Deadline task from variables","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ruo-x"},"content":" return new Deadline(false, name, deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ruo-x"},"content":" public static Event parseEvent(String input) throws MissingTimeException, EmptyTaskException, InvalidEventException {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ruo-x"},"content":" // split input by \"/from\"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ruo-x"},"content":" String[] firstSplit \u003d input.split(\"/from\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ruo-x"},"content":" // checks if user has input a start field","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ruo-x"},"content":" if (firstSplit.length \u003d\u003d 1 || firstSplit[1].equals(\" \")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ruo-x"},"content":" throw new MissingTimeException();","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ruo-x"},"content":" String[] secondSplit \u003d firstSplit[0].split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"ruo-x"},"content":" // checks if user has input a task name","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"ruo-x"},"content":" if (secondSplit.length \u003d\u003d 1 || secondSplit[1].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"ruo-x"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"ruo-x"},"content":" // create a name field with input value","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"ruo-x"},"content":" String name \u003d secondSplit[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"ruo-x"},"content":" String[] thirdSplit \u003d firstSplit[1].split(\"/to\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"ruo-x"},"content":" // checks if user has input an end field","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"ruo-x"},"content":" if (thirdSplit.length \u003d\u003d 1 || thirdSplit[1].equals(\" \") || thirdSplit[0].equals(\" \")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"ruo-x"},"content":" throw new MissingTimeException();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"ruo-x"},"content":" String[] startSplit \u003d thirdSplit[0].split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"ruo-x"},"content":" // checks if user has input the correct start field with date and time","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"ruo-x"},"content":" if (startSplit.length \u003d\u003d 2 || startSplit[2].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"ruo-x"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"ruo-x"},"content":" // create a start field from input values","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"ruo-x"},"content":" LocalDate startDate \u003d LocalDate.parse(startSplit[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"ruo-x"},"content":" int startHour \u003d Integer.parseInt(startSplit[2].substring(0, 2));","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"ruo-x"},"content":" int startMinute \u003d Integer.parseInt(startSplit[2].substring(2));","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"ruo-x"},"content":" LocalTime startTime \u003d LocalTime.of(startHour, startMinute);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"ruo-x"},"content":" LocalDateTime start \u003d LocalDateTime.of(startDate, startTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"ruo-x"},"content":" String[] endSplit \u003d thirdSplit[1].split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"ruo-x"},"content":" // checks if user has input the correct end field with date and time","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"ruo-x"},"content":" if (endSplit.length \u003d\u003d 2 || endSplit[2].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"ruo-x"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"ruo-x"},"content":" // creates an end field from input values","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"ruo-x"},"content":" LocalDate endDate \u003d LocalDate.parse(endSplit[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"ruo-x"},"content":" int endHour \u003d Integer.parseInt(endSplit[2].substring(0, 2));","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"ruo-x"},"content":" int endMinute \u003d Integer.parseInt(endSplit[2].substring(2));","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"ruo-x"},"content":" LocalTime endTime \u003d LocalTime.of(endHour, endMinute);","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"ruo-x"},"content":" LocalDateTime end \u003d LocalDateTime.of(endDate, endTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"ruo-x"},"content":" // create new Duke.Event task from variables","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"ruo-x"},"content":" return new Event(false, name, start, end);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"ruo-x"},"content":" public static int parseActions(String input) throws EmptyTaskException {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"ruo-x"},"content":" String[] keyword \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"ruo-x"},"content":" // checks if user has input a task number","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"ruo-x"},"content":" if (keyword.length \u003d\u003d 1 || keyword[1].equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"ruo-x"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"ruo-x"},"content":" return Integer.parseInt(keyword[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruo-x":118}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":"import java.io.*;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":"// stores the task list in a text file","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" // create text file","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" private final String pathString;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" public Storage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" this.pathString \u003d \"C:\\\\Users\\\\Admin\\\\ip\\\\text-ui-test\\\\data\\\\task.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" // Update task list in text file","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" public void saveTask(Task newTask) {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" Path path \u003d Paths.get(\"C:\\\\Users\\\\Admin\\\\ip\\\\text-ui-test\", \"data\", \"task.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" String taskString \u003d newTask.toStoreString() + \"\\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" Files.writeString(path, taskString, StandardOpenOption.APPEND);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" public void updateTask(Task task, int i) {","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" String oldTask \u003d task.toStoreString();","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" String newTask \u003d task.toUpdateString(i);","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" File fileToUpdate \u003d new File(this.pathString);","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" String oldContent \u003d \"\";","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":" BufferedReader reader \u003d null;","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" FileWriter writer \u003d null;","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"ruo-x"},"content":" reader \u003d new BufferedReader(new FileReader(fileToUpdate));","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"ruo-x"},"content":" //Reading all the lines of input text file into oldContent","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"ruo-x"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"ruo-x"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"ruo-x"},"content":" oldContent +\u003d line + System.lineSeparator();","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"ruo-x"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"ruo-x"},"content":" //Replacing oldString with newString in the oldContent","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"ruo-x"},"content":" String newContent \u003d oldContent.replaceAll(oldTask, newTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"ruo-x"},"content":" //Rewriting the input text file with newContent","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"ruo-x"},"content":" writer \u003d new FileWriter(fileToUpdate);","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"ruo-x"},"content":" writer.write(newContent);","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"ruo-x"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"ruo-x"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"ruo-x"},"content":" } finally {","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"ruo-x"},"content":" //Closing the resources","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"ruo-x"},"content":" assert reader !\u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ruo-x"},"content":" reader.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"ruo-x"},"content":" assert writer !\u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"ruo-x"},"content":" writer.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"ruo-x"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"ruo-x"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"ruo-x"},"content":" // Delete task from task list","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"ruo-x"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"ruo-x"},"content":" String oldTask \u003d task.toStoreString();","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"ruo-x"},"content":" File fileToUpdate \u003d new File(this.pathString);","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"ruo-x"},"content":" String newContent \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"ruo-x"},"content":" BufferedReader reader \u003d null;","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"ruo-x"},"content":" FileWriter writer \u003d null;","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"ruo-x"},"content":" reader \u003d new BufferedReader(new FileReader(fileToUpdate));","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"ruo-x"},"content":" //Reading all the lines of input text file into oldContent","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"ruo-x"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"ruo-x"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"ruo-x"},"content":" if (!line.equals(oldTask)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"ruo-x"},"content":" newContent +\u003d line + System.lineSeparator();","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"ruo-x"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"ruo-x"},"content":" //Rewriting the input text file with newContent","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"ruo-x"},"content":" writer \u003d new FileWriter(fileToUpdate);","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"ruo-x"},"content":" writer.write(newContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"ruo-x"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"ruo-x"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"ruo-x"},"content":" } finally {","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"ruo-x"},"content":" //Closing the resources","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"ruo-x"},"content":" assert reader !\u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"ruo-x"},"content":" reader.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"ruo-x"},"content":" assert writer !\u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"ruo-x"},"content":" writer.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"ruo-x"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"ruo-x"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"ruo-x"},"content":" // Retrieve task list from text file and convert to readable codes","lastModifiedDate":"2023-08-26"},{"lineNumber":118,"author":{"gitId":"ruo-x"},"content":" public void handleLoad(TaskList list) {","lastModifiedDate":"2023-08-26"},{"lineNumber":119,"author":{"gitId":"ruo-x"},"content":" Scanner sc \u003d null;","lastModifiedDate":"2023-08-26"},{"lineNumber":120,"author":{"gitId":"ruo-x"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":121,"author":{"gitId":"ruo-x"},"content":" File file \u003d new File(this.pathString);","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"ruo-x"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-26"},{"lineNumber":124,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":125,"author":{"gitId":"ruo-x"},"content":" // creates new file if it does not exist","lastModifiedDate":"2023-08-26"},{"lineNumber":126,"author":{"gitId":"ruo-x"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":127,"author":{"gitId":"ruo-x"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-26"},{"lineNumber":128,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":129,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":130,"author":{"gitId":"ruo-x"},"content":" sc \u003d new Scanner(file);","lastModifiedDate":"2023-08-26"},{"lineNumber":131,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":132,"author":{"gitId":"ruo-x"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":133,"author":{"gitId":"ruo-x"},"content":" String[] keyword \u003d sc.nextLine().split(\"/@/\");","lastModifiedDate":"2023-08-26"},{"lineNumber":134,"author":{"gitId":"ruo-x"},"content":" switch (keyword[0]) {","lastModifiedDate":"2023-08-26"},{"lineNumber":135,"author":{"gitId":"ruo-x"},"content":" case \"T\":","lastModifiedDate":"2023-08-26"},{"lineNumber":136,"author":{"gitId":"ruo-x"},"content":" boolean tStatus \u003d keyword[1].equals(\"1\");","lastModifiedDate":"2023-08-26"},{"lineNumber":137,"author":{"gitId":"ruo-x"},"content":" list.addTask(new ToDo(tStatus, keyword[2]));","lastModifiedDate":"2023-08-26"},{"lineNumber":138,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":139,"author":{"gitId":"ruo-x"},"content":" case \"D\":","lastModifiedDate":"2023-08-26"},{"lineNumber":140,"author":{"gitId":"ruo-x"},"content":" boolean dStatus \u003d keyword[1].equals(\"1\");","lastModifiedDate":"2023-08-26"},{"lineNumber":141,"author":{"gitId":"ruo-x"},"content":" list.addTask(new Deadline(","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"ruo-x"},"content":" dStatus,","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"ruo-x"},"content":" keyword[2],","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"ruo-x"},"content":" LocalDateTime.parse(keyword[3])","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"ruo-x"},"content":" ));","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":147,"author":{"gitId":"ruo-x"},"content":" case \"E\":","lastModifiedDate":"2023-08-26"},{"lineNumber":148,"author":{"gitId":"ruo-x"},"content":" boolean eStatus \u003d keyword[1].equals(\"1\");","lastModifiedDate":"2023-08-26"},{"lineNumber":149,"author":{"gitId":"ruo-x"},"content":" list.addTask(new Event(","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"ruo-x"},"content":" eStatus,","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"ruo-x"},"content":" keyword[2],","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"ruo-x"},"content":" LocalDateTime.parse(keyword[3]),","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"ruo-x"},"content":" LocalDateTime.parse(keyword[4])","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"ruo-x"},"content":" ));","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":156,"author":{"gitId":"ruo-x"},"content":" default:","lastModifiedDate":"2023-08-26"},{"lineNumber":157,"author":{"gitId":"ruo-x"},"content":" System.out.println(\"error\");","lastModifiedDate":"2023-08-26"},{"lineNumber":158,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":159,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":160,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":161,"author":{"gitId":"ruo-x"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":162,"author":{"gitId":"ruo-x"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":163,"author":{"gitId":"ruo-x"},"content":" } finally {","lastModifiedDate":"2023-08-26"},{"lineNumber":164,"author":{"gitId":"ruo-x"},"content":" assert sc !\u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"ruo-x"},"content":" sc.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":166,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":167,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":168,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"ruo-x":168}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"import duke.exception.InvalidTaskException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":"public class TaskList {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" private ArrayList\u003cTask\u003e array;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" public TaskList() {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" this.array \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" public void addTask(Task newTask) {","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" // add new task into our array","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" this.array.add(newTask);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" public Task getTask(int taskNumber) throws InvalidTaskException {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" if (taskNumber \u003e this.array.size() || taskNumber \u003d\u003d 0) {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" throw new InvalidTaskException();","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" return this.array.get(taskNumber - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" public int getLength() {","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" return this.array.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":" for (int i \u003d 0; i \u003c 100; i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" if (this.array.get(i).equals(task)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" this.array.remove(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":" // display in numerical pointers","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" String list \u003d \"\";","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":" for (int i \u003d 0; i \u003c this.array.size(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"ruo-x"},"content":" Task task \u003d this.array.get(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"ruo-x"},"content":" if (task \u003d\u003d null) {","lastModifiedDate":"2023-08-25"},{"lineNumber":47,"author":{"gitId":"ruo-x"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":48,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":49,"author":{"gitId":"ruo-x"},"content":" list +\u003d (i + 1) + \".\" + task + \"\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":51,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":52,"author":{"gitId":"ruo-x"},"content":" return list;","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"ruo-x":54}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" private static final String SEPARATOR \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" private static final String GREETING \u003d \"Hello! I\u0027m Bobi \u003e.\u003c, what can I do for you?\\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" private static final String EXIT \u003d \"Bye! Hope you have a good day today :)\\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" private static final String ADD_TASK \u003d \"New task added to your list:\\n\";","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" private static String COUNT_TASK;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" private static final String LIST_TASKS \u003d \"Things you need to do: \\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" private static final String UPDATE_TASK \u003d \"OK! Your task has now been updated to: \\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" private static final String DELETE_TASK \u003d \"Alright! I have deleted this task from the list:\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" private Scanner sc;","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" public Ui(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" public String getInput() {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" return this.sc.nextLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" public void stopScanner() {","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" this.sc.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" // greeting message","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" public static String greeting() {","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + GREETING + SEPARATOR;","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":" // add a task","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" public String printAddTask(Task task) {","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" COUNT_TASK \u003d \"You currently have \" + this.taskList.getLength() + \" tasks to do.\\n\";","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + ADD_TASK + task.toString() + \"\\n\" + COUNT_TASK + SEPARATOR;","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"ruo-x"},"content":" // list out tasks","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"ruo-x"},"content":" public String listTasks() {","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + LIST_TASKS + this.taskList.toString() + SEPARATOR;","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"ruo-x"},"content":" // Update task","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"ruo-x"},"content":" public String printUpdateTask(Task task) {","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + UPDATE_TASK + task.toString() + \"\\n\" + SEPARATOR;","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"ruo-x"},"content":" public String printError(DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + e.getMessage() + \"\\n\" + SEPARATOR;","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"ruo-x"},"content":" public String printDeleteTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"ruo-x"},"content":" COUNT_TASK \u003d \"You currently have \" + this.taskList.getLength() + \" tasks to do.\\n\";","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + DELETE_TASK + task.toString() + \"\\n\" + COUNT_TASK + SEPARATOR;","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"ruo-x"},"content":" // exit message","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"ruo-x"},"content":" public static String exit() {","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"ruo-x"},"content":" return SEPARATOR + EXIT + SEPARATOR;","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"ruo-x":68}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" super(message);","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":7}},{"path":"src/main/java/duke/exception/EmptyCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"public class EmptyCommandException extends DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" public EmptyCommandException() {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" super(\"Oh no! Bobi cannot receive empty commands. :/\");","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":7}},{"path":"src/main/java/duke/exception/EmptyTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"public class EmptyTaskException extends DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" public EmptyTaskException() {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" super(\"Oh no! Bobi cannot add an empty task. :/\");","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":7}},{"path":"src/main/java/duke/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" super(\"Oh no! Bobi does not know what that means... :/\");","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":7}},{"path":"src/main/java/duke/exception/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"public class InvalidDeadlineException extends DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" super(\"Oh no! It seems like you have indicated an invalid deadline :/ \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" + \"Please follow this format:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" + \"deadline \u003ctask name\u003e /by \u003cyyyy-mm-dd\u003e \u003cHHmm\u003e\"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruo-x":10}},{"path":"src/main/java/duke/exception/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"public class InvalidEventException extends DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" public InvalidEventException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" super(\"Oh no! It seems like you have indicated an invalid event :/ \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" + \"Please follow this format:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" + \"event \u003ctask name\u003e /from \u003cyyyy-mm-dd\u003e \u003cHHmm\u003e /to \u003cyyyy-mm-dd\u003e \u003cHHmm\u003e\"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruo-x":10}},{"path":"src/main/java/duke/exception/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"public class InvalidTaskException extends DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" public InvalidTaskException() {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" super(\"Seems like Bobi cannot find the task you want!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":7}},{"path":"src/main/java/duke/exception/MissingTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"public class MissingTimeException extends DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" public MissingTimeException() {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" super(\"Please input a date or time for this task.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":7}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" public Deadline(boolean isDone, String taskName, LocalDateTime deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" super(isDone, taskName);","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" public String getDeadlineString(LocalDateTime deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy \u0027at\u0027 HH:mm a\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" return deadline.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" public String toString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" return \"[D]\" + \"[X] \" + this.taskName + \"(by: \" + getDeadlineString(this.deadline) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" return \"[D]\" + \"[ ] \" + this.taskName + \"(by: \" + getDeadlineString(this.deadline) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" public String toStoreString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" return \"D/@/1/@/\" + this.taskName + \"/@/\" + this.deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":" return \"D/@/0/@/\" + this.taskName + \"/@/\" + this.deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" public String toUpdateString(int i) {","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" return \"D/@/\" + i + \"/@/\" + this.taskName + \"/@/\" + this.deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"ruo-x":40}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" public Event(boolean isDone, String taskName, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" super(isDone, taskName);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" public String getDateTimeString(LocalDateTime dateTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy \u0027at\u0027 HH:mm a\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" return dateTime.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" public String toString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" return \"[E]\"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" + \"[X] \"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" + this.taskName","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" + \"(from: \" + getDateTimeString(this.start)","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" + \" to: \" + getDateTimeString(this.end) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" return \"[E]\"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" + \"[ ] \"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" + this.taskName","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":" + \"(from: \" + getDateTimeString(this.start)","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" + \" to: \" + getDateTimeString(this.end) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" public String toStoreString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":" return \"E/@/1/@/\" + this.taskName + \"/@/\" + this.start + \"/@/\" + this.end;","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":" return \"E/@/0/@/\" + this.taskName + \"/@/\" + this.start + \"/@/\" + this.end;","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"ruo-x"},"content":" public String toUpdateString(int i) {","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"ruo-x"},"content":" return \"E/@/\" + i + \"/@/\" + this.taskName + \"/@/\" + this.start + \"/@/\" + this.end;","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"ruo-x":51}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"public class Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" String taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" boolean isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":" public Task(Boolean status, String taskName) {","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" this.isDone \u003d status;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" public String getName() {","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" return this.taskName;","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":" public void mark() {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" public void unMark() {","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":" public String toString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" return \"[X] \" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" return \"[ ] \" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"ruo-x"},"content":" public String toStoreString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"ruo-x"},"content":" return \"1/@/\" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"ruo-x"},"content":" return \"0/@/\" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"ruo-x"},"content":" public String toUpdateString(int i) {","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"ruo-x"},"content":" return i + \"/@/\" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"ruo-x":44}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":" public ToDo(boolean isDone, String taskName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":" super(isDone, taskName);","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":" public String toString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":" return \"[T]\" + \"[X] \" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":" return \"[T]\" + \"[ ] \" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":" public String toStoreString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":" return \"T/@/1/@/\" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":" return \"T/@/0/@/\" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":" public String toUpdateString(int i) {","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":" return \"T/@/\" + i + \"/@/\" + this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"ruo-x":30}},{"path":"text-ui-test/data/task.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"T/@/1/@/finish oop","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"D/@/1/@/indiv project /@/2023-09-01T18:00","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"E/@/1/@/bobi birthday /@/2023-05-30T18:00/@/2023-05-30T23:00","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ruo-x":3}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ruo-x"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"ruo-x"},"content":"todo running","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"ruo-x"},"content":"deadline school work /by this friday","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"ruo-x"},"content":"event hackathon /from 2pm /to 5pm","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"ruo-x"},"content":"mark 0","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"ruo-x"},"content":"mark 1","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"ruo-x"},"content":"mark 2","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"ruo-x"},"content":"mark 3","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"ruo-x"},"content":"mark 5","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"ruo-x"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"ruo-x"},"content":"unmark 0","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"ruo-x"},"content":"unmark 1","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"ruo-x"},"content":"unmark 2","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"ruo-x"},"content":"unmark 3","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"ruo-x"},"content":"unmark 5","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"ruo-x"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"ruo-x"},"content":"todo","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"ruo-x"},"content":"deadline","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"ruo-x"},"content":"deadline school work","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"ruo-x"},"content":"event","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"ruo-x"},"content":"event hackathon","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"ruo-x"},"content":"event hackathon /from","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"ruo-x"},"content":"event hackathon /from 2pm","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"ruo-x"},"content":"delete 0","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"ruo-x"},"content":"delete 1","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"ruo-x"},"content":"delete 1","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"ruo-x"},"content":"delete 1","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"ruo-x"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"ruo-x"},"content":"bye","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"ruo-x"},"content":"","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"ruo-x":31}},{"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":"ruo-x"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Duke.java","lastModifiedDate":"2023-08-27"},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"ruo-x":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":"ruo-x"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/Duke.java","lastModifiedDate":"2023-08-27"},{"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":"-"},"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":{"ruo-x":1,"-":37}}] diff --git a/ruo-x_ip_master/commits.json b/ruo-x_ip_master/commits.json index 1a5e60fc..14c13aa6 100644 --- a/ruo-x_ip_master/commits.json +++ b/ruo-x_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ruo-x":[{"date":"2023-08-23","commitResults":[{"hash":"da63b56490b6265a4aacca35946ba2d1bfa0750f","isMergeCommit":false,"messageTitle":"Greeting and exit message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"80111293dcef707a880b33258739b43ccfa0ea4e","isMergeCommit":false,"messageTitle":"Implemented echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"2e601e59522b31545c412c79ff9c4d0b160c44bd","isMergeCommit":true,"messageTitle":"Merge pull request #1 from ruo-x/working-1","messageBody":"Implemented echo","fileTypesAndContributionMap":{}}]},{"date":"2023-08-25","commitResults":[{"hash":"37847660c4a6841d0774000820b3d3e539b6527c","isMergeCommit":false,"messageTitle":"Add task and list feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1}}},{"hash":"622521e074f357876fc28d292b81343aa511542e","isMergeCommit":false,"messageTitle":"Task status added","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":10}}}]},{"date":"2023-08-26","commitResults":[{"hash":"27ce7419257330e424a89594806826ef3d1ae897","isMergeCommit":false,"messageTitle":"New features: type of tasks, tasks saved in drive","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":422,"deletions":92}}}]},{"date":"2023-08-27","commitResults":[{"hash":"503c45228bf7a57760b4e9c4b5ac955954b4a955","isMergeCommit":false,"messageTitle":"Used exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":171,"deletions":65}}},{"hash":"ed38eb15601c11fd01610bed42076cd83b2d4c46","isMergeCommit":false,"messageTitle":"Delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":23}}},{"hash":"c4233330b98aa49b58dac18ef1b8611ef399b436","isMergeCommit":false,"messageTitle":"Add testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":31,"deletions":0},"java":{"insertions":11,"deletions":33},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"ab2a3c0bc499eabd068c99066d3f699ba4f8c62b","isMergeCommit":false,"messageTitle":"Update code to coding standards","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":24}}}]}]},"authorFileTypeContributionMap":{"ruo-x":{"java":624,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":31}},"authorContributionVariance":{"ruo-x":29715.854},"authorDisplayNameMap":{"ruo-x":"CS2103T-T14-4 LEE ..XUAN"}} +{"authorDailyContributionsMap":{"ruo-x":[{"date":"2023-08-23","commitResults":[{"hash":"da63b56490b6265a4aacca35946ba2d1bfa0750f","isMergeCommit":false,"messageTitle":"Greeting and exit message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"80111293dcef707a880b33258739b43ccfa0ea4e","isMergeCommit":false,"messageTitle":"Implemented echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"2e601e59522b31545c412c79ff9c4d0b160c44bd","isMergeCommit":true,"messageTitle":"Merge pull request #1 from ruo-x/working-1","messageBody":"Implemented echo","fileTypesAndContributionMap":{}}]},{"date":"2023-08-25","commitResults":[{"hash":"37847660c4a6841d0774000820b3d3e539b6527c","isMergeCommit":false,"messageTitle":"Add task and list feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1}}},{"hash":"622521e074f357876fc28d292b81343aa511542e","isMergeCommit":false,"messageTitle":"Task status added","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":10}}}]},{"date":"2023-08-26","commitResults":[{"hash":"27ce7419257330e424a89594806826ef3d1ae897","isMergeCommit":false,"messageTitle":"New features: type of tasks, tasks saved in drive","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":422,"deletions":92}}}]},{"date":"2023-08-27","commitResults":[{"hash":"503c45228bf7a57760b4e9c4b5ac955954b4a955","isMergeCommit":false,"messageTitle":"Used exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":171,"deletions":65}}},{"hash":"ed38eb15601c11fd01610bed42076cd83b2d4c46","isMergeCommit":false,"messageTitle":"Delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":23}}},{"hash":"c4233330b98aa49b58dac18ef1b8611ef399b436","isMergeCommit":false,"messageTitle":"Add testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":31,"deletions":0},"java":{"insertions":11,"deletions":33},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"ab2a3c0bc499eabd068c99066d3f699ba4f8c62b","isMergeCommit":false,"messageTitle":"Update code to coding standards","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":24}}}]},{"date":"2023-09-01","commitResults":[{"hash":"3797fdf59485d61616bf7bf271f5ab28dad5adde","isMergeCommit":false,"messageTitle":"Add date and time for tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":126,"deletions":23}}},{"hash":"e25db873c55a123e7d05a6e6f103ca3b3291b4bc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"66789c647e250abf02111f226e3723988ab407e4","isMergeCommit":false,"messageTitle":"organise code for OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":177,"deletions":118}}},{"hash":"397c8513e0bac929070129abe4672cb376620942","isMergeCommit":false,"messageTitle":"organise into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":9},"md":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"ruo-x":{"java":847,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":34}},"authorContributionVariance":{"ruo-x":37472.51},"authorDisplayNameMap":{"ruo-x":"CS2103T-T14-4 LEE ..XUAN"}} diff --git a/ryanozx_ip_master/commits.json b/ryanozx_ip_master/commits.json index 80a924ef..443f2766 100644 --- a/ryanozx_ip_master/commits.json +++ b/ryanozx_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ryanozx":[{"date":"2023-08-21","commitResults":[{"hash":"8184cb422b25c0b60a93f2ad11adc8840af79955","isMergeCommit":false,"messageTitle":"Renamed bot and implemented greeting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":6}}},{"hash":"e63814ff1b0ab188a43a51ecbbba29fb8c3dd3c4","isMergeCommit":false,"messageTitle":"Added javadoc comments","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"08af000eeecccc2f9bdfbf1e4e1013870e1f1756","isMergeCommit":false,"messageTitle":"Added echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":32,"deletions":1}}},{"hash":"dadeb296060efebb47ac80d92b21368f8bdcca55","isMergeCommit":false,"messageTitle":"Implemented text storing and listing","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":48,"deletions":10}}},{"hash":"afbf70666b4d50d0804ba6f84b96e6c87f1a4524","isMergeCommit":false,"messageTitle":"Created Task class and implemented task status","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":123,"deletions":14}}},{"hash":"1dee73f76df246decadc03dac72deba2b0853dd5","isMergeCommit":false,"messageTitle":"Added Todos, Deadlines, Events as task types","messageBody":"","tags":["Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":5},"java":{"insertions":203,"deletions":34}}},{"hash":"d205cc8037f6bedbcdf114a94be7bfab48c1b152","isMergeCommit":false,"messageTitle":"Refactored and added more exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":63}}},{"hash":"4ee50ab4bbf0989a8b63eac7568499a2c5062d57","isMergeCommit":false,"messageTitle":"Implemented task deletion","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":19,"deletions":2},"java":{"insertions":65,"deletions":25}}},{"hash":"f506459c299bf051173fe55cfe59804b7077229f","isMergeCommit":false,"messageTitle":"Created TaskTypes enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":12}}}]},{"date":"2023-08-31","commitResults":[{"hash":"31f3d46afbfe7821ac03f1379a7e4a18598b1019","isMergeCommit":false,"messageTitle":"Add ability to save and load from file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":161,"deletions":32}}},{"hash":"f56fbd66a258d5c30c9d15ebf742ce12674f9175","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"afd4a23f0f3f4649387375a5f9f2792efbd5982b","isMergeCommit":false,"messageTitle":"Change date types and implement date command","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":76,"deletions":13}}},{"hash":"11267f36d508dfa3bf402844254af6ccd2af8a61","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"ce8012cb7f45ce6c0d860087483fb64e6555ddad","isMergeCommit":false,"messageTitle":"Refactor code into multiple classes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":774,"deletions":452}}},{"hash":"e2f5d2986cd7ad4211e86456be34876e6dbf5af7","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["More-OOP","A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"17a26cd926bf743c41dd4191c078666f297e7870","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":32}}},{"hash":"b7c298b7aed39bcad0fc98bf47042df54ba7c3e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"7846f8ff95967c87b5876c5bd4bb344a2edb28ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Packages\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"828622c4962fb27544b115dbafd455febd8e20d5","isMergeCommit":false,"messageTitle":"Set up gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"6f74929a6fa639ae9267be3f16d7776ded9da53b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"b4b1835bc404ac3111836dd9634cffdf41a381cb","isMergeCommit":false,"messageTitle":"Set up JUnit tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":159,"deletions":7}}},{"hash":"948d534cab6f3d49e11d5bf01b535d033efac515","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-JUnit\u0027","messageBody":"","tags":["v0.1","A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"0b56160dcedf593be227f994e4e426ce5a4e6e7d","isMergeCommit":false,"messageTitle":"Fix file creation bug","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":17}}},{"hash":"52e1c049b426d3fef77a13fd25f81b86bab90331","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":23}}},{"hash":"edfd67d9f8541b55ac5fa5041054e53ca2de9d95","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"b4b6287b94c1d3c5f320f1818855318f6193df5a","isMergeCommit":false,"messageTitle":"Enforce coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":57}}},{"hash":"eff51348c866e8934f4cebf4147ba407aa6b0bcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"c329bd691377cd642b892ed4d6b75f5ad5a35d5f","isMergeCommit":false,"messageTitle":"Implement find command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":1}}},{"hash":"5c32210b7896f4ddd56ead5b794bb7deb6ba5804","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ryanozx":{"java":1305,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":28}},"authorContributionVariance":{"ryanozx":291634.78},"authorDisplayNameMap":{"ryanozx":"CS2103T-W11-1 RYAN.. XUN"}} +{"authorDailyContributionsMap":{"ryanozx":[{"date":"2023-08-21","commitResults":[{"hash":"8184cb422b25c0b60a93f2ad11adc8840af79955","isMergeCommit":false,"messageTitle":"Renamed bot and implemented greeting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":6}}},{"hash":"e63814ff1b0ab188a43a51ecbbba29fb8c3dd3c4","isMergeCommit":false,"messageTitle":"Added javadoc comments","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"08af000eeecccc2f9bdfbf1e4e1013870e1f1756","isMergeCommit":false,"messageTitle":"Added echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":32,"deletions":1}}},{"hash":"dadeb296060efebb47ac80d92b21368f8bdcca55","isMergeCommit":false,"messageTitle":"Implemented text storing and listing","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":48,"deletions":10}}},{"hash":"afbf70666b4d50d0804ba6f84b96e6c87f1a4524","isMergeCommit":false,"messageTitle":"Created Task class and implemented task status","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":123,"deletions":14}}},{"hash":"1dee73f76df246decadc03dac72deba2b0853dd5","isMergeCommit":false,"messageTitle":"Added Todos, Deadlines, Events as task types","messageBody":"","tags":["Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":5},"java":{"insertions":203,"deletions":34}}},{"hash":"d205cc8037f6bedbcdf114a94be7bfab48c1b152","isMergeCommit":false,"messageTitle":"Refactored and added more exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":63}}},{"hash":"4ee50ab4bbf0989a8b63eac7568499a2c5062d57","isMergeCommit":false,"messageTitle":"Implemented task deletion","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":19,"deletions":2},"java":{"insertions":65,"deletions":25}}},{"hash":"f506459c299bf051173fe55cfe59804b7077229f","isMergeCommit":false,"messageTitle":"Created TaskTypes enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":12}}}]},{"date":"2023-08-31","commitResults":[{"hash":"31f3d46afbfe7821ac03f1379a7e4a18598b1019","isMergeCommit":false,"messageTitle":"Add ability to save and load from file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":161,"deletions":32}}},{"hash":"f56fbd66a258d5c30c9d15ebf742ce12674f9175","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"afd4a23f0f3f4649387375a5f9f2792efbd5982b","isMergeCommit":false,"messageTitle":"Change date types and implement date command","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":76,"deletions":13}}},{"hash":"11267f36d508dfa3bf402844254af6ccd2af8a61","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"ce8012cb7f45ce6c0d860087483fb64e6555ddad","isMergeCommit":false,"messageTitle":"Refactor code into multiple classes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":774,"deletions":452}}},{"hash":"e2f5d2986cd7ad4211e86456be34876e6dbf5af7","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["More-OOP","A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"17a26cd926bf743c41dd4191c078666f297e7870","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":32}}},{"hash":"b7c298b7aed39bcad0fc98bf47042df54ba7c3e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"7846f8ff95967c87b5876c5bd4bb344a2edb28ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Packages\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"828622c4962fb27544b115dbafd455febd8e20d5","isMergeCommit":false,"messageTitle":"Set up gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"6f74929a6fa639ae9267be3f16d7776ded9da53b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"b4b1835bc404ac3111836dd9634cffdf41a381cb","isMergeCommit":false,"messageTitle":"Set up JUnit tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":159,"deletions":7}}},{"hash":"948d534cab6f3d49e11d5bf01b535d033efac515","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-JUnit\u0027","messageBody":"","tags":["v0.1","A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"0b56160dcedf593be227f994e4e426ce5a4e6e7d","isMergeCommit":false,"messageTitle":"Fix file creation bug","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":17}}},{"hash":"52e1c049b426d3fef77a13fd25f81b86bab90331","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":23}}},{"hash":"edfd67d9f8541b55ac5fa5041054e53ca2de9d95","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"b4b6287b94c1d3c5f320f1818855318f6193df5a","isMergeCommit":false,"messageTitle":"Enforce coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":57}}},{"hash":"eff51348c866e8934f4cebf4147ba407aa6b0bcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"7fcb01b08cf76e82b81da14fdd77647cc76fb886","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/ryanozx/ip into branch-A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c329bd691377cd642b892ed4d6b75f5ad5a35d5f","isMergeCommit":false,"messageTitle":"Implement find command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":1}}},{"hash":"5c32210b7896f4ddd56ead5b794bb7deb6ba5804","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"fbb31b17c3188a5e6a580525788ce1d69a6a4093","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ryanozx":{"java":1305,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":28}},"authorContributionVariance":{"ryanozx":291634.78},"authorDisplayNameMap":{"ryanozx":"CS2103T-W11-1 RYAN.. XUN"}} diff --git a/seantehds_ip_master/authorship.json b/seantehds_ip_master/authorship.json index 4fc507b8..e47e3b57 100644 --- a/seantehds_ip_master/authorship.json +++ b/seantehds_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/emiya/Emiya.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import emiya.logic.Logic;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"import emiya.parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"import emiya.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"import emiya.task.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"import emiya.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":"import static emiya.logic.Logic.enumContainsKeyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":"public class Emiya {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" // must remove static at the end","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" private String dirName;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" private String fileName;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" private Parser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" public Emiya(String dirName, String fileName) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" this.dirName \u003d dirName;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" this.fileName \u003d fileName;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" // shift try-catch to emiya.storage.Storage; maybe no need shift?","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" storage.createDirectory(dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" storage.createFileInDirectory(fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" storage.fillListWithFileContent(taskList, storage.fileContents(fileName, dirName));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" } catch (EmiyaException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" // keep","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" Scanner myScannerObj \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":" System.out.println(emiya.ui.Ui.WELCOME_MESSAGE);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" while (true) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" // nextLine is blocking, so can have this here","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":" String input \u003d myScannerObj.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":" // Terminates the program by exiting the while loop.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"seantehds"},"content":" // kiv shift where","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"seantehds"},"content":" if (input.equals(\"I am the bone of my sword\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"seantehds"},"content":" System.out.println(\"-----------------------------------------\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"seantehds"},"content":" + \"Unknown to death nor known to life\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"seantehds"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"seantehds"},"content":" // kiv shift where","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"seantehds"},"content":" if (input.equals(\"dead\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"seantehds"},"content":" System.out.println(\"-----------------------------------------\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"seantehds"},"content":" + \"People die if they are killed!\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"seantehds"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"seantehds"},"content":" // shift to TaskList: DONE (includes ListPointer)","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"seantehds"},"content":" // Method to list out all items in list. If the list is empty, throws exception","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"seantehds"},"content":" // and informs user to add items to list.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"seantehds"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"seantehds"},"content":" taskList.list();","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"seantehds"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"seantehds"},"content":" Integer[] position \u003d new Integer[] {null};","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"seantehds"},"content":" String[] parsedInput \u003d parser.parseToRemoveUnknownCommands(position, input);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"seantehds"},"content":" String typeOfTask \u003d parsedInput[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"seantehds"},"content":" String taskDetails \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"seantehds"},"content":" if (parsedInput.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"seantehds"},"content":" taskDetails \u003d parsedInput[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"seantehds"},"content":" switch (typeOfTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"seantehds"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"seantehds"},"content":" if (position[0] !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"seantehds"},"content":" if (position[0] \u003c\u003d 0 || position[0] \u003e taskList.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"seantehds"},"content":" throw new OutOfListBoundsException();","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"seantehds"},"content":" taskList.get(position[0]-1).setMarked();","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.markedMessage(position[0], taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"seantehds"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"seantehds"},"content":" storage.writeToFileFromTaskList(taskList, fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"seantehds"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"seantehds"},"content":" if (position[0] !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"seantehds"},"content":" if (position[0] \u003c\u003d 0 || position[0] \u003e taskList.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"seantehds"},"content":" throw new OutOfListBoundsException();","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"seantehds"},"content":" taskList.get(position[0]-1).setUnmarked();","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.unmarkedMessage(position[0], taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"seantehds"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"seantehds"},"content":" storage.writeToFileFromTaskList(taskList, fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"seantehds"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"seantehds"},"content":" if (position[0] !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"seantehds"},"content":" if (position[0] \u003c\u003d 0 || position[0] \u003e taskList.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"seantehds"},"content":" throw new OutOfListBoundsException();","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"seantehds"},"content":" Task task \u003d taskList.get(position[0]-1);","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"seantehds"},"content":" taskList.remove(task); // String deleteOutputMessage;","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"seantehds"},"content":" if (taskList.size() \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.deletedSingularMessage(task, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.deletedPluralMessage(task, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"seantehds"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"seantehds"},"content":" storage.writeToFileFromTaskList(taskList, fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"seantehds"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"seantehds"},"content":" // need to be able to go through the rest of the string and add it inside","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"seantehds"},"content":" if (taskDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"seantehds"},"content":" throw new EmptyTodoException();","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"seantehds"},"content":" ToDo todo \u003d new ToDo(false, taskDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"seantehds"},"content":" taskList.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"seantehds"},"content":" if (taskList.size() \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.addedSingularMessage(todo, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.addedPluralMessage(todo, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"seantehds"},"content":" storage.writeToFileFromTaskList(taskList, fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"seantehds"},"content":" case \"deadline\": // go through taskDetails and find /by","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"seantehds"},"content":" if (taskDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"seantehds"},"content":" throw new EmptyDeadlineException();","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"seantehds"},"content":" String[] deadlineDetails \u003d parser.parseForDeadline(taskDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"seantehds"},"content":" Deadline deadline \u003d new Deadline(false, deadlineDetails[0], deadlineDetails[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"seantehds"},"content":" taskList.add(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"seantehds"},"content":" if (taskList.size() \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.addedSingularMessage(deadline, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.addedPluralMessage(deadline, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"seantehds"},"content":" storage.writeToFileFromTaskList(taskList, fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"seantehds"},"content":" case \"event\": // need to go through taskDetails and find /from and /to","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"seantehds"},"content":" if (taskDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"seantehds"},"content":" throw new EmptyEventException();","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"seantehds"},"content":" String[] parsedEventDetails \u003d parser.parseForEvent(taskDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"seantehds"},"content":" Event event \u003d new Event(false, parsedEventDetails[0], parsedEventDetails[1], parsedEventDetails[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"seantehds"},"content":" taskList.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"seantehds"},"content":" if (taskList.size() \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.addedSingularMessage(event, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.addedPluralMessage(event, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"seantehds"},"content":" storage.writeToFileFromTaskList(taskList, fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"seantehds"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"seantehds"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"seantehds"},"content":" } catch (EmiyaException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"seantehds"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"seantehds"},"content":" System.out.println(emiya.ui.Ui.EXIT_MESSAGE);","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"seantehds"},"content":" myScannerObj.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"seantehds"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"seantehds"},"content":" new Emiya(\"data\", \"emiya.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"seantehds":190}},{"path":"src/main/java/emiya/Keywords.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public enum Keywords {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" TODO(\"todo\"), DEADLINE(\"deadline\"), EVENT(\"event\");","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" private String type;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" Keywords(String type) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":" public String getType() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" return this.type;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"seantehds":14}},{"path":"src/main/java/emiya/datehandler/DateHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.datehandler;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.InvalidDateException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.WrongDateFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import emiya.logic.Logic;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"import java.time.Month;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"import java.time.format.TextStyle;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":"import static emiya.parser.Parser.parseForDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":"public class DateHandler {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" // strFormat is: YYYY-MM-DD TTTT","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" public static LocalDateTime determineDateTime(String strFormat) throws WrongDateFormatException, InvalidDateException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":"// String[] partsOfDateTime \u003d strFormat.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":"// // word/no whitespace used","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":"// if (partsOfDateTime.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":"// throw new WrongDateFormatException();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":"// String datePart \u003d partsOfDateTime[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":"// String timePart \u003d partsOfDateTime[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":"// String[] partsOfDate \u003d datePart.split(\"-\", 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":"// // if second part is not the time in 24h format/date not given in correct format","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":"// if (timePart.length() !\u003d 4 || !Logic.isNumeric(timePart.substring(0, 2)) || !Logic.isNumeric(timePart.substring(2, 4)) ||","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":"// partsOfDate.length \u003c 3 || !Logic.isNumeric(partsOfDate[0]) || !Logic.isNumeric(partsOfDate[1])","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":"// || !Logic.isNumeric(partsOfDate[2])) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":"// throw new WrongDateFormatException();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":"// int year \u003d Integer.parseInt(partsOfDate[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":"// int month \u003d Integer.parseInt(partsOfDate[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":"// int day \u003d Integer.parseInt(partsOfDate[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":"// int hour \u003d Integer.parseInt(timePart.substring(0, 2));","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":"// int min \u003d Integer.parseInt(timePart.substring(2, 4));","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":"//","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":"// // if given date is invalid","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":"// if (!Logic.isValidYear(year) || !Logic.isValidMonth(month) || !Logic.isValidDay(day) || !Logic.isValidHour(hour) || !Logic.isValidMinute(min)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":"// throw new InvalidDateException();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":"// StringBuilder finalDateTimeStr \u003d new StringBuilder(datePart);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":"// finalDateTimeStr.append(\"T\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":"// finalDateTimeStr.append(hour \u003c 10 ? \"0\" + hour : hour);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":"// finalDateTimeStr.append(\":\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":"// finalDateTimeStr.append(min \u003c 10 ? \"0\" + min : min);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":"// finalDateTimeStr.append(\":\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":"// finalDateTimeStr.append(\"00\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"seantehds"},"content":" String[] parsedDate \u003d parseForDate(strFormat);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"seantehds"},"content":" StringBuilder finalDateTimeStr \u003d new StringBuilder(parsedDate[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"seantehds"},"content":" finalDateTimeStr.append(\"T\");","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"seantehds"},"content":" finalDateTimeStr.append(parsedDate[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"seantehds"},"content":" finalDateTimeStr.append(\":\");","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"seantehds"},"content":" finalDateTimeStr.append(parsedDate[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"seantehds"},"content":" finalDateTimeStr.append(\":\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"seantehds"},"content":" finalDateTimeStr.append(\"00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"seantehds"},"content":" return LocalDateTime.parse(finalDateTimeStr.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"seantehds"},"content":" public static String correctDateTimeFormat(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"seantehds"},"content":" int year \u003d dateTime.getYear();","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"seantehds"},"content":" Month month \u003d dateTime.getMonth();","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"seantehds"},"content":" int day \u003d dateTime.getDayOfMonth();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"seantehds"},"content":" int hour \u003d dateTime.getHour();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"seantehds"},"content":" int min \u003d dateTime.getMinute();","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"seantehds"},"content":" StringBuilder finalStr \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"seantehds"},"content":" finalStr.append(month.getDisplayName(TextStyle.SHORT, Locale.ENGLISH));","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"seantehds"},"content":" finalStr.append(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"seantehds"},"content":" finalStr.append(day);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"seantehds"},"content":" finalStr.append(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"seantehds"},"content":" finalStr.append(year);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"seantehds"},"content":" finalStr.append(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"seantehds"},"content":" finalStr.append(hour \u003c 10 ? \"0\" + hour : hour);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"seantehds"},"content":" finalStr.append(\":\");","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"seantehds"},"content":" finalStr.append(min \u003c 10 ? \"0\" + min : min);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"seantehds"},"content":" finalStr.append(\":\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"seantehds"},"content":" finalStr.append(\"00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"seantehds"},"content":" return finalStr.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"seantehds":91}},{"path":"src/main/java/emiya/emiyaexception/CreateDirectoryFailException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class CreateDirectoryFailException extends EmiyaException{","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public CreateDirectoryFailException() {","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Failed to create directory\\n\"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/EmiyaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class EmiyaException extends Exception {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public EmiyaException(String message) {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(message);","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":8}},{"path":"src/main/java/emiya/emiyaexception/EmptyDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class EmptyDeadlineException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public EmptyDeadlineException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Oh no! Deadline tasks cannot be empty! Please try again!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/EmptyEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class EmptyEventException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public EmptyEventException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Oh no! Event tasks cannot be empty! Please try again!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/EmptyTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class EmptyTodoException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public EmptyTodoException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Oh no! Todo tasks cannot be empty! Please try again!\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class InvalidDateException extends EmiyaException{","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public InvalidDateException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Please enter a valid date!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/ListEmptyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class ListEmptyException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public ListEmptyException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"List is empty! Please add items to list before trying to display list contents!\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/NoByException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class NoByException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public NoByException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"It seems like there\u0027s an error in your input! Did you remember to use /by in your input?\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":10}},{"path":"src/main/java/emiya/emiyaexception/NoFromException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class NoFromException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public NoFromException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"It seems like there\u0027s an error in your input! Did you remember to use /from in your input?\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/NoToException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class NoToException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public NoToException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"It seems like there\u0027s an error in your input! Did you remember to use /to in your input?\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/OutOfListBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class OutOfListBoundsException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public OutOfListBoundsException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Task does not exist! Please try with a different value\\n\"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class UnknownCommandException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public UnknownCommandException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Unknown command received! Please try again!\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/WrongDateFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class WrongDateFormatException extends EmiyaException{","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public WrongDateFormatException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Please give the date in the format of YYYY-MM-DD TTTT, where T represents the time in the 24 hour format\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/logic/Logic.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.logic;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.Keywords;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"public class Logic {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" // Used to check whether a given string contains purely numeric values.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" public static boolean isNumeric(String str) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":" return str.matches(\"\\\\d+\");","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" public static boolean isValidYear(int year) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" return (year \u003e 0 \u0026\u0026 year \u003c 9999);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" public static boolean isValidMonth(int month) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" return (month \u003e 0 \u0026\u0026 month \u003c 13);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" public static boolean isValidDay(int day) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" return (day \u003e 0 \u0026\u0026 day \u003c 32);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" public static boolean isValidHour(int hour) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" return (hour \u003e\u003d 0 \u0026\u0026 hour \u003c\u003d 23 );","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" public static boolean isValidMinute(int min) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" return (min \u003e\u003d 0 \u0026\u0026 min \u003c\u003d 59);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" // Checks if a given test String is part of the reserved keywords for the different tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" public static boolean enumContainsKeyword(String test) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" for (Keywords k : Keywords.values()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" if (k.name().equals(test)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"seantehds":41}},{"path":"src/main/java/emiya/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.logic.Logic;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"import static emiya.logic.Logic.enumContainsKeyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":" public Parser() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" public String[] parseToRemoveUnknownCommands(Integer[] position, String input) throws UnknownCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" // this part splits the input into 2 parts, depending on whitespace (if possible)","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" String[] partsOfInput \u003d input.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" // if input is a single word AND it is not a keyword, throw UnknownCommandException","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" if (partsOfInput.length \u003c 2 \u0026\u0026 !enumContainsKeyword(partsOfInput[0].toUpperCase())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" // figure out what command is being input","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" String typeOfTask \u003d partsOfInput[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" // if it is a mark/unmark, this will be number, else is part of command","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" String taskDetails \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" if (partsOfInput.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" taskDetails \u003d partsOfInput[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" // for mark/unmark commands","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" if (Logic.isNumeric(taskDetails)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" position[0] \u003d Integer.parseInt(taskDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" return new String[] {typeOfTask};","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" } else { // any other command, need pass in task details as well","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" return new String[] {typeOfTask, taskDetails};","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" public String[] parseForDeadline(String taskDetails) throws NoByException {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" String[] deadlineDetails \u003d taskDetails.split(\" /by \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" if (deadlineDetails.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":" throw new NoByException();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" return deadlineDetails;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":" public String[] parseForEvent(String taskDetails) throws NoToException, NoFromException {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" String[] eventDetails \u003d taskDetails.split(\" /from \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":" if (eventDetails.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" throw new NoFromException();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":" String[] eventDurationDetails \u003d eventDetails[1].split(\" /to \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":" if (eventDurationDetails.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":" throw new NoToException();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"seantehds"},"content":" return new String[] {eventDetails[0], eventDurationDetails[0], eventDurationDetails[1]};","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"seantehds"},"content":" public static String[] parseForDate(String input) throws InvalidDateException, WrongDateFormatException{","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"seantehds"},"content":" String[] partsOfDateTime \u003d input.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"seantehds"},"content":" // word/no whitespace used","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"seantehds"},"content":" if (partsOfDateTime.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"seantehds"},"content":" throw new WrongDateFormatException();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"seantehds"},"content":" String datePart \u003d partsOfDateTime[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"seantehds"},"content":" String timePart \u003d partsOfDateTime[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"seantehds"},"content":" String[] partsOfDate \u003d datePart.split(\"-\", 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"seantehds"},"content":" // if second part is not the time in 24h format/date not given in correct format","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"seantehds"},"content":" if (timePart.length() !\u003d 4 || !Logic.isNumeric(timePart.substring(0, 2)) || !Logic.isNumeric(timePart.substring(2, 4)) ||","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"seantehds"},"content":" partsOfDate.length \u003c 3 || !Logic.isNumeric(partsOfDate[0]) || !Logic.isNumeric(partsOfDate[1])","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"seantehds"},"content":" || !Logic.isNumeric(partsOfDate[2])) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"seantehds"},"content":" throw new WrongDateFormatException();","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"seantehds"},"content":" int year \u003d Integer.parseInt(partsOfDate[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"seantehds"},"content":" int month \u003d Integer.parseInt(partsOfDate[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"seantehds"},"content":" int day \u003d Integer.parseInt(partsOfDate[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"seantehds"},"content":" int hour \u003d Integer.parseInt(timePart.substring(0, 2));","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"seantehds"},"content":" int min \u003d Integer.parseInt(timePart.substring(2, 4));","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"seantehds"},"content":" // if given date is invalid","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"seantehds"},"content":" if (!Logic.isValidYear(year) || !Logic.isValidMonth(month) || !Logic.isValidDay(day) || !Logic.isValidHour(hour) || !Logic.isValidMinute(min)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"seantehds"},"content":" throw new InvalidDateException();","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"seantehds"},"content":" return new String[] {datePart, hour \u003c 10 ? \"0\" + hour : hour + \"\", min \u003c 10 ? \"0\" + min : min + \"\"};","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"seantehds":92}},{"path":"src/main/java/emiya/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.CreateDirectoryFailException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.InvalidDateException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.WrongDateFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"import emiya.task.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" public Storage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" public String fileContents(String fileName, String dirName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" String path \u003d Paths.get(\"\").toAbsolutePath().toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" String pathToDataDir \u003d Paths.get(path, dirName).toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" Path pathToDataDoc \u003d Paths.get(pathToDataDir, fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" String res \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" byte[] bytes \u003d Files.readAllBytes(pathToDataDoc);","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" String content \u003d new String(bytes);","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" res \u003d content;","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" return res;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" public void createDirectory(String dirName) throws CreateDirectoryFailException {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" String path \u003d Paths.get(\"\").toAbsolutePath().toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" String pathToDataDir \u003d Paths.get(path, dirName).toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" File dataDir \u003d new File(pathToDataDir);","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" if (!dataDir.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" boolean result \u003d dataDir.mkdirs();","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":" if (!result) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":" throw new CreateDirectoryFailException();","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" public void createFileInDirectory(String fileName, String dirName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":" String path \u003d Paths.get(\"\").toAbsolutePath().toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" String pathToDataDir \u003d Paths.get(path, dirName).toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":" Path pathToDataDoc \u003d Paths.get(pathToDataDir, fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":" String pathToDataDocStr \u003d pathToDataDoc.toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":" File dataDoc \u003d new File(pathToDataDocStr);","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"seantehds"},"content":" if (!dataDoc.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"seantehds"},"content":" String testData \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"seantehds"},"content":" Files.write(pathToDataDoc, testData.getBytes());","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"seantehds"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"seantehds"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"seantehds"},"content":" public void writeToFileFromTaskList(ArrayList\u003cTask\u003e taskArrayList, String fileName, String dirName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"seantehds"},"content":" String path \u003d Paths.get(\"\").toAbsolutePath().toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"seantehds"},"content":" String pathToDataDir \u003d Paths.get(path, dirName).toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"seantehds"},"content":" Path pathToDataDoc \u003d Paths.get(pathToDataDir, fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"seantehds"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"seantehds"},"content":" for (Task task : taskArrayList) {","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"seantehds"},"content":" str.append(task.typeOfString());","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"seantehds"},"content":" str.append(\"| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"seantehds"},"content":" str.append(task.statusString());","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"seantehds"},"content":" str.append(\"| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"seantehds"},"content":" str.append(task.taskDetailsString());","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"seantehds"},"content":" str.append(\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"seantehds"},"content":" Files.write(pathToDataDoc, str.toString().getBytes());","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"seantehds"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"seantehds"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"seantehds"},"content":" public void writeToFileFromTaskList(TaskList taskList, String fileName, String dirName) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"seantehds"},"content":" String path \u003d Paths.get(\"\").toAbsolutePath().toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"seantehds"},"content":" String pathToDataDir \u003d Paths.get(path, dirName).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"seantehds"},"content":" Path pathToDataDoc \u003d Paths.get(pathToDataDir, fileName);","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"seantehds"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"seantehds"},"content":" for (Task task : taskList.getTaskArrayList()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"seantehds"},"content":" str.append(task.typeOfString());","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"seantehds"},"content":" str.append(\"| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"seantehds"},"content":" str.append(task.statusString());","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"seantehds"},"content":" str.append(\"| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"seantehds"},"content":" str.append(task.taskDetailsString());","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"seantehds"},"content":" str.append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"seantehds"},"content":" Files.write(pathToDataDoc, str.toString().getBytes());","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"seantehds"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"seantehds"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"seantehds"},"content":" public void fillListWithFileContent(TaskList taskList, String fileContent) throws WrongDateFormatException, InvalidDateException {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"seantehds"},"content":" String[] tasksStrArr \u003d fileContent.split(\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"seantehds"},"content":" for (String tasksStr : tasksStrArr) {","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"seantehds"},"content":" if (tasksStr.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"seantehds"},"content":" continue;","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"seantehds"},"content":" String[] tasksStrParts \u003d tasksStr.split(\" \\\\| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"seantehds"},"content":" String taskType \u003d tasksStrParts[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"seantehds"},"content":" int isCompletedInt \u003d Integer.parseInt(tasksStrParts[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"seantehds"},"content":" boolean isCompletedBool \u003d (isCompletedInt \u003d\u003d 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"seantehds"},"content":" String taskDetails \u003d tasksStrParts[2];","lastModifiedDate":"2023-08-29"},{"lineNumber":123,"author":{"gitId":"seantehds"},"content":" String firstDate \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":124,"author":{"gitId":"seantehds"},"content":" String secondDate \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":125,"author":{"gitId":"seantehds"},"content":" if (tasksStrParts.length \u003e\u003d 4) {","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"seantehds"},"content":" firstDate \u003d tasksStrParts[3];","lastModifiedDate":"2023-08-29"},{"lineNumber":127,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":128,"author":{"gitId":"seantehds"},"content":" if (tasksStrParts.length \u003d\u003d 5) {","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"seantehds"},"content":" secondDate \u003d tasksStrParts[4];","lastModifiedDate":"2023-08-29"},{"lineNumber":130,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":131,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":132,"author":{"gitId":"seantehds"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":133,"author":{"gitId":"seantehds"},"content":" taskList.add(new ToDo(isCompletedBool, taskDetails));","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"seantehds"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":135,"author":{"gitId":"seantehds"},"content":" taskList.add(new Deadline(isCompletedBool, taskDetails, firstDate));","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"seantehds"},"content":" taskList.add(new Event(isCompletedBool, taskDetails, firstDate, secondDate));","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":139,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":140,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":141,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"seantehds":141}},{"path":"src/main/java/emiya/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.datehandler.DateHandler;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.InvalidDateException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.WrongDateFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":" private final String dateOfDeadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":" private LocalDateTime localDateTime \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" public Deadline(boolean isCompleted, String nameOfTask, String dateOfDeadline) throws WrongDateFormatException, InvalidDateException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" super(isCompleted, nameOfTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" this.localDateTime \u003d DateHandler.determineDateTime(dateOfDeadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" this.dateOfDeadline \u003d dateOfDeadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" return \"[D][X] \" + nameOfTask + \" (by: \" + DateHandler.correctDateTimeFormat(localDateTime) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" return \"[D][ ] \" + nameOfTask + \" (by: \" + DateHandler.correctDateTimeFormat(localDateTime) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" public String typeOfString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" return \"D \";","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" public String taskDetailsString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" return super.nameOfTask + \" |\" + \" \" + dateOfDeadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"seantehds":37}},{"path":"src/main/java/emiya/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.datehandler.DateHandler;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.InvalidDateException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.WrongDateFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":" private final String start;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" private final String end;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" private LocalDateTime localDateTimeStart \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" private LocalDateTime localDateTimeEnd \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" public Event(boolean isCompleted, String nameOfTask, String start, String end) throws WrongDateFormatException, InvalidDateException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" super(isCompleted, nameOfTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" this.localDateTimeStart \u003d DateHandler.determineDateTime(start);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" this.localDateTimeEnd \u003d DateHandler.determineDateTime(end);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" return \"[E][X] \" + nameOfTask + \" (from: \" + DateHandler.correctDateTimeFormat(localDateTimeStart) + \" to: \" + DateHandler.correctDateTimeFormat(localDateTimeEnd) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" return \"[E][ ] \" + nameOfTask + \" (from: \" + DateHandler.correctDateTimeFormat(localDateTimeStart) + \" to: \" + DateHandler.correctDateTimeFormat(localDateTimeEnd) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" public String typeOfString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" return \"E \";","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" public String taskDetailsString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" return super.nameOfTask + \" |\" + \" \" + start + \" |\" + \" \" + end;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"seantehds":42}},{"path":"src/main/java/emiya/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"abstract public class Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" protected boolean isCompleted;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" protected String nameOfTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" public Task(boolean isCompleted, String nameOfTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":" this.nameOfTask \u003d nameOfTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" return \"[X] \" + nameOfTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" return \"[ ] \" + nameOfTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" abstract public String typeOfString();","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" public String statusString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" return \"1 \";","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" return \"0 \";","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" abstract public String taskDetailsString();","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" public void setUnmarked() {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" public void setMarked() {","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"seantehds":40}},{"path":"src/main/java/emiya/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.ListEmptyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":" private ArrayList\u003cTask\u003e taskArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" this.taskArrayList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" public ArrayList\u003cTask\u003e getTaskArrayList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" return this.taskArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" public Task get(int pos) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" return this.taskArrayList.get(pos);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" public void remove(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" this.taskArrayList.remove(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" return this.taskArrayList.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" this.taskArrayList.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" public void list() throws ListEmptyException{","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" int listPointer \u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" StringBuilder listString \u003d new StringBuilder(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" \"Lots of things to do! Get to it!:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" for (Task task : taskArrayList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" if (task \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" if (listPointer \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":" // throw new EmiyaException(\"List is empty! Please add items to list before trying to display list contents!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":" throw new ListEmptyException();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":" String listItem \u003d listPointer + \".\" + task + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" listPointer++;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":" listString.append(listItem);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":" listString.append(\"-----------------------------------------\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":" System.out.println(listString);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"seantehds":55}},{"path":"src/main/java/emiya/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public ToDo(boolean isCompleted, String nameOfTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(isCompleted, nameOfTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":" return \"[T][X] \" + nameOfTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" return \"[T][ ] \" + nameOfTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" public String typeOfString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" return \"T \";","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" public String taskDetailsString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" return super.nameOfTask;","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"seantehds":27}},{"path":"src/main/java/emiya/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" public static final String WELCOME_MESSAGE \u003d \"-----------------------------------------\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" + \"Hello! I\u0027m Emiya\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" public static final String EXIT_MESSAGE \u003d \"-----------------------------------------\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" + \"Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" public static final String UBW \u003d \"-----------------------------------------\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" + \"Unknown to death nor known to life\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" public static final String DEAD \u003d \"-----------------------------------------\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" + \"People die if they are killed!\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" public String addedSingularMessage(Task task, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" return \"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" \"Sure! I have added this task to the list:\\n\" + task + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" + \"Now you have \" + taskList.size() + \" emiya.task in your list!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" public String addedPluralMessage(Task task, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" return \"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" \"Sure! I have added this task to the list:\\n\" + task + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" + \"Now you have \" + taskList.size() + \" tasks in your list!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":" public static String deletedSingularMessage(Task task, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" return \"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" \"Sure, I shall now delete the following task:\\n\" + task + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":" + \"Now you have \" + taskList.size() + \" task in your list!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" public String deletedPluralMessage(Task task, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":" return \"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":" \"Sure, I shall now delete the following task:\\n\" + task + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":" + \"Now you have \" + taskList.size() + \" tasks in your list!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"seantehds"},"content":" public String markedMessage(int position, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"seantehds"},"content":" return \"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"seantehds"},"content":" \"Nice job! I have marked this task as done:\\n\" + taskList.get(position-1) + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"seantehds"},"content":" public String unmarkedMessage(int position, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"seantehds"},"content":" return \"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"seantehds"},"content":" \"Oof, alright I have set this task as unmarked:\\n\" + taskList.get(position-1) + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"seantehds":68}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"todo buy a book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"deadline read book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"event reading book /from today /to Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"seantehds":9}},{"path":"text-ui-test/runtestemiya.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"@ECHO OFF","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"REM delete output from previous run","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"del ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" exit /b 1","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":")","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":"java -classpath ..\\bin emiya.Emiya \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":"REM compare the output to the expected output","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"seantehds":21}}] +[{"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":"seantehds"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" mainClass.set(\"emiya.Emiya\")","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" archiveBaseName \u003d \"emiya\"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" archiveFileName \u003d \"emiya.jar\"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":40,"seantehds":4}},{"path":"src/main/java/emiya/Emiya.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import emiya.logic.Logic;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"import emiya.parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"import emiya.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"import emiya.task.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"import emiya.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":"import static emiya.logic.Logic.enumContainsKeyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":"public class Emiya {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" // must remove static at the end","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" private String dirName;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" private String fileName;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" private Parser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" public Emiya(String dirName, String fileName) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" this.dirName \u003d dirName;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" this.fileName \u003d fileName;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" // shift try-catch to emiya.storage.Storage; maybe no need shift?","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" storage.createDirectory(dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" storage.createFileInDirectory(fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" storage.fillListWithFileContent(taskList, storage.fileContents(fileName, dirName));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" } catch (EmiyaException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" // keep","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" Scanner myScannerObj \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":" System.out.println(emiya.ui.Ui.WELCOME_MESSAGE);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" while (true) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" // nextLine is blocking, so can have this here","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":" String input \u003d myScannerObj.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":" // Terminates the program by exiting the while loop.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"seantehds"},"content":" // kiv shift where","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"seantehds"},"content":" if (input.equals(\"I am the bone of my sword\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"seantehds"},"content":" System.out.println(\"-----------------------------------------\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"seantehds"},"content":" + \"Unknown to death nor known to life\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"seantehds"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"seantehds"},"content":" // kiv shift where","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"seantehds"},"content":" if (input.equals(\"dead\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"seantehds"},"content":" System.out.println(\"-----------------------------------------\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"seantehds"},"content":" + \"People die if they are killed!\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"seantehds"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"seantehds"},"content":" // shift to TaskList: DONE (includes ListPointer)","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"seantehds"},"content":" // Method to list out all items in list. If the list is empty, throws exception","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"seantehds"},"content":" // and informs user to add items to list.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"seantehds"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"seantehds"},"content":" taskList.list();","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"seantehds"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"seantehds"},"content":" Integer[] position \u003d new Integer[] {null};","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"seantehds"},"content":" String[] parsedInput \u003d parser.parseToRemoveUnknownCommands(position, input);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"seantehds"},"content":" String typeOfTask \u003d parsedInput[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"seantehds"},"content":" String taskDetails \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"seantehds"},"content":" if (parsedInput.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"seantehds"},"content":" taskDetails \u003d parsedInput[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"seantehds"},"content":" switch (typeOfTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"seantehds"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"seantehds"},"content":" if (position[0] !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"seantehds"},"content":" if (position[0] \u003c\u003d 0 || position[0] \u003e taskList.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"seantehds"},"content":" throw new OutOfListBoundsException();","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"seantehds"},"content":" taskList.get(position[0]-1).setMarked();","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.markedMessage(position[0], taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"seantehds"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"seantehds"},"content":" storage.writeToFileFromTaskList(taskList, fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"seantehds"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"seantehds"},"content":" if (position[0] !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"seantehds"},"content":" if (position[0] \u003c\u003d 0 || position[0] \u003e taskList.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"seantehds"},"content":" throw new OutOfListBoundsException();","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"seantehds"},"content":" taskList.get(position[0]-1).setUnmarked();","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.unmarkedMessage(position[0], taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"seantehds"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"seantehds"},"content":" storage.writeToFileFromTaskList(taskList, fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"seantehds"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"seantehds"},"content":" if (position[0] !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"seantehds"},"content":" if (position[0] \u003c\u003d 0 || position[0] \u003e taskList.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"seantehds"},"content":" throw new OutOfListBoundsException();","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"seantehds"},"content":" Task task \u003d taskList.get(position[0]-1);","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"seantehds"},"content":" taskList.remove(task); // String deleteOutputMessage;","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"seantehds"},"content":" if (taskList.size() \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.deletedSingularMessage(task, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.deletedPluralMessage(task, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"seantehds"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"seantehds"},"content":" storage.writeToFileFromTaskList(taskList, fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"seantehds"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"seantehds"},"content":" // need to be able to go through the rest of the string and add it inside","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"seantehds"},"content":" if (taskDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"seantehds"},"content":" throw new EmptyTodoException();","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"seantehds"},"content":" ToDo todo \u003d new ToDo(false, taskDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"seantehds"},"content":" taskList.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"seantehds"},"content":" if (taskList.size() \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.addedSingularMessage(todo, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.addedPluralMessage(todo, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"seantehds"},"content":" storage.writeToFileFromTaskList(taskList, fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"seantehds"},"content":" case \"deadline\": // go through taskDetails and find /by","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"seantehds"},"content":" if (taskDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"seantehds"},"content":" throw new EmptyDeadlineException();","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"seantehds"},"content":" String[] deadlineDetails \u003d parser.parseForDeadline(taskDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"seantehds"},"content":" Deadline deadline \u003d new Deadline(false, deadlineDetails[0], deadlineDetails[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"seantehds"},"content":" taskList.add(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"seantehds"},"content":" if (taskList.size() \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.addedSingularMessage(deadline, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.addedPluralMessage(deadline, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"seantehds"},"content":" storage.writeToFileFromTaskList(taskList, fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"seantehds"},"content":" case \"event\": // need to go through taskDetails and find /from and /to","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"seantehds"},"content":" if (taskDetails.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"seantehds"},"content":" throw new EmptyEventException();","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"seantehds"},"content":" String[] parsedEventDetails \u003d parser.parseForEvent(taskDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"seantehds"},"content":" Event event \u003d new Event(false, parsedEventDetails[0], parsedEventDetails[1], parsedEventDetails[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"seantehds"},"content":" taskList.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"seantehds"},"content":" if (taskList.size() \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.addedSingularMessage(event, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"seantehds"},"content":" System.out.println(ui.addedPluralMessage(event, taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"seantehds"},"content":" storage.writeToFileFromTaskList(taskList, fileName, dirName);","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"seantehds"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"seantehds"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"seantehds"},"content":" } catch (EmiyaException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"seantehds"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"seantehds"},"content":" System.out.println(emiya.ui.Ui.EXIT_MESSAGE);","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"seantehds"},"content":" myScannerObj.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"seantehds"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"seantehds"},"content":" new Emiya(\"data\", \"emiya.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"seantehds":190}},{"path":"src/main/java/emiya/Keywords.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public enum Keywords {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" TODO(\"todo\"), DEADLINE(\"deadline\"), EVENT(\"event\");","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" private String type;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" Keywords(String type) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":" public String getType() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" return this.type;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"seantehds":14}},{"path":"src/main/java/emiya/datehandler/DateHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.datehandler;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.InvalidDateException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.WrongDateFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import emiya.logic.Logic;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"import java.time.Month;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"import java.time.format.TextStyle;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":"import static emiya.parser.Parser.parseForDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":"public class DateHandler {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" // strFormat is: YYYY-MM-DD TTTT","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" public static LocalDateTime determineDateTime(String strFormat) throws WrongDateFormatException, InvalidDateException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" String[] parsedDate \u003d parseForDate(strFormat);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" StringBuilder finalDateTimeStr \u003d new StringBuilder(parsedDate[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" finalDateTimeStr.append(\"T\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" finalDateTimeStr.append(parsedDate[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" finalDateTimeStr.append(\":\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" finalDateTimeStr.append(parsedDate[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" finalDateTimeStr.append(\":\");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" finalDateTimeStr.append(\"00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" return LocalDateTime.parse(finalDateTimeStr.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" public static String correctDateTimeFormat(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" int year \u003d dateTime.getYear();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" Month month \u003d dateTime.getMonth();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" int day \u003d dateTime.getDayOfMonth();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" int hour \u003d dateTime.getHour();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" int min \u003d dateTime.getMinute();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" StringBuilder finalStr \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" finalStr.append(month.getDisplayName(TextStyle.SHORT, Locale.ENGLISH));","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" finalStr.append(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":" finalStr.append(day);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":" finalStr.append(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" finalStr.append(year);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" finalStr.append(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":" finalStr.append(hour \u003c 10 ? \"0\" + hour : hour);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":" finalStr.append(\":\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" finalStr.append(min \u003c 10 ? \"0\" + min : min);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":" finalStr.append(\":\");","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" finalStr.append(\"00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":" return finalStr.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"seantehds":54}},{"path":"src/main/java/emiya/emiyaexception/CreateDirectoryFailException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class CreateDirectoryFailException extends EmiyaException{","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public CreateDirectoryFailException() {","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Failed to create directory\\n\"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/EmiyaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class EmiyaException extends Exception {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public EmiyaException(String message) {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(message);","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":8}},{"path":"src/main/java/emiya/emiyaexception/EmptyDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class EmptyDeadlineException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public EmptyDeadlineException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Oh no! Deadline tasks cannot be empty! Please try again!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/EmptyEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class EmptyEventException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public EmptyEventException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Oh no! Event tasks cannot be empty! Please try again!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/EmptyTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class EmptyTodoException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public EmptyTodoException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Oh no! Todo tasks cannot be empty! Please try again!\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class InvalidDateException extends EmiyaException{","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public InvalidDateException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Please enter a valid date!\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/ListEmptyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class ListEmptyException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public ListEmptyException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"List is empty! Please add items to list before trying to display list contents!\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/NoByException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class NoByException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public NoByException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"It seems like there\u0027s an error in your input! Did you remember to use /by in your input?\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":10}},{"path":"src/main/java/emiya/emiyaexception/NoFromException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class NoFromException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public NoFromException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"It seems like there\u0027s an error in your input! Did you remember to use /from in your input?\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/NoToException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class NoToException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public NoToException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"It seems like there\u0027s an error in your input! Did you remember to use /to in your input?\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/OutOfListBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class OutOfListBoundsException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public OutOfListBoundsException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Task does not exist! Please try with a different value\\n\"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class UnknownCommandException extends EmiyaException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public UnknownCommandException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Unknown command received! Please try again!\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/emiyaexception/WrongDateFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.emiyaexception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class WrongDateFormatException extends EmiyaException{","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public WrongDateFormatException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" \"Please give the date in the format of YYYY-MM-DD TTTT, where T represents the time in the 24 hour format\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"seantehds":9}},{"path":"src/main/java/emiya/logic/Logic.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.logic;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.Keywords;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"public class Logic {","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" // Used to check whether a given string contains purely numeric values.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" public static boolean isNumeric(String str) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":" return str.matches(\"\\\\d+\");","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" public static boolean isValidYear(int year) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" return (year \u003e 0 \u0026\u0026 year \u003c 9999);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" public static boolean isValidMonth(int month) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" return (month \u003e 0 \u0026\u0026 month \u003c 13);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" public static boolean isValidDay(int day) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" return (day \u003e 0 \u0026\u0026 day \u003c 32);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" public static boolean isValidHour(int hour) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" return (hour \u003e\u003d 0 \u0026\u0026 hour \u003c\u003d 23 );","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" public static boolean isValidMinute(int min) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" return (min \u003e\u003d 0 \u0026\u0026 min \u003c\u003d 59);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" // Checks if a given test String is part of the reserved keywords for the different tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" public static boolean enumContainsKeyword(String test) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" for (Keywords k : Keywords.values()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" if (k.name().equals(test)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"seantehds":41}},{"path":"src/main/java/emiya/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.logic.Logic;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"import static emiya.logic.Logic.enumContainsKeyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":" public Parser() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" public String[] parseToRemoveUnknownCommands(Integer[] position, String input) throws UnknownCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" // this part splits the input into 2 parts, depending on whitespace (if possible)","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" String[] partsOfInput \u003d input.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" // if input is a single word AND it is not a keyword, throw UnknownCommandException","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" if (partsOfInput.length \u003c 2 \u0026\u0026 !enumContainsKeyword(partsOfInput[0].toUpperCase())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" // figure out what command is being input","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" String typeOfTask \u003d partsOfInput[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" // if it is a mark/unmark, this will be number, else is part of command","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" String taskDetails \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" if (partsOfInput.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" taskDetails \u003d partsOfInput[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" // for mark/unmark commands","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" if (Logic.isNumeric(taskDetails)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" position[0] \u003d Integer.parseInt(taskDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" return new String[] {typeOfTask};","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" } else { // any other command, need pass in task details as well","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" return new String[] {typeOfTask, taskDetails};","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" public String[] parseForDeadline(String taskDetails) throws NoByException {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" String[] deadlineDetails \u003d taskDetails.split(\" /by \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" if (deadlineDetails.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":" throw new NoByException();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" return deadlineDetails;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":" public String[] parseForEvent(String taskDetails) throws NoToException, NoFromException {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" String[] eventDetails \u003d taskDetails.split(\" /from \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":" if (eventDetails.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" throw new NoFromException();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":" String[] eventDurationDetails \u003d eventDetails[1].split(\" /to \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":" if (eventDurationDetails.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":" throw new NoToException();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"seantehds"},"content":" return new String[] {eventDetails[0], eventDurationDetails[0], eventDurationDetails[1]};","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"seantehds"},"content":" public static String[] parseForDate(String input) throws InvalidDateException, WrongDateFormatException{","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"seantehds"},"content":" String[] partsOfDateTime \u003d input.split(\"\\\\s+\", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"seantehds"},"content":" // word/no whitespace used","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"seantehds"},"content":" if (partsOfDateTime.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"seantehds"},"content":" throw new WrongDateFormatException();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"seantehds"},"content":" String datePart \u003d partsOfDateTime[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"seantehds"},"content":" String timePart \u003d partsOfDateTime[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"seantehds"},"content":" String[] partsOfDate \u003d datePart.split(\"-\", 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"seantehds"},"content":" // if second part is not the time in 24h format/date not given in correct format","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"seantehds"},"content":" if (timePart.length() !\u003d 4 || !Logic.isNumeric(timePart.substring(0, 2)) || !Logic.isNumeric(timePart.substring(2, 4)) ||","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"seantehds"},"content":" partsOfDate.length \u003c 3 || !Logic.isNumeric(partsOfDate[0]) || !Logic.isNumeric(partsOfDate[1])","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"seantehds"},"content":" || !Logic.isNumeric(partsOfDate[2])) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"seantehds"},"content":" throw new WrongDateFormatException();","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"seantehds"},"content":" int year \u003d Integer.parseInt(partsOfDate[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"seantehds"},"content":" int month \u003d Integer.parseInt(partsOfDate[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"seantehds"},"content":" int day \u003d Integer.parseInt(partsOfDate[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"seantehds"},"content":" int hour \u003d Integer.parseInt(timePart.substring(0, 2));","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"seantehds"},"content":" int min \u003d Integer.parseInt(timePart.substring(2, 4));","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"seantehds"},"content":" // if given date is invalid","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"seantehds"},"content":" if (!Logic.isValidYear(year) || !Logic.isValidMonth(month) || !Logic.isValidDay(day) || !Logic.isValidHour(hour) || !Logic.isValidMinute(min)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"seantehds"},"content":" throw new InvalidDateException();","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"seantehds"},"content":" return new String[] {datePart, hour \u003c 10 ? \"0\" + hour : hour + \"\", min \u003c 10 ? \"0\" + min : min + \"\"};","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"seantehds":92}},{"path":"src/main/java/emiya/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.CreateDirectoryFailException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.InvalidDateException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.WrongDateFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"import emiya.task.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" public Storage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" public String fileContents(String fileName, String dirName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" String path \u003d Paths.get(\"\").toAbsolutePath().toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" String pathToDataDir \u003d Paths.get(path, dirName).toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" Path pathToDataDoc \u003d Paths.get(pathToDataDir, fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" String res \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" byte[] bytes \u003d Files.readAllBytes(pathToDataDoc);","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" String content \u003d new String(bytes);","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" res \u003d content;","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" return res;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" public void createDirectory(String dirName) throws CreateDirectoryFailException {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" String path \u003d Paths.get(\"\").toAbsolutePath().toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" String pathToDataDir \u003d Paths.get(path, dirName).toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" File dataDir \u003d new File(pathToDataDir);","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" if (!dataDir.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" boolean result \u003d dataDir.mkdirs();","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":" if (!result) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":" throw new CreateDirectoryFailException();","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" public void createFileInDirectory(String fileName, String dirName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":" String path \u003d Paths.get(\"\").toAbsolutePath().toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" String pathToDataDir \u003d Paths.get(path, dirName).toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":" Path pathToDataDoc \u003d Paths.get(pathToDataDir, fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":" String pathToDataDocStr \u003d pathToDataDoc.toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":" File dataDoc \u003d new File(pathToDataDocStr);","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"seantehds"},"content":" if (!dataDoc.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"seantehds"},"content":" String testData \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"seantehds"},"content":" Files.write(pathToDataDoc, testData.getBytes());","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"seantehds"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"seantehds"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"seantehds"},"content":" public void writeToFileFromTaskList(ArrayList\u003cTask\u003e taskArrayList, String fileName, String dirName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"seantehds"},"content":" String path \u003d Paths.get(\"\").toAbsolutePath().toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"seantehds"},"content":" String pathToDataDir \u003d Paths.get(path, dirName).toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"seantehds"},"content":" Path pathToDataDoc \u003d Paths.get(pathToDataDir, fileName);","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"seantehds"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"seantehds"},"content":" for (Task task : taskArrayList) {","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"seantehds"},"content":" str.append(task.typeOfString());","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"seantehds"},"content":" str.append(\"| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"seantehds"},"content":" str.append(task.statusString());","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"seantehds"},"content":" str.append(\"| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"seantehds"},"content":" str.append(task.taskDetailsString());","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"seantehds"},"content":" str.append(\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"seantehds"},"content":" Files.write(pathToDataDoc, str.toString().getBytes());","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"seantehds"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"seantehds"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"seantehds"},"content":" public void writeToFileFromTaskList(TaskList taskList, String fileName, String dirName) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"seantehds"},"content":" String path \u003d Paths.get(\"\").toAbsolutePath().toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"seantehds"},"content":" String pathToDataDir \u003d Paths.get(path, dirName).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"seantehds"},"content":" Path pathToDataDoc \u003d Paths.get(pathToDataDir, fileName);","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"seantehds"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"seantehds"},"content":" for (Task task : taskList.getTaskArrayList()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"seantehds"},"content":" str.append(task.typeOfString());","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"seantehds"},"content":" str.append(\"| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"seantehds"},"content":" str.append(task.statusString());","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"seantehds"},"content":" str.append(\"| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"seantehds"},"content":" str.append(task.taskDetailsString());","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"seantehds"},"content":" str.append(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"seantehds"},"content":" Files.write(pathToDataDoc, str.toString().getBytes());","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"seantehds"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"seantehds"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"seantehds"},"content":" public void fillListWithFileContent(TaskList taskList, String fileContent) throws WrongDateFormatException, InvalidDateException {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"seantehds"},"content":" String[] tasksStrArr \u003d fileContent.split(\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"seantehds"},"content":" for (String tasksStr : tasksStrArr) {","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"seantehds"},"content":" if (tasksStr.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"seantehds"},"content":" continue;","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"seantehds"},"content":" String[] tasksStrParts \u003d tasksStr.split(\" \\\\| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"seantehds"},"content":" String taskType \u003d tasksStrParts[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"seantehds"},"content":" int isCompletedInt \u003d Integer.parseInt(tasksStrParts[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"seantehds"},"content":" boolean isCompletedBool \u003d (isCompletedInt \u003d\u003d 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"seantehds"},"content":" String taskDetails \u003d tasksStrParts[2];","lastModifiedDate":"2023-08-29"},{"lineNumber":123,"author":{"gitId":"seantehds"},"content":" String firstDate \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":124,"author":{"gitId":"seantehds"},"content":" String secondDate \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":125,"author":{"gitId":"seantehds"},"content":" if (tasksStrParts.length \u003e\u003d 4) {","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"seantehds"},"content":" firstDate \u003d tasksStrParts[3];","lastModifiedDate":"2023-08-29"},{"lineNumber":127,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":128,"author":{"gitId":"seantehds"},"content":" if (tasksStrParts.length \u003d\u003d 5) {","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"seantehds"},"content":" secondDate \u003d tasksStrParts[4];","lastModifiedDate":"2023-08-29"},{"lineNumber":130,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":131,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":132,"author":{"gitId":"seantehds"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":133,"author":{"gitId":"seantehds"},"content":" taskList.add(new ToDo(isCompletedBool, taskDetails));","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"seantehds"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":135,"author":{"gitId":"seantehds"},"content":" taskList.add(new Deadline(isCompletedBool, taskDetails, firstDate));","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"seantehds"},"content":" taskList.add(new Event(isCompletedBool, taskDetails, firstDate, secondDate));","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":139,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":140,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":141,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"seantehds":141}},{"path":"src/main/java/emiya/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.datehandler.DateHandler;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.InvalidDateException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.WrongDateFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":" private final String dateOfDeadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":" private LocalDateTime localDateTime \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" public Deadline(boolean isCompleted, String nameOfTask, String dateOfDeadline) throws WrongDateFormatException, InvalidDateException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" super(isCompleted, nameOfTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" this.localDateTime \u003d DateHandler.determineDateTime(dateOfDeadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" this.dateOfDeadline \u003d dateOfDeadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" return \"[D][X] \" + nameOfTask + \" (by: \" + DateHandler.correctDateTimeFormat(localDateTime) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" return \"[D][ ] \" + nameOfTask + \" (by: \" + DateHandler.correctDateTimeFormat(localDateTime) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" public String typeOfString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" return \"D \";","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" public String taskDetailsString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" return super.nameOfTask + \" |\" + \" \" + dateOfDeadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"seantehds":37}},{"path":"src/main/java/emiya/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.datehandler.DateHandler;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.InvalidDateException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.WrongDateFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":" private final String start;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" private final String end;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" private LocalDateTime localDateTimeStart \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" private LocalDateTime localDateTimeEnd \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" public Event(boolean isCompleted, String nameOfTask, String start, String end) throws WrongDateFormatException, InvalidDateException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" super(isCompleted, nameOfTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" this.localDateTimeStart \u003d DateHandler.determineDateTime(start);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" this.localDateTimeEnd \u003d DateHandler.determineDateTime(end);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" return \"[E][X] \" + nameOfTask + \" (from: \" + DateHandler.correctDateTimeFormat(localDateTimeStart) + \" to: \" + DateHandler.correctDateTimeFormat(localDateTimeEnd) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" return \"[E][ ] \" + nameOfTask + \" (from: \" + DateHandler.correctDateTimeFormat(localDateTimeStart) + \" to: \" + DateHandler.correctDateTimeFormat(localDateTimeEnd) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" public String typeOfString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" return \"E \";","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" public String taskDetailsString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" return super.nameOfTask + \" |\" + \" \" + start + \" |\" + \" \" + end;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"seantehds":42}},{"path":"src/main/java/emiya/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"abstract public class Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" protected boolean isCompleted;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" protected String nameOfTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":" public Task(boolean isCompleted, String nameOfTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":" this.nameOfTask \u003d nameOfTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" return \"[X] \" + nameOfTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" return \"[ ] \" + nameOfTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" abstract public String typeOfString();","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" public String statusString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" return \"1 \";","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" return \"0 \";","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" abstract public String taskDetailsString();","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" public void setUnmarked() {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" public void setMarked() {","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"seantehds":40}},{"path":"src/main/java/emiya/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.ListEmptyException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":" private ArrayList\u003cTask\u003e taskArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" this.taskArrayList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" public ArrayList\u003cTask\u003e getTaskArrayList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" return this.taskArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" public Task get(int pos) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" return this.taskArrayList.get(pos);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" public void remove(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" this.taskArrayList.remove(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" return this.taskArrayList.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" this.taskArrayList.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" public void list() throws ListEmptyException{","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" int listPointer \u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" StringBuilder listString \u003d new StringBuilder(\"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" \"Lots of things to do! Get to it!:\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" for (Task task : taskArrayList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" if (task \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" if (listPointer \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":" // throw new EmiyaException(\"List is empty! Please add items to list before trying to display list contents!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":" throw new ListEmptyException();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":" String listItem \u003d listPointer + \".\" + task + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" listPointer++;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":" listString.append(listItem);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":" listString.append(\"-----------------------------------------\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":" System.out.println(listString);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"seantehds":55}},{"path":"src/main/java/emiya/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":" public ToDo(boolean isCompleted, String nameOfTask) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":" super(isCompleted, nameOfTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":" return \"[T][X] \" + nameOfTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" return \"[T][ ] \" + nameOfTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" public String typeOfString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" return \"T \";","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" public String taskDetailsString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" return super.nameOfTask;","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"seantehds":27}},{"path":"src/main/java/emiya/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" public static final String WELCOME_MESSAGE \u003d \"-----------------------------------------\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" + \"Hello! I\u0027m Emiya\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" public static final String EXIT_MESSAGE \u003d \"-----------------------------------------\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" + \"Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" public static final String UBW \u003d \"-----------------------------------------\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" + \"Unknown to death nor known to life\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" public static final String DEAD \u003d \"-----------------------------------------\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" + \"People die if they are killed!\" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" public String addedSingularMessage(Task task, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" return \"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" \"Sure! I have added this task to the list:\\n\" + task + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" + \"Now you have \" + taskList.size() + \" task in your list!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" public String addedPluralMessage(Task task, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" return \"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":" \"Sure! I have added this task to the list:\\n\" + task + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" + \"Now you have \" + taskList.size() + \" tasks in your list!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":" public static String deletedSingularMessage(Task task, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" return \"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" \"Sure, I shall now delete the following task:\\n\" + task + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":" + \"Now you have \" + taskList.size() + \" task in your list!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" public String deletedPluralMessage(Task task, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":" return \"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":" \"Sure, I shall now delete the following task:\\n\" + task + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":" + \"Now you have \" + taskList.size() + \" tasks in your list!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"seantehds"},"content":" public String markedMessage(int position, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"seantehds"},"content":" return \"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"seantehds"},"content":" \"Nice job! I have marked this task as done:\\n\" + taskList.get(position-1) + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"seantehds"},"content":" public String unmarkedMessage(int position, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"seantehds"},"content":" return \"-----------------------------------------\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"seantehds"},"content":" \"Oof, alright I have set this task as unmarked:\\n\" + taskList.get(position-1) + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"seantehds"},"content":" + \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"seantehds":68}},{"path":"src/test/java/emiya/datehandler/DateHandlerTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.datehandler;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.InvalidDateException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.WrongDateFormatException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"import static emiya.datehandler.DateHandler.determineDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":"public class DateHandlerTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" public void determineDateTime_correctDateTimeFormat_dateTimeObjectsEqual(){","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" LocalDateTime testObj;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" String input \u003d \"2023-09-01 1200\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" testObj \u003d determineDateTime(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" } catch (WrongDateFormatException | InvalidDateException e ) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" assertEquals(LocalDateTime.of(2023, 9,1,12,0), testObj);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" public void determineDateTime_wrongDateFormat_exceptionThrown(){","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" String input \u003d \"2023/09/01 1200\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":" LocalDateTime result \u003d determineDateTime(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" fail(\"Expected WrongDateFormatException to be thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" } catch (WrongDateFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" // Test passes","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" } catch (InvalidDateException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" fail(\"Unexpected InvalidDateException thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" public void determineDateTime_wrongTimeFormat_exceptionThrown(){","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" String input \u003d \"2023-09-01 2.00pm\";","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":" LocalDateTime result \u003d determineDateTime(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" fail(\"Expected WrongDateFormatException to be thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" } catch (WrongDateFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":" // Test passes","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":" } catch (InvalidDateException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" fail(\"Unexpected InvalidDateException thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":" public void determineDateTime_invalidTimeGiven_exceptionThrown(){","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":" String input \u003d \"2023-09-01 1793\";","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"seantehds"},"content":" LocalDateTime result \u003d determineDateTime(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"seantehds"},"content":" fail(\"Expected InvalidDateException to be thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"seantehds"},"content":" } catch (WrongDateFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"seantehds"},"content":" fail(\"Unexpected WrongDateFormatException thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"seantehds"},"content":" } catch (InvalidDateException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"seantehds"},"content":" // Test passes","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"seantehds":64}},{"path":"src/test/java/emiya/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"package emiya.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"import emiya.emiyaexception.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"import static org.junit.jupiter.api.Assertions.assertArrayEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" // featureUnderTest_testScenario_expectedBehavior","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":" public void parseToRemoveUnknownCommands_correctlyFormattedInput_generateExpectedOutput() throws UnknownCommandException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":" Integer[] position \u003d new Integer[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":" String input \u003d \"todo finish homework\";","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":" String[] expectedOutput \u003d {\"todo\", \"finish homework\"};","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":" assertArrayEquals(expectedOutput, parser.parseToRemoveUnknownCommands(position, input));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seantehds"},"content":" public void parseForDeadline_correctlyFormattedInput_generateExpectedOutput() throws NoByException {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"seantehds"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seantehds"},"content":" String taskDetails \u003d \"finish homework /by 2023-09-01 1500\";","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"seantehds"},"content":" String[] expectedOutput \u003d {\"finish homework\", \"2023-09-01 1500\"};","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"seantehds"},"content":" assertArrayEquals(expectedOutput, parser.parseForDeadline(taskDetails));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seantehds"},"content":" public void parseForEvent_correctlyFormattedInput_generateExpectedOutput() throws NoToException, NoFromException {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seantehds"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seantehds"},"content":" String taskDetails \u003d \"attend meeting /from 2023-09-01 1500 /to 2023-09-01 1600\";","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seantehds"},"content":" String[] expectedOutput \u003d {\"attend meeting\", \"2023-09-01 1500\", \"2023-09-01 1600\"};","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seantehds"},"content":" assertArrayEquals(expectedOutput, parser.parseForEvent(taskDetails));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seantehds"},"content":" public void parseForDate_correctlyFormattedInput_generateExpectedOutput() throws InvalidDateException, WrongDateFormatException{","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"seantehds"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"seantehds"},"content":" String input \u003d \"2023-09-01 1500\";","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seantehds"},"content":" String[] expectedOutput \u003d {\"2023-09-01\", \"15\", \"00\"};","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"seantehds"},"content":" assertArrayEquals(expectedOutput, parser.parseForDate(input));","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"seantehds"},"content":" public void parseToRemoveUnknownCommands_invalidInput_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"seantehds"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"seantehds"},"content":" Integer[] position \u003d new Integer[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"seantehds"},"content":" String input \u003d \"invalid\";","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"seantehds"},"content":" parser.parseToRemoveUnknownCommands(position, input);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"seantehds"},"content":" fail(\"Expected UnknownCommandException to be thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"seantehds"},"content":" } catch (UnknownCommandException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"seantehds"},"content":" // Test passed","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"seantehds"},"content":" public void parseForDeadline_noByInInput_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"seantehds"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"seantehds"},"content":" String taskDetails \u003d \"finish homework tomorrow\";","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"seantehds"},"content":" parser.parseForDeadline(taskDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"seantehds"},"content":" fail(\"Expected NoByException to be thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"seantehds"},"content":" } catch (NoByException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"seantehds"},"content":" // Test passed","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"seantehds"},"content":" public void parseForEvent_noFromInInput_exceptionThrown() throws NoToException {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"seantehds"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"seantehds"},"content":" String taskDetails \u003d \"attend meeting 9am to 11am\";","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"seantehds"},"content":" parser.parseForEvent(taskDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"seantehds"},"content":" fail(\"Expected NoFromException to be thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"seantehds"},"content":" } catch (NoFromException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"seantehds"},"content":" // Test passed","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"seantehds"},"content":" public void parseForEvent_noToInInput_exceptionThrown() throws NoFromException {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"seantehds"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"seantehds"},"content":" String taskDetails \u003d \"attend meeting /from 9am 11am\";","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"seantehds"},"content":" parser.parseForEvent(taskDetails);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"seantehds"},"content":" fail(\"Expected NoToException to be thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"seantehds"},"content":" } catch (NoToException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"seantehds"},"content":" // Test passed","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"seantehds"},"content":" public void parseForDate_wrongFormatForDate_exceptionThrown() throws InvalidDateException {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"seantehds"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"seantehds"},"content":" String input \u003d \"2023/09/01 1500\";","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"seantehds"},"content":" parser.parseForDate(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"seantehds"},"content":" fail(\"Expected WrongDateFormatException to be thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"seantehds"},"content":" } catch (WrongDateFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"seantehds"},"content":" // Test passed","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"seantehds"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"seantehds"},"content":" public void parseForDate_invalidDateInput_exceptionThrown() throws WrongDateFormatException {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"seantehds"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"seantehds"},"content":" String input \u003d \"2023-13-01 1500\";","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"seantehds"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"seantehds"},"content":" parser.parseForDate(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"seantehds"},"content":" fail(\"Expected InvalidDateException to be thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"seantehds"},"content":" } catch (InvalidDateException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"seantehds"},"content":" // Test passed","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"seantehds"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"seantehds"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"seantehds":119}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"todo buy a book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"deadline read book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"event reading book /from today /to Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"seantehds":9}},{"path":"text-ui-test/runtestemiya.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"seantehds"},"content":"@ECHO OFF","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"seantehds"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"seantehds"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"seantehds"},"content":"REM delete output from previous run","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"seantehds"},"content":"del ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"seantehds"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"seantehds"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"seantehds"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"seantehds"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"seantehds"},"content":" exit /b 1","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"seantehds"},"content":")","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"seantehds"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"seantehds"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"seantehds"},"content":"java -classpath ..\\bin emiya.Emiya \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seantehds"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"seantehds"},"content":"REM compare the output to the expected output","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"seantehds"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"seantehds":21}}] diff --git a/seantehds_ip_master/commits.json b/seantehds_ip_master/commits.json index 6893c4c6..073bb263 100644 --- a/seantehds_ip_master/commits.json +++ b/seantehds_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"seantehds":[{"date":"2023-08-21","commitResults":[{"hash":"dd78242c5545e2965455f59f2a2a54e28751bbe4","isMergeCommit":false,"messageTitle":"Added basic functionality to print output for new chatbot Emiya","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"3a71f6f7866d792b3cfdd8d4cdaa23d96678ef8d","isMergeCommit":false,"messageTitle":"Added in basic input recognition from user and displaying their input as an output on the screen","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":0}}}]},{"date":"2023-08-22","commitResults":[{"hash":"6d2dc353e9cde8a9c74dcd9d930e38dd417b1076","isMergeCommit":false,"messageTitle":"Added in list functionality; Also able to detect if list is empty and ask user to add items","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"0af71cf822c9a358f7d65ea470f257110bfcf560","isMergeCommit":false,"messageTitle":"Added in mark and unmark functionality to the list, as well as the Task class for individual tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":29}}},{"hash":"8cacb096db6ba1876547ecf05c03c77364e63fb8","isMergeCommit":false,"messageTitle":"Added in new subclasses for Task for the 3 different event types, as well as updating the app to handle different Task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":72}}}]},{"date":"2023-08-23","commitResults":[{"hash":"c1833edb65e9ba32b27008845d2a3c0341b94e34","isMergeCommit":false,"messageTitle":"added basic tests to test functionality using runtestemiya.bat file","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":4,"deletions":26},"bat":{"insertions":21,"deletions":0}}},{"hash":"539c7e8f8a17016a1920f8251161fd86eddb6a69","isMergeCommit":false,"messageTitle":"Added exception handling to the Emiya chatbot, such as from unknown commands or wrong formats for commands","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":71}}},{"hash":"a159dee3adcd3010b8ebc3800f72d2b5a898aeba","isMergeCommit":false,"messageTitle":"Changed how tasks were represented inside Emiya, as well as added delete functionality","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":37}}}]},{"date":"2023-08-28","commitResults":[{"hash":"db8745736638546a6bd0d91d5c91535b1e4b9506","isMergeCommit":false,"messageTitle":"Fix a few bugs within Emiya with different numbers of tasks, as well as identation levels","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":106}}},{"hash":"59d79370d2eeb93a4a89cfc4d55ccb1512f87a2b","isMergeCommit":false,"messageTitle":"Refactor EmiyaExceptions to be in a separate package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":27}}},{"hash":"82e157658a954d17990ae368c61d2f7b758664f3","isMergeCommit":false,"messageTitle":"Change import statements and refactor Task into the task package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":10}}},{"hash":"8d543b930db3204a1e77a5280e6d631c7efe4042","isMergeCommit":false,"messageTitle":"Add ability to retrieve the absolute path name to root directory","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"3a2e5c026fbbd443d0cdce09d070d7bc96465bf0","isMergeCommit":false,"messageTitle":"Add checking of existence of data folder within root directory","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"3a0ace61643de496e8d8ae350b55ad8cd52b6116","isMergeCommit":false,"messageTitle":"Add ability to create the data directory if it does not exist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":5}}},{"hash":"1df3dfe229ffe76f497552589c86f55a128d084a","isMergeCommit":false,"messageTitle":"Add functionality to write file to data directory if it does not exist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"35607c0d6dd6c201c68c31d1b29c537b0d1972e8","isMergeCommit":false,"messageTitle":"Add ability to write tasks into emiya.txt after commands by user","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":150,"deletions":37}}},{"hash":"3da86e9ca285162420f5e5731cf99e9fe82ec255","isMergeCommit":false,"messageTitle":"Add functionality to read from the saved file to populate tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":49}}},{"hash":"235f3ed78b410d7e0df5cd4f5be2b6914415a37c","isMergeCommit":false,"messageTitle":"Fix bugs when writing to saved emiya.txt","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}}]},{"date":"2023-08-31","commitResults":[{"hash":"2966ed0efa0f99894b85276ee4e6ce08c97495a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"47eae09a707876f8ddf582e875536c799e0ddd4c","isMergeCommit":false,"messageTitle":"Add the DataHandler class to handle date inputs for deadlines and events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":20}}},{"hash":"13b9f751decf9e4a4761c640649c9e08e04314b9","isMergeCommit":false,"messageTitle":"Add error handling for user inputs for dates","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":17}}},{"hash":"eb789721954945afc391ed49d4d19774247753c6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"be5f905620efe9edf5b1f309438b50ee05f01439","isMergeCommit":false,"messageTitle":"Add TaskList, Ui class for more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":205,"deletions":103}}}]},{"date":"2023-09-01","commitResults":[{"hash":"cf0b8b45a78c5dca6e9c1027cbdd3e8a2c0e41a1","isMergeCommit":false,"messageTitle":"Add Parser class to handle parsing of inputs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":491,"deletions":375},"bat":{"insertions":1,"deletions":1}}},{"hash":"c2f48b5f055da28b2d7f8603d8172e7b8eade580","isMergeCommit":false,"messageTitle":"Change handling of parsing of text from DateHandler to Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":40}}},{"hash":"a1b98782cbad6ccd1ed5079be70157bd5b99ea13","isMergeCommit":false,"messageTitle":"Clean comments and unnecessary print statements","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":180}}}]}]},"authorFileTypeContributionMap":{"seantehds":{"java":955,"md":0,"fxml":0,"sh":0,"bat":21,"gradle":0,"txt":9}},"authorContributionVariance":{"seantehds":114774.46},"authorDisplayNameMap":{"seantehds":"CS2103T-T17-1 TEH ..SEAN"}} +{"authorDailyContributionsMap":{"seantehds":[{"date":"2023-08-21","commitResults":[{"hash":"dd78242c5545e2965455f59f2a2a54e28751bbe4","isMergeCommit":false,"messageTitle":"Added basic functionality to print output for new chatbot Emiya","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"3a71f6f7866d792b3cfdd8d4cdaa23d96678ef8d","isMergeCommit":false,"messageTitle":"Added in basic input recognition from user and displaying their input as an output on the screen","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":0}}}]},{"date":"2023-08-22","commitResults":[{"hash":"6d2dc353e9cde8a9c74dcd9d930e38dd417b1076","isMergeCommit":false,"messageTitle":"Added in list functionality; Also able to detect if list is empty and ask user to add items","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"0af71cf822c9a358f7d65ea470f257110bfcf560","isMergeCommit":false,"messageTitle":"Added in mark and unmark functionality to the list, as well as the Task class for individual tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":29}}},{"hash":"8cacb096db6ba1876547ecf05c03c77364e63fb8","isMergeCommit":false,"messageTitle":"Added in new subclasses for Task for the 3 different event types, as well as updating the app to handle different Task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":72}}}]},{"date":"2023-08-23","commitResults":[{"hash":"c1833edb65e9ba32b27008845d2a3c0341b94e34","isMergeCommit":false,"messageTitle":"added basic tests to test functionality using runtestemiya.bat file","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":4,"deletions":26},"bat":{"insertions":21,"deletions":0}}},{"hash":"539c7e8f8a17016a1920f8251161fd86eddb6a69","isMergeCommit":false,"messageTitle":"Added exception handling to the Emiya chatbot, such as from unknown commands or wrong formats for commands","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":71}}},{"hash":"a159dee3adcd3010b8ebc3800f72d2b5a898aeba","isMergeCommit":false,"messageTitle":"Changed how tasks were represented inside Emiya, as well as added delete functionality","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":37}}}]},{"date":"2023-08-28","commitResults":[{"hash":"db8745736638546a6bd0d91d5c91535b1e4b9506","isMergeCommit":false,"messageTitle":"Fix a few bugs within Emiya with different numbers of tasks, as well as identation levels","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":106}}},{"hash":"59d79370d2eeb93a4a89cfc4d55ccb1512f87a2b","isMergeCommit":false,"messageTitle":"Refactor EmiyaExceptions to be in a separate package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":27}}},{"hash":"82e157658a954d17990ae368c61d2f7b758664f3","isMergeCommit":false,"messageTitle":"Change import statements and refactor Task into the task package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":10}}},{"hash":"8d543b930db3204a1e77a5280e6d631c7efe4042","isMergeCommit":false,"messageTitle":"Add ability to retrieve the absolute path name to root directory","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"3a2e5c026fbbd443d0cdce09d070d7bc96465bf0","isMergeCommit":false,"messageTitle":"Add checking of existence of data folder within root directory","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"3a0ace61643de496e8d8ae350b55ad8cd52b6116","isMergeCommit":false,"messageTitle":"Add ability to create the data directory if it does not exist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":5}}},{"hash":"1df3dfe229ffe76f497552589c86f55a128d084a","isMergeCommit":false,"messageTitle":"Add functionality to write file to data directory if it does not exist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"35607c0d6dd6c201c68c31d1b29c537b0d1972e8","isMergeCommit":false,"messageTitle":"Add ability to write tasks into emiya.txt after commands by user","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":150,"deletions":37}}},{"hash":"3da86e9ca285162420f5e5731cf99e9fe82ec255","isMergeCommit":false,"messageTitle":"Add functionality to read from the saved file to populate tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":49}}},{"hash":"235f3ed78b410d7e0df5cd4f5be2b6914415a37c","isMergeCommit":false,"messageTitle":"Fix bugs when writing to saved emiya.txt","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}}]},{"date":"2023-08-31","commitResults":[{"hash":"2966ed0efa0f99894b85276ee4e6ce08c97495a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"47eae09a707876f8ddf582e875536c799e0ddd4c","isMergeCommit":false,"messageTitle":"Add the DataHandler class to handle date inputs for deadlines and events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":20}}},{"hash":"13b9f751decf9e4a4761c640649c9e08e04314b9","isMergeCommit":false,"messageTitle":"Add error handling for user inputs for dates","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":17}}},{"hash":"eb789721954945afc391ed49d4d19774247753c6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"be5f905620efe9edf5b1f309438b50ee05f01439","isMergeCommit":false,"messageTitle":"Add TaskList, Ui class for more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":205,"deletions":103}}}]},{"date":"2023-09-01","commitResults":[{"hash":"cf0b8b45a78c5dca6e9c1027cbdd3e8a2c0e41a1","isMergeCommit":false,"messageTitle":"Add Parser class to handle parsing of inputs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":491,"deletions":375},"bat":{"insertions":1,"deletions":1}}},{"hash":"c2f48b5f055da28b2d7f8603d8172e7b8eade580","isMergeCommit":false,"messageTitle":"Change handling of parsing of text from DateHandler to Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":40}}},{"hash":"a1b98782cbad6ccd1ed5079be70157bd5b99ea13","isMergeCommit":false,"messageTitle":"Clean comments and unnecessary print statements","messageBody":"","tags":["v0.1","A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":180}}},{"hash":"b121a60115099029d16dd3c25893698c92195c3f","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3055e95f3bc77534cb8cc8d2512a5ed374be84a5","isMergeCommit":false,"messageTitle":"Set up Gradle by merging with add-gradle branch","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":17,"deletions":0}}},{"hash":"60cfd847c27931fab44857b295d3a46bf094e024","isMergeCommit":false,"messageTitle":"Add unit tests for Parser and DateHandler","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":170,"deletions":41}}},{"hash":"c5c88a2306cb06fc2e7b60f88df6778dce6355df","isMergeCommit":false,"messageTitle":"Fix bug when printing output when adding task to list","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"seantehds":{"java":1101,"md":0,"fxml":0,"sh":0,"bat":21,"gradle":4,"txt":9}},"authorContributionVariance":{"seantehds":150715.7},"authorDisplayNameMap":{"seantehds":"CS2103T-T17-1 TEH ..SEAN"}} diff --git a/seraphimstreets_ip_master/authorship.json b/seraphimstreets_ip_master/authorship.json index 8ec0f93f..a63eb576 100644 --- a/seraphimstreets_ip_master/authorship.json +++ b/seraphimstreets_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"seraphimstreets"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"seraphimstreets"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"seraphimstreets":2,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seraphimstreets"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"seraphimstreets"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"seraphimstreets"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"seraphimstreets"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"seraphimstreets"},"content":"import java.io.File;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"seraphimstreets"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"seraphimstreets"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"seraphimstreets"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"seraphimstreets"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"seraphimstreets"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"seraphimstreets"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"seraphimstreets"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"seraphimstreets"},"content":"abstract class TaskType {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"seraphimstreets"},"content":" public abstract String getTaco(DateTimeFormatter formatter);","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"seraphimstreets"},"content":"class Todo extends TaskType {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"seraphimstreets"},"content":" public Todo(String x, ArrayList\u003cDateTimeFormatter\u003e formatters){","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"seraphimstreets"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"seraphimstreets"},"content":" return \"T\";","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"seraphimstreets"},"content":" public String getTaco(DateTimeFormatter formatter){","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"seraphimstreets"},"content":" return \"\";","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"seraphimstreets"},"content":"class Deadline extends TaskType {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"seraphimstreets"},"content":" private LocalDateTime dl;","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"seraphimstreets"},"content":" public Deadline(String x, ArrayList\u003cDateTimeFormatter\u003e formatters) throws DukeException{","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"seraphimstreets"},"content":" String[] s \u003d x.split(\"\\\\s+\");","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"seraphimstreets"},"content":" boolean ok \u003d false;","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"seraphimstreets"},"content":" String a \u003d Utils.getString(s, 1, s.length);","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"seraphimstreets"},"content":" if(a.isEmpty()) throw new DukeException(\"/by description cannot be empty\");","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"seraphimstreets"},"content":" for(DateTimeFormatter fr : formatters){","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"seraphimstreets"},"content":" this.dl \u003d LocalDateTime.parse(a, fr);","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"seraphimstreets"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"seraphimstreets"},"content":" }catch(DateTimeParseException e){}","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"seraphimstreets"},"content":" if(dl \u003d\u003d null) throw new DukeException(\"/by date format count not be recognized\");","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"seraphimstreets"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"seraphimstreets"},"content":" return \"D\";","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"seraphimstreets"},"content":" public String getTaco(DateTimeFormatter formatter){","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"seraphimstreets"},"content":" return \"(by: \" + dl.format(formatter) + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"seraphimstreets"},"content":"class Event extends TaskType {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"seraphimstreets"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"seraphimstreets"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"seraphimstreets"},"content":" public Event(String x, ArrayList\u003cDateTimeFormatter\u003e formatters) throws DukeException{","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"seraphimstreets"},"content":" String[] s \u003d x.split(\"\\\\s+\");","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"seraphimstreets"},"content":" boolean ok \u003d false;","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"seraphimstreets"},"content":" for(int i\u003d1;i\u003cs.length;i++){","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"seraphimstreets"},"content":" if(s[i].equals(\"to:\")){","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"seraphimstreets"},"content":" String a \u003d Utils.getString(s, 1, i);","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"seraphimstreets"},"content":" String b \u003d Utils.getString(s, i+1, s.length);","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"seraphimstreets"},"content":" if(a.isEmpty()) throw new DukeException(\"/from description cannot be empty\");","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"seraphimstreets"},"content":" if(b.isEmpty()) throw new DukeException(\"/to description cannot be empty\");","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"seraphimstreets"},"content":" for(DateTimeFormatter fr : formatters){","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"seraphimstreets"},"content":" this.from \u003d LocalDateTime.parse(a, fr);","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"seraphimstreets"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"seraphimstreets"},"content":" }catch(DateTimeParseException e){}","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"seraphimstreets"},"content":" for(DateTimeFormatter fr : formatters){","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"seraphimstreets"},"content":" this.to \u003d LocalDateTime.parse(b, fr);","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"seraphimstreets"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"seraphimstreets"},"content":" }catch(DateTimeParseException e){}","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"seraphimstreets"},"content":" ok \u003d true;","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"seraphimstreets"},"content":" if(from \u003d\u003d null) throw new DukeException(\"/from date format count not be recognized\");","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"seraphimstreets"},"content":" if(to \u003d\u003d null) throw new DukeException(\"/to date format count not be recognized\");","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"seraphimstreets"},"content":" if(!ok) throw new DukeException(\"keyword /to was not detected.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"seraphimstreets"},"content":" public String toString(){","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"seraphimstreets"},"content":" return \"E\";","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"seraphimstreets"},"content":" public String getTaco(DateTimeFormatter formatter){","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"seraphimstreets"},"content":" return \"(from: \" + from.format(formatter) + \" to: \" + to.format(formatter) + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"seraphimstreets"},"content":"class DukeException extends Exception {","lastModifiedDate":"2023-08-25"},{"lineNumber":95,"author":{"gitId":"seraphimstreets"},"content":" public DukeException(String a){","lastModifiedDate":"2023-08-25"},{"lineNumber":96,"author":{"gitId":"seraphimstreets"},"content":" super(a);","lastModifiedDate":"2023-08-25"},{"lineNumber":97,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"seraphimstreets"},"content":"class Item{","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"seraphimstreets"},"content":" private String task;","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"seraphimstreets"},"content":" private boolean completed;","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"seraphimstreets"},"content":" private TaskType tt;","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":104,"author":{"gitId":"seraphimstreets"},"content":" String dl;","lastModifiedDate":"2023-08-26"},{"lineNumber":105,"author":{"gitId":"seraphimstreets"},"content":" public Item(String task, boolean completed, TaskType tt, String dl){","lastModifiedDate":"2023-08-26"},{"lineNumber":106,"author":{"gitId":"seraphimstreets"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"seraphimstreets"},"content":" this.completed \u003d completed;","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"seraphimstreets"},"content":" this.tt \u003d tt;","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"seraphimstreets"},"content":" this.dl \u003d dl;","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"seraphimstreets"},"content":" public String toString(DateTimeFormatter fmt){","lastModifiedDate":"2023-08-26"},{"lineNumber":112,"author":{"gitId":"seraphimstreets"},"content":" String cBox \u003d \"[\" + (completed ? \"X\" : \" \") + \"] \";","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"seraphimstreets"},"content":" String tBox \u003d \"[\" + tt.toString() + \"]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"seraphimstreets"},"content":" String taco \u003d this.tt.getTaco(fmt);","lastModifiedDate":"2023-08-26"},{"lineNumber":115,"author":{"gitId":"seraphimstreets"},"content":" return tBox + cBox + \" \" + task + \" \" + taco;","lastModifiedDate":"2023-08-26"},{"lineNumber":116,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":117,"author":{"gitId":"seraphimstreets"},"content":" public void setCompleted(boolean x){","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"seraphimstreets"},"content":" completed \u003d x;","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"seraphimstreets"},"content":" public String saveStringRep(){","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"seraphimstreets"},"content":" return this.task + \" \" + String.valueOf(completed) + \" \" + tt.toString() + \" \" + (dl \u003d\u003d null ? \"\" : dl);","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":125,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":127,"author":{"gitId":"seraphimstreets"},"content":"class Utils {","lastModifiedDate":"2023-08-26"},{"lineNumber":128,"author":{"gitId":"seraphimstreets"},"content":" public static String getString(String[] a, int x, int y){","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"seraphimstreets"},"content":" String res \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"seraphimstreets"},"content":" for(int i\u003dx;i\u003cy;i++){","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"seraphimstreets"},"content":" if(a[i].charAt(0) \u003d\u003d \u0027/\u0027) res +\u003d a[i].substring(1) + \":\";","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"seraphimstreets"},"content":" else res +\u003d a[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"seraphimstreets"},"content":" if(i!\u003dy-1) res +\u003d \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"seraphimstreets"},"content":" return res;","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-26"},{"lineNumber":138,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":139,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":140,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"seraphimstreets"},"content":"class Ui{","lastModifiedDate":"2023-08-26"},{"lineNumber":142,"author":{"gitId":"seraphimstreets"},"content":" private DTFormat dtf;","lastModifiedDate":"2023-08-26"},{"lineNumber":143,"author":{"gitId":"seraphimstreets"},"content":" public Ui(DTFormat dtf){","lastModifiedDate":"2023-08-26"},{"lineNumber":144,"author":{"gitId":"seraphimstreets"},"content":" this.dtf \u003d dtf;","lastModifiedDate":"2023-08-26"},{"lineNumber":145,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":146,"author":{"gitId":"seraphimstreets"},"content":" public void print(String msg){","lastModifiedDate":"2023-08-26"},{"lineNumber":147,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-26"},{"lineNumber":148,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":149,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":150,"author":{"gitId":"seraphimstreets"},"content":" public void printItems(ArrayList\u003cItem\u003e items){","lastModifiedDate":"2023-08-26"},{"lineNumber":151,"author":{"gitId":"seraphimstreets"},"content":" for(int i\u003d0;i\u003citems.size();i++){","lastModifiedDate":"2023-08-26"},{"lineNumber":152,"author":{"gitId":"seraphimstreets"},"content":" print((i + 1) + \".\" + itemToString(items.get(i)));","lastModifiedDate":"2023-08-26"},{"lineNumber":153,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":154,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":155,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":156,"author":{"gitId":"seraphimstreets"},"content":" public void printIntro(){","lastModifiedDate":"2023-08-26"},{"lineNumber":157,"author":{"gitId":"seraphimstreets"},"content":" print(\"Hello I\u0027m Robot!\");","lastModifiedDate":"2023-08-26"},{"lineNumber":158,"author":{"gitId":"seraphimstreets"},"content":" print(\"What can I do for you?\");","lastModifiedDate":"2023-08-26"},{"lineNumber":159,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":160,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":161,"author":{"gitId":"seraphimstreets"},"content":" public void printExit(){","lastModifiedDate":"2023-08-26"},{"lineNumber":162,"author":{"gitId":"seraphimstreets"},"content":" print(\"Bye! Hope to see you again soon!\");","lastModifiedDate":"2023-08-26"},{"lineNumber":163,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":164,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":165,"author":{"gitId":"seraphimstreets"},"content":" public void showLoadingError(){","lastModifiedDate":"2023-08-26"},{"lineNumber":166,"author":{"gitId":"seraphimstreets"},"content":" print(\"An error occurred while loading data into your list, starting with a blank list...\");","lastModifiedDate":"2023-08-26"},{"lineNumber":167,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":168,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"seraphimstreets"},"content":" public String itemToString(Item a){","lastModifiedDate":"2023-08-26"},{"lineNumber":170,"author":{"gitId":"seraphimstreets"},"content":" return a.toString(dtf.getOutFormatter());","lastModifiedDate":"2023-08-26"},{"lineNumber":171,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":172,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-26"},{"lineNumber":175,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"seraphimstreets"},"content":"class DTFormat{","lastModifiedDate":"2023-08-26"},{"lineNumber":177,"author":{"gitId":"seraphimstreets"},"content":" private ArrayList\u003cDateTimeFormatter\u003e formatters;","lastModifiedDate":"2023-08-26"},{"lineNumber":178,"author":{"gitId":"seraphimstreets"},"content":" private DateTimeFormatter out_date_format;","lastModifiedDate":"2023-08-26"},{"lineNumber":179,"author":{"gitId":"seraphimstreets"},"content":" public DTFormat(){","lastModifiedDate":"2023-08-26"},{"lineNumber":180,"author":{"gitId":"seraphimstreets"},"content":" formatters \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":181,"author":{"gitId":"seraphimstreets"},"content":" DateTimeFormatter f1 \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2023-08-26"},{"lineNumber":182,"author":{"gitId":"seraphimstreets"},"content":" .appendPattern(\"yyyy-M-d[ H:m]\")","lastModifiedDate":"2023-08-26"},{"lineNumber":183,"author":{"gitId":"seraphimstreets"},"content":" .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)","lastModifiedDate":"2023-08-26"},{"lineNumber":184,"author":{"gitId":"seraphimstreets"},"content":" .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)","lastModifiedDate":"2023-08-26"},{"lineNumber":185,"author":{"gitId":"seraphimstreets"},"content":" .toFormatter();","lastModifiedDate":"2023-08-26"},{"lineNumber":186,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":187,"author":{"gitId":"seraphimstreets"},"content":" DateTimeFormatter f2 \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2023-08-26"},{"lineNumber":188,"author":{"gitId":"seraphimstreets"},"content":" .appendPattern(\"d/M/yyyy[ Hmm]\")","lastModifiedDate":"2023-08-26"},{"lineNumber":189,"author":{"gitId":"seraphimstreets"},"content":" .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)","lastModifiedDate":"2023-08-26"},{"lineNumber":190,"author":{"gitId":"seraphimstreets"},"content":" .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)","lastModifiedDate":"2023-08-26"},{"lineNumber":191,"author":{"gitId":"seraphimstreets"},"content":" .toFormatter();","lastModifiedDate":"2023-08-26"},{"lineNumber":192,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":193,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":194,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(f1);","lastModifiedDate":"2023-08-26"},{"lineNumber":195,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(f2);","lastModifiedDate":"2023-08-26"},{"lineNumber":196,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(DateTimeFormatter.ofPattern(\"yyyy-M-d\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":197,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(DateTimeFormatter.ofPattern(\"d/M/yyyy Hmm\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":198,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(DateTimeFormatter.ofPattern(\"d/M/yyyy H\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":199,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(DateTimeFormatter.ofPattern(\"d/M/yyyy\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":200,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":201,"author":{"gitId":"seraphimstreets"},"content":" out_date_format \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd H:mm\");","lastModifiedDate":"2023-08-26"},{"lineNumber":202,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":203,"author":{"gitId":"seraphimstreets"},"content":" public ArrayList\u003cDateTimeFormatter\u003e getFormatters(){","lastModifiedDate":"2023-08-26"},{"lineNumber":204,"author":{"gitId":"seraphimstreets"},"content":" return formatters;","lastModifiedDate":"2023-08-26"},{"lineNumber":205,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":206,"author":{"gitId":"seraphimstreets"},"content":" public void addReadFormat(String k){","lastModifiedDate":"2023-08-26"},{"lineNumber":207,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(DateTimeFormatter.ofPattern(k));","lastModifiedDate":"2023-08-26"},{"lineNumber":208,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":209,"author":{"gitId":"seraphimstreets"},"content":" public void removeReadFormat(int x){","lastModifiedDate":"2023-08-26"},{"lineNumber":210,"author":{"gitId":"seraphimstreets"},"content":" formatters.remove(x);","lastModifiedDate":"2023-08-26"},{"lineNumber":211,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":212,"author":{"gitId":"seraphimstreets"},"content":" public DateTimeFormatter getOutFormatter(){","lastModifiedDate":"2023-08-26"},{"lineNumber":213,"author":{"gitId":"seraphimstreets"},"content":" return out_date_format;","lastModifiedDate":"2023-08-26"},{"lineNumber":214,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":215,"author":{"gitId":"seraphimstreets"},"content":" public void setOutFormatter(String k){","lastModifiedDate":"2023-08-26"},{"lineNumber":216,"author":{"gitId":"seraphimstreets"},"content":" out_date_format \u003d DateTimeFormatter.ofPattern(k);","lastModifiedDate":"2023-08-26"},{"lineNumber":217,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":218,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":219,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-26"},{"lineNumber":220,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":221,"author":{"gitId":"seraphimstreets"},"content":"class TaskList{","lastModifiedDate":"2023-08-26"},{"lineNumber":222,"author":{"gitId":"seraphimstreets"},"content":" ArrayList\u003cItem\u003e items;","lastModifiedDate":"2023-08-26"},{"lineNumber":223,"author":{"gitId":"seraphimstreets"},"content":" private static TaskType parseTaskType(String x, String y, ArrayList\u003cDateTimeFormatter\u003e formatters) throws DukeException{","lastModifiedDate":"2023-08-26"},{"lineNumber":224,"author":{"gitId":"seraphimstreets"},"content":" return x.equals(\"T\") ? new Todo(y, formatters) : x.equals(\"D\") ? new Deadline(y, formatters) : new Event(y, formatters);","lastModifiedDate":"2023-08-26"},{"lineNumber":225,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":226,"author":{"gitId":"seraphimstreets"},"content":" public TaskList(){","lastModifiedDate":"2023-08-26"},{"lineNumber":227,"author":{"gitId":"seraphimstreets"},"content":" items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":228,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":229,"author":{"gitId":"seraphimstreets"},"content":" public TaskList(ArrayList\u003cString\u003e ss, DTFormat dtf) throws DukeException{","lastModifiedDate":"2023-08-26"},{"lineNumber":230,"author":{"gitId":"seraphimstreets"},"content":" items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":231,"author":{"gitId":"seraphimstreets"},"content":" for(String s : ss){","lastModifiedDate":"2023-08-26"},{"lineNumber":232,"author":{"gitId":"seraphimstreets"},"content":" String[] d \u003d s.split(\"\\\\s+\");","lastModifiedDate":"2023-08-26"},{"lineNumber":233,"author":{"gitId":"seraphimstreets"},"content":" String r \u003d (d.length \u003e 3 ? Utils.getString(d, 3, d.length) : null);","lastModifiedDate":"2023-08-26"},{"lineNumber":234,"author":{"gitId":"seraphimstreets"},"content":" TaskType k \u003d parseTaskType(d[2], r , dtf.getFormatters());","lastModifiedDate":"2023-08-26"},{"lineNumber":235,"author":{"gitId":"seraphimstreets"},"content":" items.add(new Item(d[0], Boolean.parseBoolean(d[1]), k, r));","lastModifiedDate":"2023-08-26"},{"lineNumber":236,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":237,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":238,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":239,"author":{"gitId":"seraphimstreets"},"content":" public int getSize(){","lastModifiedDate":"2023-08-26"},{"lineNumber":240,"author":{"gitId":"seraphimstreets"},"content":" return items.size();","lastModifiedDate":"2023-08-26"},{"lineNumber":241,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":242,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":243,"author":{"gitId":"seraphimstreets"},"content":" public Item getItem(int x){","lastModifiedDate":"2023-08-26"},{"lineNumber":244,"author":{"gitId":"seraphimstreets"},"content":" return items.get(x);","lastModifiedDate":"2023-08-26"},{"lineNumber":245,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":246,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":247,"author":{"gitId":"seraphimstreets"},"content":" public void addItem(Item y){","lastModifiedDate":"2023-08-26"},{"lineNumber":248,"author":{"gitId":"seraphimstreets"},"content":" items.add(y);","lastModifiedDate":"2023-08-26"},{"lineNumber":249,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":250,"author":{"gitId":"seraphimstreets"},"content":" public void removeItem(int x){","lastModifiedDate":"2023-08-26"},{"lineNumber":251,"author":{"gitId":"seraphimstreets"},"content":" items.remove(x);","lastModifiedDate":"2023-08-26"},{"lineNumber":252,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":253,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":254,"author":{"gitId":"seraphimstreets"},"content":" public ArrayList\u003cItem\u003e getItems(){","lastModifiedDate":"2023-08-26"},{"lineNumber":255,"author":{"gitId":"seraphimstreets"},"content":" return items;","lastModifiedDate":"2023-08-26"},{"lineNumber":256,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":257,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":258,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":259,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-26"},{"lineNumber":260,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":261,"author":{"gitId":"seraphimstreets"},"content":"class Storage{","lastModifiedDate":"2023-08-26"},{"lineNumber":262,"author":{"gitId":"seraphimstreets"},"content":" ArrayList\u003cString\u003e its;","lastModifiedDate":"2023-08-26"},{"lineNumber":263,"author":{"gitId":"seraphimstreets"},"content":" private String data_file;","lastModifiedDate":"2023-08-26"},{"lineNumber":264,"author":{"gitId":"seraphimstreets"},"content":" public Storage(){","lastModifiedDate":"2023-08-26"},{"lineNumber":265,"author":{"gitId":"seraphimstreets"},"content":" its \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":266,"author":{"gitId":"seraphimstreets"},"content":" data_file \u003d \"./src/main/data/data.txt\";","lastModifiedDate":"2023-08-26"},{"lineNumber":267,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":268,"author":{"gitId":"seraphimstreets"},"content":" public Storage(String data_file){","lastModifiedDate":"2023-08-26"},{"lineNumber":269,"author":{"gitId":"seraphimstreets"},"content":" File f \u003d new File(data_file);","lastModifiedDate":"2023-08-26"},{"lineNumber":270,"author":{"gitId":"seraphimstreets"},"content":" this.data_file \u003d data_file;","lastModifiedDate":"2023-08-26"},{"lineNumber":271,"author":{"gitId":"seraphimstreets"},"content":" its \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":272,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-25"},{"lineNumber":273,"author":{"gitId":"seraphimstreets"},"content":" Scanner reader \u003d new Scanner(f);","lastModifiedDate":"2023-08-25"},{"lineNumber":274,"author":{"gitId":"seraphimstreets"},"content":" while(reader.hasNextLine()){","lastModifiedDate":"2023-08-25"},{"lineNumber":275,"author":{"gitId":"seraphimstreets"},"content":" its.add(reader.nextLine());","lastModifiedDate":"2023-08-26"},{"lineNumber":276,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":277,"author":{"gitId":"seraphimstreets"},"content":" reader.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":278,"author":{"gitId":"seraphimstreets"},"content":" }catch(FileNotFoundException fe){","lastModifiedDate":"2023-08-25"},{"lineNumber":279,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(\"Data file not found, attempting to create one...\");","lastModifiedDate":"2023-08-25"},{"lineNumber":280,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-25"},{"lineNumber":281,"author":{"gitId":"seraphimstreets"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-25"},{"lineNumber":282,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(\"Data file successfully created.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":283,"author":{"gitId":"seraphimstreets"},"content":" }catch(IOException e){","lastModifiedDate":"2023-08-25"},{"lineNumber":284,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(\"Data storage could be created, any items added to the app will be deleted after program exit.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":285,"author":{"gitId":"seraphimstreets"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-25"},{"lineNumber":286,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":287,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":288,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":289,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":290,"author":{"gitId":"seraphimstreets"},"content":" public ArrayList\u003cString\u003e load(){","lastModifiedDate":"2023-08-26"},{"lineNumber":291,"author":{"gitId":"seraphimstreets"},"content":" return its;","lastModifiedDate":"2023-08-26"},{"lineNumber":292,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":293,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":294,"author":{"gitId":"seraphimstreets"},"content":" public void save( ArrayList\u003cItem\u003e items){","lastModifiedDate":"2023-08-26"},{"lineNumber":295,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-26"},{"lineNumber":296,"author":{"gitId":"seraphimstreets"},"content":" FileWriter fileWriter \u003d new FileWriter(data_file);","lastModifiedDate":"2023-08-26"},{"lineNumber":297,"author":{"gitId":"seraphimstreets"},"content":" for(int i\u003d0;i\u003citems.size();i++){","lastModifiedDate":"2023-08-26"},{"lineNumber":298,"author":{"gitId":"seraphimstreets"},"content":" fileWriter.write(items.get(i).saveStringRep() + \"\\n\");","lastModifiedDate":"2023-08-26"},{"lineNumber":299,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":300,"author":{"gitId":"seraphimstreets"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":301,"author":{"gitId":"seraphimstreets"},"content":" }catch(IOException e){","lastModifiedDate":"2023-08-26"},{"lineNumber":302,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(\"Something went wrong while saving your list items.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":303,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":304,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":305,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":306,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":307,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":308,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-26"},{"lineNumber":309,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":310,"author":{"gitId":"seraphimstreets"},"content":"class Parser{","lastModifiedDate":"2023-08-26"},{"lineNumber":311,"author":{"gitId":"seraphimstreets"},"content":" DTFormat dtf;","lastModifiedDate":"2023-08-26"},{"lineNumber":312,"author":{"gitId":"seraphimstreets"},"content":" Ui ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":313,"author":{"gitId":"seraphimstreets"},"content":" public Parser(DTFormat dtf, Ui ui){","lastModifiedDate":"2023-08-26"},{"lineNumber":314,"author":{"gitId":"seraphimstreets"},"content":" this.dtf \u003d dtf;","lastModifiedDate":"2023-08-26"},{"lineNumber":315,"author":{"gitId":"seraphimstreets"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":316,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":317,"author":{"gitId":"seraphimstreets"},"content":" public boolean parse(String userInput, TaskList tl) throws DukeException{","lastModifiedDate":"2023-08-26"},{"lineNumber":318,"author":{"gitId":"seraphimstreets"},"content":" String[] splitStr \u003d userInput.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":319,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":320,"author":{"gitId":"seraphimstreets"},"content":" if(userInput.equals(\"bye\")) return false;","lastModifiedDate":"2023-08-26"},{"lineNumber":321,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":322,"author":{"gitId":"seraphimstreets"},"content":" if(userInput.equals(\"list\")){","lastModifiedDate":"2023-08-23"},{"lineNumber":323,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":324,"author":{"gitId":"seraphimstreets"},"content":" ui.printItems(tl.getItems());","lastModifiedDate":"2023-08-26"},{"lineNumber":325,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":326,"author":{"gitId":"seraphimstreets"},"content":" }else if(splitStr[0].equals(\"mark\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":327,"author":{"gitId":"seraphimstreets"},"content":" if(splitStr.length !\u003d 2) throw new DukeException(\"Invalid format detected for \u0027mark\u0027 command. Enter mark [item_no]\");","lastModifiedDate":"2023-08-25"},{"lineNumber":328,"author":{"gitId":"seraphimstreets"},"content":" int x \u003d Integer.parseInt(splitStr[1])-1;","lastModifiedDate":"2023-08-23"},{"lineNumber":329,"author":{"gitId":"seraphimstreets"},"content":" if(x \u003c 0 || x+1 \u003e tl.getSize()) throw new DukeException(\"Index is out of list range.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":330,"author":{"gitId":"seraphimstreets"},"content":" tl.getItem(x).setCompleted(true);","lastModifiedDate":"2023-08-26"},{"lineNumber":331,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":332,"author":{"gitId":"seraphimstreets"},"content":" ui.print(ui.itemToString(tl.getItem(x)));","lastModifiedDate":"2023-08-26"},{"lineNumber":333,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":334,"author":{"gitId":"seraphimstreets"},"content":" }else if(splitStr[0].equals(\"unmark\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":335,"author":{"gitId":"seraphimstreets"},"content":" if(splitStr.length !\u003d 2) throw new DukeException(\"Invalid format detected for \u0027unmark\u0027 command. Enter unmark [item_no]\");","lastModifiedDate":"2023-08-25"},{"lineNumber":336,"author":{"gitId":"seraphimstreets"},"content":" int x \u003d Integer.parseInt(splitStr[1])-1;","lastModifiedDate":"2023-08-23"},{"lineNumber":337,"author":{"gitId":"seraphimstreets"},"content":" if(x \u003c 0 || x+1 \u003e tl.getSize()) throw new DukeException(\"Index is out of list range.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":338,"author":{"gitId":"seraphimstreets"},"content":" tl.getItem(x).setCompleted(false);","lastModifiedDate":"2023-08-26"},{"lineNumber":339,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":340,"author":{"gitId":"seraphimstreets"},"content":" ui.print(ui.itemToString(tl.getItem(x)));","lastModifiedDate":"2023-08-26"},{"lineNumber":341,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":342,"author":{"gitId":"seraphimstreets"},"content":" }else if(splitStr[0].equals(\"remove\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":343,"author":{"gitId":"seraphimstreets"},"content":" if(splitStr.length !\u003d 2) throw new DukeException(\"Invalid format detected for \u0027remove\u0027 command. Enter remove [item_no]\");","lastModifiedDate":"2023-08-25"},{"lineNumber":344,"author":{"gitId":"seraphimstreets"},"content":" int x \u003d Integer.parseInt(splitStr[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":345,"author":{"gitId":"seraphimstreets"},"content":" if(x \u003c 0 || x+1 \u003e tl.getSize()) throw new DukeException(\"Index is out of list range.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":346,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Ok, the following item was removed:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":347,"author":{"gitId":"seraphimstreets"},"content":" ui.print(ui.itemToString(tl.getItem(x)));","lastModifiedDate":"2023-08-26"},{"lineNumber":348,"author":{"gitId":"seraphimstreets"},"content":" tl.removeItem(x);","lastModifiedDate":"2023-08-26"},{"lineNumber":349,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":350,"author":{"gitId":"seraphimstreets"},"content":" } else if(splitStr[0].equals(\"todo\")){","lastModifiedDate":"2023-08-23"},{"lineNumber":351,"author":{"gitId":"seraphimstreets"},"content":" if(splitStr.length \u003d\u003d 1){","lastModifiedDate":"2023-08-23"},{"lineNumber":352,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":353,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":354,"author":{"gitId":"seraphimstreets"},"content":" tl.addItem(new Item(Utils.getString(splitStr, 1, splitStr.length), false,","lastModifiedDate":"2023-08-26"},{"lineNumber":355,"author":{"gitId":"seraphimstreets"},"content":" new Todo(null, dtf.getFormatters()), null));","lastModifiedDate":"2023-08-26"},{"lineNumber":356,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Got it, I\u0027ve added this task:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":357,"author":{"gitId":"seraphimstreets"},"content":" ui.print(ui.itemToString(tl.getItem(tl.getSize()-1)));","lastModifiedDate":"2023-08-26"},{"lineNumber":358,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Now you have \" + tl.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":359,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":360,"author":{"gitId":"seraphimstreets"},"content":" }else if(splitStr[0].equals(\"deadline\")){","lastModifiedDate":"2023-08-23"},{"lineNumber":361,"author":{"gitId":"seraphimstreets"},"content":" boolean x \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":362,"author":{"gitId":"seraphimstreets"},"content":" for(int i\u003d1;i\u003csplitStr.length;i++){","lastModifiedDate":"2023-08-23"},{"lineNumber":363,"author":{"gitId":"seraphimstreets"},"content":" if(splitStr[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":364,"author":{"gitId":"seraphimstreets"},"content":" String dl \u003d Utils.getString(splitStr, i, splitStr.length);","lastModifiedDate":"2023-08-26"},{"lineNumber":365,"author":{"gitId":"seraphimstreets"},"content":" TaskType tt \u003d new Deadline(dl, dtf.getFormatters());","lastModifiedDate":"2023-08-26"},{"lineNumber":366,"author":{"gitId":"seraphimstreets"},"content":" String task \u003d Utils.getString(splitStr, 1, i);","lastModifiedDate":"2023-08-26"},{"lineNumber":367,"author":{"gitId":"seraphimstreets"},"content":" if(task.isEmpty()) throw new DukeException(\"Description of task cannot be empty.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":368,"author":{"gitId":"seraphimstreets"},"content":" if(dl.isEmpty()) throw new DukeException(\"Deadline cannot be empty.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":369,"author":{"gitId":"seraphimstreets"},"content":" tl.addItem(new Item(task, false, tt, dl));","lastModifiedDate":"2023-08-26"},{"lineNumber":370,"author":{"gitId":"seraphimstreets"},"content":" x \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":371,"author":{"gitId":"seraphimstreets"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":372,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":373,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":374,"author":{"gitId":"seraphimstreets"},"content":" if(!x){","lastModifiedDate":"2023-08-24"},{"lineNumber":375,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"/by keyword is necessary and not detected. Use /by to set a deadline.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":376,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":377,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Got it, I\u0027ve added this task:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":378,"author":{"gitId":"seraphimstreets"},"content":" ui.print(ui.itemToString(tl.getItem(tl.getSize()-1)));","lastModifiedDate":"2023-08-26"},{"lineNumber":379,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Now you have \" + tl.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":380,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":381,"author":{"gitId":"seraphimstreets"},"content":" }else if(splitStr[0].equals(\"event\")){","lastModifiedDate":"2023-08-23"},{"lineNumber":382,"author":{"gitId":"seraphimstreets"},"content":" boolean x \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":383,"author":{"gitId":"seraphimstreets"},"content":" for(int i\u003d1;i\u003csplitStr.length;i++){","lastModifiedDate":"2023-08-23"},{"lineNumber":384,"author":{"gitId":"seraphimstreets"},"content":" if(splitStr[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":385,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":386,"author":{"gitId":"seraphimstreets"},"content":" String dl \u003d Utils.getString(splitStr, i, splitStr.length);","lastModifiedDate":"2023-08-26"},{"lineNumber":387,"author":{"gitId":"seraphimstreets"},"content":" TaskType tt \u003d new Event(dl, dtf.getFormatters());","lastModifiedDate":"2023-08-26"},{"lineNumber":388,"author":{"gitId":"seraphimstreets"},"content":" String task \u003d Utils.getString(splitStr, 1, i);","lastModifiedDate":"2023-08-26"},{"lineNumber":389,"author":{"gitId":"seraphimstreets"},"content":" if(task.isEmpty()) throw new DukeException(\"Description of task cannot be empty.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":390,"author":{"gitId":"seraphimstreets"},"content":" if(dl.isEmpty()) throw new DukeException(\"Event dates cannot be empty.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":391,"author":{"gitId":"seraphimstreets"},"content":" tl.addItem(new Item(task, false, tt, dl));","lastModifiedDate":"2023-08-26"},{"lineNumber":392,"author":{"gitId":"seraphimstreets"},"content":" x \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":393,"author":{"gitId":"seraphimstreets"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":394,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":395,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":396,"author":{"gitId":"seraphimstreets"},"content":" if(!x){","lastModifiedDate":"2023-08-24"},{"lineNumber":397,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"/by keyword is necessary and not detected. Use /by to set a deadline.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":398,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":399,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Got it, I\u0027ve added this task:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":400,"author":{"gitId":"seraphimstreets"},"content":" ui.print(ui.itemToString(tl.getItem(tl.getSize()-1)));","lastModifiedDate":"2023-08-26"},{"lineNumber":401,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Now you have \" + tl.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":402,"author":{"gitId":"seraphimstreets"},"content":" }else{","lastModifiedDate":"2023-08-23"},{"lineNumber":403,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Sorry, I don\u0027t understand that command\");","lastModifiedDate":"2023-08-25"},{"lineNumber":404,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":405,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":406,"author":{"gitId":"seraphimstreets"},"content":" return true;","lastModifiedDate":"2023-08-26"},{"lineNumber":407,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":408,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":409,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":410,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":411,"author":{"gitId":"seraphimstreets"},"content":"public class Duke {","lastModifiedDate":"2023-08-26"},{"lineNumber":412,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":413,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":414,"author":{"gitId":"seraphimstreets"},"content":" private Storage storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":415,"author":{"gitId":"seraphimstreets"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-26"},{"lineNumber":416,"author":{"gitId":"seraphimstreets"},"content":" private Ui ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":417,"author":{"gitId":"seraphimstreets"},"content":" private Parser parser;","lastModifiedDate":"2023-08-26"},{"lineNumber":418,"author":{"gitId":"seraphimstreets"},"content":" private DTFormat dtf;","lastModifiedDate":"2023-08-26"},{"lineNumber":419,"author":{"gitId":"seraphimstreets"},"content":" static Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-26"},{"lineNumber":420,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":421,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":422,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":423,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":424,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":425,"author":{"gitId":"seraphimstreets"},"content":" public void run(){","lastModifiedDate":"2023-08-26"},{"lineNumber":426,"author":{"gitId":"seraphimstreets"},"content":" ui.printIntro();","lastModifiedDate":"2023-08-26"},{"lineNumber":427,"author":{"gitId":"seraphimstreets"},"content":" while(true){","lastModifiedDate":"2023-08-26"},{"lineNumber":428,"author":{"gitId":"seraphimstreets"},"content":" String userInput \u003d sc.nextLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":429,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-26"},{"lineNumber":430,"author":{"gitId":"seraphimstreets"},"content":" if(!parser.parse(userInput, tasks)) break;","lastModifiedDate":"2023-08-26"},{"lineNumber":431,"author":{"gitId":"seraphimstreets"},"content":" }catch(DukeException e){","lastModifiedDate":"2023-08-26"},{"lineNumber":432,"author":{"gitId":"seraphimstreets"},"content":" ui.print(e.toString());","lastModifiedDate":"2023-08-26"},{"lineNumber":433,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":434,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":435,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":436,"author":{"gitId":"seraphimstreets"},"content":" storage.save(tasks.getItems());","lastModifiedDate":"2023-08-26"},{"lineNumber":437,"author":{"gitId":"seraphimstreets"},"content":" ui.printExit();","lastModifiedDate":"2023-08-26"},{"lineNumber":438,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":439,"author":{"gitId":"seraphimstreets"},"content":" public Duke(String filepath){","lastModifiedDate":"2023-08-26"},{"lineNumber":440,"author":{"gitId":"seraphimstreets"},"content":" dtf \u003d new DTFormat();","lastModifiedDate":"2023-08-26"},{"lineNumber":441,"author":{"gitId":"seraphimstreets"},"content":" ui \u003d new Ui(dtf);","lastModifiedDate":"2023-08-26"},{"lineNumber":442,"author":{"gitId":"seraphimstreets"},"content":" storage \u003d new Storage(filepath);","lastModifiedDate":"2023-08-26"},{"lineNumber":443,"author":{"gitId":"seraphimstreets"},"content":" parser \u003d new Parser(dtf, ui);","lastModifiedDate":"2023-08-26"},{"lineNumber":444,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-25"},{"lineNumber":445,"author":{"gitId":"seraphimstreets"},"content":" tasks \u003d new TaskList(storage.load(), dtf);","lastModifiedDate":"2023-08-26"},{"lineNumber":446,"author":{"gitId":"seraphimstreets"},"content":" }catch(DukeException e){","lastModifiedDate":"2023-08-26"},{"lineNumber":447,"author":{"gitId":"seraphimstreets"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-26"},{"lineNumber":448,"author":{"gitId":"seraphimstreets"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-26"},{"lineNumber":449,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":450,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":451,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":452,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":453,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":454,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":455,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":456,"author":{"gitId":"seraphimstreets"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-26"},{"lineNumber":457,"author":{"gitId":"seraphimstreets"},"content":" new Duke(\"./data/data.txt\").run();","lastModifiedDate":"2023-08-27"},{"lineNumber":458,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":459,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":460,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"seraphimstreets":458,"-":2}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seraphimstreets"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"seraphimstreets"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"seraphimstreets"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"seraphimstreets"},"content":"public class DukeTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"seraphimstreets"},"content":" DTFormat dtf \u003d new DTFormat();","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"seraphimstreets"},"content":" Ui ui \u003d new Ui(dtf);","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"seraphimstreets"},"content":" Parser p \u003d new Parser(dtf, ui);","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"seraphimstreets"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"seraphimstreets"},"content":" public void test1(){","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"seraphimstreets"},"content":" Item a;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"seraphimstreets"},"content":" a \u003d new Item(\"help\", true,","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"seraphimstreets"},"content":" new Deadline(\"/by 8/8/2020 1630\",dtf.getFormatters()), \"/by 8/8/2020 1630\" );","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(a.toString(dtf.getOutFormatter()));","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"seraphimstreets"},"content":" assert(a.toString(dtf.getOutFormatter()).equals(\"[D][X] help (by: 2020-08-08 16:30)\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"seraphimstreets"},"content":" }catch(DukeException e){","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(\"Error occurred while converting item to string.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"seraphimstreets"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"seraphimstreets"},"content":" public void test2(){","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"seraphimstreets"},"content":" TaskList tl \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"seraphimstreets"},"content":" Item a \u003d new Item(\"help\", true,","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"seraphimstreets"},"content":" new Deadline(\"/by 8/8/2020 1630\",dtf.getFormatters()), \"/by 8/8/2020 1630\" );","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"seraphimstreets"},"content":" tl.addItem(a);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"seraphimstreets"},"content":" tl.addItem(a);","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"seraphimstreets"},"content":" tl.addItem(a);","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"seraphimstreets"},"content":" assertEquals(tl.getSize(), 3);","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"seraphimstreets"},"content":" }catch(DukeException e){","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(\"Error occurred while adding items to Tasklist.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"seraphimstreets":43}},{"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":"seraphimstreets"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\duke\\*.java","lastModifiedDate":"2023-08-27"},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"seraphimstreets":1,"-":20}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"seraphimstreets"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"seraphimstreets"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"seraphimstreets":2,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seraphimstreets"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"seraphimstreets"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"seraphimstreets"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"seraphimstreets"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"seraphimstreets"},"content":"import java.io.File;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"seraphimstreets"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"seraphimstreets"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"seraphimstreets"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"seraphimstreets"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"seraphimstreets"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"seraphimstreets"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"seraphimstreets"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"seraphimstreets"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"seraphimstreets"},"content":" * Contains utility functions to be used in several contexts.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"seraphimstreets"},"content":"class Utils {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seraphimstreets"},"content":" * Takes an array of strings, a start and end index. Returns","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seraphimstreets"},"content":" * a string with all tokens between start and end (not inclusive)","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seraphimstreets"},"content":" * index separated by a space.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"seraphimstreets"},"content":" * @param a Array of strings","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"seraphimstreets"},"content":" * @param start start index","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"seraphimstreets"},"content":" * @param end end index","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"seraphimstreets"},"content":" * @returns String with all tokens between start and end (not inclusive) index separated by space","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"seraphimstreets"},"content":" public static String splitStringBySpaces(String[] a, int start, int end){","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"seraphimstreets"},"content":" String res \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seraphimstreets"},"content":" for(int i \u003d start; i \u003c end; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seraphimstreets"},"content":" res +\u003d a[i];","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seraphimstreets"},"content":" if (i !\u003d end-1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seraphimstreets"},"content":" res +\u003d \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seraphimstreets"},"content":" return res;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"seraphimstreets"},"content":" * Returns the number of words in a string, separated by spaces.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"seraphimstreets"},"content":" * @param s String whose words are to be counted","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"seraphimstreets"},"content":" * @returns Number of words in the string","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"seraphimstreets"},"content":" public static int getWordCount(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"seraphimstreets"},"content":" return s.split(\"\\\\s+\").length;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"seraphimstreets"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"seraphimstreets"},"content":" * Represents a type of task to be done.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"seraphimstreets"},"content":"class TaskType {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"seraphimstreets"},"content":" private String task;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"seraphimstreets"},"content":" private boolean isCompleted;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"seraphimstreets"},"content":" private String dateString;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"seraphimstreets"},"content":" * Constructor for the TaskType class.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"seraphimstreets"},"content":" * @param task Description of task","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"seraphimstreets"},"content":" * @param isCompleted Whether of not the task has been completed","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"seraphimstreets"},"content":" * @param dateString String containing only datetime-related information pf the task, if any.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"seraphimstreets"},"content":" public TaskType(String task, boolean isCompleted, String dateString) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"seraphimstreets"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"seraphimstreets"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"seraphimstreets"},"content":" this.dateString \u003d dateString;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"seraphimstreets"},"content":" * Returns the boolean value of the isCompleted field.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"seraphimstreets"},"content":" public boolean getIsCompleted() {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"seraphimstreets"},"content":" return isCompleted;","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"seraphimstreets"},"content":" * Sets the isCompleted field to false or true.","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"seraphimstreets"},"content":" * @param x boolean to set the isCompleted field to","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"seraphimstreets"},"content":" public void setIsCompleted(boolean x) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"seraphimstreets"},"content":" isCompleted \u003d x;","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"seraphimstreets"},"content":" * Produces the string representation of a TaskType to be saved in external storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"seraphimstreets"},"content":" public String saveStringRep() {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"seraphimstreets"},"content":" return Utils.getWordCount(this.task) + \" \" + this.task + \" \" + String.valueOf(isCompleted) + \" \" + this.toShortString() +","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"seraphimstreets"},"content":" \" \" + (dateString \u003d\u003d null ? \"\" : dateString);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"seraphimstreets"},"content":" * Produces a one-letter representation of the TaskType to be shown in lists.","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"seraphimstreets"},"content":" * @returns one-letter representation of the TaskType","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"seraphimstreets"},"content":" public String toShortString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"seraphimstreets"},"content":" return \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"seraphimstreets"},"content":" };","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"seraphimstreets"},"content":" * Returns the task description.","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"seraphimstreets"},"content":" * @returns task description as string","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"seraphimstreets"},"content":" public String getTaskDesc() {","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"seraphimstreets"},"content":" return task;","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"seraphimstreets"},"content":" };","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"seraphimstreets"},"content":" * Returns a string of all datetime-related information, suitable to be shown in lists.","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"seraphimstreets"},"content":" * @returns String of datetime-related information","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"seraphimstreets"},"content":" public String getFormattedDatetime(DateTimeFormatter formatter) {","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"seraphimstreets"},"content":" return \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"seraphimstreets"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"seraphimstreets"},"content":" * Represents a task of type Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"seraphimstreets"},"content":"class Todo extends TaskType {","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":142,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"seraphimstreets"},"content":" * Constructor for the Todo class.","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"seraphimstreets"},"content":" * @param task Description of task","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"seraphimstreets"},"content":" * @param isCompleted Whether of not the task has been completed","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"seraphimstreets"},"content":" public Todo(String task, boolean isCompleted) {","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"seraphimstreets"},"content":" super(task, isCompleted, \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":152,"author":{"gitId":"seraphimstreets"},"content":" public String toShortString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"seraphimstreets"},"content":" return \"T\";","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"seraphimstreets"},"content":" public String getFormattedDatetime(DateTimeFormatter formatter) {","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"seraphimstreets"},"content":" return \"\";","lastModifiedDate":"2023-08-26"},{"lineNumber":157,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":158,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"seraphimstreets"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"seraphimstreets"},"content":" * Represents a task of type Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"seraphimstreets"},"content":"class Deadline extends TaskType {","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"seraphimstreets"},"content":" private LocalDateTime dl;","lastModifiedDate":"2023-08-26"},{"lineNumber":166,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"seraphimstreets"},"content":" * Constructor for the Deadline class.","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"seraphimstreets"},"content":" * @param task Description of task","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"seraphimstreets"},"content":" * @param isCompleted Whether of not the task has been completed","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"seraphimstreets"},"content":" * @param dateString String of datetime related information","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"seraphimstreets"},"content":" * @param formatters List of Datetime formatters used to convert the dateString into a LocalDateTime","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"seraphimstreets"},"content":" * @throws DukeException when the /by description is empty or cannot be interpreted by given formatters.","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"seraphimstreets"},"content":" public Deadline(String task, boolean isCompleted, String dateString, ArrayList\u003cDateTimeFormatter\u003e formatters) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"seraphimstreets"},"content":" super(task, isCompleted, dateString);","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"seraphimstreets"},"content":" String[] s \u003d dateString.split(\"\\\\s+\");","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"seraphimstreets"},"content":" String a \u003d Utils.splitStringBySpaces(s, 1, s.length);","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"seraphimstreets"},"content":" if (a.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"/by description cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"seraphimstreets"},"content":" for(DateTimeFormatter fr : formatters) {","lastModifiedDate":"2023-08-26"},{"lineNumber":185,"author":{"gitId":"seraphimstreets"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":186,"author":{"gitId":"seraphimstreets"},"content":" this.dl \u003d LocalDateTime.parse(a, fr);","lastModifiedDate":"2023-08-26"},{"lineNumber":187,"author":{"gitId":"seraphimstreets"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":188,"author":{"gitId":"seraphimstreets"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"seraphimstreets"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":192,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":193,"author":{"gitId":"seraphimstreets"},"content":" if(dl \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"/by date format count not be recognized\");","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":197,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":198,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"seraphimstreets"},"content":" public String toShortString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"seraphimstreets"},"content":" return \"D\";","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"seraphimstreets"},"content":" public String getFormattedDatetime(DateTimeFormatter formatter) {","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"seraphimstreets"},"content":" return \"(by: \" + dl.format(formatter) + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":204,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":205,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"seraphimstreets"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"seraphimstreets"},"content":" * Represents a task of type Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"seraphimstreets"},"content":"class Event extends TaskType {","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"seraphimstreets"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-26"},{"lineNumber":212,"author":{"gitId":"seraphimstreets"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-26"},{"lineNumber":213,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"seraphimstreets"},"content":" * Constructor for the Event class.","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"seraphimstreets"},"content":" * @param task Description of task","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"seraphimstreets"},"content":" * @param isCompleted Whether of not the task has been completed","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"seraphimstreets"},"content":" * @param dateString String of datetime related information","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"seraphimstreets"},"content":" * @param formatters List of Datetime formatters used to convert the dateString into a LocalDateTime","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"seraphimstreets"},"content":" * @throws DukeException when either the /to or /from description is empty or cannot be interpreted by given formatters","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"seraphimstreets"},"content":" public Event(String task, boolean isCompleted, String dateString, ArrayList\u003cDateTimeFormatter\u003e formatters) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"seraphimstreets"},"content":" super(task, isCompleted, dateString);","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"seraphimstreets"},"content":" String[] s \u003d dateString.split(\"\\\\s+\");","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"seraphimstreets"},"content":" boolean wasToDetected \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"seraphimstreets"},"content":" for(int i \u003d 1; i \u003c s.length; i++){","lastModifiedDate":"2023-08-26"},{"lineNumber":228,"author":{"gitId":"seraphimstreets"},"content":" if(s[i].equals(\"/to\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"seraphimstreets"},"content":" String a \u003d Utils.splitStringBySpaces(s, 1, i);","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"seraphimstreets"},"content":" String b \u003d Utils.splitStringBySpaces(s, i+1, s.length);","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"seraphimstreets"},"content":" if(a.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"/from description cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"seraphimstreets"},"content":" if(b.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"/to description cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"seraphimstreets"},"content":" for(DateTimeFormatter fr : formatters) {","lastModifiedDate":"2023-08-26"},{"lineNumber":238,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-26"},{"lineNumber":239,"author":{"gitId":"seraphimstreets"},"content":" this.from \u003d LocalDateTime.parse(a, fr);","lastModifiedDate":"2023-08-26"},{"lineNumber":240,"author":{"gitId":"seraphimstreets"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":241,"author":{"gitId":"seraphimstreets"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"seraphimstreets"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":245,"author":{"gitId":"seraphimstreets"},"content":" for (DateTimeFormatter fr : formatters) {","lastModifiedDate":"2023-08-26"},{"lineNumber":246,"author":{"gitId":"seraphimstreets"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":247,"author":{"gitId":"seraphimstreets"},"content":" this.to \u003d LocalDateTime.parse(b, fr);","lastModifiedDate":"2023-08-26"},{"lineNumber":248,"author":{"gitId":"seraphimstreets"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":249,"author":{"gitId":"seraphimstreets"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"seraphimstreets"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":253,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":254,"author":{"gitId":"seraphimstreets"},"content":" wasToDetected \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":256,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":257,"author":{"gitId":"seraphimstreets"},"content":" if (from \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"/from date format could not be recognized\");","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":260,"author":{"gitId":"seraphimstreets"},"content":" if (to \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"/to date format could not be recognized\");","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":263,"author":{"gitId":"seraphimstreets"},"content":" if (!wasToDetected) {","lastModifiedDate":"2023-09-01"},{"lineNumber":264,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"keyword /to was not detected.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"seraphimstreets"},"content":" public String toShortString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"seraphimstreets"},"content":" return \"E\";","lastModifiedDate":"2023-08-24"},{"lineNumber":270,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":271,"author":{"gitId":"seraphimstreets"},"content":" public String getFormattedDatetime(DateTimeFormatter formatter){","lastModifiedDate":"2023-09-01"},{"lineNumber":272,"author":{"gitId":"seraphimstreets"},"content":" return \"(from: \" + from.format(formatter) + \" to: \" + to.format(formatter) + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":273,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":274,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":275,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":276,"author":{"gitId":"seraphimstreets"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"seraphimstreets"},"content":" * A checked exception class, personalized to fit the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":278,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":279,"author":{"gitId":"seraphimstreets"},"content":"class DukeException extends Exception {","lastModifiedDate":"2023-08-25"},{"lineNumber":280,"author":{"gitId":"seraphimstreets"},"content":" public DukeException(String a){","lastModifiedDate":"2023-08-25"},{"lineNumber":281,"author":{"gitId":"seraphimstreets"},"content":" super(a);","lastModifiedDate":"2023-08-25"},{"lineNumber":282,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":283,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-25"},{"lineNumber":284,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":286,"author":{"gitId":"seraphimstreets"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":287,"author":{"gitId":"seraphimstreets"},"content":" * Manages displaying of information to the end-user.","lastModifiedDate":"2023-09-01"},{"lineNumber":288,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":289,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":290,"author":{"gitId":"seraphimstreets"},"content":"class Ui{","lastModifiedDate":"2023-08-26"},{"lineNumber":291,"author":{"gitId":"seraphimstreets"},"content":" private DTFormat dtf;","lastModifiedDate":"2023-08-26"},{"lineNumber":292,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":293,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":294,"author":{"gitId":"seraphimstreets"},"content":" * Constructor for the Ui class.","lastModifiedDate":"2023-09-01"},{"lineNumber":295,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":296,"author":{"gitId":"seraphimstreets"},"content":" * @param dtf DateTimeFormatter to be used in formatting strings to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":297,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":298,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":299,"author":{"gitId":"seraphimstreets"},"content":" public Ui(DTFormat dtf) {","lastModifiedDate":"2023-08-26"},{"lineNumber":300,"author":{"gitId":"seraphimstreets"},"content":" this.dtf \u003d dtf;","lastModifiedDate":"2023-08-26"},{"lineNumber":301,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":302,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":303,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":304,"author":{"gitId":"seraphimstreets"},"content":" * Prints a message to the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":305,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":306,"author":{"gitId":"seraphimstreets"},"content":" * @param msg string to be printed","lastModifiedDate":"2023-09-01"},{"lineNumber":307,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":308,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":309,"author":{"gitId":"seraphimstreets"},"content":" public void print(String msg) {","lastModifiedDate":"2023-08-26"},{"lineNumber":310,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-26"},{"lineNumber":311,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":312,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":313,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":314,"author":{"gitId":"seraphimstreets"},"content":" * Formats the information of a TaskType into a string to be shown in the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":315,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":316,"author":{"gitId":"seraphimstreets"},"content":" * @param task TaskType to be formatted.","lastModifiedDate":"2023-09-01"},{"lineNumber":317,"author":{"gitId":"seraphimstreets"},"content":" * @param fmt DateTimeFormatter to be used in producing the output","lastModifiedDate":"2023-09-01"},{"lineNumber":318,"author":{"gitId":"seraphimstreets"},"content":" * @returns String representation of the TaskType to be shown in the UI","lastModifiedDate":"2023-09-01"},{"lineNumber":319,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":320,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":321,"author":{"gitId":"seraphimstreets"},"content":" public String formatTaskToPrint(TaskType task, DateTimeFormatter fmt) {","lastModifiedDate":"2023-09-01"},{"lineNumber":322,"author":{"gitId":"seraphimstreets"},"content":" String completedBox \u003d \"[\" + (task.getIsCompleted() ? \"X\" : \" \") + \"] \";","lastModifiedDate":"2023-09-01"},{"lineNumber":323,"author":{"gitId":"seraphimstreets"},"content":" String taskTypeBox \u003d \"[\" + task.toShortString() + \"]\";","lastModifiedDate":"2023-09-01"},{"lineNumber":324,"author":{"gitId":"seraphimstreets"},"content":" String formattedDatetime \u003d task.getFormattedDatetime(fmt);","lastModifiedDate":"2023-09-01"},{"lineNumber":325,"author":{"gitId":"seraphimstreets"},"content":" return taskTypeBox + completedBox + \" \" + task.getTaskDesc() + \" \" + formattedDatetime;","lastModifiedDate":"2023-09-01"},{"lineNumber":326,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":327,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":328,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":329,"author":{"gitId":"seraphimstreets"},"content":" * Prints all TaskTypes in a list to the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":330,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":331,"author":{"gitId":"seraphimstreets"},"content":" * @param items items to be printed","lastModifiedDate":"2023-09-01"},{"lineNumber":332,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":333,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":334,"author":{"gitId":"seraphimstreets"},"content":" public void printItems(ArrayList\u003cTaskType\u003e items) {","lastModifiedDate":"2023-09-01"},{"lineNumber":335,"author":{"gitId":"seraphimstreets"},"content":" for(int i \u003d 0; i \u003c items.size(); i++){","lastModifiedDate":"2023-08-26"},{"lineNumber":336,"author":{"gitId":"seraphimstreets"},"content":" print((i + 1) + \".\" + formatTaskToPrint(items.get(i), dtf.getOutFormatter()));","lastModifiedDate":"2023-09-01"},{"lineNumber":337,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":338,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":339,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":340,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":341,"author":{"gitId":"seraphimstreets"},"content":" * Prints the introductory message to the end-user.","lastModifiedDate":"2023-09-01"},{"lineNumber":342,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":343,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":344,"author":{"gitId":"seraphimstreets"},"content":" public void printIntro() {","lastModifiedDate":"2023-08-26"},{"lineNumber":345,"author":{"gitId":"seraphimstreets"},"content":" print(\"Hello I\u0027m Robot!\");","lastModifiedDate":"2023-08-26"},{"lineNumber":346,"author":{"gitId":"seraphimstreets"},"content":" print(\"What can I do for you?\");","lastModifiedDate":"2023-08-26"},{"lineNumber":347,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":348,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":349,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":350,"author":{"gitId":"seraphimstreets"},"content":" * Prints the final message to the end-user when they exit the program.","lastModifiedDate":"2023-09-01"},{"lineNumber":351,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":352,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":353,"author":{"gitId":"seraphimstreets"},"content":" public void printExit() {","lastModifiedDate":"2023-08-26"},{"lineNumber":354,"author":{"gitId":"seraphimstreets"},"content":" print(\"Bye! Hope to see you again soon!\");","lastModifiedDate":"2023-08-26"},{"lineNumber":355,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":356,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":357,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":358,"author":{"gitId":"seraphimstreets"},"content":" * Displays a loading error to the end-user when data cannot be loaded for some reason.","lastModifiedDate":"2023-09-01"},{"lineNumber":359,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":360,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":361,"author":{"gitId":"seraphimstreets"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-26"},{"lineNumber":362,"author":{"gitId":"seraphimstreets"},"content":" print(\"An error occurred while loading data into your list, starting with a blank list...\");","lastModifiedDate":"2023-08-26"},{"lineNumber":363,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":364,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":365,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-26"},{"lineNumber":366,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":367,"author":{"gitId":"seraphimstreets"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":368,"author":{"gitId":"seraphimstreets"},"content":" * Manages DateTimeFormatters to be used in the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":369,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":370,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":371,"author":{"gitId":"seraphimstreets"},"content":"class DTFormat{","lastModifiedDate":"2023-08-26"},{"lineNumber":372,"author":{"gitId":"seraphimstreets"},"content":" private ArrayList\u003cDateTimeFormatter\u003e formatters;","lastModifiedDate":"2023-08-26"},{"lineNumber":373,"author":{"gitId":"seraphimstreets"},"content":" private DateTimeFormatter out_date_format;","lastModifiedDate":"2023-08-26"},{"lineNumber":374,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":375,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":376,"author":{"gitId":"seraphimstreets"},"content":" * Constructor for the DTFormat class, creating severaL default DateTimeFormatters to","lastModifiedDate":"2023-09-01"},{"lineNumber":377,"author":{"gitId":"seraphimstreets"},"content":" * be used.","lastModifiedDate":"2023-09-01"},{"lineNumber":378,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":379,"author":{"gitId":"seraphimstreets"},"content":" public DTFormat() {","lastModifiedDate":"2023-08-26"},{"lineNumber":380,"author":{"gitId":"seraphimstreets"},"content":" formatters \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":381,"author":{"gitId":"seraphimstreets"},"content":" DateTimeFormatter f1 \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2023-08-26"},{"lineNumber":382,"author":{"gitId":"seraphimstreets"},"content":" .appendPattern(\"yyyy-M-d[ H:m]\")","lastModifiedDate":"2023-08-26"},{"lineNumber":383,"author":{"gitId":"seraphimstreets"},"content":" .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)","lastModifiedDate":"2023-08-26"},{"lineNumber":384,"author":{"gitId":"seraphimstreets"},"content":" .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)","lastModifiedDate":"2023-08-26"},{"lineNumber":385,"author":{"gitId":"seraphimstreets"},"content":" .toFormatter();","lastModifiedDate":"2023-08-26"},{"lineNumber":386,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":387,"author":{"gitId":"seraphimstreets"},"content":" DateTimeFormatter f2 \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2023-08-26"},{"lineNumber":388,"author":{"gitId":"seraphimstreets"},"content":" .appendPattern(\"d/M/yyyy[ Hmm]\")","lastModifiedDate":"2023-08-26"},{"lineNumber":389,"author":{"gitId":"seraphimstreets"},"content":" .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)","lastModifiedDate":"2023-08-26"},{"lineNumber":390,"author":{"gitId":"seraphimstreets"},"content":" .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)","lastModifiedDate":"2023-08-26"},{"lineNumber":391,"author":{"gitId":"seraphimstreets"},"content":" .toFormatter();","lastModifiedDate":"2023-08-26"},{"lineNumber":392,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":393,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":394,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(f1);","lastModifiedDate":"2023-08-26"},{"lineNumber":395,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(f2);","lastModifiedDate":"2023-08-26"},{"lineNumber":396,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(DateTimeFormatter.ofPattern(\"yyyy-M-d\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":397,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(DateTimeFormatter.ofPattern(\"d/M/yyyy Hmm\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":398,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(DateTimeFormatter.ofPattern(\"d/M/yyyy H\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":399,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(DateTimeFormatter.ofPattern(\"d/M/yyyy\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":400,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":401,"author":{"gitId":"seraphimstreets"},"content":" out_date_format \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd H:mm\");","lastModifiedDate":"2023-08-26"},{"lineNumber":402,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":403,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":404,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":405,"author":{"gitId":"seraphimstreets"},"content":" * Returns an ArrayList of DateTimeFormatters to recognize user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":406,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":407,"author":{"gitId":"seraphimstreets"},"content":" * @returns ArrayList of DateTimeFormatters to recognize user input","lastModifiedDate":"2023-09-01"},{"lineNumber":408,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":409,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":410,"author":{"gitId":"seraphimstreets"},"content":" public ArrayList\u003cDateTimeFormatter\u003e getFormatters(){","lastModifiedDate":"2023-08-26"},{"lineNumber":411,"author":{"gitId":"seraphimstreets"},"content":" return formatters;","lastModifiedDate":"2023-08-26"},{"lineNumber":412,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":413,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":414,"author":{"gitId":"seraphimstreets"},"content":" * Adds a datetime format to the list of recognized formats.","lastModifiedDate":"2023-09-01"},{"lineNumber":415,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":416,"author":{"gitId":"seraphimstreets"},"content":" public void addReadFormat(String k) {","lastModifiedDate":"2023-08-26"},{"lineNumber":417,"author":{"gitId":"seraphimstreets"},"content":" formatters.add(DateTimeFormatter.ofPattern(k));","lastModifiedDate":"2023-08-26"},{"lineNumber":418,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":419,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":420,"author":{"gitId":"seraphimstreets"},"content":" * Removes a datetime format by index from the list of recognized formats.","lastModifiedDate":"2023-09-01"},{"lineNumber":421,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":422,"author":{"gitId":"seraphimstreets"},"content":" public void removeReadFormat(int x) {","lastModifiedDate":"2023-08-26"},{"lineNumber":423,"author":{"gitId":"seraphimstreets"},"content":" formatters.remove(x);","lastModifiedDate":"2023-08-26"},{"lineNumber":424,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":425,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":426,"author":{"gitId":"seraphimstreets"},"content":" * Returns a DateTimeFormatter to format output.","lastModifiedDate":"2023-09-01"},{"lineNumber":427,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":428,"author":{"gitId":"seraphimstreets"},"content":" * @returns DateTimeFormatter to format output","lastModifiedDate":"2023-09-01"},{"lineNumber":429,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":430,"author":{"gitId":"seraphimstreets"},"content":" public DateTimeFormatter getOutFormatter() {","lastModifiedDate":"2023-08-26"},{"lineNumber":431,"author":{"gitId":"seraphimstreets"},"content":" return out_date_format;","lastModifiedDate":"2023-08-26"},{"lineNumber":432,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":433,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":434,"author":{"gitId":"seraphimstreets"},"content":" * Sets the output DateTimeFormatter to the given datetime format.","lastModifiedDate":"2023-09-01"},{"lineNumber":435,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":436,"author":{"gitId":"seraphimstreets"},"content":" public void setOutFormatter(String k) {","lastModifiedDate":"2023-08-26"},{"lineNumber":437,"author":{"gitId":"seraphimstreets"},"content":" out_date_format \u003d DateTimeFormatter.ofPattern(k);","lastModifiedDate":"2023-08-26"},{"lineNumber":438,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":439,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":440,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-26"},{"lineNumber":441,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":442,"author":{"gitId":"seraphimstreets"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":443,"author":{"gitId":"seraphimstreets"},"content":" * Represents the list of tasks created by user.","lastModifiedDate":"2023-09-01"},{"lineNumber":444,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":445,"author":{"gitId":"seraphimstreets"},"content":"class TaskList{","lastModifiedDate":"2023-08-26"},{"lineNumber":446,"author":{"gitId":"seraphimstreets"},"content":" ArrayList\u003cTaskType\u003e items;","lastModifiedDate":"2023-09-01"},{"lineNumber":447,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":448,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":449,"author":{"gitId":"seraphimstreets"},"content":" * Default constructor for TaskList class, creates an empty list of TaskTypes.","lastModifiedDate":"2023-09-01"},{"lineNumber":450,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":451,"author":{"gitId":"seraphimstreets"},"content":" public TaskList() {","lastModifiedDate":"2023-08-26"},{"lineNumber":452,"author":{"gitId":"seraphimstreets"},"content":" items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":453,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":454,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":455,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":456,"author":{"gitId":"seraphimstreets"},"content":" * Secondary constructor for TaskList class, generates a list of TaskTypes","lastModifiedDate":"2023-09-01"},{"lineNumber":457,"author":{"gitId":"seraphimstreets"},"content":" * from saved data.","lastModifiedDate":"2023-09-01"},{"lineNumber":458,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":459,"author":{"gitId":"seraphimstreets"},"content":" * @param ss ArrayList of strings loaded from external data storage","lastModifiedDate":"2023-09-01"},{"lineNumber":460,"author":{"gitId":"seraphimstreets"},"content":" * @param dtf Datetime formatter used to recognize dates in saved data","lastModifiedDate":"2023-09-01"},{"lineNumber":461,"author":{"gitId":"seraphimstreets"},"content":" * @throws DukeException when the string format cannot be recognized and converted to TaskType","lastModifiedDate":"2023-09-01"},{"lineNumber":462,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":463,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":464,"author":{"gitId":"seraphimstreets"},"content":" public TaskList(ArrayList\u003cString\u003e ss, DTFormat dtf) throws DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":465,"author":{"gitId":"seraphimstreets"},"content":" items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":466,"author":{"gitId":"seraphimstreets"},"content":" for(String s : ss){","lastModifiedDate":"2023-08-26"},{"lineNumber":467,"author":{"gitId":"seraphimstreets"},"content":" String[] d \u003d s.split(\"\\\\s+\");","lastModifiedDate":"2023-08-26"},{"lineNumber":468,"author":{"gitId":"seraphimstreets"},"content":" int descLen \u003d Integer.valueOf(d[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":469,"author":{"gitId":"seraphimstreets"},"content":" String desc \u003d Utils.splitStringBySpaces(d, 1, descLen+1);","lastModifiedDate":"2023-09-01"},{"lineNumber":470,"author":{"gitId":"seraphimstreets"},"content":" boolean isCompleted \u003d Boolean.valueOf(d[descLen+1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":471,"author":{"gitId":"seraphimstreets"},"content":" String dateString \u003d d.length \u003e descLen+3 ? Utils.splitStringBySpaces(d, descLen+3, d.length) : null;","lastModifiedDate":"2023-09-01"},{"lineNumber":472,"author":{"gitId":"seraphimstreets"},"content":" TaskType task;","lastModifiedDate":"2023-09-01"},{"lineNumber":473,"author":{"gitId":"seraphimstreets"},"content":" if (d[descLen+2].equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":474,"author":{"gitId":"seraphimstreets"},"content":" task \u003d new Todo(desc, isCompleted);","lastModifiedDate":"2023-09-01"},{"lineNumber":475,"author":{"gitId":"seraphimstreets"},"content":" } else if (d[descLen+2].equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":476,"author":{"gitId":"seraphimstreets"},"content":" task \u003d new Deadline(desc, isCompleted, dateString, dtf.getFormatters());","lastModifiedDate":"2023-09-01"},{"lineNumber":477,"author":{"gitId":"seraphimstreets"},"content":" } else if (d[descLen+2].equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":478,"author":{"gitId":"seraphimstreets"},"content":" task \u003d new Event(desc, isCompleted, dateString, dtf.getFormatters());","lastModifiedDate":"2023-09-01"},{"lineNumber":479,"author":{"gitId":"seraphimstreets"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":480,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Task type not recognized\");","lastModifiedDate":"2023-09-01"},{"lineNumber":481,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":482,"author":{"gitId":"seraphimstreets"},"content":" items.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":483,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":484,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":485,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":486,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":487,"author":{"gitId":"seraphimstreets"},"content":" * Returns the size of the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":488,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":489,"author":{"gitId":"seraphimstreets"},"content":" * @returns size of TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":490,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":491,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":492,"author":{"gitId":"seraphimstreets"},"content":" public int getSize() {","lastModifiedDate":"2023-08-26"},{"lineNumber":493,"author":{"gitId":"seraphimstreets"},"content":" return items.size();","lastModifiedDate":"2023-08-26"},{"lineNumber":494,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":495,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":496,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":497,"author":{"gitId":"seraphimstreets"},"content":" * Returns an item in the TaskList by index","lastModifiedDate":"2023-09-01"},{"lineNumber":498,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":499,"author":{"gitId":"seraphimstreets"},"content":" * @param x index of item","lastModifiedDate":"2023-09-01"},{"lineNumber":500,"author":{"gitId":"seraphimstreets"},"content":" * @returns item in the TaskList by index","lastModifiedDate":"2023-09-01"},{"lineNumber":501,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":502,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":503,"author":{"gitId":"seraphimstreets"},"content":" public TaskType getItem(int x) {","lastModifiedDate":"2023-09-01"},{"lineNumber":504,"author":{"gitId":"seraphimstreets"},"content":" return items.get(x);","lastModifiedDate":"2023-08-26"},{"lineNumber":505,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":506,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":507,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":508,"author":{"gitId":"seraphimstreets"},"content":" * Appends an item to the end of the TaskList","lastModifiedDate":"2023-09-01"},{"lineNumber":509,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":510,"author":{"gitId":"seraphimstreets"},"content":" * @param y TaskType to be appended","lastModifiedDate":"2023-09-01"},{"lineNumber":511,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":512,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":513,"author":{"gitId":"seraphimstreets"},"content":" public void addItem(TaskType y) {","lastModifiedDate":"2023-09-01"},{"lineNumber":514,"author":{"gitId":"seraphimstreets"},"content":" items.add(y);","lastModifiedDate":"2023-08-26"},{"lineNumber":515,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":516,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":517,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":518,"author":{"gitId":"seraphimstreets"},"content":" * Removes an item from the TaskList by index","lastModifiedDate":"2023-09-01"},{"lineNumber":519,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":520,"author":{"gitId":"seraphimstreets"},"content":" * @param x index of item to be removed","lastModifiedDate":"2023-09-01"},{"lineNumber":521,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":522,"author":{"gitId":"seraphimstreets"},"content":" public void removeItem(int x) {","lastModifiedDate":"2023-08-26"},{"lineNumber":523,"author":{"gitId":"seraphimstreets"},"content":" items.remove(x);","lastModifiedDate":"2023-08-26"},{"lineNumber":524,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":525,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":526,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":527,"author":{"gitId":"seraphimstreets"},"content":" * Returns all items in the TaskList as an ArrayList of TaskTypes","lastModifiedDate":"2023-09-01"},{"lineNumber":528,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":529,"author":{"gitId":"seraphimstreets"},"content":" * @returns ArrayList of TaskTypes","lastModifiedDate":"2023-09-01"},{"lineNumber":530,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":531,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":532,"author":{"gitId":"seraphimstreets"},"content":" public ArrayList\u003cTaskType\u003e getItems() {","lastModifiedDate":"2023-09-01"},{"lineNumber":533,"author":{"gitId":"seraphimstreets"},"content":" return items;","lastModifiedDate":"2023-08-26"},{"lineNumber":534,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":535,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":536,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":537,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":538,"author":{"gitId":"seraphimstreets"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":539,"author":{"gitId":"seraphimstreets"},"content":" * Manages all loading and saving of data to external storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":540,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":541,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":542,"author":{"gitId":"seraphimstreets"},"content":"class Storage{","lastModifiedDate":"2023-08-26"},{"lineNumber":543,"author":{"gitId":"seraphimstreets"},"content":" ArrayList\u003cString\u003e its;","lastModifiedDate":"2023-08-26"},{"lineNumber":544,"author":{"gitId":"seraphimstreets"},"content":" private String data_file;","lastModifiedDate":"2023-08-26"},{"lineNumber":545,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":546,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":547,"author":{"gitId":"seraphimstreets"},"content":" * Constructor for Storage class, establishes whether external storage","lastModifiedDate":"2023-09-01"},{"lineNumber":548,"author":{"gitId":"seraphimstreets"},"content":" * location exists, and if not, creates it.","lastModifiedDate":"2023-09-01"},{"lineNumber":549,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":550,"author":{"gitId":"seraphimstreets"},"content":" * @param data_folder relative pathname to the folder of external storage","lastModifiedDate":"2023-09-01"},{"lineNumber":551,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":552,"author":{"gitId":"seraphimstreets"},"content":" public Storage(String data_folder) {","lastModifiedDate":"2023-09-01"},{"lineNumber":553,"author":{"gitId":"seraphimstreets"},"content":" File g \u003d new File(data_folder);","lastModifiedDate":"2023-09-01"},{"lineNumber":554,"author":{"gitId":"seraphimstreets"},"content":" if(!g.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":555,"author":{"gitId":"seraphimstreets"},"content":" g.mkdir();","lastModifiedDate":"2023-09-01"},{"lineNumber":556,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":557,"author":{"gitId":"seraphimstreets"},"content":" data_file \u003d data_folder + \"data.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":558,"author":{"gitId":"seraphimstreets"},"content":" this.data_file \u003d data_file;","lastModifiedDate":"2023-08-26"},{"lineNumber":559,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":560,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":561,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":562,"author":{"gitId":"seraphimstreets"},"content":" * Loads data from external storage into the application, creating an","lastModifiedDate":"2023-09-01"},{"lineNumber":563,"author":{"gitId":"seraphimstreets"},"content":" * ArrayList of items as strings to be further processed.","lastModifiedDate":"2023-09-01"},{"lineNumber":564,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":565,"author":{"gitId":"seraphimstreets"},"content":" * @returns ArrayList of strings","lastModifiedDate":"2023-09-01"},{"lineNumber":566,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":567,"author":{"gitId":"seraphimstreets"},"content":" public ArrayList\u003cString\u003e load() {","lastModifiedDate":"2023-09-01"},{"lineNumber":568,"author":{"gitId":"seraphimstreets"},"content":" File f \u003d new File(data_file);","lastModifiedDate":"2023-09-01"},{"lineNumber":569,"author":{"gitId":"seraphimstreets"},"content":" its \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-26"},{"lineNumber":570,"author":{"gitId":"seraphimstreets"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":571,"author":{"gitId":"seraphimstreets"},"content":" Scanner reader \u003d new Scanner(f);","lastModifiedDate":"2023-08-25"},{"lineNumber":572,"author":{"gitId":"seraphimstreets"},"content":" while (reader.hasNextLine()) {","lastModifiedDate":"2023-08-25"},{"lineNumber":573,"author":{"gitId":"seraphimstreets"},"content":" its.add(reader.nextLine());","lastModifiedDate":"2023-08-26"},{"lineNumber":574,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":575,"author":{"gitId":"seraphimstreets"},"content":" reader.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":576,"author":{"gitId":"seraphimstreets"},"content":" } catch (FileNotFoundException fe) {","lastModifiedDate":"2023-08-25"},{"lineNumber":577,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(\"Data file not found, attempting to create one...\");","lastModifiedDate":"2023-08-25"},{"lineNumber":578,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-25"},{"lineNumber":579,"author":{"gitId":"seraphimstreets"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-25"},{"lineNumber":580,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(\"Data file successfully created.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":581,"author":{"gitId":"seraphimstreets"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":582,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(\"Data storage could be created, any items added to the app will be deleted after program exit.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":583,"author":{"gitId":"seraphimstreets"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-25"},{"lineNumber":584,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":585,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":586,"author":{"gitId":"seraphimstreets"},"content":" return its;","lastModifiedDate":"2023-08-26"},{"lineNumber":587,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":588,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":589,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":590,"author":{"gitId":"seraphimstreets"},"content":" * Saves data from application into external storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":591,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":592,"author":{"gitId":"seraphimstreets"},"content":" * @param items list of TaskTypes to be saved to storage","lastModifiedDate":"2023-09-01"},{"lineNumber":593,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":594,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":595,"author":{"gitId":"seraphimstreets"},"content":" public void save(ArrayList\u003cTaskType\u003e items){","lastModifiedDate":"2023-09-01"},{"lineNumber":596,"author":{"gitId":"seraphimstreets"},"content":" try{","lastModifiedDate":"2023-08-26"},{"lineNumber":597,"author":{"gitId":"seraphimstreets"},"content":" FileWriter fileWriter \u003d new FileWriter(data_file);","lastModifiedDate":"2023-08-26"},{"lineNumber":598,"author":{"gitId":"seraphimstreets"},"content":" for(int i \u003d 0; i \u003c items.size(); i++) {","lastModifiedDate":"2023-08-26"},{"lineNumber":599,"author":{"gitId":"seraphimstreets"},"content":" fileWriter.write(items.get(i).saveStringRep() + \"\\n\");","lastModifiedDate":"2023-08-26"},{"lineNumber":600,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":601,"author":{"gitId":"seraphimstreets"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":602,"author":{"gitId":"seraphimstreets"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":603,"author":{"gitId":"seraphimstreets"},"content":" System.out.println(\"Something went wrong while saving your list items.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":604,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":605,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":606,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":607,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":608,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-26"},{"lineNumber":609,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":610,"author":{"gitId":"seraphimstreets"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":611,"author":{"gitId":"seraphimstreets"},"content":" * Handles parsing of user input and performing associated actions.","lastModifiedDate":"2023-09-01"},{"lineNumber":612,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":613,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":614,"author":{"gitId":"seraphimstreets"},"content":"class Parser{","lastModifiedDate":"2023-08-26"},{"lineNumber":615,"author":{"gitId":"seraphimstreets"},"content":" private DTFormat dtf;","lastModifiedDate":"2023-09-01"},{"lineNumber":616,"author":{"gitId":"seraphimstreets"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":617,"author":{"gitId":"seraphimstreets"},"content":" private TaskList tl;","lastModifiedDate":"2023-09-01"},{"lineNumber":618,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":619,"author":{"gitId":"seraphimstreets"},"content":" * Constructor for Parser class.","lastModifiedDate":"2023-09-01"},{"lineNumber":620,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":621,"author":{"gitId":"seraphimstreets"},"content":" * @param dtf DTFormat object used to handle datetime-related strings","lastModifiedDate":"2023-09-01"},{"lineNumber":622,"author":{"gitId":"seraphimstreets"},"content":" * @param ui Ui object used to handle displaying output to user.","lastModifiedDate":"2023-09-01"},{"lineNumber":623,"author":{"gitId":"seraphimstreets"},"content":" * @param tl TaskList object to track user-created tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":624,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":625,"author":{"gitId":"seraphimstreets"},"content":" public Parser(DTFormat dtf, Ui ui, TaskList tl){","lastModifiedDate":"2023-09-01"},{"lineNumber":626,"author":{"gitId":"seraphimstreets"},"content":" this.dtf \u003d dtf;","lastModifiedDate":"2023-08-26"},{"lineNumber":627,"author":{"gitId":"seraphimstreets"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":628,"author":{"gitId":"seraphimstreets"},"content":" this.tl \u003d tl;","lastModifiedDate":"2023-09-01"},{"lineNumber":629,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":630,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":631,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":632,"author":{"gitId":"seraphimstreets"},"content":" * Parses user input and performs associated actions","lastModifiedDate":"2023-09-01"},{"lineNumber":633,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":634,"author":{"gitId":"seraphimstreets"},"content":" * @param userInput One line of the user input","lastModifiedDate":"2023-09-01"},{"lineNumber":635,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":636,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":637,"author":{"gitId":"seraphimstreets"},"content":" public boolean parse(String userInput) throws DukeException{","lastModifiedDate":"2023-09-01"},{"lineNumber":638,"author":{"gitId":"seraphimstreets"},"content":" String[] splitStr \u003d userInput.split(\"\\\\s+\");","lastModifiedDate":"2023-08-23"},{"lineNumber":639,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":640,"author":{"gitId":"seraphimstreets"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":641,"author":{"gitId":"seraphimstreets"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":642,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":643,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":644,"author":{"gitId":"seraphimstreets"},"content":" if (userInput.equals(\"list\")){","lastModifiedDate":"2023-08-23"},{"lineNumber":645,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":646,"author":{"gitId":"seraphimstreets"},"content":" ui.printItems(tl.getItems());","lastModifiedDate":"2023-08-26"},{"lineNumber":647,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":648,"author":{"gitId":"seraphimstreets"},"content":" } else if (splitStr[0].equals(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":649,"author":{"gitId":"seraphimstreets"},"content":" if(splitStr.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":650,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Invalid format detected for \u0027find\u0027 command. Enter find [search_term]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":651,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":652,"author":{"gitId":"seraphimstreets"},"content":" String searchTerm \u003d Utils.splitStringBySpaces(splitStr, 1, splitStr.length);","lastModifiedDate":"2023-09-01"},{"lineNumber":653,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":654,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":655,"author":{"gitId":"seraphimstreets"},"content":" ArrayList\u003cTaskType\u003e suitable \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":656,"author":{"gitId":"seraphimstreets"},"content":" for(int i \u003d 0; i \u003c tl.getSize(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":657,"author":{"gitId":"seraphimstreets"},"content":" if(tl.getItem(i).getTaskDesc().contains(searchTerm)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":658,"author":{"gitId":"seraphimstreets"},"content":" suitable.add(tl.getItem(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":659,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":660,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":661,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":662,"author":{"gitId":"seraphimstreets"},"content":" ui.printItems(suitable);","lastModifiedDate":"2023-09-01"},{"lineNumber":663,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":664,"author":{"gitId":"seraphimstreets"},"content":" } else if (splitStr[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":665,"author":{"gitId":"seraphimstreets"},"content":" if(splitStr.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":666,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Invalid format detected for \u0027mark\u0027 command. Enter mark [item_no]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":667,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":668,"author":{"gitId":"seraphimstreets"},"content":" int x \u003d Integer.parseInt(splitStr[1]) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":669,"author":{"gitId":"seraphimstreets"},"content":" if(x \u003c 0 || x+1 \u003e tl.getSize()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":670,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Index is out of list range.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":671,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":672,"author":{"gitId":"seraphimstreets"},"content":" tl.getItem(x).setIsCompleted(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":673,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":674,"author":{"gitId":"seraphimstreets"},"content":" ui.print(ui.formatTaskToPrint(tl.getItem(x), dtf.getOutFormatter()));","lastModifiedDate":"2023-09-01"},{"lineNumber":675,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":676,"author":{"gitId":"seraphimstreets"},"content":" } else if (splitStr[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":677,"author":{"gitId":"seraphimstreets"},"content":" if(splitStr.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":678,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Invalid format detected for \u0027unmark\u0027 command. Enter unmark [item_no]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":679,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":680,"author":{"gitId":"seraphimstreets"},"content":" int x \u003d Integer.parseInt(splitStr[1]) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":681,"author":{"gitId":"seraphimstreets"},"content":" if(x \u003c 0 || x+1 \u003e tl.getSize()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":682,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Index is out of list range.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":683,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":684,"author":{"gitId":"seraphimstreets"},"content":" tl.getItem(x).setIsCompleted(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":685,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":686,"author":{"gitId":"seraphimstreets"},"content":" ui.print(ui.formatTaskToPrint(tl.getItem(x), dtf.getOutFormatter()));","lastModifiedDate":"2023-09-01"},{"lineNumber":687,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":688,"author":{"gitId":"seraphimstreets"},"content":" } else if (splitStr[0].equals(\"remove\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":689,"author":{"gitId":"seraphimstreets"},"content":" if(splitStr.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":690,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Invalid format detected for \u0027remove\u0027 command. Enter remove [item_no]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":691,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":692,"author":{"gitId":"seraphimstreets"},"content":" int x \u003d Integer.parseInt(splitStr[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":693,"author":{"gitId":"seraphimstreets"},"content":" if(x \u003c 0 || x+1 \u003e tl.getSize()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":694,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Index is out of list range.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":695,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":696,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Ok, the following item was removed:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":697,"author":{"gitId":"seraphimstreets"},"content":" ui.print(ui.formatTaskToPrint(tl.getItem(x), dtf.getOutFormatter()));","lastModifiedDate":"2023-09-01"},{"lineNumber":698,"author":{"gitId":"seraphimstreets"},"content":" tl.removeItem(x);","lastModifiedDate":"2023-08-26"},{"lineNumber":699,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":700,"author":{"gitId":"seraphimstreets"},"content":" } else if (splitStr[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":701,"author":{"gitId":"seraphimstreets"},"content":" if(splitStr.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":702,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":703,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":704,"author":{"gitId":"seraphimstreets"},"content":" String desc \u003d Utils.splitStringBySpaces(splitStr, 1, splitStr.length);","lastModifiedDate":"2023-09-01"},{"lineNumber":705,"author":{"gitId":"seraphimstreets"},"content":" tl.addItem(new Todo(desc, false));","lastModifiedDate":"2023-09-01"},{"lineNumber":706,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Got it, I\u0027ve added this task:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":707,"author":{"gitId":"seraphimstreets"},"content":" ui.print(ui.formatTaskToPrint(tl.getItem(tl.getSize() - 1), dtf.getOutFormatter()));","lastModifiedDate":"2023-09-01"},{"lineNumber":708,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Now you have \" + tl.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":709,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":710,"author":{"gitId":"seraphimstreets"},"content":" } else if (splitStr[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":711,"author":{"gitId":"seraphimstreets"},"content":" boolean x \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":712,"author":{"gitId":"seraphimstreets"},"content":" for(int i \u003d 1; i \u003c splitStr.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":713,"author":{"gitId":"seraphimstreets"},"content":" if(splitStr[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":714,"author":{"gitId":"seraphimstreets"},"content":" String dateString \u003d Utils.splitStringBySpaces(splitStr, i, splitStr.length);","lastModifiedDate":"2023-09-01"},{"lineNumber":715,"author":{"gitId":"seraphimstreets"},"content":" String desc \u003d Utils.splitStringBySpaces(splitStr, 1, i);","lastModifiedDate":"2023-09-01"},{"lineNumber":716,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":717,"author":{"gitId":"seraphimstreets"},"content":" if(desc.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":718,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Description of task cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":719,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":720,"author":{"gitId":"seraphimstreets"},"content":" if(dateString.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":721,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":722,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":723,"author":{"gitId":"seraphimstreets"},"content":" tl.addItem(new Deadline(desc, false, dateString, dtf.getFormatters()));","lastModifiedDate":"2023-09-01"},{"lineNumber":724,"author":{"gitId":"seraphimstreets"},"content":" x \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":725,"author":{"gitId":"seraphimstreets"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":726,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":727,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":728,"author":{"gitId":"seraphimstreets"},"content":" if(!x) {","lastModifiedDate":"2023-08-24"},{"lineNumber":729,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"/by keyword is necessary and not detected. Use /by to set a deadline.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":730,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":731,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Got it, I\u0027ve added this task:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":732,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":733,"author":{"gitId":"seraphimstreets"},"content":" ui.print(ui.formatTaskToPrint(tl.getItem(tl.getSize() - 1), dtf.getOutFormatter()));","lastModifiedDate":"2023-09-01"},{"lineNumber":734,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":735,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Now you have \" + tl.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":736,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":737,"author":{"gitId":"seraphimstreets"},"content":" } else if (splitStr[0].equals(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":738,"author":{"gitId":"seraphimstreets"},"content":" boolean x \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":739,"author":{"gitId":"seraphimstreets"},"content":" for (int i \u003d 1; i \u003c splitStr.length; i++){","lastModifiedDate":"2023-08-23"},{"lineNumber":740,"author":{"gitId":"seraphimstreets"},"content":" if (splitStr[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":741,"author":{"gitId":"seraphimstreets"},"content":" String dateString \u003d Utils.splitStringBySpaces(splitStr, i, splitStr.length);","lastModifiedDate":"2023-09-01"},{"lineNumber":742,"author":{"gitId":"seraphimstreets"},"content":" String desc \u003d Utils.splitStringBySpaces(splitStr, 1, i);","lastModifiedDate":"2023-09-01"},{"lineNumber":743,"author":{"gitId":"seraphimstreets"},"content":" if (desc.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":744,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Description of task cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":745,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":746,"author":{"gitId":"seraphimstreets"},"content":" if(dateString.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":747,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Event dates cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":748,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":749,"author":{"gitId":"seraphimstreets"},"content":" tl.addItem(new Event(desc, false, dateString, dtf.getFormatters()));","lastModifiedDate":"2023-09-01"},{"lineNumber":750,"author":{"gitId":"seraphimstreets"},"content":" x \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":751,"author":{"gitId":"seraphimstreets"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":752,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":753,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":754,"author":{"gitId":"seraphimstreets"},"content":" if (!x) {","lastModifiedDate":"2023-08-24"},{"lineNumber":755,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"/by keyword is necessary and not detected. Use /by to set a deadline.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":756,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":757,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Got it, I\u0027ve added this task:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":758,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":759,"author":{"gitId":"seraphimstreets"},"content":" ui.print(ui.formatTaskToPrint(tl.getItem(tl.getSize() - 1), dtf.getOutFormatter()));","lastModifiedDate":"2023-09-01"},{"lineNumber":760,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":761,"author":{"gitId":"seraphimstreets"},"content":" ui.print(\"Now you have \" + tl.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":762,"author":{"gitId":"seraphimstreets"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":763,"author":{"gitId":"seraphimstreets"},"content":" throw new DukeException(\"Sorry, I don\u0027t understand that command\");","lastModifiedDate":"2023-08-25"},{"lineNumber":764,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":765,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":766,"author":{"gitId":"seraphimstreets"},"content":" return true;","lastModifiedDate":"2023-08-26"},{"lineNumber":767,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":768,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":769,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":770,"author":{"gitId":"seraphimstreets"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":771,"author":{"gitId":"seraphimstreets"},"content":" * Entry point of the Duke program.","lastModifiedDate":"2023-09-01"},{"lineNumber":772,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":773,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":774,"author":{"gitId":"seraphimstreets"},"content":"public class Duke {","lastModifiedDate":"2023-08-26"},{"lineNumber":775,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":776,"author":{"gitId":"seraphimstreets"},"content":" private Storage storage;","lastModifiedDate":"2023-08-26"},{"lineNumber":777,"author":{"gitId":"seraphimstreets"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-26"},{"lineNumber":778,"author":{"gitId":"seraphimstreets"},"content":" private Ui ui;","lastModifiedDate":"2023-08-26"},{"lineNumber":779,"author":{"gitId":"seraphimstreets"},"content":" private Parser parser;","lastModifiedDate":"2023-08-26"},{"lineNumber":780,"author":{"gitId":"seraphimstreets"},"content":" private DTFormat dtf;","lastModifiedDate":"2023-08-26"},{"lineNumber":781,"author":{"gitId":"seraphimstreets"},"content":" private static Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":782,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":783,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":784,"author":{"gitId":"seraphimstreets"},"content":" * Constructor for Duke class, initializing all necessary classes","lastModifiedDate":"2023-09-01"},{"lineNumber":785,"author":{"gitId":"seraphimstreets"},"content":" * to manage IO and external storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":786,"author":{"gitId":"seraphimstreets"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":787,"author":{"gitId":"seraphimstreets"},"content":" * @param filepath relative pathname to the folder of external storage","lastModifiedDate":"2023-09-01"},{"lineNumber":788,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":789,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":790,"author":{"gitId":"seraphimstreets"},"content":" public Duke(String filepath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":791,"author":{"gitId":"seraphimstreets"},"content":" dtf \u003d new DTFormat();","lastModifiedDate":"2023-09-01"},{"lineNumber":792,"author":{"gitId":"seraphimstreets"},"content":" ui \u003d new Ui(dtf);","lastModifiedDate":"2023-09-01"},{"lineNumber":793,"author":{"gitId":"seraphimstreets"},"content":" storage \u003d new Storage(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":794,"author":{"gitId":"seraphimstreets"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":795,"author":{"gitId":"seraphimstreets"},"content":" tasks \u003d new TaskList(storage.load(), dtf);","lastModifiedDate":"2023-09-01"},{"lineNumber":796,"author":{"gitId":"seraphimstreets"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":797,"author":{"gitId":"seraphimstreets"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-09-01"},{"lineNumber":798,"author":{"gitId":"seraphimstreets"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":799,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":800,"author":{"gitId":"seraphimstreets"},"content":" parser \u003d new Parser(dtf, ui, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":801,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":802,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":803,"author":{"gitId":"seraphimstreets"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":804,"author":{"gitId":"seraphimstreets"},"content":" * Runs the Duke program, beginning the loop of receiving user","lastModifiedDate":"2023-09-01"},{"lineNumber":805,"author":{"gitId":"seraphimstreets"},"content":" * input until the user terminates.","lastModifiedDate":"2023-09-01"},{"lineNumber":806,"author":{"gitId":"seraphimstreets"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":807,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":808,"author":{"gitId":"seraphimstreets"},"content":" public void run() {","lastModifiedDate":"2023-08-26"},{"lineNumber":809,"author":{"gitId":"seraphimstreets"},"content":" ui.printIntro();","lastModifiedDate":"2023-08-26"},{"lineNumber":810,"author":{"gitId":"seraphimstreets"},"content":" while(true) {","lastModifiedDate":"2023-08-26"},{"lineNumber":811,"author":{"gitId":"seraphimstreets"},"content":" String userInput \u003d sc.nextLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":812,"author":{"gitId":"seraphimstreets"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":813,"author":{"gitId":"seraphimstreets"},"content":" if (!parser.parse(userInput)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":814,"author":{"gitId":"seraphimstreets"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":815,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":816,"author":{"gitId":"seraphimstreets"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":817,"author":{"gitId":"seraphimstreets"},"content":" ui.print(e.toString());","lastModifiedDate":"2023-08-26"},{"lineNumber":818,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":819,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":820,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":821,"author":{"gitId":"seraphimstreets"},"content":" storage.save(tasks.getItems());","lastModifiedDate":"2023-08-26"},{"lineNumber":822,"author":{"gitId":"seraphimstreets"},"content":" ui.printExit();","lastModifiedDate":"2023-08-26"},{"lineNumber":823,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":824,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":825,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":826,"author":{"gitId":"seraphimstreets"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-26"},{"lineNumber":827,"author":{"gitId":"seraphimstreets"},"content":" new Duke(\"./data/\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":828,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":829,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"seraphimstreets":827,"-":2}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"seraphimstreets"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"seraphimstreets"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"seraphimstreets"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"seraphimstreets"},"content":"public class DukeTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"seraphimstreets"},"content":" DTFormat dtf \u003d new DTFormat();","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"seraphimstreets"},"content":" Ui ui \u003d new Ui(dtf);","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"seraphimstreets"},"content":" TaskList tl \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"seraphimstreets"},"content":" Parser p \u003d new Parser(dtf, ui, tl);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"seraphimstreets"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"seraphimstreets"},"content":" public void test1(){","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"seraphimstreets"},"content":"// Item a;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"seraphimstreets"},"content":"// try{","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"seraphimstreets"},"content":"// a \u003d new Item(\"help\", true,","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"seraphimstreets"},"content":"// new Deadline(\"/by 8/8/2020 1630\",dtf.getFormatters()), \"/by 8/8/2020 1630\" );","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"seraphimstreets"},"content":"// assert(a.toStringWithDatetimeFormatter(dtf.getOutFormatter()).equals(\"[D][X] help (by: 2020-08-08 16:30)\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"seraphimstreets"},"content":"// }catch(DukeException e){","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"seraphimstreets"},"content":"// System.out.println(\"Error occurred while converting item to string.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"seraphimstreets"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"seraphimstreets"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"seraphimstreets"},"content":" public void test2(){","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"seraphimstreets"},"content":" TaskList tl \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"seraphimstreets"},"content":"// try{","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"seraphimstreets"},"content":"// Item a \u003d new Item(\"help\", true,","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"seraphimstreets"},"content":"// new Deadline(\"/by 8/8/2020 1630\",dtf.getFormatters()), \"/by 8/8/2020 1630\" );","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"seraphimstreets"},"content":"// tl.addItem(a);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"seraphimstreets"},"content":"// tl.addItem(a);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"seraphimstreets"},"content":"// tl.addItem(a);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"seraphimstreets"},"content":"// assertEquals(tl.getSize(), 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"seraphimstreets"},"content":"// }catch(DukeException e){","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"seraphimstreets"},"content":"// System.out.println(\"Error occurred while adding items to Tasklist.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"seraphimstreets"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"seraphimstreets"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"seraphimstreets"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"seraphimstreets"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"seraphimstreets":43}},{"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":"seraphimstreets"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\duke\\*.java","lastModifiedDate":"2023-08-27"},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"seraphimstreets":1,"-":20}}] diff --git a/seraphimstreets_ip_master/commits.json b/seraphimstreets_ip_master/commits.json index fd6eaf13..63372e84 100644 --- a/seraphimstreets_ip_master/commits.json +++ b/seraphimstreets_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"seraphimstreets":[{"date":"2023-08-23","commitResults":[{"hash":"85f4bbbb540b67463d677f04b37c10547572512c","isMergeCommit":false,"messageTitle":"initial chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"5a84adafd44b596109192c660f97ef51948dddba","isMergeCommit":false,"messageTitle":"added echo functionality to chatbot","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"f8ae8346b59f7be3ba2019d9f655d2d77b86f607","isMergeCommit":false,"messageTitle":"added ability to store text","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"0b0dd9875a5253f458817f5a999a1513bab31ea9","isMergeCommit":false,"messageTitle":"added check and uncheck functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"134905e2bffc8257dbd9ee39f68396aa529d055e","isMergeCommit":false,"messageTitle":"added deadline functionality","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":17}}},{"hash":"53b7ed6be7aa02d34140fd6459da2e72023d0a36","isMergeCommit":false,"messageTitle":"added functions","messageBody":"","tags":["Level-6","Level-5","A-TextUiTesting","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":16}}}]},{"date":"2023-08-24","commitResults":[{"hash":"6c37127b10077268a37a5d872a8368224dbc3572","isMergeCommit":false,"messageTitle":"refactored into classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":50}}}]},{"date":"2023-08-25","commitResults":[{"hash":"a6d2fac6abb647f5e01248d4250d38d542f2f819","isMergeCommit":false,"messageTitle":"changed exception to checked","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":80}}},{"hash":"d4b6056485c8e101d6d060727c2aa12b383e81fa","isMergeCommit":false,"messageTitle":"added save and load functionalities","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":0}}}]},{"date":"2023-08-26","commitResults":[{"hash":"69e90bdb0087ce69c99bdddbe61c123ee11d75c4","isMergeCommit":false,"messageTitle":"added datetime recognition","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":22}}},{"hash":"4b5e5b173ef4ecf9512a3bb4bfbee8865f60dee6","isMergeCommit":true,"messageTitle":"saving and datetime funcs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4a8b3d752314db22604e9809b3bf9d976504ef2a","isMergeCommit":false,"messageTitle":"incorporated OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":260,"deletions":127}}}]},{"date":"2023-08-27","commitResults":[{"hash":"40afcfb3ca45da7aebc5537f9cf8769c57fdafe9","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"713ddff26ec1e5be0c5c0481473a55cf54afd546","isMergeCommit":false,"messageTitle":"added gradle and junit tests","messageBody":"","tags":["A-JUnit","A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"5e5daa4407e033c7ed33ad15f94621f9711f465f","isMergeCommit":false,"messageTitle":"created jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":1,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"seraphimstreets":{"java":501,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":0}},"authorContributionVariance":{"seraphimstreets":24408.36},"authorDisplayNameMap":{"seraphimstreets":"CS2103T-W08-2 EDIS..IONG"}} +{"authorDailyContributionsMap":{"seraphimstreets":[{"date":"2023-08-23","commitResults":[{"hash":"85f4bbbb540b67463d677f04b37c10547572512c","isMergeCommit":false,"messageTitle":"initial chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"5a84adafd44b596109192c660f97ef51948dddba","isMergeCommit":false,"messageTitle":"added echo functionality to chatbot","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"f8ae8346b59f7be3ba2019d9f655d2d77b86f607","isMergeCommit":false,"messageTitle":"added ability to store text","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"0b0dd9875a5253f458817f5a999a1513bab31ea9","isMergeCommit":false,"messageTitle":"added check and uncheck functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"134905e2bffc8257dbd9ee39f68396aa529d055e","isMergeCommit":false,"messageTitle":"added deadline functionality","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":17}}},{"hash":"53b7ed6be7aa02d34140fd6459da2e72023d0a36","isMergeCommit":false,"messageTitle":"added functions","messageBody":"","tags":["Level-6","Level-5","A-TextUiTesting","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":16}}}]},{"date":"2023-08-24","commitResults":[{"hash":"6c37127b10077268a37a5d872a8368224dbc3572","isMergeCommit":false,"messageTitle":"refactored into classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":50}}}]},{"date":"2023-08-25","commitResults":[{"hash":"a6d2fac6abb647f5e01248d4250d38d542f2f819","isMergeCommit":false,"messageTitle":"changed exception to checked","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":80}}},{"hash":"d4b6056485c8e101d6d060727c2aa12b383e81fa","isMergeCommit":false,"messageTitle":"added save and load functionalities","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":0}}}]},{"date":"2023-08-26","commitResults":[{"hash":"69e90bdb0087ce69c99bdddbe61c123ee11d75c4","isMergeCommit":false,"messageTitle":"added datetime recognition","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":22}}},{"hash":"4b5e5b173ef4ecf9512a3bb4bfbee8865f60dee6","isMergeCommit":true,"messageTitle":"saving and datetime funcs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4a8b3d752314db22604e9809b3bf9d976504ef2a","isMergeCommit":false,"messageTitle":"incorporated OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":260,"deletions":127}}}]},{"date":"2023-08-27","commitResults":[{"hash":"40afcfb3ca45da7aebc5537f9cf8769c57fdafe9","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"713ddff26ec1e5be0c5c0481473a55cf54afd546","isMergeCommit":false,"messageTitle":"added gradle and junit tests","messageBody":"","tags":["A-JUnit","A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"5e5daa4407e033c7ed33ad15f94621f9711f465f","isMergeCommit":false,"messageTitle":"created jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":1,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"89d6784de5c13f57af4e1a1586b61a9ff335c6ab","isMergeCommit":false,"messageTitle":"fix some bugs and corrected style","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":288,"deletions":195}}},{"hash":"b6247ce5de75bf8f14e266aff5b25ab3764dd8e6","isMergeCommit":false,"messageTitle":"add javadocs to most methods and classes","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":298,"deletions":52}}},{"hash":"c7900424a2bbcb1ec2e2d1a47d98c042fecd2554","isMergeCommit":false,"messageTitle":"clean some non-standard code","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"24e834d1f4033847247a02d8877a7eede34bbf7b","isMergeCommit":true,"messageTitle":"resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"56b03a05f2da3aa147f51965748b547f6aec6a6c","isMergeCommit":false,"messageTitle":"fix a bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":1}}},{"hash":"48f51ccd6377fa5564601d2d365072a0bfcc76b8","isMergeCommit":false,"messageTitle":"add find functionality","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":413,"deletions":139}}},{"hash":"23a2ab5be0da6aa1dcc219b1a42ea7a541c9af54","isMergeCommit":true,"messageTitle":"fix merge conflict","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"seraphimstreets":{"java":870,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":0}},"authorContributionVariance":{"seraphimstreets":130706.24},"authorDisplayNameMap":{"seraphimstreets":"CS2103T-W08-2 EDIS..IONG"}} diff --git a/shuyangk_ip_master/authorship.json b/shuyangk_ip_master/authorship.json index d3a8f62a..82a47b24 100644 --- a/shuyangk_ip_master/authorship.json +++ b/shuyangk_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"shuyangk":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"T | 1 | this","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"T | 0 | this","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"T | 0 | this","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":3}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":"import duke.data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" static final String FILE_NAME \u003d \"data/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" private TaskList tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" private Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" tasklist \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" this.ui.greet();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"shuyangk"},"content":" String keyword \u003d parser.getInstruction(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"shuyangk"},"content":" switch (keyword) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"shuyangk"},"content":" case \"bye\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"shuyangk"},"content":" this.ui.exitBot();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"shuyangk"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"shuyangk"},"content":" case \"list\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"shuyangk"},"content":" this.ui.printlist(tasklist.getTasklist());","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"shuyangk"},"content":" case \"unmark\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"shuyangk"},"content":" Task task \u003d this.tasklist.unmarkTask(parser.getTaskNumber(input));","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"shuyangk"},"content":" this.ui.unmark(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"shuyangk"},"content":" this.storage.rewriteFile(this.tasklist.getTasklist());","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"shuyangk"},"content":" case \"mark\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"shuyangk"},"content":" Task task \u003d this.tasklist.markTask(parser.getTaskNumber(input));","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"shuyangk"},"content":" this.ui.marked(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"shuyangk"},"content":" this.storage.rewriteFile(this.tasklist.getTasklist());","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"shuyangk"},"content":" case \"delete\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"shuyangk"},"content":" Task task \u003d this.tasklist.deleteTask(parser.getTaskNumber(input));","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"shuyangk"},"content":" this.ui.deleted(task, this.tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"shuyangk"},"content":" this.storage.rewriteFile(this.tasklist.getTasklist());","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"shuyangk"},"content":" case \"todo\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"shuyangk"},"content":" Task task \u003d this.tasklist.addTodo(parser.getTodoDescription(input));","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"shuyangk"},"content":" this.ui.addedToList(task, this.tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"shuyangk"},"content":" this.storage.appendToFile(task.saveString());","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"shuyangk"},"content":" case \"deadline\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"shuyangk"},"content":" Task task \u003d this.tasklist.addDeadline(parser.getDeadlineDescription(input), parser.getBy(input));","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"shuyangk"},"content":" this.ui.addedToList(task, this.tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"shuyangk"},"content":" this.storage.appendToFile(task.saveString());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"shuyangk"},"content":" case \"event\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"shuyangk"},"content":" Task task \u003d this.tasklist.addEvent(parser.getEventDescription(input), parser.getFrom(input),","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"shuyangk"},"content":" parser.getTo(input));","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"shuyangk"},"content":" this.ui.addedToList(task, this.tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"shuyangk"},"content":" this.storage.appendToFile(task.saveString());","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"shuyangk"},"content":" default: {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"shuyangk"},"content":" ui.botErrorMsg();","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"shuyangk"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"shuyangk"},"content":" ui.printBotMessage(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"shuyangk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"shuyangk"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"shuyangk"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"shuyangk"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":99,"-":1}},{"path":"src/main/java/duke/data/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" private ArrayList\u003cTask\u003e tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" public TaskList(ArrayList\u003cTask\u003e tasklist) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" this.tasklist \u003d tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" this.tasklist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" public ArrayList\u003cTask\u003e getTasklist() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" return this.tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" public Task markTask(int input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" if (input \u003c 1 || (input + 1) \u003e tasklist.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" Task task \u003d tasklist.get(input - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":" public Task unmarkTask(int input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"shuyangk"},"content":" if (input \u003c 1 || (input + 1) \u003e tasklist.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"shuyangk"},"content":" Task task \u003d tasklist.get(input - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"shuyangk"},"content":" task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"shuyangk"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"shuyangk"},"content":" public Task deleteTask(int input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"shuyangk"},"content":" if (input \u003c 1 || input + 1 \u003e tasklist.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"shuyangk"},"content":" Task task \u003d tasklist.get(input - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"shuyangk"},"content":" tasklist.remove(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"shuyangk"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"shuyangk"},"content":" public Task addTodo(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"shuyangk"},"content":" Task newTask \u003d new ToDo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"shuyangk"},"content":" tasklist.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"shuyangk"},"content":" return newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"shuyangk"},"content":" public Task addDeadline(String description, String deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"shuyangk"},"content":" Task newTask \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"shuyangk"},"content":" tasklist.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"shuyangk"},"content":" return newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"shuyangk"},"content":" public Task addEvent(String description, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"shuyangk"},"content":" Task newTask \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"shuyangk"},"content":" tasklist.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"shuyangk"},"content":" return newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":71}},{"path":"src/main/java/duke/data/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shuyangk":7}},{"path":"src/main/java/duke/data/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" private String deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" LocalDate d1 \u003d LocalDate.parse(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" this.deadline \u003d d1.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" public String saveString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" return \"D\" + super.saveString() + \" | \" + this.deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" return String.format(\"[D] %s (by: %s)\", super.toString(), this.deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shuyangk":28}},{"path":"src/main/java/duke/data/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" private String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" private String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" LocalDate d1 \u003d LocalDate.parse(start);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" LocalDate d2 \u003d LocalDate.parse(end);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" this.start \u003d d1.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" this.end \u003d d2.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" public String saveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" return \"E\" + super.saveString() + \" | \" + this.start + \"-\" + this.end;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" return String.format(\"[E] %s (from: %s to: %s)\", super.toString(), this.start, this.end);","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shuyangk":34}},{"path":"src/main/java/duke/data/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" public String saveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" return String.format(\" | %s | %s\", isDone ? 1 : 0, description);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), this.description);","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shuyangk":31}},{"path":"src/main/java/duke/data/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" public String saveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":" return \"T\" + super.saveString();","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" return String.format(\"[T] %s\", super.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shuyangk":17}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":" public String getInstruction(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":" String[] command \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" return command[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":" public String[] splitInputFromFile(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" public String getTodoDescription(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" if (input.split(\" \", 2).length \u003c\u003d 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \", 2)[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" public String getDeadlineDescription(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" if (input.split(\"/by\", 2).length \u003c\u003d 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \", 2)[1].split(\" /by \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" public String getBy(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" if (input.split(\"/by\", 2).length \u003c\u003d 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! You forgot to include the deadline.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \", 2)[1].split(\" /by \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"shuyangk"},"content":" public String getEventDescription(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"shuyangk"},"content":" int spaceIndex \u003d input.indexOf(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"shuyangk"},"content":" if (spaceIndex \u003d\u003d -1 || spaceIndex + 1 \u003e\u003d input.length()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \", 2)[1].split(\" /from\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"shuyangk"},"content":" public String getFrom(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"shuyangk"},"content":" if (input.split(\"/\").length \u003c\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! Missing event start date/time.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \", 2)[1].split(\" /from \")[1].split(\" /\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"shuyangk"},"content":" public String getTo(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"shuyangk"},"content":" if (input.split(\"/\").length \u003c\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! Missing event start date/time.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \", 2)[1].split(\" /from \")[1].split(\"/to \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"shuyangk"},"content":" public int getTaskNumber(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"shuyangk"},"content":" String result \u003d input.split(\" \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"shuyangk"},"content":" return Integer.parseInt(result);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":64}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" public final Path filepath;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" public final String path;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" this.filepath \u003d Paths.get(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" this.path \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" * Returns true if the given path is acceptable as a storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" * The file path is considered acceptable if it ends with \u0027.txt\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":" private static boolean isValidPath(Path filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":" return filePath.toString().endsWith(\".txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"shuyangk"},"content":" * Overwrites content in a file with new content.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"shuyangk"},"content":" * @param textToAdd String to be added to file.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"shuyangk"},"content":" * @throws IOException if writing to file is not allowed.","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"shuyangk"},"content":" public void writeToFile(String textToAdd) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"shuyangk"},"content":" FileWriter fw \u003d new FileWriter(this.path);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"shuyangk"},"content":" fw.write(textToAdd);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"shuyangk"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"shuyangk"},"content":" * Appends a new line of content to a file.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"shuyangk"},"content":" * @param textToAppend String to be appended to file.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"shuyangk"},"content":" * @throws IOException if writing to file is not allowed.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"shuyangk"},"content":" public void appendToFile(String textToAppend) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"shuyangk"},"content":" FileWriter fw \u003d new FileWriter(this.path, true); // create a FileWriter in append mode","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"shuyangk"},"content":" fw.write(textToAppend);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"shuyangk"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"shuyangk"},"content":" * Rewrites the whole txt file.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"shuyangk"},"content":" * @param tasklist ArrayList of tasks to write to file.","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"shuyangk"},"content":" public void rewriteFile(ArrayList\u003cTask\u003e tasklist) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"shuyangk"},"content":" writeToFile(tasklist.get(0).saveString() + System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"shuyangk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"shuyangk"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"shuyangk"},"content":" for (int i \u003d 1; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"shuyangk"},"content":" appendToFile(tasklist.get(i).saveString() + System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"shuyangk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"shuyangk"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"shuyangk"},"content":" * Loads content from text file into an ArrayList of Tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"shuyangk"},"content":" * @return ArrayList of Tasks with content of text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"shuyangk"},"content":" * @throws FileNotFoundException if file is not valid.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"shuyangk"},"content":" public ArrayList\u003cTask\u003e loadTasks() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"shuyangk"},"content":" File f \u003d new File(this.getPath());","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"shuyangk"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"shuyangk"},"content":" ArrayList\u003cTask\u003e tasklist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"shuyangk"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"shuyangk"},"content":" String nextTask \u003d s.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"shuyangk"},"content":" String[] input \u003d nextTask.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"shuyangk"},"content":" String category \u003d input[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"shuyangk"},"content":" String status \u003d input[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"shuyangk"},"content":" String description \u003d input[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"shuyangk"},"content":" switch (category) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"shuyangk"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"shuyangk"},"content":" Task todoTask \u003d new ToDo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"shuyangk"},"content":" if (!status.equals(\"0\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"shuyangk"},"content":" todoTask.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"shuyangk"},"content":" tasklist.add(todoTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"shuyangk"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"shuyangk"},"content":" String deadline \u003d input[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"shuyangk"},"content":" Task deadlineTask \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"shuyangk"},"content":" if (!status.equals(\"0\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"shuyangk"},"content":" deadlineTask.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"shuyangk"},"content":" tasklist.add(deadlineTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"shuyangk"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"shuyangk"},"content":" String from \u003d input[3].split(\"-\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"shuyangk"},"content":" String to \u003d input[3].split(\"-\")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"shuyangk"},"content":" Task eventTask \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"shuyangk"},"content":" if (!status.equals(\"0\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"shuyangk"},"content":" eventTask.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"shuyangk"},"content":" tasklist.add(eventTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"shuyangk"},"content":" return tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"shuyangk"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"File Cannot be Found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"shuyangk"},"content":" public String getPath() {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"shuyangk"},"content":" return filepath.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":137}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":" private String dottedLine \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":" public void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" public void greet() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" \"Hello! I\u0027m Charlie\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" \"What can I do for you?\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" public void exitBot() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" \"Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" public void marked(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" \"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" task.toString() + \"\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"shuyangk"},"content":" public void unmark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"shuyangk"},"content":" \"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"shuyangk"},"content":" task.toString() + \"\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"shuyangk"},"content":" dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"shuyangk"},"content":" public void addedToList(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"shuyangk"},"content":" System.out.println(\"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"shuyangk"},"content":" \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"shuyangk"},"content":" task.toString() +","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"shuyangk"},"content":" \"\\nNow you have \" + size + \" tasks in the list.\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"shuyangk"},"content":" \"\\n____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"shuyangk"},"content":" public void deleted(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"shuyangk"},"content":" System.out.println(\"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"shuyangk"},"content":" \"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"shuyangk"},"content":" task +","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"shuyangk"},"content":" \"\\nNow you have \" + size + \" tasks in the list.\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"shuyangk"},"content":" \"\\n____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"shuyangk"},"content":" public void invalidTaskNumber() {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"shuyangk"},"content":" \"☹ OOPS!!! The task number is invalid.\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"shuyangk"},"content":" dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"shuyangk"},"content":" public void botErrorMsg() {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"shuyangk"},"content":" \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"shuyangk"},"content":" \"\\n\" + dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"shuyangk"},"content":" public void printBotMessage(String msg) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"shuyangk"},"content":" msg +","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"shuyangk"},"content":" \"\\n\" + dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"shuyangk"},"content":" public void printlist(ArrayList\u003cTask\u003e arr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"shuyangk"},"content":" \"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"shuyangk"},"content":" for (Task t : arr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"shuyangk"},"content":" System.out.printf(\"%d. %s%n\", arr.indexOf(t) + 1, t.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":84}},{"path":"src/test/java/duke/data/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import duke.data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" public void TaskList_addTask_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" assertEquals(0, tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" tasklist.addTodo(\"this\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" assertEquals(1, tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" public void TaskList_deleteTask_success() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" assertEquals(0, tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" tasklist.addTodo(\"this\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" assertEquals(1, tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" tasklist.deleteTask(1);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" assertEquals(1, tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":31}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" public void parser_getInstruction_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" assertEquals(\"todo\", new Parser().getInstruction(\"todo this\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" public void parser_getDeadlineDetail_success() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" assertEquals(\"this\", new Parser().getDeadlineDescription(\"deadline this /by now\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" public void parser_getFrom_success() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" assertEquals(\"now\", new Parser().getFrom(\"event this /from now /to then\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" public void parser_getTaskNumber_success() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" assertEquals(2, new Parser().getTaskNumber(\"mark 2\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":26}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"deadline return book /by Monday","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"event dinner /from Thursday 6pm /to 8pm","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shuyangk":12}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"shuyangk":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"T | 0 | this","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"T | 1 | that","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"D | 0 | that | now","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"E | 0 | that | then-now","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"T | 0 | that","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"T | 0 | this that then ","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"shuyangk":6}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"import duke.data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" private TaskList tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" private final Parser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" tasklist \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" this.ui.greet();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"shuyangk"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"shuyangk"},"content":" String keyword \u003d parser.getInstruction(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"shuyangk"},"content":" switch (keyword) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"shuyangk"},"content":" case \"bye\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"shuyangk"},"content":" this.ui.exitBot();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"shuyangk"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"shuyangk"},"content":" case \"list\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"shuyangk"},"content":" this.ui.printList(tasklist.getTaskList());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"shuyangk"},"content":" case \"unmark\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"shuyangk"},"content":" Task task \u003d this.tasklist.unmarkTask(parser.getTaskNumber(input));","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"shuyangk"},"content":" this.ui.printUnmarkedMessage(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"shuyangk"},"content":" this.storage.rewriteFile(this.tasklist.getTaskList());","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"shuyangk"},"content":" case \"mark\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"shuyangk"},"content":" Task task \u003d this.tasklist.markTask(parser.getTaskNumber(input));","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"shuyangk"},"content":" this.ui.printMarkedMessage(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"shuyangk"},"content":" this.storage.rewriteFile(this.tasklist.getTaskList());","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"shuyangk"},"content":" case \"delete\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"shuyangk"},"content":" Task task \u003d this.tasklist.deleteTask(parser.getTaskNumber(input));","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"shuyangk"},"content":" this.ui.printDeletedMessage(task, this.tasklist.getTaskList().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"shuyangk"},"content":" this.storage.rewriteFile(this.tasklist.getTaskList());","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"shuyangk"},"content":" case \"todo\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"shuyangk"},"content":" Task task \u003d this.tasklist.addToDo(parser.getTodoDescription(input));","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"shuyangk"},"content":" this.ui.printAddedToListMessage(task, this.tasklist.getTaskList().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"shuyangk"},"content":" this.storage.appendToFile(task.saveString());","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"shuyangk"},"content":" case \"deadline\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"shuyangk"},"content":" Task task \u003d this.tasklist.addDeadline(parser.getDeadlineDescription(input), parser.getBy(input));","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"shuyangk"},"content":" this.ui.printAddedToListMessage(task, this.tasklist.getTaskList().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"shuyangk"},"content":" this.storage.appendToFile(task.saveString());","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"shuyangk"},"content":" case \"event\": {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"shuyangk"},"content":" Task task \u003d this.tasklist.addEvent(parser.getEventDescription(input), parser.getFrom(input),","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"shuyangk"},"content":" parser.getTo(input));","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"shuyangk"},"content":" this.ui.printAddedToListMessage(task, this.tasklist.getTaskList().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"shuyangk"},"content":" this.storage.appendToFile(task.saveString());","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"shuyangk"},"content":" case \"find\": {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"shuyangk"},"content":" String description \u003d parser.getDescription(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"shuyangk"},"content":" ArrayList\u003cTask\u003e res \u003d tasklist.searchTasks(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"shuyangk"},"content":" ui.printSearchList(res);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"shuyangk"},"content":" default: {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"shuyangk"},"content":" ui.printBotErrorMsg();","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"shuyangk"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"shuyangk"},"content":" ui.printBotMessage(e.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"shuyangk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"shuyangk"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"shuyangk"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"shuyangk"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":104,"-":1}},{"path":"src/main/java/duke/data/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" private ArrayList\u003cTask\u003e tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" public TaskList(ArrayList\u003cTask\u003e tasklist) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" this.tasklist \u003d tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" this.tasklist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" return this.tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" * Marks a Task in the TaskList","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" * Returns the Task marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" * @param input The number of the Task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" * @return The marked Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" public Task markTask(int input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":" if (input \u003c 1 || (input + 1) \u003e tasklist.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"shuyangk"},"content":" Task task \u003d tasklist.get(input - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"shuyangk"},"content":" task.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"shuyangk"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"shuyangk"},"content":" * Unmarks a Task in the TaskList","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"shuyangk"},"content":" * Returns the Task unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"shuyangk"},"content":" * @param input The number of the Task to be unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"shuyangk"},"content":" * @return The unmarked Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"shuyangk"},"content":" public Task unmarkTask(int input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"shuyangk"},"content":" if (input \u003c 1 || (input + 1) \u003e tasklist.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"shuyangk"},"content":" Task task \u003d tasklist.get(input - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"shuyangk"},"content":" task.unmark();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"shuyangk"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"shuyangk"},"content":" * Deletes a Task from the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"shuyangk"},"content":" * Returns the Task deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"shuyangk"},"content":" * @param input The number of the Task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"shuyangk"},"content":" * @return The deleted Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"shuyangk"},"content":" public Task deleteTask(int input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"shuyangk"},"content":" if (input \u003c 1 || input + 1 \u003e tasklist.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"shuyangk"},"content":" Task task \u003d tasklist.get(input - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"shuyangk"},"content":" tasklist.remove(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"shuyangk"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"shuyangk"},"content":" * Adds a new ToDo Task to the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"shuyangk"},"content":" * Returns the ToDo Task added.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"shuyangk"},"content":" * @param description Description of the Task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"shuyangk"},"content":" * @return The newly created ToDo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"shuyangk"},"content":" public Task addToDo(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"shuyangk"},"content":" Task newTask \u003d new ToDo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"shuyangk"},"content":" tasklist.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"shuyangk"},"content":" return newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"shuyangk"},"content":" * Adds a new Deadline Task to the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"shuyangk"},"content":" * Returns the Deadline Task added.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"shuyangk"},"content":" * @param description Description of the Task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"shuyangk"},"content":" * @param deadline The deadline of the Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"shuyangk"},"content":" * @return The newly created Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"shuyangk"},"content":" public Task addDeadline(String description, String deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"shuyangk"},"content":" Task newTask \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"shuyangk"},"content":" tasklist.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"shuyangk"},"content":" return newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"shuyangk"},"content":" * Searches the Tasklist for tasks with a specific description.","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"shuyangk"},"content":" * @param description Description of the Tasks to be found.","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"shuyangk"},"content":" * @return A new ArrayList of the Tasks found in the search.","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"shuyangk"},"content":" public ArrayList\u003cTask\u003e searchTasks(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"shuyangk"},"content":" ArrayList\u003cTask\u003e result \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"shuyangk"},"content":" for (Task t : this.tasklist) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"shuyangk"},"content":" if (t.getDescription().contains(description)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"shuyangk"},"content":" result.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"shuyangk"},"content":" return result;","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"shuyangk"},"content":" * Adds a new Event Task to the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"shuyangk"},"content":" * Returns the Event Task added.","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"shuyangk"},"content":" * @param description Description of the Task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"shuyangk"},"content":" * @param from The start time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"shuyangk"},"content":" * @param to The end time of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"shuyangk"},"content":" * @return The newly created Event Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"shuyangk"},"content":" public Task addEvent(String description, String from, String to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"shuyangk"},"content":" Task newTask \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"shuyangk"},"content":" tasklist.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"shuyangk"},"content":" return newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":133}},{"path":"src/main/java/duke/data/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shuyangk":7}},{"path":"src/main/java/duke/data/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" private String deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":" * Constructor to initialize Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" * @param description Description of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" * @param deadline Date of deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" LocalDate d1 \u003d LocalDate.parse(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" this.deadline \u003d d1.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" public String saveString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" return \"D\" + super.saveString() + \" | \" + this.deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" return String.format(\"[D] %s (by: %s)\", super.toString(), this.deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shuyangk":35}},{"path":"src/main/java/duke/data/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" private String start;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" private String end;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":" * Constructor to initialize Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" * @param description Description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" * @param start Start date of event.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" * @param end End date of event.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" LocalDate d1 \u003d LocalDate.parse(start);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" LocalDate d2 \u003d LocalDate.parse(end);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" this.start \u003d d1.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" this.end \u003d d2.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":" public String saveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"shuyangk"},"content":" return \"E\" + super.saveString() + \" | \" + this.start + \"-\" + this.end;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"shuyangk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"shuyangk"},"content":" return String.format(\"[E] %s (from: %s to: %s)\", super.toString(), this.start, this.end);","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shuyangk":42}},{"path":"src/main/java/duke/data/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" return this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" /** Marks task as done by setting isDone to true */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" /** Marks task as undone by setting isDone to false */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" public String saveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" return String.format(\" | %s | %s\", isDone ? 1 : 0, description);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), this.description);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shuyangk":37}},{"path":"src/main/java/duke/data/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" public String saveString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":" return \"T\" + super.saveString();","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" return String.format(\"[T] %s\", super.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shuyangk":17}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" * Obtains instruction from the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":" * @param input the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":" * @return The instruction.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" public String getInstruction(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" String[] command \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" return command[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" public String getDescription(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" String[] command \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" return command[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" public String[] splitInputFromFile(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" * Obtains description of a ToDo initilization string.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" * @param input the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" * @return The description.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" * @throws DukeException If description is missing.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":" public String getTodoDescription(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":" if (input.split(\" \", 2).length \u003c\u003d 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \", 2)[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"shuyangk"},"content":" * Obtains description of a Deadline initilization string.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"shuyangk"},"content":" * @param input the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"shuyangk"},"content":" * @return The description.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"shuyangk"},"content":" * @throws DukeException If description is missing.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"shuyangk"},"content":" public String getDeadlineDescription(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"shuyangk"},"content":" if (input.split(\"/by\", 2).length \u003c\u003d 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \", 2)[1].split(\" /by \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"shuyangk"},"content":" * Obtains deadline date of a Deadline initilization string.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"shuyangk"},"content":" * @param input the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"shuyangk"},"content":" * @return The deadline date.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"shuyangk"},"content":" * @throws DukeException If date format is wrong.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"shuyangk"},"content":" public String getBy(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"shuyangk"},"content":" if (input.split(\"/by\", 2).length \u003c\u003d 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! You forgot to include the deadline.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \", 2)[1].split(\" /by \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"shuyangk"},"content":" * Obtains description of an Event initilization string.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"shuyangk"},"content":" * @param input the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"shuyangk"},"content":" * @return The description.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"shuyangk"},"content":" * @throws DukeException If description is missing.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"shuyangk"},"content":" public String getEventDescription(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"shuyangk"},"content":" int spaceIndex \u003d input.indexOf(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"shuyangk"},"content":" if (spaceIndex \u003d\u003d -1 || spaceIndex + 1 \u003e\u003d input.length()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \", 2)[1].split(\" /from\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"shuyangk"},"content":" * Obtains start date of an Event initilization string.","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"shuyangk"},"content":" * @param input the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"shuyangk"},"content":" * @return The start date.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"shuyangk"},"content":" * @throws DukeException If date format is wrong.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"shuyangk"},"content":" public String getFrom(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"shuyangk"},"content":" if (input.split(\"/\").length \u003c\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! Missing event start date/time.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \", 2)[1].split(\" /from \")[1].split(\" /\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"shuyangk"},"content":" * Obtains end date of an Event initilization string.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"shuyangk"},"content":" * @param input the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"shuyangk"},"content":" * @return The end date.","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"shuyangk"},"content":" * @throws DukeException If date format is wrong.","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"shuyangk"},"content":" public String getTo(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"shuyangk"},"content":" if (input.split(\"/\").length \u003c\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"☹ OOPS!!! Missing event start date/time.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"shuyangk"},"content":" return input.split(\" \", 2)[1].split(\" /from \")[1].split(\"/to \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"shuyangk"},"content":" * Obtains task number from user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"shuyangk"},"content":" * @param input the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"shuyangk"},"content":" * @return The task number.","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"shuyangk"},"content":" public int getTaskNumber(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"shuyangk"},"content":" String result \u003d input.split(\" \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"shuyangk"},"content":" return Integer.parseInt(result);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":124}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" public final Path filepath;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" public final String path;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" this.filepath \u003d Paths.get(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" this.path \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" * Returns true if the given path is acceptable as a storage file.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" * The file path is considered acceptable if it ends with \u0027.txt\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":" private static boolean isValidPath(Path filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":" return filePath.toString().endsWith(\".txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"shuyangk"},"content":" * Overwrites content in a file with new content.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"shuyangk"},"content":" * @param textToAdd String to be added to file.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"shuyangk"},"content":" * @throws IOException if writing to file is not allowed.","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"shuyangk"},"content":" public void writeToFile(String textToAdd) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"shuyangk"},"content":" FileWriter fw \u003d new FileWriter(this.path);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"shuyangk"},"content":" fw.write(textToAdd);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"shuyangk"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"shuyangk"},"content":" * Appends a new line of content to a file.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"shuyangk"},"content":" * @param textToAppend String to be appended to file.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"shuyangk"},"content":" * @throws IOException if writing to file is not allowed.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"shuyangk"},"content":" public void appendToFile(String textToAppend) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"shuyangk"},"content":" FileWriter fw \u003d new FileWriter(this.path, true); // create a FileWriter in append mode","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"shuyangk"},"content":" fw.write(textToAppend);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"shuyangk"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"shuyangk"},"content":" * Rewrites the whole txt file.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"shuyangk"},"content":" * @param tasklist ArrayList of tasks to write to file.","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"shuyangk"},"content":" public void rewriteFile(ArrayList\u003cTask\u003e tasklist) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"shuyangk"},"content":" writeToFile(tasklist.get(0).saveString() + System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"shuyangk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"shuyangk"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"shuyangk"},"content":" for (int i \u003d 1; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"shuyangk"},"content":" appendToFile(tasklist.get(i).saveString() + System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"shuyangk"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"shuyangk"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"shuyangk"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"shuyangk"},"content":" * Loads content from text file into an ArrayList of Tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"shuyangk"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"shuyangk"},"content":" * @return ArrayList of Tasks with content of text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"shuyangk"},"content":" * @throws FileNotFoundException if file is not valid.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"shuyangk"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"shuyangk"},"content":" public ArrayList\u003cTask\u003e loadTasks() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"shuyangk"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"shuyangk"},"content":" File f \u003d new File(this.getPath());","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"shuyangk"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"shuyangk"},"content":" ArrayList\u003cTask\u003e tasklist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"shuyangk"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"shuyangk"},"content":" String nextTask \u003d s.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"shuyangk"},"content":" String[] input \u003d nextTask.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"shuyangk"},"content":" String category \u003d input[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"shuyangk"},"content":" String status \u003d input[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"shuyangk"},"content":" String description \u003d input[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"shuyangk"},"content":" switch (category) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"shuyangk"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"shuyangk"},"content":" Task todoTask \u003d new ToDo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"shuyangk"},"content":" if (!status.equals(\"0\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"shuyangk"},"content":" todoTask.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"shuyangk"},"content":" tasklist.add(todoTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"shuyangk"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"shuyangk"},"content":" String deadline \u003d input[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"shuyangk"},"content":" Task deadlineTask \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"shuyangk"},"content":" if (!status.equals(\"0\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"shuyangk"},"content":" deadlineTask.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"shuyangk"},"content":" tasklist.add(deadlineTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"shuyangk"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"shuyangk"},"content":" String from \u003d input[3].split(\"-\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"shuyangk"},"content":" String to \u003d input[3].split(\"-\")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"shuyangk"},"content":" Task eventTask \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"shuyangk"},"content":" if (!status.equals(\"0\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"shuyangk"},"content":" eventTask.mark();","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"shuyangk"},"content":" tasklist.add(eventTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"shuyangk"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"shuyangk"},"content":" return tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"shuyangk"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"shuyangk"},"content":" throw new DukeException(\"File Cannot be Found\");","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"shuyangk"},"content":" public String getPath() {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"shuyangk"},"content":" return filepath.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":137}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":" private String dottedLine \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":" public void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" public void greet() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" \"Hello! I\u0027m Charlie\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" \"What can I do for you?\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" public void exitBot() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" \"Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" public void printMarkedMessage(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":" \"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"shuyangk"},"content":" task.toString() + \"\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"shuyangk"},"content":" dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"shuyangk"},"content":" public void printUnmarkedMessage(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"shuyangk"},"content":" \"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"shuyangk"},"content":" task.toString() + \"\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"shuyangk"},"content":" dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"shuyangk"},"content":" public void printAddedToListMessage(Task task, int size) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"shuyangk"},"content":" System.out.println(\"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"shuyangk"},"content":" \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"shuyangk"},"content":" task.toString() +","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"shuyangk"},"content":" \"\\nNow you have \" + size + \" tasks in the list.\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"shuyangk"},"content":" \"\\n____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"shuyangk"},"content":" public void printDeletedMessage(Task task, int size) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"shuyangk"},"content":" System.out.println(\"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"shuyangk"},"content":" \"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"shuyangk"},"content":" task +","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"shuyangk"},"content":" \"\\nNow you have \" + size + \" tasks in the list.\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"shuyangk"},"content":" \"\\n____________________________________________________________\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"shuyangk"},"content":" public void invalidTaskNumber() {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"shuyangk"},"content":" \"☹ OOPS!!! The task number is invalid.\\n\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"shuyangk"},"content":" dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"shuyangk"},"content":" public void printBotErrorMsg() {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"shuyangk"},"content":" \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\" +","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"shuyangk"},"content":" \"\\n\" + dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"shuyangk"},"content":" public void printBotMessage(String msg) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"shuyangk"},"content":" msg +","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"shuyangk"},"content":" \"\\n\" + dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"shuyangk"},"content":" public void printSearchList(ArrayList\u003cTask\u003e arr) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"shuyangk"},"content":" \"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"shuyangk"},"content":" for (Task t : arr) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"shuyangk"},"content":" System.out.printf(\"%d. %s%n\", arr.indexOf(t) + 1, t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"shuyangk"},"content":" public void printList(ArrayList\u003cTask\u003e arr) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine +","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"shuyangk"},"content":" \"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"shuyangk"},"content":" for (Task t : arr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"shuyangk"},"content":" System.out.printf(\"%d. %s%n\", arr.indexOf(t) + 1, t.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"shuyangk"},"content":" System.out.println(dottedLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":94}},{"path":"src/test/java/duke/data/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.data;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import duke.data.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":"import duke.data.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" public void TaskList_addTask_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":" TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" assertEquals(0, tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" tasklist.addTodo(\"this\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" assertEquals(1, tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" public void TaskList_deleteTask_success() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" assertEquals(0, tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" tasklist.addTodo(\"this\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":" assertEquals(1, tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"shuyangk"},"content":" tasklist.deleteTask(1);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"shuyangk"},"content":" assertEquals(1, tasklist.getTasklist().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":31}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"package duke.parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"import duke.data.exception.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":" public void parser_getInstruction_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":" assertEquals(\"todo\", new Parser().getInstruction(\"todo this\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"shuyangk"},"content":" public void parser_getDeadlineDetail_success() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"shuyangk"},"content":" assertEquals(\"this\", new Parser().getDeadlineDescription(\"deadline this /by now\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"shuyangk"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"shuyangk"},"content":" public void parser_getFrom_success() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"shuyangk"},"content":" assertEquals(\"now\", new Parser().getFrom(\"event this /from now /to then\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"shuyangk"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"shuyangk"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"shuyangk"},"content":" public void parser_getTaskNumber_success() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"shuyangk"},"content":" assertEquals(2, new Parser().getTaskNumber(\"mark 2\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"shuyangk"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"shuyangk"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"shuyangk":26}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shuyangk"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"shuyangk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"shuyangk"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shuyangk"},"content":"deadline return book /by Monday","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shuyangk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shuyangk"},"content":"event dinner /from Thursday 6pm /to 8pm","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shuyangk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shuyangk"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shuyangk"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shuyangk"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shuyangk"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shuyangk"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shuyangk":12}}] diff --git a/shuyangk_ip_master/commits.json b/shuyangk_ip_master/commits.json index f332a36e..bf5aae98 100644 --- a/shuyangk_ip_master/commits.json +++ b/shuyangk_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"shuyangk":[{"date":"2023-08-23","commitResults":[{"hash":"d6071fed26222b34b5c7bc90e521e19f4d75d98c","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0.-Rename,-Greet,-Exit"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"6c864b49e77fbed61d2127b7941ba1c5a48c34eb","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1.-Echo"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"e171297cb7f61bef5643e22cb2e9b4e2353b49d7","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2.-Add,-List"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"ec9f62595fc35c957f954348c0c4321b325fef5a","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done, added Task class","messageBody":"","tags":["Level-3.-Mark-as-Done"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":14}}},{"hash":"71654bd6751d75ef207d2a75d711e4e2bde7f305","isMergeCommit":false,"messageTitle":"added Deadline, ToDo, Event classes and functions","messageBody":"","tags":["Level-4.-ToDos,-Events,-Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":14}}},{"hash":"2279681f07b47d8ea1211d94e662db84d065b7ee","isMergeCommit":false,"messageTitle":"implemented UI testing, fixed string displays","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":14,"deletions":13}}},{"hash":"4e57e1a0a21f0b9362378309e9ff4c50fdce48cf","isMergeCommit":false,"messageTitle":"added DukeException class, exception handling","messageBody":"","tags":["Level-5.-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":12}}},{"hash":"e1bdeca775402e6d7ac6bdd5e4285738d9906cca","isMergeCommit":false,"messageTitle":"changed array of tasks to arraylist, added delete functionality.","messageBody":"","tags":["Level-6.-Delete"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":27}}}]},{"date":"2023-08-30","commitResults":[{"hash":"df17c8e326eef0413a92d9043991f40d9ce7215d","isMergeCommit":false,"messageTitle":"Added methods to write to text file, and read from text file.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":178,"deletions":73}}},{"hash":"8dba213f6347ae75270703d9f9c03c703d0d3ef5","isMergeCommit":false,"messageTitle":"Added functionality for chatbot to recognise date and time in specific formats","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":29,"deletions":10}}},{"hash":"2e9530ae14998663d522f7670d43b9d0c8f3a301","isMergeCommit":false,"messageTitle":"Revert \"Added functionality for chatbot to recognise date and time in specific formats\"","messageBody":"This reverts commit 8dba213f6347ae75270703d9f9c03c703d0d3ef5.\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":10,"deletions":29}}}]},{"date":"2023-08-31","commitResults":[{"hash":"4c859e81f748f253c01854caed6818b0b1afc911","isMergeCommit":false,"messageTitle":"Added functionality to read from and write to text file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":179,"deletions":77}}},{"hash":"6f9711c62a4e90ab667fef9e428b5d7bf1573648","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"# Conflicts:\n#\tdata/duke.txt\n#\tsrc/main/java/Deadline.java\n#\tsrc/main/java/Duke.java\n#\tsrc/main/java/Event.java\n#\tsrc/main/java/ToDo.java\n","fileTypesAndContributionMap":{}},{"hash":"54c60eb0717c8b50a8ca45bc5a112fba86372ffb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/shuyangk/ip","messageBody":"# Conflicts:\n#\tdata/duke.txt\n#\tsrc/main/java/Event.java\n","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"9e994c4f505a6fa8d64b013ad64494d8b627d818","isMergeCommit":false,"messageTitle":"Added functionality for chatbot to recognise date formats","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":12},"java":{"insertions":20,"deletions":129}}},{"hash":"bcba44c333207af98538714758156941dbc39688","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"a230832f1e56753465ccac04e25cb21b0bd1cb03","isMergeCommit":false,"messageTitle":"Added Parser, Storage, TaskList, Ui classes for OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":401,"deletions":286}}},{"hash":"49cc3776bcf29785b80c16886f9140e9eabe7cd0","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"0319edd23e3766e1c1393bae75285256a7689352","isMergeCommit":false,"messageTitle":"Packaged classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":2}}},{"hash":"5dec0909b1b8aab90661a9adc9ddcf5b2a92c58c","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"02f47ab777064fdf47b7d9e28028dfc8fb7daeb8","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a77cb8ce5bbeee0080d029ccbc371793d5efe9e2","isMergeCommit":false,"messageTitle":"Edited mainClass name","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":0}}},{"hash":"8d5abf58e30983f10073544cd0f757ac9e728487","isMergeCommit":false,"messageTitle":"Added JUnit tests for a few classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":0}}},{"hash":"62752170427f525d1f534ad242f708746e8afbc7","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"f31b2272854f30e0b6f19c4946108b9d28eb30b3","isMergeCommit":false,"messageTitle":"Created JAR file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"d3ad9520c69356f7678a3ba7bcab415b9c60cde2","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"shuyangk":{"java":629,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":15}},"authorContributionVariance":{"shuyangk":108302.69},"authorDisplayNameMap":{"shuyangk":"CS2103T-W11-3 KOH ..YANG"}} +{"authorDailyContributionsMap":{"shuyangk":[{"date":"2023-08-23","commitResults":[{"hash":"d6071fed26222b34b5c7bc90e521e19f4d75d98c","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0.-Rename,-Greet,-Exit"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"6c864b49e77fbed61d2127b7941ba1c5a48c34eb","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1.-Echo"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"e171297cb7f61bef5643e22cb2e9b4e2353b49d7","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2.-Add,-List"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"ec9f62595fc35c957f954348c0c4321b325fef5a","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done, added Task class","messageBody":"","tags":["Level-3.-Mark-as-Done"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":14}}},{"hash":"71654bd6751d75ef207d2a75d711e4e2bde7f305","isMergeCommit":false,"messageTitle":"added Deadline, ToDo, Event classes and functions","messageBody":"","tags":["Level-4.-ToDos,-Events,-Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":14}}},{"hash":"2279681f07b47d8ea1211d94e662db84d065b7ee","isMergeCommit":false,"messageTitle":"implemented UI testing, fixed string displays","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":14,"deletions":13}}},{"hash":"4e57e1a0a21f0b9362378309e9ff4c50fdce48cf","isMergeCommit":false,"messageTitle":"added DukeException class, exception handling","messageBody":"","tags":["Level-5.-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":12}}},{"hash":"e1bdeca775402e6d7ac6bdd5e4285738d9906cca","isMergeCommit":false,"messageTitle":"changed array of tasks to arraylist, added delete functionality.","messageBody":"","tags":["Level-6.-Delete"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":27}}}]},{"date":"2023-08-30","commitResults":[{"hash":"df17c8e326eef0413a92d9043991f40d9ce7215d","isMergeCommit":false,"messageTitle":"Added methods to write to text file, and read from text file.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":178,"deletions":73}}},{"hash":"8dba213f6347ae75270703d9f9c03c703d0d3ef5","isMergeCommit":false,"messageTitle":"Added functionality for chatbot to recognise date and time in specific formats","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":29,"deletions":10}}},{"hash":"2e9530ae14998663d522f7670d43b9d0c8f3a301","isMergeCommit":false,"messageTitle":"Revert \"Added functionality for chatbot to recognise date and time in specific formats\"","messageBody":"This reverts commit 8dba213f6347ae75270703d9f9c03c703d0d3ef5.\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":10,"deletions":29}}}]},{"date":"2023-08-31","commitResults":[{"hash":"4c859e81f748f253c01854caed6818b0b1afc911","isMergeCommit":false,"messageTitle":"Added functionality to read from and write to text file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":179,"deletions":77}}},{"hash":"6f9711c62a4e90ab667fef9e428b5d7bf1573648","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"# Conflicts:\n#\tdata/duke.txt\n#\tsrc/main/java/Deadline.java\n#\tsrc/main/java/Duke.java\n#\tsrc/main/java/Event.java\n#\tsrc/main/java/ToDo.java\n","fileTypesAndContributionMap":{}},{"hash":"54c60eb0717c8b50a8ca45bc5a112fba86372ffb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/shuyangk/ip","messageBody":"# Conflicts:\n#\tdata/duke.txt\n#\tsrc/main/java/Event.java\n","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"9e994c4f505a6fa8d64b013ad64494d8b627d818","isMergeCommit":false,"messageTitle":"Added functionality for chatbot to recognise date formats","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":12},"java":{"insertions":20,"deletions":129}}},{"hash":"bcba44c333207af98538714758156941dbc39688","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"a230832f1e56753465ccac04e25cb21b0bd1cb03","isMergeCommit":false,"messageTitle":"Added Parser, Storage, TaskList, Ui classes for OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":401,"deletions":286}}},{"hash":"49cc3776bcf29785b80c16886f9140e9eabe7cd0","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"0319edd23e3766e1c1393bae75285256a7689352","isMergeCommit":false,"messageTitle":"Packaged classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":2}}},{"hash":"5dec0909b1b8aab90661a9adc9ddcf5b2a92c58c","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"02f47ab777064fdf47b7d9e28028dfc8fb7daeb8","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a77cb8ce5bbeee0080d029ccbc371793d5efe9e2","isMergeCommit":false,"messageTitle":"Edited mainClass name","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":0}}},{"hash":"8d5abf58e30983f10073544cd0f757ac9e728487","isMergeCommit":false,"messageTitle":"Added JUnit tests for a few classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":0}}},{"hash":"62752170427f525d1f534ad242f708746e8afbc7","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"f31b2272854f30e0b6f19c4946108b9d28eb30b3","isMergeCommit":false,"messageTitle":"Created JAR file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"d3ad9520c69356f7678a3ba7bcab415b9c60cde2","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"09e2a8697099c5524e4e56fd9d4f0da664b942ef","isMergeCommit":false,"messageTitle":"Format code to follow coding standard","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":2},"java":{"insertions":55,"deletions":20}}},{"hash":"2b58b87cab9d7ca8a852302b17b5fb22e77a9519","isMergeCommit":false,"messageTitle":"Add JavaDocs to the code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":23}}},{"hash":"fd5d99aefd60fc0454fd01d817b7858c54c92d79","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"27d1657a7569ce633bad56f279fd4586e32506be","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-JavaDoc\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/data/TaskList.java\n#\tsrc/main/java/duke/data/task/Task.java\n#\tsrc/main/java/duke/ui/Ui.java\n","fileTypesAndContributionMap":{}},{"hash":"e3de99e4c801b250cc98a8271ecdaf5dc75014d6","isMergeCommit":false,"messageTitle":"Minor fixes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"38fdc37ff7aa98d0232280c33d2c0edc07c7b49f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Duke.java\n","tags":["Level-9","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"shuyangk":{"java":787,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":18}},"authorContributionVariance":{"shuyangk":101783.53},"authorDisplayNameMap":{"shuyangk":"CS2103T-W11-3 KOH ..YANG"}} diff --git a/sk2001git_ip_master/authorship.json b/sk2001git_ip_master/authorship.json index 3176a657..0d793170 100644 --- a/sk2001git_ip_master/authorship.json +++ b/sk2001git_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"sk2001git":2,"-":41}},{"path":"data/dukeTest.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"T | false | Yoop","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"D | false | weewoop | Aug-25-2023 1800 PM","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"E | false | test | Aug-25-2023 1900 PM | Aug-25-2023 1800 PM","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":3}},{"path":"src/main/java/duke/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent the different commands that can be given to the chatbot","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public enum Command {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" LIST,","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" MARK,","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" UNMARK,","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" BYE,","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" TODO,","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" DEADLINE,","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" EVENT,","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" DELETE,","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" FIND;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" * This array is used to represent the valid commands that can be given to the chatbot","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" public static final String[] validCommands \u003d","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" {\"list\", \"bye\", \"todo \u003ctask_name\u003e\", \"deadline \u003ctask_name\u003e /by \u003cdeadline\u003e\",","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" \"event \u003ctask_name\u003e /from \u003cstart-time\u003e /to \u003cend-time\u003e\", \"mark \u003cnumber\u003e\",","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" \"unmark \u003cnumber\u003e\", \"delete \u003cnumber\u003e\", \"find \u003ckeyword\u003e\"};","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" * This method is used to get the command from the user\u0027s input","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s input","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" * @return the command","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" * @throws InvalidInputException if the input is invalid","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" public static Command getCommand(String input) throws InvalidInputException {","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" String[] inputtedWords \u003d input.split(\" \");","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" // Command word should always be first word without space","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" String commandWord \u003d inputtedWords[0];","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" if (commandWord.equals(\"list\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" return Command.LIST;","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.equals(\"bye\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" return Command.BYE;","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" return Command.MARK;","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" return Command.UNMARK;","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" return Command.TODO;","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" return Command.DEADLINE;","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"event\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" return Command.EVENT;","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" return Command.DELETE;","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"find\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" return Command.FIND;","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" throw new InvalidInputException();","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"sk2001git":58}},{"path":"src/main/java/duke/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent the date and time of a task.","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":"public class DateTime {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" private String inputDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a DateTime object","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" * @param dateTime the date and time in string format","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" private DateTime(String inputDateTime, LocalDateTime dateTime) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" this.inputDateTime \u003d inputDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" * Creates a DateTime object based on whether there is a valid input","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s input","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" * @return a DateTime object","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" public static DateTime createDateTime(String input) throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" if (DateTimeParser.isValidDateTime(input)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" return new DateTime(input, DateTimeParser.createLocalDateTime(input));","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Invalid date and time format\",","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" \"Please enter a valid date and time format\");","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" * Creates a DateTime object based on the input from storage","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" * @param input the input from storage","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" * @return a DateTime object","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" public static DateTime createDateTimeFromStorage(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" return new DateTime(input, DateTimeParser.createLocalDateTime(input));","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Unable to create DateTime object from storage\" + e.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" return null;","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" * Gets the date and time in string format","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" * @return the date and time in string format","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" for (String dateTimeOutput: DateTimeParser.VALID_DATE_TIME_FORMAT_OUTPUT) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(dateTimeOutput);","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" String formattedTime \u003d this.dateTime.format(outputFormatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" return formattedTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Unable to output date and time for Date Time object\" + e.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" return this.dateTime.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" return this.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":74}},{"path":"src/main/java/duke/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" * This class is used to parse the date and time from the user input.","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":"public class DateTimeParser {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" // Note that we take \"MMM-dd-yyyy HHmm a\" and \"MMM-d-yyyy HHmm a\" as valid date and time formats because","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" // we store the date and time in this format in the storage file. Therefore, in order to convert it back","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" // to DateTime, we need to take these formats as valid.","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" public static final String[] VALID_DATE_TIME_FORMAT \u003d {\"dd/MM/yyyy HHmm\", \"d/MM/yyyy HHmm\",","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" \"MMM-dd-yyyy HHmm a\", \"MMM-d-yyyy HHmm a\"};","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" public static final String[] VALID_DATE_TIME_FORMAT_OUTPUT \u003d {\"MMM-dd-yyyy HHmm a\", \"MMM-d-yyyy HHmm a\"};","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" * Checks if the input is a valid date and time format","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s input","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" * @return true if the input is a valid date and time format, false otherwise","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" public static boolean isValidDateTime(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" for (String format : VALID_DATE_TIME_FORMAT) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" LocalDateTime.parse(input, DateTimeFormatter.ofPattern(format));","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" // do nothing","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" * Creates a LocalDateTime object based on the input","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" * @param validDateTime a valid Date Time formatted String already checked by isValidDateTime","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" * @return a LocalDateTime object","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException if the input is not a valid date and time format","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" public static LocalDateTime createLocalDateTime(String validDateTime) throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" for (String format : VALID_DATE_TIME_FORMAT) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(validDateTime, DateTimeFormatter.ofPattern(format));","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" return dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" // do nothing","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Invalid date and time format\",","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" \"Please enter a valid date and time format\");","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" * Warns the user to follow a certain date and time format","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" * @return a String message to warn the user to follow a certain date and time format","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" public static String getValidDateTimeFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" String message \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" message +\u003d \"Please enter a valid date and time format seen below\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" for (int i \u003d 0; i \u003c VALID_DATE_TIME_FORMAT.length; i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" message +\u003d VALID_DATE_TIME_FORMAT[i] + \"\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" return message;","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":67}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * Deadline encapsulates task that need to be done before a specific date or time","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" private String taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" private String deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private DateTime dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a task","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" public Deadline(String taskName, DateTime dateTime) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" super(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" this.deadline \u003d dateTime.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a task based on whether its done or not","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" * @param isDone whether the task is done or not","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" * @param dateTime the date and time of the deadline stored in a DateTime object","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" public Deadline(String taskName, boolean isDone, DateTime dateTime) {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" super(taskName);","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" if (isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" super.quietlyCompleteTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" this.deadline \u003d dateTime.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" * taskValidator does nothing if there are no wrong inputs but throws a WrongInputException","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" * if inputs are invalid","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s string input","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException which informs the user of the error and actions to take","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" public static void taskValidator(String input) throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" String[] segementedString \u003d input.split(\" /by \");","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" if (segementedString.length \u003c 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"/by command is required\",","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" \"Use the /by command using \u0027deadline \u003cname\u003e /by \u003ctime\u003e\");","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" String deadline \u003d segementedString[1];","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" String taskNameDeadline \u003d segementedString[0].substring(Parser.DEADLINEOFFSET);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Task name cannot be blank\",","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" \"Enter a non-blank deadline task name\");","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" String taskNameDeadline \u003d segementedString[0].substring(Parser.DEADLINEOFFSET);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" if (taskNameDeadline.trim().isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Task name cannot be blank\",","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" \"Enter a non-blank deadline task name\");","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" } else if (deadline.trim().isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"for /by \u003ctime\u003e, time cannot be blank\",","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" \"Please input valid text that are not space\");","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" } else if (!DateTimeParser.isValidDateTime(deadline)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Invalid date and time format\",","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" DateTimeParser.getValidDateTimeFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" * Converts a Deadline task into a string that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" * @return a string that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" public String convertToSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" return \"D\" + Storage.FILESEPERATORCHARACTER + this.isDone() + Storage.FILESEPERATORCHARACTER + this.taskName","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" + Storage.FILESEPERATORCHARACTER + this.dateTime.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" return \"[D]\" + \"[\" + this.getStatusIcon() + \"] \"","lastModifiedDate":"2023-08-21"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" + this.taskName + \" (by: \" + this.dateTime + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"sk2001git":90}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * Class to encapsulate the whole chatbot and its functionality","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" private final Parser parser;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" private final SearchEngine searchEngine;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" * Constructor for Duke","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" * @param filePath the path of the file","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" this.storage \u003d Storage.createStorage(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" this.taskList \u003d new TaskList(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" this.searchEngine \u003d new SearchEngine(this.ui);","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" this.parser \u003d new Parser(this.taskList, this.storage, this.ui, this.searchEngine);","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" * Runs the chatbot","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" public void run() {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" this.ui.showWelcome();","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" boolean hasCommands \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" while (hasCommands) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" String input \u003d this.ui.readCommand();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" Command command \u003d Command.getCommand(input);","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" this.parser.parse(input, command);","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" hasCommands \u003d this.parser.shouldContinue();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" } catch (InvalidInputException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" this.ui.showCommandError(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" new Duke(\"./data/duke.txt\").run();","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"sk2001git":47,"-":3}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * Event encapsulates task that starts at a specific date / time and","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" * ends at a specific date/time","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" private String taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private String startTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" private String endTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" private DateTime start;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" private DateTime end;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating an Event","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" public Event(String taskName, DateTime start, DateTime end) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" super(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" this.startTime \u003d start.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" this.endTime \u003d end.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating an Event based on whether its done or not","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" * @param isDone whether the task is done or not","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" * @param start the start time of the event","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" * @param end the end time of the event","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" public Event(String taskName, boolean isDone, DateTime start, DateTime end) {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" super(taskName);","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" if (isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" super.quietlyCompleteTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" this.startTime \u003d start.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" this.endTime \u003d end.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" * taskValidator does nothing if there are no wrong inputs but throws a WrongInputException","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" * if inputs are invalid","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s string input","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException which informs the user of the error and actions to take","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" public static void taskValidator(String input) throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" String[] segmentedViaFrom \u003d input.split(\" /from \");","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" if (segmentedViaFrom.length \u003c 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"/from command is required\",","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" \"Use the /from command in \u0027event \u003cevent_name\u003e /from \u003cstart\u003e /to \u003cend\u003e\u0027\");","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" String taskNameEvent \u003d segmentedViaFrom[0].substring(Parser.EVENTOFFSET);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Task name cannot be blank\", \"Enter a non-blank name\");","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" String taskNameEvent \u003d segmentedViaFrom[0].substring(Parser.EVENTOFFSET);","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" String[] segmentedViaTo \u003d segmentedViaFrom[1].split(\" /to \");","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" if (segmentedViaTo.length \u003c 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"/to command is required\",","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" \"Use the /to command in \u0027event \u003cevent_name\u003e /from \u003cstart\u003e /to \u003cend\u003e\u0027\");","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" String start \u003d segmentedViaTo[0];","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" String end \u003d segmentedViaTo[1];","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" if (taskNameEvent.trim().isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Task name cannot be blank\", \"Enter a non-blank name\");","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" } else if (start.trim().isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"/from \u003ccontent\u003e, content cannot be blank\",","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" \"Enter non-blank text after /from \");","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" } else if (end.trim().isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"/to \u003ccontent\u003e, content cannot be blank\", \"Enter text after /to \");","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" } else if (!DateTimeParser.isValidDateTime(start)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Invalid date and time format for /from \u003cdatetime\u003e\",","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" DateTimeParser.getValidDateTimeFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" } else if (!DateTimeParser.isValidDateTime(end)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Invalid date and time format for /to \u003cdatetime\u003e\",","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" DateTimeParser.getValidDateTimeFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" * Converts an Event task into a string that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" * @return a string that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" public String convertToSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" return \"E\" + Storage.FILESEPERATORCHARACTER + this.isDone() + Storage.FILESEPERATORCHARACTER + this.taskName","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":" + Storage.FILESEPERATORCHARACTER + this.end.toString() + Storage.FILESEPERATORCHARACTER","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" + this.start.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" return \"[E]\" + \"[\" + this.getStatusIcon() + \"] \"","lastModifiedDate":"2023-08-21"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" + this.taskName + \" (from: \"","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":" + this.start.toString() + \" to: \" + this.end.toString() + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":107,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"sk2001git":107}},{"path":"src/main/java/duke/FileManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent the Management of the files","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" * TODO: Remove this class it is not needed","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":"public class FileManager {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" * Reads a file given the file path","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" * @param filePath the path directory to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" * @throws FileNotFoundException","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" public void readFile(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" System.out.println(data);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" * Writes to a file when given the file path","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" * @param filePath the path directory to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" * @param textToAdd the text to add to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" * @return true if the file is written successfully, false otherwise","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" * @throws IOException if there is an error in writing the file","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" public boolean writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" fileWriter.write(textToAdd);","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"An error occurred in writing the file.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":48}},{"path":"src/main/java/duke/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent an exception thrown when an invalid command is given","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public class InvalidInputException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating an InvalidInputException","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" public InvalidInputException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" super(\"Invalid command given.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"sk2001git":15}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":" * Parser class that handles the parsing of user input","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":" public static final int DEADLINEOFFSET \u003d 9;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" public static final int EVENTOFFSET \u003d 6;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" private final SearchEngine searchEngine;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" private boolean hasCommands \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" * Constructor for Parser","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" * @param taskList the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" * @param storage the storage","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" * @param ui the ui","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" public Parser(TaskList taskList, Storage storage, Ui ui, SearchEngine searchEngine) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" this.searchEngine \u003d searchEngine;","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" * Parses the user input and executes the relevant command","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s input","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" * @param command the command to be executed","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" public void parse(String input, Command command) {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" int totalItemNumber \u003d this.taskList.length();","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" // Split the string based on spaces","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" String[] splitString \u003d input.split(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" switch (command) {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" case BYE:","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" this.ui.terminate();","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" hasCommands \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" case LIST:","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" this.ui.list(this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" case UNMARK:","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" // Order matters, if we check for marks first, unmark falls under mark loop","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" // Split the string based on spaces","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" // The input after the mark word should be task no (which should be index 1)","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" int taskNumberUnmark \u003d Integer.parseInt(splitString[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" // The above should throw a NumberFormatException","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" this.taskList.unmarkTask(taskNumberUnmark - 1, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" case MARK:","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" // The input after the mark word should be task no (which should be index 1)","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" int taskNumberMark \u003d Integer.parseInt(splitString[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" // The above should throw a NumberFormatException if not the right number","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" this.taskList.markTask(taskNumberMark - 1, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" case TODO:","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" // Test whether a ToDos input is valid","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" ToDos.taskValidator(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" // for To-Dos anything after the command is task name","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" Task toDo \u003d new ToDos(input.substring(5));","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" totalItemNumber++;","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" this.taskList.addTask(toDo, totalItemNumber, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" // Test whether a deadline\u0027s input is valid","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" Deadline.taskValidator(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" // for Deadline is slightly more complex, we will split by /by","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" String[] segementedString \u003d input.split(\" /by \");","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" // We should only have 2 segments for the Array, before and after","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" String deadline \u003d segementedString[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" // Hardcoded because we know how words are positioned","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" String taskNameDeadline \u003d segementedString[0].substring(DEADLINEOFFSET);","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" DateTime deadlineDateTime \u003d DateTime.createDateTime(deadline);","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" Task deadlineTask \u003d new Deadline(taskNameDeadline, deadlineDateTime);","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" totalItemNumber++;","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" this.taskList.addTask(deadlineTask, totalItemNumber, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" case EVENT:","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" // Test whether an event\u0027s input is valid","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" Event.taskValidator(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" // Event, split string twice to get relevant component","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" String[] segmentedViaBy \u003d input.split(\" /from \");","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":" String taskNameEvent \u003d segmentedViaBy[0].substring(EVENTOFFSET);","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":" String[] segmentedViaTo \u003d segmentedViaBy[1].split(\" /to \");","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" String start \u003d segmentedViaTo[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" DateTime startDateTime \u003d DateTime.createDateTime(start);","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" String end \u003d segmentedViaTo[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" DateTime endDateTime \u003d DateTime.createDateTime(end);","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" Task event \u003d new Event(taskNameEvent, startDateTime, endDateTime);","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" totalItemNumber++;","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":" this.taskList.addTask(event, totalItemNumber, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" case DELETE:","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":" int taskNumberDelete \u003d Integer.parseInt(splitString[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":" totalItemNumber--;","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" this.taskList.deleteTask(taskNumberDelete - 1, totalItemNumber, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" case FIND:","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":" searchEngine.searchValidator(input);","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":" String keyword \u003d input.split(\" \")[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"sk2001git"},"content":" TaskList searchResult \u003d this.searchEngine.search(keyword);","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"sk2001git"},"content":" this.ui.showSearchResult(searchResult);","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"sk2001git"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"sk2001git"},"content":" // If we mark a task number outside the range","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"sk2001git"},"content":" System.out.println(e + \"\\nPlease enter a valid task number from list\");","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"sk2001git"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"sk2001git"},"content":" // If we mark a non int task number","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Enter a valid task number that is a integer shown in list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"sk2001git"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"sk2001git"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"sk2001git"},"content":" // To catch invalid number inputs for delete","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Please enter a valid task number from the range in list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"sk2001git"},"content":" public boolean shouldContinue() {","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"sk2001git"},"content":" return this.hasCommands;","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":128}},{"path":"src/main/java/duke/SearchEngine.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * Class to encapsulate the search engine","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public class SearchEngine {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" private Ui ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private Storage searchStorage;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" * Constructor for SearchEngine","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" * @param ui the ui","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" public SearchEngine(Ui ui) {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" this.searchStorage \u003d Storage.createStorage(\"./data/search.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" * Searches the taskList for tasks that contain the input","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" * @param input","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" * @return","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" public TaskList search(String input) {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" // Clear before every search to prevent file corruption","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" this.searchStorage.clearFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" TaskList taskList \u003d new TaskList(\"./data/duke.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" TaskList filteredList \u003d new TaskList(\"./data/search.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" for (int i \u003d 0; i \u003c taskList.length(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" Task task \u003d taskList.getTaskObject(i);","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" if (task.getTaskName().contains(input)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" filteredList.addTaskQuietly(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" return filteredList;","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" * Validates the input to ensure its not an empty string","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" * @param input the input to be validated","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" * @return true if the input is valid","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" public boolean searchValidator(String input) throws WrongInputException {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" if (input.split(\"find\").length \u003c 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"find \u003ctext\u003e\", \"type find followed by non-space characters\");","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" String check \u003d input.split(\"find\")[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" if (check.trim().isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"\u003ctext\u003e cannot be empty\", \"type non-space characters\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" ","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"sk2001git":56}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent the storage of the chat bot","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" public static final String FILESEPERATORCHARACTER \u003d \" | \";","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" private final String filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" private final File file;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a Storage object","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" * @param filePath the path of the file","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" * @param file the file","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" private Storage(String filePath, File file) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" this.file \u003d file;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" * Factory method to creates a Storage object","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" * @param filePath the path of the file","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" * @return Storage containing the file path and file","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" public static Storage createStorage(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" if (isValidFile(filePath)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"File detected, loading file\");","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" return new Storage(filePath, new File(filePath));","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"File not detected, creating file\");","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" File file \u003d createFile(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" return new Storage(filePath, file);","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" * Checks if a file exists and is not a directory","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" * @param filePath the path of the file","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" * @return true if the file exists and is not a directory, false otherwise","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" public static boolean isValidFile(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" return file.exists() \u0026\u0026 !file.isDirectory();","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" * Creates a directory if it does not exist","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" * @param directoryPath the path of the directory","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" public static void createDirectory(String directoryPath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" if (directory.exists() \u0026\u0026 directory.isDirectory()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Directory already exists\");","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" if (directory.mkdir()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Directory has been created\");","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Directory could not be created\");","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" * Creates a file if it does not exist","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" * @param filePath","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" * @return File object","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" * @throws IOException if the file could not be created","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" public static File createFile(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"File created sucessfully\");","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"File could not be created\");","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" return file;","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" * Reads the file in the Storage object and prints out its data","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":" * @throws FileNotFoundException","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" public void readFile() throws FileNotFoundException {","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" System.out.println(data);","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" * Writes to the file in the Storage object","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" * @param textToAdd the text to add to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" * @return true if the write was successful, false otherwise","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":" public boolean writeToFile(String textToAdd) {","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"sk2001git"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"sk2001git"},"content":" fileWriter.write(textToAdd + System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"sk2001git"},"content":" fileWriter.flush();","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"sk2001git"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"sk2001git"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"An error occurred in writing the file.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"sk2001git"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"sk2001git"},"content":" * Clears the file in the Storage object","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"sk2001git"},"content":" * @return true if the clear was successful, false otherwise","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"sk2001git"},"content":" public boolean clearFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"sk2001git"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"sk2001git"},"content":" fileWriter.write(\"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"sk2001git"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"sk2001git"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"sk2001git"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":129,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"An error occurred in cleaning the file.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":130,"author":{"gitId":"sk2001git"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":138}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":" * Task represents a task given by a user\u0027s input","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * It contains details of a task","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private String taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a task","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" public Task(String taskName) {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" * Completes a task when called by setting it as done","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" public void completeTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" // Double space to maintain consistency with rubrics","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" System.out.println(\" \" + this.toString());","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" * Completes a task without printing anything","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" public void quietlyCompleteTask() {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" * Mark a task as undone by setting done as false","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" public void undoTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" // Double space to maintain consistency with rubrics","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" System.out.println(\" \" + this.toString());","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" * Checks whether a task is completed and return a nX if done","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" * @return String X if done, a blank space string if not","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" // Note that this is credited from the website partial solution","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" * Checks whether a task is done through a string","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" * @return a string containing whether the task is done","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" public String isDone() {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" return String.valueOf(this.isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" * Prints out a message that a task has been added","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" public void taskAdded(int noOfTask) {","lastModifiedDate":"2023-08-21"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" System.out.println(\" \" + this.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Now you have \" + noOfTask + \" tasks in the list.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" * Prints out a message that a task has been deleted","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" public void taskDeleted(int noOfTask) {","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \");","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" System.out.println(\" \" + this.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Now you have \" + noOfTask + \" tasks in the list.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" * Converts the task to a format that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" * @return a string that can be saved in the storage in a particular format","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" public String convertToSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" return \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" * Returns the task name","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" * @return","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" public String getTaskName() {","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" return this.taskName;","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"sk2001git":107}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" * Class to encapsulate the list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":"public class TaskList {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" private File textFile;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" * Constructor for TaskList","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" * @param filePath","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" public TaskList(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" this.textFile \u003d textFile;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" this.createTaskList(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" * Creates a list of tasks from the file","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" * @param filePath","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" private void createTaskList(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" Task task \u003d TaskList.parseTask(data);","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"File not found, unable to create list of tasks\");","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Unable to create task from storage\" + e.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" * Parses a task from a string stored in a certain format","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" * @param storedTextLine the string representing a line of text in the file to be parsed","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" * @return a Task object of the right task type","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" public static Task parseTask(String storedTextLine) throws WrongInputException {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" String[] splitString \u003d storedTextLine.split(\" \\\\| \");","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" String taskType \u003d splitString[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" boolean taskStatus \u003d Boolean.parseBoolean(splitString[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" String taskName \u003d splitString[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" case \"T\":","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" return new ToDos(taskName,taskStatus);","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" case \"D\":","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" String deadline \u003d splitString[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" DateTime deadlineDateTime \u003d DateTime.createDateTimeFromStorage(deadline);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" if (deadlineDateTime \u003d\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Stored deadline is invalid / corrupted\",","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" \"Please clear the folder and restart the program\");","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" return new Deadline(taskName, taskStatus, deadlineDateTime);","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" case \"E\":","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" String to \u003d splitString[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" String from \u003d splitString[4];","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" DateTime fromDateTime \u003d DateTime.createDateTimeFromStorage(from);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" DateTime toDateTime \u003d DateTime.createDateTimeFromStorage(to);","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" if (fromDateTime \u003d\u003d null || toDateTime \u003d\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Stored event is invalid / corrupted\",","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" \"Please clear the folder and restart the program\");","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" return new Event(taskName, taskStatus, fromDateTime, toDateTime);","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" return null;","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" * Adds a task to the taskList without saving it","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" * @param task the task to be added","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" public void addTaskQuietly(Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":" };","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" * Adds a task to the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" * @param task the task to be added","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" * @param totalItemCount the total number of the tasks","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" public void addTask(Task task, int totalItemCount, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" task.taskAdded(totalItemCount);","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" storage.writeToFile(task.convertToSaveFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" * Deletes a task in a taskList given the index","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" * @param index the index of the task to be deleted","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":" * @param totalItemCount the total number of the tasks","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":" * @return the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"sk2001git"},"content":" public void deleteTask(int index, int totalItemCount, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"sk2001git"},"content":" Task task \u003d this.taskList.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"sk2001git"},"content":" this.taskList.remove(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"sk2001git"},"content":" task.taskDeleted(totalItemCount);","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"sk2001git"},"content":" this.generateNewTaskList(storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"sk2001git"},"content":" * Returns the task at a particular index","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"sk2001git"},"content":" * @param index index of the task in the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"sk2001git"},"content":" * @return the toString of the task","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"sk2001git"},"content":" public String getTask(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"sk2001git"},"content":" return this.taskList.get(index).toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"sk2001git"},"content":" * Returns the task object at a particular index","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"sk2001git"},"content":" * @param index index of the task in the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"sk2001git"},"content":" * @return the task object","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":129,"author":{"gitId":"sk2001git"},"content":" public Task getTaskObject(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":130,"author":{"gitId":"sk2001git"},"content":" return this.taskList.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"sk2001git"},"content":" * Marks a task as done given the index in the task list","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"sk2001git"},"content":" * @param index the index of the task in the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"sk2001git"},"content":" public void markTask(int index, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"sk2001git"},"content":" this.taskList.get(index).completeTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"sk2001git"},"content":" this.generateNewTaskList(storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":140,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":141,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"sk2001git"},"content":" * Unmarks a task as done given the index in the task list","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"sk2001git"},"content":" * @param index the index of the task in the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"sk2001git"},"content":" public void unmarkTask(int index, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":147,"author":{"gitId":"sk2001git"},"content":" this.taskList.get(index).undoTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":148,"author":{"gitId":"sk2001git"},"content":" this.generateNewTaskList(storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":149,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":150,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":151,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":152,"author":{"gitId":"sk2001git"},"content":" * Generates a new task list after a task has been added or deleted","lastModifiedDate":"2023-08-27"},{"lineNumber":153,"author":{"gitId":"sk2001git"},"content":" * @param storage the storage object that is used to write to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":154,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":155,"author":{"gitId":"sk2001git"},"content":" private void generateNewTaskList(Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":156,"author":{"gitId":"sk2001git"},"content":" storage.clearFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":157,"author":{"gitId":"sk2001git"},"content":" for (Task task : this.taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":158,"author":{"gitId":"sk2001git"},"content":" storage.writeToFile(task.convertToSaveFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":159,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":160,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":161,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":162,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":163,"author":{"gitId":"sk2001git"},"content":" * Returns the length of the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":164,"author":{"gitId":"sk2001git"},"content":" * @return the length of the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":165,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":166,"author":{"gitId":"sk2001git"},"content":" public int length() {","lastModifiedDate":"2023-08-27"},{"lineNumber":167,"author":{"gitId":"sk2001git"},"content":" return this.taskList.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":168,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":169,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":170,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":171,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":172,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":173,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":173}},{"path":"src/main/java/duke/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * ToDos encapsulates a task without any date or timeline attached to it","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public class ToDos extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" private String taskName;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a To-Do Task","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" public ToDos(String taskName) {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" super(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a To-Do Task","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" * @param isDone whether the task is done or not","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" public ToDos(String taskName, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" super(taskName);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" if (isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" super.quietlyCompleteTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" * taskValidator does nothing if there are no wrong inputs but throws a WrongInputException","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" * if inputs are invalid","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s string input","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException which informs the user of the error and actions to take","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" public static void taskValidator(String input) throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" String[] splitString \u003d input.split(\" \");","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" if (splitString.length \u003c 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Cannot be blank\", \"Enter a non-blank To-Do task\");","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" * Converts a To-Do task into a string that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" * @return a string that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" public String convertToSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" return \"T\" + Storage.FILESEPERATORCHARACTER + this.isDone() + Storage.FILESEPERATORCHARACTER + this.taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"sk2001git":58}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" * Ui encapsulates the user interface of the chat bot","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"public class Ui {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" * Constructor for Ui","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" public Ui() {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" * Shows the welcome message","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" String chatBotName \u003d \"Benedict Cucumber Badge\";","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Hello! I\u0027m \" + chatBotName);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" * Reads the user\u0027s command","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" * @return the user\u0027s command","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" * Shows the user the list of tasks","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" public void terminate() {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" * Shows the user the list of tasks","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" * @param taskList the list of tasks","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" public void list(TaskList taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" for (int i \u003d 0; i \u003c taskList.length(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" System.out.println(i + 1 + \". \" +taskList.getTask(i));","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" * Shows the user the error message when invalid command is given","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s input","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" public void showCommandError(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" String commandWord \u003d input.split(\" \")[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"You have entered a invalid command, \"","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" + commandWord + \" is not a valid command\");","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" String message \u003d \"valid commands: \";","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" for (int i \u003d 0; i \u003c Command.validCommands.length; i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" message +\u003d (\"\\n\" + Command.validCommands[i]);","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" * Shows the user the result of the search","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" * @param taskList the list of tasks","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" public void showSearchResult(TaskList taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" if (taskList.length() \u003c 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"There are no matching tasks in your list\");","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Remember it is space sensitive!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" return;","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" for (int i \u003d 0; i \u003c taskList.length(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" System.out.println(i + 1 + \". \" +taskList.getTask(i));","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":84}},{"path":"src/main/java/duke/WrongInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent an exception thrown when a Wrong Input is given","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public class WrongInputException extends Exception {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a WrongInputTask exception","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" * @param taskExceptionMessage What is the error or invalid format","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" * @param solution What is the recommended solution","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" public WrongInputException(String taskExceptionMessage, String solution) {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" super(\"Invalid Format: \" + taskExceptionMessage + \"\\nRecommendation: \" + solution);","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"sk2001git":16}},{"path":"src/test/java/duke/DateTimeStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent the date and time of a task.","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public class DateTimeStub {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" * Creates a DateTime object based on whether there is a valid input for testing","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s input","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" * @return a DateTime object","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" public static DateTime createDateTime(String input) throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" if (input \u003d\u003d \"25/08/2023 1800\") {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" return DateTime.createDateTime(\"25/08/2023 1800\");","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" } else if (input \u003d\u003d \"25/08/2023 1900\") {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" return DateTime.createDateTime(\"25/08/2023 1900\");","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" else if (DateTimeParser.isValidDateTime(input)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" return DateTime.createDateTime(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Invalid date and time format\",","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" \"Please enter a valid date and time format\");","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":28}},{"path":"src/test/java/duke/EventTester.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":"public class EventTester {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" * Testing multiple random valid inputs for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" * should pass if no exception is thrown","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_validInputs_success() throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" // We assume that it has passed the command test successfully","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" // That is it starts with any command verbs","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" // To verify that taskValidator has successfully worked, it should not throw any exception","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" // Test case 1","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" String input1 \u003d \"event test /from 25/08/2023 1800 /to 25/08/2023 1900\";","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" assertDoesNotThrow(() -\u003e Event.taskValidator(input1));","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" // Test case 2","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" String input2 \u003d \"event event /from 13/01/2021 0000 /to 13/01/2021 0000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" assertDoesNotThrow(() -\u003e Event.taskValidator(input2));","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" // Test case 3","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" String input3 \u003d \"event \u0027hey\u0027 /from 31/12/2022 2359 /to 1/01/2023 0000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" assertDoesNotThrow(() -\u003e Event.taskValidator(input3));","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" * Testing additional commands for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" * should pass if no exception is thrown and the additional commands are ignored","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_additionalCommands_success() {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" // Test case 4","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" String input4 \u003d \"event hey /from 25/08/2023 1800 /to 25/08/2023 1700 /from 25/08/2023 1800\";","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" Event.taskValidator(input4);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" * Testing missing /to commands for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_missingTo_exceptionThrown() {","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" // Test case 1","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" String input1 \u003d \"event test /from 25/08/2023 1800\";","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" Event.taskValidator(input1);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" assertEquals(\"Invalid Format: /to command is required\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" \"Recommendation: Use the /to command in \u0027event \u003cevent_name\u003e /from \u003cstart\u003e /to \u003cend\u003e\u0027\",","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" * Testing missing /from commands for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_missingFrom_exceptionThrown() {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" // Test case 2","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" String input2 \u003d \"event test /to 25/08/2023 1900\";","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" Event.taskValidator(input2);","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" assertEquals(\"Invalid Format: /from command is required\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" \"Recommendation: Use the /from command in \u0027event \u003cevent_name\u003e /from \u003cstart\u003e /to \u003cend\u003e\u0027\",","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" * Testing missing task name for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_missingTaskName_exceptionThrown() {","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":" // Test case 3","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" String input3 \u003d \"event /from 25/08/2023 1800 /to 25/08/2023 1900\";","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" Event.taskValidator(input3);","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" assertEquals(\"Invalid Format: Task name cannot be blank\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":" \"Recommendation: Enter a non-blank name\", e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" * Testing wrong format for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" * Includes all the test cases above for wrong format","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_wrongFormat_exceptionThrown() {","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"sk2001git"},"content":" taskValidator_missingTaskName_exceptionThrown();;","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"sk2001git"},"content":" taskValidator_missingFrom_exceptionThrown();","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"sk2001git"},"content":" taskValidator_missingTo_exceptionThrown();","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"sk2001git"},"content":" * Testing all valid inputs for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"sk2001git"},"content":" * Includes all the test cases above for valid inputs","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_allValidInputs_success() {","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"sk2001git"},"content":" taskValidator_validInputs_success();","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"sk2001git"},"content":" taskValidator_additionalCommands_success();","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"sk2001git"},"content":" * Testing out the convertToSaveFormat method by seeing if the output is of the format","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"sk2001git"},"content":" * E | \u003cisDone\u003e | \u003ctask_name\u003e | \u003cstart_time\u003e | \u003cend_time\u003e where time is in the format","lastModifiedDate":"2023-08-27"},{"lineNumber":129,"author":{"gitId":"sk2001git"},"content":" * MMM-dd-yyyy hhmm a","lastModifiedDate":"2023-08-27"},{"lineNumber":130,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"sk2001git"},"content":" public void testConvertToSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"sk2001git"},"content":" Event event \u003d new Event(\"test\", DateTimeStub.createDateTime(\"25/08/2023 1800\"),","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"sk2001git"},"content":" DateTimeStub.createDateTime(\"25/08/2023 1900\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"sk2001git"},"content":" assertEquals(\"E | false | test | Aug-25-2023 1900 PM | Aug-25-2023 1800 PM\", event.convertToSaveFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"sk2001git"},"content":" event.quietlyCompleteTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"sk2001git"},"content":" assertEquals(\"E | true | test | Aug-25-2023 1900 PM | Aug-25-2023 1800 PM\", event.convertToSaveFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":140,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":141,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":146}},{"path":"src/test/java/duke/TaskListTester.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" * This class is used to test the TaskList class","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":"public class TaskListTester {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" * The path of the test file","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" private final static String TEST_PATH \u003d \"./data/dukeTest.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" * The storage object used for testing","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" private final Storage testStorage \u003d Storage.createStorage(TEST_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" * Testing the addTask method for valid input","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" public void addTask_validInput_success() {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" // Always clear file to start a-fresh","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" testStorage.clearFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" TaskList taskList \u003d new TaskList(TEST_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" Task task \u003d new ToDos(\"test\");","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" taskList.addTask(task, 1, testStorage);","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" assertEquals(taskList.getTaskObject(0), task);","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" * Testing the deleteTask method","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" public void deleteTask_validInput_success() {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" // Always clear file to start a-fresh","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" testStorage.clearFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" TaskList taskList \u003d new TaskList(TEST_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" Task task \u003d new ToDos(\"test\");","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" taskList.addTask(task, 0, testStorage);","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" taskList.deleteTask(0, 1, testStorage);","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" assertEquals(taskList.length(), 0);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" * Testing the parseTask method based on valid inputs","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException if the input is invalid however should not occur at all","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" public void parseTask_validInput_success() throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" // Always clear file to start a-fresh","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" testStorage.clearFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" TaskList taskList \u003d new TaskList(TEST_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" Task task \u003d new ToDos(\"Yoop\");","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" Task deadline \u003d new Deadline(\"weewoop\", DateTimeStub.createDateTime(\"25/08/2023 1800\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" Task event \u003d new Event(\"test\", DateTimeStub.createDateTime(\"25/08/2023 1800\"),","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" DateTimeStub.createDateTime(\"25/08/2023 1900\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" taskList.addTask(task, 0, testStorage);","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" taskList.addTask(deadline, 1, testStorage);","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" taskList.addTask(event, 2, testStorage);","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" File file \u003d new File(TEST_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" Task scannedTask \u003d TaskList.parseTask(data);","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" assertEquals(scannedTask.toString(), taskList.getTask(i));","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" i++;","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":" * Testing the parseTask method based on invalid inputs","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" * Should fail if it is able to run parseTask without throwing an exception","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" public void parseTask_corruptedData_exceptionThrown() {","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" String corruptedData3 \u003d \"E | false | test | WAug-25-2023 1900 PM | Aug-35-2023 9999 PM\";","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":" TaskList.parseTask(corruptedData3);","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":" assertEquals(\"Invalid Format: Stored event is invalid / corrupted\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":" \"Recommendation: Please clear the folder and restart the program\",","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":106}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"todo borrow book;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"list;","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"deadline return book /by Sunday;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"event project meeting /from Mon 2pm /to 4pm;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"list;","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"bye;","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"sk2001git":6}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"sk2001git":2,"-":41}},{"path":"data/dukeTest.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"T | false | Yoop","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"D | false | weewoop | Aug-25-2023 1800 PM","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"E | false | test | Aug-25-2023 1900 PM | Aug-25-2023 1800 PM","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":3}},{"path":"src/main/java/duke/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent the different commands that can be given to the chatbot","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public enum Command {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" LIST,","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" MARK,","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" UNMARK,","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" BYE,","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" TODO,","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" DEADLINE,","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" EVENT,","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" DELETE,","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" FIND;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" * This array is used to represent the valid commands that can be given to the chatbot","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" public static final String[] validCommands \u003d","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" {\"list\", \"bye\", \"todo \u003ctask_name\u003e\", \"deadline \u003ctask_name\u003e /by \u003cdeadline\u003e\",","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" \"event \u003ctask_name\u003e /from \u003cstart-time\u003e /to \u003cend-time\u003e\", \"mark \u003cnumber\u003e\",","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" \"unmark \u003cnumber\u003e\", \"delete \u003cnumber\u003e\", \"find \u003ckeyword\u003e\"};","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" * This method is used to get the command from the user\u0027s input","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s input","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" * @return the command","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" * @throws InvalidInputException if the input is invalid","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" public static Command getCommand(String input) throws InvalidInputException {","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" String[] inputtedWords \u003d input.split(\" \");","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" // Command word should always be first word without space","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" String commandWord \u003d inputtedWords[0];","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" if (commandWord.equals(\"list\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" return Command.LIST;","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.equals(\"bye\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" return Command.BYE;","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" return Command.MARK;","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" return Command.UNMARK;","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" return Command.TODO;","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" return Command.DEADLINE;","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"event\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" return Command.EVENT;","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" return Command.DELETE;","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" } else if (commandWord.startsWith(\"find\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" return Command.FIND;","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" throw new InvalidInputException();","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"sk2001git":58}},{"path":"src/main/java/duke/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent the date and time of a task.","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":"public class DateTime {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" private String inputDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a DateTime object","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" * @param dateTime the date and time in string format","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" private DateTime(String inputDateTime, LocalDateTime dateTime) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" this.inputDateTime \u003d inputDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" * Creates a DateTime object based on whether there is a valid input","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s input","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" * @return a DateTime object","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" public static DateTime createDateTime(String input) throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" if (DateTimeParser.isValidDateTime(input)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" return new DateTime(input, DateTimeParser.createLocalDateTime(input));","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Invalid date and time format\",","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" \"Please enter a valid date and time format\");","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" * Creates a DateTime object based on the input from storage","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" * @param input the input from storage","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" * @return a DateTime object","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" public static DateTime createDateTimeFromStorage(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" return new DateTime(input, DateTimeParser.createLocalDateTime(input));","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Unable to create DateTime object from storage\" + e.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" return null;","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" * Gets the date and time in string format","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" * @return the date and time in string format","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" for (String dateTimeOutput: DateTimeParser.VALID_DATE_TIME_FORMAT_OUTPUT) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(dateTimeOutput);","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" String formattedTime \u003d this.dateTime.format(outputFormatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" return formattedTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Unable to output date and time for Date Time object\" + e.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" return this.dateTime.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" return this.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":74}},{"path":"src/main/java/duke/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" * This class is used to parse the date and time from the user input.","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":"public class DateTimeParser {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" // Note that we take \"MMM-dd-yyyy HHmm a\" and \"MMM-d-yyyy HHmm a\" as valid date and time formats because","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" // we store the date and time in this format in the storage file. Therefore, in order to convert it back","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" // to DateTime, we need to take these formats as valid.","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" public static final String[] VALID_DATE_TIME_FORMAT \u003d {\"dd/MM/yyyy HHmm\", \"d/MM/yyyy HHmm\",","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" \"MMM-dd-yyyy HHmm a\", \"MMM-d-yyyy HHmm a\"};","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" public static final String[] VALID_DATE_TIME_FORMAT_OUTPUT \u003d {\"MMM-dd-yyyy HHmm a\", \"MMM-d-yyyy HHmm a\"};","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" * Checks if the input is a valid date and time format","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s input","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" * @return true if the input is a valid date and time format, false otherwise","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" public static boolean isValidDateTime(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" for (String format : VALID_DATE_TIME_FORMAT) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" LocalDateTime.parse(input, DateTimeFormatter.ofPattern(format));","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" // do nothing","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" * Creates a LocalDateTime object based on the input","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" * @param validDateTime a valid Date Time formatted String already checked by isValidDateTime","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" * @return a LocalDateTime object","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException if the input is not a valid date and time format","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" public static LocalDateTime createLocalDateTime(String validDateTime) throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" for (String format : VALID_DATE_TIME_FORMAT) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(validDateTime, DateTimeFormatter.ofPattern(format));","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" return dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" // do nothing","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Invalid date and time format\",","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" \"Please enter a valid date and time format\");","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" * Warns the user to follow a certain date and time format","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" * @return a String message to warn the user to follow a certain date and time format","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" public static String getValidDateTimeFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" String message \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" message +\u003d \"Please enter a valid date and time format seen below\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" for (int i \u003d 0; i \u003c VALID_DATE_TIME_FORMAT.length; i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" message +\u003d VALID_DATE_TIME_FORMAT[i] + \"\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" return message;","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":67}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * Deadline encapsulates task that need to be done before a specific date or time","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" private String taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" private String deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private DateTime dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a task","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" public Deadline(String taskName, DateTime dateTime) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" super(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" this.deadline \u003d dateTime.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a task based on whether its done or not","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" * @param isDone whether the task is done or not","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" * @param dateTime the date and time of the deadline stored in a DateTime object","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" public Deadline(String taskName, boolean isDone, DateTime dateTime) {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" super(taskName);","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" if (isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" super.quietlyCompleteTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" this.deadline \u003d dateTime.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" * taskValidator does nothing if there are no wrong inputs but throws a WrongInputException","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" * if inputs are invalid","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s string input","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException which informs the user of the error and actions to take","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" public static void taskValidator(String input) throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" String[] segementedString \u003d input.split(\" /by \");","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" if (segementedString.length \u003c 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"/by command is required\",","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" \"Use the /by command using \u0027deadline \u003cname\u003e /by \u003ctime\u003e\");","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" String deadline \u003d segementedString[1];","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" String taskNameDeadline \u003d segementedString[0].substring(Parser.DEADLINEOFFSET);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Task name cannot be blank\",","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" \"Enter a non-blank deadline task name\");","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" String taskNameDeadline \u003d segementedString[0].substring(Parser.DEADLINEOFFSET);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" if (taskNameDeadline.trim().isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Task name cannot be blank\",","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" \"Enter a non-blank deadline task name\");","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" } else if (deadline.trim().isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"for /by \u003ctime\u003e, time cannot be blank\",","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" \"Please input valid text that are not space\");","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" } else if (!DateTimeParser.isValidDateTime(deadline)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Invalid date and time format\",","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" DateTimeParser.getValidDateTimeFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" * Converts a Deadline task into a string that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" * @return a string that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" public String convertToSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" return \"D\" + Storage.FILESEPERATORCHARACTER + this.isDone() + Storage.FILESEPERATORCHARACTER + this.taskName","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" + Storage.FILESEPERATORCHARACTER + this.dateTime.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" return \"[D]\" + \"[\" + this.getStatusIcon() + \"] \"","lastModifiedDate":"2023-08-21"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" + this.taskName + \" (by: \" + this.dateTime + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"sk2001git":90}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * Class to encapsulate the whole chatbot and its functionality","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" private final Parser parser;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" private final SearchEngine searchEngine;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" * Constructor for Duke","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" * @param filePath the path of the file","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" this.storage \u003d Storage.createStorage(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" this.taskList \u003d new TaskList(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" this.searchEngine \u003d new SearchEngine(this.ui);","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" this.parser \u003d new Parser(this.taskList, this.storage, this.ui, this.searchEngine);","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" * Runs the chatbot","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" public void run() {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" this.ui.showWelcome();","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" boolean hasCommands \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" while (hasCommands) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" String input \u003d this.ui.readCommand();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" Command command \u003d Command.getCommand(input);","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" this.parser.parse(input, command);","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" hasCommands \u003d this.parser.shouldContinue();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" } catch (InvalidInputException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" this.ui.showCommandError(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" new Duke(\"./data/duke.txt\").run();","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"sk2001git":47,"-":3}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * Event encapsulates task that starts at a specific date / time and","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" * ends at a specific date/time","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" private String taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private String startTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" private String endTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" private DateTime start;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" private DateTime end;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating an Event","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" public Event(String taskName, DateTime start, DateTime end) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" super(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" this.startTime \u003d start.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" this.endTime \u003d end.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating an Event based on whether its done or not","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" * @param isDone whether the task is done or not","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" * @param start the start time of the event","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" * @param end the end time of the event","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" public Event(String taskName, boolean isDone, DateTime start, DateTime end) {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" super(taskName);","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" if (isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" super.quietlyCompleteTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" this.startTime \u003d start.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" this.endTime \u003d end.getDateTime();","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" * taskValidator does nothing if there are no wrong inputs but throws a WrongInputException","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" * if inputs are invalid","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s string input","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException which informs the user of the error and actions to take","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" public static void taskValidator(String input) throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" String[] segmentedViaFrom \u003d input.split(\" /from \");","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" if (segmentedViaFrom.length \u003c 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"/from command is required\",","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" \"Use the /from command in \u0027event \u003cevent_name\u003e /from \u003cstart\u003e /to \u003cend\u003e\u0027\");","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" String taskNameEvent \u003d segmentedViaFrom[0].substring(Parser.EVENTOFFSET);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Task name cannot be blank\", \"Enter a non-blank name\");","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" String taskNameEvent \u003d segmentedViaFrom[0].substring(Parser.EVENTOFFSET);","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" String[] segmentedViaTo \u003d segmentedViaFrom[1].split(\" /to \");","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" if (segmentedViaTo.length \u003c 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"/to command is required\",","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" \"Use the /to command in \u0027event \u003cevent_name\u003e /from \u003cstart\u003e /to \u003cend\u003e\u0027\");","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" String start \u003d segmentedViaTo[0];","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" String end \u003d segmentedViaTo[1];","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" if (taskNameEvent.trim().isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Task name cannot be blank\", \"Enter a non-blank name\");","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" } else if (start.trim().isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"/from \u003ccontent\u003e, content cannot be blank\",","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" \"Enter non-blank text after /from \");","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" } else if (end.trim().isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"/to \u003ccontent\u003e, content cannot be blank\", \"Enter text after /to \");","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" } else if (!DateTimeParser.isValidDateTime(start)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Invalid date and time format for /from \u003cdatetime\u003e\",","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" DateTimeParser.getValidDateTimeFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" } else if (!DateTimeParser.isValidDateTime(end)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Invalid date and time format for /to \u003cdatetime\u003e\",","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" DateTimeParser.getValidDateTimeFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" * Converts an Event task into a string that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" * @return a string that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" public String convertToSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" return \"E\" + Storage.FILESEPERATORCHARACTER + this.isDone() + Storage.FILESEPERATORCHARACTER + this.taskName","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":" + Storage.FILESEPERATORCHARACTER + this.end.toString() + Storage.FILESEPERATORCHARACTER","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" + this.start.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" return \"[E]\" + \"[\" + this.getStatusIcon() + \"] \"","lastModifiedDate":"2023-08-21"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" + this.taskName + \" (from: \"","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":" + this.start.toString() + \" to: \" + this.end.toString() + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":107,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"sk2001git":107}},{"path":"src/main/java/duke/FileManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent the Management of the files","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" * TODO: Remove this class it is not needed","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":"public class FileManager {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" * Reads a file given the file path","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" * @param filePath the path directory to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" * @throws FileNotFoundException","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" public void readFile(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" System.out.println(data);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" * Writes to a file when given the file path","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" * @param filePath the path directory to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" * @param textToAdd the text to add to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" * @return true if the file is written successfully, false otherwise","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" * @throws IOException if there is an error in writing the file","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" public boolean writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" fileWriter.write(textToAdd);","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"An error occurred in writing the file.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":48}},{"path":"src/main/java/duke/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent an exception thrown when an invalid command is given","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public class InvalidInputException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating an InvalidInputException","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" public InvalidInputException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" super(\"Invalid command given.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"sk2001git":15}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":" * Parser class that handles the parsing of user input","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":" public static final int DEADLINEOFFSET \u003d 9;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" public static final int EVENTOFFSET \u003d 6;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" private final SearchEngine searchEngine;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" private boolean hasCommands \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" * Constructor for Parser","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" * @param taskList the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" * @param storage the storage","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" * @param ui the ui","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" public Parser(TaskList taskList, Storage storage, Ui ui, SearchEngine searchEngine) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" this.searchEngine \u003d searchEngine;","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" * Parses the user input and executes the relevant command","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s input","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" * @param command the command to be executed","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" public void parse(String input, Command command) {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" int totalItemNumber \u003d this.taskList.length();","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" // Split the string based on spaces","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" String[] splitString \u003d input.split(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" switch (command) {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" case BYE:","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" this.ui.terminate();","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" hasCommands \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" case LIST:","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" this.ui.list(this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" case UNMARK:","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" // Order matters, if we check for marks first, unmark falls under mark loop","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" // Split the string based on spaces","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" // The input after the mark word should be task no (which should be index 1)","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" int taskNumberUnmark \u003d Integer.parseInt(splitString[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" // The above should throw a NumberFormatException","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" this.taskList.unmarkTask(taskNumberUnmark - 1, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" case MARK:","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" // The input after the mark word should be task no (which should be index 1)","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" int taskNumberMark \u003d Integer.parseInt(splitString[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" // The above should throw a NumberFormatException if not the right number","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" this.taskList.markTask(taskNumberMark - 1, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" case TODO:","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" // Test whether a ToDos input is valid","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" ToDos.taskValidator(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" // for To-Dos anything after the command is task name","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" Task toDo \u003d new ToDos(input.substring(5));","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" totalItemNumber++;","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" this.taskList.addTask(toDo, totalItemNumber, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" // Test whether a deadline\u0027s input is valid","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" Deadline.taskValidator(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" // for Deadline is slightly more complex, we will split by /by","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" String[] segementedString \u003d input.split(\" /by \");","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" // We should only have 2 segments for the Array, before and after","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" String deadline \u003d segementedString[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" // Hardcoded because we know how words are positioned","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" String taskNameDeadline \u003d segementedString[0].substring(DEADLINEOFFSET);","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" DateTime deadlineDateTime \u003d DateTime.createDateTime(deadline);","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" Task deadlineTask \u003d new Deadline(taskNameDeadline, deadlineDateTime);","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" totalItemNumber++;","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" this.taskList.addTask(deadlineTask, totalItemNumber, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" case EVENT:","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" // Test whether an event\u0027s input is valid","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" Event.taskValidator(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" // Event, split string twice to get relevant component","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" String[] segmentedViaBy \u003d input.split(\" /from \");","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":" String taskNameEvent \u003d segmentedViaBy[0].substring(EVENTOFFSET);","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":" String[] segmentedViaTo \u003d segmentedViaBy[1].split(\" /to \");","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" String start \u003d segmentedViaTo[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" DateTime startDateTime \u003d DateTime.createDateTime(start);","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" String end \u003d segmentedViaTo[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" DateTime endDateTime \u003d DateTime.createDateTime(end);","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" Task event \u003d new Event(taskNameEvent, startDateTime, endDateTime);","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" totalItemNumber++;","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":" this.taskList.addTask(event, totalItemNumber, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" case DELETE:","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":" int taskNumberDelete \u003d Integer.parseInt(splitString[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":" totalItemNumber--;","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" this.taskList.deleteTask(taskNumberDelete - 1, totalItemNumber, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" case FIND:","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":" searchEngine.searchValidator(input);","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":" String keyword \u003d input.split(\" \")[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"sk2001git"},"content":" TaskList searchResult \u003d this.searchEngine.search(keyword);","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"sk2001git"},"content":" this.ui.showSearchResult(searchResult);","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"sk2001git"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"sk2001git"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"sk2001git"},"content":" // If we mark a task number outside the range","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"sk2001git"},"content":" System.out.println(e + \"\\nPlease enter a valid task number from list\");","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"sk2001git"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"sk2001git"},"content":" // If we mark a non int task number","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Enter a valid task number that is a integer shown in list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"sk2001git"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"sk2001git"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"sk2001git"},"content":" // To catch invalid number inputs for delete","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Please enter a valid task number from the range in list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"sk2001git"},"content":" public boolean shouldContinue() {","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"sk2001git"},"content":" return this.hasCommands;","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":128}},{"path":"src/main/java/duke/SearchEngine.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * Class to encapsulate the search engine","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public class SearchEngine {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" private Ui ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private Storage searchStorage;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" * Constructor for SearchEngine","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" * @param ui the ui","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" public SearchEngine(Ui ui) {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" this.searchStorage \u003d Storage.createStorage(\"./data/search.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" * Searches the taskList for tasks that contain the input","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" * @param input","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" * @return","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" public TaskList search(String input) {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" // Clear before every search to prevent file corruption","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" this.searchStorage.clearFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" TaskList taskList \u003d new TaskList(\"./data/duke.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" TaskList filteredList \u003d new TaskList(\"./data/search.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" for (int i \u003d 0; i \u003c taskList.length(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" Task task \u003d taskList.getTaskObject(i);","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" if (task.getTaskName().contains(input)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" filteredList.addTaskQuietly(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" return filteredList;","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" * Validates the input to ensure its not an empty string","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" * @param input the input to be validated","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" * @return true if the input is valid","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" public boolean searchValidator(String input) throws WrongInputException {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" if (input.split(\"find\").length \u003c 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"find \u003ctext\u003e\", \"type find followed by non-space characters\");","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" String check \u003d input.split(\"find\")[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" if (check.trim().isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"\u003ctext\u003e cannot be empty\", \"type non-space characters\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" ","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"sk2001git":56}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent the storage of the chat bot","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" public static final String FILESEPERATORCHARACTER \u003d \" | \";","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" private final String filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" private final File file;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a Storage object","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" * @param filePath the path of the file","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" * @param file the file","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" private Storage(String filePath, File file) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" this.file \u003d file;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" * Factory method to creates a Storage object","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" * @param filePath the path of the file","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" * @return Storage containing the file path and file","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" public static Storage createStorage(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" if (isValidFile(filePath)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"File detected, loading file\");","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" return new Storage(filePath, new File(filePath));","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"File not detected, creating file\");","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" createDirectory(\"./data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" File file \u003d createFile(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" return new Storage(filePath, file);","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" * Checks if a file exists and is not a directory","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" * @param filePath the path of the file","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" * @return true if the file exists and is not a directory, false otherwise","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" public static boolean isValidFile(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" return file.exists() \u0026\u0026 !file.isDirectory();","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" * Creates a directory if it does not exist","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" * @param directoryPath the path of the directory","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" public static void createDirectory(String directoryPath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" if (directory.exists() \u0026\u0026 directory.isDirectory()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Directory already exists\");","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" if (directory.mkdir()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Directory has been created\");","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Directory could not be created\");","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" * Creates a file if it does not exist","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" * @param filePath","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" * @return File object","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" * @throws IOException if the file could not be created","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" public static File createFile(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"File created sucessfully\");","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"File could not be created\");","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" return file;","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":" * Reads the file in the Storage object and prints out its data","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":" * @throws FileNotFoundException","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" public void readFile() throws FileNotFoundException {","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":" System.out.println(data);","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" * Writes to the file in the Storage object","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" * @param textToAdd the text to add to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":" * @return true if the write was successful, false otherwise","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"sk2001git"},"content":" public boolean writeToFile(String textToAdd) {","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"sk2001git"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"sk2001git"},"content":" fileWriter.write(textToAdd + System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"sk2001git"},"content":" fileWriter.flush();","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"sk2001git"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"sk2001git"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"An error occurred in writing the file.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"sk2001git"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"sk2001git"},"content":" * Clears the file in the Storage object","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"sk2001git"},"content":" * @return true if the clear was successful, false otherwise","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"sk2001git"},"content":" public boolean clearFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"sk2001git"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"sk2001git"},"content":" fileWriter.write(\"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"sk2001git"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"sk2001git"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":129,"author":{"gitId":"sk2001git"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":130,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"An error occurred in cleaning the file.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"sk2001git"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":139}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":" * Task represents a task given by a user\u0027s input","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * It contains details of a task","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private String taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a task","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" public Task(String taskName) {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" * Completes a task when called by setting it as done","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" public void completeTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" // Double space to maintain consistency with rubrics","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" System.out.println(\" \" + this.toString());","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" * Completes a task without printing anything","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" public void quietlyCompleteTask() {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" * Mark a task as undone by setting done as false","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" public void undoTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" // Double space to maintain consistency with rubrics","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" System.out.println(\" \" + this.toString());","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" * Checks whether a task is completed and return a nX if done","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" * @return String X if done, a blank space string if not","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" // Note that this is credited from the website partial solution","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" * Checks whether a task is done through a string","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" * @return a string containing whether the task is done","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" public String isDone() {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" return String.valueOf(this.isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" * Prints out a message that a task has been added","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" public void taskAdded(int noOfTask) {","lastModifiedDate":"2023-08-21"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" System.out.println(\" \" + this.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Now you have \" + noOfTask + \" tasks in the list.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" * Prints out a message that a task has been deleted","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" public void taskDeleted(int noOfTask) {","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \");","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" System.out.println(\" \" + this.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Now you have \" + noOfTask + \" tasks in the list.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" * Converts the task to a format that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" * @return a string that can be saved in the storage in a particular format","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" public String convertToSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" return \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" * Returns the task name","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" * @return","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" public String getTaskName() {","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" return this.taskName;","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"sk2001git":107}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" * Class to encapsulate the list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":"public class TaskList {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" private File textFile;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" * Constructor for TaskList","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" * @param filePath","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" public TaskList(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" this.textFile \u003d textFile;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" this.createTaskList(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" * Creates a list of tasks from the file","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" * @param filePath","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" private void createTaskList(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" Task task \u003d TaskList.parseTask(data);","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"File not found, unable to create list of tasks\");","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Unable to create task from storage\" + e.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" * Parses a task from a string stored in a certain format","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" * @param storedTextLine the string representing a line of text in the file to be parsed","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" * @return a Task object of the right task type","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" public static Task parseTask(String storedTextLine) throws WrongInputException {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" String[] splitString \u003d storedTextLine.split(\" \\\\| \");","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" String taskType \u003d splitString[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" boolean taskStatus \u003d Boolean.parseBoolean(splitString[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" String taskName \u003d splitString[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" case \"T\":","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" return new ToDos(taskName,taskStatus);","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" case \"D\":","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" String deadline \u003d splitString[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" DateTime deadlineDateTime \u003d DateTime.createDateTimeFromStorage(deadline);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" if (deadlineDateTime \u003d\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Stored deadline is invalid / corrupted\",","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" \"Please clear the folder and restart the program\");","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" return new Deadline(taskName, taskStatus, deadlineDateTime);","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" case \"E\":","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" String to \u003d splitString[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" String from \u003d splitString[4];","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" DateTime fromDateTime \u003d DateTime.createDateTimeFromStorage(from);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" DateTime toDateTime \u003d DateTime.createDateTimeFromStorage(to);","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" if (fromDateTime \u003d\u003d null || toDateTime \u003d\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Stored event is invalid / corrupted\",","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" \"Please clear the folder and restart the program\");","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" return new Event(taskName, taskStatus, fromDateTime, toDateTime);","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" return null;","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" * Adds a task to the taskList without saving it","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" * @param task the task to be added","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" public void addTaskQuietly(Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":" };","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" * Adds a task to the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" * @param task the task to be added","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" * @param totalItemCount the total number of the tasks","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" public void addTask(Task task, int totalItemCount, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" task.taskAdded(totalItemCount);","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" storage.writeToFile(task.convertToSaveFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" * Deletes a task in a taskList given the index","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" * @param index the index of the task to be deleted","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":" * @param totalItemCount the total number of the tasks","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":" * @return the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"sk2001git"},"content":" public void deleteTask(int index, int totalItemCount, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"sk2001git"},"content":" Task task \u003d this.taskList.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"sk2001git"},"content":" this.taskList.remove(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"sk2001git"},"content":" task.taskDeleted(totalItemCount);","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"sk2001git"},"content":" this.generateNewTaskList(storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"sk2001git"},"content":" * Returns the task at a particular index","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"sk2001git"},"content":" * @param index index of the task in the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"sk2001git"},"content":" * @return the toString of the task","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"sk2001git"},"content":" public String getTask(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"sk2001git"},"content":" return this.taskList.get(index).toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"sk2001git"},"content":" * Returns the task object at a particular index","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"sk2001git"},"content":" * @param index index of the task in the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"sk2001git"},"content":" * @return the task object","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":129,"author":{"gitId":"sk2001git"},"content":" public Task getTaskObject(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":130,"author":{"gitId":"sk2001git"},"content":" return this.taskList.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"sk2001git"},"content":" * Marks a task as done given the index in the task list","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"sk2001git"},"content":" * @param index the index of the task in the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"sk2001git"},"content":" public void markTask(int index, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"sk2001git"},"content":" this.taskList.get(index).completeTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"sk2001git"},"content":" this.generateNewTaskList(storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":140,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":141,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"sk2001git"},"content":" * Unmarks a task as done given the index in the task list","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"sk2001git"},"content":" * @param index the index of the task in the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"sk2001git"},"content":" public void unmarkTask(int index, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":147,"author":{"gitId":"sk2001git"},"content":" this.taskList.get(index).undoTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":148,"author":{"gitId":"sk2001git"},"content":" this.generateNewTaskList(storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":149,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":150,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":151,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":152,"author":{"gitId":"sk2001git"},"content":" * Generates a new task list after a task has been added or deleted","lastModifiedDate":"2023-08-27"},{"lineNumber":153,"author":{"gitId":"sk2001git"},"content":" * @param storage the storage object that is used to write to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":154,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":155,"author":{"gitId":"sk2001git"},"content":" private void generateNewTaskList(Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":156,"author":{"gitId":"sk2001git"},"content":" storage.clearFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":157,"author":{"gitId":"sk2001git"},"content":" for (Task task : this.taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":158,"author":{"gitId":"sk2001git"},"content":" storage.writeToFile(task.convertToSaveFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":159,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":160,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":161,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":162,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":163,"author":{"gitId":"sk2001git"},"content":" * Returns the length of the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":164,"author":{"gitId":"sk2001git"},"content":" * @return the length of the taskList","lastModifiedDate":"2023-08-27"},{"lineNumber":165,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":166,"author":{"gitId":"sk2001git"},"content":" public int length() {","lastModifiedDate":"2023-08-27"},{"lineNumber":167,"author":{"gitId":"sk2001git"},"content":" return this.taskList.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":168,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":169,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":170,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":171,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":172,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":173,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":173}},{"path":"src/main/java/duke/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * ToDos encapsulates a task without any date or timeline attached to it","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public class ToDos extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":" private String taskName;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a To-Do Task","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" public ToDos(String taskName) {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" super(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a To-Do Task","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" * @param taskName name of task.","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" * @param isDone whether the task is done or not","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" public ToDos(String taskName, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" super(taskName);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" if (isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" super.quietlyCompleteTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" * taskValidator does nothing if there are no wrong inputs but throws a WrongInputException","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" * if inputs are invalid","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s string input","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException which informs the user of the error and actions to take","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" public static void taskValidator(String input) throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" String[] splitString \u003d input.split(\" \");","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" if (splitString.length \u003c 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Cannot be blank\", \"Enter a non-blank To-Do task\");","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" * Converts a To-Do task into a string that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" * @return a string that can be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" public String convertToSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" return \"T\" + Storage.FILESEPERATORCHARACTER + this.isDone() + Storage.FILESEPERATORCHARACTER + this.taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"sk2001git":58}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" * Ui encapsulates the user interface of the chat bot","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"public class Ui {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" * Constructor for Ui","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" public Ui() {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" * Shows the welcome message","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" String chatBotName \u003d \"Benedict Cucumber Badge\";","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Hello! I\u0027m \" + chatBotName);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" * Reads the user\u0027s command","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" * @return the user\u0027s command","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" * Shows the user the list of tasks","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" public void terminate() {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" * Shows the user the list of tasks","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" * @param taskList the list of tasks","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" public void list(TaskList taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" for (int i \u003d 0; i \u003c taskList.length(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" System.out.println(i + 1 + \". \" +taskList.getTask(i));","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" * Shows the user the error message when invalid command is given","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s input","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" public void showCommandError(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" String commandWord \u003d input.split(\" \")[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"You have entered a invalid command, \"","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" + commandWord + \" is not a valid command\");","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" String message \u003d \"valid commands: \";","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" for (int i \u003d 0; i \u003c Command.validCommands.length; i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" message +\u003d (\"\\n\" + Command.validCommands[i]);","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" * Shows the user the result of the search","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" * @param taskList the list of tasks","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" public void showSearchResult(TaskList taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" if (taskList.length() \u003c 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"There are no matching tasks in your list\");","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Remember it is space sensitive!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" return;","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" for (int i \u003d 0; i \u003c taskList.length(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" System.out.println(i + 1 + \". \" +taskList.getTask(i));","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":84}},{"path":"src/main/java/duke/WrongInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent an exception thrown when a Wrong Input is given","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public class WrongInputException extends Exception {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" * Constructor for creating a WrongInputTask exception","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" * @param taskExceptionMessage What is the error or invalid format","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" * @param solution What is the recommended solution","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" public WrongInputException(String taskExceptionMessage, String solution) {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" super(\"Invalid Format: \" + taskExceptionMessage + \"\\nRecommendation: \" + solution);","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"sk2001git":16}},{"path":"src/test/java/duke/DateTimeStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":" * This class is used to represent the date and time of a task.","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"public class DateTimeStub {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":" * Creates a DateTime object based on whether there is a valid input for testing","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":" * @param input the user\u0027s input","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" * @return a DateTime object","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" public static DateTime createDateTime(String input) throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" if (input \u003d\u003d \"25/08/2023 1800\") {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" return DateTime.createDateTime(\"25/08/2023 1800\");","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" } else if (input \u003d\u003d \"25/08/2023 1900\") {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" return DateTime.createDateTime(\"25/08/2023 1900\");","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" else if (DateTimeParser.isValidDateTime(input)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" return DateTime.createDateTime(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" throw new WrongInputException(\"Invalid date and time format\",","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" \"Please enter a valid date and time format\");","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":28}},{"path":"src/test/java/duke/EventTester.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":"public class EventTester {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":" * Testing multiple random valid inputs for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" * should pass if no exception is thrown","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_validInputs_success() throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" // We assume that it has passed the command test successfully","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" // That is it starts with any command verbs","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" // To verify that taskValidator has successfully worked, it should not throw any exception","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" // Test case 1","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" String input1 \u003d \"event test /from 25/08/2023 1800 /to 25/08/2023 1900\";","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":" assertDoesNotThrow(() -\u003e Event.taskValidator(input1));","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" // Test case 2","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" String input2 \u003d \"event event /from 13/01/2021 0000 /to 13/01/2021 0000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" assertDoesNotThrow(() -\u003e Event.taskValidator(input2));","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" // Test case 3","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" String input3 \u003d \"event \u0027hey\u0027 /from 31/12/2022 2359 /to 1/01/2023 0000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" assertDoesNotThrow(() -\u003e Event.taskValidator(input3));","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" * Testing additional commands for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":" * should pass if no exception is thrown and the additional commands are ignored","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_additionalCommands_success() {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" // Test case 4","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" String input4 \u003d \"event hey /from 25/08/2023 1800 /to 25/08/2023 1700 /from 25/08/2023 1800\";","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" Event.taskValidator(input4);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" * Testing missing /to commands for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_missingTo_exceptionThrown() {","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" // Test case 1","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" String input1 \u003d \"event test /from 25/08/2023 1800\";","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" Event.taskValidator(input1);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" assertEquals(\"Invalid Format: /to command is required\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" \"Recommendation: Use the /to command in \u0027event \u003cevent_name\u003e /from \u003cstart\u003e /to \u003cend\u003e\u0027\",","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" * Testing missing /from commands for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_missingFrom_exceptionThrown() {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" // Test case 2","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" String input2 \u003d \"event test /to 25/08/2023 1900\";","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" Event.taskValidator(input2);","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" assertEquals(\"Invalid Format: /from command is required\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":" \"Recommendation: Use the /from command in \u0027event \u003cevent_name\u003e /from \u003cstart\u003e /to \u003cend\u003e\u0027\",","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":" e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" * Testing missing task name for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_missingTaskName_exceptionThrown() {","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":" // Test case 3","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" String input3 \u003d \"event /from 25/08/2023 1800 /to 25/08/2023 1900\";","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" Event.taskValidator(input3);","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" assertEquals(\"Invalid Format: Task name cannot be blank\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":" \"Recommendation: Enter a non-blank name\", e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" * Testing wrong format for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" * Includes all the test cases above for wrong format","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_wrongFormat_exceptionThrown() {","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"sk2001git"},"content":" taskValidator_missingTaskName_exceptionThrown();;","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"sk2001git"},"content":" taskValidator_missingFrom_exceptionThrown();","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"sk2001git"},"content":" taskValidator_missingTo_exceptionThrown();","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"sk2001git"},"content":" * Testing all valid inputs for taskValidator","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"sk2001git"},"content":" * Includes all the test cases above for valid inputs","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"sk2001git"},"content":" public void taskValidator_allValidInputs_success() {","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"sk2001git"},"content":" taskValidator_validInputs_success();","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"sk2001git"},"content":" taskValidator_additionalCommands_success();","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"sk2001git"},"content":" * Testing out the convertToSaveFormat method by seeing if the output is of the format","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"sk2001git"},"content":" * E | \u003cisDone\u003e | \u003ctask_name\u003e | \u003cstart_time\u003e | \u003cend_time\u003e where time is in the format","lastModifiedDate":"2023-08-27"},{"lineNumber":129,"author":{"gitId":"sk2001git"},"content":" * MMM-dd-yyyy hhmm a","lastModifiedDate":"2023-08-27"},{"lineNumber":130,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"sk2001git"},"content":" public void testConvertToSaveFormat() {","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"sk2001git"},"content":" Event event \u003d new Event(\"test\", DateTimeStub.createDateTime(\"25/08/2023 1800\"),","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"sk2001git"},"content":" DateTimeStub.createDateTime(\"25/08/2023 1900\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"sk2001git"},"content":" assertEquals(\"E | false | test | Aug-25-2023 1900 PM | Aug-25-2023 1800 PM\", event.convertToSaveFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"sk2001git"},"content":" event.quietlyCompleteTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"sk2001git"},"content":" assertEquals(\"E | true | test | Aug-25-2023 1900 PM | Aug-25-2023 1800 PM\", event.convertToSaveFormat());","lastModifiedDate":"2023-08-27"},{"lineNumber":140,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":141,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":146}},{"path":"src/test/java/duke/TaskListTester.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"sk2001git"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"sk2001git"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"sk2001git"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"sk2001git"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"sk2001git"},"content":" * This class is used to test the TaskList class","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"sk2001git"},"content":"public class TaskListTester {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"sk2001git"},"content":" * The path of the test file","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"sk2001git"},"content":" private final static String TEST_PATH \u003d \"./data/dukeTest.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"sk2001git"},"content":" * The storage object used for testing","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"sk2001git"},"content":" private final Storage testStorage \u003d Storage.createStorage(TEST_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"sk2001git"},"content":" * Testing the addTask method for valid input","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"sk2001git"},"content":" public void addTask_validInput_success() {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"sk2001git"},"content":" // Always clear file to start a-fresh","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"sk2001git"},"content":" testStorage.clearFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"sk2001git"},"content":" TaskList taskList \u003d new TaskList(TEST_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"sk2001git"},"content":" Task task \u003d new ToDos(\"test\");","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"sk2001git"},"content":" taskList.addTask(task, 1, testStorage);","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"sk2001git"},"content":" assertEquals(taskList.getTaskObject(0), task);","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"sk2001git"},"content":" * Testing the deleteTask method","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"sk2001git"},"content":" public void deleteTask_validInput_success() {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"sk2001git"},"content":" // Always clear file to start a-fresh","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"sk2001git"},"content":" testStorage.clearFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"sk2001git"},"content":" TaskList taskList \u003d new TaskList(TEST_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"sk2001git"},"content":" Task task \u003d new ToDos(\"test\");","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"sk2001git"},"content":" taskList.addTask(task, 0, testStorage);","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"sk2001git"},"content":" taskList.deleteTask(0, 1, testStorage);","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"sk2001git"},"content":" assertEquals(taskList.length(), 0);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"sk2001git"},"content":" * Testing the parseTask method based on valid inputs","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"sk2001git"},"content":" * @throws WrongInputException if the input is invalid however should not occur at all","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"sk2001git"},"content":" public void parseTask_validInput_success() throws WrongInputException {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"sk2001git"},"content":" // Always clear file to start a-fresh","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"sk2001git"},"content":" testStorage.clearFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"sk2001git"},"content":" TaskList taskList \u003d new TaskList(TEST_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"sk2001git"},"content":" Task task \u003d new ToDos(\"Yoop\");","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"sk2001git"},"content":" Task deadline \u003d new Deadline(\"weewoop\", DateTimeStub.createDateTime(\"25/08/2023 1800\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"sk2001git"},"content":" Task event \u003d new Event(\"test\", DateTimeStub.createDateTime(\"25/08/2023 1800\"),","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"sk2001git"},"content":" DateTimeStub.createDateTime(\"25/08/2023 1900\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"sk2001git"},"content":" taskList.addTask(task, 0, testStorage);","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"sk2001git"},"content":" taskList.addTask(deadline, 1, testStorage);","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"sk2001git"},"content":" taskList.addTask(event, 2, testStorage);","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"sk2001git"},"content":" File file \u003d new File(TEST_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"sk2001git"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"sk2001git"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"sk2001git"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"sk2001git"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"sk2001git"},"content":" Task scannedTask \u003d TaskList.parseTask(data);","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"sk2001git"},"content":" assertEquals(scannedTask.toString(), taskList.getTask(i));","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"sk2001git"},"content":" i++;","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"sk2001git"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"sk2001git"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"sk2001git"},"content":" * Testing the parseTask method based on invalid inputs","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"sk2001git"},"content":" * Should fail if it is able to run parseTask without throwing an exception","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"sk2001git"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"sk2001git"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"sk2001git"},"content":" public void parseTask_corruptedData_exceptionThrown() {","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"sk2001git"},"content":" String corruptedData3 \u003d \"E | false | test | WAug-25-2023 1900 PM | Aug-35-2023 9999 PM\";","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"sk2001git"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"sk2001git"},"content":" TaskList.parseTask(corruptedData3);","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"sk2001git"},"content":" Assertions.fail();","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"sk2001git"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"sk2001git"},"content":" assertEquals(\"Invalid Format: Stored event is invalid / corrupted\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"sk2001git"},"content":" \"Recommendation: Please clear the folder and restart the program\",","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"sk2001git"},"content":" e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"sk2001git"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"sk2001git"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"sk2001git"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"sk2001git":106}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"sk2001git"},"content":"todo borrow book;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"sk2001git"},"content":"list;","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"sk2001git"},"content":"deadline return book /by Sunday;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"sk2001git"},"content":"event project meeting /from Mon 2pm /to 4pm;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"sk2001git"},"content":"list;","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"sk2001git"},"content":"bye;","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"sk2001git":6}}] diff --git a/sk2001git_ip_master/commits.json b/sk2001git_ip_master/commits.json index 3e68ca8e..ee8b5beb 100644 --- a/sk2001git_ip_master/commits.json +++ b/sk2001git_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"sk2001git":[{"date":"2023-08-20","commitResults":[{"hash":"e1c162186c5ef381015be9c595a5454a3d47de97","isMergeCommit":false,"messageTitle":"Duke Level 0 - Rename, Greet and Edit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"759f9f3d5b933d0b0f6e3bf42246ab5069cc19dc","isMergeCommit":false,"messageTitle":"Duke now Echos - allowing user input through scanner, echoing replies unless bye is written","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}}]},{"date":"2023-08-21","commitResults":[{"hash":"885b6fd0aa17695d8a07d1a3b5ff4ff25ba564fa","isMergeCommit":false,"messageTitle":"Added a storage to store words that are inputted. Has a limit of 100","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"edcd112bbdf6ac2eab7ac3fb3005194634c7d538","isMergeCommit":false,"messageTitle":"Added a Task class to encapsulate a Task event. Amended Duke accordingly to include marking and unmarking","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":6}}},{"hash":"8716915452d39f699af992608fc1f75ec241d741","isMergeCommit":false,"messageTitle":"Using enums instead of if else statements in Duke. Enum class commands helps to discern between the different key commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":0}}},{"hash":"cfeb64ab94ce1f3a0874fc0fdc4edaceca575b90","isMergeCommit":false,"messageTitle":"Changed Enum slightly to use start of word suffix instead of contains. Additionally completed Level 4 by implementing the design as mentioned","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":242,"deletions":20}}},{"hash":"84e338e4c484f093258fa54e6a2c71fa36414463","isMergeCommit":false,"messageTitle":"Automated Text UI Testing. Succesful Test using I/O technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0}}}]},{"date":"2023-08-22","commitResults":[{"hash":"f24dc935220f284fe02deb43da260fc3969a5662","isMergeCommit":false,"messageTitle":"Added exception handling if wrong inputs / commands are given.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":189,"deletions":120}}},{"hash":"cbe51fe3712bff293760fcb24058eb6134c2e2af","isMergeCommit":false,"messageTitle":"Change storage structure from Array to Collection ArrayList, amended the code that way, added taskDeleted to task to show right message.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":55}}}]},{"date":"2023-08-26","commitResults":[{"hash":"1adb022dd6964f03d8679dc797152a9a04ff8e37","isMergeCommit":false,"messageTitle":"Updated imports to match exact packages by java util. Following coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":3}}}]},{"date":"2023-08-27","commitResults":[{"hash":"38cdc759cf939a8691fdab9817142fb037377e31","isMergeCommit":false,"messageTitle":"Done feature for saving tasks into hard drive","messageBody":"Made use of File, File Writer. Created Storage Class, Task List Class\n\nAdditional OOP improvements to code as well\n","fileTypesAndContributionMap":{"java":{"insertions":413,"deletions":24}}},{"hash":"2f24d8868f65624b7542afbbaa70ff38ae225783","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"c9c1c7b2dc0e0cb8bd5c869da001d1d843ae8d5e","isMergeCommit":false,"messageTitle":"Fix Bugs on Task List Parser and Printing statements","messageBody":"","tags":["Hot_Fix_Bug_Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":9}}},{"hash":"4c67bf795ee673e24528dce7dc3fd075fe6442ee","isMergeCommit":false,"messageTitle":"Done the feature of incorporating java date time for deadlines and events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":210,"deletions":37}}},{"hash":"e5a093d2cf0ef795999dd5536f0cef48b9ab629c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"bec0794c010cf31298aceb351e7d6084fcadd432","isMergeCommit":false,"messageTitle":"Done more OOP by encapsulating the UI messages into 1 class, Added a Parser class to abstract the logic from main chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":215,"deletions":118}}},{"hash":"cc1a922e753183e94dddf2cd13190d064ef2909d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"379a8dbfe80f946bc998c87071de0d76508f3f97","isMergeCommit":false,"messageTitle":"Created packages, all Java files are now under package duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"5a1536747c527ac392eb94cf6fa9a38287d1b3c1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"1904385db22849fdee77dc85406e13deb5c06b16","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8b6965c26e0b844bb804a2348a5e5a5a8b5abf84","isMergeCommit":false,"messageTitle":"Set up gradle automation in file. ./gradlew run is able to work Was missing settings.gradle.kts, had to cover over","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"36e5ecf4bcd782a419ebe6a687d3e1a0cb44b2e0","isMergeCommit":false,"messageTitle":"Added JUnitTesting for 2 classes 2 non-trival methods Added catch for null case for parsing for event (Missed out)","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":274,"deletions":3}}},{"hash":"4dc492d7689b2677e784e207ae1e82d8a55504a4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-28","commitResults":[{"hash":"a3e5cf2c7aa93e2c0a9efc225f36a8e6a43ce733","isMergeCommit":false,"messageTitle":"Updated gradle for JAR building, deleted unnecessary code for tasklistTester","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":0,"deletions":1}}},{"hash":"fe8ea6ca9831ea4a1dbcd57edf26f0aefa9d1d5b","isMergeCommit":false,"messageTitle":"Added Java docs to testing classes as well as running classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":132,"deletions":59}}},{"hash":"d2b662fadfb443d77f4d9061b5d252d7261ab3aa","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDocs\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"00cc4d1279b07f34856451e77bbbb352b8a4ab2e","isMergeCommit":false,"messageTitle":"Updated Format and spacing to better represent coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":102}}},{"hash":"a9bdd4ca797ffcd28233056717d162111a5b4e16","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027 Fixed Conflicts","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Command.java\n#\tsrc/main/java/duke/InvalidInputException.java\n#\tsrc/main/java/duke/Parser.java\n#\tsrc/main/java/duke/WrongInputTask.java\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"f9b2478dc443fb70e500e9c9f3b1e74049eda165","isMergeCommit":false,"messageTitle":"Added Search Feature to search for any task in list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":6}}},{"hash":"c233bd97b2144b42c6a321ca8ea2a93b678333df","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027 Conflicts Resolved","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/InvalidInputException.java\n#\tsrc/main/java/duke/Parser.java\n#\tsrc/main/java/duke/Task.java\n#\tsrc/main/java/duke/TaskList.java\n#\tsrc/main/java/duke/Ui.java\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"abd5f6f3d5f2357b852cc313c5da6d40b8f9effe","isMergeCommit":false,"messageTitle":"Updated Java Coding Standard again, added more documentation","messageBody":"","tags":["A-JavaDoc2.0","A-CodingStandard2.0"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":11}}}]}]},"authorFileTypeContributionMap":{"sk2001git":{"java":1546,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":9}},"authorContributionVariance":{"sk2001git":142736.03},"authorDisplayNameMap":{"sk2001git":"CS2103T-W09-4 SEAN..GUAN"}} +{"authorDailyContributionsMap":{"sk2001git":[{"date":"2023-08-20","commitResults":[{"hash":"e1c162186c5ef381015be9c595a5454a3d47de97","isMergeCommit":false,"messageTitle":"Duke Level 0 - Rename, Greet and Edit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"759f9f3d5b933d0b0f6e3bf42246ab5069cc19dc","isMergeCommit":false,"messageTitle":"Duke now Echos - allowing user input through scanner, echoing replies unless bye is written","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}}]},{"date":"2023-08-21","commitResults":[{"hash":"885b6fd0aa17695d8a07d1a3b5ff4ff25ba564fa","isMergeCommit":false,"messageTitle":"Added a storage to store words that are inputted. Has a limit of 100","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"edcd112bbdf6ac2eab7ac3fb3005194634c7d538","isMergeCommit":false,"messageTitle":"Added a Task class to encapsulate a Task event. Amended Duke accordingly to include marking and unmarking","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":6}}},{"hash":"8716915452d39f699af992608fc1f75ec241d741","isMergeCommit":false,"messageTitle":"Using enums instead of if else statements in Duke. Enum class commands helps to discern between the different key commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":0}}},{"hash":"cfeb64ab94ce1f3a0874fc0fdc4edaceca575b90","isMergeCommit":false,"messageTitle":"Changed Enum slightly to use start of word suffix instead of contains. Additionally completed Level 4 by implementing the design as mentioned","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":242,"deletions":20}}},{"hash":"84e338e4c484f093258fa54e6a2c71fa36414463","isMergeCommit":false,"messageTitle":"Automated Text UI Testing. Succesful Test using I/O technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0}}}]},{"date":"2023-08-22","commitResults":[{"hash":"f24dc935220f284fe02deb43da260fc3969a5662","isMergeCommit":false,"messageTitle":"Added exception handling if wrong inputs / commands are given.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":189,"deletions":120}}},{"hash":"cbe51fe3712bff293760fcb24058eb6134c2e2af","isMergeCommit":false,"messageTitle":"Change storage structure from Array to Collection ArrayList, amended the code that way, added taskDeleted to task to show right message.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":55}}}]},{"date":"2023-08-26","commitResults":[{"hash":"1adb022dd6964f03d8679dc797152a9a04ff8e37","isMergeCommit":false,"messageTitle":"Updated imports to match exact packages by java util. Following coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":3}}}]},{"date":"2023-08-27","commitResults":[{"hash":"38cdc759cf939a8691fdab9817142fb037377e31","isMergeCommit":false,"messageTitle":"Done feature for saving tasks into hard drive","messageBody":"Made use of File, File Writer. Created Storage Class, Task List Class\n\nAdditional OOP improvements to code as well\n","fileTypesAndContributionMap":{"java":{"insertions":413,"deletions":24}}},{"hash":"2f24d8868f65624b7542afbbaa70ff38ae225783","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"c9c1c7b2dc0e0cb8bd5c869da001d1d843ae8d5e","isMergeCommit":false,"messageTitle":"Fix Bugs on Task List Parser and Printing statements","messageBody":"","tags":["Hot_Fix_Bug_Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":9}}},{"hash":"4c67bf795ee673e24528dce7dc3fd075fe6442ee","isMergeCommit":false,"messageTitle":"Done the feature of incorporating java date time for deadlines and events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":210,"deletions":37}}},{"hash":"e5a093d2cf0ef795999dd5536f0cef48b9ab629c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"bec0794c010cf31298aceb351e7d6084fcadd432","isMergeCommit":false,"messageTitle":"Done more OOP by encapsulating the UI messages into 1 class, Added a Parser class to abstract the logic from main chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":215,"deletions":118}}},{"hash":"cc1a922e753183e94dddf2cd13190d064ef2909d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"379a8dbfe80f946bc998c87071de0d76508f3f97","isMergeCommit":false,"messageTitle":"Created packages, all Java files are now under package duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"5a1536747c527ac392eb94cf6fa9a38287d1b3c1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"1904385db22849fdee77dc85406e13deb5c06b16","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8b6965c26e0b844bb804a2348a5e5a5a8b5abf84","isMergeCommit":false,"messageTitle":"Set up gradle automation in file. ./gradlew run is able to work Was missing settings.gradle.kts, had to cover over","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"36e5ecf4bcd782a419ebe6a687d3e1a0cb44b2e0","isMergeCommit":false,"messageTitle":"Added JUnitTesting for 2 classes 2 non-trival methods Added catch for null case for parsing for event (Missed out)","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":274,"deletions":3}}},{"hash":"4dc492d7689b2677e784e207ae1e82d8a55504a4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-28","commitResults":[{"hash":"a3e5cf2c7aa93e2c0a9efc225f36a8e6a43ce733","isMergeCommit":false,"messageTitle":"Updated gradle for JAR building, deleted unnecessary code for tasklistTester","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":0,"deletions":1}}},{"hash":"fe8ea6ca9831ea4a1dbcd57edf26f0aefa9d1d5b","isMergeCommit":false,"messageTitle":"Added Java docs to testing classes as well as running classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":132,"deletions":59}}},{"hash":"d2b662fadfb443d77f4d9061b5d252d7261ab3aa","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDocs\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"00cc4d1279b07f34856451e77bbbb352b8a4ab2e","isMergeCommit":false,"messageTitle":"Updated Format and spacing to better represent coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":102}}},{"hash":"a9bdd4ca797ffcd28233056717d162111a5b4e16","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027 Fixed Conflicts","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Command.java\n#\tsrc/main/java/duke/InvalidInputException.java\n#\tsrc/main/java/duke/Parser.java\n#\tsrc/main/java/duke/WrongInputTask.java\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"f9b2478dc443fb70e500e9c9f3b1e74049eda165","isMergeCommit":false,"messageTitle":"Added Search Feature to search for any task in list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":6}}},{"hash":"c233bd97b2144b42c6a321ca8ea2a93b678333df","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027 Conflicts Resolved","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/InvalidInputException.java\n#\tsrc/main/java/duke/Parser.java\n#\tsrc/main/java/duke/Task.java\n#\tsrc/main/java/duke/TaskList.java\n#\tsrc/main/java/duke/Ui.java\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"abd5f6f3d5f2357b852cc313c5da6d40b8f9effe","isMergeCommit":false,"messageTitle":"Updated Java Coding Standard again, added more documentation","messageBody":"","tags":["A-JavaDoc2.0","A-CodingStandard2.0"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":11}}}]},{"date":"2023-09-01","commitResults":[{"hash":"60fed640d9a2e4a3209940f4f163c2508ec388a5","isMergeCommit":false,"messageTitle":"Edited so it creates the directory if it does not exist","messageBody":"","tags":["A-JarFix"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"sk2001git":{"java":1547,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":9}},"authorContributionVariance":{"sk2001git":128787.54},"authorDisplayNameMap":{"sk2001git":"CS2103T-W09-4 SEAN..GUAN"}} diff --git a/songgthu_ip_master/authorship.json b/songgthu_ip_master/authorship.json index c1dbdc53..b99c5e72 100644 --- a/songgthu_ip_master/authorship.json +++ b/songgthu_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"plugins {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":" id \u0027java\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":" id \u0027application\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"repositories {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" mavenCentral()","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":"dependencies {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":"test {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" useJUnitPlatform()","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" testLogging {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" showExceptions true","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" showCauses true","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" showStackTraces true","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":"application {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" mainClass.set(\"milbot.Mil\")","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":"shadowJar {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":" archiveBaseName \u003d \"mil\"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" archiveFileName \u003d \u0027mil.jar\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":"run{","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" standardInput \u003d System.in","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":43}},{"path":"src/main/data/mil.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"T | 0 | ye","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"T | 0 | more","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"songgthu":2}},{"path":"src/main/java/exception/EmptyFindQueryException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class EmptyFindQueryException extends MilException {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public EmptyFindQueryException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(\"☹ Oopsie! You did not include any query.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"songgthu":8}},{"path":"src/main/java/exception/EmptyTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class EmptyTaskException extends MilException {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public EmptyTaskException() {","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(\"☹ Oopsie! You did not include any task description.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"songgthu":7}},{"path":"src/main/java/exception/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class InvalidDeadlineException extends MilException {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(\"☹ Oopsie! Please add your deadline with the following format: \\\"deadline (description) /by (yyyy-mm-dd) \\\".\");","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"songgthu":7}},{"path":"src/main/java/exception/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class InvalidEventException extends MilException {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public InvalidEventException() {","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(\"☹ Oopsie! Please add your event with the following format: \\\"event (description) /from (yyyy-mm-dd) /to (yyyy-mm-dd)\\\".\");","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"songgthu":7}},{"path":"src/main/java/exception/InvalidTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class InvalidTaskIndexException extends MilException {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public InvalidTaskIndexException() {","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(\"☹ Oopsie! The index you input does not match any task.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"songgthu":7}},{"path":"src/main/java/exception/MilException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class MilException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public MilException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(message);","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"songgthu":7}},{"path":"src/main/java/exception/NoTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class NoTaskIndexException extends MilException {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public NoTaskIndexException() {","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(\"☹ Oopsie! You did not input the task index.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"songgthu":7}},{"path":"src/main/java/milbot/Mil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package milbot;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" * Mil class represents a chatbot application for managing tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"public class Mil {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" private static Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":" private static TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" private static Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" private static Parser parser;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" * Constructs a new instance of the Mil chatbot.","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" * Initializes the task list, user interface, storage, and parser.","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" public Mil() {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" storage \u003d new Storage();","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" taskList \u003d storage.loadTasksFromFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" parser \u003d new Parser(taskList, ui);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" * The main method that starts the Mil chatbot application.","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" * Reads user input and processes it until the user types \"bye\".","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" * @param args Command-line arguments (not used).","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" Mil mil \u003d new Mil();","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" String input;","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" ui.printWelcomeMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" storage.saveTasksToFile(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" ui.printGoodbyeMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" parser.parseInput(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"songgthu":45,"-":2}},{"path":"src/main/java/milbot/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package milbot;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import taskclasses.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" private Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" public Parser(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" * Parses the user input and performs corresponding actions based on the input.","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" * @param input The input provided by the user.","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" public void parseInput(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" ui.printTaskList(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" } else if (input.startsWith(\"mark\") || input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" int index \u003d -1;","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" if (input.split(\" \").length \u003c 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" throw new NoTaskIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" if (index \u003c 0 || index \u003e\u003d taskList.getSize()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" throw new InvalidTaskIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" } catch (NoTaskIndexException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" } catch (InvalidTaskIndexException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" if(index !\u003d -1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":" Task task \u003d taskList.getTask(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":" if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"songgthu"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"songgthu"},"content":" ui.printMarkTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"songgthu"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"songgthu"},"content":" task.markAsUndone();","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"songgthu"},"content":" ui.printUnmarkTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"songgthu"},"content":" } else if (input.startsWith(\"todo\") || input.startsWith(\"deadline\") || input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"songgthu"},"content":" Task task;","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"songgthu"},"content":" if (input.equals(\"todo\") || input.equals(\"deadline\") || input.equals(\"event\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"songgthu"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"songgthu"},"content":" } catch (EmptyTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"songgthu"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"songgthu"},"content":" task \u003d new Todo(input.substring(5));","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"songgthu"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"songgthu"},"content":" ui.printNewTask(taskList, task);","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"songgthu"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"songgthu"},"content":" if (!input.contains(\"/by\") || input.trim().split(\"/by\").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"songgthu"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"songgthu"},"content":" } catch (InvalidDeadlineException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"songgthu"},"content":" LocalDate deadlineDate \u003d LocalDate.parse(input.split(\"/\")[1].substring(3).trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"songgthu"},"content":" task \u003d new Deadline(input.split(\"/\")[0].substring(9),","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"songgthu"},"content":" deadlineDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"songgthu"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"songgthu"},"content":" ui.printNewTask(taskList, task);","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"songgthu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"songgthu"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"songgthu"},"content":" if (!input.contains(\"/from\") || !input.contains(\"/to\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"songgthu"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"songgthu"},"content":" } catch (InvalidEventException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"songgthu"},"content":" LocalDate fromDate \u003d LocalDate.parse(input.split(\"/\")[1].substring(5).trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"songgthu"},"content":" LocalDate toDate \u003d LocalDate.parse(input.split(\"/\")[2].substring(3).trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"songgthu"},"content":" task \u003d new Event(input.split(\"/\")[0].substring(6),","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"songgthu"},"content":" fromDate, toDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"songgthu"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"songgthu"},"content":" ui.printNewTask(taskList, task);","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"songgthu"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"songgthu"},"content":" if (input.split(\" \").length \u003c 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"songgthu"},"content":" throw new NoTaskIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"songgthu"},"content":" } catch (NoTaskIndexException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"songgthu"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"songgthu"},"content":" if (index \u003c 0 || index \u003e\u003d taskList.getSize()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"songgthu"},"content":" throw new InvalidTaskIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"songgthu"},"content":" } catch (InvalidTaskIndexException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"songgthu"},"content":" Task task \u003d taskList.getTask(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"songgthu"},"content":" taskList.removeTask(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"songgthu"},"content":" ui.printRemoveTask(task, taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"songgthu"},"content":" } else if(input.startsWith(\"find\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"songgthu"},"content":" if (input.trim().equals(\"find\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"songgthu"},"content":" throw new EmptyFindQueryException();","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"songgthu"},"content":" } catch (EmptyFindQueryException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"songgthu"},"content":" String taskQuery \u003d input.split(\" \")[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"songgthu"},"content":" TaskList tasksResult \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"songgthu"},"content":" for(Task task : taskList.getTaskList()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"songgthu"},"content":" if(task.toString().contains(taskQuery)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"songgthu"},"content":" tasksResult.addTask(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"songgthu"},"content":" ui.printSearchResult(tasksResult);","lastModifiedDate":"2023-08-28"},{"lineNumber":141,"author":{"gitId":"songgthu"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"songgthu"},"content":" ui.printUnknownMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":145}},{"path":"src/main/java/milbot/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package milbot;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"import taskclasses.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import java.io.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" * Storage class handles reading tasks from and writing tasks to a file.","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" private File file;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" private FileWriter tasksOutput;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" private String filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" * Constructs a Storage instance with a default file path.","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" public Storage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" filePath \u003d \"src\\\\main\\\\data\\\\mil.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" * Loads tasks from the file and adds them to the task list.","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" public TaskList loadTasksFromFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" try (BufferedReader inputFile \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" String line;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" while ((line \u003d inputFile.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" Task task \u003d Task.createTaskFromData(line);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" System.err.println(\"Error loading tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" return taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" * Saves tasks from the provided TaskList to the file.","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":" * @param tasks The TaskList containing tasks to be saved.","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"songgthu"},"content":" public void saveTasksToFile(TaskList tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"songgthu"},"content":" taskList \u003d tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"songgthu"},"content":" tasksOutput \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"songgthu"},"content":" BufferedWriter outputFile \u003d new BufferedWriter(tasksOutput);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"songgthu"},"content":" for (Task task : tasks.getTaskList()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"songgthu"},"content":" outputFile.write(task.formatToFile());","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"songgthu"},"content":" outputFile.newLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"songgthu"},"content":" outputFile.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"songgthu"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"songgthu"},"content":" System.err.println(\"Error saving tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":61}},{"path":"src/main/java/milbot/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package milbot;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import java.util.List;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"import taskclasses.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" * TaskList class represents a list of tasks and provides methods to manage tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"public class TaskList {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" private List\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" * Constructs a TaskList instance with an empty list of tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" public TaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" * Retrieves the list of tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" * @return The list of tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" public List\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" return taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" * Gets the number of tasks in the task list.","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" * @return The number of tasks in the task list.","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" public int getSize() {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" return taskList.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" * Retrieves the task at the specified index.","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" return taskList.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"songgthu"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"songgthu"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"songgthu"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"songgthu"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"songgthu"},"content":" * Removes a task from the task list at the specified index.","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"songgthu"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"songgthu"},"content":" public void removeTask(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"songgthu"},"content":" taskList.remove(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":62}},{"path":"src/main/java/milbot/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package milbot;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import taskclasses.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" * Ui class handles user interface-related functionalities.","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"public class Ui {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":" private static final String INDENTATION \u003d \" \";","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" private static final String HORIZONTAL_LINE \u003d \"__________________________________________________________________________\";","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" * Prints a welcome message when the chatbot is launched.","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" public void printWelcomeMessage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" String logo \u003d \" ____ ____ _ _\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" + \"| \\\\__/ | | | | |\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" + \"| | \\\\ _ / | | | | | |\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" + \"| | | | | | | |____\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" + \"|__| |__| |_| |______|\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Hi there, I\u0027m Mil - your personal chatbot.\\n How can I help you today?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" * Prints a goodbye message before the chatbot exits.","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" public void printGoodbyeMessage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Have a nice day and see you again soon!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" * Prints an error message.","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" * @param message The error message to be printed.","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":" public void printErrorMessage(String message) {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + message);","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"songgthu"},"content":" * Prints a message indicating a new task has been added to the task list.","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"songgthu"},"content":" * @param taskList The TaskList containing the added task.","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"songgthu"},"content":" * @param task The added task.","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"songgthu"},"content":" public void printNewTask(TaskList taskList, Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \" \" + task);","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Now you have \" + taskList.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"songgthu"},"content":" * Prints the list of tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"songgthu"},"content":" * @param taskList The TaskList containing the tasks to be printed.","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"songgthu"},"content":" public void printTaskList(TaskList taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"songgthu"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"songgthu"},"content":" for (Task task : taskList.getTaskList()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"songgthu"},"content":" System.out.println(String.format(\"%s%d.%s\",","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"songgthu"},"content":" INDENTATION, i, task.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"songgthu"},"content":" i++;","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"songgthu"},"content":" * Prints a message indicating that a task has been marked as done.","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"songgthu"},"content":" * @param task The task that has been marked as done.","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"songgthu"},"content":" public void printMarkTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + task);","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"songgthu"},"content":" * Prints a message indicating that a task has been marked as not done yet.","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"songgthu"},"content":" * @param task The task that has been marked as not done yet.","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"songgthu"},"content":" public void printUnmarkTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + task);","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"songgthu"},"content":" * Prints a message indicating that a task has been removed from the task list.","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"songgthu"},"content":" * @param task The task that has been removed.","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"songgthu"},"content":" * @param taskList The TaskList after the task has been removed.","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"songgthu"},"content":" public void printRemoveTask(Task task, TaskList taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \" \" + task);","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Now you have \" + taskList.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"songgthu"},"content":" * Prints a message indicating an unknown command.","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"songgthu"},"content":" public void printUnknownMessage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"songgthu"},"content":" System.out.println(\"☹ Oopsie! I\u0027m sorry, but I don\u0027t know what that means.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"songgthu"},"content":" public void printSearchResult(TaskList taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"songgthu"},"content":" if(taskList.getSize() \u003d\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"There is no task matched to your query\");","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"songgthu"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"songgthu"},"content":" for (Task task : taskList.getTaskList()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"songgthu"},"content":" System.out.println(String.format(\"%s%d.%s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"songgthu"},"content":" INDENTATION, i, task.toString()));","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"songgthu"},"content":" i++;","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":140}},{"path":"src/main/java/taskclasses/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" * Represents a task of type \"Deadline\" with a specific due date.","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" private String by;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" * Constructs a Deadline task with the given description and due date.","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" * @param by The due date of the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" this.by \u003d by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" * Constructs a Deadline task with the given description, completion status, and due date.","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" * @param by The due date of the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" public Deadline(String description, boolean isDone, LocalDate by) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" this.by \u003d by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" public String formatToFile() {","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" return \"D | \" + super.formatToFile() + \" | \" + by;","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"songgthu":43}},{"path":"src/main/java/taskclasses/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" protected String from;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" protected String to;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" this.from \u003d from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" this.to \u003d to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" public Event(String description, boolean isDone, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" this.from \u003d from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" this.to \u003d to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" public String formatToFile() {","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" return \"E | \" + super.formatToFile() + \" | \" + from + \" - \" + to;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"songgthu":27}},{"path":"src/main/java/taskclasses/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" * Represents a basic task with a description and completion status.","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" protected String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" * Constructs a Task with the given description and sets the completion status to false.","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" * Constructs a Task with the given description and completion status.","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":" * Creates a task object from a data line in storage.","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" * @param dataLine The data line representing the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" * @return A Task object created from the data line.","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" public static Task createTaskFromData(String dataLine) {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" String[] parts \u003d dataLine.split(\" \\\\| \");","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" String type \u003d parts[0].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"songgthu"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"songgthu"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"songgthu"},"content":" return new Todo(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"songgthu"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"songgthu"},"content":" LocalDate by \u003d LocalDate.parse(parts[3].trim(), inputFormatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"songgthu"},"content":" return new Deadline(description, isDone, by);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"songgthu"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"songgthu"},"content":" String[] dates \u003d parts[3].split(\" - \");","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"songgthu"},"content":" String fromDateString \u003d dates[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"songgthu"},"content":" String toDateString \u003d dates[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"songgthu"},"content":" LocalDate from \u003d LocalDate.parse(fromDateString, inputFormatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"songgthu"},"content":" LocalDate to \u003d LocalDate.parse(toDateString, inputFormatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"songgthu"},"content":" return new Event(description, isDone, from, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"songgthu"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"songgthu"},"content":" return null; // Unknown task type","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":67,"author":{"gitId":"songgthu"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":68,"author":{"gitId":"songgthu"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":69,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":70,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":71,"author":{"gitId":"songgthu"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":72,"author":{"gitId":"songgthu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":73,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":74,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":75,"author":{"gitId":"songgthu"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":76,"author":{"gitId":"songgthu"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-20"},{"lineNumber":77,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":78,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":79,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"songgthu"},"content":" * Formats the task for storage.","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"songgthu"},"content":" * @return A formatted string representing the task for storage.","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"songgthu"},"content":" public String formatToFile() {","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"songgthu"},"content":" int status \u003d isDone ? 1 : 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"songgthu"},"content":" return status + \" | \" + description;","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":88,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":89,"author":{"gitId":"songgthu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":90,"author":{"gitId":"songgthu"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-20"},{"lineNumber":91,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":92,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"songgthu":92}},{"path":"src/main/java/taskclasses/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" * Represents a task of type \"Todo\" that can be completed.","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" * Constructs a Todo task with the given description.","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" * @param description The description of the todo task.","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" public String formatToFile() {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" return \"T | \" + super.formatToFile();","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"songgthu":23}},{"path":"src/test/java/taskclasses/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import taskclasses.Deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" public void testFormatToFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" LocalDate dueDate \u003d LocalDate.of(2023, 9, 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" Deadline deadline \u003d new Deadline(\"Complete project\", dueDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" String expected \u003d \"D | 0 | Complete project | Sep 1 2023\";","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" assertEquals(expected, deadline.formatToFile());","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" public void testToString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" LocalDate dueDate \u003d LocalDate.of(2023, 9, 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" Deadline deadline \u003d new Deadline(\"Submit report\", true, dueDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" String formattedDueDate \u003d dueDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" String expected \u003d \"[D][X] Submit report (by: \" + formattedDueDate + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" assertEquals(expected, deadline.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":32}},{"path":"src/test/java/taskclasses/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import taskclasses.Event;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":"public class EventTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" public void testFormatToFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" LocalDate fromDate \u003d LocalDate.of(2023, 9, 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" LocalDate toDate \u003d LocalDate.of(2023, 9, 3);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" Event event \u003d new Event(\"Conference\", fromDate, toDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" String formattedFromDate \u003d fromDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" String formattedToDate \u003d toDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" String expected \u003d \"E | 0 | Conference | \" + formattedFromDate + \" - \" + formattedToDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" assertEquals(expected, event.formatToFile());","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" public void testToString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" LocalDate fromDate \u003d LocalDate.of(2023, 9, 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" LocalDate toDate \u003d LocalDate.of(2023, 9, 3);","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" Event event \u003d new Event(\"Party\", true, fromDate, toDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" String formattedFromDate \u003d fromDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" String formattedToDate \u003d toDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" String expected \u003d \"[E][X] Party (from: \" + formattedFromDate + \" to: \" + formattedToDate + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" assertEquals(expected, event.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":35}},{"path":"src/test/java/taskclasses/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import taskclasses.Todo;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" public void testFormatToFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" Todo todo \u003d new Todo(\"Buy groceries\");","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" String expected \u003d \"T | 0 | Buy groceries\";","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" assertEquals(expected, todo.formatToFile());","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" public void testToString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" Todo todo \u003d new Todo(\"Read a book\");","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" String expected \u003d \"[T][ ] Read a book\";","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" assertEquals(expected, todo.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":23}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"todo complete lab 1","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"todo test","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"deadline finish task /by 2023-11-07","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"event do stuff /from 2023-11-01 /to 2023-11-02","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"mark 2","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"mark 3","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"unmark 1","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"delete 2","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"bye","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"songgthu":10}},{"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":"songgthu"},"content":"del ACTUAL.TXT","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"REM compile the code into the bin folder, including packages","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\exception\\*.java ..\\src\\main\\java\\milbot\\*.java ..\\src\\main\\java\\taskclasses\\*.java","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"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":19,"author":{"gitId":"songgthu"},"content":"java -classpath ..\\bin milbot.Mil \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"songgthu":4,"-":18}},{"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":"songgthu"},"content":"java -classpath ../bin Mil \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"songgthu":2,"-":32}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"plugins {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":" id \u0027java\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":" id \u0027application\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"repositories {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":" mavenCentral()","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":"dependencies {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":"test {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" useJUnitPlatform()","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" testLogging {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" showExceptions true","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" showCauses true","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" showStackTraces true","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":"application {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" mainClass.set(\"milbot.Mil\")","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":"shadowJar {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" archiveBaseName \u003d \"mil\"","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" archiveFileName \u003d \u0027mil.jar\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":"run {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" standardInput \u003d System.in","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"songgthu"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"songgthu"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"songgthu":48}},{"path":"src/main/data/mil.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"T | 0 | ye","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"T | 0 | more","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"songgthu":2}},{"path":"src/main/java/exception/EmptyFindQueryException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class EmptyFindQueryException extends MilException {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public EmptyFindQueryException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(\"☹ Oopsie! You did not include any query.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"songgthu":8}},{"path":"src/main/java/exception/EmptyTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class EmptyTaskException extends MilException {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public EmptyTaskException() {","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(\"☹ Oopsie! You did not include any task description.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"songgthu":7}},{"path":"src/main/java/exception/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class InvalidDeadlineException extends MilException {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(\"☹ Oopsie! Please add your deadline with the following format: \\\"deadline (description) /by (yyyy-mm-dd) \\\".\");","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"songgthu":7}},{"path":"src/main/java/exception/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class InvalidEventException extends MilException {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public InvalidEventException() {","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(\"☹ Oopsie! Please add your event with the following format: \\\"event (description) /from (yyyy-mm-dd) /to (yyyy-mm-dd)\\\".\");","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"songgthu":7}},{"path":"src/main/java/exception/InvalidTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class InvalidTaskIndexException extends MilException {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public InvalidTaskIndexException() {","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(\"☹ Oopsie! The index you input does not match any task.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"songgthu":7}},{"path":"src/main/java/exception/MilException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class MilException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public MilException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(message);","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"songgthu":7}},{"path":"src/main/java/exception/NoTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"public class NoTaskIndexException extends MilException {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" public NoTaskIndexException() {","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" super(\"☹ Oopsie! You did not input the task index.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"songgthu":7}},{"path":"src/main/java/milbot/Mil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package milbot;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" * Mil class represents a chatbot application for managing tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"public class Mil {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":" private static Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" private static TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" private static Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" private static Parser parser;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" * Constructs a new instance of the Mil chatbot.","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" * Initializes the task list, user interface, storage, and parser.","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" public Mil() {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" storage \u003d new Storage();","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" taskList \u003d storage.loadTasksFromFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" parser \u003d new Parser(taskList, ui);","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" * The main method that starts the Mil chatbot application.","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" * Reads user input and processes it until the user types \"bye\".","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" * @param args Command-line arguments (not used).","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" Mil mil \u003d new Mil();","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" String input;","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" ui.printWelcomeMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" storage.saveTasksToFile(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" ui.printGoodbyeMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" parser.parseInput(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"songgthu":46,"-":2}},{"path":"src/main/java/milbot/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package milbot;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import taskclasses.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" private Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" public Parser(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" * Parses the user input and performs corresponding actions based on the input.","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" * @param input The input provided by the user.","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" public void parseInput(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" ui.printTaskList(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" } else if (input.startsWith(\"mark\") || input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" int index \u003d -1;","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" if (input.split(\" \").length \u003c 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" throw new NoTaskIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" if (index \u003c 0 || index \u003e\u003d taskList.getSize()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" throw new InvalidTaskIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" } catch (NoTaskIndexException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" } catch (InvalidTaskIndexException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" if(index !\u003d -1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":" Task task \u003d taskList.getTask(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":" if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"songgthu"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"songgthu"},"content":" ui.printMarkTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"songgthu"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"songgthu"},"content":" task.markAsUndone();","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"songgthu"},"content":" ui.printUnmarkTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"songgthu"},"content":" } else if (input.startsWith(\"todo\") || input.startsWith(\"deadline\") || input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"songgthu"},"content":" Task task;","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"songgthu"},"content":" if (input.equals(\"todo\") || input.equals(\"deadline\") || input.equals(\"event\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"songgthu"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"songgthu"},"content":" } catch (EmptyTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"songgthu"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"songgthu"},"content":" task \u003d new Todo(input.substring(5));","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"songgthu"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"songgthu"},"content":" ui.printNewTask(taskList, task);","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"songgthu"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"songgthu"},"content":" if (!input.contains(\"/by\") || input.trim().split(\"/by\").length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"songgthu"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"songgthu"},"content":" } catch (InvalidDeadlineException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"songgthu"},"content":" LocalDate deadlineDate \u003d LocalDate.parse(input.split(\"/\")[1].substring(3).trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"songgthu"},"content":" task \u003d new Deadline(input.split(\"/\")[0].substring(9),","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"songgthu"},"content":" deadlineDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"songgthu"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"songgthu"},"content":" ui.printNewTask(taskList, task);","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"songgthu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"songgthu"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"songgthu"},"content":" if (!input.contains(\"/from\") || !input.contains(\"/to\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"songgthu"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"songgthu"},"content":" } catch (InvalidEventException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"songgthu"},"content":" LocalDate fromDate \u003d LocalDate.parse(input.split(\"/\")[1].substring(5).trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"songgthu"},"content":" LocalDate toDate \u003d LocalDate.parse(input.split(\"/\")[2].substring(3).trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"songgthu"},"content":" task \u003d new Event(input.split(\"/\")[0].substring(6),","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"songgthu"},"content":" fromDate, toDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"songgthu"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"songgthu"},"content":" ui.printNewTask(taskList, task);","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"songgthu"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"songgthu"},"content":" if (input.split(\" \").length \u003c 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"songgthu"},"content":" throw new NoTaskIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"songgthu"},"content":" } catch (NoTaskIndexException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"songgthu"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"songgthu"},"content":" if (index \u003c 0 || index \u003e\u003d taskList.getSize()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"songgthu"},"content":" throw new InvalidTaskIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"songgthu"},"content":" } catch (InvalidTaskIndexException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"songgthu"},"content":" Task task \u003d taskList.getTask(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"songgthu"},"content":" taskList.removeTask(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"songgthu"},"content":" ui.printRemoveTask(task, taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"songgthu"},"content":" } else if(input.startsWith(\"find\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"songgthu"},"content":" if (input.trim().equals(\"find\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"songgthu"},"content":" throw new EmptyFindQueryException();","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"songgthu"},"content":" } catch (EmptyFindQueryException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"songgthu"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"songgthu"},"content":" String taskQuery \u003d input.split(\" \")[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"songgthu"},"content":" TaskList tasksResult \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"songgthu"},"content":" for(Task task : taskList.getTaskList()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"songgthu"},"content":" if(task.toString().contains(taskQuery)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"songgthu"},"content":" tasksResult.addTask(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"songgthu"},"content":" ui.printSearchResult(tasksResult);","lastModifiedDate":"2023-08-28"},{"lineNumber":141,"author":{"gitId":"songgthu"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"songgthu"},"content":" ui.printUnknownMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":145}},{"path":"src/main/java/milbot/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package milbot;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"import taskclasses.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import java.io.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" * Storage class handles reading tasks from and writing tasks to a file.","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" private File file;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" private FileWriter tasksOutput;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" private String filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" * Constructs a Storage instance with a default file path.","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" public Storage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" filePath \u003d \"src\\\\main\\\\data\\\\mil.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" * Loads tasks from the file and adds them to the task list.","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" public TaskList loadTasksFromFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" try (BufferedReader inputFile \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" String line;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" while ((line \u003d inputFile.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" Task task \u003d Task.createTaskFromData(line);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" System.err.println(\"Error loading tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" return taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" * Saves tasks from the provided TaskList to the file.","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":" * @param tasks The TaskList containing tasks to be saved.","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"songgthu"},"content":" public void saveTasksToFile(TaskList tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"songgthu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"songgthu"},"content":" taskList \u003d tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"songgthu"},"content":" tasksOutput \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"songgthu"},"content":" BufferedWriter outputFile \u003d new BufferedWriter(tasksOutput);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"songgthu"},"content":" for (Task task : tasks.getTaskList()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"songgthu"},"content":" outputFile.write(task.formatToFile());","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"songgthu"},"content":" outputFile.newLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"songgthu"},"content":" outputFile.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"songgthu"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"songgthu"},"content":" System.err.println(\"Error saving tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":61}},{"path":"src/main/java/milbot/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package milbot;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import java.util.List;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"import taskclasses.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" * TaskList class represents a list of tasks and provides methods to manage tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"public class TaskList {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" private List\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" * Constructs a TaskList instance with an empty list of tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" public TaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" * Retrieves the list of tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" * @return The list of tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" public List\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" return taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" * Gets the number of tasks in the task list.","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" * @return The number of tasks in the task list.","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" public int getSize() {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" return taskList.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" * Retrieves the task at the specified index.","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" return taskList.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"songgthu"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"songgthu"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"songgthu"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"songgthu"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"songgthu"},"content":" * Removes a task from the task list at the specified index.","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"songgthu"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"songgthu"},"content":" public void removeTask(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"songgthu"},"content":" taskList.remove(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":62}},{"path":"src/main/java/milbot/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package milbot;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import taskclasses.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":" * Ui class handles user interface-related functionalities.","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"public class Ui {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":" private static final String INDENTATION \u003d \" \";","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" private static final String HORIZONTAL_LINE \u003d \"__________________________________________________________________________\";","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" * Prints a welcome message when the chatbot is launched.","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" public void printWelcomeMessage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" String logo \u003d \" ____ ____ _ _\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" + \"| \\\\__/ | | | | |\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" + \"| | \\\\ _ / | | | | | |\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" + \"| | | | | | | |____\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" + \"|__| |__| |_| |______|\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Hi there, I\u0027m Mil - your personal chatbot.\\n How can I help you today?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" * Prints a goodbye message before the chatbot exits.","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" public void printGoodbyeMessage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Have a nice day and see you again soon!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" * Prints an error message.","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" * @param message The error message to be printed.","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":" public void printErrorMessage(String message) {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + message);","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"songgthu"},"content":" * Prints a message indicating a new task has been added to the task list.","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"songgthu"},"content":" * @param taskList The TaskList containing the added task.","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"songgthu"},"content":" * @param task The added task.","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"songgthu"},"content":" public void printNewTask(TaskList taskList, Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \" \" + task);","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Now you have \" + taskList.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"songgthu"},"content":" * Prints the list of tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"songgthu"},"content":" * @param taskList The TaskList containing the tasks to be printed.","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"songgthu"},"content":" public void printTaskList(TaskList taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"songgthu"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"songgthu"},"content":" for (Task task : taskList.getTaskList()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"songgthu"},"content":" System.out.println(String.format(\"%s%d.%s\",","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"songgthu"},"content":" INDENTATION, i, task.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"songgthu"},"content":" i++;","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"songgthu"},"content":" * Prints a message indicating that a task has been marked as done.","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"songgthu"},"content":" * @param task The task that has been marked as done.","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"songgthu"},"content":" public void printMarkTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + task);","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"songgthu"},"content":" * Prints a message indicating that a task has been marked as not done yet.","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"songgthu"},"content":" * @param task The task that has been marked as not done yet.","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"songgthu"},"content":" public void printUnmarkTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + task);","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"songgthu"},"content":" * Prints a message indicating that a task has been removed from the task list.","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"songgthu"},"content":" * @param task The task that has been removed.","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"songgthu"},"content":" * @param taskList The TaskList after the task has been removed.","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"songgthu"},"content":" public void printRemoveTask(Task task, TaskList taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \" \" + task);","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Now you have \" + taskList.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"songgthu"},"content":" * Prints a message indicating an unknown command.","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"songgthu"},"content":" public void printUnknownMessage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"songgthu"},"content":" System.out.println(\"☹ Oopsie! I\u0027m sorry, but I don\u0027t know what that means.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"songgthu"},"content":" public void printSearchResult(TaskList taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"songgthu"},"content":" if(taskList.getSize() \u003d\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"There is no task matched to your query\");","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"songgthu"},"content":" return;","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + \"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"songgthu"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"songgthu"},"content":" for (Task task : taskList.getTaskList()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"songgthu"},"content":" System.out.println(String.format(\"%s%d.%s\",","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"songgthu"},"content":" INDENTATION, i, task.toString()));","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"songgthu"},"content":" i++;","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"songgthu"},"content":" System.out.println(INDENTATION + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":140}},{"path":"src/main/java/taskclasses/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" * Represents a task of type \"Deadline\" with a specific due date.","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" private String by;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" * Constructs a Deadline task with the given description and due date.","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" * @param by The due date of the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" this.by \u003d by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" * Constructs a Deadline task with the given description, completion status, and due date.","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" * @param by The due date of the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" public Deadline(String description, boolean isDone, LocalDate by) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" this.by \u003d by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" public String formatToFile() {","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" return \"D | \" + super.formatToFile() + \" | \" + by;","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"songgthu":43}},{"path":"src/main/java/taskclasses/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" protected String from;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" protected String to;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" this.from \u003d from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" this.to \u003d to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" public Event(String description, boolean isDone, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" this.from \u003d from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" this.to \u003d to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" public String formatToFile() {","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" return \"E | \" + super.formatToFile() + \" | \" + from + \" - \" + to;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"songgthu":27}},{"path":"src/main/java/taskclasses/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" * Represents a basic task with a description and completion status.","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" protected String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" * Constructs a Task with the given description and sets the completion status to false.","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" * Constructs a Task with the given description and completion status.","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":" * Creates a task object from a data line in storage.","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"songgthu"},"content":" * @param dataLine The data line representing the task.","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"songgthu"},"content":" * @return A Task object created from the data line.","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"songgthu"},"content":" public static Task createTaskFromData(String dataLine) {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"songgthu"},"content":" String[] parts \u003d dataLine.split(\" \\\\| \");","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"songgthu"},"content":" String type \u003d parts[0].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"songgthu"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"songgthu"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"songgthu"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"songgthu"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"songgthu"},"content":" return new Todo(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"songgthu"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"songgthu"},"content":" LocalDate by \u003d LocalDate.parse(parts[3].trim(), inputFormatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"songgthu"},"content":" return new Deadline(description, isDone, by);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"songgthu"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"songgthu"},"content":" String[] dates \u003d parts[3].split(\" - \");","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"songgthu"},"content":" String fromDateString \u003d dates[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"songgthu"},"content":" String toDateString \u003d dates[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"songgthu"},"content":" LocalDate from \u003d LocalDate.parse(fromDateString, inputFormatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"songgthu"},"content":" LocalDate to \u003d LocalDate.parse(toDateString, inputFormatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"songgthu"},"content":" return new Event(description, isDone, from, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"songgthu"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"songgthu"},"content":" return null; // Unknown task type","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":67,"author":{"gitId":"songgthu"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":68,"author":{"gitId":"songgthu"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":69,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":70,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":71,"author":{"gitId":"songgthu"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":72,"author":{"gitId":"songgthu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":73,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":74,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":75,"author":{"gitId":"songgthu"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":76,"author":{"gitId":"songgthu"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-20"},{"lineNumber":77,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":78,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":79,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"songgthu"},"content":" * Formats the task for storage.","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"songgthu"},"content":" * @return A formatted string representing the task for storage.","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"songgthu"},"content":" public String formatToFile() {","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"songgthu"},"content":" int status \u003d isDone ? 1 : 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"songgthu"},"content":" return status + \" | \" + description;","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":88,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":89,"author":{"gitId":"songgthu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":90,"author":{"gitId":"songgthu"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-20"},{"lineNumber":91,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":92,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"songgthu":92}},{"path":"src/main/java/taskclasses/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":" * Represents a task of type \"Todo\" that can be completed.","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":" * Constructs a Todo task with the given description.","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" * @param description The description of the todo task.","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" super(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" public String formatToFile() {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" return \"T | \" + super.formatToFile();","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"songgthu":23}},{"path":"src/test/java/taskclasses/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import taskclasses.Deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" public void testFormatToFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" LocalDate dueDate \u003d LocalDate.of(2023, 9, 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" Deadline deadline \u003d new Deadline(\"Complete project\", dueDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" String expected \u003d \"D | 0 | Complete project | Sep 1 2023\";","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" assertEquals(expected, deadline.formatToFile());","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" public void testToString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" LocalDate dueDate \u003d LocalDate.of(2023, 9, 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" Deadline deadline \u003d new Deadline(\"Submit report\", true, dueDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" String formattedDueDate \u003d dueDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":" String expected \u003d \"[D][X] Submit report (by: \" + formattedDueDate + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" assertEquals(expected, deadline.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":32}},{"path":"src/test/java/taskclasses/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import taskclasses.Event;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":"public class EventTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" public void testFormatToFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" LocalDate fromDate \u003d LocalDate.of(2023, 9, 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" LocalDate toDate \u003d LocalDate.of(2023, 9, 3);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":" Event event \u003d new Event(\"Conference\", fromDate, toDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" String formattedFromDate \u003d fromDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" String formattedToDate \u003d toDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" String expected \u003d \"E | 0 | Conference | \" + formattedFromDate + \" - \" + formattedToDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" assertEquals(expected, event.formatToFile());","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"songgthu"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"songgthu"},"content":" public void testToString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":" LocalDate fromDate \u003d LocalDate.of(2023, 9, 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"songgthu"},"content":" LocalDate toDate \u003d LocalDate.of(2023, 9, 3);","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"songgthu"},"content":" Event event \u003d new Event(\"Party\", true, fromDate, toDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"songgthu"},"content":" String formattedFromDate \u003d fromDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"songgthu"},"content":" String formattedToDate \u003d toDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"songgthu"},"content":" String expected \u003d \"[E][X] Party (from: \" + formattedFromDate + \" to: \" + formattedToDate + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"songgthu"},"content":" assertEquals(expected, event.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":35}},{"path":"src/test/java/taskclasses/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"package taskclasses;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"import taskclasses.Todo;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"songgthu"},"content":" public void testFormatToFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"songgthu"},"content":" Todo todo \u003d new Todo(\"Buy groceries\");","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"songgthu"},"content":" String expected \u003d \"T | 0 | Buy groceries\";","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"songgthu"},"content":" assertEquals(expected, todo.formatToFile());","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"songgthu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"songgthu"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"songgthu"},"content":" public void testToString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"songgthu"},"content":" Todo todo \u003d new Todo(\"Read a book\");","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"songgthu"},"content":" String expected \u003d \"[T][ ] Read a book\";","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"songgthu"},"content":" assertEquals(expected, todo.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"songgthu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"songgthu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"songgthu":23}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"songgthu"},"content":"todo complete lab 1","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"songgthu"},"content":"todo test","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"songgthu"},"content":"deadline finish task /by 2023-11-07","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"songgthu"},"content":"event do stuff /from 2023-11-01 /to 2023-11-02","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"songgthu"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"songgthu"},"content":"mark 2","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"songgthu"},"content":"mark 3","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"songgthu"},"content":"unmark 1","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"delete 2","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"bye","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"songgthu":10}},{"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":"songgthu"},"content":"del ACTUAL.TXT","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"songgthu"},"content":"REM compile the code into the bin folder, including packages","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"songgthu"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\exception\\*.java ..\\src\\main\\java\\milbot\\*.java ..\\src\\main\\java\\taskclasses\\*.java","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"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":19,"author":{"gitId":"songgthu"},"content":"java -classpath ..\\bin milbot.Mil \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"songgthu":4,"-":18}},{"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":"songgthu"},"content":"java -classpath ../bin Mil \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"songgthu"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"songgthu":2,"-":32}}] diff --git a/songgthu_ip_master/commits.json b/songgthu_ip_master/commits.json index 81d8bcaa..8c0e5fc7 100644 --- a/songgthu_ip_master/commits.json +++ b/songgthu_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"songgthu":[{"date":"2023-08-20","commitResults":[{"hash":"b5370172e5358597b417104d791657f89a9c170f","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"02e7d5be389d738f8c6ea3a7022429c6014d0ab9","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":4}}},{"hash":"b8b384c0463736bb965466513c89483af1def571","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"1a77eb6c97a02b4d70a66a90e157168fce2db31a","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":4}}},{"hash":"afac077cbe8b4661b3a74e04e96ce5dcd0621fa9","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"cf5b09e44b19cefce5bac13a678304aceb1a548b","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":5}}},{"hash":"cf7396e8d9c1db551f869bd3a39dca6506ce22ec","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":9}}},{"hash":"67161e3d11e2b6187388173ac88fc2e79e29f115","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":6}}}]},{"date":"2023-08-21","commitResults":[{"hash":"d8f35495dd02482ecf3432df4a49dda5a06028ba","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":2,"deletions":2},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":3,"deletions":7}}},{"hash":"84d1039b7b6a9f654ddb91e9faf21a940ccc8327","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":5}}},{"hash":"47f4f46307f8c9ccbaae27d3968381babe3a6b3a","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"83f482601fd4f365a57449855f350e004caf4739","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":55}}}]},{"date":"2023-08-26","commitResults":[{"hash":"662776c736f70425c0db245b6bd9b39cec703c71","isMergeCommit":false,"messageTitle":"Add save function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":106,"deletions":57}}},{"hash":"2d095a5b355bf715ed416240f7ca0fef484408fb","isMergeCommit":false,"messageTitle":"Add date formatting for Deadline, Event tasks","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":5},"java":{"insertions":45,"deletions":20}}}]},{"date":"2023-08-27","commitResults":[{"hash":"63e08b262a5a2d7612a0e20349af77736cbada75","isMergeCommit":true,"messageTitle":"Merge pull request #1 from songgthu/branch-Level-7","messageBody":"Add date formatting for Deadline, Event tasks","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"f7ff2fbf9112690924a170b8ed9ffd32b05a77c9","isMergeCommit":false,"messageTitle":"Extract the following classes: Ui, Storage, Parser, TaskList","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":6},"java":{"insertions":312,"deletions":185}}},{"hash":"68b654dcc76cb60c6fe7f3df342cae1cc85d4f1e","isMergeCommit":false,"messageTitle":"Organize classes into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":6},"java":{"insertions":78,"deletions":18},"bat":{"insertions":4,"deletions":3}}},{"hash":"bff0cc5a13dfe2327a6d94568a49f75725b7cb5a","isMergeCommit":false,"messageTitle":"Set up gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":24,"deletions":0},"java":{"insertions":20,"deletions":30}}},{"hash":"742c45fed9e95695014d05303af628a74c31db13","isMergeCommit":false,"messageTitle":"Add JUnit testcases for Todo, Deadline and Event","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":8,"deletions":0},"java":{"insertions":92,"deletions":2}}},{"hash":"9c1e9038d79991f1b78321066c18ea0e123bf962","isMergeCommit":false,"messageTitle":"Add JUnit testcases of Todo, Deadline and Event","messageBody":"","tags":["A-Junit"],"fileTypesAndContributionMap":{"gradle":{"insertions":26,"deletions":16},"java":{"insertions":23,"deletions":23}}},{"hash":"d6ee0807d9236c636e0f40c613243c0593d4e726","isMergeCommit":false,"messageTitle":"Package the app as a JAR file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"eebedc93437b38eddaf8a697528f2444c0c72ac5","isMergeCommit":false,"messageTitle":"Add javadoc to classes and methods","messageBody":"","tags":["A-Javadoc"],"fileTypesAndContributionMap":{"java":{"insertions":166,"deletions":6}}},{"hash":"6bc0fc441136235577006f9bc1996d847f1365ec","isMergeCommit":false,"messageTitle":"Check coding standards","messageBody":"","tags":["A-CodingStandards"],"fileTypesAndContributionMap":{"java":{"insertions":166,"deletions":6}}},{"hash":"a96852921217c0dbb74f687b5883008f951d2810","isMergeCommit":false,"messageTitle":"Add find task function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":51,"deletions":12}}},{"hash":"6e49d9c97004543f7f26b3d93a99b08bbc81127f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"songgthu":{"java":778,"md":0,"fxml":0,"sh":2,"bat":4,"gradle":43,"txt":12}},"authorContributionVariance":{"songgthu":67061.65},"authorDisplayNameMap":{"songgthu":"CS2103T-T15-3 TRIN.. THU"}} +{"authorDailyContributionsMap":{"songgthu":[{"date":"2023-08-20","commitResults":[{"hash":"b5370172e5358597b417104d791657f89a9c170f","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"02e7d5be389d738f8c6ea3a7022429c6014d0ab9","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":4}}},{"hash":"b8b384c0463736bb965466513c89483af1def571","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"1a77eb6c97a02b4d70a66a90e157168fce2db31a","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":4}}},{"hash":"afac077cbe8b4661b3a74e04e96ce5dcd0621fa9","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"cf5b09e44b19cefce5bac13a678304aceb1a548b","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":5}}},{"hash":"cf7396e8d9c1db551f869bd3a39dca6506ce22ec","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":9}}},{"hash":"67161e3d11e2b6187388173ac88fc2e79e29f115","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":6}}}]},{"date":"2023-08-21","commitResults":[{"hash":"d8f35495dd02482ecf3432df4a49dda5a06028ba","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":2,"deletions":2},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":3,"deletions":7}}},{"hash":"84d1039b7b6a9f654ddb91e9faf21a940ccc8327","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":5}}},{"hash":"47f4f46307f8c9ccbaae27d3968381babe3a6b3a","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"83f482601fd4f365a57449855f350e004caf4739","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":55}}}]},{"date":"2023-08-26","commitResults":[{"hash":"662776c736f70425c0db245b6bd9b39cec703c71","isMergeCommit":false,"messageTitle":"Add save function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":106,"deletions":57}}},{"hash":"2d095a5b355bf715ed416240f7ca0fef484408fb","isMergeCommit":false,"messageTitle":"Add date formatting for Deadline, Event tasks","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":5},"java":{"insertions":45,"deletions":20}}}]},{"date":"2023-08-27","commitResults":[{"hash":"63e08b262a5a2d7612a0e20349af77736cbada75","isMergeCommit":true,"messageTitle":"Merge pull request #1 from songgthu/branch-Level-7","messageBody":"Add date formatting for Deadline, Event tasks","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"f7ff2fbf9112690924a170b8ed9ffd32b05a77c9","isMergeCommit":false,"messageTitle":"Extract the following classes: Ui, Storage, Parser, TaskList","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":6},"java":{"insertions":312,"deletions":185}}},{"hash":"68b654dcc76cb60c6fe7f3df342cae1cc85d4f1e","isMergeCommit":false,"messageTitle":"Organize classes into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":6},"java":{"insertions":78,"deletions":18},"bat":{"insertions":4,"deletions":3}}},{"hash":"bff0cc5a13dfe2327a6d94568a49f75725b7cb5a","isMergeCommit":false,"messageTitle":"Set up gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":24,"deletions":0},"java":{"insertions":20,"deletions":30}}},{"hash":"742c45fed9e95695014d05303af628a74c31db13","isMergeCommit":false,"messageTitle":"Add JUnit testcases for Todo, Deadline and Event","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":8,"deletions":0},"java":{"insertions":92,"deletions":2}}},{"hash":"9c1e9038d79991f1b78321066c18ea0e123bf962","isMergeCommit":false,"messageTitle":"Add JUnit testcases of Todo, Deadline and Event","messageBody":"","tags":["A-Junit"],"fileTypesAndContributionMap":{"gradle":{"insertions":26,"deletions":16},"java":{"insertions":23,"deletions":23}}},{"hash":"d6ee0807d9236c636e0f40c613243c0593d4e726","isMergeCommit":false,"messageTitle":"Package the app as a JAR file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"eebedc93437b38eddaf8a697528f2444c0c72ac5","isMergeCommit":false,"messageTitle":"Add javadoc to classes and methods","messageBody":"","tags":["A-Javadoc"],"fileTypesAndContributionMap":{"java":{"insertions":166,"deletions":6}}},{"hash":"6bc0fc441136235577006f9bc1996d847f1365ec","isMergeCommit":false,"messageTitle":"Check coding standards","messageBody":"","tags":["A-CodingStandards"],"fileTypesAndContributionMap":{"java":{"insertions":166,"deletions":6}}},{"hash":"a96852921217c0dbb74f687b5883008f951d2810","isMergeCommit":false,"messageTitle":"Add find task function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":51,"deletions":12}}},{"hash":"6e49d9c97004543f7f26b3d93a99b08bbc81127f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"b2d7451302b366328735aeb2fea255b376213b4c","isMergeCommit":false,"messageTitle":"Add checkStyle to detect coding style violations","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1},"java":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"songgthu":{"java":779,"md":0,"fxml":0,"sh":2,"bat":4,"gradle":48,"txt":12}},"authorContributionVariance":{"songgthu":55498.562},"authorDisplayNameMap":{"songgthu":"CS2103T-T15-3 TRIN.. THU"}} diff --git a/sp4ce-cowboy_ip_master/authorship.json b/sp4ce-cowboy_ip_master/authorship.json index dde436f9..b8ae66de 100644 --- a/sp4ce-cowboy_ip_master/authorship.json +++ b/sp4ce-cowboy_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/ChatterBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ChatterBox {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Hello! I\u0027m ChatterBox\");","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" System.out.println(\"\");","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Available commands:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"todo \u003cTASK\u003e\"); ","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"deadline \u003cTASK\u003e /by \u003cDATE\u003e\");","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"event \u003cTASK\u003e /from \u003cSTART\u003e /to \u003cEND\u003e\");","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" String fullLine \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" String[] inputLine \u003d fullLine.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" String input \u003d inputLine[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter(); ","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(String.format(\"%d. %s\", i + 1, ","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.get(i).toString()));","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" } ","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (input.equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" int index \u003d Integer.parseInt(inputLine[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.get(index - 1).mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(taskList.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (input.equals(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" int index \u003d Integer.parseInt(inputLine[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.get(index - 1).unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(taskList.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (input.equals(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" int index \u003d Integer.parseInt(inputLine[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" Task tempDelete \u003d taskList.get(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(tempDelete.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" if (input.equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" if (fullLine.split(\" todo\").length \u003c 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"The description of a todo cannot be empty!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new DukeException(","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" \"The description of a todo cannot be empty!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" String taskName \u003d fullLine.split(\"todo \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" ToDo tempToDo \u003d new ToDo(taskName);","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.add(tempToDo);","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\" \" + tempToDo.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" sizePrinter(taskList);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (input.equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" if (fullLine.split(\"/by \").length \u003c 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"The due date of a deadline cannot be empty!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new DukeException(","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"sp4ce-cowboy"},"content":" \"The due date of a deadline cannot be empty!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"sp4ce-cowboy"},"content":" String longName \u003d fullLine.split(\"/by \")[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"sp4ce-cowboy"},"content":" String date \u003d fullLine.split(\"/by \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"sp4ce-cowboy"},"content":" String taskName \u003d longName.split(\"deadline \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"sp4ce-cowboy"},"content":" String deadlineName \u003d taskName + ","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"sp4ce-cowboy"},"content":" String.format(\"(by: %s)\", date);","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"sp4ce-cowboy"},"content":" Deadline tempDeadline \u003d new Deadline(deadlineName);","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.add(tempDeadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\" \" + tempDeadline.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"sp4ce-cowboy"},"content":" sizePrinter(taskList);","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (input.equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"sp4ce-cowboy"},"content":" if (fullLine.split(\"/\").length \u003c 3) {","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"An event must have both start and end date\");","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new DukeException(","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"sp4ce-cowboy"},"content":" \"An event must have both start and end date\");","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"sp4ce-cowboy"},"content":" String[] longNameArray \u003d fullLine.split(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"sp4ce-cowboy"},"content":" String longName \u003d longNameArray[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"sp4ce-cowboy"},"content":" String fromTime \u003d longNameArray[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"sp4ce-cowboy"},"content":" String endTime \u003d longNameArray[2];","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"sp4ce-cowboy"},"content":" String taskName \u003d longName.split(\"event \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"sp4ce-cowboy"},"content":" String eventName \u003d taskName + ","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"sp4ce-cowboy"},"content":" String.format(\"(from: %s to: %s)\",","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"sp4ce-cowboy"},"content":" fromTime, endTime);","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"sp4ce-cowboy"},"content":" Event tempEvent \u003d new Event(eventName);","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.add(tempEvent);","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"sp4ce-cowboy"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\" \" + tempEvent.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"sp4ce-cowboy"},"content":" sizePrinter(taskList);","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"sp4ce-cowboy"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"sp4ce-cowboy"},"content":" //linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"sp4ce-cowboy"},"content":" //tabPrinter(\"added: \" + fullLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"sp4ce-cowboy"},"content":" //linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"sp4ce-cowboy"},"content":" //taskList.add(new Task(fullLine)); ","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new ","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"sp4ce-cowboy"},"content":" DukeException(\"I\u0027m sorry I don\u0027t know what that means.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"sp4ce-cowboy"},"content":" private static void linePrinter() {","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"sp4ce-cowboy"},"content":" (\"___________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"sp4ce-cowboy"},"content":" System.out.println(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"sp4ce-cowboy"},"content":" private static void tabPrinter(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"sp4ce-cowboy"},"content":" System.out.println(\" \" + s);","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"sp4ce-cowboy"},"content":" private static void sizePrinter(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"sp4ce-cowboy"},"content":" String.format(\"Now you have %d tasks in the list.\", ","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"sp4ce-cowboy"},"content":" tasks.size()));","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":158}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":" Deadline(boolean done, String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":" super(done, name);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" Deadline(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" return \"[D] \" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":17}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.lang.Exception;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":" DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":10}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":" Event(boolean done, String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":" super(done, name);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" Event(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" return \"[E] \" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":17}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":" boolean done;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":" String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":" Task(boolean done, String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" * Create a Task object with default false","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" * done status","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" Task(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" this(false, name);","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" if (done) {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" return \"[X] \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" return \"[ ] \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":38}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":" ToDo(boolean done, String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":" super(done, name);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" ToDo(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":4}},{"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":"sp4ce-cowboy"},"content":"java -classpath ../bin ChatterBox \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":{"sp4ce-cowboy":1,"-":37}}] +[{"path":"src/main/java/ChatterBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ChatterBox {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Hello! I\u0027m ChatterBox\");","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" System.out.println(\"\");","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Available commands:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"todo \u003cTASK\u003e\"); ","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"deadline \u003cTASK\u003e /by \u003cDATE\u003e\");","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"event \u003cTASK\u003e /from \u003cSTART\u003e /to \u003cEND\u003e\");","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" String fullLine \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" String[] inputLine \u003d fullLine.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" String input \u003d inputLine[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter(); ","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(String.format(\"%d. %s\", i + 1, ","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.get(i).toString()));","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" } ","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (input.equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"sp4ce-cowboy"},"content":" int index \u003d Integer.parseInt(inputLine[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.get(index - 1).mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(taskList.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (input.equals(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"sp4ce-cowboy"},"content":" int index \u003d Integer.parseInt(inputLine[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.get(index - 1).unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(taskList.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"sp4ce-cowboy"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (input.equals(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"sp4ce-cowboy"},"content":" int index \u003d Integer.parseInt(inputLine[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"sp4ce-cowboy"},"content":" Task tempDelete \u003d taskList.get(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(tempDelete.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"sp4ce-cowboy"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"sp4ce-cowboy"},"content":" if (input.equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"sp4ce-cowboy"},"content":" if (fullLine.split(\"todo \").length \u003c 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"The description of a todo cannot be empty!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new DukeException(","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"sp4ce-cowboy"},"content":" \"The description of a todo cannot be empty!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"sp4ce-cowboy"},"content":" String taskName \u003d fullLine.split(\"todo \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"sp4ce-cowboy"},"content":" ToDo tempToDo \u003d new ToDo(taskName);","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.add(tempToDo);","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\" \" + tempToDo.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"sp4ce-cowboy"},"content":" sizePrinter(taskList);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (input.equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"sp4ce-cowboy"},"content":" if (fullLine.split(\"/by \").length \u003c 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"The due date of a deadline cannot be empty!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new DukeException(","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"sp4ce-cowboy"},"content":" \"The due date of a deadline cannot be empty!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"sp4ce-cowboy"},"content":" String longName \u003d fullLine.split(\"/by \")[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"sp4ce-cowboy"},"content":" String date \u003d fullLine.split(\"/by \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"sp4ce-cowboy"},"content":" String taskName \u003d longName.split(\"deadline \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"sp4ce-cowboy"},"content":" String deadlineName \u003d taskName + ","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"sp4ce-cowboy"},"content":" String.format(\"(by: %s)\", date);","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"sp4ce-cowboy"},"content":" Deadline tempDeadline \u003d new Deadline(deadlineName);","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.add(tempDeadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\" \" + tempDeadline.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"sp4ce-cowboy"},"content":" sizePrinter(taskList);","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"sp4ce-cowboy"},"content":" } else if (input.equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"sp4ce-cowboy"},"content":" if (fullLine.split(\"/\").length \u003c 3) {","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"An event must have both start and end date\");","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new DukeException(","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"sp4ce-cowboy"},"content":" \"An event must have both start and end date\");","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"sp4ce-cowboy"},"content":" String[] longNameArray \u003d fullLine.split(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"sp4ce-cowboy"},"content":" String longName \u003d longNameArray[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"sp4ce-cowboy"},"content":" String fromTime \u003d longNameArray[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"sp4ce-cowboy"},"content":" String endTime \u003d longNameArray[2];","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"sp4ce-cowboy"},"content":" String taskName \u003d longName.split(\"event \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"sp4ce-cowboy"},"content":" String eventName \u003d taskName + ","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"sp4ce-cowboy"},"content":" String.format(\"(from: %s to: %s)\",","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"sp4ce-cowboy"},"content":" fromTime, endTime);","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"sp4ce-cowboy"},"content":" Event tempEvent \u003d new Event(eventName);","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"sp4ce-cowboy"},"content":" taskList.add(tempEvent);","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"sp4ce-cowboy"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(\" \" + tempEvent.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"sp4ce-cowboy"},"content":" sizePrinter(taskList);","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"sp4ce-cowboy"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"sp4ce-cowboy"},"content":" //linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"sp4ce-cowboy"},"content":" //tabPrinter(\"added: \" + fullLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"sp4ce-cowboy"},"content":" //linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"sp4ce-cowboy"},"content":" //taskList.add(new Task(fullLine)); ","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"sp4ce-cowboy"},"content":" linePrinter();","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"sp4ce-cowboy"},"content":" throw new ","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"sp4ce-cowboy"},"content":" DukeException(\"I\u0027m sorry I don\u0027t know what that means.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"sp4ce-cowboy"},"content":" private static void linePrinter() {","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"sp4ce-cowboy"},"content":" (\"___________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"sp4ce-cowboy"},"content":" System.out.println(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"sp4ce-cowboy"},"content":" private static void tabPrinter(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"sp4ce-cowboy"},"content":" System.out.println(\" \" + s);","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"sp4ce-cowboy"},"content":" private static void sizePrinter(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"sp4ce-cowboy"},"content":" tabPrinter(","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"sp4ce-cowboy"},"content":" String.format(\"Now you have %d tasks in the list.\", ","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"sp4ce-cowboy"},"content":" tasks.size()));","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":158}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":" Deadline(boolean done, String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":" super(done, name);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" Deadline(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" return \"[D] \" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":17}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.lang.Exception;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":" DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":10}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":" Event(boolean done, String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":" super(done, name);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" Event(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" return \"[E] \" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":17}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"public class File {","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"sp4ce-cowboy":3}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":" boolean done;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":" String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":" Task(boolean done, String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":" /*","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" * Create a Task object with default false","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" * done status","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" Task(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":" this(false, name);","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"sp4ce-cowboy"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"sp4ce-cowboy"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"sp4ce-cowboy"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"sp4ce-cowboy"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"sp4ce-cowboy"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"sp4ce-cowboy"},"content":" if (done) {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"sp4ce-cowboy"},"content":" return \"[X] \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"sp4ce-cowboy"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"sp4ce-cowboy"},"content":" return \"[ ] \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":38}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"import java.util.*;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"sp4ce-cowboy"},"content":" ToDo(boolean done, String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"sp4ce-cowboy"},"content":" super(done, name);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"sp4ce-cowboy"},"content":" ToDo(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"sp4ce-cowboy"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"sp4ce-cowboy"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"sp4ce-cowboy"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"sp4ce-cowboy"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"sp4ce-cowboy"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"sp4ce-cowboy"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"sp4ce-cowboy"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"sp4ce-cowboy"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"sp4ce-cowboy"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"sp4ce-cowboy"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"sp4ce-cowboy"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"sp4ce-cowboy":4}},{"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":"sp4ce-cowboy"},"content":"java -classpath ../bin ChatterBox \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":{"sp4ce-cowboy":1,"-":37}}] diff --git a/sp4ce-cowboy_ip_master/commits.json b/sp4ce-cowboy_ip_master/commits.json index ead65387..9028f33d 100644 --- a/sp4ce-cowboy_ip_master/commits.json +++ b/sp4ce-cowboy_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"sp4ce-cowboy":[{"date":"2023-08-24","commitResults":[{"hash":"97418aff406ee88e2b4664127b510aec59609ac6","isMergeCommit":false,"messageTitle":"Implement an initial skeletal version of the ChatBot. Duke Level-0, first commit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"d5a375d0088c02c3481abb88775c710d06926d79","isMergeCommit":false,"messageTitle":"Delete Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"7c84a9f76cbc0bb6d66b29e985f8be5c6d12e46c","isMergeCommit":false,"messageTitle":"Improve ChatBot to echo every input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":2}}},{"hash":"1163a5b7c2d8caf8b01a5cb0b77b89789a11523d","isMergeCommit":false,"messageTitle":"Add ability to read, store, and retrieve tasks upon request","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"2cf74516018400a78e13743dd542f3f7f0b0c3c6","isMergeCommit":false,"messageTitle":"Add ability to mark and unmark tasks","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":9}}},{"hash":"b1349f311fdcb28bb124f8558b6c597022539474","isMergeCommit":false,"messageTitle":"Add ability to add todos, deadlines and event, in addition to tasks","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":14}}},{"hash":"f918e2357d18f070e91b65594bec1969fdb199b6","isMergeCommit":false,"messageTitle":"Use the input/output redirection technique to semi-automate the testing of Duke","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2}}},{"hash":"b361ffc43981fd8c7d9f14e3405f4d36a3233b5e","isMergeCommit":false,"messageTitle":"Teach the chatbot to deal with errors such as incorrect inputs entered by the user","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":5}}},{"hash":"fd540f2ac693c91d7d0c601780b4f7816ab0c103","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"sp4ce-cowboy":{"java":257,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":4}},"authorContributionVariance":{"sp4ce-cowboy":14406.0},"authorDisplayNameMap":{"sp4ce-cowboy":"CS2103-T16-3 SURE..BESH"}} +{"authorDailyContributionsMap":{"sp4ce-cowboy":[{"date":"2023-08-24","commitResults":[{"hash":"97418aff406ee88e2b4664127b510aec59609ac6","isMergeCommit":false,"messageTitle":"Implement an initial skeletal version of the ChatBot. Duke Level-0, first commit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"d5a375d0088c02c3481abb88775c710d06926d79","isMergeCommit":false,"messageTitle":"Delete Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"7c84a9f76cbc0bb6d66b29e985f8be5c6d12e46c","isMergeCommit":false,"messageTitle":"Improve ChatBot to echo every input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":2}}},{"hash":"1163a5b7c2d8caf8b01a5cb0b77b89789a11523d","isMergeCommit":false,"messageTitle":"Add ability to read, store, and retrieve tasks upon request","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"2cf74516018400a78e13743dd542f3f7f0b0c3c6","isMergeCommit":false,"messageTitle":"Add ability to mark and unmark tasks","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":9}}},{"hash":"b1349f311fdcb28bb124f8558b6c597022539474","isMergeCommit":false,"messageTitle":"Add ability to add todos, deadlines and event, in addition to tasks","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":14}}},{"hash":"f918e2357d18f070e91b65594bec1969fdb199b6","isMergeCommit":false,"messageTitle":"Use the input/output redirection technique to semi-automate the testing of Duke","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2}}},{"hash":"b361ffc43981fd8c7d9f14e3405f4d36a3233b5e","isMergeCommit":false,"messageTitle":"Teach the chatbot to deal with errors such as incorrect inputs entered by the user","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":5}}},{"hash":"fd540f2ac693c91d7d0c601780b4f7816ab0c103","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"520da679a4b23ac10b5d6c61f17494093dfb3b17","isMergeCommit":false,"messageTitle":"Fix formatting errors.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"d8f39f77675b95163d1bb7b814229d9dae76d792","isMergeCommit":false,"messageTitle":"Add support for file storage","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"sp4ce-cowboy":{"java":260,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":4}},"authorContributionVariance":{"sp4ce-cowboy":7306.694},"authorDisplayNameMap":{"sp4ce-cowboy":"CS2103-T16-3 SURE..BESH"}} diff --git a/summary.json b/summary.json index a7f8aaf7..b03376a4 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"3bad16bb3d","reportGeneratedTime":"Fri Sep 1 12:09:44 2023 UTC+08:00","reportGenerationTime":" 1 minute(s) 35.22 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 iP Code Dashboard","repos":[{"location":{"location":"https://github.com/remuslum/ip.git","repoName":"ip","organization":"remuslum","domainName":"github"},"branch":"master","displayName":"remuslum/ip[master]","outputFolderName":"remuslum_ip_master"},{"location":{"location":"https://github.com/elhy1999/ip.git","repoName":"ip","organization":"elhy1999","domainName":"github"},"branch":"master","displayName":"elhy1999/ip[master]","outputFolderName":"elhy1999_ip_master"},{"location":{"location":"https://github.com/XihuaZ/ip.git","repoName":"ip","organization":"XihuaZ","domainName":"github"},"branch":"master","displayName":"XihuaZ/ip[master]","outputFolderName":"XihuaZ_ip_master"},{"location":{"location":"https://github.com/bwangpj/ip.git","repoName":"ip","organization":"bwangpj","domainName":"github"},"branch":"master","displayName":"bwangpj/ip[master]","outputFolderName":"bwangpj_ip_master"},{"location":{"location":"https://github.com/shuenj/ip.git","repoName":"ip","organization":"shuenj","domainName":"github"},"branch":"master","displayName":"shuenj/ip[master]","outputFolderName":"shuenj_ip_master"},{"location":{"location":"https://github.com/SungMatt/ip.git","repoName":"ip","organization":"SungMatt","domainName":"github"},"branch":"master","displayName":"SungMatt/ip[master]","outputFolderName":"SungMatt_ip_master"},{"location":{"location":"https://github.com/junhonglow/ip.git","repoName":"ip","organization":"junhonglow","domainName":"github"},"branch":"master","displayName":"junhonglow/ip[master]","outputFolderName":"junhonglow_ip_master"},{"location":{"location":"https://github.com/xavierpok/ip.git","repoName":"ip","organization":"xavierpok","domainName":"github"},"branch":"master","displayName":"xavierpok/ip[master]","outputFolderName":"xavierpok_ip_master"},{"location":{"location":"https://github.com/marcellaantania/ip.git","repoName":"ip","organization":"marcellaantania","domainName":"github"},"branch":"master","displayName":"marcellaantania/ip[master]","outputFolderName":"marcellaantania_ip_master"},{"location":{"location":"https://github.com/felibunnyy/ip.git","repoName":"ip","organization":"felibunnyy","domainName":"github"},"branch":"master","displayName":"felibunnyy/ip[master]","outputFolderName":"felibunnyy_ip_master"},{"location":{"location":"https://github.com/starrylight99/ip.git","repoName":"ip","organization":"starrylight99","domainName":"github"},"branch":"master","displayName":"starrylight99/ip[master]","outputFolderName":"starrylight99_ip_master"},{"location":{"location":"https://github.com/leezhanpeng/ip.git","repoName":"ip","organization":"leezhanpeng","domainName":"github"},"branch":"master","displayName":"leezhanpeng/ip[master]","outputFolderName":"leezhanpeng_ip_master"},{"location":{"location":"https://github.com/sheryew/ip.git","repoName":"ip","organization":"sheryew","domainName":"github"},"branch":"master","displayName":"sheryew/ip[master]","outputFolderName":"sheryew_ip_master"},{"location":{"location":"https://github.com/lihongguang00/ip.git","repoName":"ip","organization":"lihongguang00","domainName":"github"},"branch":"master","displayName":"lihongguang00/ip[master]","outputFolderName":"lihongguang00_ip_master"},{"location":{"location":"https://github.com/nicrandomlee/ip.git","repoName":"ip","organization":"nicrandomlee","domainName":"github"},"branch":"master","displayName":"nicrandomlee/ip[master]","outputFolderName":"nicrandomlee_ip_master"},{"location":{"location":"https://github.com/LuahJunYang/ip.git","repoName":"ip","organization":"LuahJunYang","domainName":"github"},"branch":"master","displayName":"LuahJunYang/ip[master]","outputFolderName":"LuahJunYang_ip_master"},{"location":{"location":"https://github.com/s-peiran/ip.git","repoName":"ip","organization":"s-peiran","domainName":"github"},"branch":"master","displayName":"s-peiran/ip[master]","outputFolderName":"s-peiran_ip_master"},{"location":{"location":"https://github.com/aarontxz/ip.git","repoName":"ip","organization":"aarontxz","domainName":"github"},"branch":"master","displayName":"aarontxz/ip[master]","outputFolderName":"aarontxz_ip_master"},{"location":{"location":"https://github.com/chiayunrong/ip.git","repoName":"ip","organization":"chiayunrong","domainName":"github"},"branch":"master","displayName":"chiayunrong/ip[master]","outputFolderName":"chiayunrong_ip_master"},{"location":{"location":"https://github.com/nixonwidjaja/ip.git","repoName":"ip","organization":"nixonwidjaja","domainName":"github"},"branch":"master","displayName":"nixonwidjaja/ip[master]","outputFolderName":"nixonwidjaja_ip_master"},{"location":{"location":"https://github.com/imkwokyong/ip.git","repoName":"ip","organization":"imkwokyong","domainName":"github"},"branch":"master","displayName":"imkwokyong/ip[master]","outputFolderName":"imkwokyong_ip_master"},{"location":{"location":"https://github.com/mamayuan/ip.git","repoName":"ip","organization":"mamayuan","domainName":"github"},"branch":"master","displayName":"mamayuan/ip[master]","outputFolderName":"mamayuan_ip_master"},{"location":{"location":"https://github.com/geoffong11/ip.git","repoName":"ip","organization":"geoffong11","domainName":"github"},"branch":"master","displayName":"geoffong11/ip[master]","outputFolderName":"geoffong11_ip_master"},{"location":{"location":"https://github.com/vivienherq/ip.git","repoName":"ip","organization":"vivienherq","domainName":"github"},"branch":"master","displayName":"vivienherq/ip[master]","outputFolderName":"vivienherq_ip_master"},{"location":{"location":"https://github.com/johnnythesnake12/ip.git","repoName":"ip","organization":"johnnythesnake12","domainName":"github"},"branch":"master","displayName":"johnnythesnake12/ip[master]","outputFolderName":"johnnythesnake12_ip_master"},{"location":{"location":"https://github.com/Cloud7050/ip.git","repoName":"ip","organization":"Cloud7050","domainName":"github"},"branch":"master","displayName":"Cloud7050/ip[master]","outputFolderName":"Cloud7050_ip_master"},{"location":{"location":"https://github.com/jonyeokj/ip.git","repoName":"ip","organization":"jonyeokj","domainName":"github"},"branch":"master","displayName":"jonyeokj/ip[master]","outputFolderName":"jonyeokj_ip_master"},{"location":{"location":"https://github.com/lipwei1808/ip.git","repoName":"ip","organization":"lipwei1808","domainName":"github"},"branch":"master","displayName":"lipwei1808/ip[master]","outputFolderName":"lipwei1808_ip_master"},{"location":{"location":"https://github.com/zhanyang01/ip.git","repoName":"ip","organization":"zhanyang01","domainName":"github"},"branch":"master","displayName":"zhanyang01/ip[master]","outputFolderName":"zhanyang01_ip_master"},{"location":{"location":"https://github.com/EricXiong420/ip.git","repoName":"ip","organization":"EricXiong420","domainName":"github"},"branch":"master","displayName":"EricXiong420/ip[master]","outputFolderName":"EricXiong420_ip_master"},{"location":{"location":"https://github.com/sp4ce-cowboy/ip.git","repoName":"ip","organization":"sp4ce-cowboy","domainName":"github"},"branch":"master","displayName":"sp4ce-cowboy/ip[master]","outputFolderName":"sp4ce-cowboy_ip_master"},{"location":{"location":"https://github.com/ktzy0305/ip.git","repoName":"ip","organization":"ktzy0305","domainName":"github"},"branch":"master","displayName":"ktzy0305/ip[master]","outputFolderName":"ktzy0305_ip_master"},{"location":{"location":"https://github.com/dom-buri/ip.git","repoName":"ip","organization":"dom-buri","domainName":"github"},"branch":"master","displayName":"dom-buri/ip[master]","outputFolderName":"dom-buri_ip_master"},{"location":{"location":"https://github.com/rayshawntan/ip.git","repoName":"ip","organization":"rayshawntan","domainName":"github"},"branch":"master","displayName":"rayshawntan/ip[master]","outputFolderName":"rayshawntan_ip_master"},{"location":{"location":"https://github.com/Seonlo99/ip.git","repoName":"ip","organization":"Seonlo99","domainName":"github"},"branch":"master","displayName":"Seonlo99/ip[master]","outputFolderName":"Seonlo99_ip_master"},{"location":{"location":"https://github.com/woojiahao/ip.git","repoName":"ip","organization":"woojiahao","domainName":"github"},"branch":"master","displayName":"woojiahao/ip[master]","outputFolderName":"woojiahao_ip_master"},{"location":{"location":"https://github.com/Angelyxx/ip.git","repoName":"ip","organization":"Angelyxx","domainName":"github"},"branch":"master","displayName":"Angelyxx/ip[master]","outputFolderName":"Angelyxx_ip_master"},{"location":{"location":"https://github.com/jamz903/ip.git","repoName":"ip","organization":"jamz903","domainName":"github"},"branch":"master","displayName":"jamz903/ip[master]","outputFolderName":"jamz903_ip_master"},{"location":{"location":"https://github.com/Fallman2/ip.git","repoName":"ip","organization":"Fallman2","domainName":"github"},"branch":"master","displayName":"Fallman2/ip[master]","outputFolderName":"Fallman2_ip_master"},{"location":{"location":"https://github.com/jacobcuison/ip.git","repoName":"ip","organization":"jacobcuison","domainName":"github"},"branch":"master","displayName":"jacobcuison/ip[master]","outputFolderName":"jacobcuison_ip_master"},{"location":{"location":"https://github.com/kenvynKwek/ip.git","repoName":"ip","organization":"kenvynKwek","domainName":"github"},"branch":"master","displayName":"kenvynKwek/ip[master]","outputFolderName":"kenvynKwek_ip_master"},{"location":{"location":"https://github.com/kokrui/ip.git","repoName":"ip","organization":"kokrui","domainName":"github"},"branch":"master","displayName":"kokrui/ip[master]","outputFolderName":"kokrui_ip_master"},{"location":{"location":"https://github.com/ncmathan/ip.git","repoName":"ip","organization":"ncmathan","domainName":"github"},"branch":"master","displayName":"ncmathan/ip[master]","outputFolderName":"ncmathan_ip_master"},{"location":{"location":"https://github.com/xCOLOURx/ip.git","repoName":"ip","organization":"xCOLOURx","domainName":"github"},"branch":"master","displayName":"xCOLOURx/ip[master]","outputFolderName":"xCOLOURx_ip_master"},{"location":{"location":"https://github.com/zhyuhan/ip.git","repoName":"ip","organization":"zhyuhan","domainName":"github"},"branch":"master","displayName":"zhyuhan/ip[master]","outputFolderName":"zhyuhan_ip_master"},{"location":{"location":"https://github.com/ceilingFan456/ip.git","repoName":"ip","organization":"ceilingFan456","domainName":"github"},"branch":"master","displayName":"ceilingFan456/ip[master]","outputFolderName":"ceilingFan456_ip_master"},{"location":{"location":"https://github.com/chuababyy/ip.git","repoName":"ip","organization":"chuababyy","domainName":"github"},"branch":"master","displayName":"chuababyy/ip[master]","outputFolderName":"chuababyy_ip_master"},{"location":{"location":"https://github.com/rocketninja7/ip.git","repoName":"ip","organization":"rocketninja7","domainName":"github"},"branch":"master","displayName":"rocketninja7/ip[master]","outputFolderName":"rocketninja7_ip_master"},{"location":{"location":"https://github.com/marquestye/ip.git","repoName":"ip","organization":"marquestye","domainName":"github"},"branch":"master","displayName":"marquestye/ip[master]","outputFolderName":"marquestye_ip_master"},{"location":{"location":"https://github.com/ruiyangzh/ip.git","repoName":"ip","organization":"ruiyangzh","domainName":"github"},"branch":"master","displayName":"ruiyangzh/ip[master]","outputFolderName":"ruiyangzh_ip_master"},{"location":{"location":"https://github.com/derekjxtan/ip.git","repoName":"ip","organization":"derekjxtan","domainName":"github"},"branch":"master","displayName":"derekjxtan/ip[master]","outputFolderName":"derekjxtan_ip_master"},{"location":{"location":"https://github.com/mounilsankar/ip.git","repoName":"ip","organization":"mounilsankar","domainName":"github"},"branch":"master","displayName":"mounilsankar/ip[master]","outputFolderName":"mounilsankar_ip_master"},{"location":{"location":"https://github.com/wj331/ip.git","repoName":"ip","organization":"wj331","domainName":"github"},"branch":"master","displayName":"wj331/ip[master]","outputFolderName":"wj331_ip_master"},{"location":{"location":"https://github.com/JasonLCY-Temp/ip.git","repoName":"ip","organization":"JasonLCY-Temp","domainName":"github"},"branch":"master","displayName":"JasonLCY-Temp/ip[master]","outputFolderName":"JasonLCY-Temp_ip_master"},{"location":{"location":"https://github.com/lawruixi/ip.git","repoName":"ip","organization":"lawruixi","domainName":"github"},"branch":"master","displayName":"lawruixi/ip[master]","outputFolderName":"lawruixi_ip_master"},{"location":{"location":"https://github.com/wxwern/ip.git","repoName":"ip","organization":"wxwern","domainName":"github"},"branch":"master","displayName":"wxwern/ip[master]","outputFolderName":"wxwern_ip_master"},{"location":{"location":"https://github.com/zekone/ip.git","repoName":"ip","organization":"zekone","domainName":"github"},"branch":"master","displayName":"zekone/ip[master]","outputFolderName":"zekone_ip_master"},{"location":{"location":"https://github.com/wamps-jp/ip.git","repoName":"ip","organization":"wamps-jp","domainName":"github"},"branch":"master","displayName":"wamps-jp/ip[master]","outputFolderName":"wamps-jp_ip_master"},{"location":{"location":"https://github.com/saltedfishxx/ip.git","repoName":"ip","organization":"saltedfishxx","domainName":"github"},"branch":"master","displayName":"saltedfishxx/ip[master]","outputFolderName":"saltedfishxx_ip_master"},{"location":{"location":"https://github.com/winson8222/ip.git","repoName":"ip","organization":"winson8222","domainName":"github"},"branch":"master","displayName":"winson8222/ip[master]","outputFolderName":"winson8222_ip_master"},{"location":{"location":"https://github.com/brandon-nam/ip.git","repoName":"ip","organization":"brandon-nam","domainName":"github"},"branch":"master","displayName":"brandon-nam/ip[master]","outputFolderName":"brandon-nam_ip_master"},{"location":{"location":"https://github.com/p-xp/ip.git","repoName":"ip","organization":"p-xp","domainName":"github"},"branch":"master","displayName":"p-xp/ip[master]","outputFolderName":"p-xp_ip_master"},{"location":{"location":"https://github.com/WeeMingQing/ip.git","repoName":"ip","organization":"WeeMingQing","domainName":"github"},"branch":"master","displayName":"WeeMingQing/ip[master]","outputFolderName":"WeeMingQing_ip_master"},{"location":{"location":"https://github.com/ScarletBlanks/ip.git","repoName":"ip","organization":"ScarletBlanks","domainName":"github"},"branch":"master","displayName":"ScarletBlanks/ip[master]","outputFolderName":"ScarletBlanks_ip_master"},{"location":{"location":"https://github.com/seraphimstreets/ip.git","repoName":"ip","organization":"seraphimstreets","domainName":"github"},"branch":"master","displayName":"seraphimstreets/ip[master]","outputFolderName":"seraphimstreets_ip_master"},{"location":{"location":"https://github.com/devanshubisht/ip.git","repoName":"ip","organization":"devanshubisht","domainName":"github"},"branch":"master","displayName":"devanshubisht/ip[master]","outputFolderName":"devanshubisht_ip_master"},{"location":{"location":"https://github.com/Zjinnnn/ip.git","repoName":"ip","organization":"Zjinnnn","domainName":"github"},"branch":"master","displayName":"Zjinnnn/ip[master]","outputFolderName":"Zjinnnn_ip_master"},{"location":{"location":"https://github.com/brendanneojw/ip.git","repoName":"ip","organization":"brendanneojw","domainName":"github"},"branch":"master","displayName":"brendanneojw/ip[master]","outputFolderName":"brendanneojw_ip_master"},{"location":{"location":"https://github.com/aexolate/ip.git","repoName":"ip","organization":"aexolate","domainName":"github"},"branch":"master","displayName":"aexolate/ip[master]","outputFolderName":"aexolate_ip_master"},{"location":{"location":"https://github.com/techjay-c/ip.git","repoName":"ip","organization":"techjay-c","domainName":"github"},"branch":"master","displayName":"techjay-c/ip[master]","outputFolderName":"techjay-c_ip_master"},{"location":{"location":"https://github.com/SynapseProgramming/ip.git","repoName":"ip","organization":"SynapseProgramming","domainName":"github"},"branch":"master","displayName":"SynapseProgramming/ip[master]","outputFolderName":"SynapseProgramming_ip_master"},{"location":{"location":"https://github.com/TyrusLye/ip.git","repoName":"ip","organization":"TyrusLye","domainName":"github"},"branch":"master","displayName":"TyrusLye/ip[master]","outputFolderName":"TyrusLye_ip_master"},{"location":{"location":"https://github.com/RB9823/ip.git","repoName":"ip","organization":"RB9823","domainName":"github"},"branch":"master","displayName":"RB9823/ip[master]","outputFolderName":"RB9823_ip_master"},{"location":{"location":"https://github.com/jean-cq/ip.git","repoName":"ip","organization":"jean-cq","domainName":"github"},"branch":"master","displayName":"jean-cq/ip[master]","outputFolderName":"jean-cq_ip_master"},{"location":{"location":"https://github.com/Bearypop/ip.git","repoName":"ip","organization":"Bearypop","domainName":"github"},"branch":"master","displayName":"Bearypop/ip[master]","outputFolderName":"Bearypop_ip_master"},{"location":{"location":"https://github.com/andytoh1/ip.git","repoName":"ip","organization":"andytoh1","domainName":"github"},"branch":"master","displayName":"andytoh1/ip[master]","outputFolderName":"andytoh1_ip_master"},{"location":{"location":"https://github.com/siqirua/ip.git","repoName":"ip","organization":"siqirua","domainName":"github"},"branch":"master","displayName":"siqirua/ip[master]","outputFolderName":"siqirua_ip_master"},{"location":{"location":"https://github.com/amosting/ip.git","repoName":"ip","organization":"amosting","domainName":"github"},"branch":"master","displayName":"amosting/ip[master]","outputFolderName":"amosting_ip_master"},{"location":{"location":"https://github.com/JizhuoChen/ip.git","repoName":"ip","organization":"JizhuoChen","domainName":"github"},"branch":"master","displayName":"JizhuoChen/ip[master]","outputFolderName":"JizhuoChen_ip_master"},{"location":{"location":"https://github.com/Tang-Moyan/ip.git","repoName":"ip","organization":"Tang-Moyan","domainName":"github"},"branch":"master","displayName":"Tang-Moyan/ip[master]","outputFolderName":"Tang-Moyan_ip_master"},{"location":{"location":"https://github.com/aliciamichellew/ip.git","repoName":"ip","organization":"aliciamichellew","domainName":"github"},"branch":"master","displayName":"aliciamichellew/ip[master]","outputFolderName":"aliciamichellew_ip_master"},{"location":{"location":"https://github.com/KamiliArsyad/ip.git","repoName":"ip","organization":"KamiliArsyad","domainName":"github"},"branch":"master","displayName":"KamiliArsyad/ip[master]","outputFolderName":"KamiliArsyad_ip_master"},{"location":{"location":"https://github.com/dishenggg/ip.git","repoName":"ip","organization":"dishenggg","domainName":"github"},"branch":"master","displayName":"dishenggg/ip[master]","outputFolderName":"dishenggg_ip_master"},{"location":{"location":"https://github.com/Nixx162/ip.git","repoName":"ip","organization":"Nixx162","domainName":"github"},"branch":"master","displayName":"Nixx162/ip[master]","outputFolderName":"Nixx162_ip_master"},{"location":{"location":"https://github.com/Leb14/ip.git","repoName":"ip","organization":"Leb14","domainName":"github"},"branch":"master","displayName":"Leb14/ip[master]","outputFolderName":"Leb14_ip_master"},{"location":{"location":"https://github.com/Heran9/ip.git","repoName":"ip","organization":"Heran9","domainName":"github"},"branch":"master","displayName":"Heran9/ip[master]","outputFolderName":"Heran9_ip_master"},{"location":{"location":"https://github.com/FerdiHS/ip.git","repoName":"ip","organization":"FerdiHS","domainName":"github"},"branch":"master","displayName":"FerdiHS/ip[master]","outputFolderName":"FerdiHS_ip_master"},{"location":{"location":"https://github.com/StevenLiudw/ip.git","repoName":"ip","organization":"StevenLiudw","domainName":"github"},"branch":"master","displayName":"StevenLiudw/ip[master]","outputFolderName":"StevenLiudw_ip_master"},{"location":{"location":"https://github.com/InfiBeyond/ip.git","repoName":"ip","organization":"InfiBeyond","domainName":"github"},"branch":"master","displayName":"InfiBeyond/ip[master]","outputFolderName":"InfiBeyond_ip_master"},{"location":{"location":"https://github.com/s0ngyang/ip.git","repoName":"ip","organization":"s0ngyang","domainName":"github"},"branch":"master","displayName":"s0ngyang/ip[master]","outputFolderName":"s0ngyang_ip_master"},{"location":{"location":"https://github.com/ivyy-poison/ip.git","repoName":"ip","organization":"ivyy-poison","domainName":"github"},"branch":"master","displayName":"ivyy-poison/ip[master]","outputFolderName":"ivyy-poison_ip_master"},{"location":{"location":"https://github.com/yytan25/ip.git","repoName":"ip","organization":"yytan25","domainName":"github"},"branch":"master","displayName":"yytan25/ip[master]","outputFolderName":"yytan25_ip_master"},{"location":{"location":"https://github.com/tjch-o/ip.git","repoName":"ip","organization":"tjch-o","domainName":"github"},"branch":"master","displayName":"tjch-o/ip[master]","outputFolderName":"tjch-o_ip_master"},{"location":{"location":"https://github.com/jedkohjk/ip.git","repoName":"ip","organization":"jedkohjk","domainName":"github"},"branch":"master","displayName":"jedkohjk/ip[master]","outputFolderName":"jedkohjk_ip_master"},{"location":{"location":"https://github.com/raynertjx/ip.git","repoName":"ip","organization":"raynertjx","domainName":"github"},"branch":"master","displayName":"raynertjx/ip[master]","outputFolderName":"raynertjx_ip_master"},{"location":{"location":"https://github.com/cmHuang777/ip.git","repoName":"ip","organization":"cmHuang777","domainName":"github"},"branch":"master","displayName":"cmHuang777/ip[master]","outputFolderName":"cmHuang777_ip_master"},{"location":{"location":"https://github.com/wui-hong/ip.git","repoName":"ip","organization":"wui-hong","domainName":"github"},"branch":"master","displayName":"wui-hong/ip[master]","outputFolderName":"wui-hong_ip_master"},{"location":{"location":"https://github.com/PohSayKeong/ip.git","repoName":"ip","organization":"PohSayKeong","domainName":"github"},"branch":"master","displayName":"PohSayKeong/ip[master]","outputFolderName":"PohSayKeong_ip_master"},{"location":{"location":"https://github.com/lsyurea/ip.git","repoName":"ip","organization":"lsyurea","domainName":"github"},"branch":"master","displayName":"lsyurea/ip[master]","outputFolderName":"lsyurea_ip_master"},{"location":{"location":"https://github.com/ong-wei-hong/ip.git","repoName":"ip","organization":"ong-wei-hong","domainName":"github"},"branch":"master","displayName":"ong-wei-hong/ip[master]","outputFolderName":"ong-wei-hong_ip_master"},{"location":{"location":"https://github.com/asdfghjkxd/ip.git","repoName":"ip","organization":"asdfghjkxd","domainName":"github"},"branch":"master","displayName":"asdfghjkxd/ip[master]","outputFolderName":"asdfghjkxd_ip_master"},{"location":{"location":"https://github.com/GSgiansen/ip.git","repoName":"ip","organization":"GSgiansen","domainName":"github"},"branch":"master","displayName":"GSgiansen/ip[master]","outputFolderName":"GSgiansen_ip_master"},{"location":{"location":"https://github.com/syamfarh/ip.git","repoName":"ip","organization":"syamfarh","domainName":"github"},"branch":"master","displayName":"syamfarh/ip[master]","outputFolderName":"syamfarh_ip_master"},{"location":{"location":"https://github.com/PetrichorPrecipice/ip.git","repoName":"ip","organization":"PetrichorPrecipice","domainName":"github"},"branch":"master","displayName":"PetrichorPrecipice/ip[master]","outputFolderName":"PetrichorPrecipice_ip_master"},{"location":{"location":"https://github.com/ngeeyonglim/ip.git","repoName":"ip","organization":"ngeeyonglim","domainName":"github"},"branch":"master","displayName":"ngeeyonglim/ip[master]","outputFolderName":"ngeeyonglim_ip_master"},{"location":{"location":"https://github.com/ivanleekk/ip.git","repoName":"ip","organization":"ivanleekk","domainName":"github"},"branch":"master","displayName":"ivanleekk/ip[master]","outputFolderName":"ivanleekk_ip_master"},{"location":{"location":"https://github.com/ryanozx/ip.git","repoName":"ip","organization":"ryanozx","domainName":"github"},"branch":"master","displayName":"ryanozx/ip[master]","outputFolderName":"ryanozx_ip_master"},{"location":{"location":"https://github.com/Jweewee/ip.git","repoName":"ip","organization":"Jweewee","domainName":"github"},"branch":"master","displayName":"Jweewee/ip[master]","outputFolderName":"Jweewee_ip_master"},{"location":{"location":"https://github.com/supermii2/ip.git","repoName":"ip","organization":"supermii2","domainName":"github"},"branch":"master","displayName":"supermii2/ip[master]","outputFolderName":"supermii2_ip_master"},{"location":{"location":"https://github.com/bkjwjason/ip.git","repoName":"ip","organization":"bkjwjason","domainName":"github"},"branch":"master","displayName":"bkjwjason/ip[master]","outputFolderName":"bkjwjason_ip_master"},{"location":{"location":"https://github.com/Sasmik23/ip.git","repoName":"ip","organization":"Sasmik23","domainName":"github"},"branch":"master","displayName":"Sasmik23/ip[master]","outputFolderName":"Sasmik23_ip_master"},{"location":{"location":"https://github.com/nathanielcalimag/ip.git","repoName":"ip","organization":"nathanielcalimag","domainName":"github"},"branch":"master","displayName":"nathanielcalimag/ip[master]","outputFolderName":"nathanielcalimag_ip_master"},{"location":{"location":"https://github.com/AlagappanRa/ip.git","repoName":"ip","organization":"AlagappanRa","domainName":"github"},"branch":"master","displayName":"AlagappanRa/ip[master]","outputFolderName":"AlagappanRa_ip_master"},{"location":{"location":"https://github.com/McNaBry/ip.git","repoName":"ip","organization":"McNaBry","domainName":"github"},"branch":"master","displayName":"McNaBry/ip[master]","outputFolderName":"McNaBry_ip_master"},{"location":{"location":"https://github.com/phiphi-tan/ip.git","repoName":"ip","organization":"phiphi-tan","domainName":"github"},"branch":"master","displayName":"phiphi-tan/ip[master]","outputFolderName":"phiphi-tan_ip_master"},{"location":{"location":"https://github.com/LicongHuang/ip.git","repoName":"ip","organization":"LicongHuang","domainName":"github"},"branch":"master","displayName":"LicongHuang/ip[master]","outputFolderName":"LicongHuang_ip_master"},{"location":{"location":"https://github.com/tanshiyu1999/ip.git","repoName":"ip","organization":"tanshiyu1999","domainName":"github"},"branch":"master","displayName":"tanshiyu1999/ip[master]","outputFolderName":"tanshiyu1999_ip_master"},{"location":{"location":"https://github.com/raydenlim/ip.git","repoName":"ip","organization":"raydenlim","domainName":"github"},"branch":"master","displayName":"raydenlim/ip[master]","outputFolderName":"raydenlim_ip_master"},{"location":{"location":"https://github.com/jianyangg/ip.git","repoName":"ip","organization":"jianyangg","domainName":"github"},"branch":"master","displayName":"jianyangg/ip[master]","outputFolderName":"jianyangg_ip_master"},{"location":{"location":"https://github.com/rionshocker/ip.git","repoName":"ip","organization":"rionshocker","domainName":"github"},"branch":"master","displayName":"rionshocker/ip[master]","outputFolderName":"rionshocker_ip_master"},{"location":{"location":"https://github.com/conradsoon/ip.git","repoName":"ip","organization":"conradsoon","domainName":"github"},"branch":"master","displayName":"conradsoon/ip[master]","outputFolderName":"conradsoon_ip_master"},{"location":{"location":"https://github.com/Jonyxzx/ip.git","repoName":"ip","organization":"Jonyxzx","domainName":"github"},"branch":"master","displayName":"Jonyxzx/ip[master]","outputFolderName":"Jonyxzx_ip_master"},{"location":{"location":"https://github.com/euchangxian/ip.git","repoName":"ip","organization":"euchangxian","domainName":"github"},"branch":"master","displayName":"euchangxian/ip[master]","outputFolderName":"euchangxian_ip_master"},{"location":{"location":"https://github.com/teoks0199/ip.git","repoName":"ip","organization":"teoks0199","domainName":"github"},"branch":"master","displayName":"teoks0199/ip[master]","outputFolderName":"teoks0199_ip_master"},{"location":{"location":"https://github.com/HollaG/ip.git","repoName":"ip","organization":"HollaG","domainName":"github"},"branch":"master","displayName":"HollaG/ip[master]","outputFolderName":"HollaG_ip_master"},{"location":{"location":"https://github.com/leezhengjing/ip.git","repoName":"ip","organization":"leezhengjing","domainName":"github"},"branch":"master","displayName":"leezhengjing/ip[master]","outputFolderName":"leezhengjing_ip_master"},{"location":{"location":"https://github.com/timleow/ip.git","repoName":"ip","organization":"timleow","domainName":"github"},"branch":"master","displayName":"timleow/ip[master]","outputFolderName":"timleow_ip_master"},{"location":{"location":"https://github.com/jacksonyuan256/ip.git","repoName":"ip","organization":"jacksonyuan256","domainName":"github"},"branch":"master","displayName":"jacksonyuan256/ip[master]","outputFolderName":"jacksonyuan256_ip_master"},{"location":{"location":"https://github.com/victorlaiyeeteng/ip.git","repoName":"ip","organization":"victorlaiyeeteng","domainName":"github"},"branch":"master","displayName":"victorlaiyeeteng/ip[master]","outputFolderName":"victorlaiyeeteng_ip_master"},{"location":{"location":"https://github.com/prawnzyy/ip.git","repoName":"ip","organization":"prawnzyy","domainName":"github"},"branch":"master","displayName":"prawnzyy/ip[master]","outputFolderName":"prawnzyy_ip_master"},{"location":{"location":"https://github.com/ryanongwx/ip.git","repoName":"ip","organization":"ryanongwx","domainName":"github"},"branch":"master","displayName":"ryanongwx/ip[master]","outputFolderName":"ryanongwx_ip_master"},{"location":{"location":"https://github.com/tohpinren/ip.git","repoName":"ip","organization":"tohpinren","domainName":"github"},"branch":"master","displayName":"tohpinren/ip[master]","outputFolderName":"tohpinren_ip_master"},{"location":{"location":"https://github.com/DeltonCheng/ip.git","repoName":"ip","organization":"DeltonCheng","domainName":"github"},"branch":"master","displayName":"DeltonCheng/ip[master]","outputFolderName":"DeltonCheng_ip_master"},{"location":{"location":"https://github.com/leontan2/ip.git","repoName":"ip","organization":"leontan2","domainName":"github"},"branch":"master","displayName":"leontan2/ip[master]","outputFolderName":"leontan2_ip_master"},{"location":{"location":"https://github.com/alvinlim277/ip.git","repoName":"ip","organization":"alvinlim277","domainName":"github"},"branch":"master","displayName":"alvinlim277/ip[master]","outputFolderName":"alvinlim277_ip_master"},{"location":{"location":"https://github.com/lshaoqin/ip.git","repoName":"ip","organization":"lshaoqin","domainName":"github"},"branch":"master","displayName":"lshaoqin/ip[master]","outputFolderName":"lshaoqin_ip_master"},{"location":{"location":"https://github.com/ChongWeiJie29/ip.git","repoName":"ip","organization":"ChongWeiJie29","domainName":"github"},"branch":"master","displayName":"ChongWeiJie29/ip[master]","outputFolderName":"ChongWeiJie29_ip_master"},{"location":{"location":"https://github.com/zhonghan721/ip.git","repoName":"ip","organization":"zhonghan721","domainName":"github"},"branch":"master","displayName":"zhonghan721/ip[master]","outputFolderName":"zhonghan721_ip_master"},{"location":{"location":"https://github.com/teozhengyang/ip.git","repoName":"ip","organization":"teozhengyang","domainName":"github"},"branch":"master","displayName":"teozhengyang/ip[master]","outputFolderName":"teozhengyang_ip_master"},{"location":{"location":"https://github.com/garylow2001/ip.git","repoName":"ip","organization":"garylow2001","domainName":"github"},"branch":"master","displayName":"garylow2001/ip[master]","outputFolderName":"garylow2001_ip_master"},{"location":{"location":"https://github.com/Cleon2/ip.git","repoName":"ip","organization":"Cleon2","domainName":"github"},"branch":"master","displayName":"Cleon2/ip[master]","outputFolderName":"Cleon2_ip_master"},{"location":{"location":"https://github.com/limzhenwy/ip.git","repoName":"ip","organization":"limzhenwy","domainName":"github"},"branch":"master","displayName":"limzhenwy/ip[master]","outputFolderName":"limzhenwy_ip_master"},{"location":{"location":"https://github.com/ItsTYtan/ip.git","repoName":"ip","organization":"ItsTYtan","domainName":"github"},"branch":"master","displayName":"ItsTYtan/ip[master]","outputFolderName":"ItsTYtan_ip_master"},{"location":{"location":"https://github.com/owenyeo/ip.git","repoName":"ip","organization":"owenyeo","domainName":"github"},"branch":"master","displayName":"owenyeo/ip[master]","outputFolderName":"owenyeo_ip_master"},{"location":{"location":"https://github.com/jonasongg/ip.git","repoName":"ip","organization":"jonasongg","domainName":"github"},"branch":"master","displayName":"jonasongg/ip[master]","outputFolderName":"jonasongg_ip_master"},{"location":{"location":"https://github.com/Ruizhi2001/ip.git","repoName":"ip","organization":"Ruizhi2001","domainName":"github"},"branch":"master","displayName":"Ruizhi2001/ip[master]","outputFolderName":"Ruizhi2001_ip_master"},{"location":{"location":"https://github.com/Dioclei/ip.git","repoName":"ip","organization":"Dioclei","domainName":"github"},"branch":"master","displayName":"Dioclei/ip[master]","outputFolderName":"Dioclei_ip_master"},{"location":{"location":"https://github.com/bobscodedump/ip.git","repoName":"ip","organization":"bobscodedump","domainName":"github"},"branch":"master","displayName":"bobscodedump/ip[master]","outputFolderName":"bobscodedump_ip_master"},{"location":{"location":"https://github.com/andrefoo/ip.git","repoName":"ip","organization":"andrefoo","domainName":"github"},"branch":"master","displayName":"andrefoo/ip[master]","outputFolderName":"andrefoo_ip_master"},{"location":{"location":"https://github.com/Bombbird2001/ip.git","repoName":"ip","organization":"Bombbird2001","domainName":"github"},"branch":"master","displayName":"Bombbird2001/ip[master]","outputFolderName":"Bombbird2001_ip_master"},{"location":{"location":"https://github.com/chewjh1234/ip.git","repoName":"ip","organization":"chewjh1234","domainName":"github"},"branch":"master","displayName":"chewjh1234/ip[master]","outputFolderName":"chewjh1234_ip_master"},{"location":{"location":"https://github.com/dloh2236/ip.git","repoName":"ip","organization":"dloh2236","domainName":"github"},"branch":"master","displayName":"dloh2236/ip[master]","outputFolderName":"dloh2236_ip_master"},{"location":{"location":"https://github.com/chew01/ip.git","repoName":"ip","organization":"chew01","domainName":"github"},"branch":"master","displayName":"chew01/ip[master]","outputFolderName":"chew01_ip_master"},{"location":{"location":"https://github.com/trgao/ip.git","repoName":"ip","organization":"trgao","domainName":"github"},"branch":"master","displayName":"trgao/ip[master]","outputFolderName":"trgao_ip_master"},{"location":{"location":"https://github.com/richiehx/ip.git","repoName":"ip","organization":"richiehx","domainName":"github"},"branch":"master","displayName":"richiehx/ip[master]","outputFolderName":"richiehx_ip_master"},{"location":{"location":"https://github.com/LoMaply/ip.git","repoName":"ip","organization":"LoMaply","domainName":"github"},"branch":"master","displayName":"LoMaply/ip[master]","outputFolderName":"LoMaply_ip_master"},{"location":{"location":"https://github.com/Originalidk/ip.git","repoName":"ip","organization":"Originalidk","domainName":"github"},"branch":"master","displayName":"Originalidk/ip[master]","outputFolderName":"Originalidk_ip_master"},{"location":{"location":"https://github.com/kiatkat/ip.git","repoName":"ip","organization":"kiatkat","domainName":"github"},"branch":"master","displayName":"kiatkat/ip[master]","outputFolderName":"kiatkat_ip_master"},{"location":{"location":"https://github.com/juliusgambe/ip.git","repoName":"ip","organization":"juliusgambe","domainName":"github"},"branch":"master","displayName":"juliusgambe/ip[master]","outputFolderName":"juliusgambe_ip_master"},{"location":{"location":"https://github.com/jiakai-17/ip.git","repoName":"ip","organization":"jiakai-17","domainName":"github"},"branch":"master","displayName":"jiakai-17/ip[master]","outputFolderName":"jiakai-17_ip_master"},{"location":{"location":"https://github.com/nikele2001/ip.git","repoName":"ip","organization":"nikele2001","domainName":"github"},"branch":"master","displayName":"nikele2001/ip[master]","outputFolderName":"nikele2001_ip_master"},{"location":{"location":"https://github.com/jylow/ip.git","repoName":"ip","organization":"jylow","domainName":"github"},"branch":"master","displayName":"jylow/ip[master]","outputFolderName":"jylow_ip_master"},{"location":{"location":"https://github.com/jx124/ip.git","repoName":"ip","organization":"jx124","domainName":"github"},"branch":"master","displayName":"jx124/ip[master]","outputFolderName":"jx124_ip_master"},{"location":{"location":"https://github.com/Kb-Tay/ip.git","repoName":"ip","organization":"Kb-Tay","domainName":"github"},"branch":"master","displayName":"Kb-Tay/ip[master]","outputFolderName":"Kb-Tay_ip_master"},{"location":{"location":"https://github.com/jinyuan0425/ip.git","repoName":"ip","organization":"jinyuan0425","domainName":"github"},"branch":"master","displayName":"jinyuan0425/ip[master]","outputFolderName":"jinyuan0425_ip_master"},{"location":{"location":"https://github.com/darrentfy/ip.git","repoName":"ip","organization":"darrentfy","domainName":"github"},"branch":"master","displayName":"darrentfy/ip[master]","outputFolderName":"darrentfy_ip_master"},{"location":{"location":"https://github.com/HEEaZ/ip.git","repoName":"ip","organization":"HEEaZ","domainName":"github"},"branch":"master","displayName":"HEEaZ/ip[master]","outputFolderName":"HEEaZ_ip_master"},{"location":{"location":"https://github.com/ji-just-ji/ip.git","repoName":"ip","organization":"ji-just-ji","domainName":"github"},"branch":"master","displayName":"ji-just-ji/ip[master]","outputFolderName":"ji-just-ji_ip_master"},{"location":{"location":"https://github.com/simbayippy/ip.git","repoName":"ip","organization":"simbayippy","domainName":"github"},"branch":"master","displayName":"simbayippy/ip[master]","outputFolderName":"simbayippy_ip_master"},{"location":{"location":"https://github.com/teozern1/ip.git","repoName":"ip","organization":"teozern1","domainName":"github"},"branch":"master","displayName":"teozern1/ip[master]","outputFolderName":"teozern1_ip_master"},{"location":{"location":"https://github.com/brein62/ip.git","repoName":"ip","organization":"brein62","domainName":"github"},"branch":"master","displayName":"brein62/ip[master]","outputFolderName":"brein62_ip_master"},{"location":{"location":"https://github.com/awhb/ip.git","repoName":"ip","organization":"awhb","domainName":"github"},"branch":"master","displayName":"awhb/ip[master]","outputFolderName":"awhb_ip_master"},{"location":{"location":"https://github.com/Mahidharah/ip.git","repoName":"ip","organization":"Mahidharah","domainName":"github"},"branch":"master","displayName":"Mahidharah/ip[master]","outputFolderName":"Mahidharah_ip_master"},{"location":{"location":"https://github.com/timetraveller-123/ip.git","repoName":"ip","organization":"timetraveller-123","domainName":"github"},"branch":"master","displayName":"timetraveller-123/ip[master]","outputFolderName":"timetraveller-123_ip_master"},{"location":{"location":"https://github.com/ElginTZM/ip.git","repoName":"ip","organization":"ElginTZM","domainName":"github"},"branch":"master","displayName":"ElginTZM/ip[master]","outputFolderName":"ElginTZM_ip_master"},{"location":{"location":"https://github.com/ryamgoh/ip.git","repoName":"ip","organization":"ryamgoh","domainName":"github"},"branch":"master","displayName":"ryamgoh/ip[master]","outputFolderName":"ryamgoh_ip_master"},{"location":{"location":"https://github.com/Blizzeracz/ip.git","repoName":"ip","organization":"Blizzeracz","domainName":"github"},"branch":"master","displayName":"Blizzeracz/ip[master]","outputFolderName":"Blizzeracz_ip_master"},{"location":{"location":"https://github.com/kiwibang/ip.git","repoName":"ip","organization":"kiwibang","domainName":"github"},"branch":"master","displayName":"kiwibang/ip[master]","outputFolderName":"kiwibang_ip_master"},{"location":{"location":"https://github.com/redtailedfox/ip.git","repoName":"ip","organization":"redtailedfox","domainName":"github"},"branch":"master","displayName":"redtailedfox/ip[master]","outputFolderName":"redtailedfox_ip_master"},{"location":{"location":"https://github.com/lamchenghou/ip.git","repoName":"ip","organization":"lamchenghou","domainName":"github"},"branch":"master","displayName":"lamchenghou/ip[master]","outputFolderName":"lamchenghou_ip_master"},{"location":{"location":"https://github.com/gongg21/ip.git","repoName":"ip","organization":"gongg21","domainName":"github"},"branch":"master","displayName":"gongg21/ip[master]","outputFolderName":"gongg21_ip_master"},{"location":{"location":"https://github.com/CJ-Lee01/ip.git","repoName":"ip","organization":"CJ-Lee01","domainName":"github"},"branch":"master","displayName":"CJ-Lee01/ip[master]","outputFolderName":"CJ-Lee01_ip_master"},{"location":{"location":"https://github.com/Sheeepen/ip.git","repoName":"ip","organization":"Sheeepen","domainName":"github"},"branch":"master","displayName":"Sheeepen/ip[master]","outputFolderName":"Sheeepen_ip_master"},{"location":{"location":"https://github.com/AaronJT1/ip.git","repoName":"ip","organization":"AaronJT1","domainName":"github"},"branch":"master","displayName":"AaronJT1/ip[master]","outputFolderName":"AaronJT1_ip_master"},{"location":{"location":"https://github.com/Respirayson/ip.git","repoName":"ip","organization":"Respirayson","domainName":"github"},"branch":"master","displayName":"Respirayson/ip[master]","outputFolderName":"Respirayson_ip_master"},{"location":{"location":"https://github.com/dickongwd/ip.git","repoName":"ip","organization":"dickongwd","domainName":"github"},"branch":"master","displayName":"dickongwd/ip[master]","outputFolderName":"dickongwd_ip_master"},{"location":{"location":"https://github.com/nicholascher/ip.git","repoName":"ip","organization":"nicholascher","domainName":"github"},"branch":"master","displayName":"nicholascher/ip[master]","outputFolderName":"nicholascher_ip_master"},{"location":{"location":"https://github.com/et-irl/ip.git","repoName":"ip","organization":"et-irl","domainName":"github"},"branch":"master","displayName":"et-irl/ip[master]","outputFolderName":"et-irl_ip_master"},{"location":{"location":"https://github.com/aslam341/ip.git","repoName":"ip","organization":"aslam341","domainName":"github"},"branch":"master","displayName":"aslam341/ip[master]","outputFolderName":"aslam341_ip_master"},{"location":{"location":"https://github.com/seantehds/ip.git","repoName":"ip","organization":"seantehds","domainName":"github"},"branch":"master","displayName":"seantehds/ip[master]","outputFolderName":"seantehds_ip_master"},{"location":{"location":"https://github.com/jianrong7/ip.git","repoName":"ip","organization":"jianrong7","domainName":"github"},"branch":"master","displayName":"jianrong7/ip[master]","outputFolderName":"jianrong7_ip_master"},{"location":{"location":"https://github.com/TeeRenJing/ip.git","repoName":"ip","organization":"TeeRenJing","domainName":"github"},"branch":"master","displayName":"TeeRenJing/ip[master]","outputFolderName":"TeeRenJing_ip_master"},{"location":{"location":"https://github.com/RoeReRe/ip.git","repoName":"ip","organization":"RoeReRe","domainName":"github"},"branch":"master","displayName":"RoeReRe/ip[master]","outputFolderName":"RoeReRe_ip_master"},{"location":{"location":"https://github.com/zsh-eng/ip.git","repoName":"ip","organization":"zsh-eng","domainName":"github"},"branch":"master","displayName":"zsh-eng/ip[master]","outputFolderName":"zsh-eng_ip_master"},{"location":{"location":"https://github.com/seanpzk/ip.git","repoName":"ip","organization":"seanpzk","domainName":"github"},"branch":"master","displayName":"seanpzk/ip[master]","outputFolderName":"seanpzk_ip_master"},{"location":{"location":"https://github.com/quzhetao01/ip.git","repoName":"ip","organization":"quzhetao01","domainName":"github"},"branch":"master","displayName":"quzhetao01/ip[master]","outputFolderName":"quzhetao01_ip_master"},{"location":{"location":"https://github.com/joel-foo/ip.git","repoName":"ip","organization":"joel-foo","domainName":"github"},"branch":"master","displayName":"joel-foo/ip[master]","outputFolderName":"joel-foo_ip_master"},{"location":{"location":"https://github.com/markgcera/ip.git","repoName":"ip","organization":"markgcera","domainName":"github"},"branch":"master","displayName":"markgcera/ip[master]","outputFolderName":"markgcera_ip_master"},{"location":{"location":"https://github.com/dylkaw/ip.git","repoName":"ip","organization":"dylkaw","domainName":"github"},"branch":"master","displayName":"dylkaw/ip[master]","outputFolderName":"dylkaw_ip_master"},{"location":{"location":"https://github.com/SelwynAng/ip.git","repoName":"ip","organization":"SelwynAng","domainName":"github"},"branch":"master","displayName":"SelwynAng/ip[master]","outputFolderName":"SelwynAng_ip_master"},{"location":{"location":"https://github.com/jinyang628/ip.git","repoName":"ip","organization":"jinyang628","domainName":"github"},"branch":"master","displayName":"jinyang628/ip[master]","outputFolderName":"jinyang628_ip_master"},{"location":{"location":"https://github.com/matochichap/ip.git","repoName":"ip","organization":"matochichap","domainName":"github"},"branch":"master","displayName":"matochichap/ip[master]","outputFolderName":"matochichap_ip_master"},{"location":{"location":"https://github.com/sk2001git/ip.git","repoName":"ip","organization":"sk2001git","domainName":"github"},"branch":"master","displayName":"sk2001git/ip[master]","outputFolderName":"sk2001git_ip_master"},{"location":{"location":"https://github.com/jason-raiin/ip.git","repoName":"ip","organization":"jason-raiin","domainName":"github"},"branch":"master","displayName":"jason-raiin/ip[master]","outputFolderName":"jason-raiin_ip_master"},{"location":{"location":"https://github.com/Sebtey/ip.git","repoName":"ip","organization":"Sebtey","domainName":"github"},"branch":"master","displayName":"Sebtey/ip[master]","outputFolderName":"Sebtey_ip_master"},{"location":{"location":"https://github.com/Jweng88/ip.git","repoName":"ip","organization":"Jweng88","domainName":"github"},"branch":"master","displayName":"Jweng88/ip[master]","outputFolderName":"Jweng88_ip_master"},{"location":{"location":"https://github.com/billieboy7/ip.git","repoName":"ip","organization":"billieboy7","domainName":"github"},"branch":"master","displayName":"billieboy7/ip[master]","outputFolderName":"billieboy7_ip_master"},{"location":{"location":"https://github.com/ldinghan/ip.git","repoName":"ip","organization":"ldinghan","domainName":"github"},"branch":"master","displayName":"ldinghan/ip[master]","outputFolderName":"ldinghan_ip_master"},{"location":{"location":"https://github.com/anthonytamzil/ip.git","repoName":"ip","organization":"anthonytamzil","domainName":"github"},"branch":"master","displayName":"anthonytamzil/ip[master]","outputFolderName":"anthonytamzil_ip_master"},{"location":{"location":"https://github.com/ryantzr1/ip.git","repoName":"ip","organization":"ryantzr1","domainName":"github"},"branch":"master","displayName":"ryantzr1/ip[master]","outputFolderName":"ryantzr1_ip_master"},{"location":{"location":"https://github.com/shuyangk/ip.git","repoName":"ip","organization":"shuyangk","domainName":"github"},"branch":"master","displayName":"shuyangk/ip[master]","outputFolderName":"shuyangk_ip_master"},{"location":{"location":"https://github.com/seewhyjay/ip.git","repoName":"ip","organization":"seewhyjay","domainName":"github"},"branch":"master","displayName":"seewhyjay/ip[master]","outputFolderName":"seewhyjay_ip_master"},{"location":{"location":"https://github.com/waseemingly/ip.git","repoName":"ip","organization":"waseemingly","domainName":"github"},"branch":"master","displayName":"waseemingly/ip[master]","outputFolderName":"waseemingly_ip_master"},{"location":{"location":"https://github.com/DistractedCat/ip.git","repoName":"ip","organization":"DistractedCat","domainName":"github"},"branch":"master","displayName":"DistractedCat/ip[master]","outputFolderName":"DistractedCat_ip_master"},{"location":{"location":"https://github.com/geraldngjx/ip.git","repoName":"ip","organization":"geraldngjx","domainName":"github"},"branch":"master","displayName":"geraldngjx/ip[master]","outputFolderName":"geraldngjx_ip_master"},{"location":{"location":"https://github.com/tayian/ip.git","repoName":"ip","organization":"tayian","domainName":"github"},"branch":"master","displayName":"tayian/ip[master]","outputFolderName":"tayian_ip_master"},{"location":{"location":"https://github.com/AlfredBeNoel/ip.git","repoName":"ip","organization":"AlfredBeNoel","domainName":"github"},"branch":"master","displayName":"AlfredBeNoel/ip[master]","outputFolderName":"AlfredBeNoel_ip_master"},{"location":{"location":"https://github.com/Chen1x/ip.git","repoName":"ip","organization":"Chen1x","domainName":"github"},"branch":"master","displayName":"Chen1x/ip[master]","outputFolderName":"Chen1x_ip_master"},{"location":{"location":"https://github.com/juzzztinsoong/ip.git","repoName":"ip","organization":"juzzztinsoong","domainName":"github"},"branch":"master","displayName":"juzzztinsoong/ip[master]","outputFolderName":"juzzztinsoong_ip_master"},{"location":{"location":"https://github.com/lambraydon/ip.git","repoName":"ip","organization":"lambraydon","domainName":"github"},"branch":"master","displayName":"lambraydon/ip[master]","outputFolderName":"lambraydon_ip_master"},{"location":{"location":"https://github.com/lilozz2/ip.git","repoName":"ip","organization":"lilozz2","domainName":"github"},"branch":"master","displayName":"lilozz2/ip[master]","outputFolderName":"lilozz2_ip_master"},{"location":{"location":"https://github.com/tyouwei/ip.git","repoName":"ip","organization":"tyouwei","domainName":"github"},"branch":"master","displayName":"tyouwei/ip[master]","outputFolderName":"tyouwei_ip_master"},{"location":{"location":"https://github.com/Kailash201/ip.git","repoName":"ip","organization":"Kailash201","domainName":"github"},"branch":"master","displayName":"Kailash201/ip[master]","outputFolderName":"Kailash201_ip_master"},{"location":{"location":"https://github.com/tjingsheng/ip.git","repoName":"ip","organization":"tjingsheng","domainName":"github"},"branch":"master","displayName":"tjingsheng/ip[master]","outputFolderName":"tjingsheng_ip_master"},{"location":{"location":"https://github.com/pangyyen/ip.git","repoName":"ip","organization":"pangyyen","domainName":"github"},"branch":"master","displayName":"pangyyen/ip[master]","outputFolderName":"pangyyen_ip_master"},{"location":{"location":"https://github.com/Khaleelur-Rahman/ip.git","repoName":"ip","organization":"Khaleelur-Rahman","domainName":"github"},"branch":"master","displayName":"Khaleelur-Rahman/ip[master]","outputFolderName":"Khaleelur-Rahman_ip_master"},{"location":{"location":"https://github.com/erohsikivar/ip.git","repoName":"ip","organization":"erohsikivar","domainName":"github"},"branch":"master","displayName":"erohsikivar/ip[master]","outputFolderName":"erohsikivar_ip_master"},{"location":{"location":"https://github.com/shishirbychapur/ip.git","repoName":"ip","organization":"shishirbychapur","domainName":"github"},"branch":"master","displayName":"shishirbychapur/ip[master]","outputFolderName":"shishirbychapur_ip_master"},{"location":{"location":"https://github.com/Badatprogrammiing/ip.git","repoName":"ip","organization":"Badatprogrammiing","domainName":"github"},"branch":"master","displayName":"Badatprogrammiing/ip[master]","outputFolderName":"Badatprogrammiing_ip_master"},{"location":{"location":"https://github.com/ravern/ip.git","repoName":"ip","organization":"ravern","domainName":"github"},"branch":"master","displayName":"ravern/ip[master]","outputFolderName":"ravern_ip_master"},{"location":{"location":"https://github.com/B-enguin/ip.git","repoName":"ip","organization":"B-enguin","domainName":"github"},"branch":"master","displayName":"B-enguin/ip[master]","outputFolderName":"B-enguin_ip_master"},{"location":{"location":"https://github.com/AlyssaPng/ip.git","repoName":"ip","organization":"AlyssaPng","domainName":"github"},"branch":"master","displayName":"AlyssaPng/ip[master]","outputFolderName":"AlyssaPng_ip_master"},{"location":{"location":"https://github.com/flexibo/ip.git","repoName":"ip","organization":"flexibo","domainName":"github"},"branch":"master","displayName":"flexibo/ip[master]","outputFolderName":"flexibo_ip_master"},{"location":{"location":"https://github.com/lordidiot/ip.git","repoName":"ip","organization":"lordidiot","domainName":"github"},"branch":"master","displayName":"lordidiot/ip[master]","outputFolderName":"lordidiot_ip_master"},{"location":{"location":"https://github.com/vansh284/ip.git","repoName":"ip","organization":"vansh284","domainName":"github"},"branch":"master","displayName":"vansh284/ip[master]","outputFolderName":"vansh284_ip_master"},{"location":{"location":"https://github.com/samuelim01/ip.git","repoName":"ip","organization":"samuelim01","domainName":"github"},"branch":"master","displayName":"samuelim01/ip[master]","outputFolderName":"samuelim01_ip_master"},{"location":{"location":"https://github.com/WZWren/ip.git","repoName":"ip","organization":"WZWren","domainName":"github"},"branch":"master","displayName":"WZWren/ip[master]","outputFolderName":"WZWren_ip_master"},{"location":{"location":"https://github.com/cxo05/ip.git","repoName":"ip","organization":"cxo05","domainName":"github"},"branch":"master","displayName":"cxo05/ip[master]","outputFolderName":"cxo05_ip_master"},{"location":{"location":"https://github.com/sudarshan2401/ip.git","repoName":"ip","organization":"sudarshan2401","domainName":"github"},"branch":"master","displayName":"sudarshan2401/ip[master]","outputFolderName":"sudarshan2401_ip_master"},{"location":{"location":"https://github.com/jingyu987/ip.git","repoName":"ip","organization":"jingyu987","domainName":"github"},"branch":"master","displayName":"jingyu987/ip[master]","outputFolderName":"jingyu987_ip_master"},{"location":{"location":"https://github.com/H1410101/ip.git","repoName":"ip","organization":"H1410101","domainName":"github"},"branch":"master","displayName":"H1410101/ip[master]","outputFolderName":"H1410101_ip_master"},{"location":{"location":"https://github.com/MagnificentCreature/ip.git","repoName":"ip","organization":"MagnificentCreature","domainName":"github"},"branch":"master","displayName":"MagnificentCreature/ip[master]","outputFolderName":"MagnificentCreature_ip_master"},{"location":{"location":"https://github.com/shyanyong/ip.git","repoName":"ip","organization":"shyanyong","domainName":"github"},"branch":"master","displayName":"shyanyong/ip[master]","outputFolderName":"shyanyong_ip_master"},{"location":{"location":"https://github.com/peasantbird/ip.git","repoName":"ip","organization":"peasantbird","domainName":"github"},"branch":"master","displayName":"peasantbird/ip[master]","outputFolderName":"peasantbird_ip_master"},{"location":{"location":"https://github.com/tllshan/ip.git","repoName":"ip","organization":"tllshan","domainName":"github"},"branch":"master","displayName":"tllshan/ip[master]","outputFolderName":"tllshan_ip_master"},{"location":{"location":"https://github.com/sushiyade/ip.git","repoName":"ip","organization":"sushiyade","domainName":"github"},"branch":"master","displayName":"sushiyade/ip[master]","outputFolderName":"sushiyade_ip_master"},{"location":{"location":"https://github.com/iyioon/ip.git","repoName":"ip","organization":"iyioon","domainName":"github"},"branch":"master","displayName":"iyioon/ip[master]","outputFolderName":"iyioon_ip_master"},{"location":{"location":"https://github.com/shashahchk/ip.git","repoName":"ip","organization":"shashahchk","domainName":"github"},"branch":"master","displayName":"shashahchk/ip[master]","outputFolderName":"shashahchk_ip_master"},{"location":{"location":"https://github.com/Chandan8186/ip.git","repoName":"ip","organization":"Chandan8186","domainName":"github"},"branch":"master","displayName":"Chandan8186/ip[master]","outputFolderName":"Chandan8186_ip_master"},{"location":{"location":"https://github.com/wesho1107/ip.git","repoName":"ip","organization":"wesho1107","domainName":"github"},"branch":"master","displayName":"wesho1107/ip[master]","outputFolderName":"wesho1107_ip_master"},{"location":{"location":"https://github.com/tim-pipi/ip.git","repoName":"ip","organization":"tim-pipi","domainName":"github"},"branch":"master","displayName":"tim-pipi/ip[master]","outputFolderName":"tim-pipi_ip_master"},{"location":{"location":"https://github.com/emzm2023/ip.git","repoName":"ip","organization":"emzm2023","domainName":"github"},"branch":"master","displayName":"emzm2023/ip[master]","outputFolderName":"emzm2023_ip_master"},{"location":{"location":"https://github.com/dlathyun/ip.git","repoName":"ip","organization":"dlathyun","domainName":"github"},"branch":"master","displayName":"dlathyun/ip[master]","outputFolderName":"dlathyun_ip_master"},{"location":{"location":"https://github.com/tanboonkhong/ip.git","repoName":"ip","organization":"tanboonkhong","domainName":"github"},"branch":"master","displayName":"tanboonkhong/ip[master]","outputFolderName":"tanboonkhong_ip_master"},{"location":{"location":"https://github.com/joeng03/ip.git","repoName":"ip","organization":"joeng03","domainName":"github"},"branch":"master","displayName":"joeng03/ip[master]","outputFolderName":"joeng03_ip_master"},{"location":{"location":"https://github.com/VN-Hao/ip.git","repoName":"ip","organization":"VN-Hao","domainName":"github"},"branch":"master","displayName":"VN-Hao/ip[master]","outputFolderName":"VN-Hao_ip_master"},{"location":{"location":"https://github.com/NgChunMan/ip.git","repoName":"ip","organization":"NgChunMan","domainName":"github"},"branch":"master","displayName":"NgChunMan/ip[master]","outputFolderName":"NgChunMan_ip_master"},{"location":{"location":"https://github.com/TiwKangXu/ip.git","repoName":"ip","organization":"TiwKangXu","domainName":"github"},"branch":"master","displayName":"TiwKangXu/ip[master]","outputFolderName":"TiwKangXu_ip_master"},{"location":{"location":"https://github.com/josepholim/ip.git","repoName":"ip","organization":"josepholim","domainName":"github"},"branch":"master","displayName":"josepholim/ip[master]","outputFolderName":"josepholim_ip_master"},{"location":{"location":"https://github.com/dinde2004/ip.git","repoName":"ip","organization":"dinde2004","domainName":"github"},"branch":"master","displayName":"dinde2004/ip[master]","outputFolderName":"dinde2004_ip_master"},{"location":{"location":"https://github.com/yucongkoo/ip.git","repoName":"ip","organization":"yucongkoo","domainName":"github"},"branch":"master","displayName":"yucongkoo/ip[master]","outputFolderName":"yucongkoo_ip_master"},{"location":{"location":"https://github.com/TohLiYuan/ip.git","repoName":"ip","organization":"TohLiYuan","domainName":"github"},"branch":"master","displayName":"TohLiYuan/ip[master]","outputFolderName":"TohLiYuan_ip_master"},{"location":{"location":"https://github.com/NereusWB922/ip.git","repoName":"ip","organization":"NereusWB922","domainName":"github"},"branch":"master","displayName":"NereusWB922/ip[master]","outputFolderName":"NereusWB922_ip_master"},{"location":{"location":"https://github.com/ph-nathan/ip.git","repoName":"ip","organization":"ph-nathan","domainName":"github"},"branch":"master","displayName":"ph-nathan/ip[master]","outputFolderName":"ph-nathan_ip_master"},{"location":{"location":"https://github.com/antonTan96/ip.git","repoName":"ip","organization":"antonTan96","domainName":"github"},"branch":"master","displayName":"antonTan96/ip[master]","outputFolderName":"antonTan96_ip_master"},{"location":{"location":"https://github.com/WinstonLeonard/ip.git","repoName":"ip","organization":"WinstonLeonard","domainName":"github"},"branch":"master","displayName":"WinstonLeonard/ip[master]","outputFolderName":"WinstonLeonard_ip_master"},{"location":{"location":"https://github.com/TehOPanas/ip.git","repoName":"ip","organization":"TehOPanas","domainName":"github"},"branch":"master","displayName":"TehOPanas/ip[master]","outputFolderName":"TehOPanas_ip_master"},{"location":{"location":"https://github.com/marioalvaro/ip.git","repoName":"ip","organization":"marioalvaro","domainName":"github"},"branch":"master","displayName":"marioalvaro/ip[master]","outputFolderName":"marioalvaro_ip_master"},{"location":{"location":"https://github.com/LINCHENYU2030S/ip.git","repoName":"ip","organization":"LINCHENYU2030S","domainName":"github"},"branch":"master","displayName":"LINCHENYU2030S/ip[master]","outputFolderName":"LINCHENYU2030S_ip_master"},{"location":{"location":"https://github.com/LamJiuFong/ip.git","repoName":"ip","organization":"LamJiuFong","domainName":"github"},"branch":"master","displayName":"LamJiuFong/ip[master]","outputFolderName":"LamJiuFong_ip_master"},{"location":{"location":"https://github.com/AndrewJanong/ip.git","repoName":"ip","organization":"AndrewJanong","domainName":"github"},"branch":"master","displayName":"AndrewJanong/ip[master]","outputFolderName":"AndrewJanong_ip_master"},{"location":{"location":"https://github.com/songfangyl/ip.git","repoName":"ip","organization":"songfangyl","domainName":"github"},"branch":"master","displayName":"songfangyl/ip[master]","outputFolderName":"songfangyl_ip_master"},{"location":{"location":"https://github.com/AriellaCallista/ip.git","repoName":"ip","organization":"AriellaCallista","domainName":"github"},"branch":"master","displayName":"AriellaCallista/ip[master]","outputFolderName":"AriellaCallista_ip_master"},{"location":{"location":"https://github.com/KamJiaYue/ip.git","repoName":"ip","organization":"KamJiaYue","domainName":"github"},"branch":"master","displayName":"KamJiaYue/ip[master]","outputFolderName":"KamJiaYue_ip_master"},{"location":{"location":"https://github.com/feifeiraindrops/ip.git","repoName":"ip","organization":"feifeiraindrops","domainName":"github"},"branch":"master","displayName":"feifeiraindrops/ip[master]","outputFolderName":"feifeiraindrops_ip_master"},{"location":{"location":"https://github.com/czhiruo/ip.git","repoName":"ip","organization":"czhiruo","domainName":"github"},"branch":"master","displayName":"czhiruo/ip[master]","outputFolderName":"czhiruo_ip_master"},{"location":{"location":"https://github.com/butteredyakiimo/ip.git","repoName":"ip","organization":"butteredyakiimo","domainName":"github"},"branch":"master","displayName":"butteredyakiimo/ip[master]","outputFolderName":"butteredyakiimo_ip_master"},{"location":{"location":"https://github.com/RiyaMehta2211/ip.git","repoName":"ip","organization":"RiyaMehta2211","domainName":"github"},"branch":"master","displayName":"RiyaMehta2211/ip[master]","outputFolderName":"RiyaMehta2211_ip_master"},{"location":{"location":"https://github.com/beatricecst/ip.git","repoName":"ip","organization":"beatricecst","domainName":"github"},"branch":"master","displayName":"beatricecst/ip[master]","outputFolderName":"beatricecst_ip_master"},{"location":{"location":"https://github.com/maypfv/ip.git","repoName":"ip","organization":"maypfv","domainName":"github"},"branch":"master","displayName":"maypfv/ip[master]","outputFolderName":"maypfv_ip_master"},{"location":{"location":"https://github.com/pra-navi/ip.git","repoName":"ip","organization":"pra-navi","domainName":"github"},"branch":"master","displayName":"pra-navi/ip[master]","outputFolderName":"pra-navi_ip_master"},{"location":{"location":"https://github.com/xxiaoweii/ip.git","repoName":"ip","organization":"xxiaoweii","domainName":"github"},"branch":"master","displayName":"xxiaoweii/ip[master]","outputFolderName":"xxiaoweii_ip_master"},{"location":{"location":"https://github.com/qyaner/ip.git","repoName":"ip","organization":"qyaner","domainName":"github"},"branch":"master","displayName":"qyaner/ip[master]","outputFolderName":"qyaner_ip_master"},{"location":{"location":"https://github.com/qz1004/ip.git","repoName":"ip","organization":"qz1004","domainName":"github"},"branch":"master","displayName":"qz1004/ip[master]","outputFolderName":"qz1004_ip_master"},{"location":{"location":"https://github.com/miljyy/ip.git","repoName":"ip","organization":"miljyy","domainName":"github"},"branch":"master","displayName":"miljyy/ip[master]","outputFolderName":"miljyy_ip_master"},{"location":{"location":"https://github.com/yihfei/ip.git","repoName":"ip","organization":"yihfei","domainName":"github"},"branch":"master","displayName":"yihfei/ip[master]","outputFolderName":"yihfei_ip_master"},{"location":{"location":"https://github.com/Gabriel4357/ip.git","repoName":"ip","organization":"Gabriel4357","domainName":"github"},"branch":"master","displayName":"Gabriel4357/ip[master]","outputFolderName":"Gabriel4357_ip_master"},{"location":{"location":"https://github.com/saraozn/ip.git","repoName":"ip","organization":"saraozn","domainName":"github"},"branch":"master","displayName":"saraozn/ip[master]","outputFolderName":"saraozn_ip_master"},{"location":{"location":"https://github.com/JeremyYong128/ip.git","repoName":"ip","organization":"JeremyYong128","domainName":"github"},"branch":"master","displayName":"JeremyYong128/ip[master]","outputFolderName":"JeremyYong128_ip_master"},{"location":{"location":"https://github.com/samuelmui8/ip.git","repoName":"ip","organization":"samuelmui8","domainName":"github"},"branch":"master","displayName":"samuelmui8/ip[master]","outputFolderName":"samuelmui8_ip_master"},{"location":{"location":"https://github.com/elaineshijie/ip.git","repoName":"ip","organization":"elaineshijie","domainName":"github"},"branch":"master","displayName":"elaineshijie/ip[master]","outputFolderName":"elaineshijie_ip_master"},{"location":{"location":"https://github.com/zhengyup/ip.git","repoName":"ip","organization":"zhengyup","domainName":"github"},"branch":"master","displayName":"zhengyup/ip[master]","outputFolderName":"zhengyup_ip_master"},{"location":{"location":"https://github.com/ruishanteo/ip.git","repoName":"ip","organization":"ruishanteo","domainName":"github"},"branch":"master","displayName":"ruishanteo/ip[master]","outputFolderName":"ruishanteo_ip_master"},{"location":{"location":"https://github.com/lynnlow175/ip.git","repoName":"ip","organization":"lynnlow175","domainName":"github"},"branch":"master","displayName":"lynnlow175/ip[master]","outputFolderName":"lynnlow175_ip_master"},{"location":{"location":"https://github.com/kohkaijie/ip.git","repoName":"ip","organization":"kohkaijie","domainName":"github"},"branch":"master","displayName":"kohkaijie/ip[master]","outputFolderName":"kohkaijie_ip_master"},{"location":{"location":"https://github.com/CelestineTan03/ip.git","repoName":"ip","organization":"CelestineTan03","domainName":"github"},"branch":"master","displayName":"CelestineTan03/ip[master]","outputFolderName":"CelestineTan03_ip_master"},{"location":{"location":"https://github.com/PearlynnT/ip.git","repoName":"ip","organization":"PearlynnT","domainName":"github"},"branch":"master","displayName":"PearlynnT/ip[master]","outputFolderName":"PearlynnT_ip_master"},{"location":{"location":"https://github.com/Elijah5399/ip.git","repoName":"ip","organization":"Elijah5399","domainName":"github"},"branch":"master","displayName":"Elijah5399/ip[master]","outputFolderName":"Elijah5399_ip_master"},{"location":{"location":"https://github.com/nicleongyj/ip.git","repoName":"ip","organization":"nicleongyj","domainName":"github"},"branch":"master","displayName":"nicleongyj/ip[master]","outputFolderName":"nicleongyj_ip_master"},{"location":{"location":"https://github.com/AnnabelTing/ip.git","repoName":"ip","organization":"AnnabelTing","domainName":"github"},"branch":"master","displayName":"AnnabelTing/ip[master]","outputFolderName":"AnnabelTing_ip_master"},{"location":{"location":"https://github.com/jrchoo/ip.git","repoName":"ip","organization":"jrchoo","domainName":"github"},"branch":"master","displayName":"jrchoo/ip[master]","outputFolderName":"jrchoo_ip_master"},{"location":{"location":"https://github.com/wujy28/ip.git","repoName":"ip","organization":"wujy28","domainName":"github"},"branch":"master","displayName":"wujy28/ip[master]","outputFolderName":"wujy28_ip_master"},{"location":{"location":"https://github.com/Nauxe/ip.git","repoName":"ip","organization":"Nauxe","domainName":"github"},"branch":"master","displayName":"Nauxe/ip[master]","outputFolderName":"Nauxe_ip_master"},{"location":{"location":"https://github.com/yyyaohhh/ip.git","repoName":"ip","organization":"yyyaohhh","domainName":"github"},"branch":"master","displayName":"yyyaohhh/ip[master]","outputFolderName":"yyyaohhh_ip_master"},{"location":{"location":"https://github.com/xenosf/ip.git","repoName":"ip","organization":"xenosf","domainName":"github"},"branch":"master","displayName":"xenosf/ip[master]","outputFolderName":"xenosf_ip_master"},{"location":{"location":"https://github.com/WinSheng1/ip.git","repoName":"ip","organization":"WinSheng1","domainName":"github"},"branch":"master","displayName":"WinSheng1/ip[master]","outputFolderName":"WinSheng1_ip_master"},{"location":{"location":"https://github.com/nreHieW/ip.git","repoName":"ip","organization":"nreHieW","domainName":"github"},"branch":"master","displayName":"nreHieW/ip[master]","outputFolderName":"nreHieW_ip_master"},{"location":{"location":"https://github.com/peiran18/ip.git","repoName":"ip","organization":"peiran18","domainName":"github"},"branch":"master","displayName":"peiran18/ip[master]","outputFolderName":"peiran18_ip_master"},{"location":{"location":"https://github.com/cheeggered/ip.git","repoName":"ip","organization":"cheeggered","domainName":"github"},"branch":"master","displayName":"cheeggered/ip[master]","outputFolderName":"cheeggered_ip_master"},{"location":{"location":"https://github.com/GohTengFong/ip.git","repoName":"ip","organization":"GohTengFong","domainName":"github"},"branch":"master","displayName":"GohTengFong/ip[master]","outputFolderName":"GohTengFong_ip_master"},{"location":{"location":"https://github.com/jibtaf/ip.git","repoName":"ip","organization":"jibtaf","domainName":"github"},"branch":"master","displayName":"jibtaf/ip[master]","outputFolderName":"jibtaf_ip_master"},{"location":{"location":"https://github.com/bhnuka/ip.git","repoName":"ip","organization":"bhnuka","domainName":"github"},"branch":"master","displayName":"bhnuka/ip[master]","outputFolderName":"bhnuka_ip_master"},{"location":{"location":"https://github.com/laurenlim2112/ip.git","repoName":"ip","organization":"laurenlim2112","domainName":"github"},"branch":"master","displayName":"laurenlim2112/ip[master]","outputFolderName":"laurenlim2112_ip_master"},{"location":{"location":"https://github.com/howenc/ip.git","repoName":"ip","organization":"howenc","domainName":"github"},"branch":"master","displayName":"howenc/ip[master]","outputFolderName":"howenc_ip_master"},{"location":{"location":"https://github.com/Kokseng1/ip.git","repoName":"ip","organization":"Kokseng1","domainName":"github"},"branch":"master","displayName":"Kokseng1/ip[master]","outputFolderName":"Kokseng1_ip_master"},{"location":{"location":"https://github.com/yiwen101/ip.git","repoName":"ip","organization":"yiwen101","domainName":"github"},"branch":"master","displayName":"yiwen101/ip[master]","outputFolderName":"yiwen101_ip_master"},{"location":{"location":"https://github.com/Cikguseven/ip.git","repoName":"ip","organization":"Cikguseven","domainName":"github"},"branch":"master","displayName":"Cikguseven/ip[master]","outputFolderName":"Cikguseven_ip_master"},{"location":{"location":"https://github.com/javinchua/ip.git","repoName":"ip","organization":"javinchua","domainName":"github"},"branch":"master","displayName":"javinchua/ip[master]","outputFolderName":"javinchua_ip_master"},{"location":{"location":"https://github.com/frrrrry/ip.git","repoName":"ip","organization":"frrrrry","domainName":"github"},"branch":"master","displayName":"frrrrry/ip[master]","outputFolderName":"frrrrry_ip_master"},{"location":{"location":"https://github.com/YeoBohShin/ip.git","repoName":"ip","organization":"YeoBohShin","domainName":"github"},"branch":"master","displayName":"YeoBohShin/ip[master]","outputFolderName":"YeoBohShin_ip_master"},{"location":{"location":"https://github.com/yongning0310/ip.git","repoName":"ip","organization":"yongning0310","domainName":"github"},"branch":"master","displayName":"yongning0310/ip[master]","outputFolderName":"yongning0310_ip_master"},{"location":{"location":"https://github.com/SimWPEric/ip.git","repoName":"ip","organization":"SimWPEric","domainName":"github"},"branch":"master","displayName":"SimWPEric/ip[master]","outputFolderName":"SimWPEric_ip_master"},{"location":{"location":"https://github.com/sopa301/ip.git","repoName":"ip","organization":"sopa301","domainName":"github"},"branch":"master","displayName":"sopa301/ip[master]","outputFolderName":"sopa301_ip_master"},{"location":{"location":"https://github.com/nananakx-x/ip.git","repoName":"ip","organization":"nananakx-x","domainName":"github"},"branch":"master","displayName":"nananakx-x/ip[master]","outputFolderName":"nananakx-x_ip_master"},{"location":{"location":"https://github.com/LuoZYi/ip.git","repoName":"ip","organization":"LuoZYi","domainName":"github"},"branch":"master","displayName":"LuoZYi/ip[master]","outputFolderName":"LuoZYi_ip_master"},{"location":{"location":"https://github.com/LinWanLeii/ip.git","repoName":"ip","organization":"LinWanLeii","domainName":"github"},"branch":"master","displayName":"LinWanLeii/ip[master]","outputFolderName":"LinWanLeii_ip_master"},{"location":{"location":"https://github.com/mingyuanc/ip.git","repoName":"ip","organization":"mingyuanc","domainName":"github"},"branch":"master","displayName":"mingyuanc/ip[master]","outputFolderName":"mingyuanc_ip_master"},{"location":{"location":"https://github.com/chonguschonguschongus/ip.git","repoName":"ip","organization":"chonguschonguschongus","domainName":"github"},"branch":"master","displayName":"chonguschonguschongus/ip[master]","outputFolderName":"chonguschonguschongus_ip_master"},{"location":{"location":"https://github.com/yanghengtang/ip.git","repoName":"ip","organization":"yanghengtang","domainName":"github"},"branch":"master","displayName":"yanghengtang/ip[master]","outputFolderName":"yanghengtang_ip_master"},{"location":{"location":"https://github.com/victorpengmx/ip.git","repoName":"ip","organization":"victorpengmx","domainName":"github"},"branch":"master","displayName":"victorpengmx/ip[master]","outputFolderName":"victorpengmx_ip_master"},{"location":{"location":"https://github.com/kanna-1/ip.git","repoName":"ip","organization":"kanna-1","domainName":"github"},"branch":"master","displayName":"kanna-1/ip[master]","outputFolderName":"kanna-1_ip_master"},{"location":{"location":"https://github.com/ncduy0303/ip.git","repoName":"ip","organization":"ncduy0303","domainName":"github"},"branch":"master","displayName":"ncduy0303/ip[master]","outputFolderName":"ncduy0303_ip_master"},{"location":{"location":"https://github.com/jannnice/ip.git","repoName":"ip","organization":"jannnice","domainName":"github"},"branch":"master","displayName":"jannnice/ip[master]","outputFolderName":"jannnice_ip_master"},{"location":{"location":"https://github.com/itssisi/ip.git","repoName":"ip","organization":"itssisi","domainName":"github"},"branch":"master","displayName":"itssisi/ip[master]","outputFolderName":"itssisi_ip_master"},{"location":{"location":"https://github.com/freddychenyouren2/ip.git","repoName":"ip","organization":"freddychenyouren2","domainName":"github"},"branch":"master","displayName":"freddychenyouren2/ip[master]","outputFolderName":"freddychenyouren2_ip_master"},{"location":{"location":"https://github.com/Vanessamae23/ip.git","repoName":"ip","organization":"Vanessamae23","domainName":"github"},"branch":"master","displayName":"Vanessamae23/ip[master]","outputFolderName":"Vanessamae23_ip_master"},{"location":{"location":"https://github.com/cbj252/ip.git","repoName":"ip","organization":"cbj252","domainName":"github"},"branch":"master","displayName":"cbj252/ip[master]","outputFolderName":"cbj252_ip_master"},{"location":{"location":"https://github.com/freshcabbage123/ip.git","repoName":"ip","organization":"freshcabbage123","domainName":"github"},"branch":"master","displayName":"freshcabbage123/ip[master]","outputFolderName":"freshcabbage123_ip_master"},{"location":{"location":"https://github.com/thienmy0/ip.git","repoName":"ip","organization":"thienmy0","domainName":"github"},"branch":"master","displayName":"thienmy0/ip[master]","outputFolderName":"thienmy0_ip_master"},{"location":{"location":"https://github.com/glenngnng/ip.git","repoName":"ip","organization":"glenngnng","domainName":"github"},"branch":"master","displayName":"glenngnng/ip[master]","outputFolderName":"glenngnng_ip_master"},{"location":{"location":"https://github.com/Darren159/ip.git","repoName":"ip","organization":"Darren159","domainName":"github"},"branch":"master","displayName":"Darren159/ip[master]","outputFolderName":"Darren159_ip_master"},{"location":{"location":"https://github.com/J-hta-n/ip.git","repoName":"ip","organization":"J-hta-n","domainName":"github"},"branch":"master","displayName":"J-hta-n/ip[master]","outputFolderName":"J-hta-n_ip_master"},{"location":{"location":"https://github.com/evanyan13/ip.git","repoName":"ip","organization":"evanyan13","domainName":"github"},"branch":"master","displayName":"evanyan13/ip[master]","outputFolderName":"evanyan13_ip_master"},{"location":{"location":"https://github.com/tanveersingh10/ip.git","repoName":"ip","organization":"tanveersingh10","domainName":"github"},"branch":"master","displayName":"tanveersingh10/ip[master]","outputFolderName":"tanveersingh10_ip_master"},{"location":{"location":"https://github.com/neyapraveen/ip.git","repoName":"ip","organization":"neyapraveen","domainName":"github"},"branch":"master","displayName":"neyapraveen/ip[master]","outputFolderName":"neyapraveen_ip_master"},{"location":{"location":"https://github.com/weeweh/ip.git","repoName":"ip","organization":"weeweh","domainName":"github"},"branch":"master","displayName":"weeweh/ip[master]","outputFolderName":"weeweh_ip_master"},{"location":{"location":"https://github.com/HugeNoob/ip.git","repoName":"ip","organization":"HugeNoob","domainName":"github"},"branch":"master","displayName":"HugeNoob/ip[master]","outputFolderName":"HugeNoob_ip_master"},{"location":{"location":"https://github.com/wasjoe1/ip.git","repoName":"ip","organization":"wasjoe1","domainName":"github"},"branch":"master","displayName":"wasjoe1/ip[master]","outputFolderName":"wasjoe1_ip_master"},{"location":{"location":"https://github.com/s-kybound/ip.git","repoName":"ip","organization":"s-kybound","domainName":"github"},"branch":"master","displayName":"s-kybound/ip[master]","outputFolderName":"s-kybound_ip_master"},{"location":{"location":"https://github.com/Singa-pirate/ip.git","repoName":"ip","organization":"Singa-pirate","domainName":"github"},"branch":"master","displayName":"Singa-pirate/ip[master]","outputFolderName":"Singa-pirate_ip_master"},{"location":{"location":"https://github.com/wanghejin/ip.git","repoName":"ip","organization":"wanghejin","domainName":"github"},"branch":"master","displayName":"wanghejin/ip[master]","outputFolderName":"wanghejin_ip_master"},{"location":{"location":"https://github.com/yarnmengnus/ip.git","repoName":"ip","organization":"yarnmengnus","domainName":"github"},"branch":"master","displayName":"yarnmengnus/ip[master]","outputFolderName":"yarnmengnus_ip_master"},{"location":{"location":"https://github.com/Kurtyjlee/ip.git","repoName":"ip","organization":"Kurtyjlee","domainName":"github"},"branch":"master","displayName":"Kurtyjlee/ip[master]","outputFolderName":"Kurtyjlee_ip_master"},{"location":{"location":"https://github.com/jellywaiyan/ip.git","repoName":"ip","organization":"jellywaiyan","domainName":"github"},"branch":"master","displayName":"jellywaiyan/ip[master]","outputFolderName":"jellywaiyan_ip_master"},{"location":{"location":"https://github.com/ylyma/ip.git","repoName":"ip","organization":"ylyma","domainName":"github"},"branch":"master","displayName":"ylyma/ip[master]","outputFolderName":"ylyma_ip_master"},{"location":{"location":"https://github.com/revdrag/ip.git","repoName":"ip","organization":"revdrag","domainName":"github"},"branch":"master","displayName":"revdrag/ip[master]","outputFolderName":"revdrag_ip_master"},{"location":{"location":"https://github.com/vijay-shankaranand/ip.git","repoName":"ip","organization":"vijay-shankaranand","domainName":"github"},"branch":"master","displayName":"vijay-shankaranand/ip[master]","outputFolderName":"vijay-shankaranand_ip_master"},{"location":{"location":"https://github.com/lerxuann/ip.git","repoName":"ip","organization":"lerxuann","domainName":"github"},"branch":"master","displayName":"lerxuann/ip[master]","outputFolderName":"lerxuann_ip_master"},{"location":{"location":"https://github.com/yuxunn/ip.git","repoName":"ip","organization":"yuxunn","domainName":"github"},"branch":"master","displayName":"yuxunn/ip[master]","outputFolderName":"yuxunn_ip_master"},{"location":{"location":"https://github.com/zannloo/ip.git","repoName":"ip","organization":"zannloo","domainName":"github"},"branch":"master","displayName":"zannloo/ip[master]","outputFolderName":"zannloo_ip_master"},{"location":{"location":"https://github.com/AryanG01/ip.git","repoName":"ip","organization":"AryanG01","domainName":"github"},"branch":"master","displayName":"AryanG01/ip[master]","outputFolderName":"AryanG01_ip_master"},{"location":{"location":"https://github.com/oeggy03/ip.git","repoName":"ip","organization":"oeggy03","domainName":"github"},"branch":"master","displayName":"oeggy03/ip[master]","outputFolderName":"oeggy03_ip_master"},{"location":{"location":"https://github.com/jeffrey-jian/ip.git","repoName":"ip","organization":"jeffrey-jian","domainName":"github"},"branch":"master","displayName":"jeffrey-jian/ip[master]","outputFolderName":"jeffrey-jian_ip_master"},{"location":{"location":"https://github.com/nicholastng010601/ip.git","repoName":"ip","organization":"nicholastng010601","domainName":"github"},"branch":"master","displayName":"nicholastng010601/ip[master]","outputFolderName":"nicholastng010601_ip_master"},{"location":{"location":"https://github.com/Weiennn/ip.git","repoName":"ip","organization":"Weiennn","domainName":"github"},"branch":"master","displayName":"Weiennn/ip[master]","outputFolderName":"Weiennn_ip_master"},{"location":{"location":"https://github.com/tayruxin/ip.git","repoName":"ip","organization":"tayruxin","domainName":"github"},"branch":"master","displayName":"tayruxin/ip[master]","outputFolderName":"tayruxin_ip_master"},{"location":{"location":"https://github.com/xyT-T/ip.git","repoName":"ip","organization":"xyT-T","domainName":"github"},"branch":"master","displayName":"xyT-T/ip[master]","outputFolderName":"xyT-T_ip_master"},{"location":{"location":"https://github.com/lunaroddity/ip.git","repoName":"ip","organization":"lunaroddity","domainName":"github"},"branch":"master","displayName":"lunaroddity/ip[master]","outputFolderName":"lunaroddity_ip_master"},{"location":{"location":"https://github.com/nabonitasen/ip.git","repoName":"ip","organization":"nabonitasen","domainName":"github"},"branch":"master","displayName":"nabonitasen/ip[master]","outputFolderName":"nabonitasen_ip_master"},{"location":{"location":"https://github.com/inezkok/ip.git","repoName":"ip","organization":"inezkok","domainName":"github"},"branch":"master","displayName":"inezkok/ip[master]","outputFolderName":"inezkok_ip_master"},{"location":{"location":"https://github.com/nknguyenhc/ip.git","repoName":"ip","organization":"nknguyenhc","domainName":"github"},"branch":"master","displayName":"nknguyenhc/ip[master]","outputFolderName":"nknguyenhc_ip_master"},{"location":{"location":"https://github.com/keaganpzh/ip.git","repoName":"ip","organization":"keaganpzh","domainName":"github"},"branch":"master","displayName":"keaganpzh/ip[master]","outputFolderName":"keaganpzh_ip_master"},{"location":{"location":"https://github.com/lululwtv/ip.git","repoName":"ip","organization":"lululwtv","domainName":"github"},"branch":"master","displayName":"lululwtv/ip[master]","outputFolderName":"lululwtv_ip_master"},{"location":{"location":"https://github.com/hcs1203/ip.git","repoName":"ip","organization":"hcs1203","domainName":"github"},"branch":"master","displayName":"hcs1203/ip[master]","outputFolderName":"hcs1203_ip_master"},{"location":{"location":"https://github.com/migfoo02/ip.git","repoName":"ip","organization":"migfoo02","domainName":"github"},"branch":"master","displayName":"migfoo02/ip[master]","outputFolderName":"migfoo02_ip_master"},{"location":{"location":"https://github.com/papataco14/ip.git","repoName":"ip","organization":"papataco14","domainName":"github"},"branch":"master","displayName":"papataco14/ip[master]","outputFolderName":"papataco14_ip_master"},{"location":{"location":"https://github.com/coderhuang559/ip.git","repoName":"ip","organization":"coderhuang559","domainName":"github"},"branch":"master","displayName":"coderhuang559/ip[master]","outputFolderName":"coderhuang559_ip_master"},{"location":{"location":"https://github.com/craigtonlian/ip.git","repoName":"ip","organization":"craigtonlian","domainName":"github"},"branch":"master","displayName":"craigtonlian/ip[master]","outputFolderName":"craigtonlian_ip_master"},{"location":{"location":"https://github.com/adammangzijun/ip.git","repoName":"ip","organization":"adammangzijun","domainName":"github"},"branch":"master","displayName":"adammangzijun/ip[master]","outputFolderName":"adammangzijun_ip_master"},{"location":{"location":"https://github.com/AlainS87/ip.git","repoName":"ip","organization":"AlainS87","domainName":"github"},"branch":"master","displayName":"AlainS87/ip[master]","outputFolderName":"AlainS87_ip_master"},{"location":{"location":"https://github.com/tanyyyming/ip.git","repoName":"ip","organization":"tanyyyming","domainName":"github"},"branch":"master","displayName":"tanyyyming/ip[master]","outputFolderName":"tanyyyming_ip_master"},{"location":{"location":"https://github.com/Saezenn/ip.git","repoName":"ip","organization":"Saezenn","domainName":"github"},"branch":"master","displayName":"Saezenn/ip[master]","outputFolderName":"Saezenn_ip_master"},{"location":{"location":"https://github.com/kayabuttertoastt/ip.git","repoName":"ip","organization":"kayabuttertoastt","domainName":"github"},"branch":"master","displayName":"kayabuttertoastt/ip[master]","outputFolderName":"kayabuttertoastt_ip_master"},{"location":{"location":"https://github.com/limjunxian1/ip.git","repoName":"ip","organization":"limjunxian1","domainName":"github"},"branch":"master","displayName":"limjunxian1/ip[master]","outputFolderName":"limjunxian1_ip_master"},{"location":{"location":"https://github.com/andrechuakj/ip.git","repoName":"ip","organization":"andrechuakj","domainName":"github"},"branch":"master","displayName":"andrechuakj/ip[master]","outputFolderName":"andrechuakj_ip_master"},{"location":{"location":"https://github.com/kwangthiag/ip.git","repoName":"ip","organization":"kwangthiag","domainName":"github"},"branch":"master","displayName":"kwangthiag/ip[master]","outputFolderName":"kwangthiag_ip_master"},{"location":{"location":"https://github.com/ricketytoc/ip.git","repoName":"ip","organization":"ricketytoc","domainName":"github"},"branch":"master","displayName":"ricketytoc/ip[master]","outputFolderName":"ricketytoc_ip_master"},{"location":{"location":"https://github.com/applepiofmyeye/ip.git","repoName":"ip","organization":"applepiofmyeye","domainName":"github"},"branch":"master","displayName":"applepiofmyeye/ip[master]","outputFolderName":"applepiofmyeye_ip_master"},{"location":{"location":"https://github.com/nubnubyas/ip.git","repoName":"ip","organization":"nubnubyas","domainName":"github"},"branch":"master","displayName":"nubnubyas/ip[master]","outputFolderName":"nubnubyas_ip_master"},{"location":{"location":"https://github.com/WeeeHung/ip.git","repoName":"ip","organization":"WeeeHung","domainName":"github"},"branch":"master","displayName":"WeeeHung/ip[master]","outputFolderName":"WeeeHung_ip_master"},{"location":{"location":"https://github.com/Eola-Z/ip.git","repoName":"ip","organization":"Eola-Z","domainName":"github"},"branch":"master","displayName":"Eola-Z/ip[master]","outputFolderName":"Eola-Z_ip_master"},{"location":{"location":"https://github.com/jordankanghm/ip.git","repoName":"ip","organization":"jordankanghm","domainName":"github"},"branch":"master","displayName":"jordankanghm/ip[master]","outputFolderName":"jordankanghm_ip_master"},{"location":{"location":"https://github.com/zacwong2151/ip.git","repoName":"ip","organization":"zacwong2151","domainName":"github"},"branch":"master","displayName":"zacwong2151/ip[master]","outputFolderName":"zacwong2151_ip_master"},{"location":{"location":"https://github.com/m1oojv/ip.git","repoName":"ip","organization":"m1oojv","domainName":"github"},"branch":"master","displayName":"m1oojv/ip[master]","outputFolderName":"m1oojv_ip_master"},{"location":{"location":"https://github.com/JCSnap/ip.git","repoName":"ip","organization":"JCSnap","domainName":"github"},"branch":"master","displayName":"JCSnap/ip[master]","outputFolderName":"JCSnap_ip_master"},{"location":{"location":"https://github.com/Nid21cs/ip.git","repoName":"ip","organization":"Nid21cs","domainName":"github"},"branch":"master","displayName":"Nid21cs/ip[master]","outputFolderName":"Nid21cs_ip_master"},{"location":{"location":"https://github.com/mfjkri/ip.git","repoName":"ip","organization":"mfjkri","domainName":"github"},"branch":"master","displayName":"mfjkri/ip[master]","outputFolderName":"mfjkri_ip_master"},{"location":{"location":"https://github.com/Choonyan02/ip.git","repoName":"ip","organization":"Choonyan02","domainName":"github"},"branch":"master","displayName":"Choonyan02/ip[master]","outputFolderName":"Choonyan02_ip_master"},{"location":{"location":"https://github.com/rayyan35p/ip.git","repoName":"ip","organization":"rayyan35p","domainName":"github"},"branch":"master","displayName":"rayyan35p/ip[master]","outputFolderName":"rayyan35p_ip_master"},{"location":{"location":"https://github.com/dhruvir29/ip.git","repoName":"ip","organization":"dhruvir29","domainName":"github"},"branch":"master","displayName":"dhruvir29/ip[master]","outputFolderName":"dhruvir29_ip_master"},{"location":{"location":"https://github.com/Mohammed-Faizzzz/ip.git","repoName":"ip","organization":"Mohammed-Faizzzz","domainName":"github"},"branch":"master","displayName":"Mohammed-Faizzzz/ip[master]","outputFolderName":"Mohammed-Faizzzz_ip_master"},{"location":{"location":"https://github.com/ruo-x/ip.git","repoName":"ip","organization":"ruo-x","domainName":"github"},"branch":"master","displayName":"ruo-x/ip[master]","outputFolderName":"ruo-x_ip_master"},{"location":{"location":"https://github.com/DonovanJJ/ip.git","repoName":"ip","organization":"DonovanJJ","domainName":"github"},"branch":"master","displayName":"DonovanJJ/ip[master]","outputFolderName":"DonovanJJ_ip_master"},{"location":{"location":"https://github.com/kristayeo/ip.git","repoName":"ip","organization":"kristayeo","domainName":"github"},"branch":"master","displayName":"kristayeo/ip[master]","outputFolderName":"kristayeo_ip_master"},{"location":{"location":"https://github.com/ZD292/ip.git","repoName":"ip","organization":"ZD292","domainName":"github"},"branch":"master","displayName":"ZD292/ip[master]","outputFolderName":"ZD292_ip_master"},{"location":{"location":"https://github.com/jingjie88/ip.git","repoName":"ip","organization":"jingjie88","domainName":"github"},"branch":"master","displayName":"jingjie88/ip[master]","outputFolderName":"jingjie88_ip_master"},{"location":{"location":"https://github.com/iantsaii/ip.git","repoName":"ip","organization":"iantsaii","domainName":"github"},"branch":"master","displayName":"iantsaii/ip[master]","outputFolderName":"iantsaii_ip_master"},{"location":{"location":"https://github.com/jingting1412/ip.git","repoName":"ip","organization":"jingting1412","domainName":"github"},"branch":"master","displayName":"jingting1412/ip[master]","outputFolderName":"jingting1412_ip_master"},{"location":{"location":"https://github.com/wnchan/ip.git","repoName":"ip","organization":"wnchan","domainName":"github"},"branch":"master","displayName":"wnchan/ip[master]","outputFolderName":"wnchan_ip_master"},{"location":{"location":"https://github.com/jack1e0/ip.git","repoName":"ip","organization":"jack1e0","domainName":"github"},"branch":"master","displayName":"jack1e0/ip[master]","outputFolderName":"jack1e0_ip_master"},{"location":{"location":"https://github.com/mingyu-wan/ip.git","repoName":"ip","organization":"mingyu-wan","domainName":"github"},"branch":"master","displayName":"mingyu-wan/ip[master]","outputFolderName":"mingyu-wan_ip_master"},{"location":{"location":"https://github.com/nicolengk/ip.git","repoName":"ip","organization":"nicolengk","domainName":"github"},"branch":"master","displayName":"nicolengk/ip[master]","outputFolderName":"nicolengk_ip_master"},{"location":{"location":"https://github.com/cyaoxuan/ip.git","repoName":"ip","organization":"cyaoxuan","domainName":"github"},"branch":"master","displayName":"cyaoxuan/ip[master]","outputFolderName":"cyaoxuan_ip_master"},{"location":{"location":"https://github.com/sunzihan23/ip.git","repoName":"ip","organization":"sunzihan23","domainName":"github"},"branch":"master","displayName":"sunzihan23/ip[master]","outputFolderName":"sunzihan23_ip_master"},{"location":{"location":"https://github.com/Goh-Li-Ting/ip.git","repoName":"ip","organization":"Goh-Li-Ting","domainName":"github"},"branch":"master","displayName":"Goh-Li-Ting/ip[master]","outputFolderName":"Goh-Li-Ting_ip_master"},{"location":{"location":"https://github.com/wjayee/ip.git","repoName":"ip","organization":"wjayee","domainName":"github"},"branch":"master","displayName":"wjayee/ip[master]","outputFolderName":"wjayee_ip_master"},{"location":{"location":"https://github.com/fuyiqiao/ip.git","repoName":"ip","organization":"fuyiqiao","domainName":"github"},"branch":"master","displayName":"fuyiqiao/ip[master]","outputFolderName":"fuyiqiao_ip_master"},{"location":{"location":"https://github.com/GlendaChong/ip.git","repoName":"ip","organization":"GlendaChong","domainName":"github"},"branch":"master","displayName":"GlendaChong/ip[master]","outputFolderName":"GlendaChong_ip_master"},{"location":{"location":"https://github.com/hyc17003/ip.git","repoName":"ip","organization":"hyc17003","domainName":"github"},"branch":"master","displayName":"hyc17003/ip[master]","outputFolderName":"hyc17003_ip_master"},{"location":{"location":"https://github.com/spatuly/ip.git","repoName":"ip","organization":"spatuly","domainName":"github"},"branch":"master","displayName":"spatuly/ip[master]","outputFolderName":"spatuly_ip_master"},{"location":{"location":"https://github.com/tanteckfang/ip.git","repoName":"ip","organization":"tanteckfang","domainName":"github"},"branch":"master","displayName":"tanteckfang/ip[master]","outputFolderName":"tanteckfang_ip_master"},{"location":{"location":"https://github.com/Clin-lyx/ip.git","repoName":"ip","organization":"Clin-lyx","domainName":"github"},"branch":"master","displayName":"Clin-lyx/ip[master]","outputFolderName":"Clin-lyx_ip_master"},{"location":{"location":"https://github.com/lyuanww/ip.git","repoName":"ip","organization":"lyuanww","domainName":"github"},"branch":"master","displayName":"lyuanww/ip[master]","outputFolderName":"lyuanww_ip_master"},{"location":{"location":"https://github.com/LimJH2002/ip.git","repoName":"ip","organization":"LimJH2002","domainName":"github"},"branch":"master","displayName":"LimJH2002/ip[master]","outputFolderName":"LimJH2002_ip_master"},{"location":{"location":"https://github.com/LWZ19/ip.git","repoName":"ip","organization":"LWZ19","domainName":"github"},"branch":"master","displayName":"LWZ19/ip[master]","outputFolderName":"LWZ19_ip_master"},{"location":{"location":"https://github.com/Gavino3o/ip.git","repoName":"ip","organization":"Gavino3o","domainName":"github"},"branch":"master","displayName":"Gavino3o/ip[master]","outputFolderName":"Gavino3o_ip_master"},{"location":{"location":"https://github.com/suryanshkushwaha/ip.git","repoName":"ip","organization":"suryanshkushwaha","domainName":"github"},"branch":"master","displayName":"suryanshkushwaha/ip[master]","outputFolderName":"suryanshkushwaha_ip_master"},{"location":{"location":"https://github.com/JasonRay168/ip.git","repoName":"ip","organization":"JasonRay168","domainName":"github"},"branch":"master","displayName":"JasonRay168/ip[master]","outputFolderName":"JasonRay168_ip_master"},{"location":{"location":"https://github.com/jovkusuma/ip.git","repoName":"ip","organization":"jovkusuma","domainName":"github"},"branch":"master","displayName":"jovkusuma/ip[master]","outputFolderName":"jovkusuma_ip_master"},{"location":{"location":"https://github.com/Chrainx/ip.git","repoName":"ip","organization":"Chrainx","domainName":"github"},"branch":"master","displayName":"Chrainx/ip[master]","outputFolderName":"Chrainx_ip_master"},{"location":{"location":"https://github.com/Daphne789/ip.git","repoName":"ip","organization":"Daphne789","domainName":"github"},"branch":"master","displayName":"Daphne789/ip[master]","outputFolderName":"Daphne789_ip_master"},{"location":{"location":"https://github.com/ChuanXinNg/ip.git","repoName":"ip","organization":"ChuanXinNg","domainName":"github"},"branch":"master","displayName":"ChuanXinNg/ip[master]","outputFolderName":"ChuanXinNg_ip_master"},{"location":{"location":"https://github.com/LHeng1/ip.git","repoName":"ip","organization":"LHeng1","domainName":"github"},"branch":"master","displayName":"LHeng1/ip[master]","outputFolderName":"LHeng1_ip_master"},{"location":{"location":"https://github.com/wr1159/ip.git","repoName":"ip","organization":"wr1159","domainName":"github"},"branch":"master","displayName":"wr1159/ip[master]","outputFolderName":"wr1159_ip_master"},{"location":{"location":"https://github.com/wjacobw/ip.git","repoName":"ip","organization":"wjacobw","domainName":"github"},"branch":"master","displayName":"wjacobw/ip[master]","outputFolderName":"wjacobw_ip_master"},{"location":{"location":"https://github.com/tiongjjyi/ip.git","repoName":"ip","organization":"tiongjjyi","domainName":"github"},"branch":"master","displayName":"tiongjjyi/ip[master]","outputFolderName":"tiongjjyi_ip_master"},{"location":{"location":"https://github.com/longnguyentan/ip.git","repoName":"ip","organization":"longnguyentan","domainName":"github"},"branch":"master","displayName":"longnguyentan/ip[master]","outputFolderName":"longnguyentan_ip_master"},{"location":{"location":"https://github.com/proto-aiken-13/ip.git","repoName":"ip","organization":"proto-aiken-13","domainName":"github"},"branch":"master","displayName":"proto-aiken-13/ip[master]","outputFolderName":"proto-aiken-13_ip_master"},{"location":{"location":"https://github.com/junnengsoo/ip.git","repoName":"ip","organization":"junnengsoo","domainName":"github"},"branch":"master","displayName":"junnengsoo/ip[master]","outputFolderName":"junnengsoo_ip_master"},{"location":{"location":"https://github.com/yezkez10/ip.git","repoName":"ip","organization":"yezkez10","domainName":"github"},"branch":"master","displayName":"yezkez10/ip[master]","outputFolderName":"yezkez10_ip_master"},{"location":{"location":"https://github.com/jamesebond/ip.git","repoName":"ip","organization":"jamesebond","domainName":"github"},"branch":"master","displayName":"jamesebond/ip[master]","outputFolderName":"jamesebond_ip_master"},{"location":{"location":"https://github.com/alyssaongyx/ip.git","repoName":"ip","organization":"alyssaongyx","domainName":"github"},"branch":"master","displayName":"alyssaongyx/ip[master]","outputFolderName":"alyssaongyx_ip_master"},{"location":{"location":"https://github.com/Carlintyj/ip.git","repoName":"ip","organization":"Carlintyj","domainName":"github"},"branch":"master","displayName":"Carlintyj/ip[master]","outputFolderName":"Carlintyj_ip_master"},{"location":{"location":"https://github.com/ruth-lim/ip.git","repoName":"ip","organization":"ruth-lim","domainName":"github"},"branch":"master","displayName":"ruth-lim/ip[master]","outputFolderName":"ruth-lim_ip_master"},{"location":{"location":"https://github.com/licongshen12/ip.git","repoName":"ip","organization":"licongshen12","domainName":"github"},"branch":"master","displayName":"licongshen12/ip[master]","outputFolderName":"licongshen12_ip_master"},{"location":{"location":"https://github.com/thaddeusong/ip.git","repoName":"ip","organization":"thaddeusong","domainName":"github"},"branch":"master","displayName":"thaddeusong/ip[master]","outputFolderName":"thaddeusong_ip_master"},{"location":{"location":"https://github.com/LordSaumya/ip.git","repoName":"ip","organization":"LordSaumya","domainName":"github"},"branch":"master","displayName":"LordSaumya/ip[master]","outputFolderName":"LordSaumya_ip_master"},{"location":{"location":"https://github.com/Kevin-Liusx/ip.git","repoName":"ip","organization":"Kevin-Liusx","domainName":"github"},"branch":"master","displayName":"Kevin-Liusx/ip[master]","outputFolderName":"Kevin-Liusx_ip_master"},{"location":{"location":"https://github.com/Ken-Lai/ip.git","repoName":"ip","organization":"Ken-Lai","domainName":"github"},"branch":"master","displayName":"Ken-Lai/ip[master]","outputFolderName":"Ken-Lai_ip_master"},{"location":{"location":"https://github.com/KumChaiYin/ip.git","repoName":"ip","organization":"KumChaiYin","domainName":"github"},"branch":"master","displayName":"KumChaiYin/ip[master]","outputFolderName":"KumChaiYin_ip_master"},{"location":{"location":"https://github.com/pzl111/ip.git","repoName":"ip","organization":"pzl111","domainName":"github"},"branch":"master","displayName":"pzl111/ip[master]","outputFolderName":"pzl111_ip_master"},{"location":{"location":"https://github.com/alientian/ip.git","repoName":"ip","organization":"alientian","domainName":"github"},"branch":"master","displayName":"alientian/ip[master]","outputFolderName":"alientian_ip_master"},{"location":{"location":"https://github.com/eyelessrhyme7/ip.git","repoName":"ip","organization":"eyelessrhyme7","domainName":"github"},"branch":"master","displayName":"eyelessrhyme7/ip[master]","outputFolderName":"eyelessrhyme7_ip_master"},{"location":{"location":"https://github.com/AprupKale/ip.git","repoName":"ip","organization":"AprupKale","domainName":"github"},"branch":"master","displayName":"AprupKale/ip[master]","outputFolderName":"AprupKale_ip_master"},{"location":{"location":"https://github.com/kimshitong/ip.git","repoName":"ip","organization":"kimshitong","domainName":"github"},"branch":"master","displayName":"kimshitong/ip[master]","outputFolderName":"kimshitong_ip_master"},{"location":{"location":"https://github.com/Bryan-Goh/ip.git","repoName":"ip","organization":"Bryan-Goh","domainName":"github"},"branch":"master","displayName":"Bryan-Goh/ip[master]","outputFolderName":"Bryan-Goh_ip_master"},{"location":{"location":"https://github.com/tiif/ip.git","repoName":"ip","organization":"tiif","domainName":"github"},"branch":"master","displayName":"tiif/ip[master]","outputFolderName":"tiif_ip_master"},{"location":{"location":"https://github.com/angkyakdifp/ip.git","repoName":"ip","organization":"angkyakdifp","domainName":"github"},"branch":"master","displayName":"angkyakdifp/ip[master]","outputFolderName":"angkyakdifp_ip_master"},{"location":{"location":"https://github.com/Chen-Kuei/ip.git","repoName":"ip","organization":"Chen-Kuei","domainName":"github"},"branch":"master","displayName":"Chen-Kuei/ip[master]","outputFolderName":"Chen-Kuei_ip_master"},{"location":{"location":"https://github.com/SinhaVedant/ip.git","repoName":"ip","organization":"SinhaVedant","domainName":"github"},"branch":"master","displayName":"SinhaVedant/ip[master]","outputFolderName":"SinhaVedant_ip_master"},{"location":{"location":"https://github.com/D-Limiter/ip.git","repoName":"ip","organization":"D-Limiter","domainName":"github"},"branch":"master","displayName":"D-Limiter/ip[master]","outputFolderName":"D-Limiter_ip_master"},{"location":{"location":"https://github.com/larrywang0701/ip.git","repoName":"ip","organization":"larrywang0701","domainName":"github"},"branch":"master","displayName":"larrywang0701/ip[master]","outputFolderName":"larrywang0701_ip_master"},{"location":{"location":"https://github.com/Song-Mengfei/ip.git","repoName":"ip","organization":"Song-Mengfei","domainName":"github"},"branch":"master","displayName":"Song-Mengfei/ip[master]","outputFolderName":"Song-Mengfei_ip_master"},{"location":{"location":"https://github.com/ChangruHenryQian/ip.git","repoName":"ip","organization":"ChangruHenryQian","domainName":"github"},"branch":"master","displayName":"ChangruHenryQian/ip[master]","outputFolderName":"ChangruHenryQian_ip_master"},{"location":{"location":"https://github.com/ketweeen/ip.git","repoName":"ip","organization":"ketweeen","domainName":"github"},"branch":"master","displayName":"ketweeen/ip[master]","outputFolderName":"ketweeen_ip_master"},{"location":{"location":"https://github.com/RSXIX/ip.git","repoName":"ip","organization":"RSXIX","domainName":"github"},"branch":"master","displayName":"RSXIX/ip[master]","outputFolderName":"RSXIX_ip_master"},{"location":{"location":"https://github.com/songgthu/ip.git","repoName":"ip","organization":"songgthu","domainName":"github"},"branch":"master","displayName":"songgthu/ip[master]","outputFolderName":"songgthu_ip_master"},{"location":{"location":"https://github.com/maj0-0/ip.git","repoName":"ip","organization":"maj0-0","domainName":"github"},"branch":"master","displayName":"maj0-0/ip[master]","outputFolderName":"maj0-0_ip_master"},{"location":{"location":"https://github.com/tiongMax/ip.git","repoName":"ip","organization":"tiongMax","domainName":"github"},"branch":"master","displayName":"tiongMax/ip[master]","outputFolderName":"tiongMax_ip_master"},{"location":{"location":"https://github.com/A1WAYSD/ip.git","repoName":"ip","organization":"A1WAYSD","domainName":"github"},"branch":"master","displayName":"A1WAYSD/ip[master]","outputFolderName":"A1WAYSD_ip_master"},{"location":{"location":"https://github.com/hjoneweek/ip.git","repoName":"ip","organization":"hjoneweek","domainName":"github"},"branch":"master","displayName":"hjoneweek/ip[master]","outputFolderName":"hjoneweek_ip_master"},{"location":{"location":"https://github.com/itsNatTan/ip.git","repoName":"ip","organization":"itsNatTan","domainName":"github"},"branch":"master","displayName":"itsNatTan/ip[master]","outputFolderName":"itsNatTan_ip_master"},{"location":{"location":"https://github.com/AustinHuang1203/ip.git","repoName":"ip","organization":"AustinHuang1203","domainName":"github"},"branch":"master","displayName":"AustinHuang1203/ip[master]","outputFolderName":"AustinHuang1203_ip_master"},{"location":{"location":"https://github.com/WangCheng0116/ip.git","repoName":"ip","organization":"WangCheng0116","domainName":"github"},"branch":"master","displayName":"WangCheng0116/ip[master]","outputFolderName":"WangCheng0116_ip_master"},{"location":{"location":"https://github.com/Tim-Siu/ip.git","repoName":"ip","organization":"Tim-Siu","domainName":"github"},"branch":"master","displayName":"Tim-Siu/ip[master]","outputFolderName":"Tim-Siu_ip_master"},{"location":{"location":"https://github.com/newway1814/ip.git","repoName":"ip","organization":"newway1814","domainName":"github"},"branch":"master","displayName":"newway1814/ip[master]","outputFolderName":"newway1814_ip_master"},{"location":{"location":"https://github.com/li-rongzhi/ip.git","repoName":"ip","organization":"li-rongzhi","domainName":"github"},"branch":"master","displayName":"li-rongzhi/ip[master]","outputFolderName":"li-rongzhi_ip_master"},{"location":{"location":"https://github.com/adhigop13/ip.git","repoName":"ip","organization":"adhigop13","domainName":"github"},"branch":"master","displayName":"adhigop13/ip[master]","outputFolderName":"adhigop13_ip_master"},{"location":{"location":"https://github.com/MadLamprey/ip.git","repoName":"ip","organization":"MadLamprey","domainName":"github"},"branch":"master","displayName":"MadLamprey/ip[master]","outputFolderName":"MadLamprey_ip_master"}],"errorSet":[{"repoName":"Propene-Dan/ip[master]","errorMessage":"Failed to clone from https://github.com/Propene-Dan/ip.git"}],"sinceDate":"2023-08-18","untilDate":"2023-09-01","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}} +{"repoSenseVersion":"3bad16bb3d","reportGeneratedTime":"Fri Sep 1 21:05:51 2023 UTC+08:00","reportGenerationTime":" 1 minute(s) 19.84 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 iP Code Dashboard","repos":[{"location":{"location":"https://github.com/remuslum/ip.git","repoName":"ip","organization":"remuslum","domainName":"github"},"branch":"master","displayName":"remuslum/ip[master]","outputFolderName":"remuslum_ip_master"},{"location":{"location":"https://github.com/elhy1999/ip.git","repoName":"ip","organization":"elhy1999","domainName":"github"},"branch":"master","displayName":"elhy1999/ip[master]","outputFolderName":"elhy1999_ip_master"},{"location":{"location":"https://github.com/XihuaZ/ip.git","repoName":"ip","organization":"XihuaZ","domainName":"github"},"branch":"master","displayName":"XihuaZ/ip[master]","outputFolderName":"XihuaZ_ip_master"},{"location":{"location":"https://github.com/bwangpj/ip.git","repoName":"ip","organization":"bwangpj","domainName":"github"},"branch":"master","displayName":"bwangpj/ip[master]","outputFolderName":"bwangpj_ip_master"},{"location":{"location":"https://github.com/shuenj/ip.git","repoName":"ip","organization":"shuenj","domainName":"github"},"branch":"master","displayName":"shuenj/ip[master]","outputFolderName":"shuenj_ip_master"},{"location":{"location":"https://github.com/SungMatt/ip.git","repoName":"ip","organization":"SungMatt","domainName":"github"},"branch":"master","displayName":"SungMatt/ip[master]","outputFolderName":"SungMatt_ip_master"},{"location":{"location":"https://github.com/junhonglow/ip.git","repoName":"ip","organization":"junhonglow","domainName":"github"},"branch":"master","displayName":"junhonglow/ip[master]","outputFolderName":"junhonglow_ip_master"},{"location":{"location":"https://github.com/xavierpok/ip.git","repoName":"ip","organization":"xavierpok","domainName":"github"},"branch":"master","displayName":"xavierpok/ip[master]","outputFolderName":"xavierpok_ip_master"},{"location":{"location":"https://github.com/marcellaantania/ip.git","repoName":"ip","organization":"marcellaantania","domainName":"github"},"branch":"master","displayName":"marcellaantania/ip[master]","outputFolderName":"marcellaantania_ip_master"},{"location":{"location":"https://github.com/felibunnyy/ip.git","repoName":"ip","organization":"felibunnyy","domainName":"github"},"branch":"master","displayName":"felibunnyy/ip[master]","outputFolderName":"felibunnyy_ip_master"},{"location":{"location":"https://github.com/starrylight99/ip.git","repoName":"ip","organization":"starrylight99","domainName":"github"},"branch":"master","displayName":"starrylight99/ip[master]","outputFolderName":"starrylight99_ip_master"},{"location":{"location":"https://github.com/leezhanpeng/ip.git","repoName":"ip","organization":"leezhanpeng","domainName":"github"},"branch":"master","displayName":"leezhanpeng/ip[master]","outputFolderName":"leezhanpeng_ip_master"},{"location":{"location":"https://github.com/sheryew/ip.git","repoName":"ip","organization":"sheryew","domainName":"github"},"branch":"master","displayName":"sheryew/ip[master]","outputFolderName":"sheryew_ip_master"},{"location":{"location":"https://github.com/lihongguang00/ip.git","repoName":"ip","organization":"lihongguang00","domainName":"github"},"branch":"master","displayName":"lihongguang00/ip[master]","outputFolderName":"lihongguang00_ip_master"},{"location":{"location":"https://github.com/nicrandomlee/ip.git","repoName":"ip","organization":"nicrandomlee","domainName":"github"},"branch":"master","displayName":"nicrandomlee/ip[master]","outputFolderName":"nicrandomlee_ip_master"},{"location":{"location":"https://github.com/LuahJunYang/ip.git","repoName":"ip","organization":"LuahJunYang","domainName":"github"},"branch":"master","displayName":"LuahJunYang/ip[master]","outputFolderName":"LuahJunYang_ip_master"},{"location":{"location":"https://github.com/s-peiran/ip.git","repoName":"ip","organization":"s-peiran","domainName":"github"},"branch":"master","displayName":"s-peiran/ip[master]","outputFolderName":"s-peiran_ip_master"},{"location":{"location":"https://github.com/aarontxz/ip.git","repoName":"ip","organization":"aarontxz","domainName":"github"},"branch":"master","displayName":"aarontxz/ip[master]","outputFolderName":"aarontxz_ip_master"},{"location":{"location":"https://github.com/chiayunrong/ip.git","repoName":"ip","organization":"chiayunrong","domainName":"github"},"branch":"master","displayName":"chiayunrong/ip[master]","outputFolderName":"chiayunrong_ip_master"},{"location":{"location":"https://github.com/nixonwidjaja/ip.git","repoName":"ip","organization":"nixonwidjaja","domainName":"github"},"branch":"master","displayName":"nixonwidjaja/ip[master]","outputFolderName":"nixonwidjaja_ip_master"},{"location":{"location":"https://github.com/imkwokyong/ip.git","repoName":"ip","organization":"imkwokyong","domainName":"github"},"branch":"master","displayName":"imkwokyong/ip[master]","outputFolderName":"imkwokyong_ip_master"},{"location":{"location":"https://github.com/mamayuan/ip.git","repoName":"ip","organization":"mamayuan","domainName":"github"},"branch":"master","displayName":"mamayuan/ip[master]","outputFolderName":"mamayuan_ip_master"},{"location":{"location":"https://github.com/geoffong11/ip.git","repoName":"ip","organization":"geoffong11","domainName":"github"},"branch":"master","displayName":"geoffong11/ip[master]","outputFolderName":"geoffong11_ip_master"},{"location":{"location":"https://github.com/vivienherq/ip.git","repoName":"ip","organization":"vivienherq","domainName":"github"},"branch":"master","displayName":"vivienherq/ip[master]","outputFolderName":"vivienherq_ip_master"},{"location":{"location":"https://github.com/johnnythesnake12/ip.git","repoName":"ip","organization":"johnnythesnake12","domainName":"github"},"branch":"master","displayName":"johnnythesnake12/ip[master]","outputFolderName":"johnnythesnake12_ip_master"},{"location":{"location":"https://github.com/Cloud7050/ip.git","repoName":"ip","organization":"Cloud7050","domainName":"github"},"branch":"master","displayName":"Cloud7050/ip[master]","outputFolderName":"Cloud7050_ip_master"},{"location":{"location":"https://github.com/jonyeokj/ip.git","repoName":"ip","organization":"jonyeokj","domainName":"github"},"branch":"master","displayName":"jonyeokj/ip[master]","outputFolderName":"jonyeokj_ip_master"},{"location":{"location":"https://github.com/lipwei1808/ip.git","repoName":"ip","organization":"lipwei1808","domainName":"github"},"branch":"master","displayName":"lipwei1808/ip[master]","outputFolderName":"lipwei1808_ip_master"},{"location":{"location":"https://github.com/zhanyang01/ip.git","repoName":"ip","organization":"zhanyang01","domainName":"github"},"branch":"master","displayName":"zhanyang01/ip[master]","outputFolderName":"zhanyang01_ip_master"},{"location":{"location":"https://github.com/EricXiong420/ip.git","repoName":"ip","organization":"EricXiong420","domainName":"github"},"branch":"master","displayName":"EricXiong420/ip[master]","outputFolderName":"EricXiong420_ip_master"},{"location":{"location":"https://github.com/sp4ce-cowboy/ip.git","repoName":"ip","organization":"sp4ce-cowboy","domainName":"github"},"branch":"master","displayName":"sp4ce-cowboy/ip[master]","outputFolderName":"sp4ce-cowboy_ip_master"},{"location":{"location":"https://github.com/ktzy0305/ip.git","repoName":"ip","organization":"ktzy0305","domainName":"github"},"branch":"master","displayName":"ktzy0305/ip[master]","outputFolderName":"ktzy0305_ip_master"},{"location":{"location":"https://github.com/dom-buri/ip.git","repoName":"ip","organization":"dom-buri","domainName":"github"},"branch":"master","displayName":"dom-buri/ip[master]","outputFolderName":"dom-buri_ip_master"},{"location":{"location":"https://github.com/rayshawntan/ip.git","repoName":"ip","organization":"rayshawntan","domainName":"github"},"branch":"master","displayName":"rayshawntan/ip[master]","outputFolderName":"rayshawntan_ip_master"},{"location":{"location":"https://github.com/Seonlo99/ip.git","repoName":"ip","organization":"Seonlo99","domainName":"github"},"branch":"master","displayName":"Seonlo99/ip[master]","outputFolderName":"Seonlo99_ip_master"},{"location":{"location":"https://github.com/woojiahao/ip.git","repoName":"ip","organization":"woojiahao","domainName":"github"},"branch":"master","displayName":"woojiahao/ip[master]","outputFolderName":"woojiahao_ip_master"},{"location":{"location":"https://github.com/Angelyxx/ip.git","repoName":"ip","organization":"Angelyxx","domainName":"github"},"branch":"master","displayName":"Angelyxx/ip[master]","outputFolderName":"Angelyxx_ip_master"},{"location":{"location":"https://github.com/jamz903/ip.git","repoName":"ip","organization":"jamz903","domainName":"github"},"branch":"master","displayName":"jamz903/ip[master]","outputFolderName":"jamz903_ip_master"},{"location":{"location":"https://github.com/Fallman2/ip.git","repoName":"ip","organization":"Fallman2","domainName":"github"},"branch":"master","displayName":"Fallman2/ip[master]","outputFolderName":"Fallman2_ip_master"},{"location":{"location":"https://github.com/jacobcuison/ip.git","repoName":"ip","organization":"jacobcuison","domainName":"github"},"branch":"master","displayName":"jacobcuison/ip[master]","outputFolderName":"jacobcuison_ip_master"},{"location":{"location":"https://github.com/kenvynKwek/ip.git","repoName":"ip","organization":"kenvynKwek","domainName":"github"},"branch":"master","displayName":"kenvynKwek/ip[master]","outputFolderName":"kenvynKwek_ip_master"},{"location":{"location":"https://github.com/kokrui/ip.git","repoName":"ip","organization":"kokrui","domainName":"github"},"branch":"master","displayName":"kokrui/ip[master]","outputFolderName":"kokrui_ip_master"},{"location":{"location":"https://github.com/ncmathan/ip.git","repoName":"ip","organization":"ncmathan","domainName":"github"},"branch":"master","displayName":"ncmathan/ip[master]","outputFolderName":"ncmathan_ip_master"},{"location":{"location":"https://github.com/xCOLOURx/ip.git","repoName":"ip","organization":"xCOLOURx","domainName":"github"},"branch":"master","displayName":"xCOLOURx/ip[master]","outputFolderName":"xCOLOURx_ip_master"},{"location":{"location":"https://github.com/zhyuhan/ip.git","repoName":"ip","organization":"zhyuhan","domainName":"github"},"branch":"master","displayName":"zhyuhan/ip[master]","outputFolderName":"zhyuhan_ip_master"},{"location":{"location":"https://github.com/ceilingFan456/ip.git","repoName":"ip","organization":"ceilingFan456","domainName":"github"},"branch":"master","displayName":"ceilingFan456/ip[master]","outputFolderName":"ceilingFan456_ip_master"},{"location":{"location":"https://github.com/chuababyy/ip.git","repoName":"ip","organization":"chuababyy","domainName":"github"},"branch":"master","displayName":"chuababyy/ip[master]","outputFolderName":"chuababyy_ip_master"},{"location":{"location":"https://github.com/rocketninja7/ip.git","repoName":"ip","organization":"rocketninja7","domainName":"github"},"branch":"master","displayName":"rocketninja7/ip[master]","outputFolderName":"rocketninja7_ip_master"},{"location":{"location":"https://github.com/marquestye/ip.git","repoName":"ip","organization":"marquestye","domainName":"github"},"branch":"master","displayName":"marquestye/ip[master]","outputFolderName":"marquestye_ip_master"},{"location":{"location":"https://github.com/ruiyangzh/ip.git","repoName":"ip","organization":"ruiyangzh","domainName":"github"},"branch":"master","displayName":"ruiyangzh/ip[master]","outputFolderName":"ruiyangzh_ip_master"},{"location":{"location":"https://github.com/derekjxtan/ip.git","repoName":"ip","organization":"derekjxtan","domainName":"github"},"branch":"master","displayName":"derekjxtan/ip[master]","outputFolderName":"derekjxtan_ip_master"},{"location":{"location":"https://github.com/mounilsankar/ip.git","repoName":"ip","organization":"mounilsankar","domainName":"github"},"branch":"master","displayName":"mounilsankar/ip[master]","outputFolderName":"mounilsankar_ip_master"},{"location":{"location":"https://github.com/wj331/ip.git","repoName":"ip","organization":"wj331","domainName":"github"},"branch":"master","displayName":"wj331/ip[master]","outputFolderName":"wj331_ip_master"},{"location":{"location":"https://github.com/JasonLCY-Temp/ip.git","repoName":"ip","organization":"JasonLCY-Temp","domainName":"github"},"branch":"master","displayName":"JasonLCY-Temp/ip[master]","outputFolderName":"JasonLCY-Temp_ip_master"},{"location":{"location":"https://github.com/lawruixi/ip.git","repoName":"ip","organization":"lawruixi","domainName":"github"},"branch":"master","displayName":"lawruixi/ip[master]","outputFolderName":"lawruixi_ip_master"},{"location":{"location":"https://github.com/wxwern/ip.git","repoName":"ip","organization":"wxwern","domainName":"github"},"branch":"master","displayName":"wxwern/ip[master]","outputFolderName":"wxwern_ip_master"},{"location":{"location":"https://github.com/zekone/ip.git","repoName":"ip","organization":"zekone","domainName":"github"},"branch":"master","displayName":"zekone/ip[master]","outputFolderName":"zekone_ip_master"},{"location":{"location":"https://github.com/wamps-jp/ip.git","repoName":"ip","organization":"wamps-jp","domainName":"github"},"branch":"master","displayName":"wamps-jp/ip[master]","outputFolderName":"wamps-jp_ip_master"},{"location":{"location":"https://github.com/saltedfishxx/ip.git","repoName":"ip","organization":"saltedfishxx","domainName":"github"},"branch":"master","displayName":"saltedfishxx/ip[master]","outputFolderName":"saltedfishxx_ip_master"},{"location":{"location":"https://github.com/winson8222/ip.git","repoName":"ip","organization":"winson8222","domainName":"github"},"branch":"master","displayName":"winson8222/ip[master]","outputFolderName":"winson8222_ip_master"},{"location":{"location":"https://github.com/brandon-nam/ip.git","repoName":"ip","organization":"brandon-nam","domainName":"github"},"branch":"master","displayName":"brandon-nam/ip[master]","outputFolderName":"brandon-nam_ip_master"},{"location":{"location":"https://github.com/p-xp/ip.git","repoName":"ip","organization":"p-xp","domainName":"github"},"branch":"master","displayName":"p-xp/ip[master]","outputFolderName":"p-xp_ip_master"},{"location":{"location":"https://github.com/WeeMingQing/ip.git","repoName":"ip","organization":"WeeMingQing","domainName":"github"},"branch":"master","displayName":"WeeMingQing/ip[master]","outputFolderName":"WeeMingQing_ip_master"},{"location":{"location":"https://github.com/ScarletBlanks/ip.git","repoName":"ip","organization":"ScarletBlanks","domainName":"github"},"branch":"master","displayName":"ScarletBlanks/ip[master]","outputFolderName":"ScarletBlanks_ip_master"},{"location":{"location":"https://github.com/seraphimstreets/ip.git","repoName":"ip","organization":"seraphimstreets","domainName":"github"},"branch":"master","displayName":"seraphimstreets/ip[master]","outputFolderName":"seraphimstreets_ip_master"},{"location":{"location":"https://github.com/devanshubisht/ip.git","repoName":"ip","organization":"devanshubisht","domainName":"github"},"branch":"master","displayName":"devanshubisht/ip[master]","outputFolderName":"devanshubisht_ip_master"},{"location":{"location":"https://github.com/Zjinnnn/ip.git","repoName":"ip","organization":"Zjinnnn","domainName":"github"},"branch":"master","displayName":"Zjinnnn/ip[master]","outputFolderName":"Zjinnnn_ip_master"},{"location":{"location":"https://github.com/brendanneojw/ip.git","repoName":"ip","organization":"brendanneojw","domainName":"github"},"branch":"master","displayName":"brendanneojw/ip[master]","outputFolderName":"brendanneojw_ip_master"},{"location":{"location":"https://github.com/aexolate/ip.git","repoName":"ip","organization":"aexolate","domainName":"github"},"branch":"master","displayName":"aexolate/ip[master]","outputFolderName":"aexolate_ip_master"},{"location":{"location":"https://github.com/techjay-c/ip.git","repoName":"ip","organization":"techjay-c","domainName":"github"},"branch":"master","displayName":"techjay-c/ip[master]","outputFolderName":"techjay-c_ip_master"},{"location":{"location":"https://github.com/SynapseProgramming/ip.git","repoName":"ip","organization":"SynapseProgramming","domainName":"github"},"branch":"master","displayName":"SynapseProgramming/ip[master]","outputFolderName":"SynapseProgramming_ip_master"},{"location":{"location":"https://github.com/TyrusLye/ip.git","repoName":"ip","organization":"TyrusLye","domainName":"github"},"branch":"master","displayName":"TyrusLye/ip[master]","outputFolderName":"TyrusLye_ip_master"},{"location":{"location":"https://github.com/RB9823/ip.git","repoName":"ip","organization":"RB9823","domainName":"github"},"branch":"master","displayName":"RB9823/ip[master]","outputFolderName":"RB9823_ip_master"},{"location":{"location":"https://github.com/jean-cq/ip.git","repoName":"ip","organization":"jean-cq","domainName":"github"},"branch":"master","displayName":"jean-cq/ip[master]","outputFolderName":"jean-cq_ip_master"},{"location":{"location":"https://github.com/Bearypop/ip.git","repoName":"ip","organization":"Bearypop","domainName":"github"},"branch":"master","displayName":"Bearypop/ip[master]","outputFolderName":"Bearypop_ip_master"},{"location":{"location":"https://github.com/andytoh1/ip.git","repoName":"ip","organization":"andytoh1","domainName":"github"},"branch":"master","displayName":"andytoh1/ip[master]","outputFolderName":"andytoh1_ip_master"},{"location":{"location":"https://github.com/siqirua/ip.git","repoName":"ip","organization":"siqirua","domainName":"github"},"branch":"master","displayName":"siqirua/ip[master]","outputFolderName":"siqirua_ip_master"},{"location":{"location":"https://github.com/amosting/ip.git","repoName":"ip","organization":"amosting","domainName":"github"},"branch":"master","displayName":"amosting/ip[master]","outputFolderName":"amosting_ip_master"},{"location":{"location":"https://github.com/JizhuoChen/ip.git","repoName":"ip","organization":"JizhuoChen","domainName":"github"},"branch":"master","displayName":"JizhuoChen/ip[master]","outputFolderName":"JizhuoChen_ip_master"},{"location":{"location":"https://github.com/Tang-Moyan/ip.git","repoName":"ip","organization":"Tang-Moyan","domainName":"github"},"branch":"master","displayName":"Tang-Moyan/ip[master]","outputFolderName":"Tang-Moyan_ip_master"},{"location":{"location":"https://github.com/aliciamichellew/ip.git","repoName":"ip","organization":"aliciamichellew","domainName":"github"},"branch":"master","displayName":"aliciamichellew/ip[master]","outputFolderName":"aliciamichellew_ip_master"},{"location":{"location":"https://github.com/KamiliArsyad/ip.git","repoName":"ip","organization":"KamiliArsyad","domainName":"github"},"branch":"master","displayName":"KamiliArsyad/ip[master]","outputFolderName":"KamiliArsyad_ip_master"},{"location":{"location":"https://github.com/dishenggg/ip.git","repoName":"ip","organization":"dishenggg","domainName":"github"},"branch":"master","displayName":"dishenggg/ip[master]","outputFolderName":"dishenggg_ip_master"},{"location":{"location":"https://github.com/Nixx162/ip.git","repoName":"ip","organization":"Nixx162","domainName":"github"},"branch":"master","displayName":"Nixx162/ip[master]","outputFolderName":"Nixx162_ip_master"},{"location":{"location":"https://github.com/Leb14/ip.git","repoName":"ip","organization":"Leb14","domainName":"github"},"branch":"master","displayName":"Leb14/ip[master]","outputFolderName":"Leb14_ip_master"},{"location":{"location":"https://github.com/Heran9/ip.git","repoName":"ip","organization":"Heran9","domainName":"github"},"branch":"master","displayName":"Heran9/ip[master]","outputFolderName":"Heran9_ip_master"},{"location":{"location":"https://github.com/FerdiHS/ip.git","repoName":"ip","organization":"FerdiHS","domainName":"github"},"branch":"master","displayName":"FerdiHS/ip[master]","outputFolderName":"FerdiHS_ip_master"},{"location":{"location":"https://github.com/StevenLiudw/ip.git","repoName":"ip","organization":"StevenLiudw","domainName":"github"},"branch":"master","displayName":"StevenLiudw/ip[master]","outputFolderName":"StevenLiudw_ip_master"},{"location":{"location":"https://github.com/InfiBeyond/ip.git","repoName":"ip","organization":"InfiBeyond","domainName":"github"},"branch":"master","displayName":"InfiBeyond/ip[master]","outputFolderName":"InfiBeyond_ip_master"},{"location":{"location":"https://github.com/s0ngyang/ip.git","repoName":"ip","organization":"s0ngyang","domainName":"github"},"branch":"master","displayName":"s0ngyang/ip[master]","outputFolderName":"s0ngyang_ip_master"},{"location":{"location":"https://github.com/ivyy-poison/ip.git","repoName":"ip","organization":"ivyy-poison","domainName":"github"},"branch":"master","displayName":"ivyy-poison/ip[master]","outputFolderName":"ivyy-poison_ip_master"},{"location":{"location":"https://github.com/yytan25/ip.git","repoName":"ip","organization":"yytan25","domainName":"github"},"branch":"master","displayName":"yytan25/ip[master]","outputFolderName":"yytan25_ip_master"},{"location":{"location":"https://github.com/tjch-o/ip.git","repoName":"ip","organization":"tjch-o","domainName":"github"},"branch":"master","displayName":"tjch-o/ip[master]","outputFolderName":"tjch-o_ip_master"},{"location":{"location":"https://github.com/jedkohjk/ip.git","repoName":"ip","organization":"jedkohjk","domainName":"github"},"branch":"master","displayName":"jedkohjk/ip[master]","outputFolderName":"jedkohjk_ip_master"},{"location":{"location":"https://github.com/raynertjx/ip.git","repoName":"ip","organization":"raynertjx","domainName":"github"},"branch":"master","displayName":"raynertjx/ip[master]","outputFolderName":"raynertjx_ip_master"},{"location":{"location":"https://github.com/cmHuang777/ip.git","repoName":"ip","organization":"cmHuang777","domainName":"github"},"branch":"master","displayName":"cmHuang777/ip[master]","outputFolderName":"cmHuang777_ip_master"},{"location":{"location":"https://github.com/wui-hong/ip.git","repoName":"ip","organization":"wui-hong","domainName":"github"},"branch":"master","displayName":"wui-hong/ip[master]","outputFolderName":"wui-hong_ip_master"},{"location":{"location":"https://github.com/PohSayKeong/ip.git","repoName":"ip","organization":"PohSayKeong","domainName":"github"},"branch":"master","displayName":"PohSayKeong/ip[master]","outputFolderName":"PohSayKeong_ip_master"},{"location":{"location":"https://github.com/lsyurea/ip.git","repoName":"ip","organization":"lsyurea","domainName":"github"},"branch":"master","displayName":"lsyurea/ip[master]","outputFolderName":"lsyurea_ip_master"},{"location":{"location":"https://github.com/ong-wei-hong/ip.git","repoName":"ip","organization":"ong-wei-hong","domainName":"github"},"branch":"master","displayName":"ong-wei-hong/ip[master]","outputFolderName":"ong-wei-hong_ip_master"},{"location":{"location":"https://github.com/asdfghjkxd/ip.git","repoName":"ip","organization":"asdfghjkxd","domainName":"github"},"branch":"master","displayName":"asdfghjkxd/ip[master]","outputFolderName":"asdfghjkxd_ip_master"},{"location":{"location":"https://github.com/GSgiansen/ip.git","repoName":"ip","organization":"GSgiansen","domainName":"github"},"branch":"master","displayName":"GSgiansen/ip[master]","outputFolderName":"GSgiansen_ip_master"},{"location":{"location":"https://github.com/syamfarh/ip.git","repoName":"ip","organization":"syamfarh","domainName":"github"},"branch":"master","displayName":"syamfarh/ip[master]","outputFolderName":"syamfarh_ip_master"},{"location":{"location":"https://github.com/PetrichorPrecipice/ip.git","repoName":"ip","organization":"PetrichorPrecipice","domainName":"github"},"branch":"master","displayName":"PetrichorPrecipice/ip[master]","outputFolderName":"PetrichorPrecipice_ip_master"},{"location":{"location":"https://github.com/ngeeyonglim/ip.git","repoName":"ip","organization":"ngeeyonglim","domainName":"github"},"branch":"master","displayName":"ngeeyonglim/ip[master]","outputFolderName":"ngeeyonglim_ip_master"},{"location":{"location":"https://github.com/ivanleekk/ip.git","repoName":"ip","organization":"ivanleekk","domainName":"github"},"branch":"master","displayName":"ivanleekk/ip[master]","outputFolderName":"ivanleekk_ip_master"},{"location":{"location":"https://github.com/ryanozx/ip.git","repoName":"ip","organization":"ryanozx","domainName":"github"},"branch":"master","displayName":"ryanozx/ip[master]","outputFolderName":"ryanozx_ip_master"},{"location":{"location":"https://github.com/Jweewee/ip.git","repoName":"ip","organization":"Jweewee","domainName":"github"},"branch":"master","displayName":"Jweewee/ip[master]","outputFolderName":"Jweewee_ip_master"},{"location":{"location":"https://github.com/supermii2/ip.git","repoName":"ip","organization":"supermii2","domainName":"github"},"branch":"master","displayName":"supermii2/ip[master]","outputFolderName":"supermii2_ip_master"},{"location":{"location":"https://github.com/bkjwjason/ip.git","repoName":"ip","organization":"bkjwjason","domainName":"github"},"branch":"master","displayName":"bkjwjason/ip[master]","outputFolderName":"bkjwjason_ip_master"},{"location":{"location":"https://github.com/Sasmik23/ip.git","repoName":"ip","organization":"Sasmik23","domainName":"github"},"branch":"master","displayName":"Sasmik23/ip[master]","outputFolderName":"Sasmik23_ip_master"},{"location":{"location":"https://github.com/nathanielcalimag/ip.git","repoName":"ip","organization":"nathanielcalimag","domainName":"github"},"branch":"master","displayName":"nathanielcalimag/ip[master]","outputFolderName":"nathanielcalimag_ip_master"},{"location":{"location":"https://github.com/AlagappanRa/ip.git","repoName":"ip","organization":"AlagappanRa","domainName":"github"},"branch":"master","displayName":"AlagappanRa/ip[master]","outputFolderName":"AlagappanRa_ip_master"},{"location":{"location":"https://github.com/McNaBry/ip.git","repoName":"ip","organization":"McNaBry","domainName":"github"},"branch":"master","displayName":"McNaBry/ip[master]","outputFolderName":"McNaBry_ip_master"},{"location":{"location":"https://github.com/phiphi-tan/ip.git","repoName":"ip","organization":"phiphi-tan","domainName":"github"},"branch":"master","displayName":"phiphi-tan/ip[master]","outputFolderName":"phiphi-tan_ip_master"},{"location":{"location":"https://github.com/LicongHuang/ip.git","repoName":"ip","organization":"LicongHuang","domainName":"github"},"branch":"master","displayName":"LicongHuang/ip[master]","outputFolderName":"LicongHuang_ip_master"},{"location":{"location":"https://github.com/tanshiyu1999/ip.git","repoName":"ip","organization":"tanshiyu1999","domainName":"github"},"branch":"master","displayName":"tanshiyu1999/ip[master]","outputFolderName":"tanshiyu1999_ip_master"},{"location":{"location":"https://github.com/raydenlim/ip.git","repoName":"ip","organization":"raydenlim","domainName":"github"},"branch":"master","displayName":"raydenlim/ip[master]","outputFolderName":"raydenlim_ip_master"},{"location":{"location":"https://github.com/jianyangg/ip.git","repoName":"ip","organization":"jianyangg","domainName":"github"},"branch":"master","displayName":"jianyangg/ip[master]","outputFolderName":"jianyangg_ip_master"},{"location":{"location":"https://github.com/rionshocker/ip.git","repoName":"ip","organization":"rionshocker","domainName":"github"},"branch":"master","displayName":"rionshocker/ip[master]","outputFolderName":"rionshocker_ip_master"},{"location":{"location":"https://github.com/conradsoon/ip.git","repoName":"ip","organization":"conradsoon","domainName":"github"},"branch":"master","displayName":"conradsoon/ip[master]","outputFolderName":"conradsoon_ip_master"},{"location":{"location":"https://github.com/Jonyxzx/ip.git","repoName":"ip","organization":"Jonyxzx","domainName":"github"},"branch":"master","displayName":"Jonyxzx/ip[master]","outputFolderName":"Jonyxzx_ip_master"},{"location":{"location":"https://github.com/euchangxian/ip.git","repoName":"ip","organization":"euchangxian","domainName":"github"},"branch":"master","displayName":"euchangxian/ip[master]","outputFolderName":"euchangxian_ip_master"},{"location":{"location":"https://github.com/teoks0199/ip.git","repoName":"ip","organization":"teoks0199","domainName":"github"},"branch":"master","displayName":"teoks0199/ip[master]","outputFolderName":"teoks0199_ip_master"},{"location":{"location":"https://github.com/HollaG/ip.git","repoName":"ip","organization":"HollaG","domainName":"github"},"branch":"master","displayName":"HollaG/ip[master]","outputFolderName":"HollaG_ip_master"},{"location":{"location":"https://github.com/leezhengjing/ip.git","repoName":"ip","organization":"leezhengjing","domainName":"github"},"branch":"master","displayName":"leezhengjing/ip[master]","outputFolderName":"leezhengjing_ip_master"},{"location":{"location":"https://github.com/timleow/ip.git","repoName":"ip","organization":"timleow","domainName":"github"},"branch":"master","displayName":"timleow/ip[master]","outputFolderName":"timleow_ip_master"},{"location":{"location":"https://github.com/jacksonyuan256/ip.git","repoName":"ip","organization":"jacksonyuan256","domainName":"github"},"branch":"master","displayName":"jacksonyuan256/ip[master]","outputFolderName":"jacksonyuan256_ip_master"},{"location":{"location":"https://github.com/victorlaiyeeteng/ip.git","repoName":"ip","organization":"victorlaiyeeteng","domainName":"github"},"branch":"master","displayName":"victorlaiyeeteng/ip[master]","outputFolderName":"victorlaiyeeteng_ip_master"},{"location":{"location":"https://github.com/prawnzyy/ip.git","repoName":"ip","organization":"prawnzyy","domainName":"github"},"branch":"master","displayName":"prawnzyy/ip[master]","outputFolderName":"prawnzyy_ip_master"},{"location":{"location":"https://github.com/ryanongwx/ip.git","repoName":"ip","organization":"ryanongwx","domainName":"github"},"branch":"master","displayName":"ryanongwx/ip[master]","outputFolderName":"ryanongwx_ip_master"},{"location":{"location":"https://github.com/tohpinren/ip.git","repoName":"ip","organization":"tohpinren","domainName":"github"},"branch":"master","displayName":"tohpinren/ip[master]","outputFolderName":"tohpinren_ip_master"},{"location":{"location":"https://github.com/DeltonCheng/ip.git","repoName":"ip","organization":"DeltonCheng","domainName":"github"},"branch":"master","displayName":"DeltonCheng/ip[master]","outputFolderName":"DeltonCheng_ip_master"},{"location":{"location":"https://github.com/leontan2/ip.git","repoName":"ip","organization":"leontan2","domainName":"github"},"branch":"master","displayName":"leontan2/ip[master]","outputFolderName":"leontan2_ip_master"},{"location":{"location":"https://github.com/alvinlim277/ip.git","repoName":"ip","organization":"alvinlim277","domainName":"github"},"branch":"master","displayName":"alvinlim277/ip[master]","outputFolderName":"alvinlim277_ip_master"},{"location":{"location":"https://github.com/lshaoqin/ip.git","repoName":"ip","organization":"lshaoqin","domainName":"github"},"branch":"master","displayName":"lshaoqin/ip[master]","outputFolderName":"lshaoqin_ip_master"},{"location":{"location":"https://github.com/ChongWeiJie29/ip.git","repoName":"ip","organization":"ChongWeiJie29","domainName":"github"},"branch":"master","displayName":"ChongWeiJie29/ip[master]","outputFolderName":"ChongWeiJie29_ip_master"},{"location":{"location":"https://github.com/zhonghan721/ip.git","repoName":"ip","organization":"zhonghan721","domainName":"github"},"branch":"master","displayName":"zhonghan721/ip[master]","outputFolderName":"zhonghan721_ip_master"},{"location":{"location":"https://github.com/teozhengyang/ip.git","repoName":"ip","organization":"teozhengyang","domainName":"github"},"branch":"master","displayName":"teozhengyang/ip[master]","outputFolderName":"teozhengyang_ip_master"},{"location":{"location":"https://github.com/garylow2001/ip.git","repoName":"ip","organization":"garylow2001","domainName":"github"},"branch":"master","displayName":"garylow2001/ip[master]","outputFolderName":"garylow2001_ip_master"},{"location":{"location":"https://github.com/Cleon2/ip.git","repoName":"ip","organization":"Cleon2","domainName":"github"},"branch":"master","displayName":"Cleon2/ip[master]","outputFolderName":"Cleon2_ip_master"},{"location":{"location":"https://github.com/limzhenwy/ip.git","repoName":"ip","organization":"limzhenwy","domainName":"github"},"branch":"master","displayName":"limzhenwy/ip[master]","outputFolderName":"limzhenwy_ip_master"},{"location":{"location":"https://github.com/ItsTYtan/ip.git","repoName":"ip","organization":"ItsTYtan","domainName":"github"},"branch":"master","displayName":"ItsTYtan/ip[master]","outputFolderName":"ItsTYtan_ip_master"},{"location":{"location":"https://github.com/owenyeo/ip.git","repoName":"ip","organization":"owenyeo","domainName":"github"},"branch":"master","displayName":"owenyeo/ip[master]","outputFolderName":"owenyeo_ip_master"},{"location":{"location":"https://github.com/jonasongg/ip.git","repoName":"ip","organization":"jonasongg","domainName":"github"},"branch":"master","displayName":"jonasongg/ip[master]","outputFolderName":"jonasongg_ip_master"},{"location":{"location":"https://github.com/Ruizhi2001/ip.git","repoName":"ip","organization":"Ruizhi2001","domainName":"github"},"branch":"master","displayName":"Ruizhi2001/ip[master]","outputFolderName":"Ruizhi2001_ip_master"},{"location":{"location":"https://github.com/Dioclei/ip.git","repoName":"ip","organization":"Dioclei","domainName":"github"},"branch":"master","displayName":"Dioclei/ip[master]","outputFolderName":"Dioclei_ip_master"},{"location":{"location":"https://github.com/bobscodedump/ip.git","repoName":"ip","organization":"bobscodedump","domainName":"github"},"branch":"master","displayName":"bobscodedump/ip[master]","outputFolderName":"bobscodedump_ip_master"},{"location":{"location":"https://github.com/andrefoo/ip.git","repoName":"ip","organization":"andrefoo","domainName":"github"},"branch":"master","displayName":"andrefoo/ip[master]","outputFolderName":"andrefoo_ip_master"},{"location":{"location":"https://github.com/Bombbird2001/ip.git","repoName":"ip","organization":"Bombbird2001","domainName":"github"},"branch":"master","displayName":"Bombbird2001/ip[master]","outputFolderName":"Bombbird2001_ip_master"},{"location":{"location":"https://github.com/chewjh1234/ip.git","repoName":"ip","organization":"chewjh1234","domainName":"github"},"branch":"master","displayName":"chewjh1234/ip[master]","outputFolderName":"chewjh1234_ip_master"},{"location":{"location":"https://github.com/dloh2236/ip.git","repoName":"ip","organization":"dloh2236","domainName":"github"},"branch":"master","displayName":"dloh2236/ip[master]","outputFolderName":"dloh2236_ip_master"},{"location":{"location":"https://github.com/chew01/ip.git","repoName":"ip","organization":"chew01","domainName":"github"},"branch":"master","displayName":"chew01/ip[master]","outputFolderName":"chew01_ip_master"},{"location":{"location":"https://github.com/trgao/ip.git","repoName":"ip","organization":"trgao","domainName":"github"},"branch":"master","displayName":"trgao/ip[master]","outputFolderName":"trgao_ip_master"},{"location":{"location":"https://github.com/richiehx/ip.git","repoName":"ip","organization":"richiehx","domainName":"github"},"branch":"master","displayName":"richiehx/ip[master]","outputFolderName":"richiehx_ip_master"},{"location":{"location":"https://github.com/LoMaply/ip.git","repoName":"ip","organization":"LoMaply","domainName":"github"},"branch":"master","displayName":"LoMaply/ip[master]","outputFolderName":"LoMaply_ip_master"},{"location":{"location":"https://github.com/Originalidk/ip.git","repoName":"ip","organization":"Originalidk","domainName":"github"},"branch":"master","displayName":"Originalidk/ip[master]","outputFolderName":"Originalidk_ip_master"},{"location":{"location":"https://github.com/kiatkat/ip.git","repoName":"ip","organization":"kiatkat","domainName":"github"},"branch":"master","displayName":"kiatkat/ip[master]","outputFolderName":"kiatkat_ip_master"},{"location":{"location":"https://github.com/juliusgambe/ip.git","repoName":"ip","organization":"juliusgambe","domainName":"github"},"branch":"master","displayName":"juliusgambe/ip[master]","outputFolderName":"juliusgambe_ip_master"},{"location":{"location":"https://github.com/jiakai-17/ip.git","repoName":"ip","organization":"jiakai-17","domainName":"github"},"branch":"master","displayName":"jiakai-17/ip[master]","outputFolderName":"jiakai-17_ip_master"},{"location":{"location":"https://github.com/nikele2001/ip.git","repoName":"ip","organization":"nikele2001","domainName":"github"},"branch":"master","displayName":"nikele2001/ip[master]","outputFolderName":"nikele2001_ip_master"},{"location":{"location":"https://github.com/jylow/ip.git","repoName":"ip","organization":"jylow","domainName":"github"},"branch":"master","displayName":"jylow/ip[master]","outputFolderName":"jylow_ip_master"},{"location":{"location":"https://github.com/jx124/ip.git","repoName":"ip","organization":"jx124","domainName":"github"},"branch":"master","displayName":"jx124/ip[master]","outputFolderName":"jx124_ip_master"},{"location":{"location":"https://github.com/Kb-Tay/ip.git","repoName":"ip","organization":"Kb-Tay","domainName":"github"},"branch":"master","displayName":"Kb-Tay/ip[master]","outputFolderName":"Kb-Tay_ip_master"},{"location":{"location":"https://github.com/jinyuan0425/ip.git","repoName":"ip","organization":"jinyuan0425","domainName":"github"},"branch":"master","displayName":"jinyuan0425/ip[master]","outputFolderName":"jinyuan0425_ip_master"},{"location":{"location":"https://github.com/darrentfy/ip.git","repoName":"ip","organization":"darrentfy","domainName":"github"},"branch":"master","displayName":"darrentfy/ip[master]","outputFolderName":"darrentfy_ip_master"},{"location":{"location":"https://github.com/HEEaZ/ip.git","repoName":"ip","organization":"HEEaZ","domainName":"github"},"branch":"master","displayName":"HEEaZ/ip[master]","outputFolderName":"HEEaZ_ip_master"},{"location":{"location":"https://github.com/ji-just-ji/ip.git","repoName":"ip","organization":"ji-just-ji","domainName":"github"},"branch":"master","displayName":"ji-just-ji/ip[master]","outputFolderName":"ji-just-ji_ip_master"},{"location":{"location":"https://github.com/simbayippy/ip.git","repoName":"ip","organization":"simbayippy","domainName":"github"},"branch":"master","displayName":"simbayippy/ip[master]","outputFolderName":"simbayippy_ip_master"},{"location":{"location":"https://github.com/teozern1/ip.git","repoName":"ip","organization":"teozern1","domainName":"github"},"branch":"master","displayName":"teozern1/ip[master]","outputFolderName":"teozern1_ip_master"},{"location":{"location":"https://github.com/brein62/ip.git","repoName":"ip","organization":"brein62","domainName":"github"},"branch":"master","displayName":"brein62/ip[master]","outputFolderName":"brein62_ip_master"},{"location":{"location":"https://github.com/awhb/ip.git","repoName":"ip","organization":"awhb","domainName":"github"},"branch":"master","displayName":"awhb/ip[master]","outputFolderName":"awhb_ip_master"},{"location":{"location":"https://github.com/Mahidharah/ip.git","repoName":"ip","organization":"Mahidharah","domainName":"github"},"branch":"master","displayName":"Mahidharah/ip[master]","outputFolderName":"Mahidharah_ip_master"},{"location":{"location":"https://github.com/timetraveller-123/ip.git","repoName":"ip","organization":"timetraveller-123","domainName":"github"},"branch":"master","displayName":"timetraveller-123/ip[master]","outputFolderName":"timetraveller-123_ip_master"},{"location":{"location":"https://github.com/ElginTZM/ip.git","repoName":"ip","organization":"ElginTZM","domainName":"github"},"branch":"master","displayName":"ElginTZM/ip[master]","outputFolderName":"ElginTZM_ip_master"},{"location":{"location":"https://github.com/ryamgoh/ip.git","repoName":"ip","organization":"ryamgoh","domainName":"github"},"branch":"master","displayName":"ryamgoh/ip[master]","outputFolderName":"ryamgoh_ip_master"},{"location":{"location":"https://github.com/Blizzeracz/ip.git","repoName":"ip","organization":"Blizzeracz","domainName":"github"},"branch":"master","displayName":"Blizzeracz/ip[master]","outputFolderName":"Blizzeracz_ip_master"},{"location":{"location":"https://github.com/kiwibang/ip.git","repoName":"ip","organization":"kiwibang","domainName":"github"},"branch":"master","displayName":"kiwibang/ip[master]","outputFolderName":"kiwibang_ip_master"},{"location":{"location":"https://github.com/redtailedfox/ip.git","repoName":"ip","organization":"redtailedfox","domainName":"github"},"branch":"master","displayName":"redtailedfox/ip[master]","outputFolderName":"redtailedfox_ip_master"},{"location":{"location":"https://github.com/lamchenghou/ip.git","repoName":"ip","organization":"lamchenghou","domainName":"github"},"branch":"master","displayName":"lamchenghou/ip[master]","outputFolderName":"lamchenghou_ip_master"},{"location":{"location":"https://github.com/gongg21/ip.git","repoName":"ip","organization":"gongg21","domainName":"github"},"branch":"master","displayName":"gongg21/ip[master]","outputFolderName":"gongg21_ip_master"},{"location":{"location":"https://github.com/CJ-Lee01/ip.git","repoName":"ip","organization":"CJ-Lee01","domainName":"github"},"branch":"master","displayName":"CJ-Lee01/ip[master]","outputFolderName":"CJ-Lee01_ip_master"},{"location":{"location":"https://github.com/Sheeepen/ip.git","repoName":"ip","organization":"Sheeepen","domainName":"github"},"branch":"master","displayName":"Sheeepen/ip[master]","outputFolderName":"Sheeepen_ip_master"},{"location":{"location":"https://github.com/AaronJT1/ip.git","repoName":"ip","organization":"AaronJT1","domainName":"github"},"branch":"master","displayName":"AaronJT1/ip[master]","outputFolderName":"AaronJT1_ip_master"},{"location":{"location":"https://github.com/Respirayson/ip.git","repoName":"ip","organization":"Respirayson","domainName":"github"},"branch":"master","displayName":"Respirayson/ip[master]","outputFolderName":"Respirayson_ip_master"},{"location":{"location":"https://github.com/dickongwd/ip.git","repoName":"ip","organization":"dickongwd","domainName":"github"},"branch":"master","displayName":"dickongwd/ip[master]","outputFolderName":"dickongwd_ip_master"},{"location":{"location":"https://github.com/nicholascher/ip.git","repoName":"ip","organization":"nicholascher","domainName":"github"},"branch":"master","displayName":"nicholascher/ip[master]","outputFolderName":"nicholascher_ip_master"},{"location":{"location":"https://github.com/et-irl/ip.git","repoName":"ip","organization":"et-irl","domainName":"github"},"branch":"master","displayName":"et-irl/ip[master]","outputFolderName":"et-irl_ip_master"},{"location":{"location":"https://github.com/aslam341/ip.git","repoName":"ip","organization":"aslam341","domainName":"github"},"branch":"master","displayName":"aslam341/ip[master]","outputFolderName":"aslam341_ip_master"},{"location":{"location":"https://github.com/seantehds/ip.git","repoName":"ip","organization":"seantehds","domainName":"github"},"branch":"master","displayName":"seantehds/ip[master]","outputFolderName":"seantehds_ip_master"},{"location":{"location":"https://github.com/jianrong7/ip.git","repoName":"ip","organization":"jianrong7","domainName":"github"},"branch":"master","displayName":"jianrong7/ip[master]","outputFolderName":"jianrong7_ip_master"},{"location":{"location":"https://github.com/TeeRenJing/ip.git","repoName":"ip","organization":"TeeRenJing","domainName":"github"},"branch":"master","displayName":"TeeRenJing/ip[master]","outputFolderName":"TeeRenJing_ip_master"},{"location":{"location":"https://github.com/RoeReRe/ip.git","repoName":"ip","organization":"RoeReRe","domainName":"github"},"branch":"master","displayName":"RoeReRe/ip[master]","outputFolderName":"RoeReRe_ip_master"},{"location":{"location":"https://github.com/zsh-eng/ip.git","repoName":"ip","organization":"zsh-eng","domainName":"github"},"branch":"master","displayName":"zsh-eng/ip[master]","outputFolderName":"zsh-eng_ip_master"},{"location":{"location":"https://github.com/seanpzk/ip.git","repoName":"ip","organization":"seanpzk","domainName":"github"},"branch":"master","displayName":"seanpzk/ip[master]","outputFolderName":"seanpzk_ip_master"},{"location":{"location":"https://github.com/quzhetao01/ip.git","repoName":"ip","organization":"quzhetao01","domainName":"github"},"branch":"master","displayName":"quzhetao01/ip[master]","outputFolderName":"quzhetao01_ip_master"},{"location":{"location":"https://github.com/joel-foo/ip.git","repoName":"ip","organization":"joel-foo","domainName":"github"},"branch":"master","displayName":"joel-foo/ip[master]","outputFolderName":"joel-foo_ip_master"},{"location":{"location":"https://github.com/markgcera/ip.git","repoName":"ip","organization":"markgcera","domainName":"github"},"branch":"master","displayName":"markgcera/ip[master]","outputFolderName":"markgcera_ip_master"},{"location":{"location":"https://github.com/dylkaw/ip.git","repoName":"ip","organization":"dylkaw","domainName":"github"},"branch":"master","displayName":"dylkaw/ip[master]","outputFolderName":"dylkaw_ip_master"},{"location":{"location":"https://github.com/SelwynAng/ip.git","repoName":"ip","organization":"SelwynAng","domainName":"github"},"branch":"master","displayName":"SelwynAng/ip[master]","outputFolderName":"SelwynAng_ip_master"},{"location":{"location":"https://github.com/jinyang628/ip.git","repoName":"ip","organization":"jinyang628","domainName":"github"},"branch":"master","displayName":"jinyang628/ip[master]","outputFolderName":"jinyang628_ip_master"},{"location":{"location":"https://github.com/matochichap/ip.git","repoName":"ip","organization":"matochichap","domainName":"github"},"branch":"master","displayName":"matochichap/ip[master]","outputFolderName":"matochichap_ip_master"},{"location":{"location":"https://github.com/sk2001git/ip.git","repoName":"ip","organization":"sk2001git","domainName":"github"},"branch":"master","displayName":"sk2001git/ip[master]","outputFolderName":"sk2001git_ip_master"},{"location":{"location":"https://github.com/jason-raiin/ip.git","repoName":"ip","organization":"jason-raiin","domainName":"github"},"branch":"master","displayName":"jason-raiin/ip[master]","outputFolderName":"jason-raiin_ip_master"},{"location":{"location":"https://github.com/Sebtey/ip.git","repoName":"ip","organization":"Sebtey","domainName":"github"},"branch":"master","displayName":"Sebtey/ip[master]","outputFolderName":"Sebtey_ip_master"},{"location":{"location":"https://github.com/Jweng88/ip.git","repoName":"ip","organization":"Jweng88","domainName":"github"},"branch":"master","displayName":"Jweng88/ip[master]","outputFolderName":"Jweng88_ip_master"},{"location":{"location":"https://github.com/billieboy7/ip.git","repoName":"ip","organization":"billieboy7","domainName":"github"},"branch":"master","displayName":"billieboy7/ip[master]","outputFolderName":"billieboy7_ip_master"},{"location":{"location":"https://github.com/ldinghan/ip.git","repoName":"ip","organization":"ldinghan","domainName":"github"},"branch":"master","displayName":"ldinghan/ip[master]","outputFolderName":"ldinghan_ip_master"},{"location":{"location":"https://github.com/anthonytamzil/ip.git","repoName":"ip","organization":"anthonytamzil","domainName":"github"},"branch":"master","displayName":"anthonytamzil/ip[master]","outputFolderName":"anthonytamzil_ip_master"},{"location":{"location":"https://github.com/ryantzr1/ip.git","repoName":"ip","organization":"ryantzr1","domainName":"github"},"branch":"master","displayName":"ryantzr1/ip[master]","outputFolderName":"ryantzr1_ip_master"},{"location":{"location":"https://github.com/shuyangk/ip.git","repoName":"ip","organization":"shuyangk","domainName":"github"},"branch":"master","displayName":"shuyangk/ip[master]","outputFolderName":"shuyangk_ip_master"},{"location":{"location":"https://github.com/seewhyjay/ip.git","repoName":"ip","organization":"seewhyjay","domainName":"github"},"branch":"master","displayName":"seewhyjay/ip[master]","outputFolderName":"seewhyjay_ip_master"},{"location":{"location":"https://github.com/waseemingly/ip.git","repoName":"ip","organization":"waseemingly","domainName":"github"},"branch":"master","displayName":"waseemingly/ip[master]","outputFolderName":"waseemingly_ip_master"},{"location":{"location":"https://github.com/DistractedCat/ip.git","repoName":"ip","organization":"DistractedCat","domainName":"github"},"branch":"master","displayName":"DistractedCat/ip[master]","outputFolderName":"DistractedCat_ip_master"},{"location":{"location":"https://github.com/geraldngjx/ip.git","repoName":"ip","organization":"geraldngjx","domainName":"github"},"branch":"master","displayName":"geraldngjx/ip[master]","outputFolderName":"geraldngjx_ip_master"},{"location":{"location":"https://github.com/tayian/ip.git","repoName":"ip","organization":"tayian","domainName":"github"},"branch":"master","displayName":"tayian/ip[master]","outputFolderName":"tayian_ip_master"},{"location":{"location":"https://github.com/AlfredBeNoel/ip.git","repoName":"ip","organization":"AlfredBeNoel","domainName":"github"},"branch":"master","displayName":"AlfredBeNoel/ip[master]","outputFolderName":"AlfredBeNoel_ip_master"},{"location":{"location":"https://github.com/Chen1x/ip.git","repoName":"ip","organization":"Chen1x","domainName":"github"},"branch":"master","displayName":"Chen1x/ip[master]","outputFolderName":"Chen1x_ip_master"},{"location":{"location":"https://github.com/juzzztinsoong/ip.git","repoName":"ip","organization":"juzzztinsoong","domainName":"github"},"branch":"master","displayName":"juzzztinsoong/ip[master]","outputFolderName":"juzzztinsoong_ip_master"},{"location":{"location":"https://github.com/lambraydon/ip.git","repoName":"ip","organization":"lambraydon","domainName":"github"},"branch":"master","displayName":"lambraydon/ip[master]","outputFolderName":"lambraydon_ip_master"},{"location":{"location":"https://github.com/lilozz2/ip.git","repoName":"ip","organization":"lilozz2","domainName":"github"},"branch":"master","displayName":"lilozz2/ip[master]","outputFolderName":"lilozz2_ip_master"},{"location":{"location":"https://github.com/tyouwei/ip.git","repoName":"ip","organization":"tyouwei","domainName":"github"},"branch":"master","displayName":"tyouwei/ip[master]","outputFolderName":"tyouwei_ip_master"},{"location":{"location":"https://github.com/Kailash201/ip.git","repoName":"ip","organization":"Kailash201","domainName":"github"},"branch":"master","displayName":"Kailash201/ip[master]","outputFolderName":"Kailash201_ip_master"},{"location":{"location":"https://github.com/tjingsheng/ip.git","repoName":"ip","organization":"tjingsheng","domainName":"github"},"branch":"master","displayName":"tjingsheng/ip[master]","outputFolderName":"tjingsheng_ip_master"},{"location":{"location":"https://github.com/pangyyen/ip.git","repoName":"ip","organization":"pangyyen","domainName":"github"},"branch":"master","displayName":"pangyyen/ip[master]","outputFolderName":"pangyyen_ip_master"},{"location":{"location":"https://github.com/Khaleelur-Rahman/ip.git","repoName":"ip","organization":"Khaleelur-Rahman","domainName":"github"},"branch":"master","displayName":"Khaleelur-Rahman/ip[master]","outputFolderName":"Khaleelur-Rahman_ip_master"},{"location":{"location":"https://github.com/erohsikivar/ip.git","repoName":"ip","organization":"erohsikivar","domainName":"github"},"branch":"master","displayName":"erohsikivar/ip[master]","outputFolderName":"erohsikivar_ip_master"},{"location":{"location":"https://github.com/shishirbychapur/ip.git","repoName":"ip","organization":"shishirbychapur","domainName":"github"},"branch":"master","displayName":"shishirbychapur/ip[master]","outputFolderName":"shishirbychapur_ip_master"},{"location":{"location":"https://github.com/Badatprogrammiing/ip.git","repoName":"ip","organization":"Badatprogrammiing","domainName":"github"},"branch":"master","displayName":"Badatprogrammiing/ip[master]","outputFolderName":"Badatprogrammiing_ip_master"},{"location":{"location":"https://github.com/ravern/ip.git","repoName":"ip","organization":"ravern","domainName":"github"},"branch":"master","displayName":"ravern/ip[master]","outputFolderName":"ravern_ip_master"},{"location":{"location":"https://github.com/B-enguin/ip.git","repoName":"ip","organization":"B-enguin","domainName":"github"},"branch":"master","displayName":"B-enguin/ip[master]","outputFolderName":"B-enguin_ip_master"},{"location":{"location":"https://github.com/AlyssaPng/ip.git","repoName":"ip","organization":"AlyssaPng","domainName":"github"},"branch":"master","displayName":"AlyssaPng/ip[master]","outputFolderName":"AlyssaPng_ip_master"},{"location":{"location":"https://github.com/flexibo/ip.git","repoName":"ip","organization":"flexibo","domainName":"github"},"branch":"master","displayName":"flexibo/ip[master]","outputFolderName":"flexibo_ip_master"},{"location":{"location":"https://github.com/lordidiot/ip.git","repoName":"ip","organization":"lordidiot","domainName":"github"},"branch":"master","displayName":"lordidiot/ip[master]","outputFolderName":"lordidiot_ip_master"},{"location":{"location":"https://github.com/vansh284/ip.git","repoName":"ip","organization":"vansh284","domainName":"github"},"branch":"master","displayName":"vansh284/ip[master]","outputFolderName":"vansh284_ip_master"},{"location":{"location":"https://github.com/samuelim01/ip.git","repoName":"ip","organization":"samuelim01","domainName":"github"},"branch":"master","displayName":"samuelim01/ip[master]","outputFolderName":"samuelim01_ip_master"},{"location":{"location":"https://github.com/WZWren/ip.git","repoName":"ip","organization":"WZWren","domainName":"github"},"branch":"master","displayName":"WZWren/ip[master]","outputFolderName":"WZWren_ip_master"},{"location":{"location":"https://github.com/cxo05/ip.git","repoName":"ip","organization":"cxo05","domainName":"github"},"branch":"master","displayName":"cxo05/ip[master]","outputFolderName":"cxo05_ip_master"},{"location":{"location":"https://github.com/sudarshan2401/ip.git","repoName":"ip","organization":"sudarshan2401","domainName":"github"},"branch":"master","displayName":"sudarshan2401/ip[master]","outputFolderName":"sudarshan2401_ip_master"},{"location":{"location":"https://github.com/jingyu987/ip.git","repoName":"ip","organization":"jingyu987","domainName":"github"},"branch":"master","displayName":"jingyu987/ip[master]","outputFolderName":"jingyu987_ip_master"},{"location":{"location":"https://github.com/H1410101/ip.git","repoName":"ip","organization":"H1410101","domainName":"github"},"branch":"master","displayName":"H1410101/ip[master]","outputFolderName":"H1410101_ip_master"},{"location":{"location":"https://github.com/MagnificentCreature/ip.git","repoName":"ip","organization":"MagnificentCreature","domainName":"github"},"branch":"master","displayName":"MagnificentCreature/ip[master]","outputFolderName":"MagnificentCreature_ip_master"},{"location":{"location":"https://github.com/shyanyong/ip.git","repoName":"ip","organization":"shyanyong","domainName":"github"},"branch":"master","displayName":"shyanyong/ip[master]","outputFolderName":"shyanyong_ip_master"},{"location":{"location":"https://github.com/peasantbird/ip.git","repoName":"ip","organization":"peasantbird","domainName":"github"},"branch":"master","displayName":"peasantbird/ip[master]","outputFolderName":"peasantbird_ip_master"},{"location":{"location":"https://github.com/tllshan/ip.git","repoName":"ip","organization":"tllshan","domainName":"github"},"branch":"master","displayName":"tllshan/ip[master]","outputFolderName":"tllshan_ip_master"},{"location":{"location":"https://github.com/sushiyade/ip.git","repoName":"ip","organization":"sushiyade","domainName":"github"},"branch":"master","displayName":"sushiyade/ip[master]","outputFolderName":"sushiyade_ip_master"},{"location":{"location":"https://github.com/iyioon/ip.git","repoName":"ip","organization":"iyioon","domainName":"github"},"branch":"master","displayName":"iyioon/ip[master]","outputFolderName":"iyioon_ip_master"},{"location":{"location":"https://github.com/shashahchk/ip.git","repoName":"ip","organization":"shashahchk","domainName":"github"},"branch":"master","displayName":"shashahchk/ip[master]","outputFolderName":"shashahchk_ip_master"},{"location":{"location":"https://github.com/Chandan8186/ip.git","repoName":"ip","organization":"Chandan8186","domainName":"github"},"branch":"master","displayName":"Chandan8186/ip[master]","outputFolderName":"Chandan8186_ip_master"},{"location":{"location":"https://github.com/wesho1107/ip.git","repoName":"ip","organization":"wesho1107","domainName":"github"},"branch":"master","displayName":"wesho1107/ip[master]","outputFolderName":"wesho1107_ip_master"},{"location":{"location":"https://github.com/tim-pipi/ip.git","repoName":"ip","organization":"tim-pipi","domainName":"github"},"branch":"master","displayName":"tim-pipi/ip[master]","outputFolderName":"tim-pipi_ip_master"},{"location":{"location":"https://github.com/emzm2023/ip.git","repoName":"ip","organization":"emzm2023","domainName":"github"},"branch":"master","displayName":"emzm2023/ip[master]","outputFolderName":"emzm2023_ip_master"},{"location":{"location":"https://github.com/dlathyun/ip.git","repoName":"ip","organization":"dlathyun","domainName":"github"},"branch":"master","displayName":"dlathyun/ip[master]","outputFolderName":"dlathyun_ip_master"},{"location":{"location":"https://github.com/tanboonkhong/ip.git","repoName":"ip","organization":"tanboonkhong","domainName":"github"},"branch":"master","displayName":"tanboonkhong/ip[master]","outputFolderName":"tanboonkhong_ip_master"},{"location":{"location":"https://github.com/joeng03/ip.git","repoName":"ip","organization":"joeng03","domainName":"github"},"branch":"master","displayName":"joeng03/ip[master]","outputFolderName":"joeng03_ip_master"},{"location":{"location":"https://github.com/VN-Hao/ip.git","repoName":"ip","organization":"VN-Hao","domainName":"github"},"branch":"master","displayName":"VN-Hao/ip[master]","outputFolderName":"VN-Hao_ip_master"},{"location":{"location":"https://github.com/NgChunMan/ip.git","repoName":"ip","organization":"NgChunMan","domainName":"github"},"branch":"master","displayName":"NgChunMan/ip[master]","outputFolderName":"NgChunMan_ip_master"},{"location":{"location":"https://github.com/TiwKangXu/ip.git","repoName":"ip","organization":"TiwKangXu","domainName":"github"},"branch":"master","displayName":"TiwKangXu/ip[master]","outputFolderName":"TiwKangXu_ip_master"},{"location":{"location":"https://github.com/josepholim/ip.git","repoName":"ip","organization":"josepholim","domainName":"github"},"branch":"master","displayName":"josepholim/ip[master]","outputFolderName":"josepholim_ip_master"},{"location":{"location":"https://github.com/dinde2004/ip.git","repoName":"ip","organization":"dinde2004","domainName":"github"},"branch":"master","displayName":"dinde2004/ip[master]","outputFolderName":"dinde2004_ip_master"},{"location":{"location":"https://github.com/yucongkoo/ip.git","repoName":"ip","organization":"yucongkoo","domainName":"github"},"branch":"master","displayName":"yucongkoo/ip[master]","outputFolderName":"yucongkoo_ip_master"},{"location":{"location":"https://github.com/TohLiYuan/ip.git","repoName":"ip","organization":"TohLiYuan","domainName":"github"},"branch":"master","displayName":"TohLiYuan/ip[master]","outputFolderName":"TohLiYuan_ip_master"},{"location":{"location":"https://github.com/NereusWB922/ip.git","repoName":"ip","organization":"NereusWB922","domainName":"github"},"branch":"master","displayName":"NereusWB922/ip[master]","outputFolderName":"NereusWB922_ip_master"},{"location":{"location":"https://github.com/ph-nathan/ip.git","repoName":"ip","organization":"ph-nathan","domainName":"github"},"branch":"master","displayName":"ph-nathan/ip[master]","outputFolderName":"ph-nathan_ip_master"},{"location":{"location":"https://github.com/antonTan96/ip.git","repoName":"ip","organization":"antonTan96","domainName":"github"},"branch":"master","displayName":"antonTan96/ip[master]","outputFolderName":"antonTan96_ip_master"},{"location":{"location":"https://github.com/WinstonLeonard/ip.git","repoName":"ip","organization":"WinstonLeonard","domainName":"github"},"branch":"master","displayName":"WinstonLeonard/ip[master]","outputFolderName":"WinstonLeonard_ip_master"},{"location":{"location":"https://github.com/TehOPanas/ip.git","repoName":"ip","organization":"TehOPanas","domainName":"github"},"branch":"master","displayName":"TehOPanas/ip[master]","outputFolderName":"TehOPanas_ip_master"},{"location":{"location":"https://github.com/marioalvaro/ip.git","repoName":"ip","organization":"marioalvaro","domainName":"github"},"branch":"master","displayName":"marioalvaro/ip[master]","outputFolderName":"marioalvaro_ip_master"},{"location":{"location":"https://github.com/LINCHENYU2030S/ip.git","repoName":"ip","organization":"LINCHENYU2030S","domainName":"github"},"branch":"master","displayName":"LINCHENYU2030S/ip[master]","outputFolderName":"LINCHENYU2030S_ip_master"},{"location":{"location":"https://github.com/LamJiuFong/ip.git","repoName":"ip","organization":"LamJiuFong","domainName":"github"},"branch":"master","displayName":"LamJiuFong/ip[master]","outputFolderName":"LamJiuFong_ip_master"},{"location":{"location":"https://github.com/AndrewJanong/ip.git","repoName":"ip","organization":"AndrewJanong","domainName":"github"},"branch":"master","displayName":"AndrewJanong/ip[master]","outputFolderName":"AndrewJanong_ip_master"},{"location":{"location":"https://github.com/songfangyl/ip.git","repoName":"ip","organization":"songfangyl","domainName":"github"},"branch":"master","displayName":"songfangyl/ip[master]","outputFolderName":"songfangyl_ip_master"},{"location":{"location":"https://github.com/AriellaCallista/ip.git","repoName":"ip","organization":"AriellaCallista","domainName":"github"},"branch":"master","displayName":"AriellaCallista/ip[master]","outputFolderName":"AriellaCallista_ip_master"},{"location":{"location":"https://github.com/KamJiaYue/ip.git","repoName":"ip","organization":"KamJiaYue","domainName":"github"},"branch":"master","displayName":"KamJiaYue/ip[master]","outputFolderName":"KamJiaYue_ip_master"},{"location":{"location":"https://github.com/feifeiraindrops/ip.git","repoName":"ip","organization":"feifeiraindrops","domainName":"github"},"branch":"master","displayName":"feifeiraindrops/ip[master]","outputFolderName":"feifeiraindrops_ip_master"},{"location":{"location":"https://github.com/czhiruo/ip.git","repoName":"ip","organization":"czhiruo","domainName":"github"},"branch":"master","displayName":"czhiruo/ip[master]","outputFolderName":"czhiruo_ip_master"},{"location":{"location":"https://github.com/butteredyakiimo/ip.git","repoName":"ip","organization":"butteredyakiimo","domainName":"github"},"branch":"master","displayName":"butteredyakiimo/ip[master]","outputFolderName":"butteredyakiimo_ip_master"},{"location":{"location":"https://github.com/RiyaMehta2211/ip.git","repoName":"ip","organization":"RiyaMehta2211","domainName":"github"},"branch":"master","displayName":"RiyaMehta2211/ip[master]","outputFolderName":"RiyaMehta2211_ip_master"},{"location":{"location":"https://github.com/beatricecst/ip.git","repoName":"ip","organization":"beatricecst","domainName":"github"},"branch":"master","displayName":"beatricecst/ip[master]","outputFolderName":"beatricecst_ip_master"},{"location":{"location":"https://github.com/maypfv/ip.git","repoName":"ip","organization":"maypfv","domainName":"github"},"branch":"master","displayName":"maypfv/ip[master]","outputFolderName":"maypfv_ip_master"},{"location":{"location":"https://github.com/pra-navi/ip.git","repoName":"ip","organization":"pra-navi","domainName":"github"},"branch":"master","displayName":"pra-navi/ip[master]","outputFolderName":"pra-navi_ip_master"},{"location":{"location":"https://github.com/xxiaoweii/ip.git","repoName":"ip","organization":"xxiaoweii","domainName":"github"},"branch":"master","displayName":"xxiaoweii/ip[master]","outputFolderName":"xxiaoweii_ip_master"},{"location":{"location":"https://github.com/qyaner/ip.git","repoName":"ip","organization":"qyaner","domainName":"github"},"branch":"master","displayName":"qyaner/ip[master]","outputFolderName":"qyaner_ip_master"},{"location":{"location":"https://github.com/qz1004/ip.git","repoName":"ip","organization":"qz1004","domainName":"github"},"branch":"master","displayName":"qz1004/ip[master]","outputFolderName":"qz1004_ip_master"},{"location":{"location":"https://github.com/miljyy/ip.git","repoName":"ip","organization":"miljyy","domainName":"github"},"branch":"master","displayName":"miljyy/ip[master]","outputFolderName":"miljyy_ip_master"},{"location":{"location":"https://github.com/yihfei/ip.git","repoName":"ip","organization":"yihfei","domainName":"github"},"branch":"master","displayName":"yihfei/ip[master]","outputFolderName":"yihfei_ip_master"},{"location":{"location":"https://github.com/Gabriel4357/ip.git","repoName":"ip","organization":"Gabriel4357","domainName":"github"},"branch":"master","displayName":"Gabriel4357/ip[master]","outputFolderName":"Gabriel4357_ip_master"},{"location":{"location":"https://github.com/saraozn/ip.git","repoName":"ip","organization":"saraozn","domainName":"github"},"branch":"master","displayName":"saraozn/ip[master]","outputFolderName":"saraozn_ip_master"},{"location":{"location":"https://github.com/JeremyYong128/ip.git","repoName":"ip","organization":"JeremyYong128","domainName":"github"},"branch":"master","displayName":"JeremyYong128/ip[master]","outputFolderName":"JeremyYong128_ip_master"},{"location":{"location":"https://github.com/samuelmui8/ip.git","repoName":"ip","organization":"samuelmui8","domainName":"github"},"branch":"master","displayName":"samuelmui8/ip[master]","outputFolderName":"samuelmui8_ip_master"},{"location":{"location":"https://github.com/elaineshijie/ip.git","repoName":"ip","organization":"elaineshijie","domainName":"github"},"branch":"master","displayName":"elaineshijie/ip[master]","outputFolderName":"elaineshijie_ip_master"},{"location":{"location":"https://github.com/zhengyup/ip.git","repoName":"ip","organization":"zhengyup","domainName":"github"},"branch":"master","displayName":"zhengyup/ip[master]","outputFolderName":"zhengyup_ip_master"},{"location":{"location":"https://github.com/ruishanteo/ip.git","repoName":"ip","organization":"ruishanteo","domainName":"github"},"branch":"master","displayName":"ruishanteo/ip[master]","outputFolderName":"ruishanteo_ip_master"},{"location":{"location":"https://github.com/lynnlow175/ip.git","repoName":"ip","organization":"lynnlow175","domainName":"github"},"branch":"master","displayName":"lynnlow175/ip[master]","outputFolderName":"lynnlow175_ip_master"},{"location":{"location":"https://github.com/kohkaijie/ip.git","repoName":"ip","organization":"kohkaijie","domainName":"github"},"branch":"master","displayName":"kohkaijie/ip[master]","outputFolderName":"kohkaijie_ip_master"},{"location":{"location":"https://github.com/CelestineTan03/ip.git","repoName":"ip","organization":"CelestineTan03","domainName":"github"},"branch":"master","displayName":"CelestineTan03/ip[master]","outputFolderName":"CelestineTan03_ip_master"},{"location":{"location":"https://github.com/PearlynnT/ip.git","repoName":"ip","organization":"PearlynnT","domainName":"github"},"branch":"master","displayName":"PearlynnT/ip[master]","outputFolderName":"PearlynnT_ip_master"},{"location":{"location":"https://github.com/Elijah5399/ip.git","repoName":"ip","organization":"Elijah5399","domainName":"github"},"branch":"master","displayName":"Elijah5399/ip[master]","outputFolderName":"Elijah5399_ip_master"},{"location":{"location":"https://github.com/nicleongyj/ip.git","repoName":"ip","organization":"nicleongyj","domainName":"github"},"branch":"master","displayName":"nicleongyj/ip[master]","outputFolderName":"nicleongyj_ip_master"},{"location":{"location":"https://github.com/AnnabelTing/ip.git","repoName":"ip","organization":"AnnabelTing","domainName":"github"},"branch":"master","displayName":"AnnabelTing/ip[master]","outputFolderName":"AnnabelTing_ip_master"},{"location":{"location":"https://github.com/jrchoo/ip.git","repoName":"ip","organization":"jrchoo","domainName":"github"},"branch":"master","displayName":"jrchoo/ip[master]","outputFolderName":"jrchoo_ip_master"},{"location":{"location":"https://github.com/wujy28/ip.git","repoName":"ip","organization":"wujy28","domainName":"github"},"branch":"master","displayName":"wujy28/ip[master]","outputFolderName":"wujy28_ip_master"},{"location":{"location":"https://github.com/Nauxe/ip.git","repoName":"ip","organization":"Nauxe","domainName":"github"},"branch":"master","displayName":"Nauxe/ip[master]","outputFolderName":"Nauxe_ip_master"},{"location":{"location":"https://github.com/yyyaohhh/ip.git","repoName":"ip","organization":"yyyaohhh","domainName":"github"},"branch":"master","displayName":"yyyaohhh/ip[master]","outputFolderName":"yyyaohhh_ip_master"},{"location":{"location":"https://github.com/xenosf/ip.git","repoName":"ip","organization":"xenosf","domainName":"github"},"branch":"master","displayName":"xenosf/ip[master]","outputFolderName":"xenosf_ip_master"},{"location":{"location":"https://github.com/WinSheng1/ip.git","repoName":"ip","organization":"WinSheng1","domainName":"github"},"branch":"master","displayName":"WinSheng1/ip[master]","outputFolderName":"WinSheng1_ip_master"},{"location":{"location":"https://github.com/nreHieW/ip.git","repoName":"ip","organization":"nreHieW","domainName":"github"},"branch":"master","displayName":"nreHieW/ip[master]","outputFolderName":"nreHieW_ip_master"},{"location":{"location":"https://github.com/peiran18/ip.git","repoName":"ip","organization":"peiran18","domainName":"github"},"branch":"master","displayName":"peiran18/ip[master]","outputFolderName":"peiran18_ip_master"},{"location":{"location":"https://github.com/cheeggered/ip.git","repoName":"ip","organization":"cheeggered","domainName":"github"},"branch":"master","displayName":"cheeggered/ip[master]","outputFolderName":"cheeggered_ip_master"},{"location":{"location":"https://github.com/GohTengFong/ip.git","repoName":"ip","organization":"GohTengFong","domainName":"github"},"branch":"master","displayName":"GohTengFong/ip[master]","outputFolderName":"GohTengFong_ip_master"},{"location":{"location":"https://github.com/jibtaf/ip.git","repoName":"ip","organization":"jibtaf","domainName":"github"},"branch":"master","displayName":"jibtaf/ip[master]","outputFolderName":"jibtaf_ip_master"},{"location":{"location":"https://github.com/bhnuka/ip.git","repoName":"ip","organization":"bhnuka","domainName":"github"},"branch":"master","displayName":"bhnuka/ip[master]","outputFolderName":"bhnuka_ip_master"},{"location":{"location":"https://github.com/laurenlim2112/ip.git","repoName":"ip","organization":"laurenlim2112","domainName":"github"},"branch":"master","displayName":"laurenlim2112/ip[master]","outputFolderName":"laurenlim2112_ip_master"},{"location":{"location":"https://github.com/howenc/ip.git","repoName":"ip","organization":"howenc","domainName":"github"},"branch":"master","displayName":"howenc/ip[master]","outputFolderName":"howenc_ip_master"},{"location":{"location":"https://github.com/Kokseng1/ip.git","repoName":"ip","organization":"Kokseng1","domainName":"github"},"branch":"master","displayName":"Kokseng1/ip[master]","outputFolderName":"Kokseng1_ip_master"},{"location":{"location":"https://github.com/yiwen101/ip.git","repoName":"ip","organization":"yiwen101","domainName":"github"},"branch":"master","displayName":"yiwen101/ip[master]","outputFolderName":"yiwen101_ip_master"},{"location":{"location":"https://github.com/Cikguseven/ip.git","repoName":"ip","organization":"Cikguseven","domainName":"github"},"branch":"master","displayName":"Cikguseven/ip[master]","outputFolderName":"Cikguseven_ip_master"},{"location":{"location":"https://github.com/javinchua/ip.git","repoName":"ip","organization":"javinchua","domainName":"github"},"branch":"master","displayName":"javinchua/ip[master]","outputFolderName":"javinchua_ip_master"},{"location":{"location":"https://github.com/frrrrry/ip.git","repoName":"ip","organization":"frrrrry","domainName":"github"},"branch":"master","displayName":"frrrrry/ip[master]","outputFolderName":"frrrrry_ip_master"},{"location":{"location":"https://github.com/YeoBohShin/ip.git","repoName":"ip","organization":"YeoBohShin","domainName":"github"},"branch":"master","displayName":"YeoBohShin/ip[master]","outputFolderName":"YeoBohShin_ip_master"},{"location":{"location":"https://github.com/yongning0310/ip.git","repoName":"ip","organization":"yongning0310","domainName":"github"},"branch":"master","displayName":"yongning0310/ip[master]","outputFolderName":"yongning0310_ip_master"},{"location":{"location":"https://github.com/SimWPEric/ip.git","repoName":"ip","organization":"SimWPEric","domainName":"github"},"branch":"master","displayName":"SimWPEric/ip[master]","outputFolderName":"SimWPEric_ip_master"},{"location":{"location":"https://github.com/sopa301/ip.git","repoName":"ip","organization":"sopa301","domainName":"github"},"branch":"master","displayName":"sopa301/ip[master]","outputFolderName":"sopa301_ip_master"},{"location":{"location":"https://github.com/nananakx-x/ip.git","repoName":"ip","organization":"nananakx-x","domainName":"github"},"branch":"master","displayName":"nananakx-x/ip[master]","outputFolderName":"nananakx-x_ip_master"},{"location":{"location":"https://github.com/LuoZYi/ip.git","repoName":"ip","organization":"LuoZYi","domainName":"github"},"branch":"master","displayName":"LuoZYi/ip[master]","outputFolderName":"LuoZYi_ip_master"},{"location":{"location":"https://github.com/LinWanLeii/ip.git","repoName":"ip","organization":"LinWanLeii","domainName":"github"},"branch":"master","displayName":"LinWanLeii/ip[master]","outputFolderName":"LinWanLeii_ip_master"},{"location":{"location":"https://github.com/mingyuanc/ip.git","repoName":"ip","organization":"mingyuanc","domainName":"github"},"branch":"master","displayName":"mingyuanc/ip[master]","outputFolderName":"mingyuanc_ip_master"},{"location":{"location":"https://github.com/chonguschonguschongus/ip.git","repoName":"ip","organization":"chonguschonguschongus","domainName":"github"},"branch":"master","displayName":"chonguschonguschongus/ip[master]","outputFolderName":"chonguschonguschongus_ip_master"},{"location":{"location":"https://github.com/yanghengtang/ip.git","repoName":"ip","organization":"yanghengtang","domainName":"github"},"branch":"master","displayName":"yanghengtang/ip[master]","outputFolderName":"yanghengtang_ip_master"},{"location":{"location":"https://github.com/victorpengmx/ip.git","repoName":"ip","organization":"victorpengmx","domainName":"github"},"branch":"master","displayName":"victorpengmx/ip[master]","outputFolderName":"victorpengmx_ip_master"},{"location":{"location":"https://github.com/kanna-1/ip.git","repoName":"ip","organization":"kanna-1","domainName":"github"},"branch":"master","displayName":"kanna-1/ip[master]","outputFolderName":"kanna-1_ip_master"},{"location":{"location":"https://github.com/ncduy0303/ip.git","repoName":"ip","organization":"ncduy0303","domainName":"github"},"branch":"master","displayName":"ncduy0303/ip[master]","outputFolderName":"ncduy0303_ip_master"},{"location":{"location":"https://github.com/jannnice/ip.git","repoName":"ip","organization":"jannnice","domainName":"github"},"branch":"master","displayName":"jannnice/ip[master]","outputFolderName":"jannnice_ip_master"},{"location":{"location":"https://github.com/itssisi/ip.git","repoName":"ip","organization":"itssisi","domainName":"github"},"branch":"master","displayName":"itssisi/ip[master]","outputFolderName":"itssisi_ip_master"},{"location":{"location":"https://github.com/freddychenyouren2/ip.git","repoName":"ip","organization":"freddychenyouren2","domainName":"github"},"branch":"master","displayName":"freddychenyouren2/ip[master]","outputFolderName":"freddychenyouren2_ip_master"},{"location":{"location":"https://github.com/Vanessamae23/ip.git","repoName":"ip","organization":"Vanessamae23","domainName":"github"},"branch":"master","displayName":"Vanessamae23/ip[master]","outputFolderName":"Vanessamae23_ip_master"},{"location":{"location":"https://github.com/cbj252/ip.git","repoName":"ip","organization":"cbj252","domainName":"github"},"branch":"master","displayName":"cbj252/ip[master]","outputFolderName":"cbj252_ip_master"},{"location":{"location":"https://github.com/freshcabbage123/ip.git","repoName":"ip","organization":"freshcabbage123","domainName":"github"},"branch":"master","displayName":"freshcabbage123/ip[master]","outputFolderName":"freshcabbage123_ip_master"},{"location":{"location":"https://github.com/thienmy0/ip.git","repoName":"ip","organization":"thienmy0","domainName":"github"},"branch":"master","displayName":"thienmy0/ip[master]","outputFolderName":"thienmy0_ip_master"},{"location":{"location":"https://github.com/glenngnng/ip.git","repoName":"ip","organization":"glenngnng","domainName":"github"},"branch":"master","displayName":"glenngnng/ip[master]","outputFolderName":"glenngnng_ip_master"},{"location":{"location":"https://github.com/Darren159/ip.git","repoName":"ip","organization":"Darren159","domainName":"github"},"branch":"master","displayName":"Darren159/ip[master]","outputFolderName":"Darren159_ip_master"},{"location":{"location":"https://github.com/J-hta-n/ip.git","repoName":"ip","organization":"J-hta-n","domainName":"github"},"branch":"master","displayName":"J-hta-n/ip[master]","outputFolderName":"J-hta-n_ip_master"},{"location":{"location":"https://github.com/evanyan13/ip.git","repoName":"ip","organization":"evanyan13","domainName":"github"},"branch":"master","displayName":"evanyan13/ip[master]","outputFolderName":"evanyan13_ip_master"},{"location":{"location":"https://github.com/tanveersingh10/ip.git","repoName":"ip","organization":"tanveersingh10","domainName":"github"},"branch":"master","displayName":"tanveersingh10/ip[master]","outputFolderName":"tanveersingh10_ip_master"},{"location":{"location":"https://github.com/neyapraveen/ip.git","repoName":"ip","organization":"neyapraveen","domainName":"github"},"branch":"master","displayName":"neyapraveen/ip[master]","outputFolderName":"neyapraveen_ip_master"},{"location":{"location":"https://github.com/weeweh/ip.git","repoName":"ip","organization":"weeweh","domainName":"github"},"branch":"master","displayName":"weeweh/ip[master]","outputFolderName":"weeweh_ip_master"},{"location":{"location":"https://github.com/HugeNoob/ip.git","repoName":"ip","organization":"HugeNoob","domainName":"github"},"branch":"master","displayName":"HugeNoob/ip[master]","outputFolderName":"HugeNoob_ip_master"},{"location":{"location":"https://github.com/wasjoe1/ip.git","repoName":"ip","organization":"wasjoe1","domainName":"github"},"branch":"master","displayName":"wasjoe1/ip[master]","outputFolderName":"wasjoe1_ip_master"},{"location":{"location":"https://github.com/s-kybound/ip.git","repoName":"ip","organization":"s-kybound","domainName":"github"},"branch":"master","displayName":"s-kybound/ip[master]","outputFolderName":"s-kybound_ip_master"},{"location":{"location":"https://github.com/Singa-pirate/ip.git","repoName":"ip","organization":"Singa-pirate","domainName":"github"},"branch":"master","displayName":"Singa-pirate/ip[master]","outputFolderName":"Singa-pirate_ip_master"},{"location":{"location":"https://github.com/wanghejin/ip.git","repoName":"ip","organization":"wanghejin","domainName":"github"},"branch":"master","displayName":"wanghejin/ip[master]","outputFolderName":"wanghejin_ip_master"},{"location":{"location":"https://github.com/yarnmengnus/ip.git","repoName":"ip","organization":"yarnmengnus","domainName":"github"},"branch":"master","displayName":"yarnmengnus/ip[master]","outputFolderName":"yarnmengnus_ip_master"},{"location":{"location":"https://github.com/Kurtyjlee/ip.git","repoName":"ip","organization":"Kurtyjlee","domainName":"github"},"branch":"master","displayName":"Kurtyjlee/ip[master]","outputFolderName":"Kurtyjlee_ip_master"},{"location":{"location":"https://github.com/jellywaiyan/ip.git","repoName":"ip","organization":"jellywaiyan","domainName":"github"},"branch":"master","displayName":"jellywaiyan/ip[master]","outputFolderName":"jellywaiyan_ip_master"},{"location":{"location":"https://github.com/ylyma/ip.git","repoName":"ip","organization":"ylyma","domainName":"github"},"branch":"master","displayName":"ylyma/ip[master]","outputFolderName":"ylyma_ip_master"},{"location":{"location":"https://github.com/revdrag/ip.git","repoName":"ip","organization":"revdrag","domainName":"github"},"branch":"master","displayName":"revdrag/ip[master]","outputFolderName":"revdrag_ip_master"},{"location":{"location":"https://github.com/vijay-shankaranand/ip.git","repoName":"ip","organization":"vijay-shankaranand","domainName":"github"},"branch":"master","displayName":"vijay-shankaranand/ip[master]","outputFolderName":"vijay-shankaranand_ip_master"},{"location":{"location":"https://github.com/lerxuann/ip.git","repoName":"ip","organization":"lerxuann","domainName":"github"},"branch":"master","displayName":"lerxuann/ip[master]","outputFolderName":"lerxuann_ip_master"},{"location":{"location":"https://github.com/yuxunn/ip.git","repoName":"ip","organization":"yuxunn","domainName":"github"},"branch":"master","displayName":"yuxunn/ip[master]","outputFolderName":"yuxunn_ip_master"},{"location":{"location":"https://github.com/zannloo/ip.git","repoName":"ip","organization":"zannloo","domainName":"github"},"branch":"master","displayName":"zannloo/ip[master]","outputFolderName":"zannloo_ip_master"},{"location":{"location":"https://github.com/AryanG01/ip.git","repoName":"ip","organization":"AryanG01","domainName":"github"},"branch":"master","displayName":"AryanG01/ip[master]","outputFolderName":"AryanG01_ip_master"},{"location":{"location":"https://github.com/oeggy03/ip.git","repoName":"ip","organization":"oeggy03","domainName":"github"},"branch":"master","displayName":"oeggy03/ip[master]","outputFolderName":"oeggy03_ip_master"},{"location":{"location":"https://github.com/jeffrey-jian/ip.git","repoName":"ip","organization":"jeffrey-jian","domainName":"github"},"branch":"master","displayName":"jeffrey-jian/ip[master]","outputFolderName":"jeffrey-jian_ip_master"},{"location":{"location":"https://github.com/nicholastng010601/ip.git","repoName":"ip","organization":"nicholastng010601","domainName":"github"},"branch":"master","displayName":"nicholastng010601/ip[master]","outputFolderName":"nicholastng010601_ip_master"},{"location":{"location":"https://github.com/Weiennn/ip.git","repoName":"ip","organization":"Weiennn","domainName":"github"},"branch":"master","displayName":"Weiennn/ip[master]","outputFolderName":"Weiennn_ip_master"},{"location":{"location":"https://github.com/tayruxin/ip.git","repoName":"ip","organization":"tayruxin","domainName":"github"},"branch":"master","displayName":"tayruxin/ip[master]","outputFolderName":"tayruxin_ip_master"},{"location":{"location":"https://github.com/xyT-T/ip.git","repoName":"ip","organization":"xyT-T","domainName":"github"},"branch":"master","displayName":"xyT-T/ip[master]","outputFolderName":"xyT-T_ip_master"},{"location":{"location":"https://github.com/lunaroddity/ip.git","repoName":"ip","organization":"lunaroddity","domainName":"github"},"branch":"master","displayName":"lunaroddity/ip[master]","outputFolderName":"lunaroddity_ip_master"},{"location":{"location":"https://github.com/nabonitasen/ip.git","repoName":"ip","organization":"nabonitasen","domainName":"github"},"branch":"master","displayName":"nabonitasen/ip[master]","outputFolderName":"nabonitasen_ip_master"},{"location":{"location":"https://github.com/inezkok/ip.git","repoName":"ip","organization":"inezkok","domainName":"github"},"branch":"master","displayName":"inezkok/ip[master]","outputFolderName":"inezkok_ip_master"},{"location":{"location":"https://github.com/nknguyenhc/ip.git","repoName":"ip","organization":"nknguyenhc","domainName":"github"},"branch":"master","displayName":"nknguyenhc/ip[master]","outputFolderName":"nknguyenhc_ip_master"},{"location":{"location":"https://github.com/keaganpzh/ip.git","repoName":"ip","organization":"keaganpzh","domainName":"github"},"branch":"master","displayName":"keaganpzh/ip[master]","outputFolderName":"keaganpzh_ip_master"},{"location":{"location":"https://github.com/lululwtv/ip.git","repoName":"ip","organization":"lululwtv","domainName":"github"},"branch":"master","displayName":"lululwtv/ip[master]","outputFolderName":"lululwtv_ip_master"},{"location":{"location":"https://github.com/hcs1203/ip.git","repoName":"ip","organization":"hcs1203","domainName":"github"},"branch":"master","displayName":"hcs1203/ip[master]","outputFolderName":"hcs1203_ip_master"},{"location":{"location":"https://github.com/migfoo02/ip.git","repoName":"ip","organization":"migfoo02","domainName":"github"},"branch":"master","displayName":"migfoo02/ip[master]","outputFolderName":"migfoo02_ip_master"},{"location":{"location":"https://github.com/papataco14/ip.git","repoName":"ip","organization":"papataco14","domainName":"github"},"branch":"master","displayName":"papataco14/ip[master]","outputFolderName":"papataco14_ip_master"},{"location":{"location":"https://github.com/coderhuang559/ip.git","repoName":"ip","organization":"coderhuang559","domainName":"github"},"branch":"master","displayName":"coderhuang559/ip[master]","outputFolderName":"coderhuang559_ip_master"},{"location":{"location":"https://github.com/craigtonlian/ip.git","repoName":"ip","organization":"craigtonlian","domainName":"github"},"branch":"master","displayName":"craigtonlian/ip[master]","outputFolderName":"craigtonlian_ip_master"},{"location":{"location":"https://github.com/adammangzijun/ip.git","repoName":"ip","organization":"adammangzijun","domainName":"github"},"branch":"master","displayName":"adammangzijun/ip[master]","outputFolderName":"adammangzijun_ip_master"},{"location":{"location":"https://github.com/AlainS87/ip.git","repoName":"ip","organization":"AlainS87","domainName":"github"},"branch":"master","displayName":"AlainS87/ip[master]","outputFolderName":"AlainS87_ip_master"},{"location":{"location":"https://github.com/tanyyyming/ip.git","repoName":"ip","organization":"tanyyyming","domainName":"github"},"branch":"master","displayName":"tanyyyming/ip[master]","outputFolderName":"tanyyyming_ip_master"},{"location":{"location":"https://github.com/Saezenn/ip.git","repoName":"ip","organization":"Saezenn","domainName":"github"},"branch":"master","displayName":"Saezenn/ip[master]","outputFolderName":"Saezenn_ip_master"},{"location":{"location":"https://github.com/kayabuttertoastt/ip.git","repoName":"ip","organization":"kayabuttertoastt","domainName":"github"},"branch":"master","displayName":"kayabuttertoastt/ip[master]","outputFolderName":"kayabuttertoastt_ip_master"},{"location":{"location":"https://github.com/limjunxian1/ip.git","repoName":"ip","organization":"limjunxian1","domainName":"github"},"branch":"master","displayName":"limjunxian1/ip[master]","outputFolderName":"limjunxian1_ip_master"},{"location":{"location":"https://github.com/andrechuakj/ip.git","repoName":"ip","organization":"andrechuakj","domainName":"github"},"branch":"master","displayName":"andrechuakj/ip[master]","outputFolderName":"andrechuakj_ip_master"},{"location":{"location":"https://github.com/kwangthiag/ip.git","repoName":"ip","organization":"kwangthiag","domainName":"github"},"branch":"master","displayName":"kwangthiag/ip[master]","outputFolderName":"kwangthiag_ip_master"},{"location":{"location":"https://github.com/ricketytoc/ip.git","repoName":"ip","organization":"ricketytoc","domainName":"github"},"branch":"master","displayName":"ricketytoc/ip[master]","outputFolderName":"ricketytoc_ip_master"},{"location":{"location":"https://github.com/applepiofmyeye/ip.git","repoName":"ip","organization":"applepiofmyeye","domainName":"github"},"branch":"master","displayName":"applepiofmyeye/ip[master]","outputFolderName":"applepiofmyeye_ip_master"},{"location":{"location":"https://github.com/nubnubyas/ip.git","repoName":"ip","organization":"nubnubyas","domainName":"github"},"branch":"master","displayName":"nubnubyas/ip[master]","outputFolderName":"nubnubyas_ip_master"},{"location":{"location":"https://github.com/WeeeHung/ip.git","repoName":"ip","organization":"WeeeHung","domainName":"github"},"branch":"master","displayName":"WeeeHung/ip[master]","outputFolderName":"WeeeHung_ip_master"},{"location":{"location":"https://github.com/Eola-Z/ip.git","repoName":"ip","organization":"Eola-Z","domainName":"github"},"branch":"master","displayName":"Eola-Z/ip[master]","outputFolderName":"Eola-Z_ip_master"},{"location":{"location":"https://github.com/jordankanghm/ip.git","repoName":"ip","organization":"jordankanghm","domainName":"github"},"branch":"master","displayName":"jordankanghm/ip[master]","outputFolderName":"jordankanghm_ip_master"},{"location":{"location":"https://github.com/zacwong2151/ip.git","repoName":"ip","organization":"zacwong2151","domainName":"github"},"branch":"master","displayName":"zacwong2151/ip[master]","outputFolderName":"zacwong2151_ip_master"},{"location":{"location":"https://github.com/m1oojv/ip.git","repoName":"ip","organization":"m1oojv","domainName":"github"},"branch":"master","displayName":"m1oojv/ip[master]","outputFolderName":"m1oojv_ip_master"},{"location":{"location":"https://github.com/JCSnap/ip.git","repoName":"ip","organization":"JCSnap","domainName":"github"},"branch":"master","displayName":"JCSnap/ip[master]","outputFolderName":"JCSnap_ip_master"},{"location":{"location":"https://github.com/Nid21cs/ip.git","repoName":"ip","organization":"Nid21cs","domainName":"github"},"branch":"master","displayName":"Nid21cs/ip[master]","outputFolderName":"Nid21cs_ip_master"},{"location":{"location":"https://github.com/mfjkri/ip.git","repoName":"ip","organization":"mfjkri","domainName":"github"},"branch":"master","displayName":"mfjkri/ip[master]","outputFolderName":"mfjkri_ip_master"},{"location":{"location":"https://github.com/Choonyan02/ip.git","repoName":"ip","organization":"Choonyan02","domainName":"github"},"branch":"master","displayName":"Choonyan02/ip[master]","outputFolderName":"Choonyan02_ip_master"},{"location":{"location":"https://github.com/rayyan35p/ip.git","repoName":"ip","organization":"rayyan35p","domainName":"github"},"branch":"master","displayName":"rayyan35p/ip[master]","outputFolderName":"rayyan35p_ip_master"},{"location":{"location":"https://github.com/dhruvir29/ip.git","repoName":"ip","organization":"dhruvir29","domainName":"github"},"branch":"master","displayName":"dhruvir29/ip[master]","outputFolderName":"dhruvir29_ip_master"},{"location":{"location":"https://github.com/Mohammed-Faizzzz/ip.git","repoName":"ip","organization":"Mohammed-Faizzzz","domainName":"github"},"branch":"master","displayName":"Mohammed-Faizzzz/ip[master]","outputFolderName":"Mohammed-Faizzzz_ip_master"},{"location":{"location":"https://github.com/ruo-x/ip.git","repoName":"ip","organization":"ruo-x","domainName":"github"},"branch":"master","displayName":"ruo-x/ip[master]","outputFolderName":"ruo-x_ip_master"},{"location":{"location":"https://github.com/DonovanJJ/ip.git","repoName":"ip","organization":"DonovanJJ","domainName":"github"},"branch":"master","displayName":"DonovanJJ/ip[master]","outputFolderName":"DonovanJJ_ip_master"},{"location":{"location":"https://github.com/kristayeo/ip.git","repoName":"ip","organization":"kristayeo","domainName":"github"},"branch":"master","displayName":"kristayeo/ip[master]","outputFolderName":"kristayeo_ip_master"},{"location":{"location":"https://github.com/ZD292/ip.git","repoName":"ip","organization":"ZD292","domainName":"github"},"branch":"master","displayName":"ZD292/ip[master]","outputFolderName":"ZD292_ip_master"},{"location":{"location":"https://github.com/jingjie88/ip.git","repoName":"ip","organization":"jingjie88","domainName":"github"},"branch":"master","displayName":"jingjie88/ip[master]","outputFolderName":"jingjie88_ip_master"},{"location":{"location":"https://github.com/iantsaii/ip.git","repoName":"ip","organization":"iantsaii","domainName":"github"},"branch":"master","displayName":"iantsaii/ip[master]","outputFolderName":"iantsaii_ip_master"},{"location":{"location":"https://github.com/jingting1412/ip.git","repoName":"ip","organization":"jingting1412","domainName":"github"},"branch":"master","displayName":"jingting1412/ip[master]","outputFolderName":"jingting1412_ip_master"},{"location":{"location":"https://github.com/wnchan/ip.git","repoName":"ip","organization":"wnchan","domainName":"github"},"branch":"master","displayName":"wnchan/ip[master]","outputFolderName":"wnchan_ip_master"},{"location":{"location":"https://github.com/jack1e0/ip.git","repoName":"ip","organization":"jack1e0","domainName":"github"},"branch":"master","displayName":"jack1e0/ip[master]","outputFolderName":"jack1e0_ip_master"},{"location":{"location":"https://github.com/mingyu-wan/ip.git","repoName":"ip","organization":"mingyu-wan","domainName":"github"},"branch":"master","displayName":"mingyu-wan/ip[master]","outputFolderName":"mingyu-wan_ip_master"},{"location":{"location":"https://github.com/nicolengk/ip.git","repoName":"ip","organization":"nicolengk","domainName":"github"},"branch":"master","displayName":"nicolengk/ip[master]","outputFolderName":"nicolengk_ip_master"},{"location":{"location":"https://github.com/cyaoxuan/ip.git","repoName":"ip","organization":"cyaoxuan","domainName":"github"},"branch":"master","displayName":"cyaoxuan/ip[master]","outputFolderName":"cyaoxuan_ip_master"},{"location":{"location":"https://github.com/sunzihan23/ip.git","repoName":"ip","organization":"sunzihan23","domainName":"github"},"branch":"master","displayName":"sunzihan23/ip[master]","outputFolderName":"sunzihan23_ip_master"},{"location":{"location":"https://github.com/Goh-Li-Ting/ip.git","repoName":"ip","organization":"Goh-Li-Ting","domainName":"github"},"branch":"master","displayName":"Goh-Li-Ting/ip[master]","outputFolderName":"Goh-Li-Ting_ip_master"},{"location":{"location":"https://github.com/wjayee/ip.git","repoName":"ip","organization":"wjayee","domainName":"github"},"branch":"master","displayName":"wjayee/ip[master]","outputFolderName":"wjayee_ip_master"},{"location":{"location":"https://github.com/fuyiqiao/ip.git","repoName":"ip","organization":"fuyiqiao","domainName":"github"},"branch":"master","displayName":"fuyiqiao/ip[master]","outputFolderName":"fuyiqiao_ip_master"},{"location":{"location":"https://github.com/GlendaChong/ip.git","repoName":"ip","organization":"GlendaChong","domainName":"github"},"branch":"master","displayName":"GlendaChong/ip[master]","outputFolderName":"GlendaChong_ip_master"},{"location":{"location":"https://github.com/hyc17003/ip.git","repoName":"ip","organization":"hyc17003","domainName":"github"},"branch":"master","displayName":"hyc17003/ip[master]","outputFolderName":"hyc17003_ip_master"},{"location":{"location":"https://github.com/spatuly/ip.git","repoName":"ip","organization":"spatuly","domainName":"github"},"branch":"master","displayName":"spatuly/ip[master]","outputFolderName":"spatuly_ip_master"},{"location":{"location":"https://github.com/tanteckfang/ip.git","repoName":"ip","organization":"tanteckfang","domainName":"github"},"branch":"master","displayName":"tanteckfang/ip[master]","outputFolderName":"tanteckfang_ip_master"},{"location":{"location":"https://github.com/Clin-lyx/ip.git","repoName":"ip","organization":"Clin-lyx","domainName":"github"},"branch":"master","displayName":"Clin-lyx/ip[master]","outputFolderName":"Clin-lyx_ip_master"},{"location":{"location":"https://github.com/lyuanww/ip.git","repoName":"ip","organization":"lyuanww","domainName":"github"},"branch":"master","displayName":"lyuanww/ip[master]","outputFolderName":"lyuanww_ip_master"},{"location":{"location":"https://github.com/LimJH2002/ip.git","repoName":"ip","organization":"LimJH2002","domainName":"github"},"branch":"master","displayName":"LimJH2002/ip[master]","outputFolderName":"LimJH2002_ip_master"},{"location":{"location":"https://github.com/LWZ19/ip.git","repoName":"ip","organization":"LWZ19","domainName":"github"},"branch":"master","displayName":"LWZ19/ip[master]","outputFolderName":"LWZ19_ip_master"},{"location":{"location":"https://github.com/Gavino3o/ip.git","repoName":"ip","organization":"Gavino3o","domainName":"github"},"branch":"master","displayName":"Gavino3o/ip[master]","outputFolderName":"Gavino3o_ip_master"},{"location":{"location":"https://github.com/suryanshkushwaha/ip.git","repoName":"ip","organization":"suryanshkushwaha","domainName":"github"},"branch":"master","displayName":"suryanshkushwaha/ip[master]","outputFolderName":"suryanshkushwaha_ip_master"},{"location":{"location":"https://github.com/JasonRay168/ip.git","repoName":"ip","organization":"JasonRay168","domainName":"github"},"branch":"master","displayName":"JasonRay168/ip[master]","outputFolderName":"JasonRay168_ip_master"},{"location":{"location":"https://github.com/jovkusuma/ip.git","repoName":"ip","organization":"jovkusuma","domainName":"github"},"branch":"master","displayName":"jovkusuma/ip[master]","outputFolderName":"jovkusuma_ip_master"},{"location":{"location":"https://github.com/Chrainx/ip.git","repoName":"ip","organization":"Chrainx","domainName":"github"},"branch":"master","displayName":"Chrainx/ip[master]","outputFolderName":"Chrainx_ip_master"},{"location":{"location":"https://github.com/Daphne789/ip.git","repoName":"ip","organization":"Daphne789","domainName":"github"},"branch":"master","displayName":"Daphne789/ip[master]","outputFolderName":"Daphne789_ip_master"},{"location":{"location":"https://github.com/ChuanXinNg/ip.git","repoName":"ip","organization":"ChuanXinNg","domainName":"github"},"branch":"master","displayName":"ChuanXinNg/ip[master]","outputFolderName":"ChuanXinNg_ip_master"},{"location":{"location":"https://github.com/LHeng1/ip.git","repoName":"ip","organization":"LHeng1","domainName":"github"},"branch":"master","displayName":"LHeng1/ip[master]","outputFolderName":"LHeng1_ip_master"},{"location":{"location":"https://github.com/wr1159/ip.git","repoName":"ip","organization":"wr1159","domainName":"github"},"branch":"master","displayName":"wr1159/ip[master]","outputFolderName":"wr1159_ip_master"},{"location":{"location":"https://github.com/wjacobw/ip.git","repoName":"ip","organization":"wjacobw","domainName":"github"},"branch":"master","displayName":"wjacobw/ip[master]","outputFolderName":"wjacobw_ip_master"},{"location":{"location":"https://github.com/tiongjjyi/ip.git","repoName":"ip","organization":"tiongjjyi","domainName":"github"},"branch":"master","displayName":"tiongjjyi/ip[master]","outputFolderName":"tiongjjyi_ip_master"},{"location":{"location":"https://github.com/longnguyentan/ip.git","repoName":"ip","organization":"longnguyentan","domainName":"github"},"branch":"master","displayName":"longnguyentan/ip[master]","outputFolderName":"longnguyentan_ip_master"},{"location":{"location":"https://github.com/proto-aiken-13/ip.git","repoName":"ip","organization":"proto-aiken-13","domainName":"github"},"branch":"master","displayName":"proto-aiken-13/ip[master]","outputFolderName":"proto-aiken-13_ip_master"},{"location":{"location":"https://github.com/junnengsoo/ip.git","repoName":"ip","organization":"junnengsoo","domainName":"github"},"branch":"master","displayName":"junnengsoo/ip[master]","outputFolderName":"junnengsoo_ip_master"},{"location":{"location":"https://github.com/yezkez10/ip.git","repoName":"ip","organization":"yezkez10","domainName":"github"},"branch":"master","displayName":"yezkez10/ip[master]","outputFolderName":"yezkez10_ip_master"},{"location":{"location":"https://github.com/jamesebond/ip.git","repoName":"ip","organization":"jamesebond","domainName":"github"},"branch":"master","displayName":"jamesebond/ip[master]","outputFolderName":"jamesebond_ip_master"},{"location":{"location":"https://github.com/alyssaongyx/ip.git","repoName":"ip","organization":"alyssaongyx","domainName":"github"},"branch":"master","displayName":"alyssaongyx/ip[master]","outputFolderName":"alyssaongyx_ip_master"},{"location":{"location":"https://github.com/Carlintyj/ip.git","repoName":"ip","organization":"Carlintyj","domainName":"github"},"branch":"master","displayName":"Carlintyj/ip[master]","outputFolderName":"Carlintyj_ip_master"},{"location":{"location":"https://github.com/ruth-lim/ip.git","repoName":"ip","organization":"ruth-lim","domainName":"github"},"branch":"master","displayName":"ruth-lim/ip[master]","outputFolderName":"ruth-lim_ip_master"},{"location":{"location":"https://github.com/licongshen12/ip.git","repoName":"ip","organization":"licongshen12","domainName":"github"},"branch":"master","displayName":"licongshen12/ip[master]","outputFolderName":"licongshen12_ip_master"},{"location":{"location":"https://github.com/thaddeusong/ip.git","repoName":"ip","organization":"thaddeusong","domainName":"github"},"branch":"master","displayName":"thaddeusong/ip[master]","outputFolderName":"thaddeusong_ip_master"},{"location":{"location":"https://github.com/LordSaumya/ip.git","repoName":"ip","organization":"LordSaumya","domainName":"github"},"branch":"master","displayName":"LordSaumya/ip[master]","outputFolderName":"LordSaumya_ip_master"},{"location":{"location":"https://github.com/Kevin-Liusx/ip.git","repoName":"ip","organization":"Kevin-Liusx","domainName":"github"},"branch":"master","displayName":"Kevin-Liusx/ip[master]","outputFolderName":"Kevin-Liusx_ip_master"},{"location":{"location":"https://github.com/Ken-Lai/ip.git","repoName":"ip","organization":"Ken-Lai","domainName":"github"},"branch":"master","displayName":"Ken-Lai/ip[master]","outputFolderName":"Ken-Lai_ip_master"},{"location":{"location":"https://github.com/KumChaiYin/ip.git","repoName":"ip","organization":"KumChaiYin","domainName":"github"},"branch":"master","displayName":"KumChaiYin/ip[master]","outputFolderName":"KumChaiYin_ip_master"},{"location":{"location":"https://github.com/pzl111/ip.git","repoName":"ip","organization":"pzl111","domainName":"github"},"branch":"master","displayName":"pzl111/ip[master]","outputFolderName":"pzl111_ip_master"},{"location":{"location":"https://github.com/alientian/ip.git","repoName":"ip","organization":"alientian","domainName":"github"},"branch":"master","displayName":"alientian/ip[master]","outputFolderName":"alientian_ip_master"},{"location":{"location":"https://github.com/eyelessrhyme7/ip.git","repoName":"ip","organization":"eyelessrhyme7","domainName":"github"},"branch":"master","displayName":"eyelessrhyme7/ip[master]","outputFolderName":"eyelessrhyme7_ip_master"},{"location":{"location":"https://github.com/AprupKale/ip.git","repoName":"ip","organization":"AprupKale","domainName":"github"},"branch":"master","displayName":"AprupKale/ip[master]","outputFolderName":"AprupKale_ip_master"},{"location":{"location":"https://github.com/kimshitong/ip.git","repoName":"ip","organization":"kimshitong","domainName":"github"},"branch":"master","displayName":"kimshitong/ip[master]","outputFolderName":"kimshitong_ip_master"},{"location":{"location":"https://github.com/Bryan-Goh/ip.git","repoName":"ip","organization":"Bryan-Goh","domainName":"github"},"branch":"master","displayName":"Bryan-Goh/ip[master]","outputFolderName":"Bryan-Goh_ip_master"},{"location":{"location":"https://github.com/tiif/ip.git","repoName":"ip","organization":"tiif","domainName":"github"},"branch":"master","displayName":"tiif/ip[master]","outputFolderName":"tiif_ip_master"},{"location":{"location":"https://github.com/angkyakdifp/ip.git","repoName":"ip","organization":"angkyakdifp","domainName":"github"},"branch":"master","displayName":"angkyakdifp/ip[master]","outputFolderName":"angkyakdifp_ip_master"},{"location":{"location":"https://github.com/Chen-Kuei/ip.git","repoName":"ip","organization":"Chen-Kuei","domainName":"github"},"branch":"master","displayName":"Chen-Kuei/ip[master]","outputFolderName":"Chen-Kuei_ip_master"},{"location":{"location":"https://github.com/SinhaVedant/ip.git","repoName":"ip","organization":"SinhaVedant","domainName":"github"},"branch":"master","displayName":"SinhaVedant/ip[master]","outputFolderName":"SinhaVedant_ip_master"},{"location":{"location":"https://github.com/D-Limiter/ip.git","repoName":"ip","organization":"D-Limiter","domainName":"github"},"branch":"master","displayName":"D-Limiter/ip[master]","outputFolderName":"D-Limiter_ip_master"},{"location":{"location":"https://github.com/larrywang0701/ip.git","repoName":"ip","organization":"larrywang0701","domainName":"github"},"branch":"master","displayName":"larrywang0701/ip[master]","outputFolderName":"larrywang0701_ip_master"},{"location":{"location":"https://github.com/Song-Mengfei/ip.git","repoName":"ip","organization":"Song-Mengfei","domainName":"github"},"branch":"master","displayName":"Song-Mengfei/ip[master]","outputFolderName":"Song-Mengfei_ip_master"},{"location":{"location":"https://github.com/ChangruHenryQian/ip.git","repoName":"ip","organization":"ChangruHenryQian","domainName":"github"},"branch":"master","displayName":"ChangruHenryQian/ip[master]","outputFolderName":"ChangruHenryQian_ip_master"},{"location":{"location":"https://github.com/ketweeen/ip.git","repoName":"ip","organization":"ketweeen","domainName":"github"},"branch":"master","displayName":"ketweeen/ip[master]","outputFolderName":"ketweeen_ip_master"},{"location":{"location":"https://github.com/RSXIX/ip.git","repoName":"ip","organization":"RSXIX","domainName":"github"},"branch":"master","displayName":"RSXIX/ip[master]","outputFolderName":"RSXIX_ip_master"},{"location":{"location":"https://github.com/songgthu/ip.git","repoName":"ip","organization":"songgthu","domainName":"github"},"branch":"master","displayName":"songgthu/ip[master]","outputFolderName":"songgthu_ip_master"},{"location":{"location":"https://github.com/maj0-0/ip.git","repoName":"ip","organization":"maj0-0","domainName":"github"},"branch":"master","displayName":"maj0-0/ip[master]","outputFolderName":"maj0-0_ip_master"},{"location":{"location":"https://github.com/tiongMax/ip.git","repoName":"ip","organization":"tiongMax","domainName":"github"},"branch":"master","displayName":"tiongMax/ip[master]","outputFolderName":"tiongMax_ip_master"},{"location":{"location":"https://github.com/A1WAYSD/ip.git","repoName":"ip","organization":"A1WAYSD","domainName":"github"},"branch":"master","displayName":"A1WAYSD/ip[master]","outputFolderName":"A1WAYSD_ip_master"},{"location":{"location":"https://github.com/hjoneweek/ip.git","repoName":"ip","organization":"hjoneweek","domainName":"github"},"branch":"master","displayName":"hjoneweek/ip[master]","outputFolderName":"hjoneweek_ip_master"},{"location":{"location":"https://github.com/itsNatTan/ip.git","repoName":"ip","organization":"itsNatTan","domainName":"github"},"branch":"master","displayName":"itsNatTan/ip[master]","outputFolderName":"itsNatTan_ip_master"},{"location":{"location":"https://github.com/AustinHuang1203/ip.git","repoName":"ip","organization":"AustinHuang1203","domainName":"github"},"branch":"master","displayName":"AustinHuang1203/ip[master]","outputFolderName":"AustinHuang1203_ip_master"},{"location":{"location":"https://github.com/WangCheng0116/ip.git","repoName":"ip","organization":"WangCheng0116","domainName":"github"},"branch":"master","displayName":"WangCheng0116/ip[master]","outputFolderName":"WangCheng0116_ip_master"},{"location":{"location":"https://github.com/Tim-Siu/ip.git","repoName":"ip","organization":"Tim-Siu","domainName":"github"},"branch":"master","displayName":"Tim-Siu/ip[master]","outputFolderName":"Tim-Siu_ip_master"},{"location":{"location":"https://github.com/newway1814/ip.git","repoName":"ip","organization":"newway1814","domainName":"github"},"branch":"master","displayName":"newway1814/ip[master]","outputFolderName":"newway1814_ip_master"},{"location":{"location":"https://github.com/li-rongzhi/ip.git","repoName":"ip","organization":"li-rongzhi","domainName":"github"},"branch":"master","displayName":"li-rongzhi/ip[master]","outputFolderName":"li-rongzhi_ip_master"},{"location":{"location":"https://github.com/adhigop13/ip.git","repoName":"ip","organization":"adhigop13","domainName":"github"},"branch":"master","displayName":"adhigop13/ip[master]","outputFolderName":"adhigop13_ip_master"},{"location":{"location":"https://github.com/MadLamprey/ip.git","repoName":"ip","organization":"MadLamprey","domainName":"github"},"branch":"master","displayName":"MadLamprey/ip[master]","outputFolderName":"MadLamprey_ip_master"}],"errorSet":[{"repoName":"Propene-Dan/ip[master]","errorMessage":"Failed to clone from https://github.com/Propene-Dan/ip.git"}],"sinceDate":"2023-08-18","untilDate":"2023-09-01","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}} diff --git a/tanboonkhong_ip_master/authorship.json b/tanboonkhong_ip_master/authorship.json index 0925ee3a..c5b3a0c4 100644 --- a/tanboonkhong_ip_master/authorship.json +++ b/tanboonkhong_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":"// archiveFileName \u003d \"duke.jar\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanboonkhong":2,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"T | 0 | read book","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"D | 1 | ip 2103 | 2023-08-31T16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"E | 0 | event eat dinner | 2023-08-31T18:00 | 2023-08-31T20:00","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"T | 0 | study","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanboonkhong":4}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"// protected String by;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" this.by \u003d parseDateTime(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":"// this.by \u003d by;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" private LocalDateTime parseDateTime(String by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter[] formatters \u003d {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter.ISO_LOCAL_DATE_TIME","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" for (DateTimeFormatter formatter : formatters) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" return LocalDateTime.parse(by, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" throw new DateTimeParseException(\"No suitable date-time format found\", by, 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(formatter) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" public String toFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" return \"D | \" + super.toFile() + \" | \" + this.by;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanboonkhong":44}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" * Represents the main class for the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":" * It initializes the UI, storage, and task list, and then runs the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a Duke object.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" * @param filePath The path to the file where tasks are saved and loaded from.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" new Duke(\"./data/duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" public void run() {","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" while(!isExit) {","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" parser.parseAndExecute(input, tasks, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" isExit \u003d parser.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanboonkhong":50,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":" * Represents exceptions specific to the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":" * This class extends the base Exception class to provide custom error handling for Duke.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a DukeException object.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" * @param message The error message to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanboonkhong":16}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" * Represents an Event task in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":" * Each event has a description, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" * Constructs an Event object with the given description, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" * @param from The start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" * @param to The end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" this.from \u003d parseDateTime(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" this.to \u003d parseDateTime(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" * Parses the given date-time string into a LocalDateTime object.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" * Supports multiple date-time formats.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" * @param by The date-time string to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" * @return The LocalDateTime representation of the given date-time string.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" * @throws DateTimeParseException If no suitable date-time format is found.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" private LocalDateTime parseDateTime(String by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter[] formatters \u003d {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter.ISO_LOCAL_DATE_TIME","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" for (DateTimeFormatter formatter : formatters) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" return LocalDateTime.parse(by, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" throw new DateTimeParseException(\"No suitable date-time format found\", by, 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" * Returns the string representation of this event.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" * @return The string representation of this event.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(formatter) + \" to: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tanboonkhong"},"content":" + this.to.format(formatter) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"tanboonkhong"},"content":" * Returns the file-friendly string representation of this event.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tanboonkhong"},"content":" * @return The file-friendly string representation of this event.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"tanboonkhong"},"content":" public String toFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"tanboonkhong"},"content":" return \"E | \" + super.toFile() + \" | \" + this.from + \" | \" + this.to;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanboonkhong":76}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":" * Represents a parser for the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":" * Handles the interpretation and execution of user commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" * Parses and executes the given user command.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" * @param fullCommand The full string of the user\u0027s command.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" * @param tasks The current list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" * @param ui The UI of the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" * @param storage The storage of the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" * @throws DukeException If there\u0027s an error in command execution.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" public void parseAndExecute(String fullCommand, TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" validateInput(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" String[] tokens \u003d fullCommand.split(\"\\\\s+\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" String command \u003d tokens[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" switch (command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" this.isExit \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" ui.printBye();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" tasks.printList();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" Task todo \u003d new Todo (fullCommand.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" ui.printAdded(todo, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" String[] arr \u003d fullCommand.substring(9).split(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" Task deadline \u003d new Deadline(arr[0], arr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" ui.printAdded(deadline, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" String[] arr1 \u003d fullCommand.split(\"\\\\s*/from\\\\s*|\\\\s*/to\\\\s*\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" Task event \u003d new Event(arr1[0], arr1[1], arr1[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" ui.printAdded(event, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":" int indexToDelete \u003d Integer.parseInt(fullCommand.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" Task taskToDelete \u003d tasks.get(indexToDelete);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" tasks.delete(indexToDelete - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":" ui.printDeleted(taskToDelete, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" int indexToMark \u003d Integer.parseInt(fullCommand.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" Task taskToMark \u003d tasks.get(indexToMark);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":" taskToMark.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tanboonkhong"},"content":" ui.printDone(taskToMark);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanboonkhong"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tanboonkhong"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"tanboonkhong"},"content":" int indexToUnmark \u003d Integer.parseInt(fullCommand.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tanboonkhong"},"content":" Task taskToUnmark \u003d tasks.get(indexToUnmark);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"tanboonkhong"},"content":" taskToUnmark.markAsUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"tanboonkhong"},"content":" ui.printUndone(taskToUnmark);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tanboonkhong"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"tanboonkhong"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"tanboonkhong"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tanboonkhong"},"content":" * Checks if the exit command has been issued.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"tanboonkhong"},"content":" * @return true if the exit command has been issued, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tanboonkhong"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"tanboonkhong"},"content":" return this.isExit;","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"tanboonkhong"},"content":" * Validates the given user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"tanboonkhong"},"content":" * @param input The user\u0027s input string.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"tanboonkhong"},"content":" * @throws DukeException If the input is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"tanboonkhong"},"content":" public void validateInput(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"tanboonkhong"},"content":" if (input.equals(\"todo\") || input.equals(\"deadline\") || input.equals(\"event\") || input.equals(\"mark\")","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"tanboonkhong"},"content":" || input.equals(\"unmark\") || input.equals(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"tanboonkhong"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a \" + input + \" cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"tanboonkhong"},"content":" if (input.startsWith(\"deadline \") \u0026\u0026 !input.contains(\"/by\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"tanboonkhong"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline must contain /by.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"tanboonkhong"},"content":" if (input.startsWith(\"event \") \u0026\u0026 !input.contains(\"/from\") \u0026\u0026 !input.contains(\"/to\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"tanboonkhong"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a event must contain /from and /to.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"tanboonkhong"},"content":" if (!input.startsWith(\"todo \") \u0026\u0026 !input.startsWith(\"deadline \") \u0026\u0026 !input.startsWith(\"event \")","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"tanboonkhong"},"content":" \u0026\u0026 !input.equals(\"list\") \u0026\u0026 !input.equals(\"bye\") \u0026\u0026 !input.startsWith(\"mark \")","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"tanboonkhong"},"content":" \u0026\u0026 !input.startsWith(\"unmark \") \u0026\u0026 !input.startsWith(\"delete \")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"tanboonkhong"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanboonkhong":113}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" * Represents the storage for the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" * Handles the loading and saving of tasks to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a new Storage with the specified file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" * @param filePath The path of the file to load from and save to.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" * Loads tasks from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" * @return A list of tasks loaded from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" * @throws DukeException If there\u0027s an error loading from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" public List\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" if (!Files.exists(path.getParent())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(path);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" for (String line : lines) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" String[] tokens \u003d line.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" String type \u003d tokens[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" boolean isDone \u003d tokens[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" String description \u003d tokens[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" Task task \u003d new Task(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":" task \u003d new Deadline(description, tokens[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" task \u003d new Event(description, tokens[3], tokens[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tanboonkhong"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tanboonkhong"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"tanboonkhong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tanboonkhong"},"content":" throw new DukeException(\"Error loading file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tanboonkhong"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"tanboonkhong"},"content":" * Saves the tasks to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tanboonkhong"},"content":" * @param tasks The list of tasks to save.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tanboonkhong"},"content":" public void save(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"tanboonkhong"},"content":" List\u003cString\u003e saveLines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tanboonkhong"},"content":" for(Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"tanboonkhong"},"content":" saveLines.add(task.toFile());","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"tanboonkhong"},"content":" Files.write(Paths.get(filePath), saveLines);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"tanboonkhong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"tanboonkhong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanboonkhong":90}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":" * Represents a task in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a new Task with the specified description.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" * Returns the status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" * \"X\" if the task is done, \" \" otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" * @return The status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" * @return The string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" * Returns the string representation of the task for file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" * @return The string representation of the task for file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" public String toFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" return (isDone ? 1 : 0 ) + \" | \" + description;","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanboonkhong":62}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":" * Represents a list of tasks in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a TaskList with the given list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" * Adds a task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" * Deletes a task from the list based on its index.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" public void delete(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" * Retrieves a task from the list based on its index.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" * @param index The index of the task to be retrieved.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":" public Task get(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" return this.tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" * Returns the number of tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" * @return The size of the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tanboonkhong"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"tanboonkhong"},"content":" * Prints all tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tanboonkhong"},"content":" public void printList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"tanboonkhong"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tanboonkhong"},"content":" System.out.println((i + 1) + \". \" + this.tasks.get(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tanboonkhong"},"content":" * Returns the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tanboonkhong"},"content":" * @return The list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"tanboonkhong"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tanboonkhong"},"content":" return this.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanboonkhong":84}},{"path":"src/main/java/duke/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":"public class TaskManager {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" public TaskManager() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" loadTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" saveTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" public void loadTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" Path path \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" if (!Files.exists(path.getParent())) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" for (String line : lines) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" String[] tokens \u003d line.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" String type \u003d tokens[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" boolean isDone \u003d tokens[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" String description \u003d tokens[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" Task task \u003d new Task(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" switch (type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" task \u003d new Deadline(description, tokens[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" task \u003d new Event(description, tokens[3], tokens[4]);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"tanboonkhong"},"content":" public void saveTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"tanboonkhong"},"content":" List\u003cString\u003e saveLines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"tanboonkhong"},"content":" for(Task task : this.tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"tanboonkhong"},"content":" saveLines.add(task.toFile());","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"tanboonkhong"},"content":" Files.write(Paths.get(FILE_PATH), saveLines);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"tanboonkhong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"tanboonkhong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"tanboonkhong"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"tanboonkhong"},"content":" this.tasks.remove(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"tanboonkhong"},"content":" saveTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"tanboonkhong"},"content":" public int getSize() {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"tanboonkhong"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"tanboonkhong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"tanboonkhong"},"content":" return this.tasks.get(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"tanboonkhong"},"content":" public void printList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"tanboonkhong"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(i + 1 + \". \" + this.tasks.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanboonkhong":95}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":" * Represents a Todo task in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":" * A Todo task is a simple task with just a description and no specific time associated with it.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a Todo task with the given description.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" * @param description The description of the Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" * Returns the string representation of the Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" * The representation includes a \"[T]\" prefix to indicate that it\u0027s a Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" * @return The string representation of the Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" * Returns the string representation of the Todo task for file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" * The representation is in a format suitable for saving to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" * @return The string representation of the Todo task for file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" public String toFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" return \"T | \" + super.toFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanboonkhong":38}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":" * Represents the user interface of the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":" * This class handles all interactions with the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" private Scanner sc;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a new Ui object.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" * Reads a command from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" * @return The command entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" return sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" * Displays a welcome message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" this.printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Hello! I\u0027m Max\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" this.printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" * Prints a line for UI formatting.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" public void printLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" * Displays a goodbye message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" public void printBye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" * Displays a message indicating a task has been added.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" * @param task The task that was added.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" * @param size The current number of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" public void printAdded(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tanboonkhong"},"content":" * Displays a message indicating a task has been deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tanboonkhong"},"content":" * @param task The task that was deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tanboonkhong"},"content":" * @param size The current number of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"tanboonkhong"},"content":" public void printDeleted(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tanboonkhong"},"content":" * Displays a message indicating a task has been marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"tanboonkhong"},"content":" * @param task The task that was marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"tanboonkhong"},"content":" public void printDone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"tanboonkhong"},"content":" * Displays a message indicating a task has been marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"tanboonkhong"},"content":" * @param task The task that was marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"tanboonkhong"},"content":" public void printUndone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"tanboonkhong"},"content":" * Displays the list of tasks to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"tanboonkhong"},"content":" * @param tasks The list of tasks to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"tanboonkhong"},"content":" public void printList(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"tanboonkhong"},"content":" tasks.printList();","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"tanboonkhong"},"content":" * Displays an error message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"tanboonkhong"},"content":" * @param message The error message to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"tanboonkhong"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Error: \" + message);","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"tanboonkhong"},"content":" * Displays a message indicating there was an error loading tasks from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"tanboonkhong"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Error loading tasks from file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanboonkhong":133}},{"path":"src/test/java/duke/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" public void testDeadlineToString_notDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" Deadline deadline \u003d new Deadline(\"Submit Assignment\", \"2023-12-01 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"[D][ ] Submit Assignment (by: Dec 01 2023 2359)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" public void testMarkAsDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" Deadline deadline \u003d new Deadline(\"Submit Assignment\", \"2023-12-01 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" assertTrue(deadline.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(\"[D][X] Submit Assignment (by: Dec 01 2023 2359)\", deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" public void testDeadlineToFile_notDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" Deadline deadline \u003d new Deadline(\"Submit Assignment\", \"2023-12-01 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"D | 0 | Submit Assignment | 2023-12-01T23:59\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, deadline.toFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" public void testParseDateTime_alternateFormat_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" Deadline deadline \u003d new Deadline(\"Submit Assignment\", \"1/12/2022 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"[D][ ] Submit Assignment (by: Dec 01 2022 2359)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanboonkhong":38}},{"path":"src/test/java/duke/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"public class EventTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" public void testEventToString_notDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" Event event \u003d new Event(\"Team Meeting\", \"2022-12-01 1400\", \"2022-12-01 1600\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"[E][ ] Team Meeting (from: Dec 01 2022 1400 to: Dec 01 2022 1600)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" public void testMarkAsDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" Event event \u003d new Event(\"Team Meeting\", \"2022-12-01 1400\", \"2022-12-01 1600\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" event.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" assertTrue(event.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(\"[E][X] Team Meeting (from: Dec 01 2022 1400 to: Dec 01 2022 1600)\", event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" public void testEventToFile_notDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" Event event \u003d new Event(\"Team Meeting\", \"2022-12-01 1400\", \"2022-12-01 1600\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"E | 0 | Team Meeting | 2022-12-01T14:00 | 2022-12-01T16:00\";","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, event.toFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" public void testParseDateTime_alternateFormat_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" Event event \u003d new Event(\"Team Meeting\", \"1/12/2022 1400\", \"1/12/2022 1600\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"[E][ ] Team Meeting (from: Dec 01 2022 1400 to: Dec 01 2022 1600)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanboonkhong":39}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" public void testTodoToString_notDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" Todo todo \u003d new Todo(\"Test Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"[T][ ] Test Task\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" public void testMarkAsDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" Todo todo \u003d new Todo(\"Test Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" assertTrue(todo.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(\"[T][X] Test Task\", todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" public void testTodoToFile_notDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" Todo todo \u003d new Todo(\"Test Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"T | 0 | Test Task\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, todo.toFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" public void testMarkAsUndone_afterDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" Todo todo \u003d new Todo(\"Test Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" assertTrue(todo.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" todo.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" assertFalse(todo.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(\"[T][ ] Test Task\", todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanboonkhong":41}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanboonkhong":5}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":"// archiveFileName \u003d \"duke.jar\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanboonkhong":2,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"T | 0 | read book","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"D | 1 | ip 2103 | 2023-08-31T16:00","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"E | 0 | event eat dinner | 2023-08-31T18:00 | 2023-08-31T20:00","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"T | 0 | study","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"T | 1 | return book","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanboonkhong":5}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"// protected String by;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" this.by \u003d parseDateTime(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":"// this.by \u003d by;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" private LocalDateTime parseDateTime(String by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter[] formatters \u003d {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter.ISO_LOCAL_DATE_TIME","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" for (DateTimeFormatter formatter : formatters) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" return LocalDateTime.parse(by, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" throw new DateTimeParseException(\"No suitable date-time format found\", by, 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(formatter) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" public String toFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" return \"D | \" + super.toFile() + \" | \" + this.by;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanboonkhong":44}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" * Represents the main class for the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":" * It initializes the UI, storage, and task list, and then runs the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a Duke object.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" * @param filePath The path to the file where tasks are saved and loaded from.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" new Duke(\"./data/duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" public void run() {","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" while(!isExit) {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" parser.parseAndExecute(input, tasks, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" isExit \u003d parser.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanboonkhong":49,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":" * Represents exceptions specific to the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":" * This class extends the base Exception class to provide custom error handling for Duke.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a DukeException object.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" * @param message The error message to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanboonkhong":16}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" * Represents an Event task in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":" * Each event has a description, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" * Constructs an Event object with the given description, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" * @param from The start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" * @param to The end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" this.from \u003d parseDateTime(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" this.to \u003d parseDateTime(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" * Parses the given date-time string into a LocalDateTime object.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" * Supports multiple date-time formats.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" * @param by The date-time string to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" * @return The LocalDateTime representation of the given date-time string.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" * @throws DateTimeParseException If no suitable date-time format is found.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" private LocalDateTime parseDateTime(String by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter[] formatters \u003d {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter.ISO_LOCAL_DATE_TIME","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" for (DateTimeFormatter formatter : formatters) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" return LocalDateTime.parse(by, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" throw new DateTimeParseException(\"No suitable date-time format found\", by, 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" * Returns the string representation of this event.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" * @return The string representation of this event.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(formatter) + \" to: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tanboonkhong"},"content":" + this.to.format(formatter) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"tanboonkhong"},"content":" * Returns the file-friendly string representation of this event.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tanboonkhong"},"content":" * @return The file-friendly string representation of this event.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"tanboonkhong"},"content":" public String toFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"tanboonkhong"},"content":" return \"E | \" + super.toFile() + \" | \" + this.from + \" | \" + this.to;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanboonkhong":76}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":" * Represents a parser for the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":" * Handles the interpretation and execution of user commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" * Parses and executes the given user command.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" * @param fullCommand The full string of the user\u0027s command.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" * @param tasks The current list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" * @param ui The UI of the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" * @param storage The storage of the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" * @throws DukeException If there\u0027s an error in command execution.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" public void parseAndExecute(String fullCommand, TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" validateInput(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" String[] tokens \u003d fullCommand.split(\"\\\\s+\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" String command \u003d tokens[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" switch (command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" case \"bye\":","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" this.isExit \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" ui.printBye();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" case \"list\":","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" tasks.printList();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" Task todo \u003d new Todo (fullCommand.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" ui.printAdded(todo, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" String[] arr \u003d fullCommand.substring(9).split(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" Task deadline \u003d new Deadline(arr[0], arr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" ui.printAdded(deadline, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" String[] arr1 \u003d fullCommand.split(\"\\\\s*/from\\\\s*|\\\\s*/to\\\\s*\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" Task event \u003d new Event(arr1[0], arr1[1], arr1[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" ui.printAdded(event, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":" int indexToDelete \u003d Integer.parseInt(fullCommand.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" Task taskToDelete \u003d tasks.get(indexToDelete);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" tasks.delete(indexToDelete - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":" ui.printDeleted(taskToDelete, tasks.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" int indexToMark \u003d Integer.parseInt(fullCommand.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" Task taskToMark \u003d tasks.get(indexToMark);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":" taskToMark.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tanboonkhong"},"content":" ui.printDone(taskToMark);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanboonkhong"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tanboonkhong"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"tanboonkhong"},"content":" int indexToUnmark \u003d Integer.parseInt(fullCommand.substring(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tanboonkhong"},"content":" Task taskToUnmark \u003d tasks.get(indexToUnmark);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"tanboonkhong"},"content":" taskToUnmark.markAsUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"tanboonkhong"},"content":" ui.printUndone(taskToUnmark);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tanboonkhong"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"tanboonkhong"},"content":" case \"find\":","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"tanboonkhong"},"content":" String keyword \u003d fullCommand.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"tanboonkhong"},"content":" tasks.find(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tanboonkhong"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"tanboonkhong"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tanboonkhong"},"content":" * Checks if the exit command has been issued.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"tanboonkhong"},"content":" * @return true if the exit command has been issued, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"tanboonkhong"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"tanboonkhong"},"content":" return this.isExit;","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"tanboonkhong"},"content":" * Validates the given user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"tanboonkhong"},"content":" * @param input The user\u0027s input string.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"tanboonkhong"},"content":" * @throws DukeException If the input is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"tanboonkhong"},"content":" public void validateInput(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"tanboonkhong"},"content":" if (input.equals(\"todo\") || input.equals(\"deadline\") || input.equals(\"event\") || input.equals(\"mark\")","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"tanboonkhong"},"content":" || input.equals(\"unmark\") || input.equals(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"tanboonkhong"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a \" + input + \" cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"tanboonkhong"},"content":" if (input.startsWith(\"deadline \") \u0026\u0026 !input.contains(\"/by\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"tanboonkhong"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline must contain /by.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"tanboonkhong"},"content":" if (input.startsWith(\"event \") \u0026\u0026 !input.contains(\"/from\") \u0026\u0026 !input.contains(\"/to\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"tanboonkhong"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a event must contain /from and /to.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"tanboonkhong"},"content":" if (!input.startsWith(\"todo \") \u0026\u0026 !input.startsWith(\"deadline \") \u0026\u0026 !input.startsWith(\"event \")","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"tanboonkhong"},"content":" \u0026\u0026 !input.equals(\"list\") \u0026\u0026 !input.equals(\"bye\") \u0026\u0026 !input.startsWith(\"mark \")","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"tanboonkhong"},"content":" \u0026\u0026 !input.startsWith(\"unmark \") \u0026\u0026 !input.startsWith(\"delete \") \u0026\u0026 !input.startsWith(\"find \")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"tanboonkhong"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanboonkhong":117}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" * Represents the storage for the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" * Handles the loading and saving of tasks to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a new Storage with the specified file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" * @param filePath The path of the file to load from and save to.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" * Loads tasks from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" * @return A list of tasks loaded from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" * @throws DukeException If there\u0027s an error loading from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" public List\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" if (!Files.exists(path.getParent())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(path);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" for (String line : lines) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" String[] tokens \u003d line.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" String type \u003d tokens[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" boolean isDone \u003d tokens[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" String description \u003d tokens[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" Task task \u003d new Task(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":" task \u003d new Deadline(description, tokens[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" task \u003d new Event(description, tokens[3], tokens[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tanboonkhong"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tanboonkhong"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"tanboonkhong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tanboonkhong"},"content":" throw new DukeException(\"Error loading file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tanboonkhong"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"tanboonkhong"},"content":" * Saves the tasks to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tanboonkhong"},"content":" * @param tasks The list of tasks to save.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tanboonkhong"},"content":" public void save(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"tanboonkhong"},"content":" List\u003cString\u003e saveLines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tanboonkhong"},"content":" for(Task task : tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"tanboonkhong"},"content":" saveLines.add(task.toFile());","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"tanboonkhong"},"content":" Files.write(Paths.get(filePath), saveLines);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"tanboonkhong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"tanboonkhong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanboonkhong":90}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":" * Represents a task in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a new Task with the specified description.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" * Returns the status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" * \"X\" if the task is done, \" \" otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" * @return The status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" * @return The string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" * Returns the string representation of the task for file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" * @return The string representation of the task for file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" public String toFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" return (isDone ? 1 : 0 ) + \" | \" + description;","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanboonkhong":62}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":" * Represents a list of tasks in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a TaskList with the given list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" * Adds a task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" * Deletes a task from the list based on its index.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" public void delete(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" * Retrieves a task from the list based on its index.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" * @param index The index of the task to be retrieved.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":" public Task get(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" return this.tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" * Returns the number of tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" * @return The size of the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tanboonkhong"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"tanboonkhong"},"content":" * Prints all the tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tanboonkhong"},"content":" public void printList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"tanboonkhong"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tanboonkhong"},"content":" System.out.println((i + 1) + \". \" + this.tasks.get(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tanboonkhong"},"content":" * Returns the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tanboonkhong"},"content":" * @return The list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"tanboonkhong"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tanboonkhong"},"content":" return this.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"tanboonkhong"},"content":" * Searches for tasks that contain the specified keyword and prints them.","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"tanboonkhong"},"content":" * If there is no tasks match the keyword, a message indicating no matches is printed.","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"tanboonkhong"},"content":" * @param keyword The keyword to search for within the tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"tanboonkhong"},"content":" public void find(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"tanboonkhong"},"content":" int count \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"tanboonkhong"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"tanboonkhong"},"content":" if (this.tasks.get(i).toString().contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"tanboonkhong"},"content":" System.out.println((count + 1) + \". \" + this.tasks.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"tanboonkhong"},"content":" count++;","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"tanboonkhong"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"No matching tasks found.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanboonkhong":103}},{"path":"src/main/java/duke/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":"public class TaskManager {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" public TaskManager() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" loadTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" saveTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" public void loadTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" Path path \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" if (!Files.exists(path.getParent())) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" for (String line : lines) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" String[] tokens \u003d line.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" String type \u003d tokens[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" boolean isDone \u003d tokens[1].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" String description \u003d tokens[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" Task task \u003d new Task(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" switch (type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" task \u003d new Deadline(description, tokens[3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" task \u003d new Event(description, tokens[3], tokens[4]);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"tanboonkhong"},"content":" public void saveTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"tanboonkhong"},"content":" List\u003cString\u003e saveLines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"tanboonkhong"},"content":" for(Task task : this.tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"tanboonkhong"},"content":" saveLines.add(task.toFile());","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"tanboonkhong"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"tanboonkhong"},"content":" Files.write(Paths.get(FILE_PATH), saveLines);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"tanboonkhong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"tanboonkhong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"tanboonkhong"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"tanboonkhong"},"content":" this.tasks.remove(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"tanboonkhong"},"content":" saveTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"tanboonkhong"},"content":" public int getSize() {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"tanboonkhong"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"tanboonkhong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"tanboonkhong"},"content":" return this.tasks.get(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"tanboonkhong"},"content":" public void printList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"tanboonkhong"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(i + 1 + \". \" + this.tasks.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanboonkhong":95}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":" * Represents a Todo task in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":" * A Todo task is a simple task with just a description and no specific time associated with it.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a Todo task with the given description.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" * @param description The description of the Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" * Returns the string representation of the Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" * The representation includes a \"[T]\" prefix to indicate that it\u0027s a Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" * @return The string representation of the Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" * Returns the string representation of the Todo task for file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" * The representation is in a format suitable for saving to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" * @return The string representation of the Todo task for file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" public String toFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" return \"T | \" + super.toFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanboonkhong":39}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":" * Represents the user interface of the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":" * This class handles all interactions with the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" private Scanner sc;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" * Constructs a new Ui object.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" * Reads a command from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" * @return The command entered by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" return sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" * Displays a welcome message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" this.printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Hello! I\u0027m Max\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" this.printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" * Prints a line for UI formatting.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":" public void printLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tanboonkhong"},"content":" * Displays a goodbye message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanboonkhong"},"content":" public void printBye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanboonkhong"},"content":" * Displays a message indicating a task has been added.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tanboonkhong"},"content":" * @param task The task that was added.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanboonkhong"},"content":" * @param size The current number of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tanboonkhong"},"content":" public void printAdded(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tanboonkhong"},"content":" * Displays a message indicating a task has been deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tanboonkhong"},"content":" * @param task The task that was deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tanboonkhong"},"content":" * @param size The current number of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"tanboonkhong"},"content":" public void printDeleted(Task task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tanboonkhong"},"content":" * Displays a message indicating a task has been marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"tanboonkhong"},"content":" * @param task The task that was marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"tanboonkhong"},"content":" public void printDone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"tanboonkhong"},"content":" * Displays a message indicating a task has been marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"tanboonkhong"},"content":" * @param task The task that was marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"tanboonkhong"},"content":" public void printUndone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"tanboonkhong"},"content":" * Displays the list of tasks to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"tanboonkhong"},"content":" * @param tasks The list of tasks to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"tanboonkhong"},"content":" public void printList(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"tanboonkhong"},"content":" tasks.printList();","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"tanboonkhong"},"content":" printLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"tanboonkhong"},"content":" * Displays an error message to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"tanboonkhong"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"tanboonkhong"},"content":" * @param message The error message to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"tanboonkhong"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Error: \" + message);","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"tanboonkhong"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"tanboonkhong"},"content":" * Displays a message indicating there was an error loading tasks from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"tanboonkhong"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"tanboonkhong"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"tanboonkhong"},"content":" System.out.println(\"Error loading tasks from file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanboonkhong":133}},{"path":"src/test/java/duke/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" public void testDeadlineToString_notDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" Deadline deadline \u003d new Deadline(\"Submit Assignment\", \"2023-12-01 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"[D][ ] Submit Assignment (by: Dec 01 2023 2359)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" public void testMarkAsDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" Deadline deadline \u003d new Deadline(\"Submit Assignment\", \"2023-12-01 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" assertTrue(deadline.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(\"[D][X] Submit Assignment (by: Dec 01 2023 2359)\", deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" public void testDeadlineToFile_notDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" Deadline deadline \u003d new Deadline(\"Submit Assignment\", \"2023-12-01 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"D | 0 | Submit Assignment | 2023-12-01T23:59\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, deadline.toFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" public void testParseDateTime_alternateFormat_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" Deadline deadline \u003d new Deadline(\"Submit Assignment\", \"1/12/2022 2359\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"[D][ ] Submit Assignment (by: Dec 01 2022 2359)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanboonkhong":38}},{"path":"src/test/java/duke/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"public class EventTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" public void testEventToString_notDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" Event event \u003d new Event(\"Team Meeting\", \"2022-12-01 1400\", \"2022-12-01 1600\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"[E][ ] Team Meeting (from: Dec 01 2022 1400 to: Dec 01 2022 1600)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" public void testMarkAsDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" Event event \u003d new Event(\"Team Meeting\", \"2022-12-01 1400\", \"2022-12-01 1600\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" event.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" assertTrue(event.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(\"[E][X] Team Meeting (from: Dec 01 2022 1400 to: Dec 01 2022 1600)\", event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" public void testEventToFile_notDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" Event event \u003d new Event(\"Team Meeting\", \"2022-12-01 1400\", \"2022-12-01 1600\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"E | 0 | Team Meeting | 2022-12-01T14:00 | 2022-12-01T16:00\";","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, event.toFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" public void testParseDateTime_alternateFormat_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" Event event \u003d new Event(\"Team Meeting\", \"1/12/2022 1400\", \"1/12/2022 1600\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"[E][ ] Team Meeting (from: Dec 01 2022 1400 to: Dec 01 2022 1600)\";","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanboonkhong":39}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanboonkhong"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanboonkhong"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanboonkhong"},"content":" public void testTodoToString_notDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanboonkhong"},"content":" Todo todo \u003d new Todo(\"Test Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"[T][ ] Test Task\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanboonkhong"},"content":" public void testMarkAsDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanboonkhong"},"content":" Todo todo \u003d new Todo(\"Test Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanboonkhong"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanboonkhong"},"content":" assertTrue(todo.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(\"[T][X] Test Task\", todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanboonkhong"},"content":" public void testTodoToFile_notDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanboonkhong"},"content":" Todo todo \u003d new Todo(\"Test Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanboonkhong"},"content":" String expectedOutput \u003d \"T | 0 | Test Task\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(expectedOutput, todo.toFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanboonkhong"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanboonkhong"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanboonkhong"},"content":" public void testMarkAsUndone_afterDone_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanboonkhong"},"content":" Todo todo \u003d new Todo(\"Test Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanboonkhong"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanboonkhong"},"content":" assertTrue(todo.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanboonkhong"},"content":" todo.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanboonkhong"},"content":" assertFalse(todo.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanboonkhong"},"content":" assertEquals(\"[T][ ] Test Task\", todo.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanboonkhong"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanboonkhong"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanboonkhong":41}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanboonkhong"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"tanboonkhong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanboonkhong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"tanboonkhong"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"tanboonkhong"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanboonkhong":5}}] diff --git a/tanboonkhong_ip_master/commits.json b/tanboonkhong_ip_master/commits.json index ffb50f10..9f3b1c11 100644 --- a/tanboonkhong_ip_master/commits.json +++ b/tanboonkhong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tanboonkhong":[{"date":"2023-08-22","commitResults":[{"hash":"25bad7eeaafeda224e51f6140f2bcde7986441dc","isMergeCommit":false,"messageTitle":"Implement Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":6}}},{"hash":"704ad74d35a112c3438a528f00405a423432ccdb","isMergeCommit":false,"messageTitle":"Rename the chatbot to Max","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"e193078a12ebb03dd3bf470fea7f378624dafee9","isMergeCommit":false,"messageTitle":"Implement Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":5}}},{"hash":"7d92cb2eea5fdc0aef2ab9e6281d5358643fce86","isMergeCommit":false,"messageTitle":"Implement Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"13a7159ea4b7e106ace6cbaf0eb9a5a6ca5f7924","isMergeCommit":false,"messageTitle":"Implement Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":2}}}]},{"date":"2023-08-23","commitResults":[{"hash":"8d06adccfe3b7a9ad284e2d47fa2539643c6105d","isMergeCommit":false,"messageTitle":"Implement Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":18}}},{"hash":"5343645488b9b3a3cc3fb133beb1514cdaf6ba62","isMergeCommit":false,"messageTitle":"Implement Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"39e9456a9968424eca3e1f14ce7b1f365365c9d0","isMergeCommit":false,"messageTitle":"Implement Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":16}}},{"hash":"38c308938f25429b765fdc6bb7af1f543ad15e18","isMergeCommit":false,"messageTitle":"Implement Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}},{"hash":"a8c94b0e6f42438734019b728d770d36d48f2de0","isMergeCommit":false,"messageTitle":"Implement List using Collections","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"62a6e3cecb797c44a1e6929742424d2b2354ace6","isMergeCommit":false,"messageTitle":"Implement Level 7. Save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":130,"deletions":17}}},{"hash":"9a74375a53a10e006433c95fc0d9c4ee7bfa409d","isMergeCommit":true,"messageTitle":"Merge branch-level-7","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2ffbf32c88e0eb10d8879a7976955cda2405eb93","isMergeCommit":false,"messageTitle":"Implement Level 8. Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4}}},{"hash":"33773275558647605043b489575d8f79cf6c8149","isMergeCommit":true,"messageTitle":"Merge branch-Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"6144cbaecfbd6339dc6aeba720dc71a151ea261c","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP: Use More OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":443,"deletions":131}}},{"hash":"049c5984d7975162628e9fc4b5a80b3966143482","isMergeCommit":true,"messageTitle":"Merge pull request #1 from tanboonkhong/branch-A-MoreOOP","messageBody":"Implement A-MoreOOP: Use More OOP","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"0048b0ac5b56c9c63fd19eb74761626695aaf7e1","isMergeCommit":false,"messageTitle":"Add package duke","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"2040a893369874d9ac985e76697dfbdb1c2cf004","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"271fdf18a7b87b8d3e250ccd7edf6be518860341","isMergeCommit":false,"messageTitle":"Add Gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":1}}},{"hash":"aba53c2946c7f5b04c858ac5718024bdca96440f","isMergeCommit":false,"messageTitle":"Add JUnit test cases","messageBody":"","tags":["v0.1","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":0}}},{"hash":"712c4c198ee60edec63c8048de2b6547027d47bf","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":76,"deletions":9}}},{"hash":"0ae15e687f9871c16e375e9f8c9c31c5e294255c","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":224,"deletions":92}}},{"hash":"b328de5dee9776b4a7cadd48b776bfc7bb878361","isMergeCommit":false,"messageTitle":"Follow Coding Standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":55}}}]}]},"authorFileTypeContributionMap":{"tanboonkhong":{"java":919,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":9}},"authorContributionVariance":{"tanboonkhong":39266.37},"authorDisplayNameMap":{"tanboonkhong":"CS2103T-F08-1 TAN ..HONG"}} +{"authorDailyContributionsMap":{"tanboonkhong":[{"date":"2023-08-22","commitResults":[{"hash":"25bad7eeaafeda224e51f6140f2bcde7986441dc","isMergeCommit":false,"messageTitle":"Implement Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":6}}},{"hash":"704ad74d35a112c3438a528f00405a423432ccdb","isMergeCommit":false,"messageTitle":"Rename the chatbot to Max","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"e193078a12ebb03dd3bf470fea7f378624dafee9","isMergeCommit":false,"messageTitle":"Implement Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":5}}},{"hash":"7d92cb2eea5fdc0aef2ab9e6281d5358643fce86","isMergeCommit":false,"messageTitle":"Implement Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"13a7159ea4b7e106ace6cbaf0eb9a5a6ca5f7924","isMergeCommit":false,"messageTitle":"Implement Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":2}}}]},{"date":"2023-08-23","commitResults":[{"hash":"8d06adccfe3b7a9ad284e2d47fa2539643c6105d","isMergeCommit":false,"messageTitle":"Implement Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":18}}},{"hash":"5343645488b9b3a3cc3fb133beb1514cdaf6ba62","isMergeCommit":false,"messageTitle":"Implement Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"39e9456a9968424eca3e1f14ce7b1f365365c9d0","isMergeCommit":false,"messageTitle":"Implement Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":16}}},{"hash":"38c308938f25429b765fdc6bb7af1f543ad15e18","isMergeCommit":false,"messageTitle":"Implement Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}},{"hash":"a8c94b0e6f42438734019b728d770d36d48f2de0","isMergeCommit":false,"messageTitle":"Implement List using Collections","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"62a6e3cecb797c44a1e6929742424d2b2354ace6","isMergeCommit":false,"messageTitle":"Implement Level 7. Save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":130,"deletions":17}}},{"hash":"9a74375a53a10e006433c95fc0d9c4ee7bfa409d","isMergeCommit":true,"messageTitle":"Merge branch-level-7","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2ffbf32c88e0eb10d8879a7976955cda2405eb93","isMergeCommit":false,"messageTitle":"Implement Level 8. Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4}}},{"hash":"33773275558647605043b489575d8f79cf6c8149","isMergeCommit":true,"messageTitle":"Merge branch-Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"6144cbaecfbd6339dc6aeba720dc71a151ea261c","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP: Use More OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":443,"deletions":131}}},{"hash":"049c5984d7975162628e9fc4b5a80b3966143482","isMergeCommit":true,"messageTitle":"Merge pull request #1 from tanboonkhong/branch-A-MoreOOP","messageBody":"Implement A-MoreOOP: Use More OOP","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"0048b0ac5b56c9c63fd19eb74761626695aaf7e1","isMergeCommit":false,"messageTitle":"Add package duke","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"2040a893369874d9ac985e76697dfbdb1c2cf004","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"271fdf18a7b87b8d3e250ccd7edf6be518860341","isMergeCommit":false,"messageTitle":"Add Gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":1}}},{"hash":"aba53c2946c7f5b04c858ac5718024bdca96440f","isMergeCommit":false,"messageTitle":"Add JUnit test cases","messageBody":"","tags":["v0.1","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":0}}},{"hash":"712c4c198ee60edec63c8048de2b6547027d47bf","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":76,"deletions":9}}},{"hash":"0ae15e687f9871c16e375e9f8c9c31c5e294255c","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":224,"deletions":92}}},{"hash":"b328de5dee9776b4a7cadd48b776bfc7bb878361","isMergeCommit":false,"messageTitle":"Follow Coding Standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":55}}},{"hash":"2da0339d788694a07813217c626be395b96da02c","isMergeCommit":false,"messageTitle":"Implement Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":18,"deletions":1}}},{"hash":"1f84627a278156062e798f06b7ffcc216ebab907","isMergeCommit":false,"messageTitle":"Update follow coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"4b7b878899261795a10d5cd516c8657ecbbed6e1","isMergeCommit":false,"messageTitle":"Add JavaDoc for Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"5eeb45fccd1fdbbf1c333b8b505130adfb65b072","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"207e1b67031bf9b00a3780cd6e095808579ca2fe","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"c1fc89866ec62de94565aa6e1d1a48d0235964ad","isMergeCommit":false,"messageTitle":"Revert \"Update JavaDoc\"","messageBody":"This reverts commit 207e1b67031bf9b00a3780cd6e095808579ca2fe.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"be737e22f7b7990ae38813f5e72297e8d1f2079e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c6664b7e582bbe7df03ad709c6ab15326154cc5f","isMergeCommit":false,"messageTitle":"Update Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"08c00ff877a2d190c669de1123ced68ecd2df50e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"276fb6b618d71411c666def5c65e613b81b3994f","isMergeCommit":false,"messageTitle":"Revert \"Add JavaDoc for Level-9\"","messageBody":"This reverts commit 4b7b878899261795a10d5cd516c8657ecbbed6e1.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":6}}},{"hash":"99c346dd83dee5395674b796b3a3054cc4a909a4","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Add JavaDoc for Level-9\"\"","messageBody":"This reverts commit 276fb6b618d71411c666def5c65e613b81b3994f.\n","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"398a0d281ae404e1ea73cd7d0330324b0779fd04","isMergeCommit":false,"messageTitle":"Update Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"c4b291f7c6c24969c5784aa54e537fb0f1ec0bfd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tanboonkhong":{"java":942,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":10}},"authorContributionVariance":{"tanboonkhong":42561.098},"authorDisplayNameMap":{"tanboonkhong":"CS2103T-F08-1 TAN ..HONG"}} diff --git a/tanshiyu1999_ip_master/authorship.json b/tanshiyu1999_ip_master/authorship.json index 9aa9f886..bd427a39 100644 --- a/tanshiyu1999_ip_master/authorship.json +++ b/tanshiyu1999_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-19"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import storage.Storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import taskList.TaskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import parser.Parser;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":" private Ui ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" private Storage storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":" public Duke() {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" storage.load(this.tasks);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" public void run() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" while(!false) {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" String command \u003d sc.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" int i \u003d parser.parseCommand(command, tasks);","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" if (i \u003d\u003d 1) { break; }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" Duke bob \u003d new Duke();","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" bob.ui.printStart();","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" bob.run();","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" bob.ui.printEnd();","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"tanshiyu1999":34,"-":4}},{"path":"src/main/java/command/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package command;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"public enum Commands {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":" LIST, MARK, UNMARK, DEADLINE, TODO, EVENT, DELETE","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tanshiyu1999":7}},{"path":"src/main/java/dukeException/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package dukeException;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"// private String errMsg;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":" public DukeException(String errMsg) {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":" super(errMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"// public String getErrorMessage() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"// return this.errMsg;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"// }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanshiyu1999":15}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package parser;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import command.Commands;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"import dukeException.DukeException;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"import task.Deadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"import task.Event;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"import task.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"import task.Todo;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"import taskList.TaskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" * deals with making sense of the user command","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"public class Parser {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" public Parser() {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" Pattern listRegex \u003d Pattern.compile(\"^\" + Commands.LIST, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" Pattern markRegex \u003d Pattern.compile(\"^\" + Commands.MARK, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" Pattern unmarkRegex \u003d Pattern.compile(\"^\" + Commands.UNMARK, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" Pattern deadlineRegex \u003d Pattern.compile(\"^\" + Commands.DEADLINE, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" Pattern todoRegex \u003d Pattern.compile(\"^\" + Commands.TODO, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" Pattern eventRegex \u003d Pattern.compile(\"^\" + Commands.EVENT, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" Pattern deleteRegex \u003d Pattern.compile(\"^\" + Commands.DELETE, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" public int parseCommand(String command, TaskList taskList) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" ArrayList\u003cTask\u003e list \u003d taskList.getList();","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" return 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" } else if (listRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" Task.printList(list);","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" return 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" } else if (markRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" int curr \u003d Integer.parseInt(command.substring(5)) - 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" Task currTask \u003d list.get(curr);","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" currTask.markDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" return 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" } else if (unmarkRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" int curr \u003d Integer.parseInt(command.substring(7)) - 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" Task currTask \u003d list.get(curr);","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" currTask.markUndone();","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" return 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" } else if (deadlineRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" Deadline.addDeadline(list, command);","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" return 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" } else if (todoRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" Todo.addTodo(list, command);","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" return 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" } else if (eventRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" Event.addEvent(list, command);","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" return 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" } else if (deleteRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" Task.deleteTask(list, command);","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" return 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Invalid Response\");","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" return 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanshiyu1999":67}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"import task.Deadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import task.Event;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import task.Todo;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import taskList.TaskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" * deals with loading tasks from the file and saving tasks in the file","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" public Storage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" public void load(TaskList list) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" File theDir \u003d new File(\"./src/main/data\");","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" if (!theDir.exists()){","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" theDir.mkdirs();","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" File myObj \u003d new File(\"./src/main/data/duke.txt\");","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" Scanner myReader \u003d new Scanner(myObj);","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" while (myReader.hasNextLine()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" String data \u003d myReader.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" String type \u003d data.substring(0,1);","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" switch (type) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" case \"T\":","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" Todo.readData(list.getList(), data);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" case \"D\":","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" Deadline.readData(list.getList(), data);","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" case \"E\":","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" Event.readData(list.getList(), data);","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" myReader.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" File myObj \u003d new File(\"./src/main/data/duke.txt\");","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanshiyu1999":48}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package task;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"import dukeException.DukeException;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":" protected String by;","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" protected LocalDate date;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" this.date \u003d null;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" public Deadline(String description, String by, LocalDate date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" super(description);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" public static void addDeadline(ArrayList\u003cTask\u003e list, String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" String splitCommand[] \u003d command.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" boolean hasBy \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"task.Deadline Argument Empty\");","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" for (int i \u003d 0; i \u003c splitCommand.length; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" hasBy \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" if (i \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"There is no description\");","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" if (i \u003d\u003d splitCommand.length - 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert the deadline\");","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" if (hasBy \u003d\u003d false) {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert deadline is /by when\");","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Got it, I\u0027ve added this deadline.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" String currStr \u003d command.substring(9);","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" int dateIndex \u003d currStr.indexOf(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" String date \u003d currStr.substring(dateIndex + 4);","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":" String description \u003d currStr.substring(0, dateIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" Task deadlineTask;","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" LocalDate d1 \u003d LocalDate.parse(date);","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" deadlineTask \u003d new Deadline(description, date, d1);","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"tanshiyu1999"},"content":" deadlineTask \u003d new Deadline(description, date);;","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":" FileWriter myWriter \u003d new FileWriter(\"./src/main/data/duke.txt\", true);","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.write( \"D | 0 | \" + description + \"| \" + date + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"tanshiyu1999"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":" list.add(deadlineTask);","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(deadlineTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\" );","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"tanshiyu1999"},"content":" public static void readData(ArrayList\u003cTask\u003e list, String data) {","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"tanshiyu1999"},"content":" String splitDeadline[] \u003d data.split(\" \\\\| \");","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"tanshiyu1999"},"content":" Task deadlineTask;","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"tanshiyu1999"},"content":" LocalDate d1 \u003d LocalDate.parse(splitDeadline[3]);","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"tanshiyu1999"},"content":" deadlineTask \u003d new Deadline(splitDeadline[2] + \" \", splitDeadline[3], d1);","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"tanshiyu1999"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"tanshiyu1999"},"content":" deadlineTask \u003d new Deadline(splitDeadline[2], splitDeadline[3]);","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"tanshiyu1999"},"content":" list.add(deadlineTask);","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"tanshiyu1999"},"content":" if (splitDeadline[1].equals(\"1\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"tanshiyu1999"},"content":" list.get(list.size()-1).markDoneNoPrint();","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":111,"author":{"gitId":"tanshiyu1999"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":112,"author":{"gitId":"tanshiyu1999"},"content":" if (this.date \u003d\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"tanshiyu1999"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-21"},{"lineNumber":114,"author":{"gitId":"tanshiyu1999"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"tanshiyu1999"},"content":" return \"[D]\" + super.toString() + getDate();","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"tanshiyu1999"},"content":" public String getDate() {","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"tanshiyu1999"},"content":" return this.date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-29"},{"lineNumber":121,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":122,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanshiyu1999":122}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package task;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import dukeException.DukeException;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" protected String from;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" protected String to;","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" public static void addEvent(ArrayList\u003cTask\u003e list, String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":"// event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" String splitCommand[] \u003d command.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" boolean hasFrom \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" boolean hasTo \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"task.Event Argument Empty\");","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" for (int i \u003d 0; i \u003c splitCommand.length; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" hasFrom \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" if (i \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"There is no description\");","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" if (i \u003d\u003d splitCommand.length - 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert /from dates\");","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand[i + 1].equals(\"/to\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert /from dates\");","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" if (hasFrom \u0026\u0026 splitCommand[i].equals(\"/to\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" hasTo \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" if (i \u003d\u003d splitCommand.length - 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert /to dates\");","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" if (hasFrom \u003d\u003d false) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert event is /from when\");","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" if (hasTo \u003d\u003d false) {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert event is /to when\");","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Got it, I\u0027ve added this event.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" String currStr \u003d command.substring(6);","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":" int fromIndex \u003d currStr.indexOf(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"tanshiyu1999"},"content":" String description \u003d currStr.substring(0, fromIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"tanshiyu1999"},"content":" currStr \u003d currStr.substring(fromIndex + 6);","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"tanshiyu1999"},"content":" int toIndex \u003d currStr.indexOf(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" String from \u003d currStr.substring(0, toIndex);","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":" String to \u003d currStr.substring(toIndex + 4);","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":" Task eventTask \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":" list.add(eventTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"tanshiyu1999"},"content":" FileWriter myWriter \u003d new FileWriter(\"./src/main/data/duke.txt\", true);","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.write( \"E | 0 | \" + description + \"| \" + from + \"| \" + to +\"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"tanshiyu1999"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"tanshiyu1999"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(eventTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\" );","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"tanshiyu1999"},"content":" public static void readData(ArrayList\u003cTask\u003e list, String data) {","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"tanshiyu1999"},"content":" String splitEvent[] \u003d data.split(\" \\\\| \");","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"tanshiyu1999"},"content":" Task eventTask \u003d new Event(splitEvent[2], splitEvent[3] + \" \", splitEvent[4]);","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"tanshiyu1999"},"content":" list.add(eventTask);","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"tanshiyu1999"},"content":" if (splitEvent[1].equals(\"1\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"tanshiyu1999"},"content":" list.get(list.size()-1).markDoneNoPrint();","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":106,"author":{"gitId":"tanshiyu1999"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":107,"author":{"gitId":"tanshiyu1999"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \"to: \" + this.to + \")\";","lastModifiedDate":"2023-08-21"},{"lineNumber":108,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":109,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanshiyu1999":109}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package task;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import dukeException.DukeException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.File; // Import the File class","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.FileNotFoundException; // Import this class to handle errors","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Scanner; // Import the Scanner class to read text files","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" protected String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" public Task() {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" this.description \u003d \"\";","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" return this.description;","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" public static void printHorizontalLine() {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" for (int i \u003d 0; i \u003c 50; i++) {","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" System.out.print(\"_\");","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"\");","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" public void markDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" if (isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println( \"[\" + this.getStatusIcon() + \"] \" + this.getDescription() );","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" public void markDoneNoPrint() {","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" if (isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println( \"[\" + this.getStatusIcon() + \"] \" + this.getDescription() );","lastModifiedDate":"2023-08-21"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-21"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":73,"author":{"gitId":"tanshiyu1999"},"content":" public static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":" int printIndex \u003d i + 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(printIndex + \".\" + list.get(i).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"tanshiyu1999"},"content":" public static void deleteTask(ArrayList\u003cTask\u003e list, String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"tanshiyu1999"},"content":" String splitCommand[] \u003d command.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert a numerical value to delete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"tanshiyu1999"},"content":" Pattern pattern \u003d Pattern.compile(\"-?\\\\d+(\\\\.\\\\d+)?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"tanshiyu1999"},"content":" if (!pattern.matcher(splitCommand[1]).matches()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please enter a numerical value\");","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"tanshiyu1999"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"tanshiyu1999"},"content":" if (Integer.parseInt(splitCommand[1]) \u003e list.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"The delete value is out of range\");","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"tanshiyu1999"},"content":" catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"tanshiyu1999"},"content":" int indexToRemove \u003d Integer.parseInt(command.substring(7)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"tanshiyu1999"},"content":" Task taskToRemove \u003d list.get(indexToRemove);","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(taskToRemove);","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"tanshiyu1999"},"content":" list.remove(indexToRemove);","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"tanshiyu1999"},"content":" File myObj \u003d new File(\"./src/main/data/tmpDuke.txt\");","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"tanshiyu1999"},"content":" myObj.createNewFile();","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"tanshiyu1999"},"content":" int currLine \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"tanshiyu1999"},"content":" File currFile \u003d new File(\"./src/main/data/duke.txt\");","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"tanshiyu1999"},"content":" Scanner myReader \u003d new Scanner(currFile);","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"tanshiyu1999"},"content":" while (myReader.hasNextLine()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"tanshiyu1999"},"content":" if (indexToRemove \u003d\u003d currLine) {","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"tanshiyu1999"},"content":" String data \u003d myReader.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"tanshiyu1999"},"content":" currLine++;","lastModifiedDate":"2023-08-29"},{"lineNumber":121,"author":{"gitId":"tanshiyu1999"},"content":" continue;","lastModifiedDate":"2023-08-29"},{"lineNumber":122,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":123,"author":{"gitId":"tanshiyu1999"},"content":" currLine++;","lastModifiedDate":"2023-08-29"},{"lineNumber":124,"author":{"gitId":"tanshiyu1999"},"content":" String data \u003d myReader.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":125,"author":{"gitId":"tanshiyu1999"},"content":" if (data.equals(\"\")) { break; }","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"tanshiyu1999"},"content":" FileWriter myWriter \u003d new FileWriter(\"./src/main/data/tmpDuke.txt\", true);","lastModifiedDate":"2023-08-29"},{"lineNumber":127,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.write(data + \"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":128,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":130,"author":{"gitId":"tanshiyu1999"},"content":" myReader.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":131,"author":{"gitId":"tanshiyu1999"},"content":" new File(\"./src/main/data/tmpDuke.txt\").renameTo(currFile);","lastModifiedDate":"2023-08-29"},{"lineNumber":132,"author":{"gitId":"tanshiyu1999"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":133,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":134,"author":{"gitId":"tanshiyu1999"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":135,"author":{"gitId":"tanshiyu1999"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":136,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"tanshiyu1999"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":138,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":139,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\" );","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":143,"author":{"gitId":"tanshiyu1999"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":144,"author":{"gitId":"tanshiyu1999"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2023-08-21"},{"lineNumber":145,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":146,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":147,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"tanshiyu1999":147}},{"path":"src/main/java/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package task;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import dukeException.DukeException;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" public static void addTodo(ArrayList\u003cTask\u003e list, String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" String splitCommand[] \u003d command.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Got it, I\u0027ve added this task.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" String description \u003d command.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" Task todoTask \u003d new Todo(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" FileWriter myWriter \u003d new FileWriter(\"./src/main/data/duke.txt\", true);","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.write( \"T | 0 | \" + description + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" list.add(todoTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(todoTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\" );","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" public static void readData(ArrayList\u003cTask\u003e list, String data) {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" String splitTodo[] \u003d data.split(\" \\\\| \");","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" Task todoTask \u003d new Todo(splitTodo[2]);","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" list.add(todoTask);","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" if (splitTodo[1].equals(\"1\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" list.get(list.size()-1).markDoneNoPrint();","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanshiyu1999":66}},{"path":"src/main/java/taskList/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import task.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":" * contains the task list e.g., it has operations to add/delete tasks in the list","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"public class TaskList {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" private ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" public TaskList() {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" list.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" return this.list;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" public void printString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(list);","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanshiyu1999":34}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":" * Deals with interactions with user","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"public class Ui {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":" public Ui() {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" public void printHorizontalLine() {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":" for (int i \u003d 0; i \u003c 50; i++) {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" System.out.print(\"_\");","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"\");","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" public void printStart() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" String name \u003d \"BOB\";","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Hello! I\u0027m \" + name);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" public void printEnd() {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Bye. Hope to see you soon again soon!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" public void printInvalidCommand() {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanshiyu1999":41}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"list","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanshiyu1999":4}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanshiyu1999":2,"-":22}},{"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":"tanshiyu1999"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","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":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" mainClassName \u003d \u0027duke.Main\u0027","lastModifiedDate":"2023-09-01"},{"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":"tanshiyu1999"},"content":" archiveFileName \u003d \"duke.jar\"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanshiyu1999":5,"-":41}},{"path":"src/main/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"D | 0 | test | now","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"T | 0 | test","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"T | 0 | 1","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanshiyu1999":3}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import duke.taskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" * A chatbot inspired by the Java Mascot: duke.Duke.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"public class Duke {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" private Storage storage;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" * Constructor for duke.Duke.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" public Duke() {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" storage.load(this.tasks);","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" * This runs the duke programs main chat functionality,","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" * the while loop continues until user types bye.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" public void run() {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" while(true) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" String command \u003d sc.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" boolean isBye \u003d parser.parseCommand(command, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" if (isBye) { break; }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" Duke bob \u003d new Duke();","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" bob.ui.printStart();","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" bob.run();","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" bob.ui.printEnd();","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"tanshiyu1999":48,"-":2}},{"path":"src/main/java/duke/command/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":" * An enum of commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"public enum Commands {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":" LIST, MARK, UNMARK, DEADLINE, TODO, EVENT, DELETE, FIND","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanshiyu1999":10}},{"path":"src/main/java/duke/dukeException/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke.dukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":" * A general exception that catches all the error that duke.Duke might make.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":" * DukeException constructor.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" * @param errMsg The error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":" public DukeException(String errMsg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":" super(errMsg);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanshiyu1999":18}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import duke.command.Commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import duke.dukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import duke.taskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":" * deals with making sense of the user duke.command.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"public class Parser {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":" * The constructor for the Parser class.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" public Parser() {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" Pattern listRegex \u003d Pattern.compile(\"^\" + Commands.LIST, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" Pattern markRegex \u003d Pattern.compile(\"^\" + Commands.MARK, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" Pattern unmarkRegex \u003d Pattern.compile(\"^\" + Commands.UNMARK, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" Pattern deadlineRegex \u003d Pattern.compile(\"^\" + Commands.DEADLINE, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" Pattern todoRegex \u003d Pattern.compile(\"^\" + Commands.TODO, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" Pattern eventRegex \u003d Pattern.compile(\"^\" + Commands.EVENT, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" Pattern deleteRegex \u003d Pattern.compile(\"^\" + Commands.DELETE, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" Pattern findRegex \u003d Pattern.compile(\"^\" + Commands.FIND, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" * This will be responsible for parsing user duke.command","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" * and the duke.command will be acted out on the TaskList input.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" * @param command User input to be parsed by duke.parser.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" * @param taskList The Tasklist that the duke.command would be used on.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" * @return boolean Returns true if user inputs \"bye\".","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" public boolean parseCommand(String command, TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" return true; // when returning 0, the application closes","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" } else if (listRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" taskList.printList();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" } else if (markRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" int curr \u003d Integer.parseInt(command.substring(5)) - 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" taskList.markCurrentTaskDone(curr);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" } else if (unmarkRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" int curr \u003d Integer.parseInt(command.substring(7)) - 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" taskList.markCurrentTaskUndone(curr);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" } else if (deadlineRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" taskList.addDeadline(command);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" } else if (todoRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" taskList.addTodo(command);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" } else if (eventRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" taskList.addEvent(command);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" } else if (deleteRegex.matcher(command).find()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" taskList.deleteTask(command);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" } else if (findRegex.matcher(command).find()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" taskList.findTasks(command);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Invalid Response\");","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanshiyu1999":73}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import duke.taskList.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" * deals with loading tasks from the file and saving tasks in the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" * The constructor of the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" public Storage() {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" * Load the data from duke.txt into the TaskList inside of the program.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" * @param list the TaskList that the data is loaded to from duke.txt.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" public void load(TaskList list) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" File theDir \u003d new File(\"./src/main/data\");","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" if (!theDir.exists()){","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" theDir.mkdirs();","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" File myObj \u003d new File(\"./src/main/data/duke.txt\");","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" Scanner myReader \u003d new Scanner(myObj);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" while (myReader.hasNextLine()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" String data \u003d myReader.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" String type \u003d data.substring(0,1);","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" switch (type) {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" case \"T\":","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" Todo.readData(list.getList(), data);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" case \"D\":","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" Deadline.readData(list.getList(), data);","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" case \"E\":","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" Event.readData(list.getList(), data);","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" myReader.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" File myObj \u003d new File(\"./src/main/data/duke.txt\");","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanshiyu1999":55}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":" * The Deadline class, which is a type of class.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":" protected String by;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" protected LocalDate date;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" * A constructor of the Deadline class, which can parse","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" * a deadline with input of description and by.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" * @param description The description of the deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" * @param by The deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" this.date \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" * A constructor of the Deadline class, which can parse","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" * a deadline with input of description, by and a date.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" * @param description The description of the deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" * @param by The deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" * @param date A date in LocalDate format.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" public Deadline(String description, String by, LocalDate date) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" this.date \u003d date;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" * Read the Task data and add it into ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" * @param list An ArrayList of Tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" * @param data Data to be read and stored in list.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" public static void readData(ArrayList\u003cTask\u003e list, String data) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" String splitDeadline[] \u003d data.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" Task deadlineTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" LocalDate d1 \u003d LocalDate.parse(splitDeadline[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" deadlineTask \u003d new Deadline(splitDeadline[2] + \" \", splitDeadline[3], d1);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" deadlineTask \u003d new Deadline(splitDeadline[2], splitDeadline[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" list.add(deadlineTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" if (splitDeadline[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" list.get(list.size()-1).markDoneNoPrint();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" * Default System.out when this function is called.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":" * @return string information in the Deadline instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" if (this.date \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"tanshiyu1999"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"tanshiyu1999"},"content":" return \"[D]\" + super.toString() + getDate();","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":" * Get a string representation of date in the MMM d yyyy format.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"tanshiyu1999"},"content":" * @return A string representation of date in MMM d yyyy format.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":" public String getDate() {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tanshiyu1999"},"content":" return this.date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanshiyu1999":85}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":" * The Event class, which is a type of Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"public class Event extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" protected String from;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" protected String to;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" * A constructor for the Event class.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" * @param description Description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" * @param from When the event starts.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" * @param to When the event ends.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" * Read the Task data and add it into ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" * @param list An ArrayList of Tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" * @param data Data to be read and stored in list.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" public static void readData(ArrayList\u003cTask\u003e list, String data) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" String splitEvent[] \u003d data.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" Task eventTask \u003d new Event(splitEvent[2], splitEvent[3] + \" \", splitEvent[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" list.add(eventTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" if (splitEvent[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" list.get(list.size()-1).markDoneNoPrint();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" * Default System.out when this function is called.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" * @return string information in the Event instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \"to: \" + this.to + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanshiyu1999":50}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":" * The Task class, which contains information pertaining to","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":" * Tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"public class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":" protected String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" protected boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":" * Constructor of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" * @param description Description of a Task instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" public Task(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" * A constructor of duke.task. It is called by there is no description input.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" public Task() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" this.description \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" * Get the status icon to whether if the duke.task is done or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" * @return string String representation of whether the duke.task is done.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" return (isDone ? \"X\" : \" \"); // mark done duke.task with X","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" * Get the description of the class.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" * @return string The string representation of the class description.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" return this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" * This method prints a horizonyal line.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" public static void printHorizontalLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":" for (int i \u003d 0; i \u003c 50; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" System.out.print(\"_\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" * Mark the duke.task as done if it has been done.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" public void markDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Nice! I\u0027ve marked this duke.task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println( \"[\" + this.getStatusIcon() + \"] \" + this.getDescription() );","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":" * Mark the duke.task as done without printing it.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"tanshiyu1999"},"content":" public void markDoneNoPrint() {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"tanshiyu1999"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tanshiyu1999"},"content":" * Mark the duke.task as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":" public void markUndone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"tanshiyu1999"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"OK, I\u0027ve marked this duke.task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println( \"[\" + this.getStatusIcon() + \"] \" + this.getDescription() );","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"tanshiyu1999"},"content":" * Default System.out for Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"tanshiyu1999"},"content":" * @return The System.out for the class.","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"tanshiyu1999"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"tanshiyu1999"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanshiyu1999":103}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":" * The Todo class, which is a type of Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":" * The constructor of Todo","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":" * @param description The description of todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" public Todo(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" super(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" * Read the Task data and add it into ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" * @param list An ArrayList of Tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" * @param data Data to be read and stored in list.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" public static void readData(ArrayList\u003cTask\u003e list, String data) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" String splitTodo[] \u003d data.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" Task todoTask \u003d new Todo(splitTodo[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" list.add(todoTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" if (splitTodo[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" list.get(list.size()-1).markDoneNoPrint();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" * Default System.out when this function is called.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" * @return string information in the Todo instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanshiyu1999":42}},{"path":"src/main/java/duke/taskList/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke.taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import duke.dukeException.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" * Contains the duke.task list e.g., it has operations to add/delete tasks in the list","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" private ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":" * Constructor for TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" * Get the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" * @return ArrayList returns the ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" return this.list;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" * Prints a horizontal line.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" public static void printHorizontalLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" for (int i \u003d 0; i \u003c 50; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":" System.out.print(\"_\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tanshiyu1999"},"content":" * Deletes a duke.task from ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tanshiyu1999"},"content":" * @param command The duke.command specifying which duke.task to delete.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanshiyu1999"},"content":" public void deleteTask(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tanshiyu1999"},"content":" String splitCommand[] \u003d command.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert a numerical value to delete\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tanshiyu1999"},"content":" Pattern pattern \u003d Pattern.compile(\"-?\\\\d+(\\\\.\\\\d+)?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"tanshiyu1999"},"content":" if (!pattern.matcher(splitCommand[1]).matches()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please enter a numerical value\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"tanshiyu1999"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"tanshiyu1999"},"content":" if (Integer.parseInt(splitCommand[1]) \u003e list.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"The delete value is out of range\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tanshiyu1999"},"content":" catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Noted. I\u0027ve removed this duke.task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tanshiyu1999"},"content":" int indexToRemove \u003d Integer.parseInt(command.substring(7)) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"tanshiyu1999"},"content":" Task taskToRemove \u003d list.get(indexToRemove);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(taskToRemove);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"tanshiyu1999"},"content":" list.remove(indexToRemove);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"tanshiyu1999"},"content":" File myObj \u003d new File(\"./src/main/data/tmpDuke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"tanshiyu1999"},"content":" myObj.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"tanshiyu1999"},"content":" int currLine \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"tanshiyu1999"},"content":" File currFile \u003d new File(\"./src/main/data/duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"tanshiyu1999"},"content":" Scanner myReader \u003d new Scanner(currFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"tanshiyu1999"},"content":" while (myReader.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"tanshiyu1999"},"content":" if (indexToRemove \u003d\u003d currLine) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"tanshiyu1999"},"content":" String data \u003d myReader.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"tanshiyu1999"},"content":" currLine++;","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"tanshiyu1999"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"tanshiyu1999"},"content":" currLine++;","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"tanshiyu1999"},"content":" String data \u003d myReader.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"tanshiyu1999"},"content":" if (data.equals(\"\")) { break; }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"tanshiyu1999"},"content":" FileWriter myWriter \u003d new FileWriter(\"./src/main/data/tmpDuke.txt\", true);","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.write(data + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"tanshiyu1999"},"content":" myReader.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"tanshiyu1999"},"content":" new File(\"./src/main/data/tmpDuke.txt\").renameTo(currFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"tanshiyu1999"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"tanshiyu1999"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"tanshiyu1999"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"tanshiyu1999"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\" );","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"tanshiyu1999"},"content":" * Adds a event into ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"tanshiyu1999"},"content":" * @param command The duke.command specifying what Event to add.","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"tanshiyu1999"},"content":" public void addEvent(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"tanshiyu1999"},"content":"// event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"tanshiyu1999"},"content":" String splitCommand[] \u003d command.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"tanshiyu1999"},"content":" boolean hasFrom \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"tanshiyu1999"},"content":" boolean hasTo \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"duke.task.Event Argument Empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"tanshiyu1999"},"content":" for (int i \u003d 0; i \u003c splitCommand.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand[i].equals(\"/from\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"tanshiyu1999"},"content":" hasFrom \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"tanshiyu1999"},"content":" if (i \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"There is no description\");","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"tanshiyu1999"},"content":" if (i \u003d\u003d splitCommand.length - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert /from dates\");","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand[i + 1].equals(\"/to\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert /from dates\");","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"tanshiyu1999"},"content":" if (hasFrom \u0026\u0026 splitCommand[i].equals(\"/to\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"tanshiyu1999"},"content":" hasTo \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"tanshiyu1999"},"content":" if (i \u003d\u003d splitCommand.length - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert /to dates\");","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"tanshiyu1999"},"content":" if (hasFrom \u003d\u003d false) {","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert event is /from when\");","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"tanshiyu1999"},"content":" if (hasTo \u003d\u003d false) {","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert event is /to when\");","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"tanshiyu1999"},"content":" catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Got it, I\u0027ve added this event.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"tanshiyu1999"},"content":" String currStr \u003d command.substring(6);","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"tanshiyu1999"},"content":" int fromIndex \u003d currStr.indexOf(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"tanshiyu1999"},"content":" String description \u003d currStr.substring(0, fromIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"tanshiyu1999"},"content":" currStr \u003d currStr.substring(fromIndex + 6);","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"tanshiyu1999"},"content":" int toIndex \u003d currStr.indexOf(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"tanshiyu1999"},"content":" String from \u003d currStr.substring(0, toIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"tanshiyu1999"},"content":" String to \u003d currStr.substring(toIndex + 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"tanshiyu1999"},"content":" Task eventTask \u003d new Event(description, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"tanshiyu1999"},"content":" list.add(eventTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"tanshiyu1999"},"content":" FileWriter myWriter \u003d new FileWriter(\"./src/main/data/duke.txt\", true);","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.write( \"E | 0 | \" + description + \"| \" + from + \"| \" + to +\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"tanshiyu1999"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"tanshiyu1999"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(eventTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\" );","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"tanshiyu1999"},"content":" * Add a Todo into the ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"tanshiyu1999"},"content":" * @param command The duke.command specifying what todo to add.","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"tanshiyu1999"},"content":" public void addTodo(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"tanshiyu1999"},"content":" String splitCommand[] \u003d command.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"tanshiyu1999"},"content":" catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Got it, I\u0027ve added this duke.task.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"tanshiyu1999"},"content":" String description \u003d command.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"tanshiyu1999"},"content":" Task todoTask \u003d new Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"tanshiyu1999"},"content":" FileWriter myWriter \u003d new FileWriter(\"./src/main/data/duke.txt\", true);","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.write( \"T | 0 | \" + description + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"tanshiyu1999"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"tanshiyu1999"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"tanshiyu1999"},"content":" list.add(todoTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(todoTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\" );","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"tanshiyu1999"},"content":" * Add a deadline into the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"tanshiyu1999"},"content":" * @param command Command specifying what deadline to add.","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"tanshiyu1999"},"content":" public void addDeadline(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"tanshiyu1999"},"content":" String splitCommand[] \u003d command.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"tanshiyu1999"},"content":" boolean hasBy \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"duke.task.Deadline Argument Empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":246,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":247,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"tanshiyu1999"},"content":" for (int i \u003d 0; i \u003c splitCommand.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand[i].equals(\"/by\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"tanshiyu1999"},"content":" hasBy \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"tanshiyu1999"},"content":" if (i \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"There is no description\");","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"tanshiyu1999"},"content":" if (i \u003d\u003d splitCommand.length - 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":256,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert the deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":260,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"tanshiyu1999"},"content":" if (hasBy \u003d\u003d false) {","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"Please insert deadline is /by when\");","lastModifiedDate":"2023-09-01"},{"lineNumber":263,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":264,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"tanshiyu1999"},"content":" catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":270,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":272,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":273,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Got it, I\u0027ve added this deadline.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":274,"author":{"gitId":"tanshiyu1999"},"content":" String currStr \u003d command.substring(9);","lastModifiedDate":"2023-09-01"},{"lineNumber":275,"author":{"gitId":"tanshiyu1999"},"content":" int dateIndex \u003d currStr.indexOf(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":276,"author":{"gitId":"tanshiyu1999"},"content":" String date \u003d currStr.substring(dateIndex + 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"tanshiyu1999"},"content":" String description \u003d currStr.substring(0, dateIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":278,"author":{"gitId":"tanshiyu1999"},"content":" Task deadlineTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":279,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":280,"author":{"gitId":"tanshiyu1999"},"content":" LocalDate d1 \u003d LocalDate.parse(date);","lastModifiedDate":"2023-09-01"},{"lineNumber":281,"author":{"gitId":"tanshiyu1999"},"content":" deadlineTask \u003d new Deadline(description, date, d1);","lastModifiedDate":"2023-09-01"},{"lineNumber":282,"author":{"gitId":"tanshiyu1999"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":283,"author":{"gitId":"tanshiyu1999"},"content":" deadlineTask \u003d new Deadline(description, date);;","lastModifiedDate":"2023-09-01"},{"lineNumber":284,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":285,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":286,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":287,"author":{"gitId":"tanshiyu1999"},"content":" FileWriter myWriter \u003d new FileWriter(\"./src/main/data/duke.txt\", true);","lastModifiedDate":"2023-09-01"},{"lineNumber":288,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.write( \"D | 0 | \" + description + \"| \" + date + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":289,"author":{"gitId":"tanshiyu1999"},"content":" myWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":290,"author":{"gitId":"tanshiyu1999"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":291,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":292,"author":{"gitId":"tanshiyu1999"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":293,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":294,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":295,"author":{"gitId":"tanshiyu1999"},"content":" list.add(deadlineTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":296,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(deadlineTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":297,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\" );","lastModifiedDate":"2023-09-01"},{"lineNumber":298,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":299,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":300,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":301,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":302,"author":{"gitId":"tanshiyu1999"},"content":" * Mark the duke.task if duke.task is undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":303,"author":{"gitId":"tanshiyu1999"},"content":" * @param index Specifying which duke.task in the ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":304,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":305,"author":{"gitId":"tanshiyu1999"},"content":" public void markCurrentTaskUndone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":306,"author":{"gitId":"tanshiyu1999"},"content":" list.get(index).markUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":307,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":308,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":309,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":310,"author":{"gitId":"tanshiyu1999"},"content":" * Mark the duke.task if duke.task is done,","lastModifiedDate":"2023-09-01"},{"lineNumber":311,"author":{"gitId":"tanshiyu1999"},"content":" * @param index Specifying which duke.task in the ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":312,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":313,"author":{"gitId":"tanshiyu1999"},"content":" public void markCurrentTaskDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":314,"author":{"gitId":"tanshiyu1999"},"content":" list.get(index).markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":315,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":316,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":317,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":318,"author":{"gitId":"tanshiyu1999"},"content":" * Print out all the tasks in the ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":319,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":320,"author":{"gitId":"tanshiyu1999"},"content":" public void printList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":321,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":322,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":323,"author":{"gitId":"tanshiyu1999"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":324,"author":{"gitId":"tanshiyu1999"},"content":" int printIndex \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":325,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(printIndex + \".\" + list.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":326,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":327,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":328,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":329,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":330,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":331,"author":{"gitId":"tanshiyu1999"},"content":" * Finds the tasks in the command and print them out.","lastModifiedDate":"2023-09-01"},{"lineNumber":332,"author":{"gitId":"tanshiyu1999"},"content":" * @param command The command specifying the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":333,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":334,"author":{"gitId":"tanshiyu1999"},"content":" public void findTasks(String command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":335,"author":{"gitId":"tanshiyu1999"},"content":" String splitCommand[] \u003d command.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":336,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":337,"author":{"gitId":"tanshiyu1999"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":338,"author":{"gitId":"tanshiyu1999"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":339,"author":{"gitId":"tanshiyu1999"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":340,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":341,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":342,"author":{"gitId":"tanshiyu1999"},"content":" catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":343,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":344,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":345,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":346,"author":{"gitId":"tanshiyu1999"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":347,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":348,"author":{"gitId":"tanshiyu1999"},"content":" String toFind \u003d command.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":349,"author":{"gitId":"tanshiyu1999"},"content":" int printIndex \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":350,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":351,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Here are the matching tasks in your list: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":352,"author":{"gitId":"tanshiyu1999"},"content":" for (Task task : list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":353,"author":{"gitId":"tanshiyu1999"},"content":" if (task.getDescription().contains(toFind)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":354,"author":{"gitId":"tanshiyu1999"},"content":" printIndex \u003d printIndex + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":355,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(printIndex + \".\" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":356,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":357,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":358,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":359,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":360,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":361,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":362,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":363,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanshiyu1999":363}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":" * Deals with interactions with user.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"public class Ui {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":" * Constructor for Ui.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" public Ui() {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" * Prints a horizontal line.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" public void printHorizontalLine() {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" for (int i \u003d 0; i \u003c 50; i++) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":" System.out.print(\"_\");","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"\");","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanshiyu1999"},"content":" * Print the welcome message when the user launch the program.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanshiyu1999"},"content":" public void printStart() {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"tanshiyu1999"},"content":" String name \u003d \"BOB\";","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Hello! I\u0027m \" + name);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"tanshiyu1999"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanshiyu1999"},"content":" * Print the goodbye message when the user logs out.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanshiyu1999"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanshiyu1999"},"content":" public void printEnd() {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"tanshiyu1999"},"content":" System.out.println(\"Bye. Hope to see you soon again soon!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"tanshiyu1999"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanshiyu1999":49}},{"path":"src/test/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":" public void listRegex_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":" assertEquals(true, parser.listRegex.matcher(\"list deez nuts\").find());","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" public void findRegex_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":" assertEquals(true, parser.findRegex.matcher(\"find deez nuts\").find());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanshiyu1999":20}},{"path":"src/test/java/duke/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanshiyu1999"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanshiyu1999"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanshiyu1999"},"content":"class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanshiyu1999"},"content":" Task task \u003d new Task(\"Test class\");","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanshiyu1999"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanshiyu1999"},"content":" public void testGetDescription_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanshiyu1999"},"content":" assertEquals(\"Test class\", task.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanshiyu1999"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanshiyu1999"},"content":" public void testToString_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanshiyu1999"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanshiyu1999"},"content":" assertEquals(\"[ ] Test class\", task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanshiyu1999"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanshiyu1999"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanshiyu1999":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanshiyu1999"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"tanshiyu1999"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tanshiyu1999"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tanshiyu1999"},"content":"list","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanshiyu1999":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":"tanshiyu1999"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"tanshiyu1999":1,"-":20}}] diff --git a/tanshiyu1999_ip_master/commits.json b/tanshiyu1999_ip_master/commits.json index 16bd928d..df5dd321 100644 --- a/tanshiyu1999_ip_master/commits.json +++ b/tanshiyu1999_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tanshiyu1999":[{"date":"2023-08-19","commitResults":[{"hash":"0e1a62c71160c9794efa9b6f0a972d1715dda10a","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":6}}},{"hash":"1c9b9524e6134e44475560c2a8e5c5e0f9eae77f","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":1}}}]},{"date":"2023-08-20","commitResults":[{"hash":"5e578beac6ee7931d96a45e0a28607fca88ebe48","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":1}}},{"hash":"9ff508f56817f2df41a953695bb60fb8ca4e489b","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":9}}}]},{"date":"2023-08-21","commitResults":[{"hash":"19ce3ef99089c8f6952b1627eaed728d163f0f2e","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":21}}},{"hash":"3c532bb8dbf91846307a248f44d9740e7778c568","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"21d4162cfe3fa2ff1dd8c99d960e2c29df8187f8","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":21}}}]},{"date":"2023-08-22","commitResults":[{"hash":"b9a0dea1ac7d07e37ce2c174249b5d17070aa90f","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":18}}},{"hash":"0558010688adebdb59b1998f151dc43028f80a51","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}}]},{"date":"2023-08-24","commitResults":[{"hash":"c0628ede09dea6de0046b4140bbaa60e2f7533ef","isMergeCommit":false,"messageTitle":"Improvement to Error Handling \u0026 Enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":227,"deletions":94}}}]},{"date":"2023-08-28","commitResults":[{"hash":"8d8cea01658e1f09b13259a2e8144d4586db4c75","isMergeCommit":false,"messageTitle":"Level-7 code done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":8}}},{"hash":"01ad289952f35651082fecca7eedfab986dffa01","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"Level 7 Completed\n","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"6918332d9ae967e4975924f3da28b7665ed942c1","isMergeCommit":false,"messageTitle":"Level-8 Branch Minimal Task Done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":27}}},{"hash":"e0a2eb9aa5e0232d0818d7091aa8e50b1034f5be","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"facb8a9e349875a6301b03893f19263ae421fa49","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":268,"deletions":136}}},{"hash":"716e726de889dd0bfa5093bb342d3900d458e618","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"7f374d9c9f0e5a02dad90466dcc57ddfa93f076b","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"tanshiyu1999":{"java":690,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":4}},"authorContributionVariance":{"tanshiyu1999":22404.305},"authorDisplayNameMap":{"tanshiyu1999":"CS2103T-W08-3 TAN ..I YU"}} +{"authorDailyContributionsMap":{"tanshiyu1999":[{"date":"2023-08-19","commitResults":[{"hash":"0e1a62c71160c9794efa9b6f0a972d1715dda10a","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":6}}},{"hash":"1c9b9524e6134e44475560c2a8e5c5e0f9eae77f","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":1}}}]},{"date":"2023-08-20","commitResults":[{"hash":"5e578beac6ee7931d96a45e0a28607fca88ebe48","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":1}}},{"hash":"9ff508f56817f2df41a953695bb60fb8ca4e489b","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":9}}}]},{"date":"2023-08-21","commitResults":[{"hash":"19ce3ef99089c8f6952b1627eaed728d163f0f2e","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":21}}},{"hash":"3c532bb8dbf91846307a248f44d9740e7778c568","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"21d4162cfe3fa2ff1dd8c99d960e2c29df8187f8","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":21}}}]},{"date":"2023-08-22","commitResults":[{"hash":"b9a0dea1ac7d07e37ce2c174249b5d17070aa90f","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":18}}},{"hash":"0558010688adebdb59b1998f151dc43028f80a51","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}}]},{"date":"2023-08-24","commitResults":[{"hash":"c0628ede09dea6de0046b4140bbaa60e2f7533ef","isMergeCommit":false,"messageTitle":"Improvement to Error Handling \u0026 Enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":227,"deletions":94}}}]},{"date":"2023-08-28","commitResults":[{"hash":"8d8cea01658e1f09b13259a2e8144d4586db4c75","isMergeCommit":false,"messageTitle":"Level-7 code done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":8}}},{"hash":"01ad289952f35651082fecca7eedfab986dffa01","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"Level 7 Completed\n","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"6918332d9ae967e4975924f3da28b7665ed942c1","isMergeCommit":false,"messageTitle":"Level-8 Branch Minimal Task Done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":27}}},{"hash":"e0a2eb9aa5e0232d0818d7091aa8e50b1034f5be","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"facb8a9e349875a6301b03893f19263ae421fa49","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":268,"deletions":136}}},{"hash":"716e726de889dd0bfa5093bb342d3900d458e618","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"7f374d9c9f0e5a02dad90466dcc57ddfa93f076b","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"9603068d83b6b7ca423b95fb84b324239d3084b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"2b38bb428dc33509ee91bf25839bff229abc4fd6","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":1},"txt":{"insertions":3,"deletions":0},"java":{"insertions":796,"deletions":551},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"b4744167fd3ab4be667d5cf36e6707024d2438ae","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"efc830dae31b2fd329218bf913a543c21bb206b6","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"bbf764736be7e851008edb1f3f88d74c3302f87b","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"357b05c24b9e03c75c3d7f7eaef170c5dd89a8e6","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"92649f8b062dd997cd64c4397c0ee0c16096f786","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"tanshiyu1999":{"java":937,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":5,"txt":7}},"authorContributionVariance":{"tanshiyu1999":120353.95},"authorDisplayNameMap":{"tanshiyu1999":"CS2103T-W08-3 TAN ..I YU"}} diff --git a/tanteckfang_ip_master/authorship.json b/tanteckfang_ip_master/authorship.json index 81537725..ba242867 100644 --- a/tanteckfang_ip_master/authorship.json +++ b/tanteckfang_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/chatbot.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"T | 1 | borrow book","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"E | 1 | project meeting | 2024-08-13 14:00 | 2024-08-15 23:00","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":2}},{"path":"src/main/java/chatbot/Chatbot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"public class Chatbot {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":" private TaskManager taskManager;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" public Chatbot() {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" this.taskManager \u003d new TaskManager();","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" public void run() {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" ui.showGreeting();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" Command command \u003d Parser.parseCommand(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" command.execute(taskManager, ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" isExit \u003d command.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" } catch (ChatbotException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" ui.showError(\"An unexpected error occurred.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" Chatbot Sara \u003d new Chatbot();","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" Sara.run();","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanteckfang":41}},{"path":"src/main/java/chatbot/ChatbotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"public class ChatbotException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":" public ChatbotException(String errorMessage) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanteckfang":7}},{"path":"src/main/java/chatbot/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.command.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":" public enum TaskType {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":" TODO, DEADLINE, EVENT, MARK,UNMARK ,UNKNOWN, BYE;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" public static TaskType determineTaskType(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" if (userInput.startsWith(\"todo\")) return TaskType.TODO;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" if (userInput.startsWith(\"deadline\")) return TaskType.DEADLINE;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" if (userInput.startsWith(\"event\")) return TaskType.EVENT;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" if (userInput.startsWith(\"mark\")) return TaskType.MARK;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" if (userInput.startsWith(\"unmark\")) return TaskType.UNMARK;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" if (\"bye\".equalsIgnoreCase(userInput)) return TaskType.BYE;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" return TaskType.UNKNOWN;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" public static String[] parseTodo(String userInput) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" if (userInput.length() \u003c\u003d 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" String taskDescription \u003d userInput.substring(5);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" return new String[]{taskDescription};","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" public static String[] parseDeadline(String userInput) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" String[] parts \u003d userInput.substring(9).split(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The date for a deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" String taskDescription \u003d parts[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" String date \u003d parts[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":" if (date.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The date for a deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanteckfang"},"content":" return parts;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanteckfang"},"content":" public static String[] parseEvent(String userInput) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanteckfang"},"content":" String[] parts \u003d userInput.substring(6).split(\"/from|/to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tanteckfang"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The start or end date for an event cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tanteckfang"},"content":" return parts;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tanteckfang"},"content":" public static int parseMark(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tanteckfang"},"content":" return Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tanteckfang"},"content":" public static Command parseCommand(String userInput) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tanteckfang"},"content":" TaskType taskType \u003d determineTaskType(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tanteckfang"},"content":" Command command;","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tanteckfang"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tanteckfang"},"content":" case TODO:","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanteckfang"},"content":" String[] todoInput \u003d parseTodo(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tanteckfang"},"content":" command \u003d new AddTodoCommand(todoInput[0].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"tanteckfang"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tanteckfang"},"content":" String[] deadlineInput \u003d parseDeadline(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"tanteckfang"},"content":" command \u003d new AddDeadlineCommand(deadlineInput[0].trim(), deadlineInput[1].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tanteckfang"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tanteckfang"},"content":" String[] eventInput \u003d parseEvent(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"tanteckfang"},"content":" command \u003d new AddEventCommand(eventInput[0].trim(), eventInput[1].trim(), eventInput[2].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"tanteckfang"},"content":" case MARK:","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"tanteckfang"},"content":" int markInt \u003d parseMark(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"tanteckfang"},"content":" command \u003d new MarkCommand(markInt);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"tanteckfang"},"content":" case UNMARK:","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"tanteckfang"},"content":" int unmarkInt \u003d parseMark(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tanteckfang"},"content":" command \u003d new UnmarkCommand(unmarkInt);","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"tanteckfang"},"content":" case BYE:","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"tanteckfang"},"content":" command \u003d new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"tanteckfang"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"tanteckfang"},"content":" command \u003d new UnknownCommand(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"tanteckfang"},"content":" return command;","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":95}},{"path":"src/main/java/chatbot/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" return scanner.nextLine().trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" public void showGreeting() {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Hello! I\u0027m Sara\");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" public void showFarewell() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + message);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" public void showTodo(Task t, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + t.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanteckfang":44}},{"path":"src/main/java/chatbot/command/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"public class AddDeadlineCommand extends chatbot.command.Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":" private String time;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" public AddDeadlineCommand(String description, String time) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" this.time \u003d time;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" public void execute(chatbot.task.TaskManager taskManager, Ui ui) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" taskManager.addDeadlines(description, time);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":25}},{"path":"src/main/java/chatbot/command/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"public class AddEventCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":" private String start;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" private String end;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" public AddEventCommand(String description, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" public void execute(TaskManager taskManager, Ui ui) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" taskManager.addEvents(description, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":27}},{"path":"src/main/java/chatbot/command/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"public class AddTodoCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" public void execute(TaskManager taskManager, Ui ui) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" taskManager.addTodo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":23}},{"path":"src/main/java/chatbot/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" public abstract void execute(TaskManager taskManager, Ui ui) throws ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":10}},{"path":"src/main/java/chatbot/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":" public void execute(TaskManager taskManager, Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" ui.showFarewell();","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":19}},{"path":"src/main/java/chatbot/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" public void execute(TaskManager taskManager, Ui ui) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" taskManager.taskDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":23}},{"path":"src/main/java/chatbot/command/UnknownCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"public class UnknownCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" public UnknownCommand (String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" public void execute(TaskManager taskManager, Ui ui) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" if (\"list\".equalsIgnoreCase(userInput)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" taskManager.printTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" taskManager.deleteTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" } else if (userInput.startsWith(\"task on\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" String date \u003d userInput.split(\" \")[2]; // Changed from 1 to 2","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" taskManager.printTasksOnDate(date);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":34}},{"path":"src/main/java/chatbot/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" public void execute(TaskManager taskManager, Ui ui) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" taskManager.unMarktask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":23}},{"path":"src/main/java/chatbot/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import java.io.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":" private final String FILEPATH;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":" public Storage(String FILEPATH) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" this.FILEPATH \u003d FILEPATH;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" File directory \u003d new File(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" File file \u003d new File(FILEPATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\"Error initializing file: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" public void saveToFile(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" FileWriter fileWriter \u003d new FileWriter(FILEPATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(fileWriter);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" for (Task task : tasks.getAllTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" bufferedWriter.write(task.toFileFormat());","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" bufferedWriter.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tanteckfang"},"content":" public TaskList loadFromFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanteckfang"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"tanteckfang"},"content":" FileReader fileReader \u003d new FileReader(FILEPATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"tanteckfang"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"tanteckfang"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"tanteckfang"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d Task.fromFileFormat(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"tanteckfang"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"tanteckfang"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"tanteckfang"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"tanteckfang"},"content":" // Handle corrupted line here for stretch goal","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\"Warning: Corrupted line skipped in file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"tanteckfang"},"content":" bufferedReader.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"tanteckfang"},"content":" fileReader.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"tanteckfang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\"Error reading from file: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"tanteckfang"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanteckfang":68}},{"path":"src/main/java/chatbot/task/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"public class Deadlines extends Task{","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":" public Deadlines(String description, LocalDateTime date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" return \"[D]\" + super.toString() + \" (by: \" + date.format(formatter) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" String dateStr \u003d date.format(formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" String done \u003d isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" return String.format(\"D | %s | %s | %s\", done, description, dateStr);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" public LocalDateTime getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" return date;","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanteckfang":31}},{"path":"src/main/java/chatbot/task/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"public class Events extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":" private LocalDateTime startDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" private LocalDateTime endDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" public Events(String description, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" public LocalDateTime getStartDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" return startDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" public LocalDateTime getEndDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" return endDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" return \"[E][\" + getStatusIcon() + \"] \" + description","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" + \" (from: \" + startDateTime.format(formatter) + \" to: \" + endDateTime.format(formatter) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" String startStr \u003d startDateTime.format(formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" String endStr \u003d endDateTime.format(formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" String done \u003d isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" return String.format(\"E | %s | %s | %s | %s\", done, description, startStr, endStr);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanteckfang":38}},{"path":"src/main/java/chatbot/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" public void unMark() {","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" String done \u003d isDone ? \"1\" :\"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" return String.format(\"T | %s | %s\", done, description);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" public static Task fromFileFormat(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" String[] parts \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":" // Error handling for incorrect line format","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":" // Handle this case appropriately","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanteckfang"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"tanteckfang"},"content":" String type \u003d parts[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"tanteckfang"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"tanteckfang"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"tanteckfang"},"content":" switch (type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"tanteckfang"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"tanteckfang"},"content":" task \u003d new Todos(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"tanteckfang"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"tanteckfang"},"content":" String date \u003d parts[3].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"tanteckfang"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(date, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"tanteckfang"},"content":" task \u003d new Deadlines(description, dateTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"tanteckfang"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"tanteckfang"},"content":" String start \u003d parts[3].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"tanteckfang"},"content":" String end \u003d parts[4].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"tanteckfang"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(start, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"tanteckfang"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(end, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"tanteckfang"},"content":" task \u003d new Events(description, startDateTime, endDateTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"tanteckfang"},"content":" if (task !\u003d null \u0026\u0026 isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"tanteckfang"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"tanteckfang"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanteckfang":77}},{"path":"src/main/java/chatbot/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" if (index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" return tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" public void markTaskDone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" public void unMarkTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":" task.unMark();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanteckfang"},"content":" public void printTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanteckfang"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanteckfang"},"content":" System.out.printf(\" %d.%s\\n\", i + 1, tasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tanteckfang"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tanteckfang"},"content":" return tasks.remove(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tanteckfang"},"content":" public List\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tanteckfang"},"content":" return new ArrayList\u003c\u003e(this.tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":60}},{"path":"src/main/java/chatbot/task/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"import chatbot.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":"import chatbot.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"public class TaskManager {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" public TaskManager(){","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" this.storage \u003d new Storage( \"./data/chatbot.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" this.tasks \u003d storage.loadFromFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" private void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" return tasks.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" public void addTodo(String t) throws ChatbotException {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" if (t \u003d\u003d null || t.trim().isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d new Todos(t);","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"tanteckfang"},"content":" public void addDeadlines(String t, String date) throws ChatbotException {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"tanteckfang"},"content":" if (t \u003d\u003d null || t.trim().isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The description of a deadlines cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"tanteckfang"},"content":" else if (date \u003d\u003d null || date.trim().isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The date of a deadlines cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"tanteckfang"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(date, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d new Deadlines(t, dateTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"tanteckfang"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"tanteckfang"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Invalid date/time format. Please enter in dd/MM/yyyy HHmm format.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"tanteckfang"},"content":" public void addEvents(String t, String start, String end) throws ChatbotException {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"tanteckfang"},"content":" if (t \u003d\u003d null || t.trim().isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The description of a event cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"tanteckfang"},"content":" else if (start \u003d\u003d null || start.trim().isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The starting date of a event cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"tanteckfang"},"content":" } else if (end \u003d\u003d null || end.trim().isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The end time of a event cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"tanteckfang"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(start, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"tanteckfang"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(end, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"tanteckfang"},"content":" Events newEvent \u003d new Events(t, startDateTime, endDateTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"tanteckfang"},"content":" tasks.add(newEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Got it. I\u0027ve added this event:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + newEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"tanteckfang"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Invalid date/time format. Please enter in dd/MM/yyyy HHmm format.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":95,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":96,"author":{"gitId":"tanteckfang"},"content":" public void taskDone(int index) {","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"tanteckfang"},"content":" tasks.markTaskDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + tasks.getTask(index));","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"tanteckfang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Oops! Please enter a valid task number to mark.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"tanteckfang"},"content":" public void unMarktask(int index) {","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"tanteckfang"},"content":" tasks.unMarkTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + tasks.getTask(index));","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"tanteckfang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Oops! Please enter a valid task number to unmark.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":124,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":125,"author":{"gitId":"tanteckfang"},"content":" public void printTasks() {","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"tanteckfang"},"content":" tasks.printTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":128,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"tanteckfang"},"content":" public void deleteTask(int index) throws ChatbotException {","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"tanteckfang"},"content":" Task removedTask \u003d tasks.removeTask(index); // Subtracting 1 because ArrayList is 0-based.","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + removedTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"tanteckfang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"Please provide a valid task number to delete.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"tanteckfang"},"content":" public void printTasksOnDate(String date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"tanteckfang"},"content":" LocalDate targetDate \u003d LocalDate.parse(date, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"tanteckfang"},"content":" for (Task task : tasks.getAllTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"tanteckfang"},"content":" if (task instanceof Deadlines) {","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"tanteckfang"},"content":" Deadlines deadlineTask \u003d (Deadlines) task;","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"tanteckfang"},"content":" if (targetDate.equals(deadlineTask.getDateTime().toLocalDate())) {","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"tanteckfang"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanteckfang":162}},{"path":"src/main/java/chatbot/task/Todos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"public class Todos extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":" public Todos(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" String done \u003d isDone ? \"1\" :\"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" return String.format(\"T | %s | %s\", done,description);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanteckfang":18}},{"path":"text-ui-test/data/chatbot.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"T | 0 | borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"D | 0 | return book | Sunday","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"D | 0 | project meeting | Mon 2pm | 4pm","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"D | 1 | do homework | no idea :-p","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanteckfang":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"deadline return book /by 17/02/2024 1200","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"event project meeting /from 13/08/2024 1400 /to 15/08/2024 2300","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"deadline happy","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":"mark 1","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"mark 3","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"unmark 1","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":"delete 2","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanteckfang":13}},{"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":"tanteckfang"},"content":"java -classpath ../bin Chatbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-22"},{"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":{"tanteckfang":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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" mainClass.set(\"chatbot.Chatbot\")","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" archiveBaseName \u003d \"chatbot\"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"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":{"tanteckfang":4,"-":41}},{"path":"data/chatbot.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"T | 1 | borrow book","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"E | 1 | project meeting | 2024-08-13 14:00 | 2024-08-15 23:00","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"D | 0 | mother | 2023-02-12 12:00","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"-"},"content":"E | 0 | comp | 2023-02-12 12:00 | 2023-12-13 23:00","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":"T | 0 | rest","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanteckfang":2,"-":4}},{"path":"src/main/java/chatbot/Chatbot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * The Chatbot class initialises the chatbot application and handles the main","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * event.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"public class Chatbot {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" private TaskManager taskManager;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * contructor for Chatbot class.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" public Chatbot() {","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" this.taskManager \u003d new TaskManager();","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Run chatbot class.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" public void run() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" ui.showGreeting();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" Command command \u003d Parser.parseCommand(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" command.execute(taskManager, ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" isExit \u003d command.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" } catch (ChatbotException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" ui.showError(\"An unexpected error occurred.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * The Chatbot class initialises the chatbot application and handles the main","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * event loop.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tanteckfang"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Chatbot sara \u003d new Chatbot();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":" sara.run();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanteckfang":36,"-":17}},{"path":"src/main/java/chatbot/ChatbotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Exception class specific for chatbot application","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"public class ChatbotException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * constructor for ChatbotException class","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * @param errorMessage error message","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" public ChatbotException(String errorMessage) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanteckfang":7,"-":8}},{"path":"src/main/java/chatbot/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.command.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Class which deals with making sense of the user command.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Enumeration representing different types of tasks and commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" public enum TaskType {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" TODO, DEADLINE, EVENT, MARK, UNMARK, UNKNOWN, BYE;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * method to determine types of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param userInput user command","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return Task type of the command","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" public static TaskType determineTaskType(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" if (userInput.startsWith(\"todo\")) return TaskType.TODO;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" if (userInput.startsWith(\"deadline\")) return TaskType.DEADLINE;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" if (userInput.startsWith(\"event\")) return TaskType.EVENT;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" if (userInput.startsWith(\"mark\")) return TaskType.MARK;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" if (userInput.startsWith(\"unmark\")) return TaskType.UNMARK;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" if (\"bye\".equalsIgnoreCase(userInput)) return TaskType.BYE;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" return TaskType.UNKNOWN;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parse the user command which its task type is todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param userInput user command","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return array of string after parsing the command","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ChatbotException if the description is empty","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":" public static String[] parseTodo(String userInput) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":" if (userInput.length() \u003c\u003d 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanteckfang"},"content":" String taskDescription \u003d userInput.substring(5);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanteckfang"},"content":" return new String[]{taskDescription};","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Parse the user command which its task type is DEADLINE.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * @param userInput user command","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * @return array of string after parsing the command","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @throws ChatbotException if the description or date is empty","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanteckfang"},"content":" public static String[] parseDeadline(String userInput) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tanteckfang"},"content":" String[] parts \u003d userInput.substring(9).split(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tanteckfang"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The date for a deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tanteckfang"},"content":" String taskDescription \u003d parts[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tanteckfang"},"content":" String date \u003d parts[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tanteckfang"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"tanteckfang"},"content":" if (date.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The date for a deadline cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"tanteckfang"},"content":" return parts;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Parse the user command which its task type is EVENT.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @param userInput user command","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * @return array of string after parsing the command","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * @throws ChatbotException if the date is empty","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"tanteckfang"},"content":" public static String[] parseEvent(String userInput) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tanteckfang"},"content":" String[] parts \u003d userInput.substring(6).split(\"/from|/to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"tanteckfang"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The start or end date for an event cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"tanteckfang"},"content":" return parts;","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Parse the user command which its task type is MARK.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * @param userInput user command","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * @return array of string after parsing the command","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"tanteckfang"},"content":" public static int parseMark(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"tanteckfang"},"content":" return Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Parse the user command which its task type is UNKNOWN.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * @param userInput user command","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @return array of string after parsing the command","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @throws ChatbotException when we could not identify the case","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"tanteckfang"},"content":" public static Command parseCommand(String userInput) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"tanteckfang"},"content":" TaskType taskType \u003d determineTaskType(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"tanteckfang"},"content":" Command command;","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"tanteckfang"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"tanteckfang"},"content":" case TODO:","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"tanteckfang"},"content":" String[] todoInput \u003d parseTodo(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"tanteckfang"},"content":" command \u003d new AddTodoCommand(todoInput[0].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"tanteckfang"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"tanteckfang"},"content":" String[] deadlineInput \u003d parseDeadline(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"tanteckfang"},"content":" command \u003d new AddDeadlineCommand(deadlineInput[0].trim(), deadlineInput[1].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"tanteckfang"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"tanteckfang"},"content":" String[] eventInput \u003d parseEvent(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"tanteckfang"},"content":" command \u003d new AddEventCommand(eventInput[0].trim(), eventInput[1].trim(), eventInput[2].trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"tanteckfang"},"content":" case MARK:","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"tanteckfang"},"content":" int markInt \u003d parseMark(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"tanteckfang"},"content":" command \u003d new MarkCommand(markInt);","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"tanteckfang"},"content":" case UNMARK:","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"tanteckfang"},"content":" int unmarkInt \u003d parseMark(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"tanteckfang"},"content":" command \u003d new UnmarkCommand(unmarkInt);","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"tanteckfang"},"content":" case BYE:","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"tanteckfang"},"content":" command \u003d new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"tanteckfang"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"tanteckfang"},"content":" command \u003d new UnknownCommand(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"tanteckfang"},"content":" return command;","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":95,"-":47}},{"path":"src/main/java/chatbot/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import chatbot.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Class which deals with interactions with the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * constructor for Ui class.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Read command.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @return String of the command","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" return scanner.nextLine().trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * print greeting message.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" public void showGreeting() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Hello! I\u0027m Sara\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * print farewell message.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":" public void showFarewell() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Show error message to the client.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @param message takes in the error message which wish to be print","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tanteckfang"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + message);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanteckfang":34,"-":24}},{"path":"src/main/java/chatbot/command/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * class which handle addd Deaddline command extends abstract class command.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":"public class AddDeadlineCommand extends chatbot.command.Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" private String time;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * constructor for this class.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @param description description of the deadline","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param time time of the deadline","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" public AddDeadlineCommand(String description, String time) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" this.time \u003d time;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" public void execute(chatbot.task.TaskManager taskManager, Ui ui) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" taskManager.addDeadlines(description, time);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":24,"-":11}},{"path":"src/main/java/chatbot/command/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * class which handle addd event command extends abstract class command.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":"public class AddEventCommand extends Command{","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" private String start;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" private String end;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructor for this class.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param description description of the Event","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param start starting time of the event","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param end endiong time for the event","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" public AddEventCommand(String description, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" public void execute(TaskManager taskManager, Ui ui) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" taskManager.addEvents(description, start, end);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":26,"-":13}},{"path":"src/main/java/chatbot/command/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * class which handle add todos command extends abstract class command.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"public class AddTodoCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * constructor for this class","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param description description for todos task","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" public void execute(TaskManager taskManager, Ui ui) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" taskManager.addTodo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":22,"-":9}},{"path":"src/main/java/chatbot/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Abstract base class for different types of commands that can be executed by the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Executes the command by interacting with the TaskManager and UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param taskManager taskManager","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @param ui Ui","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ChatbotException if there is error in the Command","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" public abstract void execute(TaskManager taskManager, Ui ui) throws ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":8,"-":15}},{"path":"src/main/java/chatbot/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * class which handle exit command extends abstract class command.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" public void execute(TaskManager taskManager, Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" ui.showFarewell();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":19,"-":3}},{"path":"src/main/java/chatbot/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * class which handle mark task command extends abstract class command.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Constructor for this class.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param index index of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" public void execute(TaskManager taskManager, Ui ui) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" taskManager.taskDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":23,"-":8}},{"path":"src/main/java/chatbot/command/UnknownCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * class which handle unknown command extends abstract class command.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"public class UnknownCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" private String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Constructor for this class.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @param userInput userInput.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" public UnknownCommand(String userInput) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" public void execute(TaskManager taskManager, Ui ui) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" if (\"list\".equalsIgnoreCase(userInput)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" taskManager.printTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" taskManager.deleteTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" } else if (userInput.startsWith(\"task on\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" String date \u003d userInput.split(\" \")[2]; // Changed from 1 to 2","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" taskManager.printTasksOnDate(date);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":" } else if (userInput.startsWith(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String keyword \u003d userInput.split(\" \")[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" taskManager.findTaskByKeyboard(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" else {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tanteckfang"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":32,"-":16}},{"path":"src/main/java/chatbot/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import chatbot.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.TaskManager;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * class which handle unmark command extends abstract class command.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * COnstructor for this class.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param index index of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" public void execute(TaskManager taskManager, Ui ui) throws ChatbotException {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" taskManager.unMarktask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":22,"-":9}},{"path":"src/main/java/chatbot/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import java.io.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * The Storage class manages reading from and writing to a file for task data storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" private final String FILEPATH;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Constructor for this class","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param FILEPATH filepath of the file","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" public Storage(String FILEPATH) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" this.FILEPATH \u003d FILEPATH;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" File directory \u003d new File(\"./data\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" File file \u003d new File(FILEPATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\"Error initializing file: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Saves the tasks from the TaskList to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param tasks taskList containing tasks to be saved","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":" public void saveToFile(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanteckfang"},"content":" FileWriter fileWriter \u003d new FileWriter(FILEPATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tanteckfang"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(fileWriter);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"tanteckfang"},"content":" for (Task task : tasks.getAllTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanteckfang"},"content":" bufferedWriter.write(task.toFileFormat());","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"tanteckfang"},"content":" bufferedWriter.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"tanteckfang"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"tanteckfang"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"tanteckfang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Loads tasks from the file and returns them as a TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @return TaskList containing tasks loaded from the file","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"tanteckfang"},"content":" public TaskList loadFromFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tanteckfang"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"tanteckfang"},"content":" FileReader fileReader \u003d new FileReader(FILEPATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"tanteckfang"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"tanteckfang"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"tanteckfang"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d Task.fromFileFormat(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"tanteckfang"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"tanteckfang"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"tanteckfang"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"tanteckfang"},"content":" // Handle corrupted line here for stretch goal","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\"Warning: Corrupted line skipped in file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"tanteckfang"},"content":" bufferedReader.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"tanteckfang"},"content":" fileReader.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"tanteckfang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\"Error reading from file: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"tanteckfang"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanteckfang":68,"-":19}},{"path":"src/main/java/chatbot/task/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * class Deadline extends class Task which consist of variable for Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * constructor for class Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @param description string for deadline\u0027s description","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param date LocalDateTime for date of deadline","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" public Deadlines(String description, LocalDateTime date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" return \"[D]\" + super.toString() + \" (by: \" + date.format(formatter) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Read the task and convert it to String to be saved in file.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @return string of the Task","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" String dateStr \u003d date.format(formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" String done \u003d isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" return String.format(\"D | %s | %s | %s\", done, description, dateStr);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Get detail of the date.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @return LocalDateTime of the date","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tanteckfang"},"content":" public LocalDateTime getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"tanteckfang"},"content":" return date;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanteckfang":31,"-":19}},{"path":"src/main/java/chatbot/task/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * class Event extends class Task which consist of variable for Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"public class Events extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" private LocalDateTime startDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" private LocalDateTime endDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * constructor for class Events.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param description string for deadline\u0027s description","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @param startDateTime LocalDateTime for start date of the event","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" public Events(String description, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" return \"[E][\" + getStatusIcon() + \"] \" + description","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanteckfang"},"content":" + \" (from: \" + startDateTime.format(formatter) + \" to: \" + endDateTime.format(formatter) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" String startStr \u003d startDateTime.format(formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" String endStr \u003d endDateTime.format(formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" String done \u003d isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" return String.format(\"E | %s | %s | %s | %s\", done, description, startStr, endStr);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanteckfang":30,"-":10}},{"path":"src/main/java/chatbot/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Class which consist of the detail needed for a Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * constructor for this class.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param description String for description","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * get the status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @return String to should the status of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Get description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @return description","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return description;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * mark task as done","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tanteckfang"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"tanteckfang"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * unmark the task","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tanteckfang"},"content":" public void unMark() {","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"tanteckfang"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"tanteckfang"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"tanteckfang"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * convert task to string to save to file","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @return task in String format","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"tanteckfang"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"tanteckfang"},"content":" String done \u003d isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"tanteckfang"},"content":" return String.format(\"T | %s | %s\", done, description);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Read the task saved in file which is in String format and convert it back as task form","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @param line the line of task","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @return task in Task format","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tanteckfang"},"content":" public static Task fromFileFormat(String line) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"tanteckfang"},"content":" String[] parts \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"tanteckfang"},"content":" // Error handling for incorrect line format","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"tanteckfang"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"tanteckfang"},"content":" // Handle this case appropriately","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"tanteckfang"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"tanteckfang"},"content":" String type \u003d parts[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"tanteckfang"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"tanteckfang"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"tanteckfang"},"content":" switch (type) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"tanteckfang"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"tanteckfang"},"content":" task \u003d new Todos(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"tanteckfang"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"tanteckfang"},"content":" String date \u003d parts[3].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"tanteckfang"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(date, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"tanteckfang"},"content":" task \u003d new Deadlines(description, dateTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"tanteckfang"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"tanteckfang"},"content":" String start \u003d parts[3].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"tanteckfang"},"content":" String end \u003d parts[4].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"tanteckfang"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(start, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"tanteckfang"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(end, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"tanteckfang"},"content":" task \u003d new Events(description, startDateTime, endDateTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"tanteckfang"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"tanteckfang"},"content":" if (task !\u003d null \u0026\u0026 isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"tanteckfang"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"tanteckfang"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanteckfang":76,"-":40}},{"path":"src/main/java/chatbot/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * List of task.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Constructor for this class.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Add task into the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param task Task","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Get the task in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param index number of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @return the task","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanteckfang"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" if (index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" return tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Provide the size of the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @return size of the list","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tanteckfang"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tanteckfang"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * mark the task which is in the list as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * @param index the index of the task in the list","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tanteckfang"},"content":" public void markTaskDone(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tanteckfang"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tanteckfang"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * unmark the task which is in the list as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param index the index of the task in the list","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"tanteckfang"},"content":" public void unMarkTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tanteckfang"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"tanteckfang"},"content":" task.unMark();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * print the task","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tanteckfang"},"content":" public void printTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"tanteckfang"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"tanteckfang"},"content":" System.out.printf(\" %d.%s\\n\", i + 1, tasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Remove the task from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @param index index of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @return the task being removed","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"tanteckfang"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"tanteckfang"},"content":" return tasks.remove(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * get the whole list of task","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @return List\u003c/Task\u003e of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"tanteckfang"},"content":" public List\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"tanteckfang"},"content":" return new ArrayList\u003c\u003e(this.tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tanteckfang":59,"-":45}},{"path":"src/main/java/chatbot/task/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import chatbot.ChatbotException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import chatbot.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The TaskManager class manages tasks, including adding, marking, unmarking, printing, and deleting tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":"public class TaskManager {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Constructor for this class.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanteckfang"},"content":" public TaskManager() {","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" this.storage \u003d new Storage(\"./data/chatbot.txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" this.tasks \u003d storage.loadFromFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Add todo task into the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param t description of todo","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ChatbotException when the description is empty","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanteckfang"},"content":" public void addTodo(String t) throws ChatbotException {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"tanteckfang"},"content":" if (t \u003d\u003d null || t.trim().isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d new Todos(t);","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"tanteckfang"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Add deadline to the list and print out.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * @param t description","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * @param date date","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @throws ChatbotException when one of the param is empty","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanteckfang"},"content":" public void addDeadlines(String t, String date) throws ChatbotException {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"tanteckfang"},"content":" if (t \u003d\u003d null || t.trim().isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The description of a deadlines cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else if (date \u003d\u003d null || date.trim().isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The date of a deadlines cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"tanteckfang"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(date, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d new Deadlines(t, dateTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"tanteckfang"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"tanteckfang"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Invalid date/time format. Please enter in dd/MM/yyyy HHmm format.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Add event to the list and print out.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param t description","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * @param start starting date","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param end end date","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws ChatbotException when one of the param is empty","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"tanteckfang"},"content":" public void addEvents(String t, String start, String end) throws ChatbotException {","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"tanteckfang"},"content":" if (t \u003d\u003d null || t.trim().isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The description of a event cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" } else if (start \u003d\u003d null || start.trim().isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The starting date of a event cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"tanteckfang"},"content":" } else if (end \u003d\u003d null || end.trim().isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"☹ OOPS!!! The end time of a event cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"tanteckfang"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(start, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"tanteckfang"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(end, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"tanteckfang"},"content":" Events newEvent \u003d new Events(t, startDateTime, endDateTime);","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"tanteckfang"},"content":" tasks.add(newEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Got it. I\u0027ve added this event:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + newEvent);","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"tanteckfang"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Invalid date/time format. Please enter in dd/MM/yyyy HHmm format.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":113,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * mark the task done and print.","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @param index index of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"tanteckfang"},"content":" public void taskDone(int index) {","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"tanteckfang"},"content":" tasks.markTaskDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + tasks.getTask(index));","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"tanteckfang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Oops! Please enter a valid task number to mark.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":132,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * unmark the task and print","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @param index index of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"tanteckfang"},"content":" public void unMarktask(int index) {","lastModifiedDate":"2023-08-22"},{"lineNumber":140,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"tanteckfang"},"content":" tasks.unMarkTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + tasks.getTask(index));","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"tanteckfang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Oops! Please enter a valid task number to unmark.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":152,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"tanteckfang"},"content":" public void printTasks() {","lastModifiedDate":"2023-08-22"},{"lineNumber":155,"author":{"gitId":"tanteckfang"},"content":" tasks.printTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":157,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * delete the task in the list and print.","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * @param index index of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @throws ChatbotException when invalid index is given","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"tanteckfang"},"content":" public void deleteTask(int index) throws ChatbotException {","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"tanteckfang"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"tanteckfang"},"content":" Task removedTask \u003d tasks.removeTask(index); // Subtracting 1 because ArrayList is 0-based.","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"tanteckfang"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" \" + removedTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"tanteckfang"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"tanteckfang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"tanteckfang"},"content":" throw new ChatbotException(\"Please provide a valid task number to delete.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * Print the date.","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * @param date date","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"tanteckfang"},"content":" public void printTasksOnDate(String date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"tanteckfang"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"tanteckfang"},"content":" LocalDate targetDate \u003d LocalDate.parse(date, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"tanteckfang"},"content":" for (Task task : tasks.getAllTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"tanteckfang"},"content":" if (task instanceof Deadlines) {","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"tanteckfang"},"content":" Deadlines deadlineTask \u003d (Deadlines) task;","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"tanteckfang"},"content":" if (targetDate.equals(deadlineTask.getDateTime().toLocalDate())) {","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"tanteckfang"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public void findTaskByKeyboard(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"-"},"content":" for (Task task : tasks.getAllTasks()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"-"},"content":" if (task.getDescription().contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"-"},"content":" list.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"-"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"-"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"-"},"content":" System.out.println(\" Oops! There is no task with this keyword.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"-"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"-"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"-"},"content":" System.out.println(\" Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"-"},"content":" System.out.println(\" \" + (i + 1) + \".\" + list.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"-"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanteckfang":140,"-":76}},{"path":"src/main/java/chatbot/task/Todos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"package chatbot.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * class Todo extends class Task which consist of variable for todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"public class Todos extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * constructor for class Todos.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * @param description string for deadline\u0027s description","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" public Todos(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"tanteckfang"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"tanteckfang"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanteckfang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanteckfang"},"content":" public String toFileFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanteckfang"},"content":" String done \u003d isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanteckfang"},"content":" return String.format(\"T | %s | %s\", done, description);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanteckfang":18,"-":10}},{"path":"src/test/java/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" void testDetermineTaskType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":" assertEquals(Parser.TaskType.TODO, Parser.determineTaskType(\"todo Read a book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" assertEquals(Parser.TaskType.DEADLINE, Parser.determineTaskType(\"deadline Submit assignment /by tomorrow\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" assertEquals(Parser.TaskType.UNKNOWN, Parser.determineTaskType(\"unknownCommand\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanteckfang":15}},{"path":"src/test/java/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"import chatbot.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":" class TaskTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":" void testMarkAsDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":" Task task \u003d new Task(\"Read a book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":" assertEquals(\" \" , task.getStatusIcon());","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":" assertEquals(\"X\", task.getStatusIcon());","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanteckfang"},"content":" }","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanteckfang":15}},{"path":"text-ui-test/data/chatbot.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"T | 0 | borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"D | 0 | return book | Sunday","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"D | 0 | project meeting | Mon 2pm | 4pm","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"D | 1 | do homework | no idea :-p","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanteckfang":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanteckfang"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"tanteckfang"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanteckfang"},"content":"deadline return book /by 17/02/2024 1200","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanteckfang"},"content":"event project meeting /from 13/08/2024 1400 /to 15/08/2024 2300","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanteckfang"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanteckfang"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"tanteckfang"},"content":"deadline happy","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanteckfang"},"content":"mark 1","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanteckfang"},"content":"mark 3","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanteckfang"},"content":"unmark 1","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanteckfang"},"content":"delete 2","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanteckfang"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"tanteckfang"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanteckfang":13}},{"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":"tanteckfang"},"content":"java -classpath ../bin Chatbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-22"},{"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":{"tanteckfang":1,"-":37}}] diff --git a/tanteckfang_ip_master/commits.json b/tanteckfang_ip_master/commits.json index 9485aaf1..37e62566 100644 --- a/tanteckfang_ip_master/commits.json +++ b/tanteckfang_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tanteckfang":[{"date":"2023-08-21","commitResults":[{"hash":"90b0048e0e3e956b12c7289936b4bc70b604ac45","isMergeCommit":false,"messageTitle":"Complete Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":10}}},{"hash":"f00a0e1c7285bb16a9fbab635a7de9abfcc66d58","isMergeCommit":false,"messageTitle":"done level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":11}}},{"hash":"da42c984fa52fc00f03a86df0e541d8ca4fd1fe9","isMergeCommit":true,"messageTitle":"Merge pull request #1 from tanteckfang/Level_1","messageBody":"done level 1","fileTypesAndContributionMap":{}},{"hash":"16d2c00c6e61926c66cd2b5bafa91d7bcb1bdd30","isMergeCommit":false,"messageTitle":"done level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":2}}},{"hash":"a979f8551442e00f492ed78901d30e18131cead0","isMergeCommit":true,"messageTitle":"Merge pull request #2 from tanteckfang/Level_2","messageBody":"done level-2","fileTypesAndContributionMap":{}}]},{"date":"2023-08-22","commitResults":[{"hash":"7c6ca23ae3eaab54bf85ab3d29675974285fa869","isMergeCommit":false,"messageTitle":"done level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":24}}},{"hash":"a5902dce29357c52b6a353fcb64a9098adcfe47a","isMergeCommit":false,"messageTitle":"done level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":159,"deletions":52}}},{"hash":"cc968e3db76c9da0cf9795d0f9119fdb696dbad5","isMergeCommit":true,"messageTitle":"Merge pull request #3 from tanteckfang/Level_4","messageBody":"Level 4","fileTypesAndContributionMap":{}},{"hash":"deb02ae17d30c39a32dde8c8f2088f6ea2e3b992","isMergeCommit":false,"messageTitle":"UI testing added","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"416aacd41cc74c7015ada2167992fc00fea8456b","isMergeCommit":false,"messageTitle":" done Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":31}}},{"hash":"d1c544156424c2b5412eb08b79f5b2d4ab7cdc6b","isMergeCommit":false,"messageTitle":"done level6\u0027","messageBody":"/\n\u003e?\nq\n/q\nwq\ncdc\n\u0027\n","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":1},"java":{"insertions":16,"deletions":1}}},{"hash":"82ca53a13b72da5c6be4e010e91972c2aab35a24","isMergeCommit":false,"messageTitle":"added enum feature","messageBody":"","tags":["Level-7","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":32}}}]},{"date":"2023-08-28","commitResults":[{"hash":"7c1862b6fc10bc311c2b2eebae558ff8e19c86b9","isMergeCommit":true,"messageTitle":"Merge pull request #4 from tanteckfang/enums","messageBody":"Enums","fileTypesAndContributionMap":{}},{"hash":"6bec8a18b9161270ece2ede6aa297b32c0ae9620","isMergeCommit":false,"messageTitle":" done level 7","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"2600f3956c3035ee4888053de031fa145fbc33d2","isMergeCommit":false,"messageTitle":"done level 8","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":8},"java":{"insertions":230,"deletions":24}}},{"hash":"dea8f18484cd3934a49622a2a9885e6d6cd9b355","isMergeCommit":false,"messageTitle":"done OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":149,"deletions":114}}}]},{"date":"2023-08-31","commitResults":[{"hash":"c6ebe9c4a754643a1e65d8be9d16aa2a9d2db2b0","isMergeCommit":false,"messageTitle":"done OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":3},"java":{"insertions":360,"deletions":133}}},{"hash":"76e5f2f4cddb6962d55c7ad1434d984f6ea6422e","isMergeCommit":false,"messageTitle":"done OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":6},"java":{"insertions":9,"deletions":42}}},{"hash":"4078b72f8bb99461251d561fe52772d9c8e5b303","isMergeCommit":false,"messageTitle":"done packages","messageBody":"","tags":["A-packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":79,"deletions":4}}},{"hash":"4e18bf02dcfb0aebb6cfb53a62d683e8c51399a2","isMergeCommit":true,"messageTitle":"Merge pull request #5 from tanteckfang/branch-A-pacakages","messageBody":"Branch a pacakages","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tanteckfang":{"java":825,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":19}},"authorContributionVariance":{"tanteckfang":45487.43},"authorDisplayNameMap":{"tanteckfang":"CS2103T-T17-4 TAN ..FANG"}} +{"authorDailyContributionsMap":{"tanteckfang":[{"date":"2023-08-21","commitResults":[{"hash":"90b0048e0e3e956b12c7289936b4bc70b604ac45","isMergeCommit":false,"messageTitle":"Complete Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":10}}},{"hash":"f00a0e1c7285bb16a9fbab635a7de9abfcc66d58","isMergeCommit":false,"messageTitle":"done level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":11}}},{"hash":"da42c984fa52fc00f03a86df0e541d8ca4fd1fe9","isMergeCommit":true,"messageTitle":"Merge pull request #1 from tanteckfang/Level_1","messageBody":"done level 1","fileTypesAndContributionMap":{}},{"hash":"16d2c00c6e61926c66cd2b5bafa91d7bcb1bdd30","isMergeCommit":false,"messageTitle":"done level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":2}}},{"hash":"a979f8551442e00f492ed78901d30e18131cead0","isMergeCommit":true,"messageTitle":"Merge pull request #2 from tanteckfang/Level_2","messageBody":"done level-2","fileTypesAndContributionMap":{}}]},{"date":"2023-08-22","commitResults":[{"hash":"7c6ca23ae3eaab54bf85ab3d29675974285fa869","isMergeCommit":false,"messageTitle":"done level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":24}}},{"hash":"a5902dce29357c52b6a353fcb64a9098adcfe47a","isMergeCommit":false,"messageTitle":"done level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":159,"deletions":52}}},{"hash":"cc968e3db76c9da0cf9795d0f9119fdb696dbad5","isMergeCommit":true,"messageTitle":"Merge pull request #3 from tanteckfang/Level_4","messageBody":"Level 4","fileTypesAndContributionMap":{}},{"hash":"deb02ae17d30c39a32dde8c8f2088f6ea2e3b992","isMergeCommit":false,"messageTitle":"UI testing added","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"416aacd41cc74c7015ada2167992fc00fea8456b","isMergeCommit":false,"messageTitle":" done Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":31}}},{"hash":"d1c544156424c2b5412eb08b79f5b2d4ab7cdc6b","isMergeCommit":false,"messageTitle":"done level6\u0027","messageBody":"/\n\u003e?\nq\n/q\nwq\ncdc\n\u0027\n","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":1},"java":{"insertions":16,"deletions":1}}},{"hash":"82ca53a13b72da5c6be4e010e91972c2aab35a24","isMergeCommit":false,"messageTitle":"added enum feature","messageBody":"","tags":["Level-7","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":32}}}]},{"date":"2023-08-28","commitResults":[{"hash":"7c1862b6fc10bc311c2b2eebae558ff8e19c86b9","isMergeCommit":true,"messageTitle":"Merge pull request #4 from tanteckfang/enums","messageBody":"Enums","fileTypesAndContributionMap":{}},{"hash":"6bec8a18b9161270ece2ede6aa297b32c0ae9620","isMergeCommit":false,"messageTitle":" done level 7","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"2600f3956c3035ee4888053de031fa145fbc33d2","isMergeCommit":false,"messageTitle":"done level 8","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":8},"java":{"insertions":230,"deletions":24}}},{"hash":"dea8f18484cd3934a49622a2a9885e6d6cd9b355","isMergeCommit":false,"messageTitle":"done OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":149,"deletions":114}}}]},{"date":"2023-08-31","commitResults":[{"hash":"c6ebe9c4a754643a1e65d8be9d16aa2a9d2db2b0","isMergeCommit":false,"messageTitle":"done OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":3},"java":{"insertions":360,"deletions":133}}},{"hash":"76e5f2f4cddb6962d55c7ad1434d984f6ea6422e","isMergeCommit":false,"messageTitle":"done OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":6},"java":{"insertions":9,"deletions":42}}},{"hash":"4078b72f8bb99461251d561fe52772d9c8e5b303","isMergeCommit":false,"messageTitle":"done packages","messageBody":"","tags":["A-packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":79,"deletions":4}}},{"hash":"4e18bf02dcfb0aebb6cfb53a62d683e8c51399a2","isMergeCommit":true,"messageTitle":"Merge pull request #5 from tanteckfang/branch-A-pacakages","messageBody":"Branch a pacakages","fileTypesAndContributionMap":{}},{"hash":"6c64b29091711f1ec6194658097f045d89320c6e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"92ce96701fda7918e741fdfc1caa6412c5f66dd8","isMergeCommit":false,"messageTitle":"add Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":9,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"36ea8de8a8ba859bf2dd89f724e4f524ac885e9b","isMergeCommit":false,"messageTitle":"done JUnit","messageBody":"","tags":["v0.1","A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"d1398250771719a3b5985025da767c8116c85f72","isMergeCommit":true,"messageTitle":"Merge pull request #6 from tanteckfang/branch-A-JUnit","messageBody":"Branch a j unit","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tanteckfang":{"java":800,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":4,"txt":19}},"authorContributionVariance":{"tanteckfang":43862.4},"authorDisplayNameMap":{"tanteckfang":"CS2103T-T17-4 TAN ..FANG"}} diff --git a/tanveersingh10_ip_master/authorship.json b/tanveersingh10_ip_master/authorship.json index db9d3a7b..fbf1934c 100644 --- a/tanveersingh10_ip_master/authorship.json +++ b/tanveersingh10_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":" String dueDate;","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":" public Deadline(String taskName, String dueDate) {","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":" super(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.dueDate + \")\";","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanveersingh10":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":" import exceptions.InvalidArgumentException;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":" import exceptions.UnknownCommandException;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":" import exceptions.DukeException;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":" import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" protected static final String chatBotName \u003d \"Cristiano\";","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"tanveersingh10"},"content":" greetUser();","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"tanveersingh10"},"content":" run();","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"tanveersingh10"},"content":" protected static void greetUser() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Hello! I\u0027m \" + chatBotName + \"! SUIIII!!!\");","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"tanveersingh10"},"content":" protected static void exit() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"tanveersingh10"},"content":" * this is the function that runs while the user is using the application.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"tanveersingh10"},"content":" * It takes in users input, calls getCommand to decide which function it should to call to handle the input.","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"tanveersingh10"},"content":" * It also handles exceptions and waits for user to say bye.","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"tanveersingh10"},"content":" protected static void run() {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"tanveersingh10"},"content":" TaskManager taskManager \u003d new TaskManager();","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"tanveersingh10"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"tanveersingh10"},"content":" String input \u003d \"\";","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"tanveersingh10"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"tanveersingh10"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"tanveersingh10"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"tanveersingh10"},"content":" String command \u003d getCommand(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"tanveersingh10"},"content":" switch (command) {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"tanveersingh10"},"content":" case \"list\":","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"tanveersingh10"},"content":" taskManager.list();","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"tanveersingh10"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"tanveersingh10"},"content":" case \"mark\":","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"tanveersingh10"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"tanveersingh10"},"content":" handleMarking(input, taskManager);","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"tanveersingh10"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"tanveersingh10"},"content":" case \"todo\":","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"tanveersingh10"},"content":" handleTodo(input, taskManager);","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"tanveersingh10"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"tanveersingh10"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"tanveersingh10"},"content":" handleDeadline(input, taskManager);","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"tanveersingh10"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"tanveersingh10"},"content":" case \"event\":","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"tanveersingh10"},"content":" handleEvent(input, taskManager);","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"tanveersingh10"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"tanveersingh10"},"content":" case \"delete\":","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"tanveersingh10"},"content":" handleDelete(input, taskManager);","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"tanveersingh10"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"tanveersingh10"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"tanveersingh10"},"content":" throw new UnknownCommandException(\"I may be the GOAT but I don\u0027t know what that means.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"tanveersingh10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"tanveersingh10"},"content":" exit();","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"tanveersingh10"},"content":" * returns the first word of the input string. Helps to determine which function to call.","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"tanveersingh10"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"tanveersingh10"},"content":" * @return command string","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"tanveersingh10"},"content":" private static String getCommand(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"tanveersingh10"},"content":" return input.split(\" \")[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"tanveersingh10"},"content":" * This function handles the logic for when a user wants to mark a task as done or undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"tanveersingh10"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"tanveersingh10"},"content":" * @param taskManager","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"tanveersingh10"},"content":" * @throws InvalidArgumentException","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"tanveersingh10"},"content":" private static void handleMarking(String input, TaskManager taskManager) throws InvalidArgumentException {","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"tanveersingh10"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"tanveersingh10"},"content":" try {","lastModifiedDate":"2023-08-20"},{"lineNumber":98,"author":{"gitId":"tanveersingh10"},"content":" int index \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-20"},{"lineNumber":99,"author":{"gitId":"tanveersingh10"},"content":" if (words[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":100,"author":{"gitId":"tanveersingh10"},"content":" taskManager.mark(index);","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"tanveersingh10"},"content":" } else if (words[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":102,"author":{"gitId":"tanveersingh10"},"content":" taskManager.unmark(index);","lastModifiedDate":"2023-08-21"},{"lineNumber":103,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":104,"author":{"gitId":"tanveersingh10"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-20"},{"lineNumber":105,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Please enter a numerical index!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"tanveersingh10"},"content":" * if the user wants to add a to do-task, this function will handle the logic.","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"tanveersingh10"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"tanveersingh10"},"content":" * @param taskManager","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"tanveersingh10"},"content":" * @throws InvalidArgumentException","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"tanveersingh10"},"content":" private static void handleTodo(String input, TaskManager taskManager) throws InvalidArgumentException {","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"tanveersingh10"},"content":" int indexOfSpace \u003d input.indexOf(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"tanveersingh10"},"content":" if (indexOfSpace \u003d\u003d -1 || indexOfSpace \u003d\u003d input.length() - 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Please enter a task description.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"tanveersingh10"},"content":" String taskName \u003d input.substring(input.indexOf(\" \") + 1).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"tanveersingh10"},"content":" if(taskName.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Please enter a task description.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":126,"author":{"gitId":"tanveersingh10"},"content":" Task task \u003d new ToDo(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":127,"author":{"gitId":"tanveersingh10"},"content":" taskManager.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":128,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"tanveersingh10"},"content":" * similar to to-do, this function handles logic for handling adding a deadline to the task manager.","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"tanveersingh10"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"tanveersingh10"},"content":" * @param taskManager","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"tanveersingh10"},"content":" * @throws InvalidArgumentException","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"tanveersingh10"},"content":" private static void handleDeadline(String input, TaskManager taskManager) throws InvalidArgumentException {","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"tanveersingh10"},"content":" String suffix \u003d input.substring(input.indexOf(\" \") + 1);","lastModifiedDate":"2023-08-21"},{"lineNumber":139,"author":{"gitId":"tanveersingh10"},"content":" String[] parts \u003d suffix.split(\" /due \");","lastModifiedDate":"2023-08-21"},{"lineNumber":140,"author":{"gitId":"tanveersingh10"},"content":" if (parts.length !\u003d 2) {","lastModifiedDate":"2023-08-21"},{"lineNumber":141,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Invalid format for deadline. \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"tanveersingh10"},"content":" \"Please use: deadline task name /due due Date\");","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":144,"author":{"gitId":"tanveersingh10"},"content":" String taskName \u003d parts[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"tanveersingh10"},"content":" String dueDate \u003d parts[1].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"tanveersingh10"},"content":" Task task \u003d new Deadline(taskName, dueDate);","lastModifiedDate":"2023-08-21"},{"lineNumber":147,"author":{"gitId":"tanveersingh10"},"content":" taskManager.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":148,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"tanveersingh10"},"content":" * similar to to-do and deadline, this function handles the logic for adding an event to the task manager.","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"tanveersingh10"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"tanveersingh10"},"content":" * @param taskManager","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"tanveersingh10"},"content":" * @throws InvalidArgumentException","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"tanveersingh10"},"content":" private static void handleEvent(String input, TaskManager taskManager) throws InvalidArgumentException {","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"tanveersingh10"},"content":" String suffix \u003d input.substring(input.indexOf(\" \") + 1);","lastModifiedDate":"2023-08-21"},{"lineNumber":158,"author":{"gitId":"tanveersingh10"},"content":" String[] parts \u003d suffix.split(\" /from \");","lastModifiedDate":"2023-08-21"},{"lineNumber":159,"author":{"gitId":"tanveersingh10"},"content":" if (parts.length !\u003d 2) {","lastModifiedDate":"2023-08-21"},{"lineNumber":160,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Invalid format for event. \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"tanveersingh10"},"content":" \"Please use: event task_name /from start /to end\");","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":163,"author":{"gitId":"tanveersingh10"},"content":" String taskName \u003d parts[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"tanveersingh10"},"content":" String[] timeParts \u003d parts[1].split(\" /to \");","lastModifiedDate":"2023-08-21"},{"lineNumber":165,"author":{"gitId":"tanveersingh10"},"content":" if (timeParts.length !\u003d 2) {","lastModifiedDate":"2023-08-21"},{"lineNumber":166,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Invalid format for event. \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"tanveersingh10"},"content":" \"Please use: event task_name /from start /to end\");","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":169,"author":{"gitId":"tanveersingh10"},"content":" String from \u003d timeParts[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"tanveersingh10"},"content":" String to \u003d timeParts[1].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"tanveersingh10"},"content":" Task task \u003d new Event(taskName, from, to);","lastModifiedDate":"2023-08-21"},{"lineNumber":172,"author":{"gitId":"tanveersingh10"},"content":" taskManager.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":173,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":175,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"tanveersingh10"},"content":" * this function allows the user to delete a task by identifying its index.","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"tanveersingh10"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"tanveersingh10"},"content":" * @param taskManager","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"tanveersingh10"},"content":" * @throws InvalidArgumentException","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"tanveersingh10"},"content":" private static void handleDelete(String input, TaskManager taskManager) throws InvalidArgumentException {","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"tanveersingh10"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":184,"author":{"gitId":"tanveersingh10"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":185,"author":{"gitId":"tanveersingh10"},"content":" int index \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"tanveersingh10"},"content":" taskManager.delete(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"tanveersingh10"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Please enter a numerical index!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":189,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanveersingh10":181,"-":10}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":" private String from;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":" private String to;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" public Event(String taskName, String from, String to) {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" super(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanveersingh10":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":" protected String taskName;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":" protected boolean done;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":" public Task(String taskName) {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":" //default constructor","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" public Task() {","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" this.taskName \u003d \"Untitled task\";","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"tanveersingh10"},"content":" public void mark() {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tanveersingh10"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"SIUUU! I\u0027ve marked this task as done. We will make Saudi League number 1.\\n [X] \" + taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tanveersingh10"},"content":" public void unmark() {","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"tanveersingh10"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done.\\n [ ] \" + taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"tanveersingh10"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"tanveersingh10"},"content":" String status \u003d this.done ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"tanveersingh10"},"content":" return status + \" \" + taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanveersingh10":36}},{"path":"src/main/java/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"import exceptions.InvalidArgumentException;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":"public class TaskManager {","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":" private ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" private int index \u003d 0;","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" private int numOfTasks \u003d 0;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":" public void add (Task task) {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" this.numOfTasks +\u003d 1;","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Got it. I\u0027ve added the task:\\n\" + task);","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":" if (numOfTasks !\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Now you have \" + numOfTasks + \" tasks in your list, just like how I have 5 Ballon d\u0027Ors.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"tanveersingh10"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Now you have \" + numOfTasks + \" task in your list, just like how I have 5 Ballon d\u0027Ors.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"tanveersingh10"},"content":" public void list() {","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tanveersingh10"},"content":" for (int i \u003d 0; i \u003c numOfTasks; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"tanveersingh10"},"content":" System.out.println((i + 1) + \". \" + list.get(i));","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"tanveersingh10"},"content":" public void mark(int index) throws InvalidArgumentException {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"tanveersingh10"},"content":" if (index \u003e numOfTasks) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"I\u0027m sorry but that task does not exist. There are only \" + numOfTasks + \"tasks.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"tanveersingh10"},"content":" index -\u003d 1; // since 0 indexed","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"tanveersingh10"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"tanveersingh10"},"content":" task.mark();","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"tanveersingh10"},"content":" public void unmark(int index) throws InvalidArgumentException {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"tanveersingh10"},"content":" if (index \u003e numOfTasks) {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"I\u0027m sorry but that task does not exist. There are only \" + numOfTasks + \" tasks.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"tanveersingh10"},"content":" index -\u003d 1; // since 0 indexed","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"tanveersingh10"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"tanveersingh10"},"content":" task.unmark();","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":49,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"tanveersingh10"},"content":" public void delete(int index) throws InvalidArgumentException {","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"tanveersingh10"},"content":" if (index \u003e numOfTasks) {","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"I\u0027m sorry but that task does not exist. There are only \" + numOfTasks + \" tasks.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"tanveersingh10"},"content":" numOfTasks -\u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"tanveersingh10"},"content":" Task removedTask \u003d list.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"tanveersingh10"},"content":" list.remove(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Removed task:\\n\" + removedTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"tanveersingh10":63}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":" public ToDo(String taskName) {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":" super(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanveersingh10":11}},{"path":"src/main/java/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"public class UI {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":" public static void printLine() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tanveersingh10":5}},{"path":"src/main/java/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"package exceptions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" return \"☹ OOPS!!! \";","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanveersingh10":11}},{"path":"src/main/java/exceptions/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"package exceptions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"public class InvalidArgumentException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":" String message;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" public InvalidArgumentException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" return super.getMessage() + message;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanveersingh10":15}},{"path":"src/main/java/exceptions/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"package exceptions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"public class UnknownCommandException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":" String message;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" public UnknownCommandException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" return super.getMessage() + this.message;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanveersingh10":15}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"todo send flowers to mom","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"deadline cs2103t assignment /due Tuesday","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"event watch oppenheimer /from 7pm /to 10pm","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"mark hello world","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":"yo yo yo","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":"delete 100","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanveersingh10":13}},{"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":"tanveersingh10"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/**/*.java","lastModifiedDate":"2023-08-24"},{"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":"-"},"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":{"tanveersingh10":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"tanveersingh10"},"content":"3. After that, locate the `src/duke/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.duke()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanveersingh10":2,"-":22}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"import exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"import exceptions.StorageException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"import exceptions.UnknownCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":"import exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":"import tasks.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":"import tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"tanveersingh10"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanveersingh10"},"content":" private static final String chatBotName \u003d \"Cristiano\";","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanveersingh10"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanveersingh10"},"content":" private TaskManager taskManager;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanveersingh10"},"content":" public Duke() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanveersingh10"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanveersingh10"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanveersingh10"},"content":" taskManager \u003d storage.loadData();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanveersingh10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":38,"author":{"gitId":"tanveersingh10"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanveersingh10"},"content":" duke.greetUser();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanveersingh10"},"content":" duke.run();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"tanveersingh10"},"content":" protected void greetUser() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Hello! I\u0027m \" + chatBotName + \"! SUIIII!!!\");","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-20"},{"lineNumber":47,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":48,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":49,"author":{"gitId":"tanveersingh10"},"content":" protected static void exit() {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":54,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":55,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"tanveersingh10"},"content":" * this is the function that runs while the user is using the application.","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"tanveersingh10"},"content":" * It takes in users input, calls getCommand to decide which function it should to call to handle the input.","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"tanveersingh10"},"content":" * It also handles exceptions and waits for user to say bye.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"tanveersingh10"},"content":" protected void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tanveersingh10"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":62,"author":{"gitId":"tanveersingh10"},"content":" String input \u003d \"\";","lastModifiedDate":"2023-08-20"},{"lineNumber":63,"author":{"gitId":"tanveersingh10"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":64,"author":{"gitId":"tanveersingh10"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"tanveersingh10"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":66,"author":{"gitId":"tanveersingh10"},"content":" String command \u003d getCommand(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"tanveersingh10"},"content":" switch (command) {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"tanveersingh10"},"content":" case \"list\":","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"tanveersingh10"},"content":" taskManager.list();","lastModifiedDate":"2023-08-21"},{"lineNumber":70,"author":{"gitId":"tanveersingh10"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"tanveersingh10"},"content":" case \"mark\":","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"tanveersingh10"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"tanveersingh10"},"content":" handleMarking(input, taskManager);","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"tanveersingh10"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"tanveersingh10"},"content":" case \"todo\":","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"tanveersingh10"},"content":" handleTodo(input, taskManager);","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"tanveersingh10"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"tanveersingh10"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"tanveersingh10"},"content":" handleDeadline(input, taskManager);","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"tanveersingh10"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"tanveersingh10"},"content":" case \"event\":","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"tanveersingh10"},"content":" handleEvent(input, taskManager);","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"tanveersingh10"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"tanveersingh10"},"content":" case \"delete\":","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"tanveersingh10"},"content":" handleDelete(input, taskManager);","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"tanveersingh10"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"tanveersingh10"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"tanveersingh10"},"content":" throw new UnknownCommandException(\"I may be the GOAT but I don\u0027t know what that means.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"tanveersingh10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"tanveersingh10"},"content":" exit();","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"tanveersingh10"},"content":" * returns the first word of the input string. Helps to determine which function to call.","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"tanveersingh10"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"tanveersingh10"},"content":" * @return command string","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"tanveersingh10"},"content":" private String getCommand(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"tanveersingh10"},"content":" return input.split(\" \")[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"tanveersingh10"},"content":" * This function handles the logic for when a user wants to mark a task as done or undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"tanveersingh10"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"tanveersingh10"},"content":" * @param taskManager","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"tanveersingh10"},"content":" * @throws InvalidArgumentException","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"tanveersingh10"},"content":" private void handleMarking(String input, TaskManager taskManager) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"tanveersingh10"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"tanveersingh10"},"content":" try {","lastModifiedDate":"2023-08-20"},{"lineNumber":118,"author":{"gitId":"tanveersingh10"},"content":" int index \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-20"},{"lineNumber":119,"author":{"gitId":"tanveersingh10"},"content":" if (words[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":120,"author":{"gitId":"tanveersingh10"},"content":" taskManager.mark(index);","lastModifiedDate":"2023-08-21"},{"lineNumber":121,"author":{"gitId":"tanveersingh10"},"content":" } else if (words[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":122,"author":{"gitId":"tanveersingh10"},"content":" taskManager.unmark(index);","lastModifiedDate":"2023-08-21"},{"lineNumber":123,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":124,"author":{"gitId":"tanveersingh10"},"content":" updateStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"tanveersingh10"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-20"},{"lineNumber":126,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Please enter a numerical index!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"tanveersingh10"},"content":" } catch (StorageException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"tanveersingh10"},"content":" throw new StorageException(\"Storage Error\");","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"tanveersingh10"},"content":" private void updateStorage() throws StorageException {","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"tanveersingh10"},"content":" this.storage.saveData(taskManager);","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"tanveersingh10"},"content":" * if the user wants to add a to do-task, this function will handle the logic.","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"tanveersingh10"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"tanveersingh10"},"content":" * @param taskManager","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"tanveersingh10"},"content":" * @throws InvalidArgumentException","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"tanveersingh10"},"content":" private void handleTodo(String input, TaskManager taskManager) throws InvalidArgumentException, StorageException {","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"tanveersingh10"},"content":" int indexOfSpace \u003d input.indexOf(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"tanveersingh10"},"content":" if (indexOfSpace \u003d\u003d -1 || indexOfSpace \u003d\u003d input.length() - 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Please enter a task description.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"tanveersingh10"},"content":" String taskName \u003d input.substring(input.indexOf(\" \") + 1).trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"tanveersingh10"},"content":" if(taskName.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Please enter a task description.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":152,"author":{"gitId":"tanveersingh10"},"content":" Task task \u003d new ToDo(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":153,"author":{"gitId":"tanveersingh10"},"content":" taskManager.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":154,"author":{"gitId":"tanveersingh10"},"content":" updateStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"tanveersingh10"},"content":" * similar to to-do, this function handles logic for handling adding a deadline to the task manager.","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"tanveersingh10"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"tanveersingh10"},"content":" * @param taskManager","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"tanveersingh10"},"content":" * @throws InvalidArgumentException","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"tanveersingh10"},"content":" private void handleDeadline(String input, TaskManager taskManager) throws InvalidArgumentException, StorageException {","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"tanveersingh10"},"content":" String suffix \u003d input.substring(input.indexOf(\" \") + 1);","lastModifiedDate":"2023-08-21"},{"lineNumber":165,"author":{"gitId":"tanveersingh10"},"content":" String[] parts \u003d suffix.split(\" /due \");","lastModifiedDate":"2023-08-21"},{"lineNumber":166,"author":{"gitId":"tanveersingh10"},"content":" if (parts.length !\u003d 2) {","lastModifiedDate":"2023-08-21"},{"lineNumber":167,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Invalid format for deadline. \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"tanveersingh10"},"content":" \"Please use: deadline task name /due due Date\");","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":170,"author":{"gitId":"tanveersingh10"},"content":" String taskName \u003d parts[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"tanveersingh10"},"content":" String dueDate \u003d parts[1].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"tanveersingh10"},"content":" LocalDateTime time;","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"tanveersingh10"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"tanveersingh10"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"tanveersingh10"},"content":" time \u003d LocalDateTime.parse(dueDate, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"tanveersingh10"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Please use the format dd/MM/yyyy HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"tanveersingh10"},"content":" Task task \u003d new Deadline(taskName, time);","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"tanveersingh10"},"content":" taskManager.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":185,"author":{"gitId":"tanveersingh10"},"content":" updateStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"tanveersingh10"},"content":" * similar to to-do and deadline, this function handles the logic for adding an event to the task manager.","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"tanveersingh10"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"tanveersingh10"},"content":" * @param taskManager","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"tanveersingh10"},"content":" * @throws InvalidArgumentException","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"tanveersingh10"},"content":" private void handleEvent(String input, TaskManager taskManager) throws InvalidArgumentException, StorageException {","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"tanveersingh10"},"content":" String suffix \u003d input.substring(input.indexOf(\" \") + 1);","lastModifiedDate":"2023-08-21"},{"lineNumber":196,"author":{"gitId":"tanveersingh10"},"content":" String[] parts \u003d suffix.split(\" /from \");","lastModifiedDate":"2023-08-21"},{"lineNumber":197,"author":{"gitId":"tanveersingh10"},"content":" if (parts.length !\u003d 2) {","lastModifiedDate":"2023-08-21"},{"lineNumber":198,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Invalid format for event. \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":199,"author":{"gitId":"tanveersingh10"},"content":" \"Please use: event task_name /from start /to end\");","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":201,"author":{"gitId":"tanveersingh10"},"content":" String taskName \u003d parts[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":202,"author":{"gitId":"tanveersingh10"},"content":" String[] timeParts \u003d parts[1].split(\" /to \");","lastModifiedDate":"2023-08-21"},{"lineNumber":203,"author":{"gitId":"tanveersingh10"},"content":" if (timeParts.length !\u003d 2) {","lastModifiedDate":"2023-08-21"},{"lineNumber":204,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Invalid format for event. \" +","lastModifiedDate":"2023-08-23"},{"lineNumber":205,"author":{"gitId":"tanveersingh10"},"content":" \"Please use: event task_name /from start /to end\");","lastModifiedDate":"2023-08-23"},{"lineNumber":206,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":207,"author":{"gitId":"tanveersingh10"},"content":" String from \u003d timeParts[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":208,"author":{"gitId":"tanveersingh10"},"content":" String to \u003d timeParts[1].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":209,"author":{"gitId":"tanveersingh10"},"content":" LocalDateTime fromTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"tanveersingh10"},"content":" LocalDateTime toTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"tanveersingh10"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"tanveersingh10"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"tanveersingh10"},"content":" fromTime \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"tanveersingh10"},"content":" toTime \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"tanveersingh10"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Please use the format dd/MM/yyyy HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"tanveersingh10"},"content":" Task task \u003d new Event(taskName, fromTime, toTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"tanveersingh10"},"content":" taskManager.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":222,"author":{"gitId":"tanveersingh10"},"content":" updateStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":224,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":225,"author":{"gitId":"tanveersingh10"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"tanveersingh10"},"content":" * this function allows the user to delete a task by identifying its index.","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"tanveersingh10"},"content":" * @param input","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"tanveersingh10"},"content":" * @param taskManager","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"tanveersingh10"},"content":" * @throws InvalidArgumentException","lastModifiedDate":"2023-08-24"},{"lineNumber":230,"author":{"gitId":"tanveersingh10"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":231,"author":{"gitId":"tanveersingh10"},"content":" private void handleDelete(String input, TaskManager taskManager) throws InvalidArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"tanveersingh10"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":233,"author":{"gitId":"tanveersingh10"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":234,"author":{"gitId":"tanveersingh10"},"content":" int index \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-23"},{"lineNumber":235,"author":{"gitId":"tanveersingh10"},"content":" taskManager.delete(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":236,"author":{"gitId":"tanveersingh10"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":237,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"Please enter a numerical index!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":238,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":239,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":240,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanveersingh10":231,"-":9}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"import tasks.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"import tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":"import exceptions.StorageException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":"import java.io.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanveersingh10"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanveersingh10"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanveersingh10"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanveersingh10"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanveersingh10"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanveersingh10"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanveersingh10"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanveersingh10"},"content":" public void saveData(TaskManager taskManager) throws StorageException {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanveersingh10"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanveersingh10"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanveersingh10"},"content":" BufferedWriter bw \u003d new BufferedWriter(fw);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanveersingh10"},"content":" for (Task task: taskManager.getList()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanveersingh10"},"content":" bw.append(task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanveersingh10"},"content":" bw.append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanveersingh10"},"content":" bw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanveersingh10"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanveersingh10"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanveersingh10"},"content":" throw new StorageException(\"Couldn\u0027t save data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tanveersingh10"},"content":" public TaskManager loadData() throws StorageException {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tanveersingh10"},"content":" File savedFile \u003d new File(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tanveersingh10"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tanveersingh10"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tanveersingh10"},"content":" Scanner fileReader \u003d new Scanner(savedFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanveersingh10"},"content":" while (fileReader.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tanveersingh10"},"content":" tasks.add(readLine(fileReader.nextLine()));","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tanveersingh10"},"content":" fileReader.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tanveersingh10"},"content":" TaskManager taskmanager \u003d new TaskManager(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tanveersingh10"},"content":" return taskmanager;","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tanveersingh10"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanveersingh10"},"content":" createFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tanveersingh10"},"content":" return new TaskManager();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tanveersingh10"},"content":" // basically the format will be something like this:","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tanveersingh10"},"content":" // [T][X] do homework","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"tanveersingh10"},"content":" // [D][ ] submit assignment (by: Friday)","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"tanveersingh10"},"content":" // [E][ ] attend lecture (from: Wednesday to: Thursday)","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"tanveersingh10"},"content":" private Task readLine(String line) throws StorageException {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"tanveersingh10"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"tanveersingh10"},"content":" line \u003d line.trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"tanveersingh10"},"content":" Pattern todoPattern \u003d Pattern.compile(\"\\\\[T\\\\]\\\\[(.)\\\\] (.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tanveersingh10"},"content":" Pattern deadlinePattern \u003d Pattern.compile(\"\\\\[D\\\\]\\\\[(.)\\\\] (.*) \\\\(by: (.*)\\\\)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tanveersingh10"},"content":" Pattern eventPattern \u003d Pattern.compile(\"\\\\[E\\\\]\\\\[(.)\\\\] (.*) \\\\(from: (.*) to: (.*)\\\\)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tanveersingh10"},"content":" Matcher matcher;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tanveersingh10"},"content":" matcher \u003d todoPattern.matcher(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"tanveersingh10"},"content":" if (matcher.matches()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"tanveersingh10"},"content":" boolean isDone \u003d matcher.group(1).equals(\"X\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"tanveersingh10"},"content":" String taskName \u003d matcher.group(2).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tanveersingh10"},"content":" ToDo todo \u003d new ToDo(taskName, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tanveersingh10"},"content":" return todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"tanveersingh10"},"content":" matcher \u003d deadlinePattern.matcher(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"tanveersingh10"},"content":" if (matcher.matches()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"tanveersingh10"},"content":" boolean isDone \u003d matcher.group(1).equals(\"X\");","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tanveersingh10"},"content":" String taskName \u003d matcher.group(2).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"tanveersingh10"},"content":" String dueString \u003d matcher.group(3).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"tanveersingh10"},"content":" LocalDateTime dueTime \u003d LocalDateTime.parse(dueString, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"tanveersingh10"},"content":" Deadline deadline \u003d new Deadline(taskName, isDone, dueTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"tanveersingh10"},"content":" return deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"tanveersingh10"},"content":" matcher \u003d eventPattern.matcher(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"tanveersingh10"},"content":" if (matcher.matches()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"tanveersingh10"},"content":" boolean isDone \u003d matcher.group(1).equals(\"X\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"tanveersingh10"},"content":" String taskName \u003d matcher.group(2).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"tanveersingh10"},"content":" String fromString \u003d matcher.group(3).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"tanveersingh10"},"content":" String toString \u003d matcher.group(4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"tanveersingh10"},"content":" LocalDateTime fromTime \u003d LocalDateTime.parse(fromString, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"tanveersingh10"},"content":" LocalDateTime toTime \u003d LocalDateTime.parse(toString, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"tanveersingh10"},"content":" return new Event(taskName, isDone, fromTime, toTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"tanveersingh10"},"content":" throw new StorageException(\"There was an issue reading your data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"tanveersingh10"},"content":" public void createFile() throws StorageException {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"tanveersingh10"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"tanveersingh10"},"content":" File rootDirectory \u003d new File(file.getParent());","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"tanveersingh10"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"tanveersingh10"},"content":" rootDirectory.mkdir();","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"tanveersingh10"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"tanveersingh10"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"tanveersingh10"},"content":" throw new StorageException(\"Unable to create a database\");","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanveersingh10":115}},{"path":"src/main/java/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"import exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":"public class TaskManager {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" private int numOfTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" public TaskManager() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" this.index \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" this.numOfTasks \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanveersingh10"},"content":" public TaskManager(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanveersingh10"},"content":" this.list \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanveersingh10"},"content":" this.numOfTasks \u003d this.list.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanveersingh10"},"content":" this.index \u003d this.numOfTasks - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"tanveersingh10"},"content":" public void add (Task task) {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tanveersingh10"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"tanveersingh10"},"content":" this.numOfTasks +\u003d 1;","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"tanveersingh10"},"content":" String taskName \u003d task.getTaskName();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanveersingh10"},"content":" UI.addTask(taskName, numOfTasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"tanveersingh10"},"content":" public void list() {","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanveersingh10"},"content":" for (int i \u003d 0; i \u003c numOfTasks; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"tanveersingh10"},"content":" System.out.println((i + 1) + \". \" + list.get(i));","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"tanveersingh10"},"content":" public void mark(int index) throws InvalidArgumentException {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"tanveersingh10"},"content":" if (index \u003e numOfTasks) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"I\u0027m sorry but that task does not exist. There are only \" + numOfTasks + \"tasks.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"tanveersingh10"},"content":" index -\u003d 1; // since 0 indexed","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"tanveersingh10"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"tanveersingh10"},"content":" task.mark();","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"tanveersingh10"},"content":" UI.markTask(task.getTaskName());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":49,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"tanveersingh10"},"content":" public void unmark(int index) throws InvalidArgumentException {","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"tanveersingh10"},"content":" if (index \u003e numOfTasks) {","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"I\u0027m sorry but that task does not exist. There are only \" + numOfTasks + \" tasks.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"tanveersingh10"},"content":" index -\u003d 1; // since 0 indexed","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"tanveersingh10"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"tanveersingh10"},"content":" task.unmark();","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"tanveersingh10"},"content":" UI.unMarkTask(task.getTaskName());","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":59,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":60,"author":{"gitId":"tanveersingh10"},"content":" public void delete(int index) throws InvalidArgumentException {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"tanveersingh10"},"content":" if (index \u003e numOfTasks) {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"tanveersingh10"},"content":" throw new InvalidArgumentException(\"I\u0027m sorry but that task does not exist. There are only \" + numOfTasks + \" tasks.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"tanveersingh10"},"content":" numOfTasks -\u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"tanveersingh10"},"content":" Task removedTask \u003d list.get(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"tanveersingh10"},"content":" list.remove(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"tanveersingh10"},"content":" UI.deleteTask(removedTask.getTaskName(), numOfTasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"tanveersingh10"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tanveersingh10"},"content":" return list;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"tanveersingh10":73}},{"path":"src/main/java/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"public class UI {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":" public static void printLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" public static void addTask(String taskName, int numOfTasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Got it. I\u0027ve added the task:\\n\" + taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" if (numOfTasks !\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Now you have \" + numOfTasks + \" tasks in your list, just like how I have 5 Ballon d\u0027Ors.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Now you have \" + numOfTasks + \" task in your list, just like how I have 5 Ballon d\u0027Ors.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanveersingh10"},"content":" public static void deleteTask(String taskName, int numOfTasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Removed task:\\n\" + taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"Now you have \" + numOfTasks + \" tasks in your list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanveersingh10"},"content":" UI.printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanveersingh10"},"content":" public static void markTask(String taskName) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanveersingh10"},"content":" printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"SIUUU! I\u0027ve marked this task as done. We will make Saudi League number 1.\\n [X] \" + taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanveersingh10"},"content":" printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanveersingh10"},"content":" public static void unMarkTask(String taskName) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanveersingh10"},"content":" printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanveersingh10"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done.\\n [ ] \" + taskName);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanveersingh10"},"content":" printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanveersingh10":35}},{"path":"src/main/java/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"[D][ ] hello world (by: 12 Dec 2021, 00:00)","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanveersingh10":1}},{"path":"src/main/java/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"package exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" return \"☹ OOPS!!! \";","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanveersingh10":11}},{"path":"src/main/java/exceptions/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"package exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"public class InvalidArgumentException extends DukeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":" String message;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" public InvalidArgumentException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" return super.getMessage() + message;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanveersingh10":15}},{"path":"src/main/java/exceptions/StorageException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"package exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"public class StorageException extends DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":" String message;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" public StorageException(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" return super.getMessage() + message;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanveersingh10":15}},{"path":"src/main/java/exceptions/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"package exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"public class UnknownCommandException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":" String message;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" public UnknownCommandException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" return super.getMessage() + this.message;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"tanveersingh10":15}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" LocalDateTime dateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" public Deadline(String taskName, LocalDateTime time) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" super(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":" this.dateTime \u003d time;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" public Deadline(String taskName, boolean done, LocalDateTime time) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" super(taskName, done);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":" this.dateTime \u003d time;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tanveersingh10"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"tanveersingh10"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy, HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanveersingh10"},"content":" String formattedDate \u003d dateTime.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanveersingh10"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formattedDate + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanveersingh10":25}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" private LocalDateTime fromTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" private LocalDateTime toTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":" public Event(String taskName, LocalDateTime fromTime, LocalDateTime toTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" super(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" this.fromTime \u003d fromTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" this.toTime \u003d toTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"tanveersingh10"},"content":" public Event(String taskName, boolean done, LocalDateTime fromTime, LocalDateTime toTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanveersingh10"},"content":" super(taskName, done);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanveersingh10"},"content":" this.fromTime \u003d fromTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanveersingh10"},"content":" this.toTime \u003d toTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tanveersingh10"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tanveersingh10"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy, HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanveersingh10"},"content":" String formattedFromTime \u003d fromTime.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanveersingh10"},"content":" String formattedToTime \u003d toTime.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanveersingh10"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formattedFromTime + \" to: \" + formattedToTime + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanveersingh10":31}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":" protected String taskName;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" protected boolean done;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" public Task(String taskName) {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" public Task(String taskName, boolean done) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":" this.done \u003d done;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanveersingh10"},"content":" //default constructor","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tanveersingh10"},"content":" public Task() {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"tanveersingh10"},"content":" this.taskName \u003d \"Untitled task\";","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"tanveersingh10"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tanveersingh10"},"content":" public void mark() {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tanveersingh10"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"tanveersingh10"},"content":" public void unmark() {","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanveersingh10"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"tanveersingh10"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"tanveersingh10"},"content":" String status \u003d this.done ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"tanveersingh10"},"content":" return status + \" \" + taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"tanveersingh10"},"content":" public String getTaskName() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tanveersingh10"},"content":" return this.taskName;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanveersingh10":45}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"package tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":" public ToDo(String taskName) {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":" super(taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":" public ToDo(String taskName, boolean done) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":" super(taskName, done);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"tanveersingh10"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"tanveersingh10"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"tanveersingh10"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanveersingh10":16}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanveersingh10"},"content":"todo send flowers to mom","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"tanveersingh10"},"content":"deadline cs2103t assignment /due Tuesday","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tanveersingh10"},"content":"event watch oppenheimer /from 7pm /to 10pm","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tanveersingh10"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tanveersingh10"},"content":"mark hello world","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tanveersingh10"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"tanveersingh10"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tanveersingh10"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tanveersingh10"},"content":"yo yo yo","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tanveersingh10"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tanveersingh10"},"content":"delete 100","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tanveersingh10"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanveersingh10"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanveersingh10":13}},{"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":"tanveersingh10"},"content":"javac -cp ..\\src\\duke\\java -Xlint:none -d ..\\bin ..\\src\\duke\\java\\*.java","lastModifiedDate":"2023-09-01"},{"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":"tanveersingh10"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"tanveersingh10":2,"-":19}},{"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":"tanveersingh10"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/**/*.java","lastModifiedDate":"2023-08-24"},{"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":"-"},"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":{"tanveersingh10":1,"-":37}}] diff --git a/tanveersingh10_ip_master/commits.json b/tanveersingh10_ip_master/commits.json index 097fbcbb..81ea9a7e 100644 --- a/tanveersingh10_ip_master/commits.json +++ b/tanveersingh10_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tanveersingh10":[{"date":"2023-08-20","commitResults":[{"hash":"3e9462af150b9217b00f47df1d6ec3d293bb7778","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"2201ff2dd0957a4e3ffc0b591bbee9f773c0d354","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"75c6b54cc1e06dd8a0be6a4d25b21c6ee4b0c032","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":1}}},{"hash":"1e87b4d582e69cda5745d11968862492fb46d87d","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":2}}}]},{"date":"2023-08-21","commitResults":[{"hash":"61715a1cb5cbc8d0e39aa97e8c6855024d145a6c","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3-updated"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":18}}},{"hash":"0d017639d8a0d7ad769c117cb0f64745672df721","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":39}}},{"hash":"ea621deb9a6abea6cba380274a1d416c93331a08","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":16,"deletions":7}}}]},{"date":"2023-08-23","commitResults":[{"hash":"ef6a8b6a3bf9a09a0e0c9120761a27ff206fefae","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":190,"deletions":126}}},{"hash":"72739fc53b44b8bdfd2cb13b4896d4c8721be8d8","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":10}}}]},{"date":"2023-08-24","commitResults":[{"hash":"3823724b1612b836bcf976559f4d750956d08a26","isMergeCommit":false,"messageTitle":"updated testing","messageBody":"","tags":["Level-6-updated"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":2},"java":{"insertions":92,"deletions":70},"sh":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"tanveersingh10":{"java":367,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":13}},"authorContributionVariance":{"tanveersingh10":17541.104},"authorDisplayNameMap":{"tanveersingh10":"CS2103T-T09-3 TANV..HDEV"}} +{"authorDailyContributionsMap":{"tanveersingh10":[{"date":"2023-08-20","commitResults":[{"hash":"3e9462af150b9217b00f47df1d6ec3d293bb7778","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"2201ff2dd0957a4e3ffc0b591bbee9f773c0d354","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"75c6b54cc1e06dd8a0be6a4d25b21c6ee4b0c032","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":1}}},{"hash":"1e87b4d582e69cda5745d11968862492fb46d87d","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":2}}}]},{"date":"2023-08-21","commitResults":[{"hash":"61715a1cb5cbc8d0e39aa97e8c6855024d145a6c","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3-updated"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":18}}},{"hash":"0d017639d8a0d7ad769c117cb0f64745672df721","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":39}}},{"hash":"ea621deb9a6abea6cba380274a1d416c93331a08","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":16,"deletions":7}}}]},{"date":"2023-08-23","commitResults":[{"hash":"ef6a8b6a3bf9a09a0e0c9120761a27ff206fefae","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":190,"deletions":126}}},{"hash":"72739fc53b44b8bdfd2cb13b4896d4c8721be8d8","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":10}}}]},{"date":"2023-08-24","commitResults":[{"hash":"3823724b1612b836bcf976559f4d750956d08a26","isMergeCommit":false,"messageTitle":"updated testing","messageBody":"","tags":["Level-6-updated"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":2},"java":{"insertions":92,"deletions":70},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"2246c9b933a48af73c27dc534e744174c472adc9","isMergeCommit":false,"messageTitle":"new features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":221,"deletions":33},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"6fc0c27f5cb8e2432058399ef49128bb8efb0701","isMergeCommit":false,"messageTitle":"Level 7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":96,"deletions":68},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"081a7caeb06d03b42938ff9a4294044a3607accf","isMergeCommit":false,"messageTitle":"Level 7","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"a49b0272a1e5286542c10fdd7f0d4856cbeedb2c","isMergeCommit":false,"messageTitle":"Level 8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":3},"java":{"insertions":65,"deletions":22}}},{"hash":"aebf2445bd2ec388c75d4b5fe777dea62d801d29","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tanveersingh10":{"java":627,"md":2,"fxml":0,"sh":1,"bat":2,"gradle":0,"txt":14}},"authorContributionVariance":{"tanveersingh10":25810.459},"authorDisplayNameMap":{"tanveersingh10":"CS2103T-T09-3 TANV..HDEV"}} diff --git a/tanyyyming_ip_master/authorship.json b/tanyyyming_ip_master/authorship.json index ece2dabd..32e28c83 100644 --- a/tanyyyming_ip_master/authorship.json +++ b/tanyyyming_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" mainClass.set(\"jarvis.Jarvis\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":" archiveBaseName \u003d \"jarvis\"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" archiveVersion \u003d \"0.1\"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanyyyming":3,"-":40}},{"path":"src/main/java/command/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package command;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public enum CommandType {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" LIST,","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" MARK, UNMARK,","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" TODO, DEADLINE, EVENT,","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" DELETE","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":8}},{"path":"src/main/java/command/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package command;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.EmptyArgumentException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidCommandException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.JarvisException;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.ITaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.TaskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"public class Parser {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" protected ITaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" public Parser(ITaskList taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" public void parseAndExecute(String userInput) throws JarvisException {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" String command \u003d userInput.split(\" \")[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" String arguments \u003d userInput.replaceFirst(command, \"\").strip();","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" execute(command, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" // a helper method for the above resolve method.","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" protected void execute(String command, String args) throws JarvisException {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" CommandType commandType \u003d CommandType.valueOf(command.toUpperCase());","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" // go through commands without any arguments.","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" case LIST: {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" taskList.show();","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" if (args.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" throw new EmptyArgumentException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" // go through commands with arguments.","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" case MARK: {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" int taskNumber \u003d Integer.parseInt(args);","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" taskList.markDone(taskNumber);","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"tanyyyming"},"content":" case UNMARK: {","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"tanyyyming"},"content":" int taskNumber \u003d Integer.parseInt(args);","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"tanyyyming"},"content":" taskList.markUndone(taskNumber);","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"tanyyyming"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"tanyyyming"},"content":" case TODO: {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"tanyyyming"},"content":" taskList.add(args, CommandType.TODO);","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"tanyyyming"},"content":" case DEADLINE: {","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"tanyyyming"},"content":" String[] varargs \u003d args.split(\"\\\\s+/by\\\\s+\");","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"tanyyyming"},"content":" String description \u003d varargs[0], by \u003d varargs[1];","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"tanyyyming"},"content":" taskList.add(description, CommandType.DEADLINE, by);","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"tanyyyming"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"tanyyyming"},"content":" case EVENT: {","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"tanyyyming"},"content":" String[] varargs \u003d args.split(\"\\\\s+/from\\\\s+|\\\\s+/to\\\\s+\");","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"tanyyyming"},"content":" String description \u003d varargs[0], from \u003d varargs[1], to \u003d varargs[2];","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"tanyyyming"},"content":" taskList.add(description, CommandType.EVENT, from, to);","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"tanyyyming"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"tanyyyming"},"content":" case DELETE: {","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"tanyyyming"},"content":" int taskNumber \u003d Integer.parseInt(args);","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"tanyyyming"},"content":" taskList.delete(taskNumber);","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"tanyyyming"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"tanyyyming"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidCommandException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanyyyming":99}},{"path":"src/main/java/jarvis/Jarvis.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package jarvis;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import command.Parser;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.JarvisException;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.TaskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":"public class Jarvis {","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" public final static String JARVIS_LOGO \u003d \" \\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" \" .::^^^^^^::. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" \" .^!??????777??????7~: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" \" .~?J?7!~^:::::::::^^~!?JJ7: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" \" :7YJ!~^:..:::::7???7!~:::^~7Y?^ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" \" .!Y?~^^..:^^:.. :?::^~!?J?!::^^7Y?: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" \" .?Y~^^..^^. :YP?. .^?Y7::^^?Y~ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" \" .JY^^: ^~. :5PP5: :JY~.~:75~ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" \" ?5^^: ~^ ^5PP5:~J. 75! ~.?Y: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" \" ^5?:~ :~ ^5PP5:~PPJ. ?Y::~^57 \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" \" ~Y~:: ^. ~PPP5: !PPPY. ~5! ^.J? \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" \" .! . . :JYYJ: ~PPPY: ^57 . ^^ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" \" ! ^^ ^^ ~5PPY: !5~.~ ~: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" \" ~^ ! .!. !JJJJJJJJJJJ?5PPP5: :YJ.^: ! \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" \" !.:~ .~.!5PPPPPPPPPPPP5555PY:^YJ.:~ ~: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" \" .!.:~..~!^................:~JY7.^^ ~^ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" \" .~^.^^..^^:. .:!?J7::^:.~: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" \" :~::^^:.::^^:::!777?J?7~::^::^^. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" \" :^^::::::::::~~~~^^::::::^^. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" \" .:^^:::::::::::::::^^^: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" \" .:::::. :::::.. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" \" \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" \" \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":" \" ^!. ~7^ :77777!: !! ~7..!~ .~77777: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" \" Y\u0026^ 7\u0026B#^ :!!!!!Y\u0026! 7\u0026Y 7\u0026Y :\u00265 G#?!7!!: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" \" J\u0026^ !\u0026J.G#: ^JJJJJPB~ 7\u0026? ~\u0026Y :#5 JBYJJY?: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" \" :::^G#: !\u0026Y .BB: !\u0026J^~G\u0026~ ?\u0026Y#5 :\u00265 .^~~~J\u0026J \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" \" .YYYYJ: :5Y. :5? ^P~ .YY: ?PY. .5? 7YYYYYJ: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" \" \";","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" private Parser parser;","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" String dataFilePath \u003d \"data/jarvislist.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":" new Jarvis(dataFilePath).run();","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"tanyyyming"},"content":" public Jarvis(String dataFilePath) {","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"tanyyyming"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"tanyyyming"},"content":" taskList \u003d new TaskList(new Storage(dataFilePath), ui);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"tanyyyming"},"content":" parser \u003d new Parser(taskList);","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"tanyyyming"},"content":" } catch (JarvisException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"tanyyyming"},"content":" ui.print(e.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"tanyyyming"},"content":" public void run() {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"tanyyyming"},"content":" System.out.println(JARVIS_LOGO);","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"tanyyyming"},"content":" ui.greet();","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"tanyyyming"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"tanyyyming"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":69,"author":{"gitId":"tanyyyming"},"content":" while (!userInput.equals(\"exit\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":70,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"tanyyyming"},"content":" parser.parseAndExecute(userInput);","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"tanyyyming"},"content":" } catch (JarvisException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"tanyyyming"},"content":" ui.print(e.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"tanyyyming"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":77,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":78,"author":{"gitId":"tanyyyming"},"content":" scanner.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"tanyyyming"},"content":" ui.exit();","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":81,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":82,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanyyyming":82}},{"path":"src/main/java/services/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public class Ui {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" private final static String HORIZONTAL_LINE \u003d \"_________________________________________________________________________\\n\";","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" public void exit() {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" String exitMessage \u003d \"Goodbye, sir.\\n\" + \"Shutting down...\";","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" new Ui().print(exitMessage);","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" public void print(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" String messageWithHorizontalLine \u003d HORIZONTAL_LINE + message + \"\\n\" + HORIZONTAL_LINE;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" System.out.print(messageWithHorizontalLine);","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" public void greet() {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" String greetMessage \u003d \"At your service, sir.\";","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" print(greetMessage);","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanyyyming":20}},{"path":"src/main/java/services/bizerrors/EmptyArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"public class EmptyArgumentException extends JarvisException {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" public EmptyArgumentException(String command) {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" super(String.format(\"Sir, I did not catch what you say after the command (%s).\\nI beg your pardon.\", command));","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":9}},{"path":"src/main/java/services/bizerrors/IndexOutOfRangeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"public class IndexOutOfRangeException extends JarvisException {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" public IndexOutOfRangeException(int index, int taskCount) {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" super(String.format(\"Sir, your calendar does not contain this task index (%d).\\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" \"It currently has %d tasks.\", index, taskCount));","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":10}},{"path":"src/main/java/services/bizerrors/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"public class InvalidArgumentException extends JarvisException {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" public InvalidArgumentException(String command) {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" super(String.format(\"Sir, please check again to ensure you provide the correct arguments for command (%s).\", command));","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":9}},{"path":"src/main/java/services/bizerrors/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"public class InvalidCommandException extends JarvisException {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" public InvalidCommandException(String command) {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" super(String.format(\"Sorry, sir. Executing this command (%s) is beyond my capabilities.\", command));","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":9}},{"path":"src/main/java/services/bizerrors/JarvisException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public class JarvisException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" public JarvisException(String message) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" // add the newline for formatting of the error message","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":8}},{"path":"src/main/java/services/bizerrors/ReadFromFileException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public class ReadFromFileException extends JarvisException {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" public ReadFromFileException() {","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" super(\"Sorry, sir. I am unable to read your tasks from file.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanyyyming":7}},{"path":"src/main/java/services/bizerrors/SaveToFileException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public class SaveToFileException extends JarvisException {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" public SaveToFileException() {","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" super(\"Sorry, sir. I am unable to save your tasks to file.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanyyyming":7}},{"path":"src/main/java/services/tasklist/IStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.ReadFromFileException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.SaveToFileException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"public interface IStorage {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" void save(List\u003cTask\u003e taskList) throws SaveToFileException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" List\u003cTask\u003e load() throws ReadFromFileException, InvalidArgumentException;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanyyyming":13}},{"path":"src/main/java/services/tasklist/ITaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import command.CommandType;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.JarvisException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"public interface ITaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" void add(String description, CommandType taskType, String... args) throws JarvisException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" void delete(int taskNumber) throws JarvisException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" void markDone(int taskNumber) throws JarvisException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" void markUndone(int taskNumber) throws JarvisException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" void show();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanyyyming":12}},{"path":"src/main/java/services/tasklist/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.ReadFromFileException;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.SaveToFileException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Deadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Event;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Todo;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":"import java.util.List;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":"public class Storage implements IStorage {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" private File dataFile;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" public Storage(String dataFilePath) throws SaveToFileException {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" File file \u003d new File(dataFilePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" File parentDir \u003d file.getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" parentDir.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" dataFile \u003d file;","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" throw new SaveToFileException();","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" public void save(List\u003cTask\u003e tasks) throws SaveToFileException {","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" FileWriter fileWriter \u003d new FileWriter(dataFile);","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" fileWriter.write(task.encode() + \"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" throw new SaveToFileException();","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":" public List\u003cTask\u003e load() throws ReadFromFileException, InvalidArgumentException {","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"tanyyyming"},"content":" Scanner scanner \u003d new Scanner(dataFile);","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"tanyyyming"},"content":" List\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"tanyyyming"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"tanyyyming"},"content":" String encodedTask \u003d scanner.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"tanyyyming"},"content":" Task task;","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"tanyyyming"},"content":" String[] varargs \u003d encodedTask.split(\" \\\\| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"tanyyyming"},"content":" switch (encodedTask.charAt(0)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"tanyyyming"},"content":" case \u0027T\u0027:","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"tanyyyming"},"content":" task \u003d new Todo(varargs[2]);","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"tanyyyming"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"tanyyyming"},"content":" case \u0027D\u0027:","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"tanyyyming"},"content":" task \u003d new Deadline(varargs[2], varargs[3]);","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"tanyyyming"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"tanyyyming"},"content":" case \u0027E\u0027:","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"tanyyyming"},"content":" task \u003d new Event(varargs[2], varargs[3], varargs[4]);","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"tanyyyming"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"tanyyyming"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"tanyyyming"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"tanyyyming"},"content":" if (varargs[1].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"tanyyyming"},"content":" task.setDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"tanyyyming"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"tanyyyming"},"content":" scanner.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"tanyyyming"},"content":" return taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"tanyyyming"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"tanyyyming"},"content":" throw new ReadFromFileException();","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanyyyming":82}},{"path":"src/main/java/services/tasklist/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import command.CommandType;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.EmptyArgumentException;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.IndexOutOfRangeException;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.JarvisException;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Event;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Task;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Todo;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":"import java.util.List;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":"public class TaskList implements ITaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" protected List\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" protected IStorage repo;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" protected int taskCount;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" protected Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" public TaskList(IStorage repo, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" this.repo \u003d repo;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" taskList \u003d repo.load();","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" taskCount \u003d taskList.size();","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" } catch (JarvisException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" ui.print(e.toString() + \"\\nA temporary session is opened for you.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" taskCount \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" public void add(String description, CommandType taskType, String... args) throws JarvisException {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" Task newTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" // this if block is unnecessary currently (is never reached), but it may be useful in the future.","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" throw new EmptyArgumentException(taskType.toString().toLowerCase());","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" case TODO:","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":" newTask \u003d new Todo(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" newTask \u003d new Deadline(description, args[0]);","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"tanyyyming"},"content":" case EVENT:","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"tanyyyming"},"content":" newTask \u003d new Event(description, args[0], args[1]);","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"tanyyyming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"tanyyyming"},"content":" default:","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"tanyyyming"},"content":" // the program should never reach this point.","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"tanyyyming"},"content":" throw new JarvisException(\"Default case reached.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"tanyyyming"},"content":" taskList.add(newTask);","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"tanyyyming"},"content":" taskCount++;","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"tanyyyming"},"content":" repo.save(taskList);","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"tanyyyming"},"content":" ui.print(\"added: \" + newTask + \"\\n\" + taskCount + \" more tasks to do, Sir.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"tanyyyming"},"content":" public void delete(int taskNumber) throws JarvisException {","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"tanyyyming"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskCount) {","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"tanyyyming"},"content":" throw new IndexOutOfRangeException(taskNumber, taskCount);","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"tanyyyming"},"content":" Task deletedTask \u003d taskList.get(taskNumber - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"tanyyyming"},"content":" taskList.remove(taskNumber - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"tanyyyming"},"content":" taskCount--;","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"tanyyyming"},"content":" repo.save(taskList);","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"tanyyyming"},"content":" ui.print(\"removed: \" + deletedTask + \"\\n\" + taskCount + \" tasks left, Sir.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"tanyyyming"},"content":" public void markDone(int taskNumber) throws JarvisException {","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"tanyyyming"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskCount) {","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"tanyyyming"},"content":" throw new IndexOutOfRangeException(taskNumber, taskCount);","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"tanyyyming"},"content":" Task task \u003d taskList.get(taskNumber - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"tanyyyming"},"content":" task.setDone();","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"tanyyyming"},"content":" repo.save(taskList);","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"tanyyyming"},"content":" ui.print(\"Check.\\n\\t\" + task + \"\\n\" + \"Way to go, sir.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"tanyyyming"},"content":" public void markUndone(int taskNumber) throws JarvisException {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"tanyyyming"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskCount) {","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"tanyyyming"},"content":" throw new IndexOutOfRangeException(taskNumber, taskCount);","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"tanyyyming"},"content":" Task task \u003d taskList.get(taskNumber - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"tanyyyming"},"content":" task.setUndone();","lastModifiedDate":"2023-08-22"},{"lineNumber":93,"author":{"gitId":"tanyyyming"},"content":" repo.save(taskList);","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"tanyyyming"},"content":" ui.print(\"As you wish, sir.\\n\\t\" + task);","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":96,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"tanyyyming"},"content":" public void show() {","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"tanyyyming"},"content":" if (taskCount \u003d\u003d 0) {","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"tanyyyming"},"content":" ui.print(\"Sir, there are no tasks on your calendar.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"tanyyyming"},"content":" String result \u003d \"Sir, there are \" + taskCount + \" tasks on your calendar:\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"tanyyyming"},"content":" for (int i \u003d 1; i \u003c taskCount; i++) {","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"tanyyyming"},"content":" result +\u003d i + \". \" + taskList.get(i - 1) + \"\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"tanyyyming"},"content":" result +\u003d taskCount + \". \" + taskList.get(taskCount - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"tanyyyming"},"content":" ui.print(result);","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":110}},{"path":"src/main/java/services/tasklist/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist.tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" private DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" private DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" public Deadline(String description, String endTime) throws InvalidArgumentException {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, inputFormatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(\"deadline\");","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" public String encode() {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" return \"[D]\" + super.toString() + \" (by: \" + endTime.format(outputFormatter) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":31}},{"path":"src/main/java/services/tasklist/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist.tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" private DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" private DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" public Event(String description, String startTime, String endTime) throws InvalidArgumentException {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" this.startTime \u003d LocalDateTime.parse(startTime, inputFormatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, inputFormatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(\"event\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" public String encode() {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + startTime + \" | \" + endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" return \"[E]\" + super.toString()","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" + \" (from: \" + startTime.format(outputFormatter)","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" + \" to: \" + endTime.format(outputFormatter) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":35}},{"path":"src/main/java/services/tasklist/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist.tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" protected String description;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" protected String checkBox;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" this.checkBox \u003d \"[ ]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" public void setDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" this.checkBox \u003d \"[X]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" public void setUndone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" this.checkBox \u003d \"[ ]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" public abstract String encode();","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" return checkBox + \" \" + this.description;","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanyyyming":30}},{"path":"src/main/java/services/tasklist/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist.tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" public String encode() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":18}},{"path":"src/test/java/command/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.TaskListStub;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" protected TaskListStub taskListStub;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" protected Parser parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" public ParserTest() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" taskListStub \u003d new TaskListStub();","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" parser \u003d new Parser(taskListStub);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" public void execute_validInput_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"todo\", \"test\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"add method called with description: test and taskType: TODO and args: [].\",","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" taskListStub.getStatus());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"delete\", \"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"delete method called with taskNumber: 1.\", taskListStub.getStatus());","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"deadline\", \"test /by 2020-08-25 00:00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"add method called with description: test and taskType: DEADLINE \"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" + \"and args: [2020-08-25 00:00].\",","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" taskListStub.getStatus());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"list\", \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"show method called\", taskListStub.getStatus());","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" public void execute_invalidCommand_exceptionThrown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"invalid_command\", \"test\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"Sorry, sir. Executing this command (invalid_command) is beyond my capabilities.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" public void execute_invalidArgument_exceptionThrown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" // when the number of argument provided is incorrect.","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"event\", \"no time specified\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"Sir, please check again to ensure you provide \"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"tanyyyming"},"content":" + \"the correct arguments for command (event).\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"tanyyyming"},"content":" // when the argument cannot be parsed into an integer.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"mark\", \"string instead of integer\");","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"Sir, please check again to ensure you provide \"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"tanyyyming"},"content":" + \"the correct arguments for command (mark).\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"tanyyyming"},"content":" public void execute_emptyArgument_exceptionThrown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"mark\", \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"Sir, I did not catch what you say after the command (mark).\\nI beg your pardon.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"tanyyyming"},"content":" e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanyyyming":74}},{"path":"src/test/java/services/tasklist/StorageDummy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.ReadFromFileException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.SaveToFileException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":"public class StorageDummy implements IStorage {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" public StorageDummy() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" public void save(List\u003cTask\u003e taskList) throws SaveToFileException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" public List\u003cTask\u003e load() throws ReadFromFileException, InvalidArgumentException {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" return new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanyyyming":24}},{"path":"src/test/java/services/tasklist/TaskListStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import command.CommandType;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"public class TaskListStub implements ITaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" protected String status;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" public TaskListStub() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" public void add(String description, CommandType taskType, String... args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"add method called with description: \" + description","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" + \" and taskType: \" + taskType + \" and args: \" + Arrays.toString(args) + \".\";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" public void delete(int taskNumber) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"delete method called with taskNumber: \" + taskNumber + \".\";","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" public void markDone(int taskNumber) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"markDone method called with taskNumber: \" + taskNumber + \".\";","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" public void markUndone(int taskNumber) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"markUndone method called with taskNumber: \" + taskNumber + \".\";","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" public void show() {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"show method called\";","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" return status;","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanyyyming":43}},{"path":"src/test/java/services/tasklist/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import command.CommandType;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" // the following three test cases are testing the add method in TaskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" public void add_todoTask_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" TaskList taskList \u003d new TaskList(new StorageDummy(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" taskList.add(\"test\", CommandType.TODO);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" assertEquals(1, taskList.taskCount);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" assertTrue(taskList.taskList.get(0) instanceof Todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" public void add_deadlineTask_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" TaskList taskList \u003d new TaskList(new StorageDummy(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" taskList.add(\"test\", CommandType.DEADLINE, \"2020-08-25 00:00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" assertEquals(1, taskList.taskCount);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" assertTrue(taskList.taskList.get(0) instanceof Deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" public void add_eventTask_exceptionThrown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" TaskList taskList \u003d new TaskList(new StorageDummy(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" taskList.add(\"test\", CommandType.EVENT, \"invalid time format\", \"2020-08-25 01:00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"Sir, please check again to ensure you provide \"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" + \"the correct arguments for command (event).\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanyyyming":49}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"todo task one","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"deadline task 2 /by time 1","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"event task 3 /from time 2 /to time 3","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"unmark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"exit","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":7}},{"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":"tanyyyming"},"content":"REM Note that the chatbot name has changed from Duke to jarvis.jarvis","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":"java -classpath ..\\bin jarvis.jarvis \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanyyyming":2,"-":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":"tanyyyming"},"content":"# Note that the chatbot name has changed from Duke to Jarvis.Jarvis","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":"java -classpath ../bin Jarvis \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanyyyming":2,"-":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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" mainClass.set(\"jarvis.Jarvis\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":" archiveBaseName \u003d \"jarvis\"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" archiveVersion \u003d \"0.1\"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanyyyming":3,"-":40}},{"path":"src/main/java/command/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package command;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public enum CommandType {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" LIST, FIND,","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" MARK, UNMARK,","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" TODO, DEADLINE, EVENT,","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" DELETE","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":8}},{"path":"src/main/java/command/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package command;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.EmptyArgumentException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidCommandException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.JarvisException;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.ITaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" * Represents a parser that parses the user input and executes the corresponding command.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"public class Parser {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" protected ITaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" public Parser(ITaskList taskList) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" * Parses the user input and executes the corresponding command.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" * @param userInput the user input with the command and arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" * @throws JarvisException if the command is invalid or the arguments are invalid/empty or","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" * there are exceptions during execution.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" public void parseAndExecute(String userInput) throws JarvisException {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" String command \u003d userInput.split(\" \")[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" String arguments \u003d userInput.replaceFirst(command, \"\").strip();","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" execute(command, arguments);","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" * Executes the command with the given arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":" * This is a helper method for parseAndExecute.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" * @param command the command to be executed.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" * @param args the argument list for the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" * @throws JarvisException if the command is invalid or the arguments are invalid/empty or","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" * there are exceptions during execution.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" protected void execute(String command, String args) throws JarvisException {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" CommandType commandType \u003d CommandType.valueOf(command.toUpperCase());","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":" // go through commands without any arguments.","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" case LIST: {","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" taskList.show();","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"tanyyyming"},"content":" if (args.isEmpty()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"tanyyyming"},"content":" throw new EmptyArgumentException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"tanyyyming"},"content":" // go through commands with arguments.","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"tanyyyming"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"tanyyyming"},"content":" case FIND: {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"tanyyyming"},"content":" taskList.find(args);","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"tanyyyming"},"content":" case MARK: {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"tanyyyming"},"content":" int taskNumber \u003d Integer.parseInt(args);","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"tanyyyming"},"content":" taskList.markDone(taskNumber);","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"tanyyyming"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"tanyyyming"},"content":" case UNMARK: {","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"tanyyyming"},"content":" int taskNumber \u003d Integer.parseInt(args);","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"tanyyyming"},"content":" taskList.markUndone(taskNumber);","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"tanyyyming"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"tanyyyming"},"content":" case TODO: {","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"tanyyyming"},"content":" taskList.add(args, CommandType.TODO);","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"tanyyyming"},"content":" case DEADLINE: {","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"tanyyyming"},"content":" String[] varargs \u003d args.split(\"\\\\s+/by\\\\s+\");","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"tanyyyming"},"content":" String description \u003d varargs[0], by \u003d varargs[1];","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"tanyyyming"},"content":" taskList.add(description, CommandType.DEADLINE, by);","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"tanyyyming"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"tanyyyming"},"content":" case EVENT: {","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"tanyyyming"},"content":" String[] varargs \u003d args.split(\"\\\\s+/from\\\\s+|\\\\s+/to\\\\s+\");","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"tanyyyming"},"content":" String description \u003d varargs[0], from \u003d varargs[1], to \u003d varargs[2];","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"tanyyyming"},"content":" taskList.add(description, CommandType.EVENT, from, to);","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"tanyyyming"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"tanyyyming"},"content":" case DELETE: {","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"tanyyyming"},"content":" int taskNumber \u003d Integer.parseInt(args);","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"tanyyyming"},"content":" taskList.delete(taskNumber);","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"tanyyyming"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-29"},{"lineNumber":112,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"tanyyyming"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidCommandException(command);","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanyyyming":120}},{"path":"src/main/java/jarvis/Jarvis.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package jarvis;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import command.Parser;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.JarvisException;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.TaskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":"public class Jarvis {","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" public final static String JARVIS_LOGO \u003d \" \\n\" +","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" \" .::^^^^^^::. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" \" .^!??????777??????7~: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" \" .~?J?7!~^:::::::::^^~!?JJ7: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" \" :7YJ!~^:..:::::7???7!~:::^~7Y?^ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" \" .!Y?~^^..:^^:.. :?::^~!?J?!::^^7Y?: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" \" .?Y~^^..^^. :YP?. .^?Y7::^^?Y~ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" \" .JY^^: ^~. :5PP5: :JY~.~:75~ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" \" ?5^^: ~^ ^5PP5:~J. 75! ~.?Y: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" \" ^5?:~ :~ ^5PP5:~PPJ. ?Y::~^57 \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" \" ~Y~:: ^. ~PPP5: !PPPY. ~5! ^.J? \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" \" .! . . :JYYJ: ~PPPY: ^57 . ^^ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" \" ! ^^ ^^ ~5PPY: !5~.~ ~: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" \" ~^ ! .!. !JJJJJJJJJJJ?5PPP5: :YJ.^: ! \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" \" !.:~ .~.!5PPPPPPPPPPPP5555PY:^YJ.:~ ~: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" \" .!.:~..~!^................:~JY7.^^ ~^ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" \" .~^.^^..^^:. .:!?J7::^:.~: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" \" :~::^^:.::^^:::!777?J?7~::^::^^. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" \" :^^::::::::::~~~~^^::::::^^. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" \" .:^^:::::::::::::::^^^: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" \" .:::::. :::::.. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" \" \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" \" \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":" \" ^!. ~7^ :77777!: !! ~7..!~ .~77777: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" \" Y\u0026^ 7\u0026B#^ :!!!!!Y\u0026! 7\u0026Y 7\u0026Y :\u00265 G#?!7!!: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" \" J\u0026^ !\u0026J.G#: ^JJJJJPB~ 7\u0026? ~\u0026Y :#5 JBYJJY?: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" \" :::^G#: !\u0026Y .BB: !\u0026J^~G\u0026~ ?\u0026Y#5 :\u00265 .^~~~J\u0026J \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" \" .YYYYJ: :5Y. :5? ^P~ .YY: ?PY. .5? 7YYYYYJ: \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" \" \";","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" private Parser parser;","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" String dataFilePath \u003d \"data/jarvislist.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":" new Jarvis(dataFilePath).run();","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"tanyyyming"},"content":" public Jarvis(String dataFilePath) {","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"tanyyyming"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"tanyyyming"},"content":" taskList \u003d new TaskList(new Storage(dataFilePath), ui);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"tanyyyming"},"content":" parser \u003d new Parser(taskList);","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"tanyyyming"},"content":" } catch (JarvisException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"tanyyyming"},"content":" ui.print(e.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"tanyyyming"},"content":" public void run() {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"tanyyyming"},"content":" System.out.println(JARVIS_LOGO);","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"tanyyyming"},"content":" ui.greet();","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"tanyyyming"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"tanyyyming"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":69,"author":{"gitId":"tanyyyming"},"content":" while (!userInput.equals(\"exit\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":70,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"tanyyyming"},"content":" parser.parseAndExecute(userInput);","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"tanyyyming"},"content":" } catch (JarvisException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"tanyyyming"},"content":" ui.print(e.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"tanyyyming"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":77,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":78,"author":{"gitId":"tanyyyming"},"content":" scanner.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"tanyyyming"},"content":" ui.exit();","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":81,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":82,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanyyyming":82}},{"path":"src/main/java/services/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" * Represents the user interface of Jarvis.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"public class Ui {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" * The horizontal line for formatting messages.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" private final static String HORIZONTAL_LINE \u003d \"__________________________________________________\"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" + \"_______________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" public void exit() {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" String exitMessage \u003d \"Goodbye, sir.\\n\" + \"Shutting down...\";","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" new Ui().print(exitMessage);","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" public void print(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" String messageWithHorizontalLine \u003d HORIZONTAL_LINE + message + \"\\n\" + HORIZONTAL_LINE;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" System.out.print(messageWithHorizontalLine);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" public void greet() {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" String greetMessage \u003d \"At your service, sir.\";","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" print(greetMessage);","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanyyyming":27}},{"path":"src/main/java/services/bizerrors/CreateNewFileException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public class CreateNewFileException extends JarvisException {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" public CreateNewFileException() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" super(\"Sorry, sir. I am unable to create a new file.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tanyyyming":7}},{"path":"src/main/java/services/bizerrors/EmptyArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"public class EmptyArgumentException extends JarvisException {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" public EmptyArgumentException(String command) {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" super(String.format(\"Sir, I did not catch what you say after the command (%s).\\nI beg your pardon.\", command));","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":9}},{"path":"src/main/java/services/bizerrors/IndexOutOfRangeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"public class IndexOutOfRangeException extends JarvisException {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" public IndexOutOfRangeException(int index, int taskCount) {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" super(String.format(\"Sir, your calendar does not contain this task index (%d).\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" + \"It currently has %d tasks.\", index, taskCount));","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":10}},{"path":"src/main/java/services/bizerrors/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"public class InvalidArgumentException extends JarvisException {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" public InvalidArgumentException(String command) {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" super(String.format(\"Sir, please check again to ensure \"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" + \"you provide the correct arguments for command (%s).\", command));","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":10}},{"path":"src/main/java/services/bizerrors/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"public class InvalidCommandException extends JarvisException {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" public InvalidCommandException(String command) {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" super(String.format(\"Sorry, sir. Executing this command (%s) is beyond my capabilities.\", command));","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":9}},{"path":"src/main/java/services/bizerrors/JarvisException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public class JarvisException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" public JarvisException(String message) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" // add the newline for formatting of the error message","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":8}},{"path":"src/main/java/services/bizerrors/ReadFromFileException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public class ReadFromFileException extends JarvisException {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" public ReadFromFileException() {","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" super(\"Sorry, sir. I am unable to read your tasks from file.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanyyyming":7}},{"path":"src/main/java/services/bizerrors/SaveToFileException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.bizerrors;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public class SaveToFileException extends JarvisException {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" public SaveToFileException() {","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" super(\"Sorry, sir. I am unable to save your tasks to file.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanyyyming":7}},{"path":"src/main/java/services/tasklist/IStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.ReadFromFileException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.SaveToFileException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" * Represents a storage that stores the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" * The storage is responsible for reading and writing the list of tasks to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":"public interface IStorage {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" * Saves the given list of tasks to the data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" * The tasks are written to the file in string obtained","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" * from calling encode() method of each task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" * @param taskList the list of tasks to be saved.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" * @throws SaveToFileException if there is an error writing to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" * @see Task#encode()","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" void save(List\u003cTask\u003e taskList) throws SaveToFileException;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" * Loads the list of tasks from the data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" * The returned task list is empty if the data file is empty.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" * @return the list of tasks loaded from the data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" * @throws ReadFromFileException if there is an error reading from the file, e,g. file not found.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" * @throws InvalidArgumentException if the data file contains invalid data format that cannot be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" List\u003cTask\u003e load() throws ReadFromFileException, InvalidArgumentException;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanyyyming":35}},{"path":"src/main/java/services/tasklist/ITaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import command.CommandType;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.JarvisException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" * Represents a task list manager.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" * It is responsible for adding, deleting, marking tasks as done/undone, and printing the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"public interface ITaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" * @param description the content of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" * @param taskType the type of the task. See {@link CommandType}.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" * @param args the argument list of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" * @throws JarvisException if the task cannot be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" void add(String description, CommandType taskType, String... args) throws JarvisException;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" * Deletes a task from the task list with the given task number.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" * @param taskNumber the task number of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" * @throws JarvisException if the task cannot be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" void delete(int taskNumber) throws JarvisException;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" * Finds tasks that contain the given keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" * @param keyword the keyword to be searched.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" void find(String keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" * Marks a task as done with the given task number.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" * @param taskNumber the task number of the task to be marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" * @throws JarvisException if the task cannot be marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" void markDone(int taskNumber) throws JarvisException;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" * Marks a task as undone with the given task number.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" * @param taskNumber the task number of the task to be marked as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":" * @throws JarvisException if the task cannot be marked as undone.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tanyyyming"},"content":" void markUndone(int taskNumber) throws JarvisException;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tanyyyming"},"content":" * Prints the task list in order.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tanyyyming"},"content":" void show();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanyyyming":57}},{"path":"src/main/java/services/tasklist/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.CreateNewFileException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.ReadFromFileException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.SaveToFileException;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Deadline;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Event;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Task;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Todo;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":"import java.util.List;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":"public class Storage implements IStorage {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" /** The file that stores the list of tasks. */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" private File dataFile;","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" * Creates a new Storage object with the data file at the given path.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" * If the file does not exist, a new file is created.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" * @param dataFilePath the path of the file that stores the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" * @throws CreateNewFileException if there is an error creating a new file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" public Storage(String dataFilePath) throws CreateNewFileException {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" File file \u003d new File(dataFilePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" File parentDir \u003d file.getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" if (!parentDir.exists() \u0026\u0026 !parentDir.mkdirs()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":" throw new CreateNewFileException();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" dataFile \u003d file;","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" throw new CreateNewFileException();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":" public void save(List\u003cTask\u003e tasks) throws SaveToFileException {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" FileWriter fileWriter \u003d new FileWriter(dataFile);","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":" fileWriter.write(task.encode() + \"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"tanyyyming"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"tanyyyming"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"tanyyyming"},"content":" throw new SaveToFileException();","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"tanyyyming"},"content":" public List\u003cTask\u003e load() throws ReadFromFileException, InvalidArgumentException {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"tanyyyming"},"content":" Scanner scanner \u003d new Scanner(dataFile);","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"tanyyyming"},"content":" List\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"tanyyyming"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"tanyyyming"},"content":" String encodedTask \u003d scanner.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"tanyyyming"},"content":" Task task;","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"tanyyyming"},"content":" String[] varargs \u003d encodedTask.split(\" \\\\| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"tanyyyming"},"content":" switch (encodedTask.charAt(0)) {","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"tanyyyming"},"content":" case \u0027T\u0027:","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"tanyyyming"},"content":" task \u003d new Todo(varargs[2]);","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"tanyyyming"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"tanyyyming"},"content":" case \u0027D\u0027:","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"tanyyyming"},"content":" task \u003d new Deadline(varargs[2], varargs[3]);","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"tanyyyming"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"tanyyyming"},"content":" case \u0027E\u0027:","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"tanyyyming"},"content":" task \u003d new Event(varargs[2], varargs[3], varargs[4]);","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"tanyyyming"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"tanyyyming"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"tanyyyming"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"tanyyyming"},"content":" if (varargs[1].equals(\"1\")) {","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"tanyyyming"},"content":" task.setDone();","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"tanyyyming"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"tanyyyming"},"content":" scanner.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"tanyyyming"},"content":" return taskList;","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"tanyyyming"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"tanyyyming"},"content":" throw new ReadFromFileException();","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"tanyyyming":91}},{"path":"src/main/java/services/tasklist/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import command.CommandType;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.EmptyArgumentException;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.IndexOutOfRangeException;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.JarvisException;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.SaveToFileException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Event;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Task;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Todo;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":"import java.util.List;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":"public class TaskList implements ITaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" /** The list of tasks. */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" protected List\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" protected IStorage repo;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" /** The number of tasks in the list. */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" protected int taskCount;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" protected Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" * Creates a new TaskList object with the given Storage object and Ui object.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" * @param repo the Storage object that stores the list of tasks in a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" * @param ui the Ui object that prints the formatted task list to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" public TaskList(IStorage repo, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" this.repo \u003d repo;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":" taskList \u003d repo.load();","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" taskCount \u003d taskList.size();","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" } catch (JarvisException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" // Fix the problem here in the future.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" ui.print(e.toString() + \"\\nA temporary session is opened for you.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" taskCount \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" public void add(String description, CommandType taskType, String... args) throws JarvisException {","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" Task newTask;","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" // this if block is unnecessary currently (is never reached), but it may be useful in the future.","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"tanyyyming"},"content":" throw new EmptyArgumentException(taskType.toString().toLowerCase());","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"tanyyyming"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"tanyyyming"},"content":" case TODO:","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"tanyyyming"},"content":" newTask \u003d new Todo(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"tanyyyming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"tanyyyming"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"tanyyyming"},"content":" newTask \u003d new Deadline(description, args[0]);","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"tanyyyming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"tanyyyming"},"content":" case EVENT:","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"tanyyyming"},"content":" newTask \u003d new Event(description, args[0], args[1]);","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"tanyyyming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"tanyyyming"},"content":" default:","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"tanyyyming"},"content":" // the program should never reach this point.","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"tanyyyming"},"content":" throw new JarvisException(\"Default case reached.\");","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"tanyyyming"},"content":" taskList.add(newTask);","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"tanyyyming"},"content":" taskCount++;","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"tanyyyming"},"content":" repo.save(taskList);","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"tanyyyming"},"content":" ui.print(\"added: \" + newTask + \"\\n\" + taskCount + \" more tasks to do, Sir.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"tanyyyming"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"tanyyyming"},"content":" * @param taskNumber {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tanyyyming"},"content":" * @throws SaveToFileException if the task deletion operation cannot be saved to the data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tanyyyming"},"content":" * @throws IndexOutOfRangeException if the task number is out of range.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"tanyyyming"},"content":" public void delete(int taskNumber) throws SaveToFileException, IndexOutOfRangeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"tanyyyming"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskCount) {","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"tanyyyming"},"content":" throw new IndexOutOfRangeException(taskNumber, taskCount);","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"tanyyyming"},"content":" Task deletedTask \u003d taskList.get(taskNumber - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"tanyyyming"},"content":" taskList.remove(taskNumber - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"tanyyyming"},"content":" taskCount--;","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"tanyyyming"},"content":" repo.save(taskList);","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"tanyyyming"},"content":" ui.print(\"removed: \" + deletedTask + \"\\n\" + taskCount + \" tasks left, Sir.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"tanyyyming"},"content":" public void find(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"tanyyyming"},"content":" List\u003cTask\u003e matchingTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"tanyyyming"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"tanyyyming"},"content":" if (task.toString().contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"tanyyyming"},"content":" matchingTasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"tanyyyming"},"content":" int count \u003d matchingTasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"tanyyyming"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"tanyyyming"},"content":" ui.print(\"Sir, there are no matching tasks on your calendar.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"tanyyyming"},"content":" String result \u003d \"Sir, there are \" + count + \" matching tasks on your calendar:\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"tanyyyming"},"content":" for (int i \u003d 1; i \u003c count; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"tanyyyming"},"content":" result +\u003d i + \". \" + matchingTasks.get(i - 1) + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"tanyyyming"},"content":" result +\u003d count + \". \" + matchingTasks.get(count - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"tanyyyming"},"content":" ui.print(result);","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"tanyyyming"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"tanyyyming"},"content":" * @param taskNumber {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"tanyyyming"},"content":" * @throws SaveToFileException if the task marking operation cannot be saved to the data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"tanyyyming"},"content":" * @throws IndexOutOfRangeException if the task number is out of range.","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"tanyyyming"},"content":" public void markDone(int taskNumber) throws SaveToFileException, IndexOutOfRangeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"tanyyyming"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskCount) {","lastModifiedDate":"2023-08-22"},{"lineNumber":123,"author":{"gitId":"tanyyyming"},"content":" throw new IndexOutOfRangeException(taskNumber, taskCount);","lastModifiedDate":"2023-08-22"},{"lineNumber":124,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":125,"author":{"gitId":"tanyyyming"},"content":" Task task \u003d taskList.get(taskNumber - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"tanyyyming"},"content":" task.setDone();","lastModifiedDate":"2023-08-22"},{"lineNumber":127,"author":{"gitId":"tanyyyming"},"content":" repo.save(taskList);","lastModifiedDate":"2023-08-29"},{"lineNumber":128,"author":{"gitId":"tanyyyming"},"content":" ui.print(\"Check.\\n\\t\" + task + \"\\n\" + \"Way to go, sir.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":131,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"tanyyyming"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"tanyyyming"},"content":" * @param taskNumber {@inheritDoc}","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"tanyyyming"},"content":" * @throws SaveToFileException if the task unmarking operation cannot be saved to the data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"tanyyyming"},"content":" * @throws IndexOutOfRangeException if the task number is out of range.","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"tanyyyming"},"content":" public void markUndone(int taskNumber) throws SaveToFileException, IndexOutOfRangeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"tanyyyming"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskCount) {","lastModifiedDate":"2023-08-22"},{"lineNumber":141,"author":{"gitId":"tanyyyming"},"content":" throw new IndexOutOfRangeException(taskNumber, taskCount);","lastModifiedDate":"2023-08-22"},{"lineNumber":142,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":143,"author":{"gitId":"tanyyyming"},"content":" Task task \u003d taskList.get(taskNumber - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"tanyyyming"},"content":" task.setUndone();","lastModifiedDate":"2023-08-22"},{"lineNumber":145,"author":{"gitId":"tanyyyming"},"content":" repo.save(taskList);","lastModifiedDate":"2023-08-29"},{"lineNumber":146,"author":{"gitId":"tanyyyming"},"content":" ui.print(\"As you wish, sir.\\n\\t\" + task);","lastModifiedDate":"2023-08-29"},{"lineNumber":147,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":148,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":149,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"tanyyyming"},"content":" public void show() {","lastModifiedDate":"2023-08-29"},{"lineNumber":151,"author":{"gitId":"tanyyyming"},"content":" if (taskCount \u003d\u003d 0) {","lastModifiedDate":"2023-08-22"},{"lineNumber":152,"author":{"gitId":"tanyyyming"},"content":" ui.print(\"Sir, there are no tasks on your calendar.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":153,"author":{"gitId":"tanyyyming"},"content":" return;","lastModifiedDate":"2023-08-22"},{"lineNumber":154,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":155,"author":{"gitId":"tanyyyming"},"content":" String result \u003d \"Sir, there are \" + taskCount + \" tasks on your calendar:\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":156,"author":{"gitId":"tanyyyming"},"content":" for (int i \u003d 1; i \u003c taskCount; i++) {","lastModifiedDate":"2023-08-22"},{"lineNumber":157,"author":{"gitId":"tanyyyming"},"content":" result +\u003d i + \". \" + taskList.get(i - 1) + \"\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":158,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":159,"author":{"gitId":"tanyyyming"},"content":" result +\u003d taskCount + \". \" + taskList.get(taskCount - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":160,"author":{"gitId":"tanyyyming"},"content":" ui.print(result);","lastModifiedDate":"2023-08-29"},{"lineNumber":161,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":162,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":162}},{"path":"src/main/java/services/tasklist/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist.tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" private DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" private DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" public Deadline(String description, String endTime) throws InvalidArgumentException {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, inputFormatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(\"deadline\");","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" public String encode() {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" return \"[D]\" + super.toString() + \" (by: \" + endTime.format(outputFormatter) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":31}},{"path":"src/main/java/services/tasklist/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist.tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" private DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" private DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" public Event(String description, String startTime, String endTime) throws InvalidArgumentException {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" this.startTime \u003d LocalDateTime.parse(startTime, inputFormatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, inputFormatter);","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" throw new InvalidArgumentException(\"event\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" public String encode() {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + startTime + \" | \" + endTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" return \"[E]\" + super.toString()","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" + \" (from: \" + startTime.format(outputFormatter)","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" + \" to: \" + endTime.format(outputFormatter) + \")\";","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":35}},{"path":"src/main/java/services/tasklist/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist.tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":" * Represents a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" /** The description of the task. */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":" protected String description;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" /** The status of task completion. */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" /** The checkbox to indicate the status of task completion. */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" protected String checkBox;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" * Constructor for Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" * The task is not done by default.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" * @param description the content of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" this.checkBox \u003d \"[ ]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" public void setDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" this.checkBox \u003d \"[X]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" public void setUndone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" this.checkBox \u003d \"[ ]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" * Encodes the task into a string that can be saved to a data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" * @return the encoded string.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" public abstract String encode();","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":" return checkBox + \" \" + this.description;","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tanyyyming":47}},{"path":"src/main/java/services/tasklist/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist.tasks;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" public String encode() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":18}},{"path":"src/test/java/command/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.TaskListStub;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":" protected TaskListStub taskListStub;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" protected Parser parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" public ParserTest() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" taskListStub \u003d new TaskListStub();","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" parser \u003d new Parser(taskListStub);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" public void execute_validInput_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"todo\", \"test\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"add method called with description: test and taskType: TODO and args: [].\",","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" taskListStub.getStatus());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"delete\", \"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"delete method called with taskNumber: 1.\", taskListStub.getStatus());","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"deadline\", \"test /by 2020-08-25 00:00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"add method called with description: test and taskType: DEADLINE \"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" + \"and args: [2020-08-25 00:00].\",","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" taskListStub.getStatus());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"list\", \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"show method called\", taskListStub.getStatus());","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" public void execute_invalidCommand_exceptionThrown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"invalid_command\", \"test\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"Sorry, sir. Executing this command (invalid_command) is beyond my capabilities.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" public void execute_invalidArgument_exceptionThrown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" // when the number of argument provided is incorrect.","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"event\", \"no time specified\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"Sir, please check again to ensure you provide \"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"tanyyyming"},"content":" + \"the correct arguments for command (event).\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"tanyyyming"},"content":" // when the argument cannot be parsed into an integer.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"mark\", \"string instead of integer\");","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"Sir, please check again to ensure you provide \"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"tanyyyming"},"content":" + \"the correct arguments for command (mark).\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"tanyyyming"},"content":" public void execute_emptyArgument_exceptionThrown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"tanyyyming"},"content":" parser.execute(\"mark\", \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"Sir, I did not catch what you say after the command (mark).\\nI beg your pardon.\",","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"tanyyyming"},"content":" e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanyyyming":74}},{"path":"src/test/java/services/tasklist/StorageDummy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.ReadFromFileException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.SaveToFileException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":"public class StorageDummy implements IStorage {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" public StorageDummy() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" public void save(List\u003cTask\u003e taskList) throws SaveToFileException {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" public List\u003cTask\u003e load() throws ReadFromFileException, InvalidArgumentException {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" return new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanyyyming":24}},{"path":"src/test/java/services/tasklist/TaskListStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import command.CommandType;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"public class TaskListStub implements ITaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":" protected String status;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":" public TaskListStub() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" public void add(String description, CommandType taskType, String... args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"add method called with description: \" + description","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" + \" and taskType: \" + taskType + \" and args: \" + Arrays.toString(args) + \".\";","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" public void delete(int taskNumber) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"delete method called with taskNumber: \" + taskNumber + \".\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" public void find(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"find method called with keyword: \" + keyword + \".\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" public void markDone(int taskNumber) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"markDone method called with taskNumber: \" + taskNumber + \".\";","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" public void markUndone(int taskNumber) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"markUndone method called with taskNumber: \" + taskNumber + \".\";","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" public void show() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" status \u003d \"show method called\";","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" return status;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanyyyming":49}},{"path":"src/test/java/services/tasklist/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"package services.tasklist;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"import command.CommandType;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"import services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"import services.bizerrors.InvalidArgumentException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tanyyyming"},"content":"import services.tasklist.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"tanyyyming"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"tanyyyming"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"tanyyyming"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"tanyyyming"},"content":" // the following three test cases are testing the add method in TaskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"tanyyyming"},"content":" public void add_todoTask_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"tanyyyming"},"content":" TaskList taskList \u003d new TaskList(new StorageDummy(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":" taskList.add(\"test\", CommandType.TODO);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tanyyyming"},"content":" assertEquals(1, taskList.taskCount);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"tanyyyming"},"content":" assertTrue(taskList.taskList.get(0) instanceof Todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tanyyyming"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tanyyyming"},"content":" public void add_deadlineTask_success() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"tanyyyming"},"content":" TaskList taskList \u003d new TaskList(new StorageDummy(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"tanyyyming"},"content":" taskList.add(\"test\", CommandType.DEADLINE, \"2020-08-25 00:00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"tanyyyming"},"content":" assertEquals(1, taskList.taskCount);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"tanyyyming"},"content":" assertTrue(taskList.taskList.get(0) instanceof Deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"tanyyyming"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tanyyyming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"tanyyyming"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tanyyyming"},"content":" public void add_eventTask_exceptionThrown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tanyyyming"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"tanyyyming"},"content":" TaskList taskList \u003d new TaskList(new StorageDummy(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tanyyyming"},"content":" taskList.add(\"test\", CommandType.EVENT, \"invalid time format\", \"2020-08-25 01:00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tanyyyming"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"tanyyyming"},"content":" assertEquals(\"Sir, please check again to ensure you provide \"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"tanyyyming"},"content":" + \"the correct arguments for command (event).\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"tanyyyming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"tanyyyming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"tanyyyming":49}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanyyyming"},"content":"todo task one","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"tanyyyming"},"content":"deadline task 2 /by time 1","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"tanyyyming"},"content":"event task 3 /from time 2 /to time 3","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"tanyyyming"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"tanyyyming"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"tanyyyming"},"content":"unmark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"tanyyyming"},"content":"exit","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"tanyyyming":7}},{"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":"tanyyyming"},"content":"REM Note that the chatbot name has changed from Duke to jarvis.jarvis","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"tanyyyming"},"content":"java -classpath ..\\bin jarvis.jarvis \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanyyyming":2,"-":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":"tanyyyming"},"content":"# Note that the chatbot name has changed from Duke to Jarvis.Jarvis","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"tanyyyming"},"content":"java -classpath ../bin Jarvis \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanyyyming":2,"-":37}}] diff --git a/tanyyyming_ip_master/commits.json b/tanyyyming_ip_master/commits.json index 1e152344..19d2aab1 100644 --- a/tanyyyming_ip_master/commits.json +++ b/tanyyyming_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tanyyyming":[{"date":"2023-08-21","commitResults":[{"hash":"d7c828a36952bb6a584cd9ee2f619517dc3fda05","isMergeCommit":false,"messageTitle":"feat: implement the initial skeletal version of the chatbot Jarvis","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":10},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"4f3d519709eb701ba454e33a8e325e4e67bed410","isMergeCommit":false,"messageTitle":"feat: add echo method","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":33}}},{"hash":"aaac221f92fdc9ad2626fda2ed2ad3f2ace78340","isMergeCommit":false,"messageTitle":"feat: personalise Jarvis","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":3}}},{"hash":"357c8d626021b472f4eed7a4e8870a1615df68a8","isMergeCommit":false,"messageTitle":"feat: add task saving feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":1}}},{"hash":"2375e758b2aadf1479b8738a5bb639e5a9100018","isMergeCommit":false,"messageTitle":"feat: add task completion marking/unmarking feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":3}}}]},{"date":"2023-08-22","commitResults":[{"hash":"45fe7ae2df0b93e6947ed16efc815881ac9c9e13","isMergeCommit":false,"messageTitle":"feat: add todo list functionality","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":47}}},{"hash":"ebb4925a93b4816933527ba620c83f51e6f394d8","isMergeCommit":false,"messageTitle":"chore(text-ui-test): add annotations for test scripts","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":1,"deletions":0},"sh":{"insertions":1,"deletions":0}}},{"hash":"77d91505f874bf3bdac7942ad76a9f620cf80f0b","isMergeCommit":false,"messageTitle":"test: use I/O redirection to automate text-ui-test","messageBody":"","tags":["A-TextUiTesting","A-Inheritance","A-Classes"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"bat":{"insertions":0,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"7f0a6057cc1e4809b895802e8e911a42ff78553f","isMergeCommit":false,"messageTitle":"refactor: add a command resolver class to resolve user input","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":43}}},{"hash":"00179beba6ec314d327d3533d14c5b508638e6d3","isMergeCommit":false,"messageTitle":"feat: add customised business errors to Jarvis","messageBody":"","tags":["Level-5","A-Exceptions","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":151,"deletions":59}}},{"hash":"98ee2df63380be7772bc9a0d40b14b54b61d42bb","isMergeCommit":false,"messageTitle":"feat: add IndexOutOfRange business error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":2}}},{"hash":"d0d9ce9173fb6bcebdd56f0aa83a510cdb3a2d1e","isMergeCommit":false,"messageTitle":"feat: add delete tasks feature","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"7e766bee096fdc0b7ae8e4f1d3706ef6f7bbf612","isMergeCommit":false,"messageTitle":"Add the Storage class to store tasks in and read tasks from a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":4}}},{"hash":"9b1f9f89f6f7f9a3b012338d00cda024ad431363","isMergeCommit":false,"messageTitle":"Modify the ListManager class to read/write to the task list file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":65,"deletions":18}}},{"hash":"3e13b6278ac5fb2585dfd435a533e34715cc0f25","isMergeCommit":false,"messageTitle":"Refactor the Basic and Format class to Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":43}}},{"hash":"6bed15748d32d01773ff880bdd0ac9bce6a8b283","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"574a0f444e6a6278db065e332c181a61d29164cb","isMergeCommit":false,"messageTitle":"Add date/time validation and formatting for deadline and event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":11}}},{"hash":"04277d0bf12eae22232b25ac69697ceb97e02fac","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"af00185721fa911f359aaf0a3492c32c14a3dfdf","isMergeCommit":false,"messageTitle":"Refactor code to follow OOP more closely","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":225,"deletions":205},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"fb8808aec05a62cf7ec4684ddc80e4abd955080a","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"47ed323d5613a6e544481225bfa56550aca85633","isMergeCommit":false,"messageTitle":"Decapitalize the package name Jarvis to jarvis","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2},"bat":{"insertions":2,"deletions":2}}},{"hash":"29dc5c93d0ef660cd39b89a7ea73820b7dd46afe","isMergeCommit":false,"messageTitle":"Add gradle support to build and run Jarvis","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"e7e3b9e5a1b8afb48b57e1669ef42a48f5e310a1","isMergeCommit":false,"messageTitle":"Test the execute method in Parser and add method in TaskList","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":249,"deletions":17}}},{"hash":"bea1f68cd1c0b0e8f8df8ecad1fecd4792aea0c5","isMergeCommit":false,"messageTitle":"Change the saving directory of the task file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"txt":{"insertions":0,"deletions":0},"java":{"insertions":5,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"tanyyyming":{"java":789,"md":0,"fxml":0,"sh":2,"bat":2,"gradle":3,"txt":7}},"authorContributionVariance":{"tanyyyming":55388.56},"authorDisplayNameMap":{"tanyyyming":"CS2103T-W11-3 TAN ..MING"}} +{"authorDailyContributionsMap":{"tanyyyming":[{"date":"2023-08-21","commitResults":[{"hash":"d7c828a36952bb6a584cd9ee2f619517dc3fda05","isMergeCommit":false,"messageTitle":"feat: implement the initial skeletal version of the chatbot Jarvis","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":10},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"4f3d519709eb701ba454e33a8e325e4e67bed410","isMergeCommit":false,"messageTitle":"feat: add echo method","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":33}}},{"hash":"aaac221f92fdc9ad2626fda2ed2ad3f2ace78340","isMergeCommit":false,"messageTitle":"feat: personalise Jarvis","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":3}}},{"hash":"357c8d626021b472f4eed7a4e8870a1615df68a8","isMergeCommit":false,"messageTitle":"feat: add task saving feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":1}}},{"hash":"2375e758b2aadf1479b8738a5bb639e5a9100018","isMergeCommit":false,"messageTitle":"feat: add task completion marking/unmarking feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":3}}}]},{"date":"2023-08-22","commitResults":[{"hash":"45fe7ae2df0b93e6947ed16efc815881ac9c9e13","isMergeCommit":false,"messageTitle":"feat: add todo list functionality","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":47}}},{"hash":"ebb4925a93b4816933527ba620c83f51e6f394d8","isMergeCommit":false,"messageTitle":"chore(text-ui-test): add annotations for test scripts","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":1,"deletions":0},"sh":{"insertions":1,"deletions":0}}},{"hash":"77d91505f874bf3bdac7942ad76a9f620cf80f0b","isMergeCommit":false,"messageTitle":"test: use I/O redirection to automate text-ui-test","messageBody":"","tags":["A-TextUiTesting","A-Inheritance","A-Classes"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"bat":{"insertions":0,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"7f0a6057cc1e4809b895802e8e911a42ff78553f","isMergeCommit":false,"messageTitle":"refactor: add a command resolver class to resolve user input","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":43}}},{"hash":"00179beba6ec314d327d3533d14c5b508638e6d3","isMergeCommit":false,"messageTitle":"feat: add customised business errors to Jarvis","messageBody":"","tags":["Level-5","A-Exceptions","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":151,"deletions":59}}},{"hash":"98ee2df63380be7772bc9a0d40b14b54b61d42bb","isMergeCommit":false,"messageTitle":"feat: add IndexOutOfRange business error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":2}}},{"hash":"d0d9ce9173fb6bcebdd56f0aa83a510cdb3a2d1e","isMergeCommit":false,"messageTitle":"feat: add delete tasks feature","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"7e766bee096fdc0b7ae8e4f1d3706ef6f7bbf612","isMergeCommit":false,"messageTitle":"Add the Storage class to store tasks in and read tasks from a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":4}}},{"hash":"9b1f9f89f6f7f9a3b012338d00cda024ad431363","isMergeCommit":false,"messageTitle":"Modify the ListManager class to read/write to the task list file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":65,"deletions":18}}},{"hash":"3e13b6278ac5fb2585dfd435a533e34715cc0f25","isMergeCommit":false,"messageTitle":"Refactor the Basic and Format class to Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":43}}},{"hash":"6bed15748d32d01773ff880bdd0ac9bce6a8b283","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"574a0f444e6a6278db065e332c181a61d29164cb","isMergeCommit":false,"messageTitle":"Add date/time validation and formatting for deadline and event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":11}}},{"hash":"04277d0bf12eae22232b25ac69697ceb97e02fac","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"af00185721fa911f359aaf0a3492c32c14a3dfdf","isMergeCommit":false,"messageTitle":"Refactor code to follow OOP more closely","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":225,"deletions":205},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":1,"deletions":1}}},{"hash":"95f8a4f9ccc4dbfee8679ea48d51dbdfe20cdbaa","isMergeCommit":false,"messageTitle":"Add the find task by keyword feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":14}}}]},{"date":"2023-08-30","commitResults":[{"hash":"fb8808aec05a62cf7ec4684ddc80e4abd955080a","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"47ed323d5613a6e544481225bfa56550aca85633","isMergeCommit":false,"messageTitle":"Decapitalize the package name Jarvis to jarvis","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2},"bat":{"insertions":2,"deletions":2}}},{"hash":"29dc5c93d0ef660cd39b89a7ea73820b7dd46afe","isMergeCommit":false,"messageTitle":"Add gradle support to build and run Jarvis","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"e7e3b9e5a1b8afb48b57e1669ef42a48f5e310a1","isMergeCommit":false,"messageTitle":"Test the execute method in Parser and add method in TaskList","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":249,"deletions":17}}},{"hash":"bea1f68cd1c0b0e8f8df8ecad1fecd4792aea0c5","isMergeCommit":false,"messageTitle":"Change the saving directory of the task file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"txt":{"insertions":0,"deletions":0},"java":{"insertions":5,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"db2a914b17bac0a61b4176568eaec3aa38dcded0","isMergeCommit":false,"messageTitle":"Add the biz error about data file creation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"531462ec1d34862487dcdee34e1fd6e2a18fd164","isMergeCommit":false,"messageTitle":"Write Javadoc for most public methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":166,"deletions":26}}},{"hash":"a1cd9775ac46c822b040e78dcb5ed81fb4f578ea","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6d4f5d6ff9e0eb8266d4e119247ba5ce49e65a71","isMergeCommit":false,"messageTitle":"Add the find method to the ITaskList interface","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":21}}},{"hash":"6cddc6e0445ebf5f8e9d22a2b33b263842687461","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"25fea6c11fa94b829df00d055363e82677cf598d","isMergeCommit":false,"messageTitle":"Write Javadoc for the find method","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"tanyyyming":{"java":976,"md":0,"fxml":0,"sh":2,"bat":2,"gradle":3,"txt":7}},"authorContributionVariance":{"tanyyyming":54540.645},"authorDisplayNameMap":{"tanyyyming":"CS2103T-W11-3 TAN ..MING"}} diff --git a/teozhengyang_ip_master/authorship.json b/teozhengyang_ip_master/authorship.json index ee55f38d..02eb0160 100644 --- a/teozhengyang_ip_master/authorship.json +++ b/teozhengyang_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"teozhengyang":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"teozhengyang":2,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"T | 1 | read book | ","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"D | 0 | return book | 2022-06-06","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"E | 0 | project meeting | Aug 6th 2pm | 4pm","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"D | 0 | return book | 2019-06-06","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"T | 1 | buy lunch | ","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":5}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":" * The duke.Duke class represents a simple chatbot application that helps manage tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" Ui.showLoadingError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" Ui.greet();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" while (!command.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" Ui.printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" Parser.executeCommand(command, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" Ui.showLoadingError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" Ui.printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" command \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" Ui.goodbye();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" * The main method to start the duke.Duke chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" * @param args Command-line arguments (unused).","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":" new Duke(\"./data/duke.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"teozhengyang":46,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":" * Custom exception class for duke.Duke chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":" * This exception is thrown when there is an issue or error encountered during chatbot operations.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new duke.DukeException with the specified detail message.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" * @param message The detail message explaining the reason for the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" * Returns a string representation of this duke.DukeException, which includes the error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" * @return A string representation of the exception\u0027s detail message.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" return super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"teozhengyang":27}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" public static void executeCommand(String command, TaskList tasks) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" String[] separateCommand \u003d command.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" Ui.listTasks(tasks.getAll());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" } else if (command.startsWith(\"mark\") || command.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" if (separateCommand.length \u003e 2 || Integer.parseInt(separateCommand[1]) \u003e tasks.getAll().size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" int taskNumber \u003d Integer.parseInt(separateCommand[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" if (command.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" tasks.getAll().get(taskNumber - 1).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" Ui.markDoneMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" tasks.getAll().get(taskNumber - 1).markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" Ui.markUndoneMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" Ui.showTaskMessage(tasks.getAll().get(taskNumber - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" } else if (command.startsWith(\"todo\") || command.startsWith(\"deadline\") || command.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" if (command.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" String description \u003d command.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" tasks.addTask(new ToDo(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" } else if (command.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" String[] parts \u003d command.split(\"/by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":" String description \u003d parts[0].substring(9).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"teozhengyang"},"content":" LocalDate by \u003d LocalDate.parse(parts[1].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"teozhengyang"},"content":" tasks.addTask(new Deadline(description, by));","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"teozhengyang"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid date format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"teozhengyang"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"teozhengyang"},"content":" } else if (command.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"teozhengyang"},"content":" String[] parts \u003d command.split(\"/from\");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"teozhengyang"},"content":" String description \u003d parts[0].substring(6).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"teozhengyang"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"teozhengyang"},"content":" String[] timeParts \u003d parts[1].split(\"/to\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"teozhengyang"},"content":" String start \u003d timeParts[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"teozhengyang"},"content":" String end \u003d timeParts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"teozhengyang"},"content":" tasks.addTask(new Event(description, start, end));","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"teozhengyang"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"teozhengyang"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"teozhengyang"},"content":" Ui.addTaskMessage(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"teozhengyang"},"content":" } else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"teozhengyang"},"content":" if (separateCommand.length \u003e 2 || Integer.parseInt(separateCommand[1]) \u003e tasks.getAll().size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"teozhengyang"},"content":" int taskNumber \u003d Integer.parseInt(separateCommand[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"teozhengyang"},"content":" if (command.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"teozhengyang"},"content":" Ui.removeTaskMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"teozhengyang"},"content":" Ui.showTaskMessage(tasks.getAll().get(taskNumber - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"teozhengyang"},"content":" tasks.removeTask(taskNumber - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"teozhengyang"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"teozhengyang"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":96}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"import java.io.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" public List\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" String directoryPath \u003d file.getParent();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" directory.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\"Directory created: \" + directoryPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\"File created: \" + filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath));","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" String line;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" String[] parts \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" String taskType \u003d parts[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\") ? true : false;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":" // Create a duke.task.ToDo duke.task","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":" tasks.add(new ToDo(description, isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"teozhengyang"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"teozhengyang"},"content":" // Extract \u0027by\u0027 from parts[3] if applicable","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"teozhengyang"},"content":" LocalDate by \u003d LocalDate.parse(parts[3].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"teozhengyang"},"content":" // Create a duke.task.Deadline duke.task","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"teozhengyang"},"content":" tasks.add(new Deadline(description, by, isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"teozhengyang"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"teozhengyang"},"content":" // Extract \u0027from\u0027 and \u0027to\u0027 from parts[3] and parts[4] if applicable","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"teozhengyang"},"content":" String from \u003d parts[3].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"teozhengyang"},"content":" String to \u003d parts[4].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"teozhengyang"},"content":" // Create an duke.task.Event duke.task","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"teozhengyang"},"content":" tasks.add(new Event(description, from, to, isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"teozhengyang"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"teozhengyang"},"content":" // Handle unsupported duke.task type","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but there\u0027s an error loading the file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"teozhengyang"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"teozhengyang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but there\u0027s an error loading the file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"teozhengyang"},"content":" public void save(TaskList tasks) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"teozhengyang"},"content":" FileWriter writer \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"teozhengyang"},"content":" for (Task task : tasks.getAll()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"teozhengyang"},"content":" // Convert each duke.task to its string representation and write to file","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"teozhengyang"},"content":" writer.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"teozhengyang"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"teozhengyang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but there\u0027s an error loading the file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":83}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" public List\u003cTask\u003e getAll() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" return this.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" public void removeTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":31}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" public static void greet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\"---------------------------------------------\\n Hello! I\u0027m zy\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" \" What can I do for you?\\n---------------------------------------------\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" public static void goodbye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\"---------------------------------------------\\n Bye. Hope to see you again soon!\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" \"\\n---------------------------------------------\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" public static void printLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\"---------------------------------------------\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" public static void listTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" public static void markDoneMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" Nice! I\u0027ve marked this duke.task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" public static void markUndoneMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" OK, I\u0027ve marked this duke.task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" public static void showTaskMessage(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" public static void addTaskMessage(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" Got it. I\u0027ve added this duke.task:\" + \"\\n\" + \" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" + tasks.getAll().get(tasks.getAll().size() - 1).toString() + \"\\n\" + \" Now you have \"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" + tasks.getAll().size() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":" public static void removeTaskMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" Noted. I\u0027ve removed this duke.task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"teozhengyang"},"content":" public static void showLoadingError(DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"teozhengyang"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":55}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":" * The duke.task.Deadline class represents a duke.task of type \"duke.task.Deadline\" inherited from the duke.task.Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":" * It contains a description and a deadline (by when the duke.task should be completed).","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new duke.task.Deadline duke.task with the provided description and deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" * @param description The description of the duke.task.Deadline duke.task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" * @param by The deadline for completing the duke.task.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" public Deadline(String description, LocalDate by, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" String status \u003d getStatusIcon().equals(\"X\") ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" return \"D\" + \" | \" + status + \" | \" + super.description + \" | \" + by;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" * Returns a string representation of the duke.task.Deadline duke.task, including its completion status, description, and deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" * @return A formatted string indicating the duke.task type, completion status, and deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"teozhengyang":44}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":" * The duke.task.Event class represents a duke.task of type \"duke.task.Event\" inherited from the duke.task.Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":" * It contains a description and a time interval during which the event occurs.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":" protected String start;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" protected String end;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new duke.task.Event duke.task with the provided description and time interval.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" * @param description The description of the duke.task.Event duke.task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" * @param start The start time of the event.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" * @param end The end time of the event.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" public Event(String description, String start, String end, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" String status \u003d getStatusIcon().equals(\"X\") ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" return \"E\" + \" | \" + status + \" | \" + super.description + \" | \" + start + \" | \" + end;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" * Returns a string representation of the duke.task.Event duke.task, including its completion status, description, and time interval.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" * @return A formatted string indicating the duke.task type, completion status, and time interval.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"teozhengyang":45}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":" * The duke.task.Task class represents a basic duke.task with a description and completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new duke.task.Task with the provided description.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" * @param description The description of the duke.task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" * Marks the duke.task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" * Marks the duke.task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" * Returns a string representing the completion status of the duke.task.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" * @return \"X\" if the duke.task is done, \" \" (a space) if the duke.task is not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"teozhengyang"},"content":" return \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"teozhengyang"},"content":" * Returns a string representation of the duke.task.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"teozhengyang"},"content":" * @return A formatted string including the duke.task\u0027s completion status icon and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"teozhengyang"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"teozhengyang"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"teozhengyang":61}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":" * The duke.task.ToDo class represents a duke.task of type \"duke.task.ToDo\" inherited from the duke.task.Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":" * It contains a description and inherits methods for marking the duke.task\u0027s completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new duke.task.ToDo duke.task with the provided description.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" * @param description The description of the duke.task.ToDo duke.task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" String status \u003d getStatusIcon().equals(\"X\") ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" return \"T\" + \" | \" + status + \" | \" + super.description + \" | \";","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" * Returns a string representation of the duke.task.ToDo duke.task, including its completion status and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" * @return A formatted string indicating the duke.task type and its completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"teozhengyang":39}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" private TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" public void testAddTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" int orgCount \u003d tasks.getAll().size();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" Task newTask \u003d new Task(\"Test task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" assertEquals(orgCount + 1, tasks.getAll().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" public void testRemoveTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" Task newTask \u003d new Task(\"Test task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" int orgCount \u003d tasks.getAll().size();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" tasks.removeTask(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" assertEquals(orgCount - 1, tasks.getAll().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":28}},{"path":"src/test/java/duke/task/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"public class ToDoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":" public void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" ToDo testTask \u003d new ToDo(\"Test ToDo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" assert testTask.toString().equals(\"[T][ ] Test ToDo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" public void testMarkAsDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" ToDo task1 \u003d new ToDo(\"Test ToDo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" task1.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" assert task1.toString().equals(\"[T][X] Test ToDo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"todo buy bread","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"deadline return books /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"teozhengyang":10}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"teozhengyang":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"teozhengyang":2,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"T | 1 | read book | ","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"D | 0 | return book | 2022-06-06","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"E | 0 | project meeting | Aug 6th 2pm | 4pm","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"D | 0 | return book | 2019-06-06","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"T | 1 | buy lunch | ","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":5}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":" * The Duke class represents a simple chatbot application that helps manage tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new Duke chatbot with the provided file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" * @param filePath The file path for task data storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" Ui.showLoadingError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" * Runs the Duke chatbot and handles user interactions.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" Ui.greet();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" while (!command.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" Ui.printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" Parser.executeCommand(command, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" Ui.showLoadingError(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" Ui.printLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" command \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":" scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":" Ui.goodbye();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"teozhengyang"},"content":" * The main method to start the Duke chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"teozhengyang"},"content":" * @param args Command-line arguments (unused).","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"teozhengyang"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"teozhengyang"},"content":" new Duke(\"./data/duke.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"teozhengyang":55,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":" * Custom exception class for Duke chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":" * This exception is thrown when there is an issue or error encountered during chatbot operations.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new DukeException with the specified detail message.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" * @param message The detail message explaining the reason for the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" * Returns a string representation of this DukeException, which includes the error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" * @return A string representation of the exception\u0027s detail message.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" return super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"teozhengyang":27}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" * The Parser class handles the parsing of user commands and executes corresponding actions.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" * Executes the specified command and performs the corresponding action.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" * @param command The user command to be executed.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" * @param tasks The TaskList object to manage tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" * @throws DukeException If there is an issue or error encountered during command execution.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" public static void executeCommand(String command, TaskList tasks) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" String[] separateCommand \u003d command.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" Ui.listTasks(tasks.getAll());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" } else if (command.startsWith(\"mark\") || command.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" if (separateCommand.length \u003e 2 || Integer.parseInt(separateCommand[1]) \u003e tasks.getAll().size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" int taskNumber \u003d Integer.parseInt(separateCommand[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" if (command.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" tasks.getAll().get(taskNumber - 1).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" Ui.markDoneMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" tasks.getAll().get(taskNumber - 1).markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" Ui.markUndoneMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" Ui.showTaskMessage(tasks.getAll().get(taskNumber - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" } else if (command.startsWith(\"todo\") || command.startsWith(\"deadline\") || command.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" if (command.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":" String description \u003d command.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"teozhengyang"},"content":" tasks.addTask(new ToDo(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"teozhengyang"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"teozhengyang"},"content":" } else if (command.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"teozhengyang"},"content":" String[] parts \u003d command.split(\"/by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"teozhengyang"},"content":" String description \u003d parts[0].substring(9).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"teozhengyang"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"teozhengyang"},"content":" LocalDate by \u003d LocalDate.parse(parts[1].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"teozhengyang"},"content":" tasks.addTask(new Deadline(description, by));","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"teozhengyang"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid date format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"teozhengyang"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"teozhengyang"},"content":" } else if (command.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"teozhengyang"},"content":" String[] parts \u003d command.split(\"/from\");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"teozhengyang"},"content":" String description \u003d parts[0].substring(6).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"teozhengyang"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"teozhengyang"},"content":" String[] timeParts \u003d parts[1].split(\"/to\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"teozhengyang"},"content":" String start \u003d timeParts[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"teozhengyang"},"content":" String end \u003d timeParts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"teozhengyang"},"content":" tasks.addTask(new Event(description, start, end));","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"teozhengyang"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"teozhengyang"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"teozhengyang"},"content":" Ui.addTaskMessage(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"teozhengyang"},"content":" } else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"teozhengyang"},"content":" if (separateCommand.length \u003e 2 || Integer.parseInt(separateCommand[1]) \u003e tasks.getAll().size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"teozhengyang"},"content":" int taskNumber \u003d Integer.parseInt(separateCommand[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"teozhengyang"},"content":" if (command.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"teozhengyang"},"content":" Ui.removeTaskMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"teozhengyang"},"content":" Ui.showTaskMessage(tasks.getAll().get(taskNumber - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"teozhengyang"},"content":" tasks.removeTask(taskNumber - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"teozhengyang"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid number\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"teozhengyang"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":106}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"import java.io.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" * The Storage class handles loading and saving tasks to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new Storage object with the specified file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" * @param filePath The file path where tasks will be stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" * Loads tasks from the file specified by the file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" * @return A list of Task objects loaded from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" * @throws DukeException If there is an issue or error encountered during loading.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" public List\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" String directoryPath \u003d file.getParent();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" directory.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\"Directory created: \" + directoryPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\"File created: \" + filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"teozhengyang"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"teozhengyang"},"content":" String line;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"teozhengyang"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"teozhengyang"},"content":" String[] parts \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"teozhengyang"},"content":" String taskType \u003d parts[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"teozhengyang"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"teozhengyang"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"teozhengyang"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"teozhengyang"},"content":" tasks.add(new ToDo(description, isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"teozhengyang"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"teozhengyang"},"content":" LocalDate by \u003d LocalDate.parse(parts[3].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"teozhengyang"},"content":" tasks.add(new Deadline(description, by, isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"teozhengyang"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"teozhengyang"},"content":" String from \u003d parts[3].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"teozhengyang"},"content":" String to \u003d parts[4].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"teozhengyang"},"content":" tasks.add(new Event(description, from, to, isDone));","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"teozhengyang"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid task type in file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"teozhengyang"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"teozhengyang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Error loading tasks from the file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"teozhengyang"},"content":" * Saves the tasks from the TaskList to the file specified by the file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"teozhengyang"},"content":" * @param tasks The TaskList object containing the tasks to be saved.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"teozhengyang"},"content":" * @throws DukeException If there is an issue or error encountered during saving.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"teozhengyang"},"content":" public void save(TaskList tasks) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"teozhengyang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"teozhengyang"},"content":" FileWriter writer \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"teozhengyang"},"content":" for (Task task : tasks.getAll()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"teozhengyang"},"content":" writer.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"teozhengyang"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"teozhengyang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"teozhengyang"},"content":" throw new DukeException(\"☹ OOPS!!! Error saving tasks to the file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":96}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" * The TaskList class represents a collection of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" * Constructs a TaskList object with the specified list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" * @param tasks The list of tasks to initialize the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" * Constructs an empty TaskList object.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" * Retrieves all tasks in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" * @return A list of all tasks in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" public List\u003cTask\u003e getAll() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" return this.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" * Adds a task to the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" * @param task The task to be added to the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"teozhengyang"},"content":" * Removes a task from the TaskList at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"teozhengyang"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"teozhengyang"},"content":" public void removeTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"teozhengyang"},"content":" tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":57}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":" * The Ui class handles user interface interactions and displays messages to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" * Displays a greeting message when the chatbot starts.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" public static void greet() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\"---------------------------------------------\\n Hello! I\u0027m zy\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" \" What can I do for you?\\n---------------------------------------------\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" * Displays a goodbye message when the chatbot exits.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" public static void goodbye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\"---------------------------------------------\\n Bye. Hope to see you again soon!\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" \"\\n---------------------------------------------\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" * Prints a horizontal line as a separator.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" public static void printLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\"---------------------------------------------\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" * Lists the tasks in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" * @param tasks The list of tasks to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" public static void listTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":" * Displays a message when marking a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"teozhengyang"},"content":" public static void markDoneMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"teozhengyang"},"content":" * Displays a message when marking a task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"teozhengyang"},"content":" public static void markUndoneMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"teozhengyang"},"content":" * Displays information about a specific task.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"teozhengyang"},"content":" * @param task The task to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"teozhengyang"},"content":" public static void showTaskMessage(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"teozhengyang"},"content":" * Displays a message after adding a task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"teozhengyang"},"content":" * @param tasks The task list containing the added task.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"teozhengyang"},"content":" public static void addTaskMessage(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\" + \"\\n\" + \" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"teozhengyang"},"content":" + tasks.getAll().get(tasks.getAll().size() - 1).toString() + \"\\n\" + \" Now you have \"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"teozhengyang"},"content":" + tasks.getAll().size() + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"teozhengyang"},"content":" * Displays a message when removing a task from the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"teozhengyang"},"content":" public static void removeTaskMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"teozhengyang"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"teozhengyang"},"content":" * Displays an error message when there\u0027s an issue loading data.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"teozhengyang"},"content":" * @param e The DukeException containing the error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"teozhengyang"},"content":" public static void showLoadingError(DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"teozhengyang"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":96}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":" * The Deadline class represents a task of type \"Deadline\" inherited from the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":" * It contains a description and a deadline (by when the task should be completed).","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new Deadline task with the provided description and deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" * @param description The description of the Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" * @param by The deadline for completing the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new Deadline task with the provided description, deadline, and completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" * @param description The description of the Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" * @param by The deadline for completing the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" public Deadline(String description, LocalDate by, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" * Converts the Deadline task to a formatted string suitable for saving to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" * @return A string representation of the Deadline task in a format compatible with file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" String status \u003d isDone ? \"1\" : \"0\"; // Using isDone directly for readability","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" return \"D | \" + status + \" | \" + description + \" | \" + by;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":" * Returns a string representation of the Deadline task, including its completion status, description, and deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"teozhengyang"},"content":" * @return A formatted string indicating the task type, completion status, and deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"teozhengyang"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"teozhengyang"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"teozhengyang":56}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":" * The Event class represents a task of type \"Event\" inherited from the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":" * It contains a description and a time interval during which the event occurs.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":" protected String start;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" protected String end;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new Event task with the provided description and time interval.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" * @param description The description of the Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" * @param start The start time of the event.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" * @param end The end time of the event.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new Event task with the provided description, time interval, and completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" * @param description The description of the Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" * @param start The start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" * @param end The end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" public Event(String description, String start, String end, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" * Converts the Event task to a formatted string suitable for saving to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" * @return A string representation of the Event task in a format compatible with file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" String status \u003d isDone ? \"1\" : \"0\"; // Using isDone directly for readability","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":" return \"E | \" + status + \" | \" + description + \" | \" + start + \" | \" + end;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"teozhengyang"},"content":" * Returns a string representation of the Event task, including its completion status, description, and time interval.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"teozhengyang"},"content":" * @return A formatted string indicating the task type, completion status, and time interval.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"teozhengyang"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"teozhengyang"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"teozhengyang":58}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":" * The Task class represents a basic task with a description and completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new Task with the provided description.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new Task with the provided description and completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":" * Returns a string representing the completion status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":" * @return \"X\" if the task is done, \" \" (a space) if the task is not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"teozhengyang"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"teozhengyang"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"teozhengyang"},"content":" * Converts the task to a formatted string suitable for saving to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"teozhengyang"},"content":" * @return An empty string for the base Task class (override in subclasses).","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"teozhengyang"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"teozhengyang"},"content":" return \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"teozhengyang"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"teozhengyang"},"content":" * @return A formatted string including the task\u0027s completion status icon and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"teozhengyang"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"teozhengyang"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"teozhengyang":72}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":" * The ToDo class represents a task of type \"ToDo\" inherited from the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":" * It contains a description and inherits methods for marking the task\u0027s completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new ToDo task with the provided description.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" * @param description The description of the ToDo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" * Constructs a new ToDo task with the provided description and completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" * @param description The description of the ToDo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" * Converts the ToDo task to a formatted string suitable for saving to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" * @return A string representation of the ToDo task in a format compatible with file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":" String status \u003d isDone ? \"1\" : \"0\"; // Using isDone directly for readability","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"teozhengyang"},"content":" return \"T | \" + status + \" | \" + description;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"teozhengyang"},"content":" * Returns a string representation of the ToDo task, including its completion status and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"teozhengyang"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"teozhengyang"},"content":" * @return A formatted string indicating the task type and its completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"teozhengyang"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"teozhengyang"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"teozhengyang"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"teozhengyang":48}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":" * The TaskListTest class contains unit tests for the TaskList class.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" private TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" * Test the addTask method of the TaskList class.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" public void testAddTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":" int orgCount \u003d tasks.getAll().size();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" Task newTask \u003d new Task(\"Test task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" assertEquals(orgCount + 1, tasks.getAll().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" * Test the removeTask method of the TaskList class.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":" public void testRemoveTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"teozhengyang"},"content":" Task newTask \u003d new Task(\"Test task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"teozhengyang"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"teozhengyang"},"content":" int orgCount \u003d tasks.getAll().size();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"teozhengyang"},"content":" tasks.removeTask(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"teozhengyang"},"content":" assertEquals(orgCount - 1, tasks.getAll().size());","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":35}},{"path":"src/test/java/duke/task/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":" * The ToDoTest class contains unit tests for the ToDo class.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"public class ToDoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"teozhengyang"},"content":" * Test the toString method of the ToDo class.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"teozhengyang"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"teozhengyang"},"content":" public void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"teozhengyang"},"content":" ToDo testTask \u003d new ToDo(\"Test ToDo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"teozhengyang"},"content":" assertEquals(\"[T][ ] Test ToDo\", testTask.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"teozhengyang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"teozhengyang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"teozhengyang"},"content":" * Test the markAsDone method of the ToDo class.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"teozhengyang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"teozhengyang"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"teozhengyang"},"content":" public void testMarkAsDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"teozhengyang"},"content":" ToDo task1 \u003d new ToDo(\"Test ToDo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"teozhengyang"},"content":" task1.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"teozhengyang"},"content":" assertEquals(\"[T][X] Test ToDo\", task1.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"teozhengyang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"teozhengyang"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"teozhengyang":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"teozhengyang"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"teozhengyang"},"content":"todo buy bread","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"teozhengyang"},"content":"deadline return books /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"teozhengyang"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"teozhengyang"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"teozhengyang"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"teozhengyang"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"teozhengyang"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"teozhengyang"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"teozhengyang"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"teozhengyang":10}}] diff --git a/teozhengyang_ip_master/commits.json b/teozhengyang_ip_master/commits.json index ff263b34..2eddf7e5 100644 --- a/teozhengyang_ip_master/commits.json +++ b/teozhengyang_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"teozhengyang":[{"date":"2023-08-23","commitResults":[{"hash":"cc975f2f741037976db0ad2660648e0d7aad75af","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":6}}},{"hash":"94a6fb55d542aac833147f48bc8f1198d41b2738","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"7c1468ff6a290a173c1725044cd51879b9749db8","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"8a4f1969bfe4fefdfefc910608b130622149e50a","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":3}}},{"hash":"3b873ccfdaecd84e03e4f2e875ea36ca92e044fb","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":40}}},{"hash":"8f2913f52a384fbe0b9364b5a277adc1d3e4ef46","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":6,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"7db5dfe5c4ca4935fd3a02e3b0a9197ede4fa88a","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":42}}},{"hash":"ca6d16bceab79cda569559bcd321229de611de29","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":14}}},{"hash":"9931b2c68300ee176ca43adeba313ab5b380318a","isMergeCommit":false,"messageTitle":"Level-6 (2nd version)","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":16}}},{"hash":"8ab956cbd2327e9e5a3ac68728632342557ed655","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/Duke.java\n","fileTypesAndContributionMap":{}},{"hash":"f7d5e49d2ddac185fda1f070174a60ea8fd9447b","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","tags":["Javadocs"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":6}}},{"hash":"a94968860bae3c3b9ee15b9adb15c40cf7d9fbcd","isMergeCommit":false,"messageTitle":"Update code structure","messageBody":"","tags":["Update-code-structure"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":88}}}]},{"date":"2023-08-30","commitResults":[{"hash":"6c7e72416445fd0f2686d7ff2a1a3ee9b283f1fc","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":127,"deletions":2}}},{"hash":"f64f3dd1b9e442f0423dc523de12d396ede3a4d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-8","Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"7b9c910fdb1d4c807de6fdd96a14a87a453024cb","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":16,"deletions":7}}},{"hash":"bc1e7441e69550dd3aa62077f71d7faaa559004c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"819dd23b506264a6a55f55109c8990f3f506941e","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":269,"deletions":195}}},{"hash":"773c579c551670bcf5a3673d61a7875eeb33aa1a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"e2a99826c4c0752e3f2bbc55bfe78abbbca166f7","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":41},"md":{"insertions":2,"deletions":2}}},{"hash":"2133e61a819456ffc46d6a055bda4311c60b1e56","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"0464695c249aa21adc5118066d9a2837ef180b66","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"507de2bb096150d5c59a813234b012e3304e5098","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"b52a3a67d940f953fd52d1ed91002a38e376e731","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":0}}},{"hash":"e17fe88b0718ffa66c541c0b67f5c6a5f7f44912","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"teozhengyang":{"java":577,"md":2,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":15}},"authorContributionVariance":{"teozhengyang":37400.062},"authorDisplayNameMap":{"teozhengyang":"CS2103T-W12-4 TEO ..YANG"}} +{"authorDailyContributionsMap":{"teozhengyang":[{"date":"2023-08-23","commitResults":[{"hash":"cc975f2f741037976db0ad2660648e0d7aad75af","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":6}}},{"hash":"94a6fb55d542aac833147f48bc8f1198d41b2738","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"7c1468ff6a290a173c1725044cd51879b9749db8","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"8a4f1969bfe4fefdfefc910608b130622149e50a","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":3}}},{"hash":"3b873ccfdaecd84e03e4f2e875ea36ca92e044fb","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":40}}},{"hash":"8f2913f52a384fbe0b9364b5a277adc1d3e4ef46","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":6,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"7db5dfe5c4ca4935fd3a02e3b0a9197ede4fa88a","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":42}}},{"hash":"ca6d16bceab79cda569559bcd321229de611de29","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":14}}},{"hash":"9931b2c68300ee176ca43adeba313ab5b380318a","isMergeCommit":false,"messageTitle":"Level-6 (2nd version)","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":16}}},{"hash":"8ab956cbd2327e9e5a3ac68728632342557ed655","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/Duke.java\n","fileTypesAndContributionMap":{}},{"hash":"f7d5e49d2ddac185fda1f070174a60ea8fd9447b","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","tags":["Javadocs"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":6}}},{"hash":"a94968860bae3c3b9ee15b9adb15c40cf7d9fbcd","isMergeCommit":false,"messageTitle":"Update code structure","messageBody":"","tags":["Update-code-structure"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":88}}}]},{"date":"2023-08-30","commitResults":[{"hash":"6c7e72416445fd0f2686d7ff2a1a3ee9b283f1fc","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":127,"deletions":2}}},{"hash":"f64f3dd1b9e442f0423dc523de12d396ede3a4d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-8","Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"7b9c910fdb1d4c807de6fdd96a14a87a453024cb","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":16,"deletions":7}}},{"hash":"bc1e7441e69550dd3aa62077f71d7faaa559004c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"819dd23b506264a6a55f55109c8990f3f506941e","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":269,"deletions":195}}},{"hash":"773c579c551670bcf5a3673d61a7875eeb33aa1a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"e2a99826c4c0752e3f2bbc55bfe78abbbca166f7","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":41},"md":{"insertions":2,"deletions":2}}},{"hash":"2133e61a819456ffc46d6a055bda4311c60b1e56","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"0464695c249aa21adc5118066d9a2837ef180b66","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"507de2bb096150d5c59a813234b012e3304e5098","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"b52a3a67d940f953fd52d1ed91002a38e376e731","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":0}}},{"hash":"e17fe88b0718ffa66c541c0b67f5c6a5f7f44912","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"c8d960915d3974dc65dcbd923afe48ac20603ce5","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":300,"deletions":142}}},{"hash":"8a80034897283452d596cadd623c38de26b101fe","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"ab4eee8ed7ca2ff8d58be0c8fc6d1a4a8b33e018","isMergeCommit":false,"messageTitle":"Comply with coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":4}}},{"hash":"8a2ff6ae435fc65f9095a0709d92ceb13023d02b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"teozhengyang":{"java":734,"md":2,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":15}},"authorContributionVariance":{"teozhengyang":81881.53},"authorDisplayNameMap":{"teozhengyang":"CS2103T-W12-4 TEO ..YANG"}} diff --git a/tim-pipi_ip_master/authorship.json b/tim-pipi_ip_master/authorship.json index e0830be6..0277e4a9 100644 --- a/tim-pipi_ip_master/authorship.json +++ b/tim-pipi_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"# Anya project template","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"tim-pipi"},"content":"3. After that, locate the `src/main/java/Anya.java` file, right-click it, and choose `Run Anya.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tim-pipi":2,"-":22}},{"path":"src/main/java/Anya.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":"public class Anya {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":" final static String LINE \u003d \"\\n____________________________________________________________\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":" static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":" static int taskCount \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tim-pipi"},"content":" enum Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tim-pipi"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, UNKNOWN","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"tim-pipi"},"content":" greet();","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tim-pipi"},"content":" start();","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tim-pipi"},"content":" exit();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tim-pipi"},"content":" public static void greet() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Hello! I\u0027m Anya Forger\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"tim-pipi"},"content":" + \" What can I do for you?\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tim-pipi"},"content":" + \" Enter a command: list/mark/unmark/todo/deadline/event/bye\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"tim-pipi"},"content":" public static void exit() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Bye. Hope to see you again soon!\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"tim-pipi"},"content":" public static void start() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"tim-pipi"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"tim-pipi"},"content":" scan:","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"tim-pipi"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"tim-pipi"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"tim-pipi"},"content":" String[] arguments \u003d sc.nextLine().split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"tim-pipi"},"content":" Command command \u003d getCommand(arguments[0]);","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"tim-pipi"},"content":" String details;","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"tim-pipi"},"content":" if (arguments.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"tim-pipi"},"content":" details \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"tim-pipi"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"tim-pipi"},"content":" details \u003d arguments[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"tim-pipi"},"content":" switch (command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"tim-pipi"},"content":" case BYE:","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"tim-pipi"},"content":" break scan;","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"tim-pipi"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"tim-pipi"},"content":" list();","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"tim-pipi"},"content":" case MARK: {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"tim-pipi"},"content":" // Error: No argument or Multiple arguments provided","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"tim-pipi"},"content":" if (details.isEmpty() || details.split(\" \").length !\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please only input ONE integer after the word mark!\"","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is not a number","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"tim-pipi"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"tim-pipi"},"content":" Integer.parseInt(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"tim-pipi"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please only input INTEGERs after the word mark!\"","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is not within task numbers","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"tim-pipi"},"content":" int taskNumber \u003d Integer.parseInt(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"tim-pipi"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e taskCount) {","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! I don\u0027t see a task with the number:\" + taskNumber","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is already Done (Future implementation)","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"tim-pipi"},"content":" Task t \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"tim-pipi"},"content":" t.markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku! I\u0027ve marked this task as Done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"tim-pipi"},"content":" case UNMARK: {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"tim-pipi"},"content":" // Error: No argument or Multiple arguments provided","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"tim-pipi"},"content":" if (details.isEmpty() || details.split(\" \").length !\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please only input ONE integer after the word unmark!\"","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is not a number","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"tim-pipi"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"tim-pipi"},"content":" Integer.parseInt(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"tim-pipi"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please only input INTEGERs after the word unmark!\"","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is not within task numbers","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"tim-pipi"},"content":" int taskNumber \u003d Integer.parseInt(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"tim-pipi"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e taskCount) {","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! I don\u0027t see a task with the number:\" + taskNumber","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"tim-pipi"},"content":" Task t \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"tim-pipi"},"content":" t.markAsNotDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku! I\u0027ve marked this task as Not Done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"tim-pipi"},"content":" case TODO: {","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"tim-pipi"},"content":" // Error: No argument provided","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"tim-pipi"},"content":" if (details.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please input a description after the word todo!\"","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"tim-pipi"},"content":" Task t \u003d new Todo(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"tim-pipi"},"content":" taskCount++;","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"tim-pipi"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku! I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Now you have \" + taskCount + \" tasks in the list!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"tim-pipi"},"content":" case DEADLINE: {","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"tim-pipi"},"content":" // Error: No argument or wrong no of arguments provided","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"tim-pipi"},"content":" String[] info \u003d details.split(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"tim-pipi"},"content":" if (details.isEmpty() || info.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please input in the following format: \"","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"tim-pipi"},"content":" + \" deadline \u003ctaskName\u003e /by \u003cdeadline\u003e\"","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"tim-pipi"},"content":" String taskName \u003d info[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"tim-pipi"},"content":" String deadline \u003d info[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"tim-pipi"},"content":" Task t \u003d new Deadline(taskName, deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"tim-pipi"},"content":" taskCount++;","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"tim-pipi"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku! I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Now you have \" + taskCount + \" tasks in the list!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"tim-pipi"},"content":" case EVENT: {","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"tim-pipi"},"content":" // Error: No argument provided","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"tim-pipi"},"content":" if (details.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please input in the following format:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"tim-pipi"},"content":" + \" event \u003ctaskName\u003e /from \u003cstartTime\u003e /to \u003cendTime\u003e\"","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"tim-pipi"},"content":" // Error: Does not contain /from and /to","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"tim-pipi"},"content":" if (!details.contains(\"/from\") \u0026\u0026 !details.contains(\"/to\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please input in the following format:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"tim-pipi"},"content":" + \" event \u003ctaskName\u003e /from \u003cstartTime\u003e /to \u003cendTime\u003e\"","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"tim-pipi"},"content":" String taskName \u003d details.split(\"/from\")[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"tim-pipi"},"content":" String startTime \u003d details.split(\"/from\")[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"tim-pipi"},"content":" String endTime \u003d details.split(\"/to\")[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"tim-pipi"},"content":" Task t \u003d new Event(taskName, startTime, endTime);","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"tim-pipi"},"content":" taskCount++;","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"tim-pipi"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku! I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Now you have \" + taskCount + \" tasks in the list!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"tim-pipi"},"content":" case DELETE: {","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"tim-pipi"},"content":" // Error: No argument or Multiple arguments provided","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"tim-pipi"},"content":" if (details.isEmpty() || details.split(\" \").length !\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please input in the following format:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"tim-pipi"},"content":" + \" delete \u003ctaskNumber\u003e\"","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is not a number","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"tim-pipi"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"tim-pipi"},"content":" Integer.parseInt(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"tim-pipi"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please only input INTEGERs after the word unmark!\"","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is not within task numbers","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"tim-pipi"},"content":" int taskNumber \u003d Integer.parseInt(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"tim-pipi"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e taskCount) {","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! I don\u0027t see a task with the number:\" + taskNumber","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"tim-pipi"},"content":" Task t \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"tim-pipi"},"content":" tasks.remove(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"tim-pipi"},"content":" taskCount--;","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":217,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":218,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku! I\u0027ve removed this task as Not Done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Now you have \" + taskCount + \" tasks in the list!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":221,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":222,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"tim-pipi"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\"☹ Waku waku!!! \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"tim-pipi"},"content":" \"I\u0027m sorry, but I don\u0027t know what that means (yet) :( \");","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":230,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":231,"author":{"gitId":"tim-pipi"},"content":" } catch (AnyaException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"tim-pipi"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":234,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":236,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":238,"author":{"gitId":"tim-pipi"},"content":" public static void list() {","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":240,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku!\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":241,"author":{"gitId":"tim-pipi"},"content":" + \" Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"tim-pipi"},"content":" for (int i \u003d 0; i \u003c taskCount; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":243,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + (i + 1) + \". \" + tasks.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":244,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":245,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":247,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":248,"author":{"gitId":"tim-pipi"},"content":" private static Command getCommand(String input) {","lastModifiedDate":"2023-08-24"},{"lineNumber":249,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"bye\")) return Command.BYE;","lastModifiedDate":"2023-08-24"},{"lineNumber":250,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"list\")) return Command.LIST;","lastModifiedDate":"2023-08-24"},{"lineNumber":251,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"mark\")) return Command.MARK;","lastModifiedDate":"2023-08-24"},{"lineNumber":252,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"unmark\")) return Command.UNMARK;","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"todo\")) return Command.TODO;","lastModifiedDate":"2023-08-24"},{"lineNumber":254,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"deadline\")) return Command.DEADLINE;","lastModifiedDate":"2023-08-24"},{"lineNumber":255,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"event\")) return Command.EVENT;","lastModifiedDate":"2023-08-24"},{"lineNumber":256,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"delete\")) return Command.DELETE;","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"tim-pipi"},"content":" return Command.UNKNOWN;","lastModifiedDate":"2023-08-24"},{"lineNumber":258,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":259,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"tim-pipi":256,"-":3}},{"path":"src/main/java/AnyaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"public class AnyaException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":" public AnyaException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tim-pipi"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tim-pipi"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tim-pipi"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tim-pipi"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":14}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tim-pipi"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tim-pipi"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tim-pipi"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tim-pipi"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tim-pipi"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tim-pipi"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":16}},{"path":"src/main/java/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"public class InvalidArgumentException extends AnyaException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":" public InvalidArgumentException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tim-pipi"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tim-pipi"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tim-pipi"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tim-pipi"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tim-pipi"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tim-pipi"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"tim-pipi"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tim-pipi"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"tim-pipi"},"content":" return \"[\" + this.getStatusIcon() +\"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"tim-pipi"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":26}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tim-pipi"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tim-pipi"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tim-pipi"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"todo sleep","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":"deadline homework /by tonight","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":"event class /from 4pm /to 6pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tim-pipi"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tim-pipi"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tim-pipi"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tim-pipi"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tim-pipi"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tim-pipi"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":19}},{"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":"tim-pipi"},"content":"java -classpath ..\\bin Anya \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"tim-pipi":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":"tim-pipi"},"content":"java -classpath ../bin Anya \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":{"tim-pipi":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"# Anya project template","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"tim-pipi"},"content":"3. After that, locate the `src/main/java/Anya.java` file, right-click it, and choose `Run Anya.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tim-pipi":2,"-":22}},{"path":"data/Anya.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"T | 0 | read book","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":"D | 0 | return book | June 6th","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":"E | 0 | project meeting | Aug 6th 2pm | Aug 6th 4pm","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":"T | 1 | join sports club","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":"T | 0 | sleep","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":"D | 0 | sleep | tonight","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":"T | 0 | sleep","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tim-pipi":7}},{"path":"src/main/java/Anya.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tim-pipi"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tim-pipi"},"content":" * Represents a chatbot named Anya","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tim-pipi"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tim-pipi"},"content":"public class Anya {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tim-pipi"},"content":" final static String LINE \u003d \"\\n____________________________________________________________\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tim-pipi"},"content":" static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tim-pipi"},"content":" static String savedFile \u003d \"./data/Anya.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tim-pipi"},"content":" enum Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tim-pipi"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, UNKNOWN","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tim-pipi"},"content":" enum TaskType {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tim-pipi"},"content":" TODO, DEADLINE, EVENT, UNKNOWN","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"tim-pipi"},"content":" greet();","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"tim-pipi"},"content":" loadFile(savedFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tim-pipi"},"content":" start();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"tim-pipi"},"content":" exit();","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"tim-pipi"},"content":" public static void greet() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Hello! I\u0027m Anya Forger\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"tim-pipi"},"content":" + \" What can I do for you?\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"tim-pipi"},"content":" + \" Enter a command: list/mark/unmark/todo/deadline/event/bye\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"tim-pipi"},"content":" public static void exit() {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Bye. Hope to see you again soon!\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"tim-pipi"},"content":" public static void start() {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"tim-pipi"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"tim-pipi"},"content":" scan:","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"tim-pipi"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"tim-pipi"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"tim-pipi"},"content":" String[] arguments \u003d sc.nextLine().split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"tim-pipi"},"content":" Command command \u003d getCommand(arguments[0]);","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"tim-pipi"},"content":" String details;","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"tim-pipi"},"content":" if (arguments.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"tim-pipi"},"content":" details \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"tim-pipi"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"tim-pipi"},"content":" details \u003d arguments[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"tim-pipi"},"content":" switch (command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"tim-pipi"},"content":" case BYE:","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"tim-pipi"},"content":" saveFile(savedFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"tim-pipi"},"content":" break scan;","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"tim-pipi"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"tim-pipi"},"content":" list();","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"tim-pipi"},"content":" case MARK: {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"tim-pipi"},"content":" // Error: No argument or Multiple arguments provided","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"tim-pipi"},"content":" if (details.isEmpty() || details.split(\" \").length !\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please only input ONE integer after the word mark!\"","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is not a number","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"tim-pipi"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"tim-pipi"},"content":" Integer.parseInt(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"tim-pipi"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please only input INTEGERs after the word mark!\"","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is not within task numbers","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"tim-pipi"},"content":" int taskNumber \u003d Integer.parseInt(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"tim-pipi"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! I don\u0027t see a task with the number:\" + taskNumber","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is already Done (Future implementation)","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"tim-pipi"},"content":" Task t \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"tim-pipi"},"content":" t.markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku! I\u0027ve marked this task as Done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"tim-pipi"},"content":" case UNMARK: {","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"tim-pipi"},"content":" // Error: No argument or Multiple arguments provided","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"tim-pipi"},"content":" if (details.isEmpty() || details.split(\" \").length !\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please only input ONE integer after the word unmark!\"","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is not a number","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"tim-pipi"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"tim-pipi"},"content":" Integer.parseInt(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"tim-pipi"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please only input INTEGERs after the word unmark!\"","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is not within task numbers","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"tim-pipi"},"content":" int taskNumber \u003d Integer.parseInt(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"tim-pipi"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! I don\u0027t see a task with the number:\" + taskNumber","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"tim-pipi"},"content":" Task t \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"tim-pipi"},"content":" t.markAsNotDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku! I\u0027ve marked this task as Not Done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"tim-pipi"},"content":" case TODO: {","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"tim-pipi"},"content":" // Error: No argument provided","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"tim-pipi"},"content":" if (details.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please input a description after the word todo!\"","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"tim-pipi"},"content":" Task t \u003d new Todo(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"tim-pipi"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku! I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"tim-pipi"},"content":" case DEADLINE: {","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"tim-pipi"},"content":" // Error: No argument or wrong no of arguments provided","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"tim-pipi"},"content":" String[] info \u003d details.split(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"tim-pipi"},"content":" if (details.isEmpty() || info.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please input in the following format: \"","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"tim-pipi"},"content":" + \" deadline \u003ctaskName\u003e /by \u003cdeadline\u003e\"","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"tim-pipi"},"content":" String taskName \u003d info[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"tim-pipi"},"content":" String deadline \u003d info[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"tim-pipi"},"content":" Task t \u003d new Deadline(taskName, deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"tim-pipi"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku! I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"tim-pipi"},"content":" case EVENT: {","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"tim-pipi"},"content":" // Error: No argument provided","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"tim-pipi"},"content":" if (details.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please input in the following format:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"tim-pipi"},"content":" + \" event \u003ctaskName\u003e /from \u003cstartTime\u003e /to \u003cendTime\u003e\"","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"tim-pipi"},"content":" // Error: Does not contain /from and /to","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"tim-pipi"},"content":" if (!details.contains(\"/from\") \u0026\u0026 !details.contains(\"/to\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please input in the following format:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"tim-pipi"},"content":" + \" event \u003ctaskName\u003e /from \u003cstartTime\u003e /to \u003cendTime\u003e\"","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"tim-pipi"},"content":" String taskName \u003d details.split(\"/from\")[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"tim-pipi"},"content":" String startTime \u003d details.split(\"/from\")[1].trim().split(\"/to\")[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"tim-pipi"},"content":" String endTime \u003d details.split(\"/to\")[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"tim-pipi"},"content":" Task t \u003d new Event(taskName, startTime, endTime);","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"tim-pipi"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku! I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"tim-pipi"},"content":" case DELETE: {","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"tim-pipi"},"content":" // Error: No argument or Multiple arguments provided","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"tim-pipi"},"content":" if (details.isEmpty() || details.split(\" \").length !\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please input in the following format:\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"tim-pipi"},"content":" + \" delete \u003ctaskNumber\u003e\"","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is not a number","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"tim-pipi"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"tim-pipi"},"content":" Integer.parseInt(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"tim-pipi"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! Please only input INTEGERs after the word unmark!\"","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"tim-pipi"},"content":" // Error: Argument provided is not within task numbers","lastModifiedDate":"2023-08-24"},{"lineNumber":217,"author":{"gitId":"tim-pipi"},"content":" int taskNumber \u003d Integer.parseInt(details);","lastModifiedDate":"2023-08-24"},{"lineNumber":218,"author":{"gitId":"tim-pipi"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"tim-pipi"},"content":" throw new InvalidArgumentException(LINE","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"tim-pipi"},"content":" + \"☹ Waku waku! I don\u0027t see a task with the number:\" + taskNumber","lastModifiedDate":"2023-08-24"},{"lineNumber":221,"author":{"gitId":"tim-pipi"},"content":" + LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":222,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"tim-pipi"},"content":" Task t \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"tim-pipi"},"content":" tasks.remove(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku! I\u0027ve removed this task as Not Done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2023-08-24"},{"lineNumber":230,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":234,"author":{"gitId":"tim-pipi"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":236,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\"☹ Waku waku!!! I\u0027m sorry, but I don\u0027t know what that means (yet) :( \");","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":238,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":240,"author":{"gitId":"tim-pipi"},"content":" } catch (AnyaException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":241,"author":{"gitId":"tim-pipi"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":243,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":244,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":245,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"tim-pipi"},"content":" public static void list() {","lastModifiedDate":"2023-08-24"},{"lineNumber":247,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":248,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" Waku waku!\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":249,"author":{"gitId":"tim-pipi"},"content":" + \" Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":250,"author":{"gitId":"tim-pipi"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\" \" + (i + 1) + \". \" + tasks.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":252,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"tim-pipi"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":255,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":256,"author":{"gitId":"tim-pipi"},"content":" private static Command getCommand(String input) {","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"bye\")) return Command.BYE;","lastModifiedDate":"2023-08-24"},{"lineNumber":258,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"list\")) return Command.LIST;","lastModifiedDate":"2023-08-24"},{"lineNumber":259,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"mark\")) return Command.MARK;","lastModifiedDate":"2023-08-24"},{"lineNumber":260,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"unmark\")) return Command.UNMARK;","lastModifiedDate":"2023-08-24"},{"lineNumber":261,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"todo\")) return Command.TODO;","lastModifiedDate":"2023-08-24"},{"lineNumber":262,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"deadline\")) return Command.DEADLINE;","lastModifiedDate":"2023-08-24"},{"lineNumber":263,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"event\")) return Command.EVENT;","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"delete\")) return Command.DELETE;","lastModifiedDate":"2023-08-24"},{"lineNumber":265,"author":{"gitId":"tim-pipi"},"content":" return Command.UNKNOWN;","lastModifiedDate":"2023-08-24"},{"lineNumber":266,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":267,"author":{"gitId":"tim-pipi"},"content":" private static TaskType getTaskType(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"T\")) return TaskType.TODO;","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"D\")) return TaskType.DEADLINE;","lastModifiedDate":"2023-09-01"},{"lineNumber":270,"author":{"gitId":"tim-pipi"},"content":" if (input.equals(\"E\")) return TaskType.EVENT;","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"tim-pipi"},"content":" return TaskType.UNKNOWN;","lastModifiedDate":"2023-09-01"},{"lineNumber":272,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":273,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":274,"author":{"gitId":"tim-pipi"},"content":" private static void loadFile(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":275,"author":{"gitId":"tim-pipi"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":276,"author":{"gitId":"tim-pipi"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"tim-pipi"},"content":" File directory \u003d file.getParentFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":278,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":279,"author":{"gitId":"tim-pipi"},"content":" // Check if directory exists","lastModifiedDate":"2023-09-01"},{"lineNumber":280,"author":{"gitId":"tim-pipi"},"content":" if (directory.mkdir()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":281,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\"Directory was not found. New directory \" + directory.getName() + \" is created\");","lastModifiedDate":"2023-09-01"},{"lineNumber":282,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":283,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":284,"author":{"gitId":"tim-pipi"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":285,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\"File is not found. New File created: \" + file.getName());","lastModifiedDate":"2023-09-01"},{"lineNumber":286,"author":{"gitId":"tim-pipi"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":287,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\"File already exists. Your data is loaded\");","lastModifiedDate":"2023-09-01"},{"lineNumber":288,"author":{"gitId":"tim-pipi"},"content":" readFile(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":289,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":290,"author":{"gitId":"tim-pipi"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":291,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\"An error occurred.\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":292,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":293,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":294,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":295,"author":{"gitId":"tim-pipi"},"content":" private static void readFile(File file) throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":296,"author":{"gitId":"tim-pipi"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":297,"author":{"gitId":"tim-pipi"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":298,"author":{"gitId":"tim-pipi"},"content":" String[] arguments \u003d sc.nextLine().split(\"\\\\|\");","lastModifiedDate":"2023-09-01"},{"lineNumber":299,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":300,"author":{"gitId":"tim-pipi"},"content":" TaskType taskType \u003d getTaskType(arguments[0].trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":301,"author":{"gitId":"tim-pipi"},"content":" boolean isDone \u003d arguments[1].trim().equals(\"1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":302,"author":{"gitId":"tim-pipi"},"content":" String description \u003d arguments[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":303,"author":{"gitId":"tim-pipi"},"content":" String by \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":304,"author":{"gitId":"tim-pipi"},"content":" String from \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":305,"author":{"gitId":"tim-pipi"},"content":" String to \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":306,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":307,"author":{"gitId":"tim-pipi"},"content":" if (arguments.length \u003d\u003d 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":308,"author":{"gitId":"tim-pipi"},"content":" by \u003d arguments[3].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":309,"author":{"gitId":"tim-pipi"},"content":" } else if (arguments.length \u003d\u003d 5) {","lastModifiedDate":"2023-09-01"},{"lineNumber":310,"author":{"gitId":"tim-pipi"},"content":" from \u003d arguments[3].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":311,"author":{"gitId":"tim-pipi"},"content":" to \u003d arguments[4].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":312,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":313,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":314,"author":{"gitId":"tim-pipi"},"content":" Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":315,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":316,"author":{"gitId":"tim-pipi"},"content":" switch (taskType) {","lastModifiedDate":"2023-09-01"},{"lineNumber":317,"author":{"gitId":"tim-pipi"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":318,"author":{"gitId":"tim-pipi"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":319,"author":{"gitId":"tim-pipi"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":320,"author":{"gitId":"tim-pipi"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":321,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":322,"author":{"gitId":"tim-pipi"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":323,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":324,"author":{"gitId":"tim-pipi"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":325,"author":{"gitId":"tim-pipi"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":326,"author":{"gitId":"tim-pipi"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":327,"author":{"gitId":"tim-pipi"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":328,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":329,"author":{"gitId":"tim-pipi"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":330,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":331,"author":{"gitId":"tim-pipi"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":332,"author":{"gitId":"tim-pipi"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":333,"author":{"gitId":"tim-pipi"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":334,"author":{"gitId":"tim-pipi"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":335,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":336,"author":{"gitId":"tim-pipi"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":337,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":338,"author":{"gitId":"tim-pipi"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":339,"author":{"gitId":"tim-pipi"},"content":" System.out.println(\"Unknown task type.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":340,"author":{"gitId":"tim-pipi"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":341,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":342,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":343,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":344,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":345,"author":{"gitId":"tim-pipi"},"content":" private static void saveFile(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":346,"author":{"gitId":"tim-pipi"},"content":" // Overwrite everything - clear the file","lastModifiedDate":"2023-09-01"},{"lineNumber":347,"author":{"gitId":"tim-pipi"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":348,"author":{"gitId":"tim-pipi"},"content":" writeToFile(filePath, \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":349,"author":{"gitId":"tim-pipi"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":350,"author":{"gitId":"tim-pipi"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":351,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":352,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":353,"author":{"gitId":"tim-pipi"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":354,"author":{"gitId":"tim-pipi"},"content":" String text \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":355,"author":{"gitId":"tim-pipi"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":356,"author":{"gitId":"tim-pipi"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":357,"author":{"gitId":"tim-pipi"},"content":" text +\u003d task.formatToSave() + System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":358,"author":{"gitId":"tim-pipi"},"content":" appendToFile(filePath, text);","lastModifiedDate":"2023-09-01"},{"lineNumber":359,"author":{"gitId":"tim-pipi"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":360,"author":{"gitId":"tim-pipi"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":361,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":362,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":363,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":364,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":365,"author":{"gitId":"tim-pipi"},"content":" private static void writeToFile(String filePath, String text) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":366,"author":{"gitId":"tim-pipi"},"content":" FileWriter fw \u003d new FileWriter(filePath, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":367,"author":{"gitId":"tim-pipi"},"content":" fw.write(text);","lastModifiedDate":"2023-09-01"},{"lineNumber":368,"author":{"gitId":"tim-pipi"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":369,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":370,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":371,"author":{"gitId":"tim-pipi"},"content":" private static void appendToFile(String filePath, String text) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":372,"author":{"gitId":"tim-pipi"},"content":" FileWriter fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":373,"author":{"gitId":"tim-pipi"},"content":" fw.write(text);","lastModifiedDate":"2023-09-01"},{"lineNumber":374,"author":{"gitId":"tim-pipi"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":375,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":376,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"tim-pipi":373,"-":3}},{"path":"src/main/java/AnyaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"public class AnyaException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":" public AnyaException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tim-pipi"},"content":" public String formatToSave() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tim-pipi"},"content":" return \"D\" + super.formatToSave() + \" | \" + this.by;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tim-pipi"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tim-pipi"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tim-pipi"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tim-pipi"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":16}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tim-pipi"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tim-pipi"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tim-pipi"},"content":" public String formatToSave() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tim-pipi"},"content":" return \"E\" + super.formatToSave() + \" | \" + this.from + \" | \" + this.to;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tim-pipi"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tim-pipi"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tim-pipi"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tim-pipi"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":18}},{"path":"src/main/java/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"public class InvalidArgumentException extends AnyaException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":" public InvalidArgumentException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tim-pipi"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tim-pipi"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tim-pipi"},"content":" public String getStatusNumber() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tim-pipi"},"content":" return (isDone ? \"1\" : \"0\"); // mark done task with 1","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tim-pipi"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"tim-pipi"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tim-pipi"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"tim-pipi"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"tim-pipi"},"content":" public String formatToSave() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tim-pipi"},"content":" return \" | \" + getStatusNumber() + \" | \" + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tim-pipi"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"tim-pipi"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"tim-pipi"},"content":" return \"[\" + this.getStatusIcon() +\"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"tim-pipi"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":35}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":" public String formatToSave() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tim-pipi"},"content":" return \"T\" + super.formatToSave();","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tim-pipi"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tim-pipi"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tim-pipi"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tim-pipi"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tim-pipi"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tim-pipi"},"content":"todo sleep","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tim-pipi"},"content":"deadline homework /by tonight","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tim-pipi"},"content":"event class /from 4pm /to 6pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tim-pipi"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tim-pipi"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tim-pipi"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tim-pipi"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tim-pipi"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tim-pipi"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tim-pipi"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tim-pipi"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tim-pipi":19}},{"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":"tim-pipi"},"content":"java -classpath ..\\bin Anya \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"tim-pipi":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":"tim-pipi"},"content":"java -classpath ../bin Anya \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":{"tim-pipi":1,"-":37}}] diff --git a/tim-pipi_ip_master/commits.json b/tim-pipi_ip_master/commits.json index d0641707..8b96394f 100644 --- a/tim-pipi_ip_master/commits.json +++ b/tim-pipi_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tim-pipi":[{"date":"2023-08-23","commitResults":[{"hash":"bd623f72734dbeab338b6f045abea9612d19667c","isMergeCommit":false,"messageTitle":"Renamed Duke to Anya Forger and added Greeting and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"91d4bf3b25770be8bf6f8a49ee870eec3ba55bdf","isMergeCommit":false,"messageTitle":"Add Echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"649931b1b70f776df74f27bd02ada9a87c179fbd","isMergeCommit":false,"messageTitle":"Add list command","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":5}}},{"hash":"3d9b3ba34a59cd2bca472142b777668c31e381dd","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"606f617b28d3156480e0a4fb2bed345d1989dc41","isMergeCommit":false,"messageTitle":"Add Mark as Done function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}},{"hash":"be3739a5846e19145fbdd3e0e71e1185f0db10fd","isMergeCommit":false,"messageTitle":"Add three new types of Task: Todo, Deadline, Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":0}}},{"hash":"d4181aa8ded208a15fdb472db673ee9e3a873286","isMergeCommit":false,"messageTitle":"Support multiple types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":1}}},{"hash":"91740bf1c6fdab6a6396d92b8608221805afb09d","isMergeCommit":false,"messageTitle":"Add Automated Text UI Testing files","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":19,"deletions":0}}},{"hash":"b2430fd9a47203370870a2ef44424bc7e1f4ec3f","isMergeCommit":false,"messageTitle":"Refactor name: Duke to Anya","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":8},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"fd944fbcb5e1e8a208f3cf63b76a8071d2b96b53","isMergeCommit":false,"messageTitle":"Add Error Handling and Refactor Code: Encapsulate common patterns in functions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":193,"deletions":146}}},{"hash":"159117b0039631c5b2e76c2c9373e9f75f008d6b","isMergeCommit":false,"messageTitle":"Add Delete Function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":7}}},{"hash":"498f8f0adc1fb69b01330691230e448b2493c834","isMergeCommit":false,"messageTitle":"Add Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":10}}}]}]},"authorFileTypeContributionMap":{"tim-pipi":{"java":333,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":19}},"authorContributionVariance":{"tim-pipi":65091.55},"authorDisplayNameMap":{"tim-pipi":"CS2103T-W17-2 TIMO..ETIO"}} +{"authorDailyContributionsMap":{"tim-pipi":[{"date":"2023-08-23","commitResults":[{"hash":"bd623f72734dbeab338b6f045abea9612d19667c","isMergeCommit":false,"messageTitle":"Renamed Duke to Anya Forger and added Greeting and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"91d4bf3b25770be8bf6f8a49ee870eec3ba55bdf","isMergeCommit":false,"messageTitle":"Add Echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"649931b1b70f776df74f27bd02ada9a87c179fbd","isMergeCommit":false,"messageTitle":"Add list command","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":5}}},{"hash":"3d9b3ba34a59cd2bca472142b777668c31e381dd","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"606f617b28d3156480e0a4fb2bed345d1989dc41","isMergeCommit":false,"messageTitle":"Add Mark as Done function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}},{"hash":"be3739a5846e19145fbdd3e0e71e1185f0db10fd","isMergeCommit":false,"messageTitle":"Add three new types of Task: Todo, Deadline, Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":0}}},{"hash":"d4181aa8ded208a15fdb472db673ee9e3a873286","isMergeCommit":false,"messageTitle":"Support multiple types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":1}}},{"hash":"91740bf1c6fdab6a6396d92b8608221805afb09d","isMergeCommit":false,"messageTitle":"Add Automated Text UI Testing files","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":19,"deletions":0}}},{"hash":"b2430fd9a47203370870a2ef44424bc7e1f4ec3f","isMergeCommit":false,"messageTitle":"Refactor name: Duke to Anya","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":8},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"fd944fbcb5e1e8a208f3cf63b76a8071d2b96b53","isMergeCommit":false,"messageTitle":"Add Error Handling and Refactor Code: Encapsulate common patterns in functions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":193,"deletions":146}}},{"hash":"159117b0039631c5b2e76c2c9373e9f75f008d6b","isMergeCommit":false,"messageTitle":"Add Delete Function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":7}}},{"hash":"498f8f0adc1fb69b01330691230e448b2493c834","isMergeCommit":false,"messageTitle":"Add Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":10}}}]},{"date":"2023-09-01","commitResults":[{"hash":"3e1f2e20084a8c9284377dc965b2ab01b5116052","isMergeCommit":false,"messageTitle":"Add Save Functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":152,"deletions":19}}},{"hash":"0c2d815842d6af17345c4c02ca22a9429d4b8984","isMergeCommit":true,"messageTitle":"Merge from branch-level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tim-pipi":{"java":466,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":26}},"authorContributionVariance":{"tim-pipi":33975.977},"authorDisplayNameMap":{"tim-pipi":"CS2103T-W17-2 TIMO..ETIO"}} diff --git a/timetraveller-123_ip_master/authorship.json b/timetraveller-123_ip_master/authorship.json index ba5e400f..b3051345 100644 --- a/timetraveller-123_ip_master/authorship.json +++ b/timetraveller-123_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":"timetraveller-123"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter:5.8.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"timetraveller-123":2}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"import storagestuff.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"import userstuff.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":"import instructionstuff.Instruction;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" * Main class of duke.Duke bot.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" * This class performs simple input and output handling and calls","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" * appropriate functions from other classes.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" /** The storage object that handles storing of user data. */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" /** The taskList object representing the list of tasks. */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" /** String representing filepath of data file. */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" /** The ui.Ui object which handles the ui of this chatbot. */","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" * Initialises filepath field to given parameter.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" * @param filePath String representing filepath of datafile.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" this.storage \u003d new Storage(this.filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" this.taskList \u003d new TaskList(this.storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException d) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(d.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" * Handles input from the user accordingly.","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showMessage(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":" Instruction instruction \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":" instruction \u003d Parser.parse(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" instruction.execute(this.storage, this.taskList, this.ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException d) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showMessage(d.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"timetraveller-123"},"content":" if (instruction instanceof Instruction.Exit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"timetraveller-123"},"content":" return;","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showMessage(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"timetraveller-123"},"content":" userInput \u003d this.ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"timetraveller-123"},"content":" * Greets and calls run and finally says goodbye.","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"timetraveller-123"},"content":" * @param args Not used currently.","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":85,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"timetraveller-123"},"content":" String filePath \u003d \"./data/duke.Duke.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"timetraveller-123"},"content":" Duke duke \u003d new Duke(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"timetraveller-123"},"content":" duke.run();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"timetraveller-123":87,"-":4}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":" public DukeException (String errorMessage) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timetraveller-123":8}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import instructionstuff.Instruction;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"import instructionstuff.InstructionEnum;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" * A parser class whose main method is the parse method which","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" * helps to parse user input or data and determine whether the input is valid","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" * or not.","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":"public class Parser {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" public static DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" public static DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy hh:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" * Parses the given input and checks if it is valid and if it is","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" * returns an instruction corresponding to it.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" * @param userInput The string from user to parse.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns an instance of instruction.Instruction if parse was successful and null if not.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" public static Instruction parse(String userInput) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" String regex \u003d \"^([\\\\w]*)(([ ](.*) /from (.*) /to (.*))|[ ]((.*) /by (.*))|(.*))\";","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" Pattern pattern \u003d Pattern.compile(regex);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Unrecognized format. Try again\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" InstructionEnum instruction \u003d InstructionEnum.getInstructionEnum(matcher.group(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" if (instruction \u003d\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Unrecognized instruction. Try again.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" switch (instruction) {","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" case BYE:","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Exit();","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" case LIST:","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(10) \u003d\u003d null || !matcher.group(10).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The description of list must be empty. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.List();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" case MARK:","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(10) \u003d\u003d null || matcher.group(10).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The description of mark cannot be empty. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":" Integer index \u003d Integer.parseInt(matcher.group(10).trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Mark(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"timetraveller-123"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The index is not a valid index. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"timetraveller-123"},"content":" case UNMARK:","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(10) \u003d\u003d null || matcher.group(10).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The description of unmark cannot be empty. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"timetraveller-123"},"content":" Integer index \u003d Integer.parseInt(matcher.group(10).trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Unmark(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"timetraveller-123"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The index is not a valid index. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"timetraveller-123"},"content":" case DELETE:","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(10) \u003d\u003d null || matcher.group(10).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The description of delete cannot be empty. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"timetraveller-123"},"content":" Integer index \u003d Integer.parseInt(matcher.group(10).trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Delete(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"timetraveller-123"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The index is not a valid index. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"timetraveller-123"},"content":" case TODO:","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"timetraveller-123"},"content":" if(matcher.group(10) \u003d\u003d null || matcher.group(10).isBlank()){","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The description of a todo cannot be empty. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Add(new Todo(matcher.group(10).trim()));","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"timetraveller-123"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(8) \u003d\u003d null || matcher.group(8).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The description of a deadline cannot be empty. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(9) \u003d\u003d null || matcher.group(9).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Insufficient number of arguments for a deadline. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"timetraveller-123"},"content":" LocalDateTime dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"timetraveller-123"},"content":" dateTime \u003d LocalDateTime.parse(matcher.group(9).trim(), Parser.inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"timetraveller-123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Invalid date format. Try again.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Add(new Deadline(matcher.group(8).trim(), dateTime));","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"timetraveller-123"},"content":" case EVENT:","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(4) \u003d\u003d null || matcher.group(4).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The description of an event cannot be empty. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(5) \u003d\u003d null || matcher.group(6) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"timetraveller-123"},"content":" || matcher.group(5).isBlank() || matcher.group(6).isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Insufficient number of arguments for an event. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"timetraveller-123"},"content":" LocalDateTime startDateTime, endDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"timetraveller-123"},"content":" startDateTime \u003d LocalDateTime.parse(matcher.group(5).trim(), Parser.inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"timetraveller-123"},"content":" endDateTime \u003d LocalDateTime.parse(matcher.group(6).trim(), Parser.inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"timetraveller-123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Invalid date format. Try again. \");","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Add(new Event(matcher.group(4).trim(), startDateTime,","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"timetraveller-123"},"content":" endDateTime));","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"timetraveller-123"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"timetraveller-123"},"content":" //program will not reach here.","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"An unexpected error occurred. Try again.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"timetraveller-123"},"content":" * Parses a string from the data file and returns the task represented by it.","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"timetraveller-123"},"content":" * @param data String to parse from data file.","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"timetraveller-123"},"content":" * @return returns the task if parse was successful.","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"timetraveller-123"},"content":" * @throws DukeException Throws duke.DukeException if parse failed.","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"timetraveller-123"},"content":" public static Task parseData(String data) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"timetraveller-123"},"content":" String regex \u003d \"\\\\[(.)]\\\\[(.)](((.*)\\\\(from: (.*) to: (.*)\\\\))|((.*)\\\\(by: (.*)\\\\))|(.*))\";","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"timetraveller-123"},"content":" Pattern pattern \u003d Pattern.compile(regex);","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"timetraveller-123"},"content":" Matcher matcher \u003d pattern.matcher(data);","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"timetraveller-123"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"timetraveller-123"},"content":" Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"timetraveller-123"},"content":" InstructionEnum instruction \u003d InstructionEnum.getInstructionEnum(matcher.group(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"timetraveller-123"},"content":" if (instruction \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"timetraveller-123"},"content":" switch (instruction) {","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"timetraveller-123"},"content":" case TODO:","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"timetraveller-123"},"content":" if(matcher.group(11) \u003d\u003d null || matcher.group(11).isBlank()){","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"timetraveller-123"},"content":" task \u003d new Todo(matcher.group(11).trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"timetraveller-123"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"timetraveller-123"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(10) \u003d\u003d null || matcher.group(10).isBlank() ||","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"timetraveller-123"},"content":" matcher.group(9) \u003d\u003d null || matcher.group(9).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"timetraveller-123"},"content":" LocalDateTime dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"timetraveller-123"},"content":" dateTime \u003d LocalDateTime.parse(matcher.group(10), Parser.outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"timetraveller-123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"timetraveller-123"},"content":" task \u003d new Deadline(matcher.group(9).trim(), dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"timetraveller-123"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"timetraveller-123"},"content":" case EVENT:","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(5) \u003d\u003d null || matcher.group(5).isBlank() || matcher.group(6) \u003d\u003d null ||","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"timetraveller-123"},"content":" matcher.group(7) \u003d\u003d null || matcher.group(6).isBlank() || matcher.group(7).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"timetraveller-123"},"content":" LocalDateTime startDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"timetraveller-123"},"content":" LocalDateTime endDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"timetraveller-123"},"content":" startDateTime \u003d LocalDateTime.parse(matcher.group(6), Parser.outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"timetraveller-123"},"content":" endDateTime \u003d LocalDateTime.parse(matcher.group(7), Parser.outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"timetraveller-123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"timetraveller-123"},"content":" task \u003d new Event(matcher.group(5).trim(), startDateTime, endDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"timetraveller-123"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":200,"author":{"gitId":"timetraveller-123"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"timetraveller-123"},"content":" //program will not reach here.","lastModifiedDate":"2023-08-29"},{"lineNumber":202,"author":{"gitId":"timetraveller-123"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":203,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":205,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(2).equals(\"X\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"timetraveller-123"},"content":" task.setAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"timetraveller-123"},"content":" } else if (!matcher.group(2).equals(\" \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"timetraveller-123"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":212,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timetraveller-123":213}},{"path":"src/main/java/instructionstuff/Instruction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package instructionstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"import storagestuff.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"import userstuff.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" * An abstract class for all instructions.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" * Serves as parent class for all instructions.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":"public abstract class Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" * Executes the instruction it represents.","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" public abstract void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" * A class which represents instructions for adding task to list.","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" public static class Add extends Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" * The task to add.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" private Task task;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the class fields.","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" * @storage Unused here.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" * @param task The task to add.","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" public Add(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" * Adds the given task to the given list.","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" * @param taskList The taskList to add in.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" public void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" taskList.addTask(this.task);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\" \" + this.task);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Now you have \" + taskList.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":" * A class to represent the marking of task action.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":" public static class Mark extends Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"timetraveller-123"},"content":" /** The index of task to mark. */","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"timetraveller-123"},"content":" private int index;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the class fields.","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"timetraveller-123"},"content":" * @param index The index of task.","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"timetraveller-123"},"content":" public Mark(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"timetraveller-123"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"timetraveller-123"},"content":" * Marks the task at given index in given taskList.","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"timetraveller-123"},"content":" * @param storage Unused here.","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"timetraveller-123"},"content":" * @param taskList The taskList to mark in.","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"timetraveller-123"},"content":" public void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"timetraveller-123"},"content":" taskList.markTask(this.index);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\" \" + taskList.getTask(index));","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"timetraveller-123"},"content":" * A class to represent the unmarking of task action.","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"timetraveller-123"},"content":" public static class Unmark extends Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"timetraveller-123"},"content":" * The index of task to unmark.","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"timetraveller-123"},"content":" private int index;","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the class fields.","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"timetraveller-123"},"content":" * @param index The index of task.","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"timetraveller-123"},"content":" public Unmark(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"timetraveller-123"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"timetraveller-123"},"content":" * Unmarks the task at given index in given taskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"timetraveller-123"},"content":" * @param storage Unused here.","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"timetraveller-123"},"content":" * @param taskList The taskList to unmark in.","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"timetraveller-123"},"content":" public void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"timetraveller-123"},"content":" taskList.unmarkTask(this.index);","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Ok. I have marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\" \" + taskList.getTask(index));","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"timetraveller-123"},"content":" * A class to represent the deleting of task action.","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"timetraveller-123"},"content":" public static class Delete extends Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"timetraveller-123"},"content":" * The index of task to delete.","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"timetraveller-123"},"content":" private int index;","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the class fields.","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"timetraveller-123"},"content":" * @param index The index of task.","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"timetraveller-123"},"content":" public Delete(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"timetraveller-123"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"timetraveller-123"},"content":" * Deletes the task at given index in given taskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"timetraveller-123"},"content":" * @param storage Unused here.","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"timetraveller-123"},"content":" * @param taskList The taskList to delete from.","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"timetraveller-123"},"content":" public void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"timetraveller-123"},"content":" String task \u003d taskList.deleteTask(this.index);","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Noted. I have removed this task from the list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\" \" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Now you have \" + taskList.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"timetraveller-123"},"content":" * A class which represents the list instruction.","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"timetraveller-123"},"content":" public static class List extends Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"timetraveller-123"},"content":" * Lists the tasks in the given taskList.","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"timetraveller-123"},"content":" * @param storage Unused here.","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"timetraveller-123"},"content":" * @param taskList The taskList containing tasks to list.","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"timetraveller-123"},"content":" public void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"timetraveller-123"},"content":" String[] s \u003d taskList.getTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"timetraveller-123"},"content":" for (int i \u003d 0; i \u003c s.length; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"timetraveller-123"},"content":" String t \u003d (i + 1) + \". \" + s[i];","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"timetraveller-123"},"content":" * A special class to indicate bye instruction.","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"timetraveller-123"},"content":" public static class Exit extends Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"timetraveller-123"},"content":" * Stores the tasks in taskList in storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"timetraveller-123"},"content":" * @param storage The storage to use to store.","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"timetraveller-123"},"content":" * @param taskList The taskList containing tasks to store.","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"timetraveller-123"},"content":" public void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"timetraveller-123"},"content":" String[] s \u003d taskList.getTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"timetraveller-123"},"content":" storage.store(s);","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"timetraveller-123"},"content":" ui.showBye();","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timetraveller-123":200}},{"path":"src/main/java/instructionstuff/InstructionEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package instructionstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":" * An enum class to represent the different Instructions.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"public enum InstructionEnum {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":" BYE(\"bye\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" MARK(\"mark\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" TODO(\"todo\", \"T\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" DEADLINE(\"deadline\", \"D\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" EVENT(\"event\", \"E\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" * An array storing possible string values of the instruction.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" private String[] values;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the enums to their respective string values.","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" * @param values The array of string value to assign to this enums values array.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" private InstructionEnum(String... values) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" this.values \u003d values;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" * Returns the instruction of this enum.","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns the instruction of this enum.","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" private String[] getValues() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" return this.values;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" * Returns the enum whose instruction matches the given string.","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" * @param s The string to match the instruction against.","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns the enum whose value matches the string and null if no such enum.","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" public static InstructionEnum getInstructionEnum(String s) {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" for (InstructionEnum i : InstructionEnum.values()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" String[] values \u003d i.getValues();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" for (int j \u003d 0; j \u003c values.length; j++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" if (values[j].equals(s)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" return i;","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"timetraveller-123":59}},{"path":"src/main/java/storagestuff/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package storagestuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" * A class which handles reading and writing from storage file.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" * String representing the filepath of storage file.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" private final String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the filePath and makes the file and directory if they don\u0027t exist.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" * @param filePath String representing filePath of storage file.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" * @Throws duke.DukeException Throws duke.DukeException if error occurred during accessing or making file.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" File directory \u003d new File(file.getParentFile().getAbsolutePath());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Error in accessing or creating data file. Try again.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" * Returns an array of tasks that are loaded from the data file.","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" * @return returns an array consisting of tasks loaded from the data file.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" * @throws DukeException Throws dukeException if error occurred during loading.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException{","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" BufferedReader bufferedReader \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" FileReader fileReader \u003d new FileReader(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":" bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" String dataInput;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":" while ((dataInput \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":" Task task \u003d Parser.parseData(dataInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Data file is corrupted. Delete data file and try again.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"timetraveller-123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"timetraveller-123"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"timetraveller-123"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"An error occurred when loading data. Try again.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"timetraveller-123"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"timetraveller-123"},"content":" if (bufferedReader !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"timetraveller-123"},"content":" bufferedReader.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"timetraveller-123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"An exception occurred when closing file reader.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"timetraveller-123"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"timetraveller-123"},"content":" * Stores the given strings in datafile.","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"timetraveller-123"},"content":" * @param s An array of strings representing the tasks to stores in data file.","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"timetraveller-123"},"content":" * @throws DukeException throws dukeException if error occurred during storing.","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"timetraveller-123"},"content":" public void store(String[] s) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"timetraveller-123"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"timetraveller-123"},"content":" file.delete();","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"timetraveller-123"},"content":" file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"timetraveller-123"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"timetraveller-123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Error in saving data. Data lost.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"timetraveller-123"},"content":" BufferedWriter bufferedWriter \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"timetraveller-123"},"content":" FileWriter fileWriter \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"timetraveller-123"},"content":" bufferedWriter \u003d new BufferedWriter(fileWriter);","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"timetraveller-123"},"content":" for (int i \u003d 0; i \u003c s.length; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"timetraveller-123"},"content":" bufferedWriter.write(s[i]);","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"timetraveller-123"},"content":" bufferedWriter.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"timetraveller-123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Error in saving data. Data lost.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"timetraveller-123"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"timetraveller-123"},"content":" if (bufferedWriter !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"timetraveller-123"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"timetraveller-123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"An error occurred when closing file writer.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"timetraveller-123":125}},{"path":"src/main/java/taskstuff/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package taskstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":" * A class which inherits from task.Task class.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" * Represents a task with deadline but no start time.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" /** The due date of this task. */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" * Initialises using the given description and end time.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" * @param description The name of this deadline task.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" * @param endTime The deadline of task.","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" public Deadline(String description, LocalDateTime endTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" * Returns a string representation of the deadline task.","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns a string describing this deadline task.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" return \"[D]\" + super.toString() + \" (by: \" + endTime.format(Parser.outputFormat) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timetraveller-123":36}},{"path":"src/main/java/taskstuff/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package taskstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":" * A class which inherits from task.Task class.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" * Represents a task with deadline and start time.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" /** The starting time of this event. */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" /** The ending time of this event. */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" * Initialises using the given description,start time and end time.","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" * @param description The name of this event.","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" * @param startTime The start time of this event.","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" * @param endTime The endt time of this event.","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" public Event(String description, LocalDateTime startTime, LocalDateTime endTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" * Returns a string representation of this event.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns a string describing this event.","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" return \"[E]\" + super.toString() + \" (from: \" + startTime.format(Parser.outputFormat) +","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" \" to: \" + endTime.format(Parser.outputFormat) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timetraveller-123":44}},{"path":"src/main/java/taskstuff/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package taskstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":" * An abstract class which can only be inherited from.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":" * Serves as parent class of all tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":" * The name of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" * Boolean variable indicating whether task is done.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" * Initialises name of task and isDone.","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" * @param description Name of task.","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" * Returns X if task is complete.","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns X or empty space.","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" * Sets isDone to true.","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" public void setAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" * Sets isDone to false.","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" public void setAsNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" * Returns a description of the task containing the status of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns a string with the name and the status of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":" return (\"[\" + this.getStatusIcon() + \"] \" + this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timetraveller-123":64}},{"path":"src/main/java/taskstuff/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package taskstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":" * A class to hold a list of tasks and perform operations on","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":" * this list.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" /** An ArrayList to hold tasks entered by the User. */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" public TaskList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" this.tasks \u003d new ArrayList\u003c\u003e(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" * Adds the given task to the tasks ArrayList.","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" * Prints that the task has been added.","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" * @param task The task to add.","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" * Returns a string describing the tasks present in tasks ArrayList.","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns a string describing this taskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" public String[] getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" String[] s \u003d new String[this.tasks.size()];","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" s[i] \u003d tasks.get(i).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" return s;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" * Marks a given task.Task and throws duke.DukeException if invalid index.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" * @param index The location of the task in tasks ArrayList.","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" public void markTask(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" if (index \u003e tasks.size() || index \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The index is not a valid index. Try again.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" tasks.get(index - 1).setAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":" * Marks a given task.Task as not done and throws duke.DukeException if invalid index.","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"timetraveller-123"},"content":" * @param index The location of the task in tasks ArrayList.","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"timetraveller-123"},"content":" public void unmarkTask(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"timetraveller-123"},"content":" if (index \u003e tasks.size() || index \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The index is not a valid index. Try again.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"timetraveller-123"},"content":" tasks.get(index - 1).setAsNotDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"timetraveller-123"},"content":" * Deletes a given task.Task from the tasklist and throws duke.DukeException if invalid index.","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"timetraveller-123"},"content":" * Returns the deleted task\u0027s string representation.","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"timetraveller-123"},"content":" * @param index The location of the task in tasks ArrayList.","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns the string of deleted task if successful.","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"timetraveller-123"},"content":" public String deleteTask(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"timetraveller-123"},"content":" if (index \u003e tasks.size() || index \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The index is not a valid index. Try again.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"timetraveller-123"},"content":" String task \u003d tasks.get(index - 1).toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"timetraveller-123"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"timetraveller-123"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"timetraveller-123"},"content":" * Returns the size of the taskList.","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns the size of the current taskList.","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"timetraveller-123"},"content":" public int getSize() {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"timetraveller-123"},"content":" return tasks.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"timetraveller-123"},"content":" * Returns the string representation of task at index i.","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"timetraveller-123"},"content":" * If invalid index duke.DukeException is thrown.","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"timetraveller-123"},"content":" * @param index The index of task whose string representation is needed.","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"timetraveller-123"},"content":" public String getTask(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"timetraveller-123"},"content":" if (index \u003e tasks.size() || index \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"timetraveller-123"},"content":" return this.tasks.get(index - 1).toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"timetraveller-123":112}},{"path":"src/main/java/taskstuff/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package taskstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":" * A class which inherits from task.Task class.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":" * Represents a task without deadline or start time.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":" * Initialises with the given description.","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" * @param description The name of this task.Todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" * Returns a string representation of this task.Todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns a string describing this task.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timetraveller-123":29}},{"path":"src/main/java/userstuff/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package userstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":" * A class to handle the ui.Ui of chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" /** The Scanner object used by this ui to read input. */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":" Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the scanner field variable.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" * Draws a line separating each conversation.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" public void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" System.out.println(\"\\t____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" * Greets the user of chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" this.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" System.out.println(\"\\tHello I am Vishnu.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" this.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" * Says bye to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" public void showBye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" this.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" * Shows the given message to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" * @param s The string to show to the uesr.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" public void showMessage(String s) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" System.out.println(\"\\t\" + s);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timetraveller-123":58}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"tada read book","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"deadline return book","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"deadline return book /by sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"deadline /by sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"event go library","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"event go library /from 1pm /to 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":"event /from 1pm /to 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"list 1","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":"mark -1","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":"delete -2","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timetraveller-123":20}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"timetraveller-123":1}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"import storagestuff.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"import userstuff.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":"import instructionstuff.Instruction;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" * Main class of duke.Duke bot.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" * This class performs simple input and output handling and calls","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" * appropriate functions from other classes.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" /** The storage object that handles storing of user data. */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" /** The taskList object representing the list of tasks. */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" /** String representing filepath of data file. */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" /** The ui.Ui object which handles the ui of this chatbot. */","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" * Initialises filepath field to given parameter.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" * @param filePath String representing filepath of datafile.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" this.storage \u003d new Storage(this.filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" this.taskList \u003d new TaskList(this.storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException d) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(d.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" * Handles input from the user accordingly.","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showMessage(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":" Instruction instruction \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":" instruction \u003d Parser.parse(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" instruction.execute(this.storage, this.taskList, this.ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException d) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showMessage(d.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"timetraveller-123"},"content":" if (instruction instanceof Instruction.Exit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"timetraveller-123"},"content":" return;","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showMessage(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"timetraveller-123"},"content":" userInput \u003d this.ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"timetraveller-123"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"timetraveller-123"},"content":" * Greets and calls run and finally says goodbye.","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"timetraveller-123"},"content":" * @param args Not used currently.","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":85,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"timetraveller-123"},"content":" String filePath \u003d \"./data/Duke.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"timetraveller-123"},"content":" Duke duke \u003d new Duke(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"timetraveller-123"},"content":" duke.run();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"timetraveller-123":87,"-":4}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":" public DukeException (String errorMessage) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timetraveller-123":8}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import instructionstuff.Instruction;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"import instructionstuff.InstructionEnum;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" * A parser class whose main method is the parse method which","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" * helps to parse user input or data and determine whether the input is valid","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" * or not.","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":"public class Parser {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" public static DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" public static DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy hh:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" * Parses the given input and checks if it is valid and if it is","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" * returns an instruction corresponding to it.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" * @param userInput The string from user to parse.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns an instance of instruction.Instruction if parse was successful and null if not.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" public static Instruction parse(String userInput) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" String regex \u003d \"^([\\\\w]*)(([ ](.*) /from (.*) /to (.*))|[ ]((.*) /by (.*))|(.*))\";","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" Pattern pattern \u003d Pattern.compile(regex);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Unrecognized format. Try again\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" InstructionEnum instruction \u003d InstructionEnum.getInstructionEnum(matcher.group(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" if (instruction \u003d\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Unrecognized instruction. Try again.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" switch (instruction) {","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" case BYE:","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Exit();","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" case LIST:","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(10) \u003d\u003d null || !matcher.group(10).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The description of list must be empty. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.List();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" case MARK:","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(10) \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Invalid format for mark. Try again.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" } else if (matcher.group(10).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Description of deadline cannot be empty. Try again.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"timetraveller-123"},"content":" Integer index \u003d Integer.parseInt(matcher.group(10).trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Mark(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"timetraveller-123"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The index is not a valid index. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"timetraveller-123"},"content":" case UNMARK:","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(10) \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Invalid format for unmark. Try again.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"timetraveller-123"},"content":" } else if (matcher.group(10).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Description of unmark cannot be empty. Try again.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"timetraveller-123"},"content":" Integer index \u003d Integer.parseInt(matcher.group(10).trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Unmark(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"timetraveller-123"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The index is not a valid index. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"timetraveller-123"},"content":" case DELETE:","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(10) \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Invalid format for delete. Try again.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"timetraveller-123"},"content":" } else if (matcher.group(10).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Description of delete cannot be empty. Try again.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"timetraveller-123"},"content":" Integer index \u003d Integer.parseInt(matcher.group(10).trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Delete(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"timetraveller-123"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The index is not a valid index. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"timetraveller-123"},"content":" case TODO:","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(10) \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Invalid format for todo. Try again.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"timetraveller-123"},"content":" } else if (matcher.group(10).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Description of a todo cannot be empty. Try again.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Add(new Todo(matcher.group(10).trim()));","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"timetraveller-123"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(8) \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Invalid format for deadline. Try again.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"timetraveller-123"},"content":" } else if (matcher.group(8).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Description of a deadline cannot be empty. Try again.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(9) \u003d\u003d null || matcher.group(9).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Insufficient number of arguments for a deadline. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"timetraveller-123"},"content":" LocalDateTime dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"timetraveller-123"},"content":" dateTime \u003d LocalDateTime.parse(matcher.group(9).trim(), Parser.inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"timetraveller-123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Invalid date format. Try again.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Add(new Deadline(matcher.group(8).trim(), dateTime));","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"timetraveller-123"},"content":" case EVENT:","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(4) \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Invalid format for event. Try again.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"timetraveller-123"},"content":" } else if (matcher.group(4).isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Description of event cannot be empty. Try again.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(5) \u003d\u003d null || matcher.group(6) \u003d\u003d null","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"timetraveller-123"},"content":" || matcher.group(5).isBlank() || matcher.group(6).isBlank()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Insufficient number of arguments for an event. Try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"timetraveller-123"},"content":" LocalDateTime startDateTime, endDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"timetraveller-123"},"content":" startDateTime \u003d LocalDateTime.parse(matcher.group(5).trim(), Parser.inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"timetraveller-123"},"content":" endDateTime \u003d LocalDateTime.parse(matcher.group(6).trim(), Parser.inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"timetraveller-123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Invalid date format. Try again. \");","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"timetraveller-123"},"content":" return new Instruction.Add(new Event(matcher.group(4).trim(), startDateTime,","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"timetraveller-123"},"content":" endDateTime));","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"timetraveller-123"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"timetraveller-123"},"content":" //program will not reach here.","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"An unexpected error occurred. Try again.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"timetraveller-123"},"content":" * Parses a string from the data file and returns the task represented by it.","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"timetraveller-123"},"content":" * @param data String to parse from data file.","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"timetraveller-123"},"content":" * @return returns the task if parse was successful.","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"timetraveller-123"},"content":" * @throws DukeException Throws duke.DukeException if parse failed.","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"timetraveller-123"},"content":" public static Task parseData(String data) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"timetraveller-123"},"content":" String regex \u003d \"\\\\[(.)]\\\\[(.)](((.*)\\\\(from: (.*) to: (.*)\\\\))|((.*)\\\\(by: (.*)\\\\))|(.*))\";","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"timetraveller-123"},"content":" Pattern pattern \u003d Pattern.compile(regex);","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"timetraveller-123"},"content":" Matcher matcher \u003d pattern.matcher(data);","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"timetraveller-123"},"content":" if (!matcher.find()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"timetraveller-123"},"content":" Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"timetraveller-123"},"content":" InstructionEnum instruction \u003d InstructionEnum.getInstructionEnum(matcher.group(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"timetraveller-123"},"content":" if (instruction \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"timetraveller-123"},"content":" switch (instruction) {","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"timetraveller-123"},"content":" case TODO:","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"timetraveller-123"},"content":" if(matcher.group(11) \u003d\u003d null || matcher.group(11).isBlank()){","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"timetraveller-123"},"content":" task \u003d new Todo(matcher.group(11).trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"timetraveller-123"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"timetraveller-123"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(10) \u003d\u003d null || matcher.group(10).isBlank() ||","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"timetraveller-123"},"content":" matcher.group(9) \u003d\u003d null || matcher.group(9).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"timetraveller-123"},"content":" LocalDateTime dateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"timetraveller-123"},"content":" dateTime \u003d LocalDateTime.parse(matcher.group(10), Parser.outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"timetraveller-123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"timetraveller-123"},"content":" task \u003d new Deadline(matcher.group(9).trim(), dateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"timetraveller-123"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"timetraveller-123"},"content":" case EVENT:","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(5) \u003d\u003d null || matcher.group(5).isBlank() || matcher.group(6) \u003d\u003d null ||","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"timetraveller-123"},"content":" matcher.group(7) \u003d\u003d null || matcher.group(6).isBlank() || matcher.group(7).isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":200,"author":{"gitId":"timetraveller-123"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"timetraveller-123"},"content":" LocalDateTime startDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"timetraveller-123"},"content":" LocalDateTime endDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"timetraveller-123"},"content":" startDateTime \u003d LocalDateTime.parse(matcher.group(6), Parser.outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"timetraveller-123"},"content":" endDateTime \u003d LocalDateTime.parse(matcher.group(7), Parser.outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"timetraveller-123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"timetraveller-123"},"content":" task \u003d new Event(matcher.group(5).trim(), startDateTime, endDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":210,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"timetraveller-123"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":212,"author":{"gitId":"timetraveller-123"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"timetraveller-123"},"content":" //program will not reach here.","lastModifiedDate":"2023-08-29"},{"lineNumber":214,"author":{"gitId":"timetraveller-123"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":215,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":217,"author":{"gitId":"timetraveller-123"},"content":" if (matcher.group(2).equals(\"X\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":218,"author":{"gitId":"timetraveller-123"},"content":" task.setAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":219,"author":{"gitId":"timetraveller-123"},"content":" } else if (!matcher.group(2).equals(\" \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":220,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":221,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":222,"author":{"gitId":"timetraveller-123"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":223,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":224,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timetraveller-123":225}},{"path":"src/main/java/instructionstuff/Instruction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package instructionstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"import storagestuff.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"import userstuff.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" * An abstract class for all instructions.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" * Serves as parent class for all instructions.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":"public abstract class Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" * Executes the instruction it represents.","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" public abstract void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" * A class which represents instructions for adding task to list.","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" public static class Add extends Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" * The task to add.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" private Task task;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the class fields.","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" * @storage Unused here.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" * @param task The task to add.","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" public Add(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" * Adds the given task to the given list.","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" * @param taskList The taskList to add in.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" public void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" taskList.addTask(this.task);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\" \" + this.task);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Now you have \" + taskList.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":" * A class to represent the marking of task action.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":" public static class Mark extends Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"timetraveller-123"},"content":" /** The index of task to mark. */","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"timetraveller-123"},"content":" private int index;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the class fields.","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"timetraveller-123"},"content":" * @param index The index of task.","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"timetraveller-123"},"content":" public Mark(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"timetraveller-123"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"timetraveller-123"},"content":" * Marks the task at given index in given taskList.","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"timetraveller-123"},"content":" * @param storage Unused here.","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"timetraveller-123"},"content":" * @param taskList The taskList to mark in.","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"timetraveller-123"},"content":" public void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"timetraveller-123"},"content":" taskList.markTask(this.index);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\" \" + taskList.getTask(index));","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"timetraveller-123"},"content":" * A class to represent the unmarking of task action.","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"timetraveller-123"},"content":" public static class Unmark extends Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"timetraveller-123"},"content":" * The index of task to unmark.","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"timetraveller-123"},"content":" private int index;","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the class fields.","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"timetraveller-123"},"content":" * @param index The index of task.","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"timetraveller-123"},"content":" public Unmark(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"timetraveller-123"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"timetraveller-123"},"content":" * Unmarks the task at given index in given taskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"timetraveller-123"},"content":" * @param storage Unused here.","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"timetraveller-123"},"content":" * @param taskList The taskList to unmark in.","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"timetraveller-123"},"content":" public void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"timetraveller-123"},"content":" taskList.unmarkTask(this.index);","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Ok. I have marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\" \" + taskList.getTask(index));","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"timetraveller-123"},"content":" * A class to represent the deleting of task action.","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"timetraveller-123"},"content":" public static class Delete extends Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"timetraveller-123"},"content":" * The index of task to delete.","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"timetraveller-123"},"content":" private int index;","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the class fields.","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"timetraveller-123"},"content":" * @param index The index of task.","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"timetraveller-123"},"content":" public Delete(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"timetraveller-123"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"timetraveller-123"},"content":" * Deletes the task at given index in given taskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"timetraveller-123"},"content":" * @param storage Unused here.","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"timetraveller-123"},"content":" * @param taskList The taskList to delete from.","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"timetraveller-123"},"content":" public void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"timetraveller-123"},"content":" String task \u003d taskList.deleteTask(this.index);","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Noted. I have removed this task from the list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\" \" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Now you have \" + taskList.getSize() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"timetraveller-123"},"content":" * A class which represents the list instruction.","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"timetraveller-123"},"content":" public static class List extends Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"timetraveller-123"},"content":" * Lists the tasks in the given taskList.","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"timetraveller-123"},"content":" * @param storage Unused here.","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"timetraveller-123"},"content":" * @param taskList The taskList containing tasks to list.","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"timetraveller-123"},"content":" public void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"timetraveller-123"},"content":" String[] s \u003d taskList.getTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"timetraveller-123"},"content":" for (int i \u003d 0; i \u003c s.length; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"timetraveller-123"},"content":" String t \u003d (i + 1) + \". \" + s[i];","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"timetraveller-123"},"content":" ui.showMessage(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"timetraveller-123"},"content":" * A special class to indicate bye instruction.","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"timetraveller-123"},"content":" public static class Exit extends Instruction {","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"timetraveller-123"},"content":" * Stores the tasks in taskList in storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"timetraveller-123"},"content":" * @param storage The storage to use to store.","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"timetraveller-123"},"content":" * @param taskList The taskList containing tasks to store.","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"timetraveller-123"},"content":" public void execute(Storage storage, TaskList taskList, Ui ui) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"timetraveller-123"},"content":" String[] s \u003d taskList.getTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"timetraveller-123"},"content":" storage.store(s);","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"timetraveller-123"},"content":" ui.showBye();","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timetraveller-123":200}},{"path":"src/main/java/instructionstuff/InstructionEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package instructionstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":" * An enum class to represent the different Instructions.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"public enum InstructionEnum {","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":" BYE(\"bye\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" MARK(\"mark\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" TODO(\"todo\", \"T\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" DEADLINE(\"deadline\", \"D\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" EVENT(\"event\", \"E\");","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" * An array storing possible string values of the instruction.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" private String[] values;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the enums to their respective string values.","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" * @param values The array of string value to assign to this enums values array.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" private InstructionEnum(String... values) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" this.values \u003d values;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" * Returns the instruction of this enum.","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns the instruction of this enum.","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" private String[] getValues() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" return this.values;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" * Returns the enum whose instruction matches the given string.","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" * @param s The string to match the instruction against.","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns the enum whose value matches the string and null if no such enum.","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" public static InstructionEnum getInstructionEnum(String s) {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" for (InstructionEnum i : InstructionEnum.values()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" String[] values \u003d i.getValues();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" for (int j \u003d 0; j \u003c values.length; j++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" if (values[j].equals(s)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" return i;","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" return null;","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"timetraveller-123":59}},{"path":"src/main/java/storagestuff/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package storagestuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"import taskstuff.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" * A class which handles reading and writing from storage file.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" * String representing the filepath of storage file.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" private final String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the filePath and makes the file and directory if they don\u0027t exist.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" * @param filePath String representing filePath of storage file.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" * @Throws duke.DukeException Throws duke.DukeException if error occurred during accessing or making file.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" File directory \u003d new File(file.getParentFile().getAbsolutePath());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Error in accessing or creating data file. Try again.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" * Returns an array of tasks that are loaded from the data file.","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" * @return returns an array consisting of tasks loaded from the data file.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" * @throws DukeException Throws dukeException if error occurred during loading.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException{","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" BufferedReader bufferedReader \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" FileReader fileReader \u003d new FileReader(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":" bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" String dataInput;","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":" while ((dataInput \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":" Task task \u003d Parser.parseData(dataInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Data file is corrupted. Delete data file and try again.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"timetraveller-123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"timetraveller-123"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"timetraveller-123"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"An error occurred when loading data. Try again.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"timetraveller-123"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"timetraveller-123"},"content":" if (bufferedReader !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"timetraveller-123"},"content":" bufferedReader.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"timetraveller-123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"An exception occurred when closing file reader.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"timetraveller-123"},"content":" return tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"timetraveller-123"},"content":" * Stores the given strings in datafile.","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"timetraveller-123"},"content":" * @param s An array of strings representing the tasks to stores in data file.","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"timetraveller-123"},"content":" * @throws DukeException throws dukeException if error occurred during storing.","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"timetraveller-123"},"content":" public void store(String[] s) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"timetraveller-123"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"timetraveller-123"},"content":" file.delete();","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"timetraveller-123"},"content":" file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"timetraveller-123"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"timetraveller-123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Error in saving data. Data lost.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"timetraveller-123"},"content":" BufferedWriter bufferedWriter \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"timetraveller-123"},"content":" FileWriter fileWriter \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"timetraveller-123"},"content":" bufferedWriter \u003d new BufferedWriter(fileWriter);","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"timetraveller-123"},"content":" for (int i \u003d 0; i \u003c s.length; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"timetraveller-123"},"content":" bufferedWriter.write(s[i]);","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"timetraveller-123"},"content":" bufferedWriter.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"timetraveller-123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"Error in saving data. Data lost.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"timetraveller-123"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"timetraveller-123"},"content":" if (bufferedWriter !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"timetraveller-123"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"timetraveller-123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"An error occurred when closing file writer.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"timetraveller-123":125}},{"path":"src/main/java/taskstuff/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package taskstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":" * A class which inherits from task.Task class.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" * Represents a task with deadline but no start time.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" /** The due date of this task. */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" * Initialises using the given description and end time.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" * @param description The name of this deadline task.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" * @param endTime The deadline of task.","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" public Deadline(String description, LocalDateTime endTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" * Returns a string representation of the deadline task.","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns a string describing this deadline task.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" return \"[D]\" + super.toString() + \" (by: \" + endTime.format(Parser.outputFormat) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timetraveller-123":36}},{"path":"src/main/java/taskstuff/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package taskstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":" * A class which inherits from task.Task class.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" * Represents a task with deadline and start time.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" /** The starting time of this event. */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" /** The ending time of this event. */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" * Initialises using the given description,start time and end time.","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" * @param description The name of this event.","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" * @param startTime The start time of this event.","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" * @param endTime The endt time of this event.","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" public Event(String description, LocalDateTime startTime, LocalDateTime endTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" * Returns a string representation of this event.","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns a string describing this event.","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" return \"[E]\" + super.toString() + \" (from: \" + startTime.format(Parser.outputFormat) +","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" \" to: \" + endTime.format(Parser.outputFormat) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timetraveller-123":44}},{"path":"src/main/java/taskstuff/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package taskstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":" * An abstract class which can only be inherited from.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":" * Serves as parent class of all tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":" * The name of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" * Boolean variable indicating whether task is done.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" * Initialises name of task and isDone.","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" * @param description Name of task.","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" * Returns X if task is complete.","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns X or empty space.","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" * Sets isDone to true.","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" public void setAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" * Sets isDone to false.","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" public void setAsNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" * Returns a description of the task containing the status of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns a string with the name and the status of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":" return (\"[\" + this.getStatusIcon() + \"] \" + this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timetraveller-123":64}},{"path":"src/main/java/taskstuff/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package taskstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":" * A class to hold a list of tasks and perform operations on","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":" * this list.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" /** An ArrayList to hold tasks entered by the User. */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" public TaskList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" this.tasks \u003d new ArrayList\u003c\u003e(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" * Adds the given task to the tasks ArrayList.","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" * Prints that the task has been added.","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" * @param task The task to add.","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" * Returns a string describing the tasks present in tasks ArrayList.","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns a string describing this taskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" public String[] getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" String[] s \u003d new String[this.tasks.size()];","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" s[i] \u003d tasks.get(i).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" return s;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" * Marks a given task.Task and throws duke.DukeException if invalid index.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" * @param index The location of the task in tasks ArrayList.","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" public void markTask(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" if (index \u003e tasks.size() || index \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The index is not a valid index. Try again.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" tasks.get(index - 1).setAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":" * Marks a given task.Task as not done and throws duke.DukeException if invalid index.","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"timetraveller-123"},"content":" * @param index The location of the task in tasks ArrayList.","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"timetraveller-123"},"content":" public void unmarkTask(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"timetraveller-123"},"content":" if (index \u003e tasks.size() || index \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The index is not a valid index. Try again.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"timetraveller-123"},"content":" tasks.get(index - 1).setAsNotDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"timetraveller-123"},"content":" * Deletes a given task.Task from the tasklist and throws duke.DukeException if invalid index.","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"timetraveller-123"},"content":" * Returns the deleted task\u0027s string representation.","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"timetraveller-123"},"content":" * @param index The location of the task in tasks ArrayList.","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns the string of deleted task if successful.","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"timetraveller-123"},"content":" public String deleteTask(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"timetraveller-123"},"content":" if (index \u003e tasks.size() || index \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"The index is not a valid index. Try again.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"timetraveller-123"},"content":" String task \u003d tasks.get(index - 1).toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"timetraveller-123"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"timetraveller-123"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"timetraveller-123"},"content":" * Returns the size of the taskList.","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns the size of the current taskList.","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"timetraveller-123"},"content":" public int getSize() {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"timetraveller-123"},"content":" return tasks.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"timetraveller-123"},"content":" * Returns the string representation of task at index i.","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"timetraveller-123"},"content":" * If invalid index duke.DukeException is thrown.","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"timetraveller-123"},"content":" * @param index The index of task whose string representation is needed.","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"timetraveller-123"},"content":" public String getTask(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"timetraveller-123"},"content":" if (index \u003e tasks.size() || index \u003c\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"timetraveller-123"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"timetraveller-123"},"content":" return this.tasks.get(index - 1).toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"timetraveller-123":112}},{"path":"src/main/java/taskstuff/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package taskstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":" * A class which inherits from task.Task class.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":" * Represents a task without deadline or start time.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":" * Initialises with the given description.","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" * @param description The name of this task.Todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" * Returns a string representation of this task.Todo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" * @return Returns a string describing this task.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timetraveller-123":29}},{"path":"src/main/java/userstuff/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package userstuff;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":" * A class to handle the ui.Ui of chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":" /** The Scanner object used by this ui to read input. */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":" Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" * Initialises the scanner field variable.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" * Draws a line separating each conversation.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" public void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" System.out.println(\"\\t____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" * Greets the user of chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" this.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" System.out.println(\"\\tHello I am Vishnu.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" this.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" * Says bye to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" public void showBye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" this.showLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" * Shows the given message to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" * @param s The string to show to the uesr.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" public void showMessage(String s) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" System.out.println(\"\\t\" + s);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timetraveller-123":58}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import instructionstuff.Instruction;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" public void parse_byeInstruction_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" Instruction instruction \u003d Parser.parse(\"bye sdfsd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" assertEquals(true, instruction instanceof Instruction.Exit);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" public void parse_invalidIndex_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" Instruction instruction \u003d Parser.parse(\"mark a\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" assertEquals(\"The index is not a valid index. Try again.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" public void parse_invalidDateFormat_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" Instruction instruction \u003d Parser.parse(\"deadline read /by 02/02/2002 18:00\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":" assertEquals(\"Invalid date format. Try again.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"timetraveller-123"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"timetraveller-123"},"content":" public void parse_unrecognizedInstruction_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"timetraveller-123"},"content":" Instruction instruction \u003d Parser.parse(\"tada read book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"timetraveller-123"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"timetraveller-123"},"content":" assertEquals(\"Unrecognized instruction. Try again.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"timetraveller-123"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"timetraveller-123"},"content":" public void parse_invalidFormat_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"timetraveller-123"},"content":" Instruction instruction \u003d Parser.parse(\"deadline /to 02-02-2002 1800\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"timetraveller-123"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"timetraveller-123"},"content":" } catch(DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"timetraveller-123"},"content":" assertEquals(\"Invalid format for deadline. Try again.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"timetraveller-123"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"timetraveller-123"},"content":" public void parse_eventInstruction_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"timetraveller-123"},"content":" Instruction instruction \u003d Parser.parse(\"event read /from 02-02-2002 1800 /to 02-02-2002 2034\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"timetraveller-123"},"content":" assertEquals(true, instruction instanceof Instruction.Add);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"timetraveller-123"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"timetraveller-123":71}},{"path":"src/test/java/taskstuff/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"package taskstuff;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":" public void markTask_invalidIndex_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":" Task task \u003d new Todo(\"read book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":" taskList.markTask(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"timetraveller-123"},"content":" assertEquals(\"The index is not a valid index. Try again.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"timetraveller-123"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"timetraveller-123"},"content":" public void deleteTask_validIndex_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"timetraveller-123"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"timetraveller-123"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"timetraveller-123"},"content":" taskList.addTask(new Todo(\"read book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"timetraveller-123"},"content":" taskList.addTask(new Todo(\"cook\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"timetraveller-123"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"timetraveller-123"},"content":" taskList.deleteTask(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"timetraveller-123"},"content":" assertEquals(1, taskList.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"timetraveller-123"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"timetraveller-123"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"timetraveller-123"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"timetraveller-123"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"timetraveller-123":38}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"timetraveller-123"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"timetraveller-123"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"timetraveller-123"},"content":"tada read book","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timetraveller-123"},"content":"deadline return book","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timetraveller-123"},"content":"deadline return book /by sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timetraveller-123"},"content":"deadline /by sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timetraveller-123"},"content":"event go library","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timetraveller-123"},"content":"event go library /from 1pm /to 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"timetraveller-123"},"content":"event /from 1pm /to 2pm","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timetraveller-123"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timetraveller-123"},"content":"list 1","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timetraveller-123"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timetraveller-123"},"content":"mark -1","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timetraveller-123"},"content":"delete -2","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"timetraveller-123"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timetraveller-123"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"timetraveller-123"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"timetraveller-123"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"timetraveller-123"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timetraveller-123"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timetraveller-123":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":"timetraveller-123"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*/*.java","lastModifiedDate":"2023-09-01"},{"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":"timetraveller-123"},"content":"java -classpath ../bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"-":36,"timetraveller-123":2}}] diff --git a/timetraveller-123_ip_master/commits.json b/timetraveller-123_ip_master/commits.json index 6eb57256..0de547b5 100644 --- a/timetraveller-123_ip_master/commits.json +++ b/timetraveller-123_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"timetraveller-123":[{"date":"2023-08-23","commitResults":[{"hash":"998186baf5edef44861bfbdab7c39c68d89a71ec","isMergeCommit":false,"messageTitle":"* Rename bot to Vishnu * Make bot greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"9025138549979a46dce670656049480b0085965c","isMergeCommit":false,"messageTitle":"* Make bot echo user input * Make bot terminate with \"bye\" command","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}},{"hash":"3f3c680b29d067d40fe355f0edeecd6ed9e4ba1b","isMergeCommit":false,"messageTitle":"* Make bot add tasks to list * Make bot list out tasks with \"list\" command","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":3}}},{"hash":"6b44da1ad2b1a24a9ca6dc9e9447a77e67e4a533","isMergeCommit":false,"messageTitle":"Add Task and Task List class Make Bot mark and unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":167,"deletions":34}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b55630a0c37173ddd2945e550a73bb97cc299ad2","isMergeCommit":false,"messageTitle":"Add Parser, different type of Task and Instruction class Make bot accept different type of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":407,"deletions":64}}},{"hash":"14f1aac45e0fe47898bfb19738684b96401d0bec","isMergeCommit":false,"messageTitle":"Add input and expected output","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0}}},{"hash":"e421f9270461e23a4042c297a0d777669e1b1d52","isMergeCommit":false,"messageTitle":"Add DukeException class Make bot handle exception Update Expected output","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":33}}},{"hash":"e85fbf83378f7a87b268becaa9d8cee2fab512ce","isMergeCommit":false,"messageTitle":"Add delete Update input and expected output","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":63,"deletions":0}}},{"hash":"75b1dc0637e94edb841221ed599ce4e2e3fef8f7","isMergeCommit":false,"messageTitle":"Fix style mistakes","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-29","commitResults":[{"hash":"28a5892bb659f0df190891fe08d63ec9600cae8b","isMergeCommit":false,"messageTitle":"Add enum to represent Instuctions","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":11}}}]},{"date":"2023-08-30","commitResults":[{"hash":"2c825a9f84d5e7c6b4f1335ec4120d570f4f7fe9","isMergeCommit":false,"messageTitle":"Add storage to load and store data","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":354,"deletions":162}}},{"hash":"9d7e6a72b84b2b79202eb9713a233b8dce0b8a84","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"33a363d5169a5b5fc290bf8a754ecbfddb2910d4","isMergeCommit":false,"messageTitle":"Add LocalDateTime in Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":8}}},{"hash":"78d4f87992fc9f9f5cab80ba556bad666c823890","isMergeCommit":false,"messageTitle":"Add LocalDateTime to tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":20}}},{"hash":"24d407c7a4deb90f021ff890b3d69ab84fb5c478","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"1d75624437d05c94120a4a38de1ff026ec4bb879","isMergeCommit":false,"messageTitle":"Add Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":68}}},{"hash":"d9d614dc90f7f9ce53cc522b34d4fbcf55101b6a","isMergeCommit":true,"messageTitle":"Merge master with branch-A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"0569e82b333656da30c57efed63c1485244d608f","isMergeCommit":false,"messageTitle":"Add packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":28}}},{"hash":"14111ec1909a8e8978a27ee59bb412c6fcd0b109","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"20c4923eee74ce5e61cd4af7a0617cafcfc6423c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"f5269d5ff7dd2086621ad0f0f400c5a966059061","isMergeCommit":false,"messageTitle":"Add gradle support","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"ef5d219d3c5053577a57e256cb760021fa81fbc8","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"timetraveller-123":{"java":1035,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":20}},"authorContributionVariance":{"timetraveller-123":45128.688},"authorDisplayNameMap":{"timetraveller-123":"CS2103T-W08-4 VIJA..SATH"}} +{"authorDailyContributionsMap":{"timetraveller-123":[{"date":"2023-08-23","commitResults":[{"hash":"998186baf5edef44861bfbdab7c39c68d89a71ec","isMergeCommit":false,"messageTitle":"* Rename bot to Vishnu * Make bot greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"9025138549979a46dce670656049480b0085965c","isMergeCommit":false,"messageTitle":"* Make bot echo user input * Make bot terminate with \"bye\" command","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}},{"hash":"3f3c680b29d067d40fe355f0edeecd6ed9e4ba1b","isMergeCommit":false,"messageTitle":"* Make bot add tasks to list * Make bot list out tasks with \"list\" command","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":3}}},{"hash":"6b44da1ad2b1a24a9ca6dc9e9447a77e67e4a533","isMergeCommit":false,"messageTitle":"Add Task and Task List class Make Bot mark and unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":167,"deletions":34}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b55630a0c37173ddd2945e550a73bb97cc299ad2","isMergeCommit":false,"messageTitle":"Add Parser, different type of Task and Instruction class Make bot accept different type of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":407,"deletions":64}}},{"hash":"14f1aac45e0fe47898bfb19738684b96401d0bec","isMergeCommit":false,"messageTitle":"Add input and expected output","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0}}},{"hash":"e421f9270461e23a4042c297a0d777669e1b1d52","isMergeCommit":false,"messageTitle":"Add DukeException class Make bot handle exception Update Expected output","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":33}}},{"hash":"e85fbf83378f7a87b268becaa9d8cee2fab512ce","isMergeCommit":false,"messageTitle":"Add delete Update input and expected output","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":63,"deletions":0}}},{"hash":"75b1dc0637e94edb841221ed599ce4e2e3fef8f7","isMergeCommit":false,"messageTitle":"Fix style mistakes","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-29","commitResults":[{"hash":"28a5892bb659f0df190891fe08d63ec9600cae8b","isMergeCommit":false,"messageTitle":"Add enum to represent Instuctions","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":11}}}]},{"date":"2023-08-30","commitResults":[{"hash":"2c825a9f84d5e7c6b4f1335ec4120d570f4f7fe9","isMergeCommit":false,"messageTitle":"Add storage to load and store data","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":354,"deletions":162}}},{"hash":"9d7e6a72b84b2b79202eb9713a233b8dce0b8a84","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"33a363d5169a5b5fc290bf8a754ecbfddb2910d4","isMergeCommit":false,"messageTitle":"Add LocalDateTime in Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":8}}},{"hash":"78d4f87992fc9f9f5cab80ba556bad666c823890","isMergeCommit":false,"messageTitle":"Add LocalDateTime to tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":20}}},{"hash":"24d407c7a4deb90f021ff890b3d69ab84fb5c478","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"1d75624437d05c94120a4a38de1ff026ec4bb879","isMergeCommit":false,"messageTitle":"Add Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":68}}},{"hash":"d9d614dc90f7f9ce53cc522b34d4fbcf55101b6a","isMergeCommit":true,"messageTitle":"Merge master with branch-A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"0569e82b333656da30c57efed63c1485244d608f","isMergeCommit":false,"messageTitle":"Add packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":28}}},{"hash":"14111ec1909a8e8978a27ee59bb412c6fcd0b109","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"1f50f1decd29dfea9cf55aab41cb6f1e3dad22fc","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9544e62f8a437ab4aaf78473864dd900659b76ae","isMergeCommit":false,"messageTitle":"Set up gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"ef9116f5a68c038a402725af63c971273bf20613","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"e0c9641ef0194035b3a492fdca18c023d4aa631e","isMergeCommit":false,"messageTitle":"Add JUnit test","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":12}}},{"hash":"17aba2300f07f512f8adfc7f8a420506520c5f42","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"14cf245ca741f8435361ccbf7acd3796f07e4513","isMergeCommit":false,"messageTitle":"Update data path","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b0bc43fa5d18e0402182fb9cc167733047a20f65","isMergeCommit":false,"messageTitle":"Update runtest.sh","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"timetraveller-123":{"java":1156,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":1,"txt":20}},"authorContributionVariance":{"timetraveller-123":44004.688},"authorDisplayNameMap":{"timetraveller-123":"CS2103T-W08-4 VIJA..SATH"}} diff --git a/timleow_ip_master/authorship.json b/timleow_ip_master/authorship.json index b690ddbd..daf06948 100644 --- a/timleow_ip_master/authorship.json +++ b/timleow_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"# Duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":"3. After that, locate the `src/main/java/Duke.Duke.java` file, right-click it, and choose `Run Duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"timleow":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" mainClass.set(\"Duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"timleow":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"D | 0 | return book | 2019-12-02 1800","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"D | 0 | return book | 2023-08-30","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"D | 0 | adele | 2023-12-30 1900","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"D | 0 | todo | 2023-10-10","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"T | 0 | runaway","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"E | 0 | project meeting | Mon 2pm | 4pm","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"D | 0 | read | 2019-12-02 1800","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"D | 1 | run | 2019-10-10 1000","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"timleow":8}},{"path":"src/main/java/Commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"public class AddDeadlineCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" private String deadlineName;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" private String deadlineString;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" public AddDeadlineCommand(String deadlineName, String deadlineString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" this.deadlineName \u003d deadlineName;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" this.deadlineString \u003d deadlineString;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" Task deadline \u003d Storage.parseDeadlineFromString(deadlineName, deadlineString);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" tasks.addTask(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" ui.printTaskAddedMessage(deadline, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":21}},{"path":"src/main/java/Commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import Tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public class AddEventCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" private String eventName;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" private String eventStart;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" private String eventEnd;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" public AddEventCommand(String eventName, String eventStart, String eventEnd) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" this.eventName \u003d eventName;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" this.eventStart \u003d eventStart;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" this.eventEnd \u003d eventEnd;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" Task event \u003d new Event(eventName, false, eventStart, eventEnd);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" tasks.addTask(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" ui.printTaskAddedMessage(event, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":25}},{"path":"src/main/java/Commands/AddToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import Tasks.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public class AddToDoCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" private String name;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" public AddToDoCommand(String name) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" Task toDo\u003d new ToDo(name, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" tasks.addTask(toDo);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" ui.printTaskAddedMessage(toDo, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":19}},{"path":"src/main/java/Commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public interface Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":9}},{"path":"src/main/java/Commands/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"public class DeleteTaskCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" int id;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" public DeleteTaskCommand(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" this.id \u003d id;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" Task removedTask \u003d tasks.deleteTask(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" ui.printTaskDeletedMessage(removedTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":16}},{"path":"src/main/java/Commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"public class ExitCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" ui.bidFarewell();","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" public static boolean isExit(Command command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" return command instanceof ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":13}},{"path":"src/main/java/Commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"public class InvalidCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" ui.printNotSureMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":9}},{"path":"src/main/java/Commands/ListTasksCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public class ListTasksCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" ui.printTask(i, task);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":15}},{"path":"src/main/java/Commands/MarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"public class MarkTaskCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" private int id;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" public MarkTaskCommand(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" this.id \u003d id;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" tasks.markTask(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" ui.printTaskMarkedMessage(tasks.getTask(id));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"Index out of bounds. Expected: unmark {id}\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":19}},{"path":"src/main/java/Commands/UnmarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"public class UnmarkTaskCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" private int id;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" public UnmarkTaskCommand(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" this.id \u003d id;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" tasks.unmarkTask(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" ui.printTaskUnmarkedMessage(tasks.getTask(id));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"Index out of bounds. Expected: unmark {id}\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":19}},{"path":"src/main/java/Duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import Commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import Commands.ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import OOP.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"public class Duke {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" private String name \u003d \"WallE\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" this.tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" ui.printGreeting(this.name);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":" runCommandLoopUntilExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":" /** Reads the user command and executes it, until the user issues the bye (exit) command. */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timleow"},"content":" private void runCommandLoopUntilExitCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"timleow"},"content":" Command command \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timleow"},"content":" do {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"timleow"},"content":" String userCommandText \u003d ui.getUserCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timleow"},"content":" ui.printDivider();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timleow"},"content":" command \u003d new Parser().parseCommand(userCommandText);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timleow"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timleow"},"content":" storage.save(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timleow"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timleow"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timleow"},"content":" } finally {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"timleow"},"content":" ui.printDivider();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"timleow"},"content":" } while (!ExitCommand.isExit(command));","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"timleow":49,"-":1}},{"path":"src/main/java/Duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"public class DukeException extends RuntimeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":" public DukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":" super();","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":10}},{"path":"src/main/java/OOP/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package OOP;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import Commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import Commands.AddToDoCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Commands.AddDeadlineCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import Commands.AddEventCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"import Commands.MarkTaskCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"import Commands.UnmarkTaskCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"import Commands.DeleteTaskCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"import Commands.InvalidCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":"import Commands.ListTasksCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":"import Commands.ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":"import Duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" public Command parseCommand(String userCommandText) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" if (!userCommandText.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" if (!userCommandText.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" String[] inputWords \u003d userCommandText.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" int id;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" switch (inputWords[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" String todoName \u003d extractSecondWordOnwards(userCommandText);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" if (todoName.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"Empty Description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" return new AddToDoCommand(todoName);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" String[] twoParts \u003d userCommandText.split (\"/by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":" String deadlineName \u003d extractSecondWordOnwards(twoParts[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" if (deadlineName.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"Empty description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timleow"},"content":" String deadlineString \u003d twoParts[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"timleow"},"content":" return new AddDeadlineCommand(deadlineName, deadlineString);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timleow"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"timleow"},"content":" String[] threeParts \u003d userCommandText.split (\"/\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"timleow"},"content":" String eventName \u003d extractSecondWordOnwards(threeParts[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timleow"},"content":" if (eventName.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"Empty description\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timleow"},"content":" String eventStart \u003d extractSecondWordOnwards(threeParts[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timleow"},"content":" String eventEnd \u003d extractSecondWordOnwards(threeParts[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timleow"},"content":" return new AddEventCommand(eventName, eventStart, eventEnd);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timleow"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"Index likely out of bounds due to incorrect format of input. Expected usage: event {eventName} /from {eventStart} /to {eventEnd}\");","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"timleow"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"timleow"},"content":" id \u003d Integer.valueOf(inputWords[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"timleow"},"content":" return new MarkTaskCommand(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"timleow"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"timleow"},"content":" id \u003d Integer.valueOf(inputWords[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"timleow"},"content":" return new UnmarkTaskCommand(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"timleow"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"timleow"},"content":" id \u003d Integer.valueOf(inputWords[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"timleow"},"content":" return new DeleteTaskCommand(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"timleow"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"timleow"},"content":" return new InvalidCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"timleow"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"timleow"},"content":" return new ListTasksCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"timleow"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"timleow"},"content":" public static String extractSecondWordOnwards(String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"timleow"},"content":" String[] wordArray \u003d str.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"timleow"},"content":" String secondWordOnwards \u003d wordArray.length \u003e\u003d 2 ? wordArray[1] : \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"timleow"},"content":" for (int i \u003d 2; i \u003c wordArray.length; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"timleow"},"content":" secondWordOnwards +\u003d \" \" + wordArray[i];","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"timleow"},"content":" return secondWordOnwards;","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":79}},{"path":"src/main/java/OOP/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package OOP;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import Tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import Tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import Tasks.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":"import Duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" BufferedWriter writer \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":" writer \u003d new BufferedWriter(new FileWriter(this.filePath));","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timleow"},"content":" for (Task task : tasks.getTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"timleow"},"content":" writer.write(task.toString(true));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timleow"},"content":" writer.newLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"timleow"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timleow"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timleow"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timleow"},"content":" // Make sure to close the writer in the finally block","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timleow"},"content":" if (writer !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timleow"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timleow"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timleow"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"timleow"},"content":" public List\u003cTask\u003e load() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"timleow"},"content":" String directoryPath \u003d filePath.split(\"/\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"timleow"},"content":" BufferedReader reader \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"timleow"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"timleow"},"content":" // Create the directory if it doesn\u0027t exist","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"timleow"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"timleow"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"timleow"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"timleow"},"content":" // Create the file if it doesn\u0027t exist","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"timleow"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"timleow"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"timleow"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"timleow"},"content":" reader \u003d new BufferedReader(new FileReader(filePath));","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"timleow"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"timleow"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"timleow"},"content":" // Assuming each line contains task information, parse and create tasks accordingly","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"timleow"},"content":" Task task \u003d parseTaskFromString(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"timleow"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"timleow"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"timleow"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"timleow"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"timleow"},"content":" // Make sure to close the reader in the finally block","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"timleow"},"content":" if (reader !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"timleow"},"content":" reader.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"timleow"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"timleow"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"timleow"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"timleow"},"content":" public static Task parseTaskFromString(String line) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"timleow"},"content":" String[] taskData \u003d line.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"timleow"},"content":" boolean isDone \u003d taskData[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"timleow"},"content":" switch (taskData[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"timleow"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"timleow"},"content":" ToDo todo \u003d new ToDo(taskData[2], isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"timleow"},"content":" return todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"timleow"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"timleow"},"content":" return parseDeadlineFromString(taskData[2], taskData[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"timleow"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"timleow"},"content":" Event event \u003d new Event(taskData[2], isDone, taskData[3], taskData[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"timleow"},"content":" return event;","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"timleow"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"timleow"},"content":" public static Deadline parseDeadlineFromString(String name, String deadlineString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"timleow"},"content":" DateTimeFormatter formatter \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"timleow"},"content":" Deadline deadline \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"timleow"},"content":" if (isValidDate(deadlineString)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"timleow"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"timleow"},"content":" LocalDate parsedDeadlineDate \u003d LocalDate.parse(deadlineString, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"timleow"},"content":" deadline \u003d new Deadline(name, false, parsedDeadlineDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"timleow"},"content":" } else if (isValidDateTime(deadlineString)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"timleow"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"timleow"},"content":" LocalDateTime parsedDeadlineDateTime \u003d LocalDateTime.parse(deadlineString, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"timleow"},"content":" deadline \u003d new Deadline(name, false, parsedDeadlineDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"timleow"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\t Invalid deadline format in storage file. Expected format for deadline (time is optional):\\n deadline {deadlineName} /by yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"timleow"},"content":" return deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"timleow"},"content":" private static boolean isValidDate(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"timleow"},"content":" Pattern pattern \u003d Pattern.compile(\"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\");","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"timleow"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"timleow"},"content":" return matcher.matches();","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"timleow"},"content":" private static boolean isValidDateTime(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"timleow"},"content":" Pattern pattern \u003d Pattern.compile(\"^\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{4}$\");","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"timleow"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"timleow"},"content":" return matcher.matches();","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":139}},{"path":"src/main/java/OOP/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package OOP;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" public Task getTask(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" return tasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" public Task deleteTask(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" return this.tasks.remove(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" public void markTask(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":" this.getTask(id).markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timleow"},"content":" public void unmarkTask(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"timleow"},"content":" this.getTask(id).markAsUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timleow"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timleow"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timleow"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timleow"},"content":" return this.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":48}},{"path":"src/main/java/OOP/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package OOP;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" public String getUserCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" public void printDivider() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" System.out.println(\u0027\\t\u0027 + \"_________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" public void printGreeting(String name) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" printDivider();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\tHello! I\u0027m \" + name + \"!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" printDivider();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" public void printTaskAddedMessage(Task task, TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\t Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" System.out.println(String.format(\"\\t\\t %s\", task.toString()));","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" System.out.println(String.format(\"\\tNow you have %d tasks in the list.\", tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" public void printTaskDeletedMessage(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\tNoted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\t\\t\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":" public void printTaskMarkedMessage(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\tNice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\t\\t\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"timleow"},"content":" public void printTaskUnmarkedMessage(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\tOk, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\t\\t\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timleow"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timleow"},"content":" System.out.println(\"Loading error...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timleow"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"timleow"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"timleow"},"content":" public void printNotSureMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\t☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"timleow"},"content":" public void printTask(int id, Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"timleow"},"content":" System.out.println(String.format(\"\\t%d.%s\", id + 1, task.toString()));","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"timleow"},"content":" public void bidFarewell() {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":60}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import java.time.temporal.Temporal;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" private Temporal deadlineTemporal;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" private DateTimeFormatter printFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" private DateTimeFormatter saveFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" public Deadline(String name, boolean isDone, Temporal deadlineTemporal) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" this.deadlineTemporal \u003d deadlineTemporal;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" this.printFormatter \u003d deadlineTemporal instanceof LocalDateTime","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" ? DateTimeFormatter.ofPattern(\"HHmm, dd LLL, yyyy\")","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" : DateTimeFormatter.ofPattern(\"dd LLL, yyyy\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" this.saveFormatter \u003d deadlineTemporal instanceof LocalDateTime","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" ? DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" : DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" return \"[D]\" + super.toString() + String.format(\" (by: %s)\", printFormatter.format(this.deadlineTemporal));","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" public String toString(boolean isWritten) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" String completionStr \u003d super.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" return \"D\" + \" | \" + completionStr + \" | \" + super.getName() + \" | \" + saveFormatter.format(this.deadlineTemporal);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timleow":30}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":" private String eventStart;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":" private String eventEnd;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":" public Event(String name, boolean isDone, String eventStart, String eventEnd) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" this.eventStart \u003d eventStart;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" this.eventEnd \u003d eventEnd;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" return \"[E]\" + super.toString() + String.format(\" (from: %s to: %s)\", eventStart, eventEnd);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" public String toString(boolean isWritten) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" String completionStr \u003d super.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" return \"E\" + \" | \" + completionStr + \" | \" + super.getName() + \" | \" + this.eventStart + \" | \" + this.eventEnd;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timleow":21}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":" private String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":" public Task(String name, boolean isDone) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" public String getName() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" return this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" return this.isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" return this.isDone() ? \"[X]\" : \"[]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" return String.format(\"%s %s\", this.getStatusIcon(), this.getName());","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":" public String toString(boolean isWritten) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" return String.format(\"TK %s\", this.getName());","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timleow":33}},{"path":"src/main/java/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":" public ToDo(String name, boolean isDone) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" public String toString(boolean isWritten) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" String completionStr \u003d super.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" return \"T\" + \" | \" + completionStr + \" | \" + super.getName();","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timleow":15}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timleow":8}},{"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":"timleow"},"content":"java -classpath ..\\bin Duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"timleow":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"# Duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":"3. After that, locate the `src/main/java/Duke.Duke.java` file, right-click it, and choose `Run Duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"timleow":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" mainClass.set(\"Duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"timleow":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"D | 0 | return book | 2019-12-02 1800","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"D | 0 | return book | 2023-08-30","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"D | 0 | adele | 2023-12-30 1900","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"D | 0 | todo | 2023-10-10","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"T | 0 | runaway","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"E | 0 | project meeting | Mon 2pm | 4pm","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"D | 0 | read | 2019-12-02 1800","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"D | 0 | run | 2019-10-10 1000","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"T | 0 | adsfs asdf","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"T | 1 | asdf","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":"D | 0 | return book | 2024-01-01 0000","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":"E | 0 | project meeting | Mon 2pm | 4pm","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"timleow":12}},{"path":"src/main/java/Commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public class AddDeadlineCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" private Deadline deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" public AddDeadlineCommand(String deadlineName, String deadlineString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" Deadline deadline \u003d Storage.parseDeadlineFromString(deadlineName, deadlineString);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" public Deadline getDeadline() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" return this.deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" tasks.addTask(this.deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" ui.printTaskAddedMessage(this.deadline, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":23}},{"path":"src/main/java/Commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import Tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public class AddEventCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" private Event event;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" public AddEventCommand(String eventName, String eventStart, String eventEnd) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" this.event \u003d new Event(eventName, false, eventStart, eventEnd);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" public Event getEvent() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" return this.event;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" tasks.addTask(this.event);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" ui.printTaskAddedMessage(this.event, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":23}},{"path":"src/main/java/Commands/AddToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import Tasks.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public class AddToDoCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" private ToDo toDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" public AddToDoCommand(String name) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" this.toDo \u003d new ToDo(name, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" public ToDo getTodo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" return this.toDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" tasks.addTask(this.toDo);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" ui.printTaskAddedMessage(toDo, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":22}},{"path":"src/main/java/Commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public interface Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":9}},{"path":"src/main/java/Commands/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import Duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public class DeleteTaskCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" int id;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" public DeleteTaskCommand(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" this.id \u003d id;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" Task removedTask \u003d tasks.deleteTask(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" ui.printTaskDeletedMessage(removedTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\tIndex out of bounds. There are \" + tasks.getSize() + \" tasks currently.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":21}},{"path":"src/main/java/Commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"public class ExitCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" ui.bidFarewell();","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" public static boolean isExit(Command command) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" return command instanceof ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":13}},{"path":"src/main/java/Commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"public class InvalidCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" ui.printNotSureMessage();","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":9}},{"path":"src/main/java/Commands/ListTasksCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public class ListTasksCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" ui.printTask(i, task);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":15}},{"path":"src/main/java/Commands/MarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"public class MarkTaskCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" private int id;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" public MarkTaskCommand(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" this.id \u003d id;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" tasks.markTask(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" ui.printTaskMarkedMessage(tasks.getTask(id));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\tIndex out of bounds. There are \" + tasks.getSize() + \" tasks currently.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":19}},{"path":"src/main/java/Commands/UnmarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"public class UnmarkTaskCommand implements Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" private int id;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" public UnmarkTaskCommand(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" this.id \u003d id;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" tasks.unmarkTask(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" ui.printTaskUnmarkedMessage(tasks.getTask(id));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\tIndex out of bounds. There are \" + tasks.getSize() + \" tasks currently.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":19}},{"path":"src/main/java/Duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import Commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import Commands.ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import OOP.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import OOP.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"import OOP.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"import OOP.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"public class Duke {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" private String name \u003d \"WallE\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" this.tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" ui.printGreeting(this.name);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":" runCommandLoopUntilExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":" /** Reads the user command and executes it, until the user issues the bye (exit) command. */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timleow"},"content":" private void runCommandLoopUntilExitCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"timleow"},"content":" Command command \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timleow"},"content":" do {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"timleow"},"content":" String userCommandText \u003d ui.getUserCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timleow"},"content":" ui.printDivider();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timleow"},"content":" command \u003d Parser.parseCommand(userCommandText);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"timleow"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timleow"},"content":" storage.save(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timleow"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timleow"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timleow"},"content":" } finally {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"timleow"},"content":" ui.printDivider();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"timleow"},"content":" } while (!ExitCommand.isExit(command));","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"timleow":49,"-":1}},{"path":"src/main/java/Duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"public class DukeException extends RuntimeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":" public DukeException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":" super();","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":10}},{"path":"src/main/java/OOP/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package OOP;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import Commands.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import Commands.AddToDoCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Commands.AddDeadlineCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import Commands.AddEventCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"import Commands.MarkTaskCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"import Commands.UnmarkTaskCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"import Commands.DeleteTaskCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"import Commands.InvalidCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":"import Commands.ListTasksCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":"import Commands.ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":"import Duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" public static Command parseCommand(String userCommandText) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" if (!userCommandText.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" if (!userCommandText.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" String[] inputWords \u003d userCommandText.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" int id;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" switch (inputWords[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" String todoName \u003d extractSecondWordOnwards(userCommandText);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" if (todoName.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\tEmpty Description\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" return new AddToDoCommand(todoName);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" String[] twoParts \u003d userCommandText.split (\"/by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":" String deadlineName \u003d extractSecondWordOnwards(twoParts[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" if (deadlineName.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\tEmpty Description\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":" } else if (twoParts.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\tUsage: deadline {taskName} /by {yyyy-MM-dd HHmm}\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timleow"},"content":" String deadlineString \u003d twoParts[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"timleow"},"content":" return new AddDeadlineCommand(deadlineName, deadlineString);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"timleow"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timleow"},"content":" String[] threeParts \u003d userCommandText.split (\"/\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timleow"},"content":" String eventName \u003d extractSecondWordOnwards(threeParts[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timleow"},"content":" if (eventName.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\tEmpty Description\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"timleow"},"content":" if (threeParts.length !\u003d 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\tIncorrect format for event.\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"timleow"},"content":" \"\\n\\tExpected usage: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"timleow"},"content":" \"event {eventName} /from {eventStart} /to {eventEnd}\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"timleow"},"content":" String eventStart \u003d extractSecondWordOnwards(threeParts[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"timleow"},"content":" String eventEnd \u003d extractSecondWordOnwards(threeParts[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"timleow"},"content":" if (eventStart.length() \u003d\u003d 0 || eventEnd.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\tBoth event start and end date times must be specified.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"timleow"},"content":" return new AddEventCommand(eventName, eventStart, eventEnd);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"timleow"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"timleow"},"content":" id \u003d Integer.valueOf(inputWords[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"timleow"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\tExpected usage: mark {id}\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"timleow"},"content":" return new MarkTaskCommand(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"timleow"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"timleow"},"content":" id \u003d Integer.valueOf(inputWords[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"timleow"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\tExpected usage: unmark {id}\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"timleow"},"content":" return new UnmarkTaskCommand(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"timleow"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"timleow"},"content":" id \u003d Integer.valueOf(inputWords[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"timleow"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\tExpected usage: delete {id}\");","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"timleow"},"content":" return new DeleteTaskCommand(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"timleow"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"timleow"},"content":" return new InvalidCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"timleow"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"timleow"},"content":" return new ListTasksCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"timleow"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"timleow"},"content":" public static String extractSecondWordOnwards(String str) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"timleow"},"content":" String[] wordArray \u003d str.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"timleow"},"content":" String secondWordOnwards \u003d wordArray.length \u003e\u003d 2 ? wordArray[1] : \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"timleow"},"content":" for (int i \u003d 2; i \u003c wordArray.length; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"timleow"},"content":" secondWordOnwards +\u003d \" \" + wordArray[i];","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"timleow"},"content":" return secondWordOnwards;","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":97}},{"path":"src/main/java/OOP/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package OOP;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import Tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import Tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import Tasks.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":"import Duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" BufferedWriter writer \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":" writer \u003d new BufferedWriter(new FileWriter(this.filePath));","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timleow"},"content":" for (Task task : tasks.getTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"timleow"},"content":" writer.write(task.toString(true));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timleow"},"content":" writer.newLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"timleow"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timleow"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timleow"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timleow"},"content":" // Make sure to close the writer in the finally block","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timleow"},"content":" if (writer !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timleow"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timleow"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timleow"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"timleow"},"content":" public List\u003cTask\u003e load() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"timleow"},"content":" String directoryPath \u003d filePath.split(\"/\")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"timleow"},"content":" BufferedReader reader \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"timleow"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"timleow"},"content":" // Create the directory if it doesn\u0027t exist","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"timleow"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"timleow"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"timleow"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"timleow"},"content":" // Create the file if it doesn\u0027t exist","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"timleow"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"timleow"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"timleow"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"timleow"},"content":" reader \u003d new BufferedReader(new FileReader(filePath));","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"timleow"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"timleow"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"timleow"},"content":" // Assuming each line contains task information, parse and create tasks accordingly","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"timleow"},"content":" Task task \u003d parseTaskFromString(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"timleow"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"timleow"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"timleow"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"timleow"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"timleow"},"content":" // Make sure to close the reader in the finally block","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"timleow"},"content":" if (reader !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"timleow"},"content":" reader.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"timleow"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"timleow"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"timleow"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"timleow"},"content":" public static Task parseTaskFromString(String line) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"timleow"},"content":" String[] taskData \u003d line.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"timleow"},"content":" boolean isDone \u003d taskData[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"timleow"},"content":" switch (taskData[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"timleow"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"timleow"},"content":" ToDo todo \u003d new ToDo(taskData[2], isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"timleow"},"content":" return todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"timleow"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"timleow"},"content":" return parseDeadlineFromString(taskData[2], taskData[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"timleow"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"timleow"},"content":" Event event \u003d new Event(taskData[2], isDone, taskData[3], taskData[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"timleow"},"content":" return event;","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"timleow"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"timleow"},"content":" public static Deadline parseDeadlineFromString(String name, String deadlineString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"timleow"},"content":" DateTimeFormatter formatter \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"timleow"},"content":" Deadline deadline \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"timleow"},"content":" if (isValidDate(deadlineString)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"timleow"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"timleow"},"content":" LocalDate parsedDeadlineDate \u003d LocalDate.parse(deadlineString, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"timleow"},"content":" deadline \u003d new Deadline(name, false, parsedDeadlineDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"timleow"},"content":" } else if (isValidDateTime(deadlineString)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"timleow"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"timleow"},"content":" LocalDateTime parsedDeadlineDateTime \u003d LocalDateTime.parse(deadlineString, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"timleow"},"content":" deadline \u003d new Deadline(name, false, parsedDeadlineDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"timleow"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"timleow"},"content":" throw new DukeException(\"\\t Invalid deadline format. \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"timleow"},"content":" \"\\n\\tExpected format for deadline (time is optional):\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"timleow"},"content":" \"\\n\\t deadline {deadlineName} /by yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"timleow"},"content":" return deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"timleow"},"content":" private static boolean isValidDate(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"timleow"},"content":" Pattern pattern \u003d Pattern.compile(\"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\");","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"timleow"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"timleow"},"content":" return matcher.matches();","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"timleow"},"content":" private static boolean isValidDateTime(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"timleow"},"content":" Pattern pattern \u003d Pattern.compile(\"^\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{4}$\");","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"timleow"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"timleow"},"content":" return matcher.matches();","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":139}},{"path":"src/main/java/OOP/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package OOP;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" public Task getTask(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" return tasks.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" public Task deleteTask(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" return this.tasks.remove(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" public void markTask(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":" this.getTask(id).markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timleow"},"content":" public void unmarkTask(int id) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"timleow"},"content":" this.getTask(id).markAsUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timleow"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timleow"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timleow"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timleow"},"content":" return this.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":48}},{"path":"src/main/java/OOP/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package OOP;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" public String getUserCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" public void printDivider() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" System.out.println(\u0027\\t\u0027 + \"_________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" public void printGreeting(String name) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" printDivider();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\tHello! I\u0027m \" + name + \"!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" printDivider();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" public void printTaskAddedMessage(Task task, TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\t Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" System.out.println(String.format(\"\\t\\t %s\", task.toString()));","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" System.out.println(String.format(\"\\tNow you have %d tasks in the list.\", tasks.getSize()));","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" public void printTaskDeletedMessage(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\tNoted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\t\\t\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":" public void printTaskMarkedMessage(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\tNice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\t\\t\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"timleow"},"content":" public void printTaskUnmarkedMessage(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\tOk, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\t\\t\" + task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"timleow"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"timleow"},"content":" System.out.println(\"Loading error...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"timleow"},"content":" public void showError(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"timleow"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"timleow"},"content":" public void printNotSureMessage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\t☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"timleow"},"content":" public void printTask(int id, Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"timleow"},"content":" System.out.println(String.format(\"\\t%d.%s\", id + 1, task.toString()));","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"timleow"},"content":" public void bidFarewell() {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"timleow"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"timleow":60}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import java.time.temporal.Temporal;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" private Temporal deadlineTemporal;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" private DateTimeFormatter printFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" private DateTimeFormatter saveFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" public Deadline(String name, boolean isDone, Temporal deadlineTemporal) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" this.deadlineTemporal \u003d deadlineTemporal;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" this.printFormatter \u003d deadlineTemporal instanceof LocalDateTime","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" ? DateTimeFormatter.ofPattern(\"HHmm, dd LLL, yyyy\")","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" : DateTimeFormatter.ofPattern(\"dd LLL, yyyy\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" this.saveFormatter \u003d deadlineTemporal instanceof LocalDateTime","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" ? DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" : DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" return \"[D]\" + super.toString() + String.format(\" (by: %s)\", printFormatter.format(this.deadlineTemporal));","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" public String toString(boolean isWritten) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" String completionStr \u003d super.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" return \"D\" + \" | \" + completionStr + \" | \" + super.getName() + \" | \" + saveFormatter.format(this.deadlineTemporal);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timleow":30}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":" private String eventStart;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":" private String eventEnd;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":" public Event(String name, boolean isDone, String eventStart, String eventEnd) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" this.eventStart \u003d eventStart;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" this.eventEnd \u003d eventEnd;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" return \"[E]\" + super.toString() + String.format(\" (from: %s to: %s)\", eventStart, eventEnd);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" public String toString(boolean isWritten) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" String completionStr \u003d super.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" return \"E\" + \" | \" + completionStr + \" | \" + super.getName() + \" | \" + this.eventStart + \" | \" + this.eventEnd;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timleow":21}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":" private String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":" public Task(String name, boolean isDone) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" public String getName() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" return this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" return this.isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" return this.isDone() ? \"[X]\" : \"[]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" return String.format(\"%s %s\", this.getStatusIcon(), this.getName());","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":" public String toString(boolean isWritten) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" return String.format(\"TK %s\", this.getName());","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timleow":33}},{"path":"src/main/java/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package Tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":" public ToDo(String name, boolean isDone) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":" public String toString(boolean isWritten) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":" String completionStr \u003d super.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":" return \"T\" + \" | \" + completionStr + \" | \" + super.getName();","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timleow":15}},{"path":"src/test/java/OOP/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package OOP; //same package as the class being tested","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import Commands.AddDeadlineCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import Commands.AddEventCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Commands.AddToDoCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import Commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"import Commands.DeleteTaskCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"import Commands.ExitCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"import Commands.InvalidCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"import Commands.ListTasksCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":"import Commands.MarkTaskCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":"import Commands.UnmarkTaskCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":"import Tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":"import Tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":"import Tasks.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":" public void parseCommand_addToDoCommand_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":" // this casting is safe since we are expecting the command to give us a grocery shopping ToDo","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":" AddToDoCommand command \u003d (AddToDoCommand) Parser.parseCommand(\"todo grocery shopping\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":" ToDo toDo \u003d command.getTodo();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" assertEquals(\"grocery shopping\",toDo.getName());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" assertEquals(false, toDo.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" public void parseCommand_addDeadlineCommand_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":" // this casting is safe since we are expecting the command to give us a AddDeadlineCommand","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":" AddDeadlineCommand command \u003d (AddDeadlineCommand) Parser.parseCommand(\"deadline return book /by 2024-01-01 0000\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"timleow"},"content":" Deadline deadline \u003d command.getDeadline();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"timleow"},"content":" assertEquals(\"return book\", deadline.getName());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"timleow"},"content":" assertEquals(false, deadline.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"timleow"},"content":" assertEquals(\"[D][] return book (by: 0000, 01 Jan, 2024)\", deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"timleow"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"timleow"},"content":" public void parseCommand_addEventCommand_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"timleow"},"content":" // this casting is safe since we are expecting the command to give us a AddEventCommand","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"timleow"},"content":" AddEventCommand command \u003d (AddEventCommand) Parser.parseCommand(\"event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"timleow"},"content":" Event event \u003d command.getEvent();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"timleow"},"content":" assertEquals(\"project meeting\", event.getName());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"timleow"},"content":" assertEquals(false, event.isDone());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"timleow"},"content":" assertEquals(\"[E][] project meeting (from: Mon 2pm to: 4pm)\", event.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"timleow"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"timleow"},"content":" public void parseCommand_markTaskCommand_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"timleow"},"content":" Parser.parseCommand(\"todo dummyTask\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"timleow"},"content":" Command command \u003d Parser.parseCommand(\"mark 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"timleow"},"content":" assertEquals(true, command instanceof MarkTaskCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"timleow"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"timleow"},"content":" public void parseCommand_unmarkTaskCommand_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"timleow"},"content":" Parser.parseCommand(\"todo dummyTask\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"timleow"},"content":" Command command \u003d Parser.parseCommand(\"unmark 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"timleow"},"content":" assertEquals(true, command instanceof UnmarkTaskCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"timleow"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"timleow"},"content":" public void parseCommand_deleteTaskCommand_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"timleow"},"content":" Parser.parseCommand(\"todo dummyTask\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"timleow"},"content":" Command command \u003d Parser.parseCommand(\"delete 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"timleow"},"content":" assertEquals(true, command instanceof DeleteTaskCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"timleow"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"timleow"},"content":" public void parseCommand_invalidCommand_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"timleow"},"content":" Command command \u003d Parser.parseCommand(\"asdf\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"timleow"},"content":" assertEquals(true, command instanceof InvalidCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"timleow"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"timleow"},"content":" public void parseCommand_listTasksCommand_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"timleow"},"content":" Command command \u003d Parser.parseCommand(\"list\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"timleow"},"content":" assertEquals(true, command instanceof ListTasksCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"timleow"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"timleow"},"content":" public void parseCommand_exitCommand_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"timleow"},"content":" Command command \u003d Parser.parseCommand(\"bye\");","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"timleow"},"content":" assertEquals(true, command instanceof ExitCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"timleow"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"timleow"},"content":" public void parseCommand_emptyDescription_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"timleow"},"content":" assertEquals(new InvalidCommand(), Parser.parseCommand(\"todo\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"timleow"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"timleow"},"content":" assertEquals(\"\\tEmpty Description\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"timleow"},"content":" assertEquals( new InvalidCommand(), Parser.parseCommand(\"deadline\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"timleow"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"timleow"},"content":" assertEquals(\"\\tEmpty Description\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"timleow"},"content":" assertEquals(new InvalidCommand(), Parser.parseCommand(\"event\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"timleow"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"timleow"},"content":" assertEquals(\"\\tEmpty Description\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"timleow":100}},{"path":"src/test/java/OOP/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"package OOP; //same package as the class being tested","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"import Tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"import Tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"import Tasks.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"timleow"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"timleow"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"timleow"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"timleow"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"timleow"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"timleow"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"timleow"},"content":"import java.time.Month;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"timleow"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"timleow"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"timleow"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"timleow"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"timleow"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"timleow"},"content":" private static final String TEST_STORAGE_FILE_PATH \u003d \"data/test.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"timleow"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"timleow"},"content":" void setUp() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"timleow"},"content":" // Create a dummy file with the specified content","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"timleow"},"content":" try (FileWriter writer \u003d new FileWriter(TEST_STORAGE_FILE_PATH)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"timleow"},"content":" writer.write(\"D | 0 | return book | 2019-12-02 1800\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"timleow"},"content":" writer.write(\"T | 0 | runaway\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"timleow"},"content":" writer.write(\"E | 0 | project meeting | Mon 2pm | 4pm\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"timleow"},"content":" @AfterEach","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"timleow"},"content":" void tearDown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"timleow"},"content":" // Clean up: delete the temporary file if it wasn\u0027t deleted in the test","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"timleow"},"content":" File tempFile \u003d new File(TEST_STORAGE_FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"timleow"},"content":" if (tempFile.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"timleow"},"content":" tempFile.delete();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"timleow"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"timleow"},"content":" public void load_correctTaskFormat_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"timleow"},"content":" List\u003cTask\u003e tasks \u003d new Storage(TEST_STORAGE_FILE_PATH).load();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"timleow"},"content":" assertEquals(\"[D][] return book (by: 1800, 02 Dec, 2019)\", tasks.get(0).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"timleow"},"content":" assertEquals(\"[T][] runaway\", tasks.get(1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"timleow"},"content":" assertEquals(\"[E][] project meeting (from: Mon 2pm to: 4pm)\", tasks.get(2).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"timleow"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"timleow"},"content":" public void save_correctTaskFormat_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"timleow"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"timleow"},"content":" tasks.add(new ToDo(\"CS2103T Homework\", false));","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"timleow"},"content":" tasks.add(new Deadline(\"CS2101 Presentation\", false, LocalDateTime.of(2023, Month.OCTOBER, 10, 10, 0)));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"timleow"},"content":" tasks.add(new Event(\"Polling day\", false, \"1 Sep 2023 8am\", \"8pm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"timleow"},"content":" new Storage(TEST_STORAGE_FILE_PATH).save(new TaskList(tasks));","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"timleow"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"timleow"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(Paths.get(TEST_STORAGE_FILE_PATH));","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"timleow"},"content":" assertEquals(\"T | 0 | CS2103T Homework\",lines.get(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"timleow"},"content":" assertEquals(\"D | 0 | CS2101 Presentation | 2023-10-10 1000\",lines.get(1));","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"timleow"},"content":" assertEquals(\"E | 0 | Polling day | 1 Sep 2023 8am | 8pm\",lines.get(2));","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"timleow"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"timleow"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"timleow"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"timleow"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"timleow"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"timleow":68}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"timleow"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"timleow"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"timleow"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"timleow"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"timleow"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"timleow"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"timleow"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"timleow"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"timleow":8}},{"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":"timleow"},"content":"java -classpath ..\\bin Duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"timleow":1,"-":20}}] diff --git a/timleow_ip_master/commits.json b/timleow_ip_master/commits.json index 946eb205..1f9d61b9 100644 --- a/timleow_ip_master/commits.json +++ b/timleow_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"timleow":[{"date":"2023-08-23","commitResults":[{"hash":"bf67025352c6e90ad5561ac1cf0c746964991fd9","isMergeCommit":false,"messageTitle":"First commit, level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"bcf49751ffacdefd16bc497748f1aa036472f8d8","isMergeCommit":false,"messageTitle":"Level-1 Bot, echoes input until bye is said","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":6}}},{"hash":"0d7301f557f89c7f54e85bba24d59f0e499d3a67","isMergeCommit":false,"messageTitle":"Level 2 bot: saves input to a list that can be printed out on request","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"a57d3d522f518326d3629be350f6d1a398226551","isMergeCommit":false,"messageTitle":"Can mark tasks as done and undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"34bbe8d1404d9a56ba885ceb5854326a6e697c2e","isMergeCommit":false,"messageTitle":"Events, Deadlines and Tasks are now implemented","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":49}}},{"hash":"fdc71f8e26b7414be83a280226c853711fc1258f","isMergeCommit":false,"messageTitle":"I/O testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"18bed1ef6625b8595bb169671f5b40bb140a2d5e","isMergeCommit":false,"messageTitle":"Error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":17}}},{"hash":"bbf64495c840d1b96c09e1c60e7ce773107943df","isMergeCommit":false,"messageTitle":"Implemented delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"14fffb7cb53ded581398fd8fa4e957145666adfc","isMergeCommit":false,"messageTitle":"Implement saving and loading of tasks","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":142,"deletions":17}}},{"hash":"36d9fbc2e1c164efcb89d25345c42fa556a17c06","isMergeCommit":false,"messageTitle":"Implement deadline LocalDate and LocalDateTime processing","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":75,"deletions":27}}}]},{"date":"2023-08-31","commitResults":[{"hash":"4368967c631ab0e4f14f14e052cf1167fe9e057d","isMergeCommit":false,"messageTitle":"Refactor code for more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":445,"deletions":275}}},{"hash":"5f60201151ede92e9c2a04101cbfb93596a7f92a","isMergeCommit":false,"messageTitle":"Move java files into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":107,"deletions":5},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"ef9097ae8010a5986caf30ed3e740ad5267c72b9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"* master:\n Move java files into packages\n Refactor code for more OOP\n Implement deadline LocalDate and LocalDateTime processing\n Implement saving and loading of tasks\n Implemented delete\n Error handling\n I/O testing\n Events, Deadlines and Tasks are now implemented\n Can mark tasks as done and undone\n Level 2 bot: saves input to a list that can be printed out on request\n Level-1 Bot, echoes input until bye is said\n First commit, level 0\n","fileTypesAndContributionMap":{}},{"hash":"f1aa820d5a697d2d1192ceb58ec70e95a3b1d397","isMergeCommit":false,"messageTitle":"Merge master (up to A-MoreOOP) into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":1}}},{"hash":"5192ff49121ab7221eeb502e37c0834207c641a9","isMergeCommit":false,"messageTitle":"Add gradle support to master","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"timleow":{"java":649,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":16}},"authorContributionVariance":{"timleow":47694.637},"authorDisplayNameMap":{"timleow":"CS2103T-T08-3 LEOW..OTHY"}} +{"authorDailyContributionsMap":{"timleow":[{"date":"2023-08-23","commitResults":[{"hash":"bf67025352c6e90ad5561ac1cf0c746964991fd9","isMergeCommit":false,"messageTitle":"First commit, level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"bcf49751ffacdefd16bc497748f1aa036472f8d8","isMergeCommit":false,"messageTitle":"Level-1 Bot, echoes input until bye is said","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":6}}},{"hash":"0d7301f557f89c7f54e85bba24d59f0e499d3a67","isMergeCommit":false,"messageTitle":"Level 2 bot: saves input to a list that can be printed out on request","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"a57d3d522f518326d3629be350f6d1a398226551","isMergeCommit":false,"messageTitle":"Can mark tasks as done and undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"34bbe8d1404d9a56ba885ceb5854326a6e697c2e","isMergeCommit":false,"messageTitle":"Events, Deadlines and Tasks are now implemented","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":49}}},{"hash":"fdc71f8e26b7414be83a280226c853711fc1258f","isMergeCommit":false,"messageTitle":"I/O testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"18bed1ef6625b8595bb169671f5b40bb140a2d5e","isMergeCommit":false,"messageTitle":"Error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":17}}},{"hash":"bbf64495c840d1b96c09e1c60e7ce773107943df","isMergeCommit":false,"messageTitle":"Implemented delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"14fffb7cb53ded581398fd8fa4e957145666adfc","isMergeCommit":false,"messageTitle":"Implement saving and loading of tasks","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":142,"deletions":17}}},{"hash":"36d9fbc2e1c164efcb89d25345c42fa556a17c06","isMergeCommit":false,"messageTitle":"Implement deadline LocalDate and LocalDateTime processing","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":75,"deletions":27}}}]},{"date":"2023-08-31","commitResults":[{"hash":"4368967c631ab0e4f14f14e052cf1167fe9e057d","isMergeCommit":false,"messageTitle":"Refactor code for more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":445,"deletions":275}}},{"hash":"5f60201151ede92e9c2a04101cbfb93596a7f92a","isMergeCommit":false,"messageTitle":"Move java files into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":107,"deletions":5},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"ef9097ae8010a5986caf30ed3e740ad5267c72b9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"* master:\n Move java files into packages\n Refactor code for more OOP\n Implement deadline LocalDate and LocalDateTime processing\n Implement saving and loading of tasks\n Implemented delete\n Error handling\n I/O testing\n Events, Deadlines and Tasks are now implemented\n Can mark tasks as done and undone\n Level 2 bot: saves input to a list that can be printed out on request\n Level-1 Bot, echoes input until bye is said\n First commit, level 0\n","fileTypesAndContributionMap":{}},{"hash":"f1aa820d5a697d2d1192ceb58ec70e95a3b1d397","isMergeCommit":false,"messageTitle":"Merge master (up to A-MoreOOP) into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":1}}},{"hash":"5192ff49121ab7221eeb502e37c0834207c641a9","isMergeCommit":false,"messageTitle":"Add gradle support to master","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2}}},{"hash":"ee72a4ca5a84a99288d87f98b1f7102516423b51","isMergeCommit":false,"messageTitle":"Add Junit tests for Storage and Parser","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":246,"deletions":52}}}]}]},"authorFileTypeContributionMap":{"timleow":{"java":843,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":20}},"authorContributionVariance":{"timleow":49651.047},"authorDisplayNameMap":{"timleow":"CS2103T-T08-3 LEOW..OTHY"}} diff --git a/tiongMax_ip_master/authorship.json b/tiongMax_ip_master/authorship.json index 5d1a17f2..988e7c84 100644 --- a/tiongMax_ip_master/authorship.json +++ b/tiongMax_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"InvalidFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"public class InvalidFormatException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":" return \"Wrong format\";","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tiongMax":7}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"D/ /try/2019-12-02T19:00","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"E/ /return/2019-12-02T19:00/2019-12-03T19:00","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"D/ /asdf/2001-01-31T10:00","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"D/ /asdf/2019-12-02T19:00","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"D/ /asdf/2019-12-02T19:00","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"E/ /re5/2019-12-02T19:00/2019-12-01T19:00","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"D/ /asdf/2029-05-03T20:29","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tiongMax":7}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":" protected LocalDateTime dueDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" public Deadline(String description, boolean isDone, LocalDateTime dueDate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" public String contentLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" return \"D\" + super.contentLine() + \"/\" + this.dueDate.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"[D]\" + super.toString() + \" (by: \" + formatDate(this.dueDate) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":" return result;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":" public String formatDate(LocalDateTime l) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":" return l.format(DateTimeFormatter.ofPattern(\"dd/MMM/yyyy HH:mm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":29}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" public static String dash \u003d \"\\t---------------------------------------------------------------------------\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" public static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" public static void welcomeMessage() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":" String logo \u003d \"\\t ____ _ \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" + \"\\t| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" + \"\\t| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" + \"\\t| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":" + \"\\t|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tHello from\\n\" + logo);","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t Hello! I\u0027m YOLO \\n\\t What can I do for you? \\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"tiongMax"},"content":" processFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"tiongMax"},"content":" public static void farewell() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t Bye. Hope to see you again soon! \\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"tiongMax"},"content":" public static void listAllTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tHere \" + (taskList.size() \u003e 1 ? \"are\" : \"is\") +","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"tiongMax"},"content":" \" the \" + (taskList.size() \u003e 1 ? \"tasks\" : \"task\") + \" in your list: \");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"tiongMax"},"content":" if (taskList.size() \u003e 0) {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"tiongMax"},"content":" for (int i \u003d 1; i \u003c taskList.size() + 1; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t\" + i + \".\" + taskList.get(i - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"tiongMax"},"content":" public static void mark(int i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"tiongMax"},"content":" taskList.get(i - 1).mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"tiongMax"},"content":" System.out.println(\" \\tNice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t \" + taskList.get(i - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"tiongMax"},"content":" writeInto();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"tiongMax"},"content":" public static void unmark(int i) {","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"tiongMax"},"content":" taskList.get(i - 1).unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"tiongMax"},"content":" System.out.println(\" \\tOk! I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t \" + taskList.get(i - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"tiongMax"},"content":" writeInto();","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"tiongMax"},"content":" public static void addTodo(String message) throws UnmatchedArgumentException {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tGot it. I\u0027ve added this task: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"tiongMax"},"content":" Task todo \u003d new Todo(message, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tiongMax"},"content":" taskList.add(todo);","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t \" + todo);","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tNow you have \" + taskList.size() + (taskList.size() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"tiongMax"},"content":" writeInto();","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"tiongMax"},"content":" public static void addDeadline(String message) throws UnmatchedArgumentException {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"tiongMax"},"content":" String[] arr \u003d message.split(\" /\");","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"tiongMax"},"content":" if (arr.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"tiongMax"},"content":" throw new UnmatchedArgumentException(arr.length, 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"tiongMax"},"content":" String dateAndTime \u003d arr[1].substring(3).replace(\" \", \"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"tiongMax"},"content":" Deadline dl \u003d new Deadline(arr[0], false, checkDateAndTime(dateAndTime));","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"tiongMax"},"content":" taskList.add(dl);","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tGot it. I\u0027ve added this task: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t \" + dl);","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tNow you have \" + taskList.size() + (taskList.size() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"tiongMax"},"content":" writeInto();","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"tiongMax"},"content":" public static void addEvent(String message) throws UnmatchedArgumentException {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"tiongMax"},"content":" String[] arr \u003d message.split(\" /\");","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"tiongMax"},"content":" if (arr.length \u003c 3) {","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"tiongMax"},"content":" throw new UnmatchedArgumentException(arr.length, 3);","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"tiongMax"},"content":" LocalDateTime start \u003d checkDateAndTime(arr[1].substring(5).replace(\" \", \"/\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"tiongMax"},"content":" LocalDateTime end \u003d checkDateAndTime(arr[2].substring(3).replace(\" \", \"/\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"tiongMax"},"content":" if (end.isBefore(start) || end.isEqual(start)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"tiongMax"},"content":" throw new DateTimeException(\"The end is date should not be earlier or the same as the start date.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"tiongMax"},"content":" Event e \u003d new Event(arr[0], false, start, end);","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"tiongMax"},"content":" taskList.add(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tGot it. I\u0027ve added this task: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t \" + e);","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tNow you have \" + taskList.size() + (taskList.size() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"tiongMax"},"content":" writeInto();","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"tiongMax"},"content":" public static void delete(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tNoted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t \" + taskList.get(index - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"tiongMax"},"content":" taskList.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tNow that you have \" + taskList.size() + (taskList.size() \u003c 2 ? \" task\" : \" tasks\") + \" in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"tiongMax"},"content":" writeInto();","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"tiongMax"},"content":" public static void processFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"tiongMax"},"content":" Path relativePath \u003d Paths.get(\"data\", \"duke.txt\"); // does it create a file with provided string or ...?","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"tiongMax"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"tiongMax"},"content":" if (Files.exists(relativePath)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"tiongMax"},"content":" List\u003cString\u003e content \u003d Files.readAllLines(relativePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"tiongMax"},"content":" if (content.size() \u003e 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"tiongMax"},"content":" for (String line : content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"tiongMax"},"content":" processLines(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"tiongMax"},"content":" } // else no task yet","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"tiongMax"},"content":" Files.createFile(relativePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"tiongMax"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"tiongMax"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"tiongMax"},"content":" } catch (Exception e) { // catch for wrong format or corrupted file","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"tiongMax"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"tiongMax"},"content":" public static void writeInto() {","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"tiongMax"},"content":" Path relativePath \u003d Paths.get(\"data\", \"duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"tiongMax"},"content":" ArrayList\u003cString\u003e content \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"tiongMax"},"content":" for (Task t : taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"tiongMax"},"content":" content.add(t.contentLine());","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"tiongMax"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"tiongMax"},"content":" Files.write(relativePath, content);","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"tiongMax"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t\" + e);","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"tiongMax"},"content":" public static void processLines(String line) throws Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"tiongMax"},"content":" String[] taskArr \u003d line.split(\"/\");","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"tiongMax"},"content":" switch (taskArr[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"tiongMax"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"tiongMax"},"content":" taskList.add(new Todo(taskArr[2], !taskArr[1].isBlank()));","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"tiongMax"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"tiongMax"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"tiongMax"},"content":" taskList.add(new Deadline(taskArr[2], !taskArr[1].isBlank(), processDateAndLine(taskArr[3])));","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"tiongMax"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"tiongMax"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"tiongMax"},"content":" taskList.add(new Event(taskArr[2], !taskArr[1].isBlank(), processDateAndLine(taskArr[3]),","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"tiongMax"},"content":" processDateAndLine(taskArr[4])));","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"tiongMax"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"tiongMax"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"tiongMax"},"content":" throw new Exception(\"Some of the content is not in the correct format or it is corrupted\");","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"tiongMax"},"content":" public static LocalDateTime checkDateAndTime(String dateAndTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"tiongMax"},"content":" String[] dateSplit \u003d dateAndTime.split(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"tiongMax"},"content":" if (dateSplit[dateSplit.length - 1].length() \u003c 8) {","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"tiongMax"},"content":" throw new DateTimeException(\"Please enter the time.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"tiongMax"},"content":" int hr \u003d Integer.parseInt(dateSplit[dateSplit.length - 1].substring(0, 2));","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"tiongMax"},"content":" int min \u003d Integer.parseInt(dateSplit[dateSplit.length - 1].substring(2));","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"tiongMax"},"content":" return LocalDateTime.of(Integer.parseInt(dateSplit[2]), Integer.parseInt(dateSplit[1]),","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"tiongMax"},"content":" Integer.parseInt(dateSplit[0]), hr, min);","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"tiongMax"},"content":" public static LocalDateTime processDateAndLine(String dateAndTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"tiongMax"},"content":" dateAndTime \u003d dateAndTime.replace(\"T\", \"-\").replace(\":\", \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"tiongMax"},"content":" String[] split \u003d dateAndTime.split(\"-\");","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"tiongMax"},"content":" int hr \u003d Integer.parseInt(split[split.length - 1].substring(0, 2));","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"tiongMax"},"content":" int min \u003d Integer.parseInt(split[split.length - 1].substring(2));","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"tiongMax"},"content":" return LocalDateTime.of(Integer.parseInt(split[0]), Integer.parseInt(split[1]),","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"tiongMax"},"content":" Integer.parseInt(split[2]), hr, min);","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"tiongMax"},"content":" public static void checkTaskDue(String dueDate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"tiongMax"},"content":" ArrayList\u003cTask\u003e dueDateList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"tiongMax"},"content":" LocalDateTime date \u003d checkDateAndTime(dueDate.replace(\" \", \"/\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"tiongMax"},"content":" for (Task t : taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"tiongMax"},"content":" if (t instanceof Deadline \u0026\u0026","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"tiongMax"},"content":" ((Deadline) t).dueDate.isEqual(date)){","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"tiongMax"},"content":" dueDateList.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"tiongMax"},"content":" } else if (t instanceof Event \u0026\u0026","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"tiongMax"},"content":" (((Event) t).start.isEqual(date) ||","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"tiongMax"},"content":" ((Event) t).end.isEqual(date))) {","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"tiongMax"},"content":" dueDateList.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tHere are the \" + (dueDateList.size() \u003e 1 ? \"tasks that contain\" : \"task that contains\")","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"tiongMax"},"content":" + \" the date:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"tiongMax"},"content":" for (Task t : dueDateList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t\\t\" + t);","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":244,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":245,"author":{"gitId":"tiongMax"},"content":" welcomeMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"tiongMax"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":247,"author":{"gitId":"tiongMax"},"content":" String message \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":248,"author":{"gitId":"tiongMax"},"content":" String[] splitted \u003d message.split(\" \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":249,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":250,"author":{"gitId":"tiongMax"},"content":" while (!splitted[0].equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":251,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":252,"author":{"gitId":"tiongMax"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"tiongMax"},"content":" if (splitted[0].equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":254,"author":{"gitId":"tiongMax"},"content":" listAllTask();","lastModifiedDate":"2023-08-23"},{"lineNumber":255,"author":{"gitId":"tiongMax"},"content":" } else if (splitted[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":256,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"tiongMax"},"content":" if (splitted.length \u003e 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":258,"author":{"gitId":"tiongMax"},"content":" int index \u003d Integer.parseInt(splitted[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":259,"author":{"gitId":"tiongMax"},"content":" if (index \u003e 0 \u0026\u0026 index \u003c\u003d taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":260,"author":{"gitId":"tiongMax"},"content":" mark(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":261,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":262,"author":{"gitId":"tiongMax"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-08-24"},{"lineNumber":263,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":265,"author":{"gitId":"tiongMax"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-08-24"},{"lineNumber":266,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":267,"author":{"gitId":"tiongMax"},"content":" } else if (splitted[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":268,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":269,"author":{"gitId":"tiongMax"},"content":" if (splitted.length \u003e 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":270,"author":{"gitId":"tiongMax"},"content":" int index \u003d Integer.parseInt(splitted[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":271,"author":{"gitId":"tiongMax"},"content":" if (index \u003e 0 \u0026\u0026 index \u003c\u003d taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":272,"author":{"gitId":"tiongMax"},"content":" delete(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":273,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":274,"author":{"gitId":"tiongMax"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-08-24"},{"lineNumber":275,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":276,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":277,"author":{"gitId":"tiongMax"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-08-24"},{"lineNumber":278,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":279,"author":{"gitId":"tiongMax"},"content":" } else if (splitted[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":280,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":281,"author":{"gitId":"tiongMax"},"content":" if (splitted.length \u003e 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":282,"author":{"gitId":"tiongMax"},"content":" int index \u003d Integer.parseInt(splitted[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":283,"author":{"gitId":"tiongMax"},"content":" if (index \u003e 0 \u0026\u0026 index \u003c\u003d taskList.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":284,"author":{"gitId":"tiongMax"},"content":" unmark(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":286,"author":{"gitId":"tiongMax"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-08-24"},{"lineNumber":287,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":288,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":289,"author":{"gitId":"tiongMax"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-08-30"},{"lineNumber":290,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":291,"author":{"gitId":"tiongMax"},"content":" } else if (splitted[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":292,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":293,"author":{"gitId":"tiongMax"},"content":" if (splitted.length \u003e 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":294,"author":{"gitId":"tiongMax"},"content":" addTodo(splitted[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":295,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":296,"author":{"gitId":"tiongMax"},"content":" throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2023-08-30"},{"lineNumber":297,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":298,"author":{"gitId":"tiongMax"},"content":" } else if (splitted[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":299,"author":{"gitId":"tiongMax"},"content":" if (splitted.length \u003e 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":300,"author":{"gitId":"tiongMax"},"content":" addDeadline(splitted[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":301,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":302,"author":{"gitId":"tiongMax"},"content":" throw new EmptyDescriptionException(\"deadline\");","lastModifiedDate":"2023-08-30"},{"lineNumber":303,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":304,"author":{"gitId":"tiongMax"},"content":" } else if (splitted[0].equals(\"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":305,"author":{"gitId":"tiongMax"},"content":" if (splitted.length \u003e 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":306,"author":{"gitId":"tiongMax"},"content":" addEvent(splitted[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":307,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":308,"author":{"gitId":"tiongMax"},"content":" throw new EmptyDescriptionException(\"event\");","lastModifiedDate":"2023-08-30"},{"lineNumber":309,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":310,"author":{"gitId":"tiongMax"},"content":" } else if (splitted[0].equals(\"due\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":311,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":312,"author":{"gitId":"tiongMax"},"content":" if (splitted.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":313,"author":{"gitId":"tiongMax"},"content":" checkTaskDue(splitted[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":314,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":315,"author":{"gitId":"tiongMax"},"content":" throw new EmptyDescriptionException(\"due\");","lastModifiedDate":"2023-09-01"},{"lineNumber":316,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":317,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":318,"author":{"gitId":"tiongMax"},"content":" throw new NoSuchCommandException();","lastModifiedDate":"2023-08-24"},{"lineNumber":319,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":320,"author":{"gitId":"tiongMax"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":321,"author":{"gitId":"tiongMax"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":322,"author":{"gitId":"tiongMax"},"content":" } catch (EmptyDescriptionException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":323,"author":{"gitId":"tiongMax"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":324,"author":{"gitId":"tiongMax"},"content":" } catch (UnmatchedArgumentException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":325,"author":{"gitId":"tiongMax"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":326,"author":{"gitId":"tiongMax"},"content":" } catch (InvalidIndexException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":327,"author":{"gitId":"tiongMax"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":328,"author":{"gitId":"tiongMax"},"content":" } catch (NumberFormatException | StringIndexOutOfBoundsException | DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":329,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":330,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-09-01"},{"lineNumber":331,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tPlease enter a proper date.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":332,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":333,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":334,"author":{"gitId":"tiongMax"},"content":" System.out.println(dash);","lastModifiedDate":"2023-09-01"},{"lineNumber":335,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":336,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-08-23"},{"lineNumber":337,"author":{"gitId":"tiongMax"},"content":" message \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":338,"author":{"gitId":"tiongMax"},"content":" splitted \u003d message.split(\" \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":339,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":340,"author":{"gitId":"tiongMax"},"content":" farewell();","lastModifiedDate":"2023-08-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"tiongMax":338}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":" public EmptyDescriptionException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"\\n\\tOOPS! The description of the \" + getMessage() + \" cannot be empty.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" return Duke.dash + result + \" \\n\" + Duke.dash;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":" public Event(String description, boolean isDone, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" public String contentLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" return \"E\" + super.contentLine() + \"/\" + this.start.toString() + \"/\" + this.end.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"[E]\" + super.toString() + \" (from: \" + formatDate(this.start) + \" to: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":" formatDate(this.end) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":" return result;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":" public String formatDate(LocalDateTime l) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tiongMax"},"content":" return l.format(DateTimeFormatter.ofPattern(\"dd/MMM/yyyy HH:mm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":32}},{"path":"src/main/java/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"public class InvalidIndexException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":" public InvalidIndexException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"\\n\\tOOPS! Please choose a proper index.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" return Duke.dash + result + \"\\n\" + Duke.dash;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":12}},{"path":"src/main/java/NoSuchCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"public class NoSuchCommandException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":" public NoSuchCommandException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"\\n\\tOOPS!!! I\u0027m sorry , but I don\u0027t know what that means :-( \";","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" return Duke.dash + result + \" \\n\" + Duke.dash;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":12}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":" public String contentLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":" return \"/\" + getStatusIcon() + \"/\" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"tiongMax"},"content":" return result;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":36}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" public String contentLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":" return \"T\" + super.contentLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" return result;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":18}},{"path":"src/main/java/UnmatchedArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"public class UnmatchedArgumentException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":" private int got;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":" private int actual;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":" public UnmatchedArgumentException(int got, int actual) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" this.got \u003d got;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":" this.actual \u003d actual;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"\\n\\tOOPS! The argument passed does not match the requirement.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" result +\u003d \"\\n\\tExpected \" + this.actual + \" , got \" + this.got + \"\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" return Duke.dash + result + \" \\n\" + Duke.dash;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"blah","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"delete 3","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":11}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"tiongMax":1}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"D/ /asdf/2001-01-31T10:00","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"D/X/asdf/2019-12-02T19:00","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"D/ /asdf/2019-12-02T19:00","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"E/ /re5/2019-12-02T19:00/2019-12-01T19:00","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"D/ /asdf/2029-05-03T20:29","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"T/ /asdf","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"T/ /ssfd","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"D/ /asdf/2019-12-02T19:00","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"E/ /sad/2019-12-02T19:00/2019-12-02T20:00","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":"T/ /asfd","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":"D/ /aasdf/2019-12-02T19:00","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":"E/ /asfd/2222-02-02T22:22/2222-02-02T22:23","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tiongMax":12}},{"path":"src/Test/java/duke/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" public void check_deadline_contentLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" Deadline d \u003d new Deadline(\"Checking\", false, LocalDateTime.of(2023, 8, 31, 2, 20));","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" assertEquals(\"D/ /Checking/2023-08-31T02:20\", d.contentLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" public void check_todo_toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" Deadline d \u003d new Deadline(\"Checking\", false, LocalDateTime.of(2023, 8, 31, 2, 20));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" assertEquals(\"[D][ ] Checking (by: 31/Aug/2023 02:20)\", d.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tiongMax":23}},{"path":"src/Test/java/duke/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"public class EventTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" public void check_event_contentLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" Event e \u003d new Event(\"Checking\", false, LocalDateTime.of(2019, 12, 2, 19, 00),","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" LocalDateTime.of(2023, 8, 31, 2, 20));","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" assertEquals(\"E/ /Checking/2019-12-02T19:00/2023-08-31T02:20\", e.contentLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":" public void check_event_toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" Event e \u003d new Event(\"Checking\", true, LocalDateTime.of(2019, 12, 2, 19, 00),","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" LocalDateTime.of(2023, 8, 31, 2, 20));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":" assertEquals(\"[E][X] Checking (from: 02/Dec/2019 19:00 to: 31/Aug/2023 02:20)\", e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tiongMax":25}},{"path":"src/Test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" public void check_todo_contentLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" Todo t \u003d new Todo(\"Checking\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" assertEquals(\"T/ /Checking\", t.contentLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" public void check_todo_toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" Todo t \u003d new Todo(\"Checking\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" assertEquals(\"[T][ ] Checking\", t.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tiongMax":23}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"import duke.exception.InvalidIndexException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"import duke.exception.NoSuchCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" private Parser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" public Duke(Path filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" tasks \u003d new TaskList(storage.processFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":" ui.welcomeMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"tiongMax"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tiongMax"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine()); // show the divider line (\"_______\")","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tiongMax"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tiongMax"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tiongMax"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tiongMax"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"tiongMax"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"tiongMax"},"content":" } catch (InvalidIndexException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"tiongMax"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"tiongMax"},"content":" } catch (NumberFormatException | StringIndexOutOfBoundsException | DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tPlease enter a proper date.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"tiongMax"},"content":" ui.farewell();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tiongMax"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tiongMax"},"content":" new Duke(Paths.get(\"data\", \"duke.txt\")).run();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":2,"tiongMax":54}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":" public LocalDateTime checkDateAndTime(String dateAndTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" String[] dateSplit \u003d dateAndTime.split(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" if (dateSplit.length \u003c 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" throw new DateTimeException(\"Please enter the time.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" int hr \u003d Integer.parseInt(dateSplit[dateSplit.length - 1].substring(0, 2));","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" int min \u003d Integer.parseInt(dateSplit[dateSplit.length - 1].substring(2));","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" return LocalDateTime.of(Integer.parseInt(dateSplit[2]), Integer.parseInt(dateSplit[1]),","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" Integer.parseInt(dateSplit[0]), hr, min);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" public static Command parse(String fullCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":" //0: command 1: detail","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":" String[] splitted \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":" Command c;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":" if (splitted.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":" return new Command(splitted[0], splitted[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tiongMax"},"content":" return new Command(splitted[0], \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tiongMax":33}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" private Path relativePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":" public Storage(Path relativePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" this.relativePath \u003d relativePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":" public ArrayList\u003cTask\u003e processFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":" ArrayList\u003cTask\u003e result \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":" if (Files.exists(relativePath)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":" List\u003cString\u003e content \u003d Files.readAllLines(relativePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":" if (content.size() \u003e 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tiongMax"},"content":" for (String line : content) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":" result.add(processLines(line));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tiongMax"},"content":" } // else no task yet","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tiongMax"},"content":" Files.createFile(relativePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tiongMax"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tiongMax"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tiongMax"},"content":" } catch (Exception e) { // catch for wrong format or corrupted file","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tiongMax"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tiongMax"},"content":" return result;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tiongMax"},"content":" public void writeInto(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tiongMax"},"content":" ArrayList\u003cString\u003e content \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tiongMax"},"content":" tasks.copyArrInto(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tiongMax"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tiongMax"},"content":" Files.write(relativePath, content);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tiongMax"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t\" + e);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tiongMax"},"content":" public Task processLines(String line) throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tiongMax"},"content":" Task t;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tiongMax"},"content":" String[] taskArr \u003d line.split(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tiongMax"},"content":" switch (taskArr[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tiongMax"},"content":" case \"T\":","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"tiongMax"},"content":" t \u003d new Todo(taskArr[2], !taskArr[1].isBlank());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"tiongMax"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"tiongMax"},"content":" case \"D\":","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"tiongMax"},"content":" t \u003d new Deadline(taskArr[2], !taskArr[1].isBlank(), processDateAndLine(taskArr[3]));","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"tiongMax"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"tiongMax"},"content":" case \"E\":","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tiongMax"},"content":" t \u003d new Event(taskArr[2], !taskArr[1].isBlank(), processDateAndLine(taskArr[3]),","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tiongMax"},"content":" processDateAndLine(taskArr[4]));","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tiongMax"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tiongMax"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tiongMax"},"content":" throw new Exception(\"Some of the content is not in the correct format or it is corrupted\");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"tiongMax"},"content":" return t;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tiongMax"},"content":" public LocalDateTime processDateAndLine(String dateAndTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tiongMax"},"content":" dateAndTime \u003d dateAndTime.replace(\"T\", \"-\").replace(\":\", \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"tiongMax"},"content":" String[] split \u003d dateAndTime.split(\"-\");","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"tiongMax"},"content":" int hr \u003d Integer.parseInt(split[split.length - 1].substring(0, 2));","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"tiongMax"},"content":" int min \u003d Integer.parseInt(split[split.length - 1].substring(2));","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tiongMax"},"content":" return LocalDateTime.of(Integer.parseInt(split[0]), Integer.parseInt(split[1]),","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"tiongMax"},"content":" Integer.parseInt(split[2]), hr, min);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tiongMax":86}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":" public void welcomeMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":" String logo \u003d \"\\t ____ _ \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" + \"\\t| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" + \"\\t| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" + \"\\t| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" + \"\\t|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tHello from\\n\" + logo);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" System.out.println(showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t Hello! I\u0027m YOLO \\n\\t What can I do for you? \\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" System.out.println(showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" public void farewell() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":" System.out.println(showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t Bye. Hope to see you again soon! \\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":" System.out.println(showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":" public static String showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tiongMax"},"content":" return \"\\t---------------------------------------------------------------------------\";","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tiongMax"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tiongMax"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tiongMax"},"content":" return sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tiongMax":38}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"import duke.exception.EmptyDescriptionException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"import duke.exception.InvalidIndexException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"import duke.exception.NoSuchCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"import duke.exception.UnmatchedArgumentException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":"public class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" private String command;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" private String details;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":" private boolean isValidDetail;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":" public Command(String command, String details) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":" if (details.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":" this.isValidDetail \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":" this.isValidDetail \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tiongMax"},"content":" this.details \u003d details;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tiongMax"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NoSuchCommandException, InvalidIndexException {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tiongMax"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tiongMax"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tiongMax"},"content":" tasks.listAllTask();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tiongMax"},"content":" } else if (command.equals(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tiongMax"},"content":" if (!isValidDetail) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tiongMax"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tiongMax"},"content":" int index \u003d Integer.parseInt(details);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tiongMax"},"content":" if (index \u003e 0 \u0026\u0026 index \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tiongMax"},"content":" mark(index, tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tiongMax"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tiongMax"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tiongMax"},"content":" if (!isValidDetail) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tiongMax"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tiongMax"},"content":" int index \u003d Integer.parseInt(details);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tiongMax"},"content":" if (index \u003e 0 \u0026\u0026 index \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tiongMax"},"content":" delete(index, tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tiongMax"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"tiongMax"},"content":" } else if (command.equals(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"tiongMax"},"content":" if (!isValidDetail) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"tiongMax"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tiongMax"},"content":" int index \u003d Integer.parseInt(details);","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tiongMax"},"content":" if (index \u003e 0 \u0026\u0026 index \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tiongMax"},"content":" unmark(index, tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tiongMax"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"tiongMax"},"content":" } else if (command.equals(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"tiongMax"},"content":" addTodo(details, tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tiongMax"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tiongMax"},"content":" addDeadline(details, tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tiongMax"},"content":" } else if (command.equals(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tiongMax"},"content":" addEvent(details, tasks, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"tiongMax"},"content":" } else if (command.equals(\"due\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"tiongMax"},"content":" checkTaskDue(details, tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"tiongMax"},"content":" } else if (command.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tiongMax"},"content":" isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"tiongMax"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"tiongMax"},"content":" throw new NoSuchCommandException();","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"tiongMax"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"tiongMax"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"tiongMax"},"content":" } catch (UnmatchedArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"tiongMax"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"tiongMax"},"content":" } catch (InvalidIndexException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"tiongMax"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"tiongMax"},"content":" } catch (EmptyDescriptionException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"tiongMax"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"tiongMax"},"content":" } catch (NumberFormatException | StringIndexOutOfBoundsException | DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tPlease enter a proper date.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t\" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"tiongMax"},"content":" public static void mark(int i, TaskList tasks, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"tiongMax"},"content":" tasks.get(i - 1).mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"tiongMax"},"content":" System.out.println(\" \\tNice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t \" + tasks.get(i - 1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"tiongMax"},"content":" storage.writeInto(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"tiongMax"},"content":" public static void unmark(int i, TaskList tasks, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"tiongMax"},"content":" tasks.get(i - 1).unmark();","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"tiongMax"},"content":" System.out.println(\" \\tOk! I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t \" + tasks.get(i - 1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"tiongMax"},"content":" storage.writeInto(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"tiongMax"},"content":" public static void addTodo(String message, TaskList tasks, Storage storage) throws UnmatchedArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"tiongMax"},"content":" if (message.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"tiongMax"},"content":" throw new UnmatchedArgumentException(0, 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tGot it. I\u0027ve added this task: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"tiongMax"},"content":" Task todo \u003d new Todo(message, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"tiongMax"},"content":" tasks.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t \" + todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tNow you have \" + tasks.size() + (tasks.size() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"tiongMax"},"content":" storage.writeInto(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"tiongMax"},"content":" public static void addDeadline(String message, TaskList tasks, Storage storage) throws UnmatchedArgumentException, EmptyDescriptionException {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"tiongMax"},"content":" String[] arr \u003d message.split(\" /\");","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"tiongMax"},"content":" Parser p \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"tiongMax"},"content":" if (arr.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"tiongMax"},"content":" throw new UnmatchedArgumentException(arr.length, 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"tiongMax"},"content":" if (arr[0].isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"tiongMax"},"content":" throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"tiongMax"},"content":" String dateAndTime \u003d arr[1].substring(3).replace(\" \", \"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"tiongMax"},"content":" Deadline dl \u003d new Deadline(arr[0], false, p.checkDateAndTime(dateAndTime));","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"tiongMax"},"content":" tasks.add(dl);","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tGot it. I\u0027ve added this task: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t \" + dl);","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tNow you have \" + tasks.size() + (tasks.size() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"tiongMax"},"content":" storage.writeInto(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"tiongMax"},"content":" public static void addEvent(String message, TaskList tasks, Storage storage) throws UnmatchedArgumentException, EmptyDescriptionException {","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"tiongMax"},"content":" String[] arr \u003d message.split(\" /\");","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"tiongMax"},"content":" Parser p \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"tiongMax"},"content":" if (arr.length \u003c 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"tiongMax"},"content":" throw new UnmatchedArgumentException(arr.length, 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"tiongMax"},"content":" if (arr[0].isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"tiongMax"},"content":" throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"tiongMax"},"content":" LocalDateTime start \u003d p.checkDateAndTime(arr[1].substring(5).replace(\" \", \"/\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"tiongMax"},"content":" LocalDateTime end \u003d p.checkDateAndTime(arr[2].substring(3).replace(\" \", \"/\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"tiongMax"},"content":" if (end.isBefore(start) || end.isEqual(start)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"tiongMax"},"content":" throw new DateTimeException(\"The end is date should not be earlier or the same as the start date.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"tiongMax"},"content":" Event e \u003d new Event(arr[0], false, start, end);","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"tiongMax"},"content":" tasks.add(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tGot it. I\u0027ve added this task: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t \" + e);","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tNow you have \" + tasks.size() + (tasks.size() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"tiongMax"},"content":" storage.writeInto(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"tiongMax"},"content":" public static void delete(int index, TaskList tasks, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tNoted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t \" + tasks.get(index - 1));","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"tiongMax"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tNow that you have \" + tasks.size() + (tasks.size() \u003c 2 ? \" task\" : \" tasks\") + \" in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"tiongMax"},"content":" storage.writeInto(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"tiongMax"},"content":" public static void checkTaskDue(String dueDate, TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"tiongMax"},"content":" ArrayList\u003cTask\u003e dueDateList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"tiongMax"},"content":" Parser p \u003d new Parser();","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"tiongMax"},"content":" LocalDateTime date \u003d p.checkDateAndTime(dueDate.replace(\" \", \"/\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"tiongMax"},"content":" for (Task t : tasks.getTasks()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"tiongMax"},"content":" if (t instanceof Deadline \u0026\u0026","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"tiongMax"},"content":" ((Deadline) t).getDueDate().isEqual(date)){","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"tiongMax"},"content":" dueDateList.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"tiongMax"},"content":" } else if (t instanceof Event \u0026\u0026","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"tiongMax"},"content":" (((Event) t).getStart().isEqual(date) ||","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"tiongMax"},"content":" ((Event) t).getEnd().isEqual(date))) {","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"tiongMax"},"content":" dueDateList.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tHere are the \" + (dueDateList.size() \u003e 1 ? \"tasks that contain\" : \"task that contains\")","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"tiongMax"},"content":" + \" the date:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"tiongMax"},"content":" for (Task t : dueDateList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t\\t\" + t);","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"tiongMax"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"tiongMax"},"content":" return (command.equals(\"bye\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tiongMax":232}},{"path":"src/main/java/duke/exception/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"public class EmptyDescriptionException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":" public EmptyDescriptionException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"\\n\\tOOPS! The description of the \" + getMessage() + \" cannot be empty.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" return Ui.showLine() + result + \" \\n\" + Ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":17}},{"path":"src/main/java/duke/exception/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"public class InvalidIndexException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":" public InvalidIndexException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"\\n\\tOOPS! Please choose a proper index.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" return Ui.showLine() + result + \"\\n\" + Ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":16}},{"path":"src/main/java/duke/exception/NoSuchCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"public class NoSuchCommandException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":" public NoSuchCommandException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"\\n\\tOOPS!!! I\u0027m sorry , but I don\u0027t know what that means :-( \";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" return Ui.showLine() + result + \" \\n\" + Ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":16}},{"path":"src/main/java/duke/exception/UnmatchedArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"public class UnmatchedArgumentException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":" private int got;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" private int actual;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" public UnmatchedArgumentException(int got, int actual) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" this.got \u003d got;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" this.actual \u003d actual;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"\\n\\tOOPS! The argument passed does not match the requirement.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" result +\u003d \"\\n\\tExpected \" + this.actual + \" , got \" + this.got + \"\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" return Ui.showLine() + result + \" \\n\" + Ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":23}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" private LocalDateTime dueDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" public Deadline(String description, boolean isDone, LocalDateTime dueDate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" public LocalDateTime getDueDate() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" return this.dueDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" public String contentLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" return \"D\" + super.contentLine() + \"/\" + this.dueDate.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"[D]\" + super.toString() + \" (by: \" + formatDate(this.dueDate) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":" return result;","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tiongMax"},"content":" public String formatDate(LocalDateTime l) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tiongMax"},"content":" return l.format(DateTimeFormatter.ofPattern(\"dd/MMM/yyyy HH:mm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":35}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" public Event(String description, boolean isDone, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" public LocalDateTime getStart() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":" return this.start;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" public LocalDateTime getEnd() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":" return this.end;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":" public String contentLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":" return \"E\" + super.contentLine() + \"/\" + this.start.toString() + \"/\" + this.end.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"[E]\" + super.toString() + \" (from: \" + formatDate(this.start) + \" to: \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tiongMax"},"content":" formatDate(this.end) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tiongMax"},"content":" return result;","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tiongMax"},"content":" public String formatDate(LocalDateTime l) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tiongMax"},"content":" return l.format(DateTimeFormatter.ofPattern(\"dd/MMM/yyyy HH:mm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":42}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":" public String contentLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":" return \"/\" + getStatusIcon() + \"/\" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"tiongMax"},"content":" return result;","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":38}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" public void listAllTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\tHere \" + (tasks.size() \u003e 1 ? \"are\" : \"is\") +","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tiongMax"},"content":" \" the \" + (tasks.size() \u003e 1 ? \"tasks\" : \"task\") + \" in your list: \");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tiongMax"},"content":" if (tasks.size() \u003e 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tiongMax"},"content":" for (int i \u003d 1; i \u003c tasks.size() + 1; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tiongMax"},"content":" System.out.println(\"\\t\" + i + \".\" + tasks.get(i - 1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tiongMax"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tiongMax"},"content":" System.out.println(Ui.showLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tiongMax"},"content":" public void copyArrInto(ArrayList\u003cString\u003e here) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tiongMax"},"content":" for (Task t : this.tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tiongMax"},"content":" here.add(t.contentLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tiongMax"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tiongMax"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tiongMax"},"content":" public void add(Task t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tiongMax"},"content":" this.tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tiongMax"},"content":" public Task get(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tiongMax"},"content":" return this.tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tiongMax"},"content":" public void remove(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tiongMax"},"content":" this.tasks.remove(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tiongMax"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tiongMax"},"content":" return this.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tiongMax":58}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":" public String contentLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":" return \"T\" + super.contentLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tiongMax"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tiongMax"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tiongMax"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tiongMax"},"content":" String result \u003d \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tiongMax"},"content":" return result;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tiongMax"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"tiongMax"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tiongMax"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tiongMax"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tiongMax"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tiongMax"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tiongMax"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tiongMax"},"content":"blah","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tiongMax"},"content":"delete 3","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tiongMax"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tiongMax"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tiongMax"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tiongMax"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tiongMax":11}}] diff --git a/tiongMax_ip_master/commits.json b/tiongMax_ip_master/commits.json index 9e7b1361..8364abd2 100644 --- a/tiongMax_ip_master/commits.json +++ b/tiongMax_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tiongMax":[{"date":"2023-08-23","commitResults":[{"hash":"ce9378f7040c171e89c686f3b3095137bb62edd5","isMergeCommit":false,"messageTitle":"Attempt on level 0.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"6e2942cb4409951f169e39e4f05f494cc8ae8f74","isMergeCommit":false,"messageTitle":"Attempt on level 1.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":4}}},{"hash":"2118599ea2009d12338abe6f0e6cbf81b2fb4477","isMergeCommit":false,"messageTitle":"Attempt on level 2.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":4}}}]},{"date":"2023-08-24","commitResults":[{"hash":"3e0959f7d6893d2b8e1b2e8fa84958251fc306fd","isMergeCommit":false,"messageTitle":"Attempt on level 3.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":3}}},{"hash":"24ba7c1cad011455db2c8c5318a94794d3b33d52","isMergeCommit":false,"messageTitle":"Attempt on level 3.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"711fcda234c5081c2bef580e78453ba8896b3b93","isMergeCommit":false,"messageTitle":"Attempt on level 3.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a31e76443d07da91dc52a7c855f7544033857162","isMergeCommit":false,"messageTitle":"Attempt on level 4.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":22}}},{"hash":"544ea3893784cf595690f5f847ae965c01030ffe","isMergeCommit":false,"messageTitle":"Attempt on level 5.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":32}}},{"hash":"1c461c37fb5f545e30e3434209e0be662a2a2f86","isMergeCommit":false,"messageTitle":"Attempt on level 6.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":2}}},{"hash":"6362ef268310814ab5e859c44342dca8509cf9e1","isMergeCommit":false,"messageTitle":"Attempt to test the program by comparing input and output file.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"6cdddb84030910967bac957298fcc0ecd8483e10","isMergeCommit":false,"messageTitle":"Revamp the previous code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":74}}}]},{"date":"2023-08-31","commitResults":[{"hash":"a47fb3caa848950b687b264de744f68bf5672b25","isMergeCommit":false,"messageTitle":"Add save functional on hard disk for task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":99,"deletions":11}}},{"hash":"910bf4b7987c306ac7a917dec0d29ea3ca5524dc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"25d004b786c73291341dfa855d913b8f66e755f9","isMergeCommit":false,"messageTitle":"Add date time feature for duke","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":3},"java":{"insertions":110,"deletions":20}}},{"hash":"db00a3b35c00747056875a549a7a40a1bc4103db","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tiongMax":{"java":516,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":18}},"authorContributionVariance":{"tiongMax":12299.226},"authorDisplayNameMap":{"tiongMax":"CS2103T-T14-4 TION..HENG"}} +{"authorDailyContributionsMap":{"tiongMax":[{"date":"2023-08-23","commitResults":[{"hash":"ce9378f7040c171e89c686f3b3095137bb62edd5","isMergeCommit":false,"messageTitle":"Attempt on level 0.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"6e2942cb4409951f169e39e4f05f494cc8ae8f74","isMergeCommit":false,"messageTitle":"Attempt on level 1.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":4}}},{"hash":"2118599ea2009d12338abe6f0e6cbf81b2fb4477","isMergeCommit":false,"messageTitle":"Attempt on level 2.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":4}}}]},{"date":"2023-08-24","commitResults":[{"hash":"3e0959f7d6893d2b8e1b2e8fa84958251fc306fd","isMergeCommit":false,"messageTitle":"Attempt on level 3.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":3}}},{"hash":"24ba7c1cad011455db2c8c5318a94794d3b33d52","isMergeCommit":false,"messageTitle":"Attempt on level 3.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"711fcda234c5081c2bef580e78453ba8896b3b93","isMergeCommit":false,"messageTitle":"Attempt on level 3.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a31e76443d07da91dc52a7c855f7544033857162","isMergeCommit":false,"messageTitle":"Attempt on level 4.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":22}}},{"hash":"544ea3893784cf595690f5f847ae965c01030ffe","isMergeCommit":false,"messageTitle":"Attempt on level 5.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":32}}},{"hash":"1c461c37fb5f545e30e3434209e0be662a2a2f86","isMergeCommit":false,"messageTitle":"Attempt on level 6.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":2}}},{"hash":"6362ef268310814ab5e859c44342dca8509cf9e1","isMergeCommit":false,"messageTitle":"Attempt to test the program by comparing input and output file.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"6cdddb84030910967bac957298fcc0ecd8483e10","isMergeCommit":false,"messageTitle":"Revamp the previous code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":74}}}]},{"date":"2023-08-31","commitResults":[{"hash":"a47fb3caa848950b687b264de744f68bf5672b25","isMergeCommit":false,"messageTitle":"Add save functional on hard disk for task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":99,"deletions":11}}},{"hash":"910bf4b7987c306ac7a917dec0d29ea3ca5524dc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"25d004b786c73291341dfa855d913b8f66e755f9","isMergeCommit":false,"messageTitle":"Add date time feature for duke","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":3},"java":{"insertions":110,"deletions":20}}},{"hash":"db00a3b35c00747056875a549a7a40a1bc4103db","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"b5dceb3f10fd8eb0e87e2ca0eebccc6019d3b457","isMergeCommit":false,"messageTitle":"Organise the code into a more OOP way","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":3},"java":{"insertions":447,"deletions":321}}},{"hash":"7098450de6c8c94f9142d44ae2b8207d23a7294d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"f174ac3a7b7e45d0fa12e8badb8e6fd4d7b9c12f","isMergeCommit":false,"messageTitle":"Organise the files into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":4}}},{"hash":"df2579e89642e3c31a3402e17ee357968fd20ca2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"688a6469673ab16d46420ca27820afe334649b13","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/tiongMax/ip into A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e0cc1a036e4cb51c861fcd477dfd9b0d4b1a4bf8","isMergeCommit":false,"messageTitle":"Setup gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":0,"deletions":7}}},{"hash":"189be9839d50eb64cf809d286296d715fc9879f1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"5825eada573a4501c71ea98aef23873b5ca66345","isMergeCommit":false,"messageTitle":"Add JUnit to test certain class and respective methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":0}}},{"hash":"29736fffa83bd0b3fc7f8f3b55969086278c4fdf","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tiongMax":{"java":779,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":23}},"authorContributionVariance":{"tiongMax":77200.49},"authorDisplayNameMap":{"tiongMax":"CS2103T-T14-4 TION..HENG"}} diff --git a/tllshan_ip_master/authorship.json b/tllshan_ip_master/authorship.json index a2d23392..c16505c5 100644 --- a/tllshan_ip_master/authorship.json +++ b/tllshan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/CCException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"public class CCException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":" public CCException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":5}},{"path":"src/main/java/ChatterChicken.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"public class ChatterChicken {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":" public static final String PATH \u003d \"src/main/data/task-list.txt\";","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":" private Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" public ChatterChicken() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" this.storage \u003d new Storage(parser);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" ChatterChicken chatterChicken \u003d new ChatterChicken();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" chatterChicken.run();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" * Initiates the main loop of the ChatterChicken application.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" * Reads user input, processes commands, and provides responses until the user chooses to exit.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" * Catches and displays exceptions.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":" private void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" try (Scanner sc \u003d new Scanner(System.in)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":" tasks \u003d new TaskList(storage.loadTasksFromFile(), ui);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":" ui.displayGreeting();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tllshan"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tllshan"},"content":" Command command \u003d parser.parseInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tllshan"},"content":" executeCommand(command);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tllshan"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tllshan"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tllshan"},"content":" } catch (CCException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tllshan"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tllshan"},"content":" ui.displayFarewell();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tllshan"},"content":" * Executes the specified command by invoking corresponding methods on the tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tllshan"},"content":" * @param command The parsed user command.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tllshan"},"content":" * @throws CCException If an error occurs during command execution.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tllshan"},"content":" private void executeCommand(Command command) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tllshan"},"content":" String action \u003d command.getAction();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tllshan"},"content":" String taskDescription \u003d command.getTaskDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tllshan"},"content":" switch (action) {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"tllshan"},"content":" case \"list\":","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"tllshan"},"content":" tasks.printList();","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"tllshan"},"content":" case \"mark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"tllshan"},"content":" tasks.markTask(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"tllshan"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"tllshan"},"content":" tasks.unmarkTask(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"tllshan"},"content":" case \"delete\":","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"tllshan"},"content":" tasks.deleteTask(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"tllshan"},"content":" case \"todo\":","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"tllshan"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"tllshan"},"content":" case \"event\":","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"tllshan"},"content":" tasks.addTask(parser.parseTask(action, taskDescription));","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"tllshan"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :\u003c\");","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":78}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"public class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":" private final String action;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":" private final String taskDescription;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":" public Command(String action, String taskDescription) {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":" this.action \u003d action;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" public String getAction() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" return action;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" public String getTaskDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" return taskDescription;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tllshan":17}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":" private final LocalDate end;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":" public Deadline(String taskDescription, String name, LocalDate end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":" super(taskDescription, name);","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" * Generates the formatted representation of the deadline task.","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" * The format includes the task status, task type, description, and end time.","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" * @return The formatted representation of the deadline task.","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" public String getTaskForPrinting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" return String.format(\"[%s][D] %s (by: %s)\", super.checkDone(), super.getName(), super.formatDate(end));","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" public String getTaskDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" return \"deadline \" + super.getTaskDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":26}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":" private final LocalDate start;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":" private final LocalDate end;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" public Event(String taskDescription, String name, LocalDate start, LocalDate end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":" super(taskDescription, name);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" * Generates the formatted representation of the event task.","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" * The format includes the task status, task type, description, start time, and end time.","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" * @return The formatted representation of the event task.","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" public String getTaskForPrinting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" return String.format(\"[%s][E] %s (from: %s to: %s)\",","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" super.checkDone(),","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" super.getName(),","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" super.formatDate(start),","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" super.formatDate(end));","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":" public String getTaskDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":" return \"event \" + super.getTaskDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":33}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":" * Parses the input command and creates a Command object.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" * This method extracts the action and task description from the input and returns a Command object.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" * @param input The input command provided by the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" * @return A Command object representing the parsed command.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" * @throws CCException If an error occurs during parsing.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" public Command parseInput(String input) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" int space \u003d input.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" String action \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" String taskDescription \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" if (space \u003d\u003d -1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" action \u003d input;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" action \u003d input.substring(0, space);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" taskDescription \u003d input.substring(space + 1, input.length());","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" return new Command(action, taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" * Parses a task from a line of data file input and returns the corresponding Task object.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" * This method extracts task details from the input, creates a Command object, and parses the Task type.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":" * @param fileLine The input line from the data file containing task details.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" * @return A Task object representing the parsed task.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":" * @throws CCException If an error occurs during parsing.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":" public Task parseTaskFromFile(String fileLine) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tllshan"},"content":" char done \u003d fileLine.charAt(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tllshan"},"content":" String input \u003d fileLine.substring(1, fileLine.length());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tllshan"},"content":" Command command \u003d parseInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tllshan"},"content":" Task task \u003d parseTask(command.getAction(), command.getTaskDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tllshan"},"content":" if (done \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tllshan"},"content":" task.setDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tllshan"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tllshan"},"content":" * Parses a Task object based on its type and input details.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tllshan"},"content":" * @param type The type of the task (todo, deadline, event).","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tllshan"},"content":" * @param input The input containing task details.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tllshan"},"content":" * @return A Task object representing the parsed task.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tllshan"},"content":" * @throws CCException If an error occurs during parsing or task creation.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tllshan"},"content":" public Task parseTask(String type, String input) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tllshan"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tllshan"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tllshan"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tllshan"},"content":" task \u003d parseToDo(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tllshan"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tllshan"},"content":" task \u003d parseDeadline(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tllshan"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tllshan"},"content":" task \u003d parseEvent(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"tllshan"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tllshan"},"content":" * Parses the input string to create a new ToDo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"tllshan"},"content":" * @param taskDescription The description of the ToDo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"tllshan"},"content":" * @return A new ToDo task object created from the provided description.","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"tllshan"},"content":" * @throws CCException If the description is empty.","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"tllshan"},"content":" private ToDo parseToDo (String taskDescription) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"tllshan"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tllshan"},"content":" return new ToDo(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"tllshan"},"content":" * Parses the input string to create a new Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"tllshan"},"content":" * @param taskDescription The description and end time of the Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"tllshan"},"content":" * @return A new Deadline task object created from the provided description.","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"tllshan"},"content":" * @throws CCException If the input format is incorrect or if there are empty fields.","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"tllshan"},"content":" private Deadline parseDeadline(String taskDescription) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"tllshan"},"content":" String[] fields \u003d taskDescription.split(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"tllshan"},"content":" if (fields.length !\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"OOPS!!! Incorrect format for deadline.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"tllshan"},"content":" String name \u003d fields[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"tllshan"},"content":" String end \u003d fields[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"tllshan"},"content":" if (name.isEmpty() || end.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"OOPS!!! Empty field for deadline detected.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"tllshan"},"content":" return new Deadline(taskDescription, name, parseDate(end));","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"tllshan"},"content":" * Parses the input string to create a new Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"tllshan"},"content":" * @param taskDescription The description, start time, and end time of the Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"tllshan"},"content":" * @return A new Event task object created from the provided description.","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"tllshan"},"content":" * @throws CCException If the input format is incorrect or if there are empty fields.","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"tllshan"},"content":" private Event parseEvent(String taskDescription) throws CCException{","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"tllshan"},"content":" String[] fields \u003d taskDescription.split(\"/from|/to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"tllshan"},"content":" if (fields.length !\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"OOPS!!! Incorrect format for event.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"tllshan"},"content":" String name \u003d fields[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"tllshan"},"content":" String start \u003d fields[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"tllshan"},"content":" String end \u003d fields[2].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"tllshan"},"content":" if (name.isEmpty() || start.isEmpty() || end.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"OOPS!!! Empty field for event detected.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"tllshan"},"content":" return new Event(taskDescription, name, parseDate(start), parseDate(end));","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"tllshan"},"content":" * Parses a string into a LocalDate object.","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"tllshan"},"content":" * @param date The string containing a date to be parsed.","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"tllshan"},"content":" * @return A LocalDate object representing the parsed date.","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"tllshan"},"content":" private static LocalDate parseDate(String date) {","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"tllshan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"tllshan"},"content":" return LocalDate.parse(date);","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"tllshan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"tllshan"},"content":" System.out.println(\"Error parsing date: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"tllshan"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tllshan":139}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":" Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":" public Storage(Parser parser) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" this.parser \u003d parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" * Loads tasks from the data file and returns them as an ArrayList.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" * If the data file doesn\u0027t exist, a new file is created.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" * @return An ArrayList containing the loaded tasks, or null in case of errors.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" public ArrayList\u003cTask\u003e loadTasksFromFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" File dataFile \u003d Paths.get(ChatterChicken.PATH).toAbsolutePath().toFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" if (!dataFile.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" dataFile.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(dataFile));","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" String currLine \u003d reader.readLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" while (currLine !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" Task task \u003d parser.parseTaskFromFile(currLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":" currLine \u003d reader.readLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":" reader.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":" return taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tllshan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tllshan"},"content":" System.err.println(\"An error occurred while loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tllshan"},"content":" } catch (CCException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tllshan"},"content":" System.err.println(\"An error occurred while adding tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tllshan"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tllshan"},"content":" * Saves tasks from the provided TaskList to the data file.","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tllshan"},"content":" * @param taskList The TaskList containing tasks to be saved.","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tllshan"},"content":" public void saveTasksToFile(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tllshan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tllshan"},"content":" File dataFile \u003d Paths.get(ChatterChicken.PATH).toAbsolutePath().toFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tllshan"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(dataFile));","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tllshan"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tllshan"},"content":" String taskDescription \u003d task.getTaskForSaving() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tllshan"},"content":" writer.append(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tllshan"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tllshan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tllshan"},"content":" System.err.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tllshan":63}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":" private final String taskDescription;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":" private final String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" public Task(String taskDescription, String name) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" protected String checkDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" return isDone ? \"X\" : \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" public String formatDate(LocalDate date) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" return date.format(formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" protected String getName() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" return this.name;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" protected String getTaskDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" return this.taskDescription;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" public abstract String getTaskForPrinting();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":" public String getTaskForSaving() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":" return checkDone() + getTaskDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"tllshan"},"content":" public void setDone(boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tllshan"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":41}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":" * The TaskList class represents a collection of tasks managed by the ChatterChicken task manager.","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":" * It allows for adding, marking, unmarking, and deleting tasks, as well as printing the list of tasks","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":" * along with their respective indexes. Tasks can be of different types: ToDo, Deadline, and Event.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" private final Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" * Adds a new task to the task list based on the provided Task object.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" * Displays a confirmation message with the added task\u0027s details.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" * @param task The task to be added to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" * @throws CCException If there is an error in adding the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" ui.displayAddTask(task, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" * Deletes a task from the task list based on the provided input.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":" * Displays a confirmation message after deleting the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":" * @param input The input containing task information to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tllshan"},"content":" * @throws CCException If there is an error in deleting the task or if the input is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tllshan"},"content":" public void deleteTask(String input) throws CCException {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tllshan"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tllshan"},"content":" int index \u003d getIndex(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tllshan"},"content":" Task task \u003d taskList.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tllshan"},"content":" taskList.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tllshan"},"content":" ui.displayDeleteTask(task, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tllshan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"Invalid input for list of length \" + taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tllshan"},"content":" * Marks a task as done based on the provided input.","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"tllshan"},"content":" * Displays a confirmation message with the marked task\u0027s details.","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"tllshan"},"content":" * @param input The input containing task information to mark as done.","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"tllshan"},"content":" * @throws CCException If there is an error in marking the task or if the input is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"tllshan"},"content":" public void markTask(String input) throws CCException {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"tllshan"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"tllshan"},"content":" Task task \u003d taskList.get(getIndex(input));","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"tllshan"},"content":" task.setDone(true);","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"tllshan"},"content":" ui.displayMarkTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tllshan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"Invalid input for marking list of length \" + taskList.size());","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"tllshan"},"content":" * Unmarks a previously marked task as not done based on the provided input.","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"tllshan"},"content":" * Displays a confirmation message with the unmarked task\u0027s details.","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"tllshan"},"content":" * @param input The input containing task information to unmark.","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"tllshan"},"content":" * @throws CCException If there is an error in unmarking the task or if the input is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"tllshan"},"content":" public void unmarkTask(String input) throws CCException {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"tllshan"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"tllshan"},"content":" Task task \u003d taskList.get(getIndex(input));","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"tllshan"},"content":" task.setDone(false);","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"tllshan"},"content":" ui.displayUnmarkTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tllshan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"Invalid input for list of length \" + taskList.size());","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"tllshan"},"content":" * Retrieves the index of a task based on the provided input.","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"tllshan"},"content":" * @param input The input containing task information and index as the last character.","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"tllshan"},"content":" * @return The index of the task parsed from the input.","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"tllshan"},"content":" private int getIndex(String input) {","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"tllshan"},"content":" return input.charAt(input.length() - 1) - \u00270\u0027 - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"tllshan"},"content":" * Prints the list of tasks with their respective indexes.","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"tllshan"},"content":" public void printList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"tllshan"},"content":" ui.displayList(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"tllshan"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"tllshan"},"content":" return taskList.iterator();","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":104}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":" public ToDo(String taskDescription) {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":" super(taskDescription, taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" * Generates the formatted representation of the todo task.","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":" * The format includes the task status, task type, and description.","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" * @return The formatted representation of the todo task.","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" public String getTaskForPrinting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" return String.format(\"[%s][T] %s\", super.checkDone(), super.getName());","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" public String getTaskDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" return \"todo \" + super.getTaskDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":22}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":" private static final String LINE \u003d \"\\n _____________________________________________________________________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":" private static final String INDENT \u003d \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" private static final String INDENT_BIG \u003d \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" * Displays a greeting message to the user to introduce ChatterChicken.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" public void displayGreeting() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" printToScreen(INDENT + \"Hello! I\u0027m ChatterChicken!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" + INDENT + \"What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" * Displays a farewell message to the user as they exit the ChatterChicken application.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" public void displayFarewell() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" printToScreen(INDENT + \"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" * Displays a message indicating that a task has been added to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" * @param task The task that was added.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" * @param size The updated size of the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":" public void displayAddTask(Task task, int size) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" printToScreen(INDENT + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":" + INDENT_BIG + task.getTaskForPrinting() + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":" + INDENT + \"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tllshan"},"content":" * Displays a message indicating that a task has been deleted from the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tllshan"},"content":" * @param task The task that was deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tllshan"},"content":" * @param size The updated size of the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tllshan"},"content":" public void displayDeleteTask(Task task, int size) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tllshan"},"content":" printToScreen(INDENT + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tllshan"},"content":" + INDENT_BIG + task.getTaskForPrinting() + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tllshan"},"content":" + INDENT + \"Now you have \" + size + \" tasks in your list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tllshan"},"content":" * Displays a message indicating that a task has been marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tllshan"},"content":" * @param task The task that was marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tllshan"},"content":" public void displayMarkTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tllshan"},"content":" printToScreen(INDENT + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tllshan"},"content":" + INDENT_BIG + task.getTaskForPrinting());","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tllshan"},"content":" * Displays a message indicating that a task has been marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"tllshan"},"content":" * @param task The task that was marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"tllshan"},"content":" public void displayUnmarkTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"tllshan"},"content":" printToScreen(INDENT + \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"tllshan"},"content":" + INDENT_BIG + task.getTaskForPrinting());","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tllshan"},"content":" * Displays the list of tasks to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tllshan"},"content":" * @param taskList The list of tasks to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"tllshan"},"content":" public void displayList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"tllshan"},"content":" System.out.println(LINE + INDENT + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tllshan"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tllshan"},"content":" System.out.println(INDENT_BIG + (i + 1) + \".\" + taskList.get(i).getTaskForPrinting());","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tllshan"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tllshan"},"content":" * Prints a message to the screen, surrounded by the predefined line separator.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"tllshan"},"content":" * @param message The message to be printed.","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"tllshan"},"content":" public void printToScreen(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"tllshan"},"content":" System.out.println(LINE + message + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tllshan":90}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"deadline return book /by 2023-01-09","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"event holiday /from 2023-12-02 /to 2023-12-25","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":11}},{"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":"tllshan"},"content":"java -classpath ..\\bin ChatterChicken \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"tllshan":1,"-":20}}] +[{"path":"src/main/java/chatterchicken/CCException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"package chatterchicken;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"public class CCException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":" public CCException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":7}},{"path":"src/main/java/chatterchicken/ChatterChicken.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"package chatterchicken;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"import chatterchicken.parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"import chatterchicken.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"import chatterchicken.tasklist.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"import chatterchicken.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":"public class ChatterChicken {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" public static final String PATH \u003d \"src/main/data/task-list.txt\";","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" private final Parser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" private final Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" private final Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" public ChatterChicken() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" this.storage \u003d new Storage(parser);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" ChatterChicken chatterChicken \u003d new ChatterChicken();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" chatterChicken.run();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":" * Initiates the main loop of the chatterchicken.ChatterChicken application.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":" * Reads user input, processes commands, and provides responses until the user chooses to exit.","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":" * Catches and displays exceptions.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"tllshan"},"content":" private void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tllshan"},"content":" try (Scanner sc \u003d new Scanner(System.in)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tllshan"},"content":" tasks \u003d new TaskList(storage.loadTasksFromFile(), ui);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tllshan"},"content":" ui.displayGreeting();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tllshan"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tllshan"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tllshan"},"content":" Command command \u003d parser.parseInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tllshan"},"content":" executeCommand(command);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tllshan"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tllshan"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tllshan"},"content":" } catch (CCException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tllshan"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tllshan"},"content":" ui.displayFarewell();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tllshan"},"content":" * Executes the specified command by invoking corresponding methods on the tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tllshan"},"content":" * @param command The parsed user command.","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tllshan"},"content":" * @throws CCException If an error occurs during command execution.","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tllshan"},"content":" private void executeCommand(Command command) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tllshan"},"content":" String action \u003d command.getAction();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tllshan"},"content":" String taskDescription \u003d command.getTaskDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tllshan"},"content":" switch (action) {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"tllshan"},"content":" case \"list\":","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"tllshan"},"content":" tasks.printList();","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"tllshan"},"content":" case \"mark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"tllshan"},"content":" tasks.markTask(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"tllshan"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"tllshan"},"content":" tasks.unmarkTask(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"tllshan"},"content":" case \"delete\":","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"tllshan"},"content":" tasks.deleteTask(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"tllshan"},"content":" case \"todo\":","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"tllshan"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"tllshan"},"content":" case \"event\":","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"tllshan"},"content":" tasks.addTask(parser.parseTask(action, taskDescription));","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"tllshan"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :\u003c\");","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":84}},{"path":"src/main/java/chatterchicken/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"package chatterchicken;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"public class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":" private final String action;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":" private final String taskDescription;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":" public Command(String action, String taskDescription) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" this.action \u003d action;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" public String getAction() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" return action;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" public String getTaskDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" return taskDescription;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tllshan":19}},{"path":"src/main/java/chatterchicken/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"package chatterchicken.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"import chatterchicken.CCException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"import chatterchicken.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"import chatterchicken.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"import chatterchicken.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":"import chatterchicken.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":"import chatterchicken.task.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" * Parses the input command and creates a chatterchicken.Command object.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" * This method extracts the action and task description from the input and returns a chatterchicken.Command object.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" * @param input The input command provided by the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" * @return A chatterchicken.Command object representing the parsed command.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" * @throws CCException If an error occurs during parsing.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" public Command parseInput(String input) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" int space \u003d input.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" String action \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" String taskDescription \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" if (space \u003d\u003d -1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" action \u003d input;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" action \u003d input.substring(0, space);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":" taskDescription \u003d input.substring(space + 1, input.length());","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" return new Command(action, taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tllshan"},"content":" * Parses a task from a line of data file input and returns the corresponding Task object.","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tllshan"},"content":" * This method extracts task details from the input, creates a chatterchicken.Command object, and parses the Task type.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tllshan"},"content":" * @param fileLine The input line from the data file containing task details.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tllshan"},"content":" * @return A Task object representing the parsed task.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tllshan"},"content":" * @throws CCException If an error occurs during parsing.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tllshan"},"content":" public Task parseTaskFromFile(String fileLine) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tllshan"},"content":" char done \u003d fileLine.charAt(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tllshan"},"content":" String input \u003d fileLine.substring(1, fileLine.length());","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tllshan"},"content":" Command command \u003d parseInput(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tllshan"},"content":" Task task \u003d parseTask(command.getAction(), command.getTaskDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"tllshan"},"content":" if (done \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tllshan"},"content":" task.setDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tllshan"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tllshan"},"content":" * Parses a Task object based on its type and input details.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tllshan"},"content":" * @param type The type of the task (todo, deadline, event).","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"tllshan"},"content":" * @param input The input containing task details.","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tllshan"},"content":" * @return A Task object representing the parsed task.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tllshan"},"content":" * @throws CCException If an error occurs during parsing or task creation.","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tllshan"},"content":" public Task parseTask(String type, String input) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tllshan"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tllshan"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tllshan"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tllshan"},"content":" task \u003d parseToDo(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tllshan"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"tllshan"},"content":" task \u003d parseDeadline(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tllshan"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tllshan"},"content":" task \u003d parseEvent(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"tllshan"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"tllshan"},"content":" return task;","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"tllshan"},"content":" * Parses the input string to create a new ToDo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"tllshan"},"content":" * @param taskDescription The description of the ToDo task.","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"tllshan"},"content":" * @return A new ToDo task object created from the provided description.","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"tllshan"},"content":" * @throws CCException If the description is empty.","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"tllshan"},"content":" private ToDo parseToDo (String taskDescription) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"tllshan"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"tllshan"},"content":" return new ToDo(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"tllshan"},"content":" * Parses the input string to create a new Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"tllshan"},"content":" * @param taskDescription The description and end time of the Deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"tllshan"},"content":" * @return A new Deadline task object created from the provided description.","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"tllshan"},"content":" * @throws CCException If the input format is incorrect or if there are empty fields.","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"tllshan"},"content":" private Deadline parseDeadline(String taskDescription) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"tllshan"},"content":" String[] fields \u003d taskDescription.split(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"tllshan"},"content":" if (fields.length !\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"OOPS!!! Incorrect format for deadline.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"tllshan"},"content":" String name \u003d fields[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"tllshan"},"content":" String end \u003d fields[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"tllshan"},"content":" if (name.isEmpty() || end.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"OOPS!!! Empty field for deadline detected.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"tllshan"},"content":" return new Deadline(taskDescription, name, parseDate(end));","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"tllshan"},"content":" * Parses the input string to create a new Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"tllshan"},"content":" * @param taskDescription The description, start time, and end time of the Event task.","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"tllshan"},"content":" * @return A new Event task object created from the provided description.","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"tllshan"},"content":" * @throws CCException If the input format is incorrect or if there are empty fields.","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"tllshan"},"content":" private Event parseEvent(String taskDescription) throws CCException {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"tllshan"},"content":" String[] fields \u003d taskDescription.split(\"/from|/to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"tllshan"},"content":" if (fields.length !\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"OOPS!!! Incorrect format for event.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"tllshan"},"content":" String name \u003d fields[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"tllshan"},"content":" String start \u003d fields[1].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"tllshan"},"content":" String end \u003d fields[2].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"tllshan"},"content":" if (name.isEmpty() || start.isEmpty() || end.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"OOPS!!! Empty field for event detected.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"tllshan"},"content":" return new Event(taskDescription, name, parseDate(start), parseDate(end));","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"tllshan"},"content":" * Parses a string into a LocalDate object.","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"tllshan"},"content":" * @param date The string containing a date to be parsed.","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"tllshan"},"content":" * @return A LocalDate object representing the parsed date.","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"tllshan"},"content":" private static LocalDate parseDate(String date) {","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"tllshan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"tllshan"},"content":" return LocalDate.parse(date);","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"tllshan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"tllshan"},"content":" System.out.println(\"Error parsing date: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"tllshan"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tllshan":147}},{"path":"src/main/java/chatterchicken/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"package chatterchicken.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"import chatterchicken.CCException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"import chatterchicken.ChatterChicken;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"import chatterchicken.parser.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"import chatterchicken.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":"import chatterchicken.tasklist.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" public Storage(Parser parser) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" this.parser \u003d parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" * Loads tasks from the data file and returns them as an ArrayList.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" * If the data file doesn\u0027t exist, a new file is created.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" * @return An ArrayList containing the loaded tasks, or null in case of errors.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":" public ArrayList\u003cTask\u003e loadTasksFromFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":" File dataFile \u003d Paths.get(ChatterChicken.PATH).toAbsolutePath().toFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":" if (!dataFile.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"tllshan"},"content":" dataFile.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tllshan"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tllshan"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(dataFile));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"tllshan"},"content":" String currLine \u003d reader.readLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"tllshan"},"content":" while (currLine !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tllshan"},"content":" Task task \u003d parser.parseTaskFromFile(currLine);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tllshan"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"tllshan"},"content":" currLine \u003d reader.readLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"tllshan"},"content":" reader.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"tllshan"},"content":" return taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tllshan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"tllshan"},"content":" System.err.println(\"An error occurred while loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"tllshan"},"content":" } catch (CCException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"tllshan"},"content":" System.err.println(\"An error occurred while adding tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"tllshan"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tllshan"},"content":" * Saves tasks from the provided chatterchicken.tasklist.TaskList to the data file.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"tllshan"},"content":" * @param taskList The chatterchicken.tasklist.TaskList containing tasks to be saved.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"tllshan"},"content":" public void saveTasksToFile(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"tllshan"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"tllshan"},"content":" File dataFile \u003d Paths.get(ChatterChicken.PATH).toAbsolutePath().toFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"tllshan"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(dataFile));","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"tllshan"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"tllshan"},"content":" String taskDescription \u003d task.getTaskForSaving() + \"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"tllshan"},"content":" writer.append(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"tllshan"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"tllshan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"tllshan"},"content":" System.err.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"tllshan":75}},{"path":"src/main/java/chatterchicken/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"package chatterchicken.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":" private final LocalDate end;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" public Deadline(String taskDescription, String name, LocalDate end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":" super(taskDescription, name);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" * Generates the formatted representation of the deadline task.","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" * The format includes the task status, task type, description, and end time.","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" * @return The formatted representation of the deadline task.","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" public String getTaskForPrinting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" return String.format(\"[%s][D] %s (by: %s)\", super.checkDone(), super.getName(), super.formatDate(end));","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" public String getTaskDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" return \"deadline \" + super.getTaskDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":28}},{"path":"src/main/java/chatterchicken/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"package chatterchicken.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":" private final LocalDate start;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" private final LocalDate end;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" public Event(String taskDescription, String name, LocalDate start, LocalDate end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" super(taskDescription, name);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" * Generates the formatted representation of the event task.","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" * The format includes the task status, task type, description, start time, and end time.","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" * @return The formatted representation of the event task.","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" public String getTaskForPrinting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" return String.format(\"[%s][E] %s (from: %s to: %s)\",","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" super.checkDone(),","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" super.getName(),","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" super.formatDate(start),","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" super.formatDate(end));","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" public String getTaskDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":" return \"event \" + super.getTaskDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":35}},{"path":"src/main/java/chatterchicken/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"package chatterchicken.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" private final String taskDescription;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":" private final String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" public Task(String taskDescription, String name) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" protected String checkDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" return isDone ? \"X\" : \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" public String formatDate(LocalDate date) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" return date.format(formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" protected String getName() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" return this.name;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":" protected String getTaskDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":" return this.taskDescription;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":" public abstract String getTaskForPrinting();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"tllshan"},"content":" public String getTaskForSaving() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"tllshan"},"content":" return checkDone() + getTaskDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"tllshan"},"content":" public void setDone(boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"tllshan"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":43}},{"path":"src/main/java/chatterchicken/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"package chatterchicken.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":" public ToDo(String taskDescription) {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":" super(taskDescription, taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" * Generates the formatted representation of the todo task.","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" * The format includes the task status, task type, and description.","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" * @return The formatted representation of the todo task.","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" public String getTaskForPrinting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" return String.format(\"[%s][T] %s\", super.checkDone(), super.getName());","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" public String getTaskDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" return \"todo \" + super.getTaskDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":24}},{"path":"src/main/java/chatterchicken/tasklist/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"package chatterchicken.tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"import chatterchicken.CCException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"import chatterchicken.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"import chatterchicken.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" * The chatterchicken.tasklist.TaskList class represents a collection of tasks managed by the chatterchicken.ChatterChicken task manager.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" * It allows for adding, marking, unmarking, and deleting tasks, as well as printing the list of tasks","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":" * along with their respective indexes. Tasks can be of different types: ToDo, Deadline, and Event.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" private final Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" * Adds a new task to the task list based on the provided Task object.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" * Displays a confirmation message with the added task\u0027s details.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" * @param task The task to be added to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" * @throws CCException If there is an error in adding the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":" ui.displayAddTask(task, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tllshan"},"content":" * Deletes a task from the task list based on the provided input.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tllshan"},"content":" * Displays a confirmation message after deleting the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tllshan"},"content":" * @param input The input containing task information to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tllshan"},"content":" * @throws CCException If there is an error in deleting the task or if the input is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tllshan"},"content":" public void deleteTask(String input) throws CCException {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tllshan"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tllshan"},"content":" int index \u003d getIndex(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tllshan"},"content":" Task task \u003d taskList.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tllshan"},"content":" taskList.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tllshan"},"content":" ui.displayDeleteTask(task, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tllshan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"Invalid input for list of length \" + taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"tllshan"},"content":" * Marks a task as done based on the provided input.","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"tllshan"},"content":" * Displays a confirmation message with the marked task\u0027s details.","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"tllshan"},"content":" * @param input The input containing task information to mark as done.","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"tllshan"},"content":" * @throws CCException If there is an error in marking the task or if the input is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"tllshan"},"content":" public void markTask(String input) throws CCException {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"tllshan"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"tllshan"},"content":" Task task \u003d taskList.get(getIndex(input));","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"tllshan"},"content":" task.setDone(true);","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"tllshan"},"content":" ui.displayMarkTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"tllshan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"Invalid input for marking list of length \" + taskList.size());","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"tllshan"},"content":" * Unmarks a previously marked task as not done based on the provided input.","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"tllshan"},"content":" * Displays a confirmation message with the unmarked task\u0027s details.","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"tllshan"},"content":" * @param input The input containing task information to unmark.","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"tllshan"},"content":" * @throws CCException If there is an error in unmarking the task or if the input is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"tllshan"},"content":" public void unmarkTask(String input) throws CCException {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"tllshan"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"tllshan"},"content":" Task task \u003d taskList.get(getIndex(input));","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"tllshan"},"content":" task.setDone(false);","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"tllshan"},"content":" ui.displayUnmarkTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tllshan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"tllshan"},"content":" throw new CCException(\"Invalid input for list of length \" + taskList.size());","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"tllshan"},"content":" * Retrieves the index of a task based on the provided input.","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"tllshan"},"content":" * @param input The input containing task information and index as the last character.","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"tllshan"},"content":" * @return The index of the task parsed from the input.","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"tllshan"},"content":" private int getIndex(String input) {","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"tllshan"},"content":" return input.charAt(input.length() - 1) - \u00270\u0027 - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"tllshan"},"content":" * Prints the list of tasks with their respective indexes.","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"tllshan"},"content":" public void printList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"tllshan"},"content":" ui.displayList(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"tllshan"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"tllshan"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"tllshan"},"content":" return taskList.iterator();","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":109}},{"path":"src/main/java/chatterchicken/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"package chatterchicken.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"import chatterchicken.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":" private static final String LINE \u003d \"\\n _____________________________________________________________________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":" private static final String INDENT \u003d \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":" private static final String INDENT_BIG \u003d \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"tllshan"},"content":" * Displays a greeting message to the user to introduce chatterchicken.ChatterChicken.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"tllshan"},"content":" public void displayGreeting() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"tllshan"},"content":" printToScreen(INDENT + \"Hello! I\u0027m chatterchicken.ChatterChicken!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"tllshan"},"content":" + INDENT + \"What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"tllshan"},"content":" * Displays a farewell message to the user as they exit the chatterchicken.ChatterChicken application.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"tllshan"},"content":" public void displayFarewell() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"tllshan"},"content":" printToScreen(INDENT + \"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"tllshan"},"content":" * Displays a message indicating that a task has been added to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"tllshan"},"content":" * @param task The task that was added.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"tllshan"},"content":" * @param size The updated size of the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"tllshan"},"content":" public void displayAddTask(Task task, int size) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"tllshan"},"content":" printToScreen(INDENT + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"tllshan"},"content":" + INDENT_BIG + task.getTaskForPrinting() + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"tllshan"},"content":" + INDENT + \"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"tllshan"},"content":" * Displays a message indicating that a task has been deleted from the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"tllshan"},"content":" * @param task The task that was deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"tllshan"},"content":" * @param size The updated size of the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"tllshan"},"content":" public void displayDeleteTask(Task task, int size) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"tllshan"},"content":" printToScreen(INDENT + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"tllshan"},"content":" + INDENT_BIG + task.getTaskForPrinting() + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"tllshan"},"content":" + INDENT + \"Now you have \" + size + \" tasks in your list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"tllshan"},"content":" * Displays a message indicating that a task has been marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"tllshan"},"content":" * @param task The task that was marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"tllshan"},"content":" public void displayMarkTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"tllshan"},"content":" printToScreen(INDENT + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"tllshan"},"content":" + INDENT_BIG + task.getTaskForPrinting());","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"tllshan"},"content":" * Displays a message indicating that a task has been marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"tllshan"},"content":" * @param task The task that was marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"tllshan"},"content":" public void displayUnmarkTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"tllshan"},"content":" printToScreen(INDENT + \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"tllshan"},"content":" + INDENT_BIG + task.getTaskForPrinting());","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"tllshan"},"content":" * Displays the list of tasks to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"tllshan"},"content":" * @param taskList The list of tasks to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"tllshan"},"content":" public void displayList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"tllshan"},"content":" System.out.println(LINE + INDENT + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"tllshan"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"tllshan"},"content":" System.out.println(INDENT_BIG + (i + 1) + \".\" + taskList.get(i).getTaskForPrinting());","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"tllshan"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"tllshan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"tllshan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"tllshan"},"content":" * Prints a message to the screen, surrounded by the predefined line separator.","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"tllshan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"tllshan"},"content":" * @param message The message to be printed.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"tllshan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"tllshan"},"content":" public void printToScreen(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"tllshan"},"content":" System.out.println(LINE + message + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"tllshan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"tllshan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"tllshan":93}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tllshan"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"tllshan"},"content":"deadline return book /by 2023-01-09","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"tllshan"},"content":"event holiday /from 2023-12-02 /to 2023-12-25","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"tllshan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"tllshan"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"tllshan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"tllshan"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"tllshan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"tllshan"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"tllshan"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"tllshan"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"tllshan":11}},{"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":"tllshan"},"content":"java -classpath ..\\bin ChatterChicken \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"tllshan":1,"-":20}}] diff --git a/tllshan_ip_master/commits.json b/tllshan_ip_master/commits.json index d2d78a07..d7a1e692 100644 --- a/tllshan_ip_master/commits.json +++ b/tllshan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tllshan":[{"date":"2023-08-24","commitResults":[{"hash":"e19899ff10e632fa289211f8d8e938135c841a6a","isMergeCommit":false,"messageTitle":"Implemented Level 0. Rename, Greet, Exit","messageBody":"Renamed Duke to ChatterChicken.\nAdded greeting and exit.\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"755b682e8ec31a464d32aa47fc93d5260a432f83","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"Added indentation to lines printed.\nAdded scanner to echo user input.\nExits on \"bye\" input.\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"2c74862e1a0709ae32f202789fcf06fdcb61be43","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"Added Task and List classes.\nAdds user inputs as tasks to list.\nPrints list on \"list\" input.\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":3}}},{"hash":"e73d8b9c671388ccde2a1e5297e9538062a19503","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"Added isDone field in Task.\nAdded mechanism to mark and unmark tasks.\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":1}}},{"hash":"8a5136197e096f87e484dc0afd16a5c8486f9c0f","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"Task is an interface.\nToDo, Deadline and Event implement Task.\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":45}}},{"hash":"29f587354aaa4330fb54286602513c03190667cf","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"Tests if ACTUAL.TXT matches EXPECTED.TXT for given inputs in input.txt\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":11,"deletions":6},"bat":{"insertions":1,"deletions":1}}},{"hash":"53da15d1b08f8379b774b74e69b3a5ff04936266","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"Implemented error handling for faulty inputs.\nChanged Task from interface to abstract class.\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":169,"deletions":113}}},{"hash":"7dd7c63d7c1e3cfba33c548a5e740801dcaf268c","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"Added delete task function to list.\n","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":42,"deletions":21}}}]},{"date":"2023-08-27","commitResults":[{"hash":"372e72c763e2359c856d5367bfcf5a8d2d982d28","isMergeCommit":false,"messageTitle":"Add javadocs for classes and methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":44}}}]},{"date":"2023-08-29","commitResults":[{"hash":"87ac7900d142afa7d73b09da66a521a9f39012a9","isMergeCommit":false,"messageTitle":"Implement Level-7 Save for ToDo","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":86,"deletions":12}}},{"hash":"4870db41d21c7518f4d7288cd9d082c58fd181a5","isMergeCommit":false,"messageTitle":"Implement Level-7 Save for Deadline and Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":75}}},{"hash":"67349f35e8b1b4e54c6ef978ea53b9e2a687e84c","isMergeCommit":true,"messageTitle":"Merge pull request #1 from tllshan/branch-Level-7","messageBody":"Branch level 7","fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"be366b654e1cfb218a2f9695c9b9674397eed0a0","isMergeCommit":false,"messageTitle":"Implement Level-8 Dates","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":2},"java":{"insertions":36,"deletions":9}}},{"hash":"2b589150060b052c296805fe135112001365f2db","isMergeCommit":true,"messageTitle":"Merge pull request #2 from tllshan/branch-Level-8","messageBody":"Implement Level-8 Dates","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"f0c515313cb49519bc6f0b1b9defe1950e9f8220","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP: Storage and Parser","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":157,"deletions":145}}},{"hash":"bc533efc6180cb9306915a9ba9a25daa2e34c55a","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP: Command class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":134,"deletions":89}}},{"hash":"e0519ff7e4367b2d7882e909d919092b9e085506","isMergeCommit":false,"messageTitle":"Implemented Level 4. ToDos, Events, Deadlines","messageBody":"Task is an interface.\nToDo, Deadline and Event implement Task.\n","fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":45}}},{"hash":"449dd175b323f52b2adbf6f2cff6de02fa46699a","isMergeCommit":false,"messageTitle":"Implemented A-TextUiTesting","messageBody":"Tests if ACTUAL.TXT matches EXPECTED.TXT for given inputs in input.txt\n","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":11,"deletions":6},"bat":{"insertions":1,"deletions":1}}},{"hash":"3201aa418ea05480f6da27a1f8e75d726376ac08","isMergeCommit":false,"messageTitle":"Implemented Level 5. Handle Errors","messageBody":"Implemented error handling for faulty inputs.\nChanged Task from interface to abstract class.\n","fileTypesAndContributionMap":{"java":{"insertions":169,"deletions":113}}},{"hash":"8dfd4c56d154fdf6e8dbc325a330644d5a27fb4c","isMergeCommit":false,"messageTitle":"Implemented Level 6. Delete","messageBody":"Added delete task function to list.\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":42,"deletions":21}}},{"hash":"4a148cfe47fbb284151f0aad9c189109e81aa40d","isMergeCommit":false,"messageTitle":"Added javadocs for classes and methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":44}}},{"hash":"bbb3e5f30f33b2811fbdd8d31b484be420f8b8e5","isMergeCommit":false,"messageTitle":"Implemented Level-7 Save for ToDo","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":86,"deletions":12}}},{"hash":"9c3bf1a25e86aed763d8de290e4a514f2340803d","isMergeCommit":false,"messageTitle":"Implemented Level-7 Save for Deadline and Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":75}}},{"hash":"4813d5ad8fae772c6be023fe2e60bcf9f0de540f","isMergeCommit":false,"messageTitle":"Implemented Level-8 Dates","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":2},"java":{"insertions":36,"deletions":9}}},{"hash":"e66d6361a229eae8e49eaf69cc6464a6bcc01340","isMergeCommit":false,"messageTitle":"Implemented A-MoreOOP: Storage and Parser","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":157,"deletions":145}}},{"hash":"39e30efa268d127557b8bac0047f798705d64293","isMergeCommit":false,"messageTitle":"Implemented A-MoreOOP: Command class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":134,"deletions":89}}},{"hash":"c2ee6aebe6c5afe766c07a1c6b48733f25849398","isMergeCommit":false,"messageTitle":"Fixed bug in Storage class for saving and loading mechanism","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":110,"deletions":76}}},{"hash":"9d6f86797c8e88a05219a169fbddd965e9b89a9c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/tllshan/ip","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"d8948e3f70fc82749437bec8bedcd37ddcfdcce1","isMergeCommit":false,"messageTitle":"Implemented A-MoreOOP: Ui class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":126,"deletions":71}}}]}]},"authorFileTypeContributionMap":{"tllshan":{"java":618,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":11}},"authorContributionVariance":{"tllshan":332622.53},"authorDisplayNameMap":{"tllshan":"CS2103T-F11-2 TSOU..NNON"}} +{"authorDailyContributionsMap":{"tllshan":[{"date":"2023-08-24","commitResults":[{"hash":"e19899ff10e632fa289211f8d8e938135c841a6a","isMergeCommit":false,"messageTitle":"Implemented Level 0. Rename, Greet, Exit","messageBody":"Renamed Duke to ChatterChicken.\nAdded greeting and exit.\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"755b682e8ec31a464d32aa47fc93d5260a432f83","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"Added indentation to lines printed.\nAdded scanner to echo user input.\nExits on \"bye\" input.\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"2c74862e1a0709ae32f202789fcf06fdcb61be43","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"Added Task and List classes.\nAdds user inputs as tasks to list.\nPrints list on \"list\" input.\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":3}}},{"hash":"e73d8b9c671388ccde2a1e5297e9538062a19503","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"Added isDone field in Task.\nAdded mechanism to mark and unmark tasks.\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":1}}},{"hash":"8a5136197e096f87e484dc0afd16a5c8486f9c0f","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"Task is an interface.\nToDo, Deadline and Event implement Task.\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":45}}},{"hash":"29f587354aaa4330fb54286602513c03190667cf","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"Tests if ACTUAL.TXT matches EXPECTED.TXT for given inputs in input.txt\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":11,"deletions":6},"bat":{"insertions":1,"deletions":1}}},{"hash":"53da15d1b08f8379b774b74e69b3a5ff04936266","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"Implemented error handling for faulty inputs.\nChanged Task from interface to abstract class.\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":169,"deletions":113}}},{"hash":"7dd7c63d7c1e3cfba33c548a5e740801dcaf268c","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"Added delete task function to list.\n","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":42,"deletions":21}}}]},{"date":"2023-08-27","commitResults":[{"hash":"372e72c763e2359c856d5367bfcf5a8d2d982d28","isMergeCommit":false,"messageTitle":"Add javadocs for classes and methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":44}}}]},{"date":"2023-08-29","commitResults":[{"hash":"87ac7900d142afa7d73b09da66a521a9f39012a9","isMergeCommit":false,"messageTitle":"Implement Level-7 Save for ToDo","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":86,"deletions":12}}},{"hash":"4870db41d21c7518f4d7288cd9d082c58fd181a5","isMergeCommit":false,"messageTitle":"Implement Level-7 Save for Deadline and Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":75}}},{"hash":"67349f35e8b1b4e54c6ef978ea53b9e2a687e84c","isMergeCommit":true,"messageTitle":"Merge pull request #1 from tllshan/branch-Level-7","messageBody":"Branch level 7","fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"be366b654e1cfb218a2f9695c9b9674397eed0a0","isMergeCommit":false,"messageTitle":"Implement Level-8 Dates","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":2},"java":{"insertions":36,"deletions":9}}},{"hash":"2b589150060b052c296805fe135112001365f2db","isMergeCommit":true,"messageTitle":"Merge pull request #2 from tllshan/branch-Level-8","messageBody":"Implement Level-8 Dates","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"f0c515313cb49519bc6f0b1b9defe1950e9f8220","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP: Storage and Parser","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":157,"deletions":145}}},{"hash":"bc533efc6180cb9306915a9ba9a25daa2e34c55a","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP: Command class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":134,"deletions":89}}},{"hash":"e0519ff7e4367b2d7882e909d919092b9e085506","isMergeCommit":false,"messageTitle":"Implemented Level 4. ToDos, Events, Deadlines","messageBody":"Task is an interface.\nToDo, Deadline and Event implement Task.\n","fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":45}}},{"hash":"449dd175b323f52b2adbf6f2cff6de02fa46699a","isMergeCommit":false,"messageTitle":"Implemented A-TextUiTesting","messageBody":"Tests if ACTUAL.TXT matches EXPECTED.TXT for given inputs in input.txt\n","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":11,"deletions":6},"bat":{"insertions":1,"deletions":1}}},{"hash":"3201aa418ea05480f6da27a1f8e75d726376ac08","isMergeCommit":false,"messageTitle":"Implemented Level 5. Handle Errors","messageBody":"Implemented error handling for faulty inputs.\nChanged Task from interface to abstract class.\n","fileTypesAndContributionMap":{"java":{"insertions":169,"deletions":113}}},{"hash":"8dfd4c56d154fdf6e8dbc325a330644d5a27fb4c","isMergeCommit":false,"messageTitle":"Implemented Level 6. Delete","messageBody":"Added delete task function to list.\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":42,"deletions":21}}},{"hash":"4a148cfe47fbb284151f0aad9c189109e81aa40d","isMergeCommit":false,"messageTitle":"Added javadocs for classes and methods","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":44}}},{"hash":"bbb3e5f30f33b2811fbdd8d31b484be420f8b8e5","isMergeCommit":false,"messageTitle":"Implemented Level-7 Save for ToDo","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":86,"deletions":12}}},{"hash":"9c3bf1a25e86aed763d8de290e4a514f2340803d","isMergeCommit":false,"messageTitle":"Implemented Level-7 Save for Deadline and Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":75}}},{"hash":"4813d5ad8fae772c6be023fe2e60bcf9f0de540f","isMergeCommit":false,"messageTitle":"Implemented Level-8 Dates","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":2},"java":{"insertions":36,"deletions":9}}},{"hash":"e66d6361a229eae8e49eaf69cc6464a6bcc01340","isMergeCommit":false,"messageTitle":"Implemented A-MoreOOP: Storage and Parser","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":157,"deletions":145}}},{"hash":"39e30efa268d127557b8bac0047f798705d64293","isMergeCommit":false,"messageTitle":"Implemented A-MoreOOP: Command class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":134,"deletions":89}}},{"hash":"c2ee6aebe6c5afe766c07a1c6b48733f25849398","isMergeCommit":false,"messageTitle":"Fixed bug in Storage class for saving and loading mechanism","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":110,"deletions":76}}},{"hash":"9d6f86797c8e88a05219a169fbddd965e9b89a9c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/tllshan/ip","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"d8948e3f70fc82749437bec8bedcd37ddcfdcce1","isMergeCommit":false,"messageTitle":"Implemented A-MoreOOP: Ui class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":126,"deletions":71}}},{"hash":"70adbfa4b56412bfd95cb594ca6a5d728c842ec5","isMergeCommit":false,"messageTitle":"Implemented A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":16}}}]}]},"authorFileTypeContributionMap":{"tllshan":{"java":664,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":11}},"authorContributionVariance":{"tllshan":332524.06},"authorDisplayNameMap":{"tllshan":"CS2103T-F11-2 TSOU..NNON"}} diff --git a/victorpengmx_ip_master/authorship.json b/victorpengmx_ip_master/authorship.json index 39657a13..2681dbdc 100644 --- a/victorpengmx_ip_master/authorship.json +++ b/victorpengmx_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"victorpengmx":2,"-":22}},{"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":"victorpengmx"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"checkstyle {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"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":"victorpengmx"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"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":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"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":{"victorpengmx":6,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":" * The Duke class.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.Duke class.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" * @param filePath The String representing the filePath of the file to be used.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" * Runs the program.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" ui.showWelcomeMsg();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" command.execute(taskList, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" isExit \u003d command.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" new Duke(\"duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"victorpengmx":48,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":" * The DukeException class.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"victorpengmx":10}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.command.AddDeadlineCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.command.AddEventCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.command.AddTodoCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.command.ByeCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"import duke.command.DeleteTaskCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":"import duke.command.MarkDoneCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"import duke.command.MarkNotDoneCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" * The Parser class.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":"public class Parser {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" * Checks if a string is numeric.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" * @param str The string to be checked.","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" * @return True if the string is numeric and false otherwise.","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" public static boolean isNumeric(String str) {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" Double.parseDouble(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" } catch (NullPointerException | NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"bye\" command","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.ByeCommand if the command is valid and null otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" public static ByeCommand byeCommandChecker(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" if (input.trim().equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"list\" command","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.ListCommand containing the keywords if the command is valid and null otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"victorpengmx"},"content":" public static ListCommand listCommandChecker(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"victorpengmx"},"content":" if (input.trim().equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"victorpengmx"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"todo\" command","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.AddTodoCommand if the command is valid and null if the command is not a \"todo\".","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"todo\" but the keywords are not valid","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"victorpengmx"},"content":" public static AddTodoCommand todoCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"victorpengmx"},"content":" String taskName \u003d input.trim().substring(4).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"victorpengmx"},"content":" if (taskName.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! Incorrect description of a todo.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"victorpengmx"},"content":" return new AddTodoCommand(taskName);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"deadline\" command","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.AddDeadlineCommand if the command is valid","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"victorpengmx"},"content":" * and null if the command is not a \"deadline\".","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"deadline\" but the keywords are not valid","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"victorpengmx"},"content":" public static AddDeadlineCommand deadlineCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"victorpengmx"},"content":" String string \u003d input.trim().substring(8).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"victorpengmx"},"content":" if (string.contains(\" /by \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"victorpengmx"},"content":" String[] segments \u003d string.split(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"victorpengmx"},"content":" String eventName \u003d segments[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"victorpengmx"},"content":" String dateString \u003d segments[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"victorpengmx"},"content":" LocalDate.parse(dateString);","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"victorpengmx"},"content":" return new AddDeadlineCommand(eventName, dateString);","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"victorpengmx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something is wrong with the date provided.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! Incorrect description of a deadline.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"event\" command","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"victorpengmx"},"content":" * @return An duke.command.AddEventCommand if the command is valid and null if the command is not an \"event\".","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"event\" but the keywords are not valid","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"victorpengmx"},"content":" public static AddEventCommand eventCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"victorpengmx"},"content":" String string \u003d input.substring(5).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"victorpengmx"},"content":" if (string.contains(\" /from \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"victorpengmx"},"content":" String[] segments \u003d string.split(\"/from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"victorpengmx"},"content":" String eventName \u003d segments[0].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"victorpengmx"},"content":" if (segments[1].contains(\" /to \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"victorpengmx"},"content":" String[] segments2 \u003d segments[1].split(\" /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"victorpengmx"},"content":" String startDate \u003d segments2[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"victorpengmx"},"content":" String endDate \u003d segments2[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"victorpengmx"},"content":" if (startDate.equals(\"\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! Incorrect description of an event.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"victorpengmx"},"content":" LocalDate.parse(startDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"victorpengmx"},"content":" LocalDate.parse(endDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"victorpengmx"},"content":" return new AddEventCommand(eventName, startDate, endDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"victorpengmx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something is wrong with the date provided.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! Incorrect description of an event.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! Incorrect description of an event.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"mark\" command","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.MarkDoneCommand if the command is valid and null if the command is not a \"mark\".","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"mark\" but the keywords are not valid","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"victorpengmx"},"content":" public static MarkDoneCommand markCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"victorpengmx"},"content":" if (!isNumeric(strSegments[1])) {","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Invalid input for index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"victorpengmx"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Invalid input for index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"victorpengmx"},"content":" int index \u003d (int) Double.parseDouble(input.substring(4).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"victorpengmx"},"content":" return new MarkDoneCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"unmark\" command","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.MarkNotDoneCommand if the command is valid and null if the command is not a \"unmark\".","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"unmark\" but the keywords are not valid","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"victorpengmx"},"content":" public static MarkNotDoneCommand unmarkCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"victorpengmx"},"content":" if (!isNumeric(strSegments[1])) {","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Invalid input for index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"victorpengmx"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Invalid input for index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"victorpengmx"},"content":" int index \u003d (int) Double.parseDouble(input.substring(6).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"victorpengmx"},"content":" return new MarkNotDoneCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"delete\" command","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.DeleteTaskCommand if the command is valid and null if the command is not a delete command.","lastModifiedDate":"2023-08-31"},{"lineNumber":215,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"delete\" but the keywords are not valid","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":217,"author":{"gitId":"victorpengmx"},"content":" public static DeleteTaskCommand deleteCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":221,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":222,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"victorpengmx"},"content":" if (!isNumeric(strSegments[1])) {","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Invalid input for index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"victorpengmx"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Invalid input for index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"victorpengmx"},"content":" int index \u003d (int) Double.parseDouble(input.substring(6).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"victorpengmx"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":234,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":236,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid command.","lastModifiedDate":"2023-08-24"},{"lineNumber":238,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user","lastModifiedDate":"2023-08-24"},{"lineNumber":240,"author":{"gitId":"victorpengmx"},"content":" * @return a duke.command.Command corresponding to the correct command","lastModifiedDate":"2023-08-31"},{"lineNumber":241,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is invalid.","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":243,"author":{"gitId":"victorpengmx"},"content":" public static Command parse(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":244,"author":{"gitId":"victorpengmx"},"content":" if (byeCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":245,"author":{"gitId":"victorpengmx"},"content":" return byeCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"victorpengmx"},"content":" } else if (listCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":247,"author":{"gitId":"victorpengmx"},"content":" return listCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":248,"author":{"gitId":"victorpengmx"},"content":" } else if (todoCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":249,"author":{"gitId":"victorpengmx"},"content":" return todoCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":250,"author":{"gitId":"victorpengmx"},"content":" } else if (deadlineCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":251,"author":{"gitId":"victorpengmx"},"content":" return deadlineCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":252,"author":{"gitId":"victorpengmx"},"content":" } else if (eventCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"victorpengmx"},"content":" return eventCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":254,"author":{"gitId":"victorpengmx"},"content":" } else if (markCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":255,"author":{"gitId":"victorpengmx"},"content":" return markCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":256,"author":{"gitId":"victorpengmx"},"content":" } else if (unmarkCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"victorpengmx"},"content":" return unmarkCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":258,"author":{"gitId":"victorpengmx"},"content":" } else if (deleteCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":259,"author":{"gitId":"victorpengmx"},"content":" return deleteCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":260,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":261,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":262,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":263,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"victorpengmx":264}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" * The Storage class.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.Storage class.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" * @param filePath The string representing the path of the file used.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" * Retrieves data from the file and stores it in an array list.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" * @return The array list containing the tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" Scanner s \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" ArrayList\u003cTask\u003e tempList \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" String currentLine \u003d s.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" String eventType \u003d currentLine.substring(4, 5);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" boolean eventDone \u003d currentLine.charAt(7) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" if (eventType.equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":" String eventName \u003d currentLine.substring(10);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":" Todo todo \u003d new Todo(eventName, eventDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" tempList.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"victorpengmx"},"content":" } else if (eventType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d currentLine.substring(10).split(\" By: \");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"victorpengmx"},"content":" String eventName \u003d strSegments[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"victorpengmx"},"content":" String date \u003d strSegments[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"victorpengmx"},"content":" Deadline deadline \u003d new Deadline(eventName, date, eventDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"victorpengmx"},"content":" tempList.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d currentLine.substring(10).split(\" From: \");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"victorpengmx"},"content":" String eventName \u003d strSegments[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments2 \u003d strSegments[1].split(\" To: \");","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"victorpengmx"},"content":" String startDate \u003d strSegments2[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"victorpengmx"},"content":" int length \u003d strSegments2[1].length();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"victorpengmx"},"content":" String endDate \u003d strSegments2[1].substring(0, length);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"victorpengmx"},"content":" Event event \u003d new Event(eventName, startDate, endDate, eventDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"victorpengmx"},"content":" tempList.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"victorpengmx"},"content":" return tempList;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"victorpengmx"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"File not found :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"victorpengmx"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"victorpengmx"},"content":" * Rewrites the contents of the task list to the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"victorpengmx"},"content":" * @param list The array list of the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"victorpengmx"},"content":" * @throws IOException","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"victorpengmx"},"content":" public void rewriteToFile(ArrayList\u003cTask\u003e list) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"victorpengmx"},"content":" writeToFile(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"victorpengmx"},"content":" if (list.size() \u003e 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"victorpengmx"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"victorpengmx"},"content":" appendToFile((i + 1) + \". \" + list.get(i) + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"victorpengmx"},"content":" * Writes a string to the specified text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"victorpengmx"},"content":" * @param textToAdd The string to be written.","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"victorpengmx"},"content":" * @throws IOException","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"victorpengmx"},"content":" public void writeToFile(String textToAdd) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"victorpengmx"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"victorpengmx"},"content":" fw.write(textToAdd);","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"victorpengmx"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"victorpengmx"},"content":" * Adds a string to the end of the specified text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"victorpengmx"},"content":" * @param textToAppend The string to be added.","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"victorpengmx"},"content":" * @throws IOException","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"victorpengmx"},"content":" public void appendToFile(String textToAppend) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"victorpengmx"},"content":" FileWriter fw \u003d new FileWriter(filePath, true); // create a FileWriter in append mode","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"victorpengmx"},"content":" fw.write(textToAppend);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"victorpengmx"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":112}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" * The TaskList class.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"public class TaskList {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * A task list that stores the user\u0027s tasks.","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" * An index that tracks the current newest position in the task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" private int index;","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.TaskList class.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" * @param list The list to become the list in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" this.taskList \u003d list;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" this.index \u003d list.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.TaskList class.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" this.taskList \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" this.index \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" * @param task The task to be added into the task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" public void addTask(Task task) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" this.index++;","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" * Marks the task with the specified index as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"victorpengmx"},"content":" * @param index The index of the task to be marked as done","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"victorpengmx"},"content":" public void markDone(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"victorpengmx"},"content":" Task task \u003d this.taskList.get(index - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"victorpengmx"},"content":" task.setDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"victorpengmx"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! There is no task with this index number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"victorpengmx"},"content":" * Marks the task with the specified index as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"victorpengmx"},"content":" * @param index The index of the task to be marked as not done","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"victorpengmx"},"content":" public void markNotDone(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"victorpengmx"},"content":" Task task \u003d this.taskList.get(index - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"victorpengmx"},"content":" task.setNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"victorpengmx"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! There is no task with this index number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"victorpengmx"},"content":" * Removes the task with the specified index from the task list.","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"victorpengmx"},"content":" * @param number The index of the task to be removed.","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"victorpengmx"},"content":" public void delete(int number) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"victorpengmx"},"content":" this.index \u003d this.taskList.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"victorpengmx"},"content":" this.taskList.remove(number - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"victorpengmx"},"content":" this.index--;","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"victorpengmx"},"content":" } catch (IndexOutOfBoundsException | NullPointerException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! There is no task with this index number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"victorpengmx"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"victorpengmx"},"content":" return this.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"victorpengmx"},"content":" public int getIndex() {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"victorpengmx"},"content":" return this.index;","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"victorpengmx"},"content":" public Task getTask(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"victorpengmx"},"content":" return this.taskList.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"victorpengmx"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! There is no task with this index number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"victorpengmx"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"victorpengmx"},"content":" return this.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"victorpengmx":110}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" * The Ui class.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" * Prints the welcome message.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" public void showWelcomeMsg() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Hello! I\u0027m Albatross\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Please enter a command\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" * Prints the goodbye message.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" public void showGoodbyeMsg() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Bye! Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" * Prints a message when a task has been successfully added.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" * @param taskString The string representation of the added task.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" * @param index The number of tasks in the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" public void successfulAddTaskMsg(String taskString, int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Now you have \" + index + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"victorpengmx"},"content":" * Prints a message when a task has been successfully marked as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"victorpengmx"},"content":" * @param taskString The string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"victorpengmx"},"content":" public void successfulMarkDoneMsg(String taskString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"victorpengmx"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"victorpengmx"},"content":" * Prints a message when a task has been successfully marked as not done.","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"victorpengmx"},"content":" * @param taskString The string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"victorpengmx"},"content":" public void successfulMarkNotDoneMsg(String taskString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"victorpengmx"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"victorpengmx"},"content":" * Prints a message when a task has been successfully deleted.","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"victorpengmx"},"content":" * @param taskString The string representation of the added task.","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"victorpengmx"},"content":" * @param index The number of tasks in the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"victorpengmx"},"content":" public void successfulTaskDeletionMsg(String taskString, int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"victorpengmx"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Now you have \" + index + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"victorpengmx"},"content":" * Prints all tasks in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"victorpengmx"},"content":" * @param taskList The task list being printed.","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"victorpengmx"},"content":" public void printTaskList(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"victorpengmx"},"content":" ArrayList\u003cTask\u003e list \u003d taskList.getList();","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"victorpengmx"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"victorpengmx"},"content":" if (list.get(i) !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"victorpengmx"},"content":" System.out.println((i + 1) + \". \" + list.get(i).displayableForm());","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":95}},{"path":"src/main/java/duke/command/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * The AddDeadlineCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" private String taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" private String dueDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.command.AddDeadlineCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" * @param taskName","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" * @param dueDate","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" public AddDeadlineCommand(String taskName, String dueDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" Deadline deadline \u003d new Deadline(taskName, dueDate, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" storage.appendToFile(deadline.displayableForm());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" ui.successfulAddTaskMsg(deadline.displayableForm(), taskList.getIndex());","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":44}},{"path":"src/main/java/duke/command/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * The AddEventCommand.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" private String taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" private String startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" private String endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.command.Command class.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" * @param taskName","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" * @param startDate","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" * @param endDate","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" public AddEventCommand(String taskName, String startDate, String endDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" Event event \u003d new Event(taskName, startDate, endDate, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" taskList.addTask(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" storage.appendToFile(event.displayableForm());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" ui.successfulAddTaskMsg(event.displayableForm(), taskList.getIndex());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":48}},{"path":"src/main/java/duke/command/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * The AddTodoCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"public class AddTodoCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" private String taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.command.AddTodoCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" * @param taskName","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" public AddTodoCommand(String taskName) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" Todo todo \u003d new Todo(taskName, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" storage.appendToFile(todo.displayableForm());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" ui.successfulAddTaskMsg(todo.displayableForm(), taskList.getIndex());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":42}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" * The ByeCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" ui.showGoodbyeMsg();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":20}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" * The Command class.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" * Creates a new task, adds it to the task list, stores it in the file,","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" * and prints out a message.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" * @param taskList","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" * @param ui","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" * @param storage","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" public abstract void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" * Indicates if the program is supposed to end or not after this command is executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":27}},{"path":"src/main/java/duke/command/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * The DeleteTaskCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.command.DeleteTaskCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" * @param index Index of the task to be deleted.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" public DeleteTaskCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" Task task \u003d taskList.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" taskList.delete(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" storage.rewriteToFile(taskList.getList());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" ui.successfulTaskDeletionMsg(task.displayableForm(), taskList.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":42}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" * The ListCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" ui.printTaskList(taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":20}},{"path":"src/main/java/duke/command/MarkDoneCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * The MarkDoneCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"public class MarkDoneCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.command.MarkDoneCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" * @param index Index of the task to be marked.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" public MarkDoneCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" taskList.markDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" Task task \u003d taskList.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" storage.rewriteToFile(taskList.getList());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" ui.successfulMarkDoneMsg(task.displayableForm());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":42}},{"path":"src/main/java/duke/command/MarkNotDoneCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * The MarkNotDoneCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"public class MarkNotDoneCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.command.MarkNotDoneCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" * @param index Index of the task to be marked.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" public MarkNotDoneCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" taskList.markNotDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" Task task \u003d taskList.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" storage.rewriteToFile(taskList.getList());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" ui.successfulMarkNotDoneMsg(task.displayableForm());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":42}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":" * The Deadline class.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" private LocalDate deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.task.Todo class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" * @param name The name of the todo task.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" * @param done Whether the task is marked done or not.","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" public Deadline(String name, String deadline, boolean done) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" super(name, done);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" this.deadline \u003d LocalDate.parse(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" if (this.done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" return \"[D][X] \" + this.name + \" By: \" + this.deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" return \"[D][ ] \" + this.name + \" By: \" + this.deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" * Displays the deadline in a user-friendly format.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" * @return The string representation of the deadline for display to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" public String displayableForm() {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" if (this.done) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" return \"[D][X] \" + this.name + \" By: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" return \"[D][ ] \" + this.name + \" By: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"victorpengmx":44}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":" * The Event class.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" private LocalDate startDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" private LocalDate endDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" * The constructor for the duke.task.Event class.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" * @param name Name of the event task.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" * @param startDate Start date of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" * @param endDate End date of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" * @param done Whether the task is marked done or not.","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" public Event(String name, String startDate, String endDate, boolean done) {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" super(name, done);","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" this.startDate \u003d LocalDate.parse(startDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" this.endDate \u003d LocalDate.parse(endDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" if (this.done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" return \"[E][X] \" + this.name + \" From: \" + this.startDate + \" To: \" + this.endDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" return \"[E][ ] \" + this.name + \" From: \" + this.startDate + \" To: \" + this.endDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" * Displays the event in a user-friendly format.","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" * @return The string representation of the event for display to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" public String displayableForm() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" String newStartDate \u003d this.startDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" String newEndDate \u003d this.endDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" if (this.done) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" return \"[E][X] \" + this.name + \" From: \" + newStartDate + \" To: \" + newEndDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" return \"[E][ ] \" + this.name + \" From: \" + newStartDate + \" To: \" + newEndDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"victorpengmx":49}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":" * The Task class.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":" protected boolean done;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" protected String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.task.Task class.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" * @param name The name of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" * @param done Whether the task is marked done or not.","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" public Task(String name, boolean done) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" * Sets the task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" public void setDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" * Sets the task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" public void setNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" * @return the string representing the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" if (this.done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" return \"[X] \" + this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" return \"[ ] \" + this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" public String displayableForm() {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"victorpengmx"},"content":" * Returns the name of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"victorpengmx"},"content":" * @return the name of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"victorpengmx"},"content":" public String getName() {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"victorpengmx"},"content":" return this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"victorpengmx":61}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":" * The Todo class.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.task.Todo class.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" * @param name The name of the todo task.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" * @param done Whether the task is marked done or not.","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" public Todo(String name, boolean done) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" super(name, done);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" if (this.done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" return \"[T][X] \" + this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" return \"[T][ ] \" + this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" * Displays the todo in a user-friendly format.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" * @return The string representation of the todo for display to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" public String displayableForm() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" return this.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"victorpengmx":34}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" public void deleteTask_validIndexNumber_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" Todo todo \u003d new Todo(\"nothing\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" taskList.delete(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" assertEquals(0, taskList.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" public void deleteTask_invalidIndexNumber_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" taskList.delete(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" assertEquals(\"☹ OOPS!!! There is no task with this index number.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" public void getTask_validIndexNumber_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" Todo todo \u003d new Todo(\"nothing\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" Task task \u003d taskList.getTask(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" assertEquals(task.equals(todo), true);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" public void getTask_invalidIndexNumber_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"victorpengmx"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"victorpengmx"},"content":" taskList.getTask(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"victorpengmx"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"victorpengmx"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"victorpengmx"},"content":" assertEquals(\"☹ OOPS!!! There is no task with this index number.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"victorpengmx":58}},{"path":"src/test/java/duke/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" public void newDeadline_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" // a new Deadline is created correctly.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" Deadline deadline \u003d new Deadline(\"something\", \"1111-11-11\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" assertEquals(\"[D][ ] something By: 1111-11-11\", deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" public void showAltForm_stringRep_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" Deadline deadline \u003d new Deadline(\"something\", \"1111-11-11\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" assertEquals(\"[D][ ] something By: Nov 11 1111\", deadline.displayableForm());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" public void toggleDoneStatus_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" // the done status of a deadline can be toggled successfully.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" Deadline deadline \u003d new Deadline(\"something\", \"1111-11-11\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" deadline.setDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" assertEquals(\"[D][X] something By: 1111-11-11\", deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" deadline.setNotDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" assertEquals(\"[D][ ] something By: 1111-11-11\", deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"victorpengmx":30}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"unmark this","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"todo nothing","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"deadline nothing","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"deadline nothing /to 1111-11-11","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"deadline /by 1111-11-11","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"deadline nothing /by tmr morning","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"deadline nothing /by 1111-11-11","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"event","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":"event nothing","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":"event nothing /from /to","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"event nothing /from tmr morning /to later","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":"event nothing /from 1111-11-11 /to 1111-11-11","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"mark 3","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":"unmark 3","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":"delete","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":"delete everything","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":"delete 10","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":"list list","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":"idunno","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"victorpengmx":27}},{"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":"victorpengmx"},"content":"javac -cp ..\\src\\main\\java\\duke -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\*.java","lastModifiedDate":"2023-08-31"},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"victorpengmx":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":"victorpengmx"},"content":"if ! javac -cp ../src/main/java/duke -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2023-08-31"},{"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":"-"},"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":{"victorpengmx":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"victorpengmx":2,"-":22}},{"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":"victorpengmx"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"checkstyle {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"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":"victorpengmx"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-31"},{"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":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"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":{"victorpengmx":6,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":" * The Duke class.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.Duke class.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" * @param filePath The String representing the filePath of the file to be used.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" * Runs the program.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" ui.showWelcomeMsg();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" command.execute(taskList, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" isExit \u003d command.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" new Duke(\"duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"victorpengmx":48,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":" * The DukeException class.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"victorpengmx":10}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.command.AddDeadlineCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.command.AddEventCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.command.AddTodoCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.command.ByeCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":"import duke.command.DeleteTaskCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":"import duke.command.FindTaskCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":"import duke.command.MarkDoneCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":"import duke.command.MarkNotDoneCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" * The Parser class.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":"public class Parser {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" * Checks if a string is numeric.","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" * @param str The string to be checked.","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" * @return True if the string is numeric and false otherwise.","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" public static boolean isNumeric(String str) {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" Double.parseDouble(str);","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" } catch (NullPointerException | NumberFormatException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"bye\" command.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.ByeCommand if the command is valid and null otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" public static ByeCommand byeCommandChecker(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" if (input.trim().equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"list\" command.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.ListCommand containing the keywords if the command is valid and null otherwise.","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"victorpengmx"},"content":" public static ListCommand listCommandChecker(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"victorpengmx"},"content":" if (input.trim().equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"victorpengmx"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"todo\" command.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.AddTodoCommand if the command is valid and null if the command is not a \"todo\".","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"todo\" but the keywords are not valid.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"victorpengmx"},"content":" public static AddTodoCommand todoCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"victorpengmx"},"content":" String taskName \u003d input.trim().substring(4).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"victorpengmx"},"content":" if (taskName.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! Incorrect description of a todo.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"victorpengmx"},"content":" return new AddTodoCommand(taskName);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"deadline\" command.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.AddDeadlineCommand if the command is valid","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"victorpengmx"},"content":" * and null if the command is not a \"deadline\".","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"deadline\" but the keywords are not valid.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"victorpengmx"},"content":" public static AddDeadlineCommand deadlineCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"victorpengmx"},"content":" String string \u003d input.trim().substring(8).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"victorpengmx"},"content":" if (string.contains(\" /by \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"victorpengmx"},"content":" String[] segments \u003d string.split(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"victorpengmx"},"content":" String eventName \u003d segments[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"victorpengmx"},"content":" String dateString \u003d segments[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"victorpengmx"},"content":" LocalDate.parse(dateString);","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"victorpengmx"},"content":" return new AddDeadlineCommand(eventName, dateString);","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"victorpengmx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something is wrong with the date provided.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! Incorrect description of a deadline.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"event\" command.","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"victorpengmx"},"content":" * @return An duke.command.AddEventCommand if the command is valid and null if the command is not an \"event\".","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"event\" but the keywords are not valid.","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"victorpengmx"},"content":" public static AddEventCommand eventCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"victorpengmx"},"content":" String string \u003d input.substring(5).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"victorpengmx"},"content":" if (string.contains(\" /from \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"victorpengmx"},"content":" String[] segments \u003d string.split(\"/from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"victorpengmx"},"content":" String eventName \u003d segments[0].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"victorpengmx"},"content":" if (segments[1].contains(\" /to \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"victorpengmx"},"content":" String[] segments2 \u003d segments[1].split(\" /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"victorpengmx"},"content":" String startDate \u003d segments2[0].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"victorpengmx"},"content":" String endDate \u003d segments2[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"victorpengmx"},"content":" if (startDate.equals(\"\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! Incorrect description of an event.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"victorpengmx"},"content":" LocalDate.parse(startDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"victorpengmx"},"content":" LocalDate.parse(endDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"victorpengmx"},"content":" return new AddEventCommand(eventName, startDate, endDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"victorpengmx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something is wrong with the date provided.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! Incorrect description of an event.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! Incorrect description of an event.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"mark\" command.","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.MarkDoneCommand if the command is valid and null if the command is not a \"mark\".","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"mark\" but the keywords are not valid.","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"victorpengmx"},"content":" public static MarkDoneCommand markCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"victorpengmx"},"content":" if (!isNumeric(strSegments[1])) {","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Invalid input for index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"victorpengmx"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Invalid input for index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"victorpengmx"},"content":" int index \u003d (int) Double.parseDouble(input.substring(4).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"victorpengmx"},"content":" return new MarkDoneCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"unmark\" command.","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.MarkNotDoneCommand if the command is valid and null if the command is not a \"unmark\".","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"unmark\" but the keywords are not valid.","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"victorpengmx"},"content":" public static MarkNotDoneCommand unmarkCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"victorpengmx"},"content":" if (!isNumeric(strSegments[1])) {","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Invalid input for index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"victorpengmx"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Invalid input for index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"victorpengmx"},"content":" int index \u003d (int) Double.parseDouble(input.substring(6).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"victorpengmx"},"content":" return new MarkNotDoneCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"delete\" command.","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.DeleteTaskCommand if the command is valid and null if the command is not a delete command.","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"delete\" but the keywords are not valid.","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"victorpengmx"},"content":" public static DeleteTaskCommand deleteCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":222,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"victorpengmx"},"content":" if (!isNumeric(strSegments[1])) {","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Invalid input for index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"victorpengmx"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":230,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Invalid input for index\");","lastModifiedDate":"2023-08-24"},{"lineNumber":231,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"victorpengmx"},"content":" int index \u003d (int) Double.parseDouble(input.substring(6).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"victorpengmx"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":236,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":238,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid \"find\" command.","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"victorpengmx"},"content":" * @param input The string input by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"victorpengmx"},"content":" * @return A duke.command.FindTaskCommand if the command is valid and null if the command is not a find command.","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is \"find\" but the keywords are not valid","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":246,"author":{"gitId":"victorpengmx"},"content":" public static FindTaskCommand findTaskCommandChecker(String input) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":247,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d input.trim().split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"victorpengmx"},"content":" String command \u003d strSegments[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"victorpengmx"},"content":" if (command.equals(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"victorpengmx"},"content":" String keyword \u003d input.trim().substring(4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"victorpengmx"},"content":" if (keyword.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! Incorrect description of a find command.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"victorpengmx"},"content":" return new FindTaskCommand(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":256,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":260,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":262,"author":{"gitId":"victorpengmx"},"content":" * Checks for a valid command.","lastModifiedDate":"2023-08-24"},{"lineNumber":263,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"victorpengmx"},"content":" * @param input the string input by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"victorpengmx"},"content":" * @return a duke.command.Command corresponding to the correct command.","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException if the command is invalid.","lastModifiedDate":"2023-08-24"},{"lineNumber":267,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":268,"author":{"gitId":"victorpengmx"},"content":" public static Command parse(String input) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":269,"author":{"gitId":"victorpengmx"},"content":" if (byeCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":270,"author":{"gitId":"victorpengmx"},"content":" return byeCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":271,"author":{"gitId":"victorpengmx"},"content":" } else if (listCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":272,"author":{"gitId":"victorpengmx"},"content":" return listCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":273,"author":{"gitId":"victorpengmx"},"content":" } else if (todoCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":274,"author":{"gitId":"victorpengmx"},"content":" return todoCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":275,"author":{"gitId":"victorpengmx"},"content":" } else if (deadlineCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":276,"author":{"gitId":"victorpengmx"},"content":" return deadlineCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":277,"author":{"gitId":"victorpengmx"},"content":" } else if (eventCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":278,"author":{"gitId":"victorpengmx"},"content":" return eventCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":279,"author":{"gitId":"victorpengmx"},"content":" } else if (markCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":280,"author":{"gitId":"victorpengmx"},"content":" return markCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":281,"author":{"gitId":"victorpengmx"},"content":" } else if (unmarkCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":282,"author":{"gitId":"victorpengmx"},"content":" return unmarkCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":283,"author":{"gitId":"victorpengmx"},"content":" } else if (deleteCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":284,"author":{"gitId":"victorpengmx"},"content":" return deleteCommandChecker(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"victorpengmx"},"content":" } else if (findTaskCommandChecker(input) !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":286,"author":{"gitId":"victorpengmx"},"content":" return findTaskCommandChecker(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":287,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":288,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":289,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":290,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":291,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"victorpengmx":291}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" * The Storage class.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.Storage class.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" * @param filePath The string representing the path of the file used.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" * Retrieves data from the file and stores it in an array list.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" * @return The array list containing the tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" Scanner s \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" ArrayList\u003cTask\u003e tempList \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" String currentLine \u003d s.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" String eventType \u003d currentLine.substring(4, 5);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" boolean eventDone \u003d currentLine.charAt(7) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" if (eventType.equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":" String eventName \u003d currentLine.substring(10);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":" Todo todo \u003d new Todo(eventName, eventDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" tempList.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"victorpengmx"},"content":" } else if (eventType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d currentLine.substring(10).split(\" By: \");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"victorpengmx"},"content":" String eventName \u003d strSegments[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"victorpengmx"},"content":" String date \u003d strSegments[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"victorpengmx"},"content":" Deadline deadline \u003d new Deadline(eventName, date, eventDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"victorpengmx"},"content":" tempList.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments \u003d currentLine.substring(10).split(\" From: \");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"victorpengmx"},"content":" String eventName \u003d strSegments[0].trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"victorpengmx"},"content":" String[] strSegments2 \u003d strSegments[1].split(\" To: \");","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"victorpengmx"},"content":" String startDate \u003d strSegments2[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"victorpengmx"},"content":" int length \u003d strSegments2[1].length();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"victorpengmx"},"content":" String endDate \u003d strSegments2[1].substring(0, length);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"victorpengmx"},"content":" Event event \u003d new Event(eventName, startDate, endDate, eventDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"victorpengmx"},"content":" tempList.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"victorpengmx"},"content":" return tempList;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"victorpengmx"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"File not found :(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"victorpengmx"},"content":" };","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"victorpengmx"},"content":" * Rewrites the contents of the task list to the file.","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"victorpengmx"},"content":" * @param list The array list of the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"victorpengmx"},"content":" * @throws IOException","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"victorpengmx"},"content":" public void rewriteToFile(ArrayList\u003cTask\u003e list) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"victorpengmx"},"content":" writeToFile(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"victorpengmx"},"content":" if (list.size() \u003e 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"victorpengmx"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"victorpengmx"},"content":" appendToFile((i + 1) + \". \" + list.get(i) + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"victorpengmx"},"content":" * Writes a string to the specified text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"victorpengmx"},"content":" * @param textToAdd The string to be written.","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"victorpengmx"},"content":" * @throws IOException","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"victorpengmx"},"content":" public void writeToFile(String textToAdd) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"victorpengmx"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"victorpengmx"},"content":" fw.write(textToAdd);","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"victorpengmx"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"victorpengmx"},"content":" * Adds a string to the end of the specified text file.","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"victorpengmx"},"content":" * @param textToAppend The string to be added.","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"victorpengmx"},"content":" * @throws IOException","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"victorpengmx"},"content":" public void appendToFile(String textToAppend) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"victorpengmx"},"content":" FileWriter fw \u003d new FileWriter(filePath, true); // create a FileWriter in append mode","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"victorpengmx"},"content":" fw.write(textToAppend);","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"victorpengmx"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":112}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" * The TaskList class.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"public class TaskList {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * A task list that stores the user\u0027s tasks.","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" * An index that tracks the current newest position in the task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" private int index;","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.TaskList class.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" * @param list The list to become the list in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" this.taskList \u003d list;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" this.index \u003d list.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.TaskList class.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" this.taskList \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" this.index \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" * @param task The task to be added into the task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" public void addTask(Task task) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" this.index++;","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" * Marks the task with the specified index as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"victorpengmx"},"content":" * @param index The index of the task to be marked as done","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"victorpengmx"},"content":" public void markDone(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"victorpengmx"},"content":" Task task \u003d this.taskList.get(index - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"victorpengmx"},"content":" task.setDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"victorpengmx"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! There is no task with this index number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"victorpengmx"},"content":" * Marks the task with the specified index as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"victorpengmx"},"content":" * @param index The index of the task to be marked as not done","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"victorpengmx"},"content":" public void markNotDone(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"victorpengmx"},"content":" Task task \u003d this.taskList.get(index - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"victorpengmx"},"content":" task.setNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"victorpengmx"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! There is no task with this index number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"victorpengmx"},"content":" * Removes the task with the specified index from the task list.","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"victorpengmx"},"content":" * @param number The index of the task to be removed.","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"victorpengmx"},"content":" public void delete(int number) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"victorpengmx"},"content":" this.index \u003d this.taskList.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"victorpengmx"},"content":" this.taskList.remove(number - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"victorpengmx"},"content":" this.index--;","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"victorpengmx"},"content":" } catch (IndexOutOfBoundsException | NullPointerException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! There is no task with this index number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"victorpengmx"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"victorpengmx"},"content":" return this.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"victorpengmx"},"content":" public int getIndex() {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"victorpengmx"},"content":" return this.index;","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"victorpengmx"},"content":" public Task getTask(int index) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"victorpengmx"},"content":" return this.taskList.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"victorpengmx"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! There is no task with this index number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"victorpengmx"},"content":" * Prints the tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"victorpengmx"},"content":" public void printTaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"victorpengmx"},"content":" for (int i \u003d 0; i \u003c this.getSize(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"victorpengmx"},"content":" System.out.println((i + 1) + \". \" + this.taskList.get(i).displayableForm());","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"victorpengmx"},"content":" * Finds tasks in the list that contain the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"victorpengmx"},"content":" * @param keyword The keyword input by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"victorpengmx"},"content":" * @return An array list containing the tasks that contain the key word.","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"victorpengmx"},"content":" public ArrayList\u003cTask\u003e findTasks(String keyword) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"victorpengmx"},"content":" ArrayList\u003cTask\u003e tempList \u003d new ArrayList\u003c\u003e(this.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"victorpengmx"},"content":" for (int i \u003d 0; i \u003c this.getSize(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"victorpengmx"},"content":" if (this.taskList.get(i).getName().contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"victorpengmx"},"content":" tempList.add(this.taskList.get(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"victorpengmx"},"content":" return tempList;","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"victorpengmx"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"☹ OOPS!!! There are no tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"victorpengmx"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"victorpengmx"},"content":" return this.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"victorpengmx":140}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" * The Ui class.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" * Prints the welcome message.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" public void showWelcomeMsg() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Hello! I\u0027m Albatross\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Please enter a command\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" * Prints the goodbye message.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" public void showGoodbyeMsg() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Bye! Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" * Prints a message when a task has been successfully added.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" * @param taskString The string representation of the added task.","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" * @param index The number of tasks in the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" public void successfulAddTaskMsg(String taskString, int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Now you have \" + index + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"victorpengmx"},"content":" * Prints a message when a task has been successfully marked as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"victorpengmx"},"content":" * @param taskString The string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"victorpengmx"},"content":" public void successfulMarkDoneMsg(String taskString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"victorpengmx"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"victorpengmx"},"content":" * Prints a message when a task has been successfully marked as not done.","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"victorpengmx"},"content":" * @param taskString The string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"victorpengmx"},"content":" public void successfulMarkNotDoneMsg(String taskString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"victorpengmx"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"victorpengmx"},"content":" * Prints a message when a task has been successfully deleted.","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"victorpengmx"},"content":" * @param taskString The string representation of the added task.","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"victorpengmx"},"content":" * @param index The number of tasks in the list.","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"victorpengmx"},"content":" public void successfulTaskDeletionMsg(String taskString, int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"victorpengmx"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Now you have \" + index + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"victorpengmx"},"content":" * Prints all tasks in the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"victorpengmx"},"content":" * @param taskList The task list being printed.","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"victorpengmx"},"content":" public void printTaskList(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"victorpengmx"},"content":" taskList.printTaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"victorpengmx"},"content":" * Finds tasks that contain the keyword and prints them in a list.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"victorpengmx"},"content":" * @param taskList The task list to find tasks from.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"victorpengmx"},"content":" * @param keyword The keyword input by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"victorpengmx"},"content":" public void findTasks(TaskList taskList, String keyword) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"victorpengmx"},"content":" ArrayList\u003cTask\u003e list \u003d taskList.findTasks(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"victorpengmx"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"victorpengmx"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"victorpengmx"},"content":" System.out.println((i + 1) + \". \" + list.get(i).displayableForm());","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"victorpengmx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":108}},{"path":"src/main/java/duke/command/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * The AddDeadlineCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" private String taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" private String dueDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.command.AddDeadlineCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" * @param taskName","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" * @param dueDate","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" public AddDeadlineCommand(String taskName, String dueDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" Deadline deadline \u003d new Deadline(taskName, dueDate, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" storage.appendToFile(deadline.displayableForm());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" ui.successfulAddTaskMsg(deadline.displayableForm(), taskList.getIndex());","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":44}},{"path":"src/main/java/duke/command/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * The AddEventCommand.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" private String taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" private String startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" private String endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.command.Command class.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" * @param taskName","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" * @param startDate","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" * @param endDate","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" public AddEventCommand(String taskName, String startDate, String endDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" Event event \u003d new Event(taskName, startDate, endDate, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" taskList.addTask(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" storage.appendToFile(event.displayableForm());","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" ui.successfulAddTaskMsg(event.displayableForm(), taskList.getIndex());","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":48}},{"path":"src/main/java/duke/command/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * The AddTodoCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"public class AddTodoCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" private String taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.command.AddTodoCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" * @param taskName","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" public AddTodoCommand(String taskName) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" Todo todo \u003d new Todo(taskName, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" storage.appendToFile(todo.displayableForm());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" ui.successfulAddTaskMsg(todo.displayableForm(), taskList.getIndex());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":42}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" * The ByeCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" ui.showGoodbyeMsg();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":20}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" * The Command class.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" * Creates a new task, adds it to the task list, stores it in the file,","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" * and prints out a message.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" * @param taskList","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" * @param ui","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" * @param storage","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" public abstract void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" * Indicates if the program is supposed to end or not after this command is executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":27}},{"path":"src/main/java/duke/command/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * The DeleteTaskCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.command.DeleteTaskCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" * @param index Index of the task to be deleted.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" public DeleteTaskCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" Task task \u003d taskList.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" taskList.delete(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" storage.rewriteToFile(taskList.getList());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" ui.successfulTaskDeletionMsg(task.displayableForm(), taskList.getSize());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":42}},{"path":"src/main/java/duke/command/FindTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" * The FindTaskCommand class.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"public class FindTaskCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" private String keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" public FindTaskCommand(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" ui.findTasks(taskList, keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"victorpengmx":27}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" * The ListCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" ui.printTaskList(taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":20}},{"path":"src/main/java/duke/command/MarkDoneCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * The MarkDoneCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"public class MarkDoneCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.command.MarkDoneCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" * @param index Index of the task to be marked.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" public MarkDoneCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" taskList.markDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" Task task \u003d taskList.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" storage.rewriteToFile(taskList.getList());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" ui.successfulMarkDoneMsg(task.displayableForm());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":42}},{"path":"src/main/java/duke/command/MarkNotDoneCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import duke.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import duke.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * The MarkNotDoneCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"public class MarkNotDoneCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.command.MarkNotDoneCommand class.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" * @param index Index of the task to be marked.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" public MarkNotDoneCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" taskList.markNotDone(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" Task task \u003d taskList.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" storage.rewriteToFile(taskList.getList());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" ui.successfulMarkNotDoneMsg(task.displayableForm());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" throw new DukeException(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"victorpengmx":42}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":" * The Deadline class.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" private LocalDate deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.task.Todo class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" * @param name The name of the todo task.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" * @param done Whether the task is marked done or not.","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" public Deadline(String name, String deadline, boolean done) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" super(name, done);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" this.deadline \u003d LocalDate.parse(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" if (this.done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" return \"[D][X] \" + this.name + \" By: \" + this.deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" return \"[D][ ] \" + this.name + \" By: \" + this.deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" * Displays the deadline in a user-friendly format.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" * @return The string representation of the deadline for display to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" public String displayableForm() {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" if (this.done) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" return \"[D][X] \" + this.name + \" By: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" return \"[D][ ] \" + this.name + \" By: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"victorpengmx":44}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":" * The Event class.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" private LocalDate startDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" private LocalDate endDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" * The constructor for the duke.task.Event class.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" * @param name Name of the event task.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" * @param startDate Start date of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" * @param endDate End date of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" * @param done Whether the task is marked done or not.","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" public Event(String name, String startDate, String endDate, boolean done) {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" super(name, done);","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" this.startDate \u003d LocalDate.parse(startDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" this.endDate \u003d LocalDate.parse(endDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" if (this.done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" return \"[E][X] \" + this.name + \" From: \" + this.startDate + \" To: \" + this.endDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" return \"[E][ ] \" + this.name + \" From: \" + this.startDate + \" To: \" + this.endDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" * Displays the event in a user-friendly format.","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" * @return The string representation of the event for display to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" public String displayableForm() {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" String newStartDate \u003d this.startDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" String newEndDate \u003d this.endDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" if (this.done) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" return \"[E][X] \" + this.name + \" From: \" + newStartDate + \" To: \" + newEndDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" return \"[E][ ] \" + this.name + \" From: \" + newStartDate + \" To: \" + newEndDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"victorpengmx":49}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":" * The Task class.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":" protected boolean done;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" protected String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.task.Task class.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" * @param name The name of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" * @param done Whether the task is marked done or not.","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" public Task(String name, boolean done) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" * Sets the task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" public void setDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" * Sets the task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" public void setNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" * @return the string representing the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" if (this.done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" return \"[X] \" + this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" return \"[ ] \" + this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" public String displayableForm() {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"victorpengmx"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"victorpengmx"},"content":" * Returns the name of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"victorpengmx"},"content":" * @return the name of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"victorpengmx"},"content":" public String getName() {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"victorpengmx"},"content":" return this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"victorpengmx":61}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":" * The Todo class.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" * Constructor for the duke.task.Todo class.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" * @param name The name of the todo task.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" * @param done Whether the task is marked done or not.","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" public Todo(String name, boolean done) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" super(name, done);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" if (this.done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" return \"[T][X] \" + this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" return \"[T][ ] \" + this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" * Displays the todo in a user-friendly format.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" * @return The string representation of the todo for display to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" public String displayableForm() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" return this.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"victorpengmx":34}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" public void deleteTask_validIndexNumber_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" Todo todo \u003d new Todo(\"nothing\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" taskList.delete(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" assertEquals(0, taskList.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" public void deleteTask_invalidIndexNumber_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" taskList.delete(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"victorpengmx"},"content":" assertEquals(\"☹ OOPS!!! There is no task with this index number.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"victorpengmx"},"content":" public void getTask_validIndexNumber_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"victorpengmx"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"victorpengmx"},"content":" Todo todo \u003d new Todo(\"nothing\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"victorpengmx"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"victorpengmx"},"content":" Task task \u003d taskList.getTask(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"victorpengmx"},"content":" assertEquals(task.equals(todo), true);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"victorpengmx"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"victorpengmx"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"victorpengmx"},"content":" public void getTask_invalidIndexNumber_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"victorpengmx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"victorpengmx"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"victorpengmx"},"content":" taskList.getTask(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"victorpengmx"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"victorpengmx"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"victorpengmx"},"content":" assertEquals(\"☹ OOPS!!! There is no task with this index number.\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"victorpengmx":58}},{"path":"src/test/java/duke/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":" public void newDeadline_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":" // a new Deadline is created correctly.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":" Deadline deadline \u003d new Deadline(\"something\", \"1111-11-11\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":" assertEquals(\"[D][ ] something By: 1111-11-11\", deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":" public void showAltForm_stringRep_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":" Deadline deadline \u003d new Deadline(\"something\", \"1111-11-11\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":" assertEquals(\"[D][ ] something By: Nov 11 1111\", deadline.displayableForm());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":" public void toggleDoneStatus_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":" // the done status of a deadline can be toggled successfully.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":" Deadline deadline \u003d new Deadline(\"something\", \"1111-11-11\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":" deadline.setDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":" assertEquals(\"[D][X] something By: 1111-11-11\", deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":" deadline.setNotDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"victorpengmx"},"content":" assertEquals(\"[D][ ] something By: 1111-11-11\", deadline.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"victorpengmx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"victorpengmx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"victorpengmx":30}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"victorpengmx"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"victorpengmx"},"content":"unmark this","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"victorpengmx"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"victorpengmx"},"content":"todo nothing","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"victorpengmx"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"victorpengmx"},"content":"deadline nothing","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"victorpengmx"},"content":"deadline nothing /to 1111-11-11","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"victorpengmx"},"content":"deadline /by 1111-11-11","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"victorpengmx"},"content":"deadline nothing /by tmr morning","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"victorpengmx"},"content":"deadline nothing /by 1111-11-11","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"victorpengmx"},"content":"event","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"victorpengmx"},"content":"event nothing","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"victorpengmx"},"content":"event nothing /from /to","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"victorpengmx"},"content":"event nothing /from tmr morning /to later","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"victorpengmx"},"content":"event nothing /from 1111-11-11 /to 1111-11-11","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"victorpengmx"},"content":"mark 3","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"victorpengmx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"victorpengmx"},"content":"unmark 3","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"victorpengmx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"victorpengmx"},"content":"delete","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"victorpengmx"},"content":"delete everything","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"victorpengmx"},"content":"delete 10","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"victorpengmx"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"victorpengmx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"victorpengmx"},"content":"list list","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"victorpengmx"},"content":"idunno","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"victorpengmx"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"victorpengmx":27}},{"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":"victorpengmx"},"content":"javac -cp ..\\src\\main\\java\\duke -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\*.java","lastModifiedDate":"2023-08-31"},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"victorpengmx":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":"victorpengmx"},"content":"if ! javac -cp ../src/main/java/duke -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2023-08-31"},{"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":"-"},"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":{"victorpengmx":1,"-":37}}] diff --git a/victorpengmx_ip_master/commits.json b/victorpengmx_ip_master/commits.json index 1ccfd89e..4b5bbd46 100644 --- a/victorpengmx_ip_master/commits.json +++ b/victorpengmx_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"victorpengmx":[{"date":"2023-08-22","commitResults":[{"hash":"4615e1781470a1d5e403c686a157b19a8db3ad92","isMergeCommit":false,"messageTitle":"complete Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"5ed4defb0a2f1b8cc3c3095d671654a914fcc1fe","isMergeCommit":false,"messageTitle":"complete level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"39b9fea34faac8a8c65167bd518abf6bcf397f26","isMergeCommit":false,"messageTitle":"complete level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":2}}}]},{"date":"2023-08-23","commitResults":[{"hash":"56a56a7933e47ea63c37078aef649cd97d523a62","isMergeCommit":false,"messageTitle":"complete level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":10}}},{"hash":"77c6c43e8289e1aeea62e312df9a124f992ae4b3","isMergeCommit":false,"messageTitle":"Complete level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":12}}},{"hash":"c4604c82632d7ab29438422372de48893a368627","isMergeCommit":false,"messageTitle":"complete automated text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"a1dc5e2e900c2d0ebba5f91ce2c72491323e24f5","isMergeCommit":false,"messageTitle":"complete level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":22,"deletions":1},"java":{"insertions":269,"deletions":58}}},{"hash":"aaefcf7f7ed0a38f04796ca05f881e29a490d55e","isMergeCommit":false,"messageTitle":"complete level 6 and fix issues with level 5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":10},"java":{"insertions":63,"deletions":4}}}]},{"date":"2023-08-27","commitResults":[{"hash":"58c70ae265beac1b64d06e545076f4b0a3322e0c","isMergeCommit":false,"messageTitle":"Complete Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":159,"deletions":26}}},{"hash":"a6f0d8f52470f2551d7661bc723194c0617937a6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"dde3168a4a99c7862e4c4e7e390c9b6687199c8e","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":5},"java":{"insertions":65,"deletions":18}}},{"hash":"3452c32fa52c517f3d9dfd569db7ad2cd7c3ecd9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"839b8307e13e588a66e6c07e4385915898b82fca","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a878c3fe2ea6e62128084334742ac3892314c2d5","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":532,"deletions":262}}},{"hash":"7fc01ff3276ff4194a3c5a20a1f390d14642d1f5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"23cfab289b4e4f8586a0969734ac5a921f4b67e5","isMergeCommit":false,"messageTitle":"Organize into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":25},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"f987cc56e9469d5634be5c002de61ea8eb6971ea","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"f6b47732bc93977c24e700def487e5a79567a327","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b50f71f73198e87b94ec276915ef27801cc5f5a0","isMergeCommit":false,"messageTitle":"Use Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1},"java":{"insertions":94,"deletions":26}}},{"hash":"b00acb148ad33d0c89d28bc391d19260c04dcbb0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"3a6a261cd4f64e8e9bcab089ab63389cc93eec12","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":0}}},{"hash":"69b3822b28e1215655234a0798afbb4b23a87458","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"victorpengmx":{"java":1242,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":6,"txt":27}},"authorContributionVariance":{"victorpengmx":76406.86},"authorDisplayNameMap":{"victorpengmx":"CS2103T-T15-4 PENG.. M X"}} +{"authorDailyContributionsMap":{"victorpengmx":[{"date":"2023-08-22","commitResults":[{"hash":"4615e1781470a1d5e403c686a157b19a8db3ad92","isMergeCommit":false,"messageTitle":"complete Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"5ed4defb0a2f1b8cc3c3095d671654a914fcc1fe","isMergeCommit":false,"messageTitle":"complete level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"39b9fea34faac8a8c65167bd518abf6bcf397f26","isMergeCommit":false,"messageTitle":"complete level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":2}}}]},{"date":"2023-08-23","commitResults":[{"hash":"56a56a7933e47ea63c37078aef649cd97d523a62","isMergeCommit":false,"messageTitle":"complete level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":10}}},{"hash":"77c6c43e8289e1aeea62e312df9a124f992ae4b3","isMergeCommit":false,"messageTitle":"Complete level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":12}}},{"hash":"c4604c82632d7ab29438422372de48893a368627","isMergeCommit":false,"messageTitle":"complete automated text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"a1dc5e2e900c2d0ebba5f91ce2c72491323e24f5","isMergeCommit":false,"messageTitle":"complete level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":22,"deletions":1},"java":{"insertions":269,"deletions":58}}},{"hash":"aaefcf7f7ed0a38f04796ca05f881e29a490d55e","isMergeCommit":false,"messageTitle":"complete level 6 and fix issues with level 5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":10},"java":{"insertions":63,"deletions":4}}}]},{"date":"2023-08-27","commitResults":[{"hash":"58c70ae265beac1b64d06e545076f4b0a3322e0c","isMergeCommit":false,"messageTitle":"Complete Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":159,"deletions":26}}},{"hash":"a6f0d8f52470f2551d7661bc723194c0617937a6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"dde3168a4a99c7862e4c4e7e390c9b6687199c8e","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":5},"java":{"insertions":65,"deletions":18}}},{"hash":"3452c32fa52c517f3d9dfd569db7ad2cd7c3ecd9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"839b8307e13e588a66e6c07e4385915898b82fca","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a878c3fe2ea6e62128084334742ac3892314c2d5","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":532,"deletions":262}}},{"hash":"7fc01ff3276ff4194a3c5a20a1f390d14642d1f5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"23cfab289b4e4f8586a0969734ac5a921f4b67e5","isMergeCommit":false,"messageTitle":"Organize into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":25},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"f987cc56e9469d5634be5c002de61ea8eb6971ea","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"f6b47732bc93977c24e700def487e5a79567a327","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b50f71f73198e87b94ec276915ef27801cc5f5a0","isMergeCommit":false,"messageTitle":"Use Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1},"java":{"insertions":94,"deletions":26}}},{"hash":"b00acb148ad33d0c89d28bc391d19260c04dcbb0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"3a6a261cd4f64e8e9bcab089ab63389cc93eec12","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":0}}},{"hash":"69b3822b28e1215655234a0798afbb4b23a87458","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"7b739dd646b882530dcb190eacd30423d392f3e9","isMergeCommit":false,"messageTitle":"Add and change some JavaDoc comments","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":24}}},{"hash":"93ab16c591dee6d233325caaef59f81ac72b1343","isMergeCommit":false,"messageTitle":"Tweak code to NOT comply with coding standard since previous code was already compliant","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"f9c13b0a84f203e8a37a57168fc807b561acd12f","isMergeCommit":false,"messageTitle":"Complete level 9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":4}}},{"hash":"79b835f88f07304289a35e12f61a2f44dd3f09b3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"15344913e1114ae673415265e43b3c779b15706f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"627b8c40a3bc22fa9def4647e2c8958ebbc214e5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"victorpengmx":{"java":1339,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":6,"txt":27}},"authorContributionVariance":{"victorpengmx":76654.38},"authorDisplayNameMap":{"victorpengmx":"CS2103T-T15-4 PENG.. M X"}} diff --git a/vijay-shankaranand_ip_master/authorship.json b/vijay-shankaranand_ip_master/authorship.json index 2e3f4644..ae834fcf 100644 --- a/vijay-shankaranand_ip_master/authorship.json +++ b/vijay-shankaranand_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/JavAI/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package JavAI;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" * Represents a deadline task that has a description and a due date.","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" /** The due date of the deadline task. */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" protected LocalDate endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" protected LocalTime endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" * Constructs a deadline task with a description and a due date.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" * @param endDate The due date of the deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" * @param endDate The due time of the deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" public Deadline(String description, String endDate, String endTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" this.endDate \u003d LocalDate.parse(endDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" this.endTime \u003d LocalTime.parse(endTime, inputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" return \"[D]\" + super.toString() + \" ( by: \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" this.endDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \" \" + this.endTime + \" )\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":34}},{"path":"src/main/java/JavAI/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package JavAI;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":" * Represents an event task that has a description, start time, and end time.","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" /** The end time of the event. */","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":" protected String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":" /** The start time of the event. */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" protected String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" * Constructs an event task with a description, start time, and end time.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" * @param description The description of the event task.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" * @param from The start time of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" * @param to The end time of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":" return \"[E]\" + super.toString() + \" ( from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":30}},{"path":"src/main/java/JavAI/JavAI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package JavAI;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":" * JavAI is a simple chatbot that allows users to add, mark, unmark, delete,","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" * and list tasks.","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":"public class JavAI {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" private Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" public JavAI(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" ui.showLoadingError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":" ui.welcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" storage.taskListWriter(tasks.getTasksAsArrayList());","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":" ui.exit();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":" parser.parse(input, tasks, ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (JavAIException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":" ui.showLoadingError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"vijay-shankaranand"},"content":" * The main method that starts the JavAI chatbot.","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"vijay-shankaranand"},"content":" * @param args Command-line arguments.","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"vijay-shankaranand"},"content":" * @throws JavAIException If there\u0027s an exception in the JavAI program.","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"vijay-shankaranand"},"content":" * @throws Exception If there\u0027s an exception in the JavAI program.","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"vijay-shankaranand"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"vijay-shankaranand"},"content":" new JavAI(\"./src/main/txtFolder/JavAI.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":55}},{"path":"src/main/java/JavAI/JavAIException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package JavAI;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"public class JavAIException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":" public JavAIException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":7}},{"path":"src/main/java/JavAI/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package JavAI;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":" public void parse(String input, TaskList tasks, Ui ui) throws JavAIException {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" int iterator \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":" if (words[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" while (iterator \u003c words.length) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" description +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" Todo todo \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printAddTask(todo, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (JavAIException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" ui.showLoadingError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (words[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" String endDate \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" String endTime \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" if(!input.contains(\"/by\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid deadline using \u0027/by\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" while (!words[iterator].equals(\"/by\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" description +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":" if (iterator + 1 \u003e words.length) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please specify both date and time in following \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":" \"format after after /by: yyyy-mm-dd hh:mm\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":" endDate \u003d words[iterator];","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":" endTime \u003d words[iterator + 1];","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"vijay-shankaranand"},"content":" Deadline deadline \u003d new Deadline(description, endDate, endTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printAddTask(deadline, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (JavAIException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"vijay-shankaranand"},"content":" ui.showLoadingError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (words[0].equals(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"vijay-shankaranand"},"content":" if(!input.contains(\"/from\") || !input.contains(\"/to\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid event using \u0027/from\u0027 and \u0027/to\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"vijay-shankaranand"},"content":" String from \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"vijay-shankaranand"},"content":" String to \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"vijay-shankaranand"},"content":" while (!words[iterator].equals(\"/from\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"vijay-shankaranand"},"content":" description +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"vijay-shankaranand"},"content":" while (!words[iterator].equals(\"/to\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"vijay-shankaranand"},"content":" from +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"vijay-shankaranand"},"content":" while (iterator \u003c words.length) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"vijay-shankaranand"},"content":" to +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"vijay-shankaranand"},"content":" Event event \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printAddTask(event, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (JavAIException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"vijay-shankaranand"},"content":" ui.print(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (words[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"vijay-shankaranand"},"content":" int iden \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.get(iden).markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printDone(tasks.get(iden));","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid numerical value after \u0027mark\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid numerical value after \u0027mark\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid numerical value after \u0027mark\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (words[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"vijay-shankaranand"},"content":" int iden \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.get(iden).markAsUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printUndone(tasks.get(iden));","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid numerical value after \u0027unmark\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid numerical value after \u0027unmark\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid numerical value after \u0027unmark\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (words[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printDelete(tasks.get(Integer.parseInt(words[1]) - 1), tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.delete(Integer.parseInt(words[1]) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"vijay-shankaranand"},"content":" ui.print(\"☹ OOPS!!! Please input a valid numerical value after \u0027delete\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"vijay-shankaranand"},"content":" ui.print(\"☹ OOPS!!! Please input a valid numerical value after \u0027delete\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"vijay-shankaranand"},"content":" ui.print(\"☹ OOPS!!! Please input a valid numerical value after \u0027delete\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printList(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"vijay-shankaranand"},"content":" ui.print(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"vijay-shankaranand":118}},{"path":"src/main/java/JavAI/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package JavAI;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":" String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" String load \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" String taskType \u003d load.substring(1, 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" String completionType \u003d load.substring(4, 5);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" String[] words \u003d load.substring(7).split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":" int iterator \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":" while (iterator \u003c words.length) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":" description +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"vijay-shankaranand"},"content":" Todo todo \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"vijay-shankaranand"},"content":" if (completionType.equals(\"X\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"vijay-shankaranand"},"content":" todo.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"vijay-shankaranand"},"content":" String endDate \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"vijay-shankaranand"},"content":" String endTime \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"vijay-shankaranand"},"content":" while (!words[iterator].equals(\"by:\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"vijay-shankaranand"},"content":" if (!words[iterator].equals(\"(\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"vijay-shankaranand"},"content":" description +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"vijay-shankaranand"},"content":" for (int i \u003d 0; i \u003c 3; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"vijay-shankaranand"},"content":" endDate +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"vijay-shankaranand"},"content":" endTime \u003d words[iterator];","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"vijay-shankaranand"},"content":" String endTimeWithoutColon \u003d endTime.replace(\":\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"vijay-shankaranand"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy \");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"vijay-shankaranand"},"content":" LocalDate date \u003d LocalDate.parse(endDate, inputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"vijay-shankaranand"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"vijay-shankaranand"},"content":" String formattedDate \u003d date.format(outputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"vijay-shankaranand"},"content":" Deadline deadline \u003d new Deadline(description.trim(), formattedDate, endTimeWithoutColon);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"vijay-shankaranand"},"content":" if (completionType.equals(\"X\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"vijay-shankaranand"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"vijay-shankaranand"},"content":" String from \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"vijay-shankaranand"},"content":" String to \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"vijay-shankaranand"},"content":" while (!words[iterator].equals(\"from:\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"vijay-shankaranand"},"content":" if (!words[iterator].equals(\"(\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"vijay-shankaranand"},"content":" description +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"vijay-shankaranand"},"content":" while (!words[iterator].equals(\"to:\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"vijay-shankaranand"},"content":" from +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"vijay-shankaranand"},"content":" while (iterator \u003c words.length) {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"vijay-shankaranand"},"content":" if (words[iterator].equals(\")\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"vijay-shankaranand"},"content":" to +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"vijay-shankaranand"},"content":" Event event \u003d new Event(description.trim(), from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"vijay-shankaranand"},"content":" if (completionType.equals(\"X\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"vijay-shankaranand"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"vijay-shankaranand"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"vijay-shankaranand"},"content":" public static void taskListWriter(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"vijay-shankaranand"},"content":" File file \u003d new File(\"./src/main/txtFolder/JavAI.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"vijay-shankaranand"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"vijay-shankaranand"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"vijay-shankaranand"},"content":" fw.write(tasks.get(i).toString() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"vijay-shankaranand"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"vijay-shankaranand":133}},{"path":"src/main/java/JavAI/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package JavAI;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":" * Represents a task with a description and completion status.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":" /** The description of the task. */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" /** The completion status of the task. */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" * Constructs a task with a description and sets its completion status to false.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" public Task (String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" * Gets the status icon of the task based on its completion status.","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" * @return The status icon (\"X\" for done, \" \" for not done).","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":" * Marks the task as done by setting its completion status to true.","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":" * Marks the task as undone by setting its completion status to false.","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"vijay-shankaranand"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"vijay-shankaranand"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"vijay-shankaranand"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"vijay-shankaranand"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"vijay-shankaranand"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":54}},{"path":"src/main/java/JavAI/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package JavAI;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" public void delete(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" public Task get(int index) throws JavAIException {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! The task number does not exist.Please enter valid task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":" public ArrayList\u003cTask\u003e getTasksAsArrayList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":" return this.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"vijay-shankaranand":42}},{"path":"src/main/java/JavAI/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package JavAI;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":" * Represents a todo task with a description.","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":" * Constructs a todo task with a description.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":" * @param description The description of the todo task.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":20}},{"path":"src/main/java/JavAI/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package JavAI;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":" String line \u003d \" ____________________________________________________________\";","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":" public void welcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(line + \"\\n Hello, I\u0027m JavAI.\\n What can I do for you?\\n\" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":" public void displayLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" public void printAddTask(Task task, TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + task +","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" public void printList(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (JavAIException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" showLoadingError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" public void printDelete(Task task, TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + task +","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":" public void printDone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":" public void printUndone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Ok! I\u0027ve marked this task as not done yet:\\n\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"vijay-shankaranand"},"content":" public void exit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(line + \"\\n Bye. Hope to see you again soon!\\n\" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"vijay-shankaranand"},"content":" public void showLoadingError(Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"vijay-shankaranand"},"content":" public void print(String string) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(string);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"vijay-shankaranand":58}},{"path":"src/main/txtFolder/JavAI.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"[T][X] clean bedsheet ","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"[E][ ] ( from: to: )","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"vijay-shankaranand":2}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":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":"vijay-shankaranand"},"content":"java -classpath ../bin JavAI \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"vijay-shankaranand":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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" mainClass.set(\"JavAI.JavAI\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" archiveBaseName \u003d \"JavAI\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"vijay-shankaranand":2,"-":40}},{"path":"src/main/java/JavAI/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package javai;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" * Represents a deadline task that has a description and a due date.","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" /** The due date of the deadline task. */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" protected LocalDate endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" protected LocalTime endTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" * Constructs a deadline task with a description and a due date.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" * @param endDate The due date of the deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" * @param endDate The due time of the deadline task.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" public Deadline(String description, String endDate, String endTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" this.endDate \u003d LocalDate.parse(endDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" this.endTime \u003d LocalTime.parse(endTime, inputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" return \"[D]\" + super.toString() + \" ( by: \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" this.endDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \" \" + this.endTime + \" )\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":34}},{"path":"src/main/java/JavAI/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package javai;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":" * Represents an event task that has a description, start time, and end time.","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" /** The end time of the event. */","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":" protected String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":" /** The start time of the event. */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" protected String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" * Constructs an event task with a description, start time, and end time.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" * @param description The description of the event task.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" * @param from The start time of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" * @param to The end time of the event.","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" return \"[E]\" + super.toString() + \" ( from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":31}},{"path":"src/main/java/JavAI/JavAI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package javai;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":" * JavAI is a simple chatbot that allows users to add, mark, unmark, delete,","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" * and list tasks.","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":"public class JavAI {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" private Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" * Constructs a JavAI chatbot instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" * @param filePath The file path where tasks are stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" public JavAI(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" ui.showLoadingError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" * Starts the JavAI chatbot and handles user interactions.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":" ui.welcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":" storage.taskListWriter(tasks.getTasksAsArrayList());","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":" ui.exit();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"vijay-shankaranand"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"vijay-shankaranand"},"content":" parser.parse(input, tasks, ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"vijay-shankaranand"},"content":" } catch(JavAIException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"vijay-shankaranand"},"content":" ui.showLoadingError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"vijay-shankaranand"},"content":" * The main method that starts the JavAI chatbot.","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"vijay-shankaranand"},"content":" * @param args Command-line arguments.","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"vijay-shankaranand"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"vijay-shankaranand"},"content":" new JavAI(\"./src/main/txtFolder/JavAI.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":62}},{"path":"src/main/java/JavAI/JavAIException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package javai;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"public class JavAIException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":" public JavAIException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":8}},{"path":"src/main/java/JavAI/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package javai;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":" * The Parser class is responsible for parsing user input and executing corresponding commands","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":" * to manage tasks in a task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":" * Parses user input to execute commands for managing tasks in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" * @param input The user input string to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" * @param tasks The TaskList to which tasks are added or modified.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" * @param ui The Ui instance for displaying messages and user interface.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" * @throws JavAIException If there\u0027s an error in parsing or executing the command.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" public void parse(String input, TaskList tasks, Ui ui) throws JavAIException {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" int iterator \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" if (words[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" while (iterator \u003c words.length) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" description +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":" Todo todo \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printAddTask(todo, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (JavAIException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" ui.showLoadingError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (words[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":" String endDate \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":" String endTime \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":" if(!input.contains(\"/by\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid deadline using \u0027/by\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"vijay-shankaranand"},"content":" while (!words[iterator].equals(\"/by\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"vijay-shankaranand"},"content":" description +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"vijay-shankaranand"},"content":" if (iterator + 1 \u003e words.length) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please specify both date and time in following \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"vijay-shankaranand"},"content":" \"format after after /by: yyyy-mm-dd hh:mm\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"vijay-shankaranand"},"content":" endDate \u003d words[iterator];","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"vijay-shankaranand"},"content":" endTime \u003d words[iterator + 1];","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"vijay-shankaranand"},"content":" Deadline deadline \u003d new Deadline(description, endDate, endTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printAddTask(deadline, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (JavAIException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"vijay-shankaranand"},"content":" ui.showLoadingError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (words[0].equals(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"vijay-shankaranand"},"content":" if(!input.contains(\"/from\") || !input.contains(\"/to\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid event using \u0027/from\u0027 and \u0027/to\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"vijay-shankaranand"},"content":" String from \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"vijay-shankaranand"},"content":" String to \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"vijay-shankaranand"},"content":" while (!words[iterator].equals(\"/from\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"vijay-shankaranand"},"content":" description +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"vijay-shankaranand"},"content":" while (!words[iterator].equals(\"/to\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"vijay-shankaranand"},"content":" from +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"vijay-shankaranand"},"content":" while (iterator \u003c words.length) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"vijay-shankaranand"},"content":" to +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"vijay-shankaranand"},"content":" Event event \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printAddTask(event, tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (JavAIException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"vijay-shankaranand"},"content":" ui.print(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (words[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"vijay-shankaranand"},"content":" int iden \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.get(iden).markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printDone(tasks.get(iden));","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid numerical value after \u0027mark\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid numerical value after \u0027mark\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid numerical value after \u0027mark\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (words[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"vijay-shankaranand"},"content":" int iden \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.get(iden).markAsUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printUndone(tasks.get(iden));","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid numerical value after \u0027unmark\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid numerical value after \u0027unmark\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input a valid numerical value after \u0027unmark\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (words[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printDelete(tasks.get(Integer.parseInt(words[1]) - 1), tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.delete(Integer.parseInt(words[1]) - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"vijay-shankaranand"},"content":" ui.print(\"☹ OOPS!!! Please input a valid numerical value after \u0027delete\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"vijay-shankaranand"},"content":" ui.print(\"☹ OOPS!!! Please input a valid numerical value after \u0027delete\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"vijay-shankaranand"},"content":" ui.print(\"☹ OOPS!!! Please input a valid numerical value after \u0027delete\u0027.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (words[0].equals(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"vijay-shankaranand"},"content":" if (words.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! Please input agi valid keyword after \u0027find\u0027.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"vijay-shankaranand"},"content":" String keyword \u003d words[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"vijay-shankaranand"},"content":" ui.print(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"vijay-shankaranand"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"vijay-shankaranand"},"content":" if (tasks.get(i).getDescription().contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"vijay-shankaranand"},"content":" ui.printList(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"vijay-shankaranand"},"content":" ui.print(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"vijay-shankaranand":143}},{"path":"src/main/java/JavAI/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package javai;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":" * The Storage class handles loading tasks from and writing tasks to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" * Constructs a Storage instance with the specified file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" * @param filePath The file path where tasks will be stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" * Loads tasks from the file specified by the file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":" * @return An ArrayList of Task objects loaded from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"vijay-shankaranand"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"vijay-shankaranand"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"vijay-shankaranand"},"content":" String load \u003d sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"vijay-shankaranand"},"content":" String taskType \u003d load.substring(1, 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"vijay-shankaranand"},"content":" String completionType \u003d load.substring(4, 5);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"vijay-shankaranand"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"vijay-shankaranand"},"content":" String[] words \u003d load.substring(7).split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"vijay-shankaranand"},"content":" int iterator \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"vijay-shankaranand"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"vijay-shankaranand"},"content":" while (iterator \u003c words.length) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"vijay-shankaranand"},"content":" description +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"vijay-shankaranand"},"content":" Todo todo \u003d new Todo(description);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"vijay-shankaranand"},"content":" if (completionType.equals(\"X\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"vijay-shankaranand"},"content":" todo.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"vijay-shankaranand"},"content":" String endDate \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"vijay-shankaranand"},"content":" String endTime \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"vijay-shankaranand"},"content":" while (!words[iterator].equals(\"by:\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"vijay-shankaranand"},"content":" if (!words[iterator].equals(\"(\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"vijay-shankaranand"},"content":" description +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"vijay-shankaranand"},"content":" for (int i \u003d 0; i \u003c 3; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"vijay-shankaranand"},"content":" endDate +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"vijay-shankaranand"},"content":" endTime \u003d words[iterator];","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"vijay-shankaranand"},"content":" String endTimeWithoutColon \u003d endTime.replace(\":\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"vijay-shankaranand"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy \");","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"vijay-shankaranand"},"content":" LocalDate date \u003d LocalDate.parse(endDate, inputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"vijay-shankaranand"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"vijay-shankaranand"},"content":" String formattedDate \u003d date.format(outputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"vijay-shankaranand"},"content":" Deadline deadline \u003d new Deadline(description.trim(), formattedDate, endTimeWithoutColon);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"vijay-shankaranand"},"content":" if (completionType.equals(\"X\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"vijay-shankaranand"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"vijay-shankaranand"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"vijay-shankaranand"},"content":" String from \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"vijay-shankaranand"},"content":" String to \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"vijay-shankaranand"},"content":" while (!words[iterator].equals(\"from:\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"vijay-shankaranand"},"content":" if (!words[iterator].equals(\"(\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"vijay-shankaranand"},"content":" description +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"vijay-shankaranand"},"content":" while (!words[iterator].equals(\"to:\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"vijay-shankaranand"},"content":" from +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"vijay-shankaranand"},"content":" while (iterator \u003c words.length) {","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"vijay-shankaranand"},"content":" if (words[iterator].equals(\")\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"vijay-shankaranand"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"vijay-shankaranand"},"content":" to +\u003d words[iterator] + \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"vijay-shankaranand"},"content":" iterator++;","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"vijay-shankaranand"},"content":" Event event \u003d new Event(description.trim(), from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"vijay-shankaranand"},"content":" if (completionType.equals(\"X\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"vijay-shankaranand"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"vijay-shankaranand"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"vijay-shankaranand"},"content":" * Writes a list of tasks to a file specified by a file path.","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"vijay-shankaranand"},"content":" * @param tasks The list of Task objects to be written to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"vijay-shankaranand"},"content":" public static void taskListWriter(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"vijay-shankaranand"},"content":" File file \u003d new File(\"./src/main/txtFolder/JavAI.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"vijay-shankaranand"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"vijay-shankaranand"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"vijay-shankaranand"},"content":" fw.write(tasks.get(i).toString() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"vijay-shankaranand"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"vijay-shankaranand":152}},{"path":"src/main/java/JavAI/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package javai;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":" * Represents a task with a description and completion status.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":" /** The description of the task. */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" /** The completion status of the task. */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" * Constructs a task with a description and sets its completion status to false.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" public Task (String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" * Gets the status icon of the task based on its completion status.","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" * @return The status icon (\"X\" for done, \" \" for not done).","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" * Marks the task as done by setting its completion status to true.","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"vijay-shankaranand"},"content":" * Marks the task as undone by setting its completion status to false.","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"vijay-shankaranand"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"vijay-shankaranand"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"vijay-shankaranand"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"vijay-shankaranand"},"content":" return this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"vijay-shankaranand"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"vijay-shankaranand"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"vijay-shankaranand"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":62}},{"path":"src/main/java/JavAI/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package javai;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":" * The TaskList class represents a list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" * Constructs a TaskList with an initial list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" * @param tasks The initial list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" * Gets the number of tasks in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" * @return The number of tasks in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":" * Adds a task to the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"vijay-shankaranand"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"vijay-shankaranand"},"content":" * Deletes a task at the specified index from the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"vijay-shankaranand"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"vijay-shankaranand"},"content":" public void delete(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"vijay-shankaranand"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"vijay-shankaranand"},"content":" * Gets a task at the specified index from the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"vijay-shankaranand"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"vijay-shankaranand"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"vijay-shankaranand"},"content":" * @throws JavAIException If the index is out of bounds.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"vijay-shankaranand"},"content":" public Task get(int index) throws JavAIException {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"vijay-shankaranand"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"vijay-shankaranand"},"content":" throw new JavAIException(\"☹ OOPS!!! The task number does not exist.Please enter valid task number.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"vijay-shankaranand"},"content":" * Gets the tasks as an ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"vijay-shankaranand"},"content":" * @return An ArrayList containing all the tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"vijay-shankaranand"},"content":" public ArrayList\u003cTask\u003e getTasksAsArrayList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"vijay-shankaranand"},"content":" return this.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"vijay-shankaranand":88}},{"path":"src/main/java/JavAI/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package javai;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":" * Represents a todo task with a description.","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":" * Constructs a todo task with a description.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":" * @param description The description of the todo task.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":22}},{"path":"src/main/java/JavAI/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package javai;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":" * The Ui class handles user interface interactions and message display.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":" String line \u003d \" ____________________________________________________________\";","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" * Displays a welcome message when the chatbot starts.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" public void welcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(line + \"\\n Hello, I\u0027m JavAI.\\n What can I do for you?\\n\" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" * Displays a horizontal line to separate sections in the output.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" public void displayLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" * Displays a message when a task is added successfully.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" * @param task The added task.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":" * @param tasks The current list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" public void printAddTask(Task task, TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + task +","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":" * Displays the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":" * @param tasks The list of tasks to display.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":" public void printList(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"vijay-shankaranand"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"vijay-shankaranand"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"vijay-shankaranand"},"content":" } catch (JavAIException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"vijay-shankaranand"},"content":" showLoadingError(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"vijay-shankaranand"},"content":" * Displays a message when a task is deleted successfully.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"vijay-shankaranand"},"content":" * @param task The deleted task.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"vijay-shankaranand"},"content":" * @param tasks The current list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"vijay-shankaranand"},"content":" public void printDelete(Task task, TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + task +","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"vijay-shankaranand"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"vijay-shankaranand"},"content":" * Displays a message when a task is marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"vijay-shankaranand"},"content":" * @param task The task marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"vijay-shankaranand"},"content":" public void printDone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"vijay-shankaranand"},"content":" * Displays a message when a task is marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"vijay-shankaranand"},"content":" * @param task The task marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"vijay-shankaranand"},"content":" public void printUndone(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(\"Ok! I\u0027ve marked this task as not done yet:\\n\" + task);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"vijay-shankaranand"},"content":" displayLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"vijay-shankaranand"},"content":" * Displays an exit message when the chatbot exits.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"vijay-shankaranand"},"content":" public void exit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(line + \"\\n Bye. Hope to see you again soon!\\n\" + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"vijay-shankaranand"},"content":" * Displays an error message when an exception occurs.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"vijay-shankaranand"},"content":" * @param e The exception that occurred.","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"vijay-shankaranand"},"content":" public void showLoadingError(Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"vijay-shankaranand"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"vijay-shankaranand"},"content":" * Displays a generic message.","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"vijay-shankaranand"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"vijay-shankaranand"},"content":" * @param string The message to display.","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"vijay-shankaranand"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"vijay-shankaranand"},"content":" public void print(String string) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"vijay-shankaranand"},"content":" System.out.println(string);","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"vijay-shankaranand":118}},{"path":"src/main/txtFolder/JavAI.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"[T][X] Sample Todo ","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"[D][X] Sample Deadline ( by: Dec 31 2023 23:59 )","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"vijay-shankaranand":2}},{"path":"src/test/java/JavAI/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package javai;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":"import java.io.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":" private final String FILE_PATH \u003d \"./src/main/txtFolder/JavAI.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":" void setUp() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" void testLoad() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" File testFile \u003d new File(FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" FileWriter writer \u003d new FileWriter(testFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" writer.write(\"[T][X] Sample Todo\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" writer.write(\"[D][X] Sample Deadline ( by: Dec 31 2023 23:59 )\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":" writer.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" ArrayList\u003cTask\u003e loadedTasks \u003d storage.load();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" assertEquals(2, loadedTasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" assertTrue(loadedTasks.get(0) instanceof Todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":" assertTrue(loadedTasks.get(1) instanceof Deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":" void testTaskListWriter() throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":" ArrayList\u003cTask\u003e tasksToWrite \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":" tasksToWrite.add(new Todo(\"Write JUnit Tests\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":" tasksToWrite.add(new Deadline(\"Finish Project\", \"2023-12-31\", \"2359\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":" storage.taskListWriter(tasksToWrite);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"vijay-shankaranand"},"content":" File testFile \u003d new File(FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"vijay-shankaranand"},"content":" Scanner scanner \u003d new Scanner(testFile);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"vijay-shankaranand"},"content":" StringBuilder fileContent \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"vijay-shankaranand"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"vijay-shankaranand"},"content":" fileContent.append(scanner.nextLine()).append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"vijay-shankaranand"},"content":" scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"vijay-shankaranand"},"content":" String expectedContent \u003d \"[T][ ] Write JUnit Tests\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"vijay-shankaranand"},"content":" \"[D][ ] Finish Project ( by: Dec 31 2023 23:59 )\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"vijay-shankaranand"},"content":" assertEquals(expectedContent, fileContent.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"vijay-shankaranand":55}},{"path":"src/test/java/JavAI/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"package javai;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"vijay-shankaranand"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"vijay-shankaranand"},"content":" void setUp() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"vijay-shankaranand"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"vijay-shankaranand"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"vijay-shankaranand"},"content":" void testAddTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"vijay-shankaranand"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"vijay-shankaranand"},"content":" taskList.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"vijay-shankaranand"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"vijay-shankaranand"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"vijay-shankaranand"},"content":" void testDeleteTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"vijay-shankaranand"},"content":" Task task1 \u003d new Task(\"Task 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"vijay-shankaranand"},"content":" Task task2 \u003d new Task(\"Task 2\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"vijay-shankaranand"},"content":" Task task3 \u003d new Task(\"Task 3\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"vijay-shankaranand"},"content":" taskList.add(task1);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"vijay-shankaranand"},"content":" taskList.add(task2);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"vijay-shankaranand"},"content":" taskList.add(task3);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"vijay-shankaranand"},"content":" assertEquals(3, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"vijay-shankaranand"},"content":" taskList.delete(1);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"vijay-shankaranand"},"content":" assertEquals(2, taskList.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"vijay-shankaranand"},"content":" assertThrows(JavAIException.class, () -\u003e taskList.get(2));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"vijay-shankaranand"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"vijay-shankaranand"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"vijay-shankaranand"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"vijay-shankaranand":41}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"vijay-shankaranand"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"vijay-shankaranand"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"vijay-shankaranand"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vijay-shankaranand"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vijay-shankaranand"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vijay-shankaranand"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vijay-shankaranand"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vijay-shankaranand"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vijay-shankaranand"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vijay-shankaranand":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":"vijay-shankaranand"},"content":"java -classpath ../bin JavAI \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"vijay-shankaranand":1,"-":37}}] diff --git a/vijay-shankaranand_ip_master/commits.json b/vijay-shankaranand_ip_master/commits.json index 2837b878..fad2404e 100644 --- a/vijay-shankaranand_ip_master/commits.json +++ b/vijay-shankaranand_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"vijay-shankaranand":[{"date":"2023-08-23","commitResults":[{"hash":"af07e717128ead186a941f69e1c3633bde804024","isMergeCommit":false,"messageTitle":"add Level-0 requirements","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"dcbe7f82cdb49cb77d0ad70e8ccf822bb284e181","isMergeCommit":false,"messageTitle":"add level-1 changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"08d4703195e91e89198b4ce6ee0aa0179c73ee2e","isMergeCommit":false,"messageTitle":"beautify Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":3}}},{"hash":"86adacddfa7e15ccd4400d693cb7bbdec8b95fc3","isMergeCommit":false,"messageTitle":"add level-2 iteration","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":7}}},{"hash":"eeaa39b5ee5a3d1ec409f0ae3899e67d2d57ea37","isMergeCommit":false,"messageTitle":"add level-3 changes","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":28}}},{"hash":"e2f9c62d73875b0c272d64f8543a979e90e1c3c2","isMergeCommit":false,"messageTitle":"add Level-4 changes","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":8}}},{"hash":"830945a12c73b722f8995fad9bcbdb751a9aeac3","isMergeCommit":false,"messageTitle":"add A-TextUiTesting changes","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":10,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"be95cb853fce7cb3ca6ba3358f3524eda775be0f","isMergeCommit":false,"messageTitle":"add level-5 changes","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":58}}},{"hash":"e9fd63d464cd061026a61af230b23a10791a4196","isMergeCommit":false,"messageTitle":"add level-6 changes","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":14}}}]},{"date":"2023-08-31","commitResults":[{"hash":"ec1d44f6d1eb865bef9cbe0acb789a9b3219cdc8","isMergeCommit":false,"messageTitle":"add level-7 changes","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":122,"deletions":3}}},{"hash":"fcda3ea785c5711c269dd76dba8e9f8cc27730e8","isMergeCommit":false,"messageTitle":"add level-7 changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":9}}},{"hash":"7c8c8272840a7afe258ad8fd469f791aa1fbbd97","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fcc7c7f03e60f2589f081e34ac13adef331ae507","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/vijay-shankaranand/ip","messageBody":"# Conflicts:\n#\tsrc/main/java/JavAI.java\n","fileTypesAndContributionMap":{}},{"hash":"a88ecf7cb3b3c0acbd8cfac4dbe21bb54d1d0143","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 of https://github.com/vijay-shankaranand/ip into branch-Level-7","messageBody":"# Conflicts:\n#\tsrc/main/java/JavAI.java\n","fileTypesAndContributionMap":{}},{"hash":"c0b6b9fd283cf165ab9351c1aaef5c3a37af7eb1","isMergeCommit":false,"messageTitle":"remove head components in level-7 code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"bb1d403a89b0af6ea8f91c0751e25262ba8888c0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/JavAI.java\n","fileTypesAndContributionMap":{}},{"hash":"c33fa9691a0d2c5a071f562caca959cca70d72cf","isMergeCommit":false,"messageTitle":"add level-8 changes","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":38,"deletions":21}}},{"hash":"20a024b41db3aca9966f01f782b475d77b1f0d4b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"aa6701f750841464bf045a89f6effafda3f7ffc6","isMergeCommit":false,"messageTitle":"add A-MoreOOP changes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":369,"deletions":278}}},{"hash":"cd171242c2d69be8e35a33da25fcab494da84e60","isMergeCommit":false,"messageTitle":"add A-Packages changes","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":40,"deletions":19}}}]}]},"authorFileTypeContributionMap":{"vijay-shankaranand":{"java":551,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"vijay-shankaranand":86279.2},"authorDisplayNameMap":{"vijay-shankaranand":"CS2103T-T09-1 VIJA..NAND"}} +{"authorDailyContributionsMap":{"vijay-shankaranand":[{"date":"2023-08-23","commitResults":[{"hash":"af07e717128ead186a941f69e1c3633bde804024","isMergeCommit":false,"messageTitle":"add Level-0 requirements","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"dcbe7f82cdb49cb77d0ad70e8ccf822bb284e181","isMergeCommit":false,"messageTitle":"add level-1 changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"08d4703195e91e89198b4ce6ee0aa0179c73ee2e","isMergeCommit":false,"messageTitle":"beautify Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":3}}},{"hash":"86adacddfa7e15ccd4400d693cb7bbdec8b95fc3","isMergeCommit":false,"messageTitle":"add level-2 iteration","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":7}}},{"hash":"eeaa39b5ee5a3d1ec409f0ae3899e67d2d57ea37","isMergeCommit":false,"messageTitle":"add level-3 changes","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":28}}},{"hash":"e2f9c62d73875b0c272d64f8543a979e90e1c3c2","isMergeCommit":false,"messageTitle":"add Level-4 changes","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":8}}},{"hash":"830945a12c73b722f8995fad9bcbdb751a9aeac3","isMergeCommit":false,"messageTitle":"add A-TextUiTesting changes","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":10,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"be95cb853fce7cb3ca6ba3358f3524eda775be0f","isMergeCommit":false,"messageTitle":"add level-5 changes","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":58}}},{"hash":"e9fd63d464cd061026a61af230b23a10791a4196","isMergeCommit":false,"messageTitle":"add level-6 changes","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":14}}}]},{"date":"2023-08-31","commitResults":[{"hash":"ec1d44f6d1eb865bef9cbe0acb789a9b3219cdc8","isMergeCommit":false,"messageTitle":"add level-7 changes","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":122,"deletions":3}}},{"hash":"fcda3ea785c5711c269dd76dba8e9f8cc27730e8","isMergeCommit":false,"messageTitle":"add level-7 changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":9}}},{"hash":"7c8c8272840a7afe258ad8fd469f791aa1fbbd97","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fcc7c7f03e60f2589f081e34ac13adef331ae507","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/vijay-shankaranand/ip","messageBody":"# Conflicts:\n#\tsrc/main/java/JavAI.java\n","fileTypesAndContributionMap":{}},{"hash":"a88ecf7cb3b3c0acbd8cfac4dbe21bb54d1d0143","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 of https://github.com/vijay-shankaranand/ip into branch-Level-7","messageBody":"# Conflicts:\n#\tsrc/main/java/JavAI.java\n","fileTypesAndContributionMap":{}},{"hash":"c0b6b9fd283cf165ab9351c1aaef5c3a37af7eb1","isMergeCommit":false,"messageTitle":"remove head components in level-7 code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"bb1d403a89b0af6ea8f91c0751e25262ba8888c0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/JavAI.java\n","fileTypesAndContributionMap":{}},{"hash":"c33fa9691a0d2c5a071f562caca959cca70d72cf","isMergeCommit":false,"messageTitle":"add level-8 changes","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":38,"deletions":21}}},{"hash":"20a024b41db3aca9966f01f782b475d77b1f0d4b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"aa6701f750841464bf045a89f6effafda3f7ffc6","isMergeCommit":false,"messageTitle":"add A-MoreOOP changes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":369,"deletions":278}}},{"hash":"cd171242c2d69be8e35a33da25fcab494da84e60","isMergeCommit":false,"messageTitle":"add A-Packages changes","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":40,"deletions":19}}}]},{"date":"2023-09-01","commitResults":[{"hash":"744955f9ce38fa9f119cdf455c4b5c28b3d93fb6","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"34b51ebe415853b5b6f8ef4c63298e4932750c4b","isMergeCommit":false,"messageTitle":"add A-Gradle changes","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"java":{"insertions":1,"deletions":5}}},{"hash":"7e6971cff199dca703fcdbfd1cbc5514914894d6","isMergeCommit":false,"messageTitle":"add A-JUnit changes","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":95,"deletions":0}}},{"hash":"874095ff21cbba93cf9236e16e983f127cd90333","isMergeCommit":false,"messageTitle":"add Level-9 changes","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":16,"deletions":0}}},{"hash":"2338735eaa41d0d7fd5b2de8bacdc19c8a22c1e7","isMergeCommit":false,"messageTitle":"add A-JavaDoc changes","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":4}}},{"hash":"88c5e9628fe24586c9d82a4f102a92d62cb42f2c","isMergeCommit":false,"messageTitle":"add A-CodingStandard changes","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}},{"hash":"864171bbadc71d0679eb9110aa022b33f81777bb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"409803132c2fc9088c380fa28a2c9269422842c0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2f2c8bb5f4eee8e93e0af301fad92cf6835f49e2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/JavAI/Parser.java\n#\tsrc/main/java/JavAI/Ui.java\n","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"vijay-shankaranand":{"java":816,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":2,"txt":11}},"authorContributionVariance":{"vijay-shankaranand":83093.18},"authorDisplayNameMap":{"vijay-shankaranand":"CS2103T-T09-1 VIJA..NAND"}} diff --git a/vivienherq_ip_master/authorship.json b/vivienherq_ip_master/authorship.json index 2f4e8fe1..e8dc3bfe 100644 --- a/vivienherq_ip_master/authorship.json +++ b/vivienherq_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vivienherq"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"vivienherq"},"content":" private String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"vivienherq"},"content":" Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"vivienherq"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vivienherq"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vivienherq"},"content":" public String getType() {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vivienherq"},"content":" return \"deadline\";","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"vivienherq"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"vivienherq"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"vivienherq"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"vivienherq"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vivienherq":14}},{"path":"src/main/java/Dude.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vivienherq"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"vivienherq"},"content":"public class Dude {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vivienherq"},"content":" static Task[] taskList \u003d new Task[100];","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vivienherq"},"content":" static int nTasks \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vivienherq"},"content":" public static void addTodo(String task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"vivienherq"},"content":" ToDo newTask \u003d new ToDo(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vivienherq"},"content":" taskList[nTasks] \u003d newTask;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Got it. I\u0027ve added this task:\\n%s\\n\", newTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"vivienherq"},"content":" nTasks +\u003d 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Now you have %d tasks in the list. \\n\", nTasks);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vivienherq"},"content":" public static void addDeadline(String task, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"vivienherq"},"content":" Deadline newTask \u003d new Deadline(task, by);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"vivienherq"},"content":" taskList[nTasks] \u003d newTask;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Got it. I\u0027ve added this task:\\n%s\\n\", newTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"vivienherq"},"content":" nTasks +\u003d 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Now you have %d tasks in the list. \\n\", nTasks);","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"vivienherq"},"content":" public static void addEvent(String task, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"vivienherq"},"content":" Event newTask \u003d new Event(task, from, to);","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"vivienherq"},"content":" taskList[nTasks] \u003d newTask;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Got it. I\u0027ve added this task:\\n%s\\n\", newTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"vivienherq"},"content":" nTasks +\u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Now you have %d tasks in the list. \\n\", nTasks);","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"vivienherq"},"content":" public static void list() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"vivienherq"},"content":" for (int i \u003d 0; i \u003c nTasks; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"vivienherq"},"content":" Task task \u003d taskList[i];","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"%d %s\\n\", i+1, task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"vivienherq"},"content":" public static void mark(int n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"vivienherq"},"content":" taskList[n-1].setDone(true);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"vivienherq"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"%d. %s\\n\", n, taskList[n-1].toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"vivienherq"},"content":" public static void unmark(int n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"vivienherq"},"content":" taskList[n-1].setDone(false);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"vivienherq"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"%d. %s\\n\", n, taskList[n-1].toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"vivienherq"},"content":" public static void bye() {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"vivienherq"},"content":" String greeting \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"vivienherq"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":55,"author":{"gitId":"vivienherq"},"content":" String greeting \u003d \"Hello, I\u0027m Dude! \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"vivienherq"},"content":" \"What can I do for you?\";","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"vivienherq"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"vivienherq"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"vivienherq"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"vivienherq"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"vivienherq"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"vivienherq"},"content":" if (words[0].equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"vivienherq"},"content":" list();","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"vivienherq"},"content":" bye();","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"vivienherq"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"vivienherq"},"content":" mark(Integer.valueOf(words[1]));","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"vivienherq"},"content":" unmark(Integer.valueOf(words[1]));","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"vivienherq"},"content":" addTodo(input.substring(5));","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"vivienherq"},"content":" String[] taskWords \u003d input.substring(9).split(\" /\");","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"vivienherq"},"content":" String by \u003d taskWords[1].substring(3);","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"vivienherq"},"content":" addDeadline(taskWords[0], by);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"vivienherq"},"content":" String[] taskWords \u003d input.substring(6).split(\" /\");","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"vivienherq"},"content":" String from \u003d taskWords[1].substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"vivienherq"},"content":" String to \u003d taskWords[2].substring(3);","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"vivienherq"},"content":" addEvent(taskWords[0], from, to);","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"vivienherq":87,"-":3}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vivienherq"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"vivienherq"},"content":" private String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"vivienherq"},"content":" private String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"vivienherq"},"content":" Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"vivienherq"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vivienherq"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"vivienherq"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vivienherq"},"content":" public String getType() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vivienherq"},"content":" return \"event\";","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"vivienherq"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"vivienherq"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"vivienherq"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"vivienherq"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vivienherq":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vivienherq"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"vivienherq"},"content":" private String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"vivienherq"},"content":" private boolean done;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vivienherq"},"content":" Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vivienherq"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vivienherq"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vivienherq"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"vivienherq"},"content":" return this.done;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"vivienherq"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vivienherq"},"content":" return this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"vivienherq"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"vivienherq"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"vivienherq"},"content":" public String getType() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"vivienherq"},"content":" return \"task\";","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"vivienherq"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"vivienherq"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"vivienherq"},"content":" String doneStatus \u003d \"[ ]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"vivienherq"},"content":" if (this.isDone()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"vivienherq"},"content":" doneStatus \u003d \"[X]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"vivienherq"},"content":" return doneStatus + \" \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"vivienherq"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vivienherq":34}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vivienherq"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"vivienherq"},"content":" ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"vivienherq"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vivienherq"},"content":" public String getType() {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vivienherq"},"content":" return \"todo\";","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"vivienherq"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"vivienherq"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"vivienherq"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vivienherq"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vivienherq":12}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vivienherq"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"vivienherq"},"content":" private String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"vivienherq"},"content":" Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"vivienherq"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vivienherq"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vivienherq"},"content":" public String getType() {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vivienherq"},"content":" return \"deadline\";","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"vivienherq"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"vivienherq"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"vivienherq"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"vivienherq"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vivienherq":14}},{"path":"src/main/java/Dude.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vivienherq"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"vivienherq"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vivienherq"},"content":"public class Dude {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vivienherq"},"content":"// static Task[] taskList \u003d new Task[100];","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"vivienherq"},"content":" static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"vivienherq"},"content":" static int nTasks \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vivienherq"},"content":" public static void addTodo(String task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"vivienherq"},"content":" ToDo newTask \u003d new ToDo(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vivienherq"},"content":"// taskList[nTasks] \u003d newTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"vivienherq"},"content":" taskList.add(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Got it. I\u0027ve added this task:\\n%s\\n\", newTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"vivienherq"},"content":" nTasks +\u003d 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Now you have %d tasks in the list. \\n\", nTasks);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"vivienherq"},"content":" public static void addDeadline(String task, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"vivienherq"},"content":" Deadline newTask \u003d new Deadline(task, by);","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"vivienherq"},"content":"// taskList[nTasks] \u003d newTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"vivienherq"},"content":" taskList.add(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Got it. I\u0027ve added this task:\\n%s\\n\", newTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"vivienherq"},"content":" nTasks +\u003d 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Now you have %d tasks in the list. \\n\", nTasks);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"vivienherq"},"content":" public static void addEvent(String task, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"vivienherq"},"content":" Event newTask \u003d new Event(task, from, to);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"vivienherq"},"content":"// taskList[nTasks] \u003d newTask;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"vivienherq"},"content":" taskList.add(newTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Got it. I\u0027ve added this task:\\n%s\\n\", newTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"vivienherq"},"content":" nTasks +\u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Now you have %d tasks in the list. \\n\", nTasks);","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"vivienherq"},"content":" public static void delete(int n) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"vivienherq"},"content":" Task removedTask \u003d taskList.get(n-1);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"vivienherq"},"content":" taskList.remove(n-1);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"vivienherq"},"content":" nTasks -\u003d 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"vivienherq"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"vivienherq"},"content":" System.out.println(removedTask.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"Now you have %d tasks in the list.\\n\", nTasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"vivienherq"},"content":" public static void list() {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"vivienherq"},"content":" for (int i \u003d 0; i \u003c nTasks; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"vivienherq"},"content":" Task task \u003d taskList.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"vivienherq"},"content":"// Task task \u003d taskList[i];","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"%d. %s\\n\", i+1, task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"vivienherq"},"content":" public static void mark(int n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"vivienherq"},"content":"// taskList[n-1].setDone(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"vivienherq"},"content":" taskList.get(n-1).setDone(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"vivienherq"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"%d. %s\\n\", n, taskList.get(n-1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"vivienherq"},"content":" public static void unmark(int n) {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"vivienherq"},"content":"// taskList[n-1].setDone(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"vivienherq"},"content":" taskList.get(n-1).setDone(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"vivienherq"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"vivienherq"},"content":" System.out.printf(\"%d. %s\\n\", n, taskList.get(n-1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"vivienherq"},"content":" public static void bye() {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"vivienherq"},"content":" String greeting \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"vivienherq"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":73,"author":{"gitId":"vivienherq"},"content":" String greeting \u003d \"Hello, I\u0027m Dude! \\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"vivienherq"},"content":" \"What can I do for you?\";","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"vivienherq"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"vivienherq"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"vivienherq"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"vivienherq"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"vivienherq"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"vivienherq"},"content":" if (words[0].equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"vivienherq"},"content":" list();","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"vivienherq"},"content":" bye();","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"vivienherq"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"vivienherq"},"content":" mark(Integer.valueOf(words[1]));","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"vivienherq"},"content":" unmark(Integer.valueOf(words[1]));","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"vivienherq"},"content":" if (words.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"vivienherq"},"content":" addTodo(input.substring(5));","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"vivienherq"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"vivienherq"},"content":" System.out.println(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"vivienherq"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"vivienherq"},"content":" System.out.println(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"vivienherq"},"content":" String[] taskWords \u003d input.substring(9).split(\" /\");","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"vivienherq"},"content":" String by \u003d taskWords[1].substring(3);","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"vivienherq"},"content":" addDeadline(taskWords[0], by);","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"vivienherq"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"vivienherq"},"content":" System.out.println(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"vivienherq"},"content":" String[] taskWords \u003d input.substring(6).split(\" /\");","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"vivienherq"},"content":" String from \u003d taskWords[1].substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"vivienherq"},"content":" String to \u003d taskWords[2].substring(3);","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"vivienherq"},"content":" addEvent(taskWords[0], from, to);","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"vivienherq"},"content":" } else if (words[0].equals(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"vivienherq"},"content":" delete(Integer.valueOf(words[1]));","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"vivienherq"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"vivienherq"},"content":" System.out.println(\" OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"vivienherq":119,"-":3}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vivienherq"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"vivienherq"},"content":" private String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"vivienherq"},"content":" private String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"vivienherq"},"content":" Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"vivienherq"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vivienherq"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"vivienherq"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vivienherq"},"content":" public String getType() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vivienherq"},"content":" return \"event\";","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"vivienherq"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"vivienherq"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"vivienherq"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"vivienherq"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vivienherq":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vivienherq"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"vivienherq"},"content":" private String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"vivienherq"},"content":" private boolean done;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vivienherq"},"content":" Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vivienherq"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"vivienherq"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"vivienherq"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"vivienherq"},"content":" return this.done;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"vivienherq"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"vivienherq"},"content":" return this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"vivienherq"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"vivienherq"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"vivienherq"},"content":" public String getType() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"vivienherq"},"content":" return \"task\";","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"vivienherq"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"vivienherq"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"vivienherq"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"vivienherq"},"content":" String doneStatus \u003d \"[ ]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"vivienherq"},"content":" if (this.isDone()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"vivienherq"},"content":" doneStatus \u003d \"[X]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"vivienherq"},"content":" return doneStatus + \" \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"vivienherq"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vivienherq":34}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vivienherq"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"vivienherq"},"content":" ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"vivienherq"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"vivienherq"},"content":" public String getType() {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"vivienherq"},"content":" return \"todo\";","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"vivienherq"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"vivienherq"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"vivienherq"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"vivienherq"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"vivienherq"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"vivienherq":12}}] diff --git a/vivienherq_ip_master/commits.json b/vivienherq_ip_master/commits.json index 853123a0..c00423bb 100644 --- a/vivienherq_ip_master/commits.json +++ b/vivienherq_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"vivienherq":[{"date":"2023-08-23","commitResults":[{"hash":"4b12bd630068eddc46a497eb0bacd4eb5b6cd30c","isMergeCommit":false,"messageTitle":"rename","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a6f13d3c9e8d57d81c0b91954d960e55bd88cbf8","isMergeCommit":false,"messageTitle":"greet \u0026 exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"6ae3cc1187cea177e5bf90f51a98e7ee5945d898","isMergeCommit":false,"messageTitle":"echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":8}}},{"hash":"cfc7c19c6049d628d97d7c73e21026ff47873e5a","isMergeCommit":false,"messageTitle":"store \u0026 list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":5}}},{"hash":"ae180ceec8b3da7a6e309aa679bb29ac05a25aeb","isMergeCommit":false,"messageTitle":"task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":6}}},{"hash":"07d666a77604d993ac2f24556ce7e55f17f31b97","isMergeCommit":false,"messageTitle":"mark \u0026 unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"4cec3c5b487cf68908036ea47d2395c546f4f6fc","isMergeCommit":false,"messageTitle":"lvl4 todo, event \u0026 deadline classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"a056e50c7a0d56c8be62157b349a313442e1d75a","isMergeCommit":false,"messageTitle":"lvl4 todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":11}}}]},{"date":"2023-08-24","commitResults":[{"hash":"acbfead0bb0ded72b36cd925e8ca94f37d751145","isMergeCommit":false,"messageTitle":"lvl4 create todos, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":30}}}]}]},"authorFileTypeContributionMap":{"vivienherq":{"java":163,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"vivienherq":5122.775},"authorDisplayNameMap":{"vivienherq":"HE R..VIEN"}} +{"authorDailyContributionsMap":{"vivienherq":[{"date":"2023-08-23","commitResults":[{"hash":"4b12bd630068eddc46a497eb0bacd4eb5b6cd30c","isMergeCommit":false,"messageTitle":"rename","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a6f13d3c9e8d57d81c0b91954d960e55bd88cbf8","isMergeCommit":false,"messageTitle":"greet \u0026 exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"6ae3cc1187cea177e5bf90f51a98e7ee5945d898","isMergeCommit":false,"messageTitle":"echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":8}}},{"hash":"cfc7c19c6049d628d97d7c73e21026ff47873e5a","isMergeCommit":false,"messageTitle":"store \u0026 list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":5}}},{"hash":"ae180ceec8b3da7a6e309aa679bb29ac05a25aeb","isMergeCommit":false,"messageTitle":"task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":6}}},{"hash":"07d666a77604d993ac2f24556ce7e55f17f31b97","isMergeCommit":false,"messageTitle":"mark \u0026 unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"4cec3c5b487cf68908036ea47d2395c546f4f6fc","isMergeCommit":false,"messageTitle":"lvl4 todo, event \u0026 deadline classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"a056e50c7a0d56c8be62157b349a313442e1d75a","isMergeCommit":false,"messageTitle":"lvl4 todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":11}}}]},{"date":"2023-08-24","commitResults":[{"hash":"acbfead0bb0ded72b36cd925e8ca94f37d751145","isMergeCommit":false,"messageTitle":"lvl4 create todos, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":30}}}]},{"date":"2023-09-01","commitResults":[{"hash":"0dadc7273a4bfb1555d278ea33b42381a8a57de6","isMergeCommit":false,"messageTitle":"lvl 5 handle errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"91b96cfd20270856a02d67b1730a00b36be33621","isMergeCommit":false,"messageTitle":"lvl 6 delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":9}}}]}]},"authorFileTypeContributionMap":{"vivienherq":{"java":195,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"vivienherq":2864.9954},"authorDisplayNameMap":{"vivienherq":"HE R..VIEN"}} diff --git a/wanghejin_ip_master/authorship.json b/wanghejin_ip_master/authorship.json index 0bc7cc90..a3aa78e2 100644 --- a/wanghejin_ip_master/authorship.json +++ b/wanghejin_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"1|TODO|singing lesson","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"0|EVENT|conference|8th aug|9th aug","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"1|TODO|borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"0|DEADLINE|return book|Sunday","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"1|EVENT|project meeting|Mon 2pm|4pm","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"1|TODO|borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"1|TODO|eat cottoncanday","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"0|DEADLINE|do homework|tmr","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":"1|EVENT|agile website|thursday|friday","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wanghejin":9}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# User Guide","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"### Feature-ABC","lastModifiedDate":"2021-07-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Description of the feature.","lastModifiedDate":"2021-07-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"### Feature-XYZ","lastModifiedDate":"2021-07-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Description of the feature.","lastModifiedDate":"2021-07-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":"### `cheems.Keyword` - Describe action","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Describe the action and its outcome.","lastModifiedDate":"2021-07-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Example of usage: ","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"`keyword (optional arguments)`","lastModifiedDate":"2019-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Description of the outcome.","lastModifiedDate":"2021-07-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"expected output","lastModifiedDate":"2021-07-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"wanghejin":1,"-":28}},{"path":"src/main/java/cheems/Cheems.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" * Represents the main class of the chatbot.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"public class Cheems {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" private final static Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" public Cheems(String filepath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" this.storage \u003d Storage.getInstance(filepath);","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" * Runs the chatbot.","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" public void run() {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" UI.showWelcomeMsg();","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" storage.loadData();","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" String input \u003d UI.getInput(scanner);","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" // business logic","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" Parser.parseAndExecute(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" input \u003d UI.getInput(scanner);","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" UI.showExitMsg();","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" Cheems cheems \u003d new Cheems(\"data.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" cheems.run();","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"wanghejin":41}},{"path":"src/main/java/cheems/Keyword.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" * Represents different commands recognised by the chatbot.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"public enum Keyword {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":" MARK,","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" UNMARK,","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" TODO,","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" DEADLINE,","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":" EVENT,","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" LIST,","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" DELETE,","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" FIND","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":15}},{"path":"src/main/java/cheems/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import cheems.exceptions.EmptyArgumentException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"import cheems.exceptions.InvalidKeywordException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":" * Parser parses the input from the user and execute corresponding actions.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" * Exceptions are thrown should the input be invalid.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":"public class Parser {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" * Parses the given input and tells Tasklist the action to take.","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" * Exceptions are thrown should the input be invalid.","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" * @param input User input.","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" * @throws InvalidKeywordException if the keyword is not recognised.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" * @throws EmptyArgumentException if no argument is provided for commands requiring arguments.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" * @throws NumberFormatException if non-digit argument is provided for commands requiring digits as arguments.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" public static void parseAndExecute(String input)","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" throws InvalidKeywordException, EmptyArgumentException, NumberFormatException {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" if (!input.isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" // if keyword not recognised","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" if (!inKeywords(words[0])) {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" throw new InvalidKeywordException();","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" // extract command as the first word","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" Keyword currentKey \u003d Keyword.valueOf(words[0].toUpperCase());","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" if (currentKey \u003d\u003d Keyword.LIST) {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" Tasklist.displayData();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" // if there is no argument provided for commands supposed to have arguments","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" throw new EmptyArgumentException(currentKey.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" String args \u003d words[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":" // if there are indeed arguments provided","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" switch (currentKey) {","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":" case FIND:","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":" Tasklist.find(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wanghejin"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wanghejin"},"content":" case MARK:","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"wanghejin"},"content":" // Fallthrough","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wanghejin"},"content":" case UNMARK:","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"wanghejin"},"content":" // Fallthrough","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wanghejin"},"content":" case DELETE:","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"wanghejin"},"content":" if (args.chars().allMatch(Character::isDigit)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wanghejin"},"content":" int index \u003d Integer.parseInt(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"wanghejin"},"content":" if (currentKey \u003d\u003d Keyword.MARK) {","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"wanghejin"},"content":" Tasklist.markAsDone(index - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"wanghejin"},"content":" } else if (currentKey \u003d\u003d Keyword.UNMARK) {","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"wanghejin"},"content":" Tasklist.markAsNotDone(index - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"wanghejin"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"wanghejin"},"content":" Tasklist.delete(index - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"wanghejin"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"wanghejin"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"wanghejin"},"content":" String errMsg \u003d \"Sorry you must provide the task number to mark/unmark it!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"wanghejin"},"content":" throw new NumberFormatException(errMsg);","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"wanghejin"},"content":" case TODO:","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"wanghejin"},"content":" Tasklist.addTaskToDatabase(\"TODO\", args);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"wanghejin"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"wanghejin"},"content":" case EVENT:","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"wanghejin"},"content":" words \u003d args.split(\" /from \");","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"wanghejin"},"content":" String eventDescription \u003d words[0];","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"wanghejin"},"content":" String[] words1 \u003d words[1].split(\" /to \");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"wanghejin"},"content":" String from \u003d words1[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"wanghejin"},"content":" String to \u003d words1[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"wanghejin"},"content":" Tasklist.addTaskToDatabase(\"EVENT\", eventDescription, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"wanghejin"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"wanghejin"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"wanghejin"},"content":" words \u003d args.split(\" /by \");","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"wanghejin"},"content":" String ddlDescription \u003d words[0];","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"wanghejin"},"content":" String by \u003d words[1];","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"wanghejin"},"content":" Tasklist.addTaskToDatabase(\"DEADLINE\", ddlDescription, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"wanghejin"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"wanghejin"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"Please give me instructions, if not, I\u0027ll serve you some fries.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"wanghejin"},"content":" UI.printWithFormat(resp);","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"wanghejin"},"content":" private static boolean inKeywords(String word) {","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"wanghejin"},"content":" for (Keyword k: Keyword.values()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":93,"author":{"gitId":"wanghejin"},"content":" if (k.name().toLowerCase().equals(word)) {","lastModifiedDate":"2023-08-22"},{"lineNumber":94,"author":{"gitId":"wanghejin"},"content":" return true;","lastModifiedDate":"2023-08-22"},{"lineNumber":95,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":96,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"wanghejin"},"content":" return false;","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":101,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":104}},{"path":"src/main/java/cheems/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import cheems.exceptions.InputOutputException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" * Represents the text database that stores the data.","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" * Contains methods that interacts with the database and current task list during program run.","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" * Each Storage object has a file field storing the file to read and write from.","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" private final File file;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" * This is the instance of Storage singleton object that is always used.","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" private static Storage instance;","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" * This private constructor is called only by getInstance(String filepath).","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" * Creates the file should it not exist.","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" * Stores the file in this.file field of the class, for easy reference by other methods.","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" * @param filePath The filepath used to find the text file for storing task data.","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" * @throws InputOutputException If fails to create the new file.","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" private Storage(String filePath) throws InputOutputException {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":" if (!f.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":" this.file \u003d f;","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"wanghejin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"wanghejin"},"content":" throw new InputOutputException(\"Failed to create a new data file!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"wanghejin"},"content":" * Acts as an overloaded constructor of the Storage class, only called upon startup of the chatbot.","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"wanghejin"},"content":" * Returns a new Storage object based on the filepath given as the database text location.","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"wanghejin"},"content":" * Stores this object in the static singleton field for global access.","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"wanghejin"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"wanghejin"},"content":" * @param filepath Text database location.","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"wanghejin"},"content":" * @return A Storage object.","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"wanghejin"},"content":" public static Storage getInstance(String filepath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"wanghejin"},"content":" instance \u003d new Storage(filepath);","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"wanghejin"},"content":" return instance;","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"wanghejin"},"content":" * Acts as an overloaded constructor of the Storage class, called by all methods except Cheems.main().","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"wanghejin"},"content":" * Retrieves the singleton Storage object from static field instance.","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"wanghejin"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"wanghejin"},"content":" * @return A Storage object.","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"wanghejin"},"content":" public static Storage getInstance() {","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"wanghejin"},"content":" return instance;","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"wanghejin"},"content":" * Reads tasks from database file.","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"wanghejin"},"content":" * Calls Tasklist.addTask() to add these into the tasklist maintained during chatbot run.","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"wanghejin"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"wanghejin"},"content":" * @throws InputOutputException If fails to find the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"wanghejin"},"content":" public void loadData() throws InputOutputException {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"wanghejin"},"content":" try (Scanner s \u003d new Scanner(this.file)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"wanghejin"},"content":" String input;","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"wanghejin"},"content":" while (s.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"wanghejin"},"content":" input \u003d s.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"wanghejin"},"content":" String[] taskLine \u003d input.split(\"\\\\|\");","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"wanghejin"},"content":" Tasklist.loadTaskFromDatabase(taskLine);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"wanghejin"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"wanghejin"},"content":" String msg \u003d String.format(\"I cannot find %s! May be accidental deletion, \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"wanghejin"},"content":" \"try restart cheems.Cheems!\", file.getName());","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"wanghejin"},"content":" throw new InputOutputException(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"wanghejin"},"content":" * Saves a new task to the database text.","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"wanghejin"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"wanghejin"},"content":" * @param taskLine The line to be written to the database, formatted based on database specification.","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"wanghejin"},"content":" * @throws InputOutputException If fails to write to file.","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"wanghejin"},"content":" public void saveNewTask(String taskLine) throws InputOutputException {","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"wanghejin"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"wanghejin"},"content":" FileWriter fw \u003d new FileWriter(this.file, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"wanghejin"},"content":" fw.write(taskLine + System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"wanghejin"},"content":" fw.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"wanghejin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"wanghejin"},"content":" throw new InputOutputException(\"I cannot open the file for writing!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"wanghejin"},"content":" * Updates the specific task in the database with either of the following actions: delete, mark, unmark.","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"wanghejin"},"content":" * Side effect: Overwrites the whole file.","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"wanghejin"},"content":" * @throws InputOutputException If fails to read or write to file.","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"wanghejin"},"content":" public void updateWholeDatabase() throws InputOutputException {","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"wanghejin"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"wanghejin"},"content":" FileWriter fw \u003d new FileWriter(this.file);","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"wanghejin"},"content":" fw.write(Tasklist.taskListToStorage());","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"wanghejin"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"wanghejin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"wanghejin"},"content":" throw new InputOutputException(\"I cannot open the file for writing!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wanghejin":124}},{"path":"src/main/java/cheems/Tasklist.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import cheems.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"import cheems.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"import cheems.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"import cheems.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":" * Represents a task list directly interacts with the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" * Interacts with Storage class as well to retrieve and update information to the text database.","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":"public class Tasklist {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" private static final ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" private static int total \u003d 0; // total also indicates the first free slot","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" private static void checkIndexOutOfBoundsHelper(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" if (index \u003e\u003d total) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" String errMsg \u003d String.format(\"Sorry you do not have task #%d, \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" \"try \\\"list\\\" to check your current list of tasks!\", index + 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" throw new IndexOutOfBoundsException(errMsg);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" * Creates a task object based on the string parameters given.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" * @param isFromDatabase Represents whether the method is used for creating an object based on string input","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":" * from the database or the end user, since they have different formats.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" * If from the database, the isDone status needs to be reflected in the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" * @param params Represents the string parameters used to create the new task.","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" * @return A new task object.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" private static Task identifyCreateTask(boolean isFromDatabase, String... params) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" // If the params variable arguments is from the database","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" // There is a single digit 0/1 in front to represent isDone status","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" // Needs to move the start index to read arguments for creating the task 1 position back","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" int startIndex \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" if (isFromDatabase) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":" startIndex++;","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" isDone \u003d params[0].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wanghejin"},"content":" // Parse the arguments and create the new task","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wanghejin"},"content":" Keyword keyword \u003d Keyword.valueOf(params[startIndex]);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wanghejin"},"content":" Task task \u003d new Todo(params[startIndex + 1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wanghejin"},"content":" switch (keyword) {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"wanghejin"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"wanghejin"},"content":" task \u003d new Deadline(params[startIndex + 1], params[startIndex + 2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"wanghejin"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"wanghejin"},"content":" case EVENT:","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"wanghejin"},"content":" task \u003d new Event(params[startIndex + 1], params[startIndex + 2], params[startIndex + 3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"wanghejin"},"content":" if (isFromDatabase \u0026\u0026 isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"wanghejin"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"wanghejin"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"wanghejin"},"content":" * Loads the task from the database to the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"wanghejin"},"content":" * @param params An array of strings used to create a new task.","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"wanghejin"},"content":" public static void loadTaskFromDatabase(String... params) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"wanghejin"},"content":" Task newTask \u003d identifyCreateTask(true, params);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"wanghejin"},"content":" list.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"wanghejin"},"content":" total++;","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"wanghejin"},"content":" * Adds a new task the user specified to the task list.","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"wanghejin"},"content":" * Updates the database to include this task.","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"wanghejin"},"content":" * @param params An array of strings used to create a new task.","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"wanghejin"},"content":" public static void addTaskToDatabase(String... params) {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"wanghejin"},"content":" Task newTask \u003d identifyCreateTask(false, params);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"wanghejin"},"content":" list.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"wanghejin"},"content":" total++;","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"wanghejin"},"content":" Storage.getInstance().saveNewTask(newTask.toStorage());","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"I have added this task for you!\\n\" + newTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"wanghejin"},"content":" resp +\u003d String.format(\"\\nNow you have %d task(s) in your list!\", total);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"wanghejin"},"content":" UI.printWithFormat(resp);","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":88,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":89,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"wanghejin"},"content":" * Prints all tasks in the current task list.","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"wanghejin"},"content":" public static void displayData() {","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"wanghejin"},"content":" if (total \u003d\u003d 0) {","lastModifiedDate":"2023-08-26"},{"lineNumber":95,"author":{"gitId":"wanghejin"},"content":" resp \u003d \"You have no task right now:) Happy happy!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"wanghejin"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"wanghejin"},"content":" for (int i \u003d 0; i \u003c total; i++) {","lastModifiedDate":"2023-08-26"},{"lineNumber":98,"author":{"gitId":"wanghejin"},"content":" resp +\u003d String.format(\"%d.%s\\n\", i + 1, list.get(i));","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"wanghejin"},"content":" UI.printWithFormat(resp);","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":103,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":104,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"wanghejin"},"content":" * Marks the task at index in the task list as done.","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"wanghejin"},"content":" * @param index The index of task to be marked done.","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"wanghejin"},"content":" * @throws IndexOutOfBoundsException when the index entered is out of range.","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"wanghejin"},"content":" public static void markAsDone(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"wanghejin"},"content":" checkIndexOutOfBoundsHelper(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"wanghejin"},"content":" list.get(index).markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"wanghejin"},"content":" Storage.getInstance().updateWholeDatabase();","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":115,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"Good job! I\u0027ve marked this task as done:\\n\" + list.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"wanghejin"},"content":" UI.printWithFormat(resp);","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":118,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":119,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"wanghejin"},"content":" * Marks the task at index in the task list as undone.","lastModifiedDate":"2023-08-29"},{"lineNumber":121,"author":{"gitId":"wanghejin"},"content":" * @param index The index of task to be marked undone.","lastModifiedDate":"2023-08-29"},{"lineNumber":122,"author":{"gitId":"wanghejin"},"content":" * @throws IndexOutOfBoundsException when the index entered is out of range.","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":124,"author":{"gitId":"wanghejin"},"content":" public static void markAsNotDone(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"wanghejin"},"content":" checkIndexOutOfBoundsHelper(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":127,"author":{"gitId":"wanghejin"},"content":" list.get(index).markAsNotDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"wanghejin"},"content":" Storage.getInstance().updateWholeDatabase();","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":130,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"Okie dokie! I\u0027ve unmarked it for you:\\n\" + list.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"wanghejin"},"content":" UI.printWithFormat(resp);","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":133,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":135,"author":{"gitId":"wanghejin"},"content":" * Deletes the task at index in the task list and updates the database.","lastModifiedDate":"2023-08-29"},{"lineNumber":136,"author":{"gitId":"wanghejin"},"content":" * @param index The index of task to be deleted.","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"wanghejin"},"content":" * @throws IndexOutOfBoundsException when the index entered is out of range.","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":139,"author":{"gitId":"wanghejin"},"content":" public static void delete(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"wanghejin"},"content":" checkIndexOutOfBoundsHelper(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":142,"author":{"gitId":"wanghejin"},"content":" Task t \u003d list.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"wanghejin"},"content":" list.remove(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"wanghejin"},"content":" total--;","lastModifiedDate":"2023-08-26"},{"lineNumber":145,"author":{"gitId":"wanghejin"},"content":" Storage.getInstance().updateWholeDatabase();","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":147,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"wanghejin"},"content":" t +","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"wanghejin"},"content":" String.format(\"\\nNow you have %d tasks in your list!\", total);","lastModifiedDate":"2023-08-26"},{"lineNumber":150,"author":{"gitId":"wanghejin"},"content":" UI.printWithFormat(resp);","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":152,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"wanghejin"},"content":" * Finds and Print the tasks with corresponding keyword in their description.","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"wanghejin"},"content":" * @param search The array of strings that represents the keyword we need to search for.","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"wanghejin"},"content":" public static void find(String search) {","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"wanghejin"},"content":" ArrayList\u003cTask\u003e tempList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"wanghejin"},"content":" int a \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"wanghejin"},"content":" for (int i \u003d 0; i \u003c total; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"wanghejin"},"content":" if (list.get(i).getDescription().contains(search)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"wanghejin"},"content":" resp +\u003d String.format(\"%d.%s\\n\", a, list.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"wanghejin"},"content":" a++;","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"wanghejin"},"content":" if (resp \u003d\u003d \"\") {","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"wanghejin"},"content":" resp \u003d \"There is no corresponding task in your list!\";","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"wanghejin"},"content":" UI.printWithFormat(resp);","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"wanghejin"},"content":" * Converts the tasks in list to Storage compatible string format.","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"wanghejin"},"content":" * @return A string in storage format.","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"wanghejin"},"content":" public static String taskListToStorage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"wanghejin"},"content":" for (int i \u003d 0; i \u003c total; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"wanghejin"},"content":" resp +\u003d list.get(i).toStorage() + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"wanghejin"},"content":" return resp;","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"wanghejin":186}},{"path":"src/main/java/cheems/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" * Represents the user interface for the application.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":" * Handles display and interaction with the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":"public class UI {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" * Prints welcome message with logo and greetings.","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" public static void showWelcomeMsg() {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" String logo \u003d \"\\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" \" __ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" \" [ | \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" \" .---. | |--. .---. .---. _ .--..--. .--. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" \"/ /\u0027`\\\\] | .-. | / /__\\\\\\\\ / /__\\\\\\\\ [ `.-. .-. | ( (`\\\\] \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" \"| \\\\__. | | | | | \\\\__., | \\\\__., | | | | | | `\u0027.\u0027. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" \"\u0027.___.\u0027 [___]|__] \u0027.__.\u0027 \u0027.__.\u0027 [___||__||__] [\\\\__) ) \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" \" \\n\";","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" System.out.println(\"Hello from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" String hello \u003d \"Heyo I\u0027m Cheems! Nice to meet you:)\" + \"\\n\" + \"Want to get some fries on the pier together?\";","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" printWithFormat(hello);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" * Prints exit message.","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" public static void showExitMsg() {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" String bye \u003d \"Okay bye:( Let\u0027s get the fries next time.\";","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" printWithFormat(bye);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" * Prompts and obtains user input.","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" * @param scanner The scanner to scan user input.","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":" * @return The user input in a string.","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":" public static String getInput(Scanner scanner) {","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":" System.out.println(\"\u003e You: \");","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"wanghejin"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"wanghejin"},"content":" * Formats the given feedback to user to comply with chatbot convention.","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"wanghejin"},"content":" * @param msg Feedback to user.","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"wanghejin"},"content":" public static void printWithFormat(String msg) {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"wanghejin"},"content":" System.out.println(\"\u003e Cheems: \");","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"wanghejin"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"wanghejin":56}},{"path":"src/main/java/cheems/exceptions/EmptyArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" * Custom exception class to represent an input with empty arguments.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" * This exception is thrown when an input with empty arguments is entered by the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"public class EmptyArgumentException extends RuntimeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" public EmptyArgumentException(String keyword) {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" super(String.format(\"Please specify the correct number of arguments for keyword %s ~~\", keyword));","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":11}},{"path":"src/main/java/cheems/exceptions/InputOutputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"public class InputOutputException extends RuntimeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" public InputOutputException(String msg) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" super(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wanghejin":7}},{"path":"src/main/java/cheems/exceptions/InvalidKeywordException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" * Custom exception class to represent an invalid keyword input.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" * This exception is thrown when an input keyword is not recognised by the chatbot.","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"public class InvalidKeywordException extends RuntimeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" public InvalidKeywordException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" super(\"Sorry I do not understand you, can you provide another keyword or I get you some fries?\");","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":11}},{"path":"src/main/java/cheems/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" * A child class of the abstract Task class.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" * Represents a task that has a deadline.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" private String by;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" LocalDate date \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" this.by \u003d date.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" * Formats the deadline task in a user-friendly readable string.","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" * @return A string representation of the deadline task.","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" public String toStorage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" return String.format(\"%d|DEADLINE|%s|%s\", this.isDone ? 1 : 0, this.getDescription(), this.by);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":39}},{"path":"src/main/java/cheems/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" * A child class of the abstract Task class.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" * Represents a task that has a start time and an end time.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" private String from;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" private String to;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" LocalDate date \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" this.from \u003d date.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" LocalDate date \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" this.to \u003d date.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" * Formats the event task in a user-friendly readable string.","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" * @return A string representation of the event task.","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" return \"[E]\" + super.toString() +","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" \" (from: \" + this.from +","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":" public String toStorage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":" return String.format(\"%d|EVENT|%s|%s|%s\", this.isDone ? 1 : 0, this.getDescription(), this.from, this.to);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":46}},{"path":"src/main/java/cheems/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" * An abstract class that represents each task.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" * Each task has a string description and a status.","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" private String description;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" public abstract String toStorage();","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" /** Marks this task as done.*/","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" /** Marks this task as undone.*/","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" * Formats the task in a user-friendly readable string.","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" * @return A string representation of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"wanghejin":44}},{"path":"src/main/java/cheems/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" * A child class of the abstract Task class.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" * Represents a task that is a to-do.","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" * Formats the todo task in a user-friendly readable string.","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" * @return A string representation of the todo task.","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" public String toStorage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" return String.format(\"%d|TODO|%s\", this.isDone ? 1 : 0, this.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":26}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"hello","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"mark something","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"todo borrow book","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":"mark 3","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"unmark 3","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":13}},{"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":"wanghejin"},"content":"java -classpath ../bin Cheems \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-22"},{"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":{"wanghejin":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":"wanghejin"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" testImplementation \"org.mockito:mockito-core:3.+\"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" testImplementation group: \u0027org.assertj\u0027, name: \u0027assertj-core\u0027, version: \u00273.6.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","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":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" mainClass.set(\"cheems.Cheems\")","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" archiveBaseName \u003d \"cheems\"","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"wanghejin":6,"-":40}},{"path":"data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wanghejin":1}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# User Guide","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"### Feature-ABC","lastModifiedDate":"2021-07-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Description of the feature.","lastModifiedDate":"2021-07-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"### Feature-XYZ","lastModifiedDate":"2021-07-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Description of the feature.","lastModifiedDate":"2021-07-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":"### `cheems.Keyword` - Describe action","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Describe the action and its outcome.","lastModifiedDate":"2021-07-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Example of usage: ","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"`keyword (optional arguments)`","lastModifiedDate":"2019-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Description of the outcome.","lastModifiedDate":"2021-07-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"expected output","lastModifiedDate":"2021-07-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"wanghejin":1,"-":28}},{"path":"src/main/java/cheems/Cheems.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" * Represents the main class of the chatbot.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"public class Cheems {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" private final static Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":" private final Parser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" private final Tasklist tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" private final UI ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" public Cheems(String filepath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" ui \u003d new UI();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" storage \u003d new Storage(filepath);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" tasklist \u003d new Tasklist(storage, ui);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" parser \u003d new Parser(tasklist, ui);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" * Runs the chatbot.","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" public void run() {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" ui.showWelcomeMsg();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" tasklist.loadTaskFromDatabase();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" String input \u003d ui.getInput(scanner);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" // business logic","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" parser.parseAndExecute(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" System.out.println(e.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" input \u003d ui.getInput(scanner);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" ui.showExitMsg();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":" Cheems cheems \u003d new Cheems(\"data.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"wanghejin"},"content":" cheems.run();","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"wanghejin":47}},{"path":"src/main/java/cheems/Keyword.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" * Represents different commands recognised by the chatbot.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"public enum Keyword {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":" MARK,","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" UNMARK,","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" TODO,","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" DEADLINE,","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":" EVENT,","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" LIST,","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" DELETE,","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" FIND","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":15}},{"path":"src/main/java/cheems/ListManageable.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"public interface ListManageable {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" public void addTaskToDatabase(String... params);","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" public void markAsDone(int i);","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" public void markAsNotDone(int i);","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":" public void delete(int i);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" public void displayData();","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" public void find(String params);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" public void loadTaskFromDatabase();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":" public void taskListToStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wanghejin":12}},{"path":"src/main/java/cheems/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import cheems.exceptions.EmptyArgumentException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"import cheems.exceptions.InvalidKeywordException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":" * Parser parses the input from the user and execute corresponding actions.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" * Exceptions are thrown should the input be invalid.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":"public class Parser {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":" private ListManageable tasklist;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" private Printable ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" public Parser(ListManageable listManager, Printable thisUi) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" tasklist \u003d listManager;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" ui \u003d thisUi;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" * Parses the given input and tells Tasklist the action to take.","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" * Exceptions are thrown should the input be invalid.","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" * @param input User input.","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" * @throws InvalidKeywordException if the keyword is not recognised.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" * @throws EmptyArgumentException if no argument is provided for commands requiring arguments.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" * @throws NumberFormatException if non-digit argument is provided for commands requiring digits as arguments.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" public void parseAndExecute(String input)","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" throws InvalidKeywordException, EmptyArgumentException, NumberFormatException {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" if (!input.isEmpty()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" // if keyword not recognised","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" if (!inKeywords(words[0])) {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" throw new InvalidKeywordException();","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" // extract command as the first word","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" Keyword currentKey \u003d Keyword.valueOf(words[0].toUpperCase());","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" if (currentKey \u003d\u003d Keyword.LIST) {","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" tasklist.displayData();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":" // if there is no argument provided for commands supposed to have arguments","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":" throw new EmptyArgumentException(currentKey.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"wanghejin"},"content":" String args \u003d words[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wanghejin"},"content":" // if there are indeed arguments provided","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wanghejin"},"content":" switch (currentKey) {","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"wanghejin"},"content":" case FIND:","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wanghejin"},"content":" tasklist.find(args);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"wanghejin"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wanghejin"},"content":" case MARK:","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"wanghejin"},"content":" // Fallthrough","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"wanghejin"},"content":" case UNMARK:","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"wanghejin"},"content":" // Fallthrough","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"wanghejin"},"content":" case DELETE:","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"wanghejin"},"content":" if (args.chars().allMatch(Character::isDigit)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"wanghejin"},"content":" int index \u003d Integer.parseInt(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"wanghejin"},"content":" if (currentKey \u003d\u003d Keyword.MARK) {","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"wanghejin"},"content":" tasklist.markAsDone(index - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"wanghejin"},"content":" } else if (currentKey \u003d\u003d Keyword.UNMARK) {","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"wanghejin"},"content":" tasklist.markAsNotDone(index - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"wanghejin"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"wanghejin"},"content":" tasklist.delete(index - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"wanghejin"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"wanghejin"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"wanghejin"},"content":" String errMsg \u003d \"Sorry you must provide the task number to mark/unmark it!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"wanghejin"},"content":" throw new NumberFormatException(errMsg);","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"wanghejin"},"content":" case TODO:","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"wanghejin"},"content":" tasklist.addTaskToDatabase(\"TODO\", args);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"wanghejin"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"wanghejin"},"content":" case EVENT:","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"wanghejin"},"content":" words \u003d args.split(\" /from \");","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"wanghejin"},"content":" String eventDescription \u003d words[0];","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"wanghejin"},"content":" String[] words1 \u003d words[1].split(\" /to \");","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"wanghejin"},"content":" String from \u003d words1[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"wanghejin"},"content":" String to \u003d words1[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"wanghejin"},"content":" tasklist.addTaskToDatabase(\"EVENT\", eventDescription, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"wanghejin"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"wanghejin"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"wanghejin"},"content":" words \u003d args.split(\" /by \");","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"wanghejin"},"content":" String ddlDescription \u003d words[0];","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"wanghejin"},"content":" String by \u003d words[1];","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"wanghejin"},"content":" tasklist.addTaskToDatabase(\"DEADLINE\", ddlDescription, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"wanghejin"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"wanghejin"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"Please give me instructions, if not, I\u0027ll serve you some fries.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"wanghejin"},"content":" ui.printWithFormat(resp);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":95,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":96,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"wanghejin"},"content":" private boolean inKeywords(String word) {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"wanghejin"},"content":" for (Keyword k: Keyword.values()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"wanghejin"},"content":" if (k.name().toLowerCase().equals(word)) {","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"wanghejin"},"content":" return true;","lastModifiedDate":"2023-08-22"},{"lineNumber":101,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"wanghejin"},"content":" return false;","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":110}},{"path":"src/main/java/cheems/Printable.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"public interface Printable {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" public void printWithFormat(String a);","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wanghejin":5}},{"path":"src/main/java/cheems/Storable.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"public interface Storable {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" public void saveNewTask(String a);","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":" public ArrayList\u003cString[]\u003e loadData();","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" public void updateWholeDatabase(String a);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wanghejin":9}},{"path":"src/main/java/cheems/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import cheems.exceptions.InputOutputException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" * Represents the text database that stores the data.","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" * Contains methods that interacts with the database and current task list during program run.","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":"public class Storage implements Storable {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" * Each Storage object has a file field storing the file to read and write from.","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" private final File file;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" * This private constructor is called only by getInstance(String filepath).","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":" * Creates the file should it not exist.","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" * Stores the file in this.file field of the class, for easy reference by other methods.","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" * @param filePath The filepath used to find the text file for storing task data.","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" * @throws InputOutputException If fails to create the new file.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" public Storage(String filePath) throws InputOutputException {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" if (!f.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":" this.file \u003d f;","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":" throw new InputOutputException(\"Failed to create a new data file!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"wanghejin"},"content":" * Reads tasks from database file.","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"wanghejin"},"content":" * Calls Tasklist.addTask() to add these into the tasklist maintained during chatbot run.","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"wanghejin"},"content":" * @return An Arraylist containing tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"wanghejin"},"content":" * @throws InputOutputException If fails to find the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"wanghejin"},"content":" public ArrayList\u003cString[]\u003e loadData() throws InputOutputException {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"wanghejin"},"content":" try (Scanner s \u003d new Scanner(this.file)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"wanghejin"},"content":" String input;","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"wanghejin"},"content":" ArrayList\u003cString[]\u003e output \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"wanghejin"},"content":" while (s.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"wanghejin"},"content":" input \u003d s.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"wanghejin"},"content":" String[] taskLine \u003d input.split(\"\\\\|\");","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"wanghejin"},"content":" output.add(taskLine);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"wanghejin"},"content":" return output;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"wanghejin"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"wanghejin"},"content":" String msg \u003d String.format(\"I cannot find %s! May be accidental deletion, \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"wanghejin"},"content":" \"try restart cheems.Cheems!\", file.getName());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"wanghejin"},"content":" throw new InputOutputException(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"wanghejin"},"content":" * Saves a new task to the database text.","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"wanghejin"},"content":" * @param taskLine The line to be written to the database, formatted based on database specification.","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"wanghejin"},"content":" * @throws InputOutputException If fails to write to file.","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"wanghejin"},"content":" public void saveNewTask(String taskLine) throws InputOutputException {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"wanghejin"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"wanghejin"},"content":" FileWriter fw \u003d new FileWriter(this.file, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"wanghejin"},"content":" fw.write(taskLine + System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"wanghejin"},"content":" fw.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"wanghejin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"wanghejin"},"content":" throw new InputOutputException(\"I cannot open the file for writing!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"wanghejin"},"content":" * Updates the specific task in the database with either of the following actions: delete, mark, unmark.","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"wanghejin"},"content":" * Side effect: Overwrites the whole file.","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"wanghejin"},"content":" * @param content The content to write to database.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"wanghejin"},"content":" * @throws InputOutputException If fails to read or write to file.","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"wanghejin"},"content":" public void updateWholeDatabase(String content) throws InputOutputException {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"wanghejin"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"wanghejin"},"content":" FileWriter fw \u003d new FileWriter(this.file);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"wanghejin"},"content":" fw.write(content);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"wanghejin"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"wanghejin"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"wanghejin"},"content":" throw new InputOutputException(\"I cannot open the file for writing!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wanghejin":102}},{"path":"src/main/java/cheems/Tasklist.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import cheems.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"import cheems.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"import cheems.tasks.Todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"import cheems.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":" * Represents a task list directly interacts with the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" * Interacts with Storage class as well to retrieve and update information to the text database.","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":"public class Tasklist implements ListManageable {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" private final ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" private int total \u003d 0; // total also indicates the first free slot","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" private final Storable storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" private final Printable ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" public Tasklist(Storable storage, Printable ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" private void checkIndexOutOfBoundsHelper(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" if (index \u003e\u003d total) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" String errMsg \u003d String.format(\"Sorry you do not have task #%d, \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" \"try \\\"list\\\" to check your current list of tasks!\", index + 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":" throw new IndexOutOfBoundsException(errMsg);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" * Creates a task object based on the string parameters given.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" * @param isFromDatabase Represents whether the method is used for creating an object based on string input","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" * from the database or the end user, since they have different formats.","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" * If from the database, the isDone status needs to be reflected in the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" * @param params Represents the string parameters used to create the new task.","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" * @return A new task object.","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":" private Task identifyCreateTask(boolean isFromDatabase, String... params) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" // If the params variable arguments is from the database","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":" // There is a single digit 0/1 in front to represent isDone status","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":" // Needs to move the start index to read arguments for creating the task 1 position back","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wanghejin"},"content":" int startIndex \u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wanghejin"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wanghejin"},"content":" if (isFromDatabase) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wanghejin"},"content":" startIndex++;","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"wanghejin"},"content":" isDone \u003d params[0].equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wanghejin"},"content":" // Parse the arguments and create the new task","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"wanghejin"},"content":" Keyword keyword \u003d Keyword.valueOf(params[startIndex]);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"wanghejin"},"content":" Task task \u003d new Todo(params[startIndex + 1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"wanghejin"},"content":" switch (keyword) {","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"wanghejin"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"wanghejin"},"content":" task \u003d new Deadline(params[startIndex + 1], params[startIndex + 2]);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"wanghejin"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"wanghejin"},"content":" case EVENT:","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"wanghejin"},"content":" task \u003d new Event(params[startIndex + 1], params[startIndex + 2], params[startIndex + 3]);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"wanghejin"},"content":" if (isFromDatabase \u0026\u0026 isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"wanghejin"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"wanghejin"},"content":" return task;","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"wanghejin"},"content":" * Loads the task from the database to the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"wanghejin"},"content":" public void loadTaskFromDatabase() {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"wanghejin"},"content":" ArrayList\u003cString[]\u003e dataList \u003d storage.loadData();","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"wanghejin"},"content":" for (String[] params : dataList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"wanghejin"},"content":" Task newTask \u003d identifyCreateTask(true, params);","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"wanghejin"},"content":" list.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"wanghejin"},"content":" total++;","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"wanghejin"},"content":" * Adds a new task the user specified to the task list.","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"wanghejin"},"content":" * Updates the database to include this task.","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"wanghejin"},"content":" * @param params An array of strings used to create a new task.","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"wanghejin"},"content":" public void addTaskToDatabase(String... params) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"wanghejin"},"content":" Task newTask \u003d identifyCreateTask(false, params);","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"wanghejin"},"content":" list.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"wanghejin"},"content":" total++;","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"wanghejin"},"content":" storage.saveNewTask(newTask.toStorage());","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":95,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"I have added this task for you!\\n\" + newTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"wanghejin"},"content":" resp +\u003d String.format(\"\\nNow you have %d task(s) in your list!\", total);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"wanghejin"},"content":" ui.printWithFormat(resp);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":99,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":100,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"wanghejin"},"content":" public Task getTaskAt(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"wanghejin"},"content":" return list.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"wanghejin"},"content":" public int getTotal() {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"wanghejin"},"content":" return total;","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"wanghejin"},"content":" * Prints all tasks in the current task list.","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"wanghejin"},"content":" public void displayData() {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"wanghejin"},"content":" if (total \u003d\u003d 0) {","lastModifiedDate":"2023-08-26"},{"lineNumber":115,"author":{"gitId":"wanghejin"},"content":" resp \u003d \"You have no task right now:) Happy happy!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"wanghejin"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":117,"author":{"gitId":"wanghejin"},"content":" for (int i \u003d 0; i \u003c total; i++) {","lastModifiedDate":"2023-08-26"},{"lineNumber":118,"author":{"gitId":"wanghejin"},"content":" resp +\u003d String.format(\"%d.%s\\n\", i + 1, list.get(i));","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":121,"author":{"gitId":"wanghejin"},"content":" ui.printWithFormat(resp);","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":123,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":124,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":125,"author":{"gitId":"wanghejin"},"content":" * Marks the task at index in the task list as done.","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"wanghejin"},"content":" * @param index The index of task to be marked done.","lastModifiedDate":"2023-08-29"},{"lineNumber":127,"author":{"gitId":"wanghejin"},"content":" * @throws IndexOutOfBoundsException when the index entered is out of range.","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"wanghejin"},"content":" public void markAsDone(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"wanghejin"},"content":" checkIndexOutOfBoundsHelper(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"wanghejin"},"content":" list.get(index).markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"wanghejin"},"content":" taskListToStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":136,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"Good job! I\u0027ve marked this task as done:\\n\" + list.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"wanghejin"},"content":" ui.printWithFormat(resp);","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":139,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":140,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":141,"author":{"gitId":"wanghejin"},"content":" * Marks the task at index in the task list as undone.","lastModifiedDate":"2023-08-29"},{"lineNumber":142,"author":{"gitId":"wanghejin"},"content":" * @param index The index of task to be marked undone.","lastModifiedDate":"2023-08-29"},{"lineNumber":143,"author":{"gitId":"wanghejin"},"content":" * @throws IndexOutOfBoundsException when the index entered is out of range.","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":145,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"wanghejin"},"content":" public void markAsNotDone(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"wanghejin"},"content":" checkIndexOutOfBoundsHelper(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":149,"author":{"gitId":"wanghejin"},"content":" list.get(index).markAsNotDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":150,"author":{"gitId":"wanghejin"},"content":" taskListToStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":152,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"Okie dokie! I\u0027ve unmarked it for you:\\n\" + list.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":153,"author":{"gitId":"wanghejin"},"content":" ui.printWithFormat(resp);","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":155,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":156,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":157,"author":{"gitId":"wanghejin"},"content":" * Deletes the task at index in the task list and updates the database.","lastModifiedDate":"2023-08-29"},{"lineNumber":158,"author":{"gitId":"wanghejin"},"content":" * @param index The index of task to be deleted.","lastModifiedDate":"2023-08-29"},{"lineNumber":159,"author":{"gitId":"wanghejin"},"content":" * @throws IndexOutOfBoundsException when the index entered is out of range.","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":161,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"wanghejin"},"content":" public void delete(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"wanghejin"},"content":" checkIndexOutOfBoundsHelper(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":165,"author":{"gitId":"wanghejin"},"content":" Task t \u003d list.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":166,"author":{"gitId":"wanghejin"},"content":" list.remove(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":167,"author":{"gitId":"wanghejin"},"content":" total--;","lastModifiedDate":"2023-08-26"},{"lineNumber":168,"author":{"gitId":"wanghejin"},"content":" taskListToStorage();","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":170,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"wanghejin"},"content":" t +","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"wanghejin"},"content":" String.format(\"\\nNow you have %d tasks in your list!\", total);","lastModifiedDate":"2023-08-26"},{"lineNumber":173,"author":{"gitId":"wanghejin"},"content":" ui.printWithFormat(resp);","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":175,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"wanghejin"},"content":" * Finds and Print the tasks with corresponding keyword in their description.","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"wanghejin"},"content":" * @param search The array of strings that represents the keyword we need to search for.","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"wanghejin"},"content":" public void find(String search) {","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"wanghejin"},"content":" ArrayList\u003cTask\u003e tempList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"wanghejin"},"content":" int a \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"wanghejin"},"content":" for (int i \u003d 0; i \u003c total; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"wanghejin"},"content":" if (list.get(i).getDescription().contains(search)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"wanghejin"},"content":" resp +\u003d String.format(\"%d.%s\\n\", a, list.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"wanghejin"},"content":" a++;","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"wanghejin"},"content":" if (resp \u003d\u003d \"\") {","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"wanghejin"},"content":" resp \u003d \"There is no corresponding task in your list!\";","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"wanghejin"},"content":" ui.printWithFormat(resp);","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":200,"author":{"gitId":"wanghejin"},"content":" * Converts the tasks in list to Storage compatible string format.","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"wanghejin"},"content":" public void taskListToStorage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"wanghejin"},"content":" for (int i \u003d 0; i \u003c total; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"wanghejin"},"content":" resp +\u003d list.get(i).toStorage() + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"wanghejin"},"content":" storage.updateWholeDatabase(resp);","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"wanghejin":210}},{"path":"src/main/java/cheems/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" * Represents the user interface for the application.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":" * Handles display and interaction with the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":"public class UI implements Printable {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" * Prints welcome message with logo and greetings.","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" public void showWelcomeMsg() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" String logo \u003d \"\\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" \" __ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" \" [ | \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" \" .---. | |--. .---. .---. _ .--..--. .--. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" \"/ /\u0027`\\\\] | .-. | / /__\\\\\\\\ / /__\\\\\\\\ [ `.-. .-. | ( (`\\\\] \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" \"| \\\\__. | | | | | \\\\__., | \\\\__., | | | | | | `\u0027.\u0027. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" \"\u0027.___.\u0027 [___]|__] \u0027.__.\u0027 \u0027.__.\u0027 [___||__||__] [\\\\__) ) \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" \" \\n\";","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" System.out.println(\"Hello from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" String hello \u003d \"Heyo I\u0027m Cheems! Nice to meet you:)\" + \"\\n\" + \"Want to get some fries on the pier together?\";","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" printWithFormat(hello);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" * Prints exit message.","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" public void showExitMsg() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" String bye \u003d \"Okay bye:( Let\u0027s get the fries next time.\";","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" printWithFormat(bye);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" * Prompts and obtains user input.","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" * @param scanner The scanner to scan user input.","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":" * @return The user input in a string.","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":" public String getInput(Scanner scanner) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":" System.out.println(\"\u003e You: \");","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"wanghejin"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"wanghejin"},"content":" * Formats the given feedback to user to comply with chatbot convention.","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"wanghejin"},"content":" * @param msg Feedback to user.","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"wanghejin"},"content":" public void printWithFormat(String msg) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"wanghejin"},"content":" System.out.println(\"\u003e Cheems: \");","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"wanghejin"},"content":" System.out.println(msg);","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"wanghejin":57}},{"path":"src/main/java/cheems/exceptions/EmptyArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" * Custom exception class to represent an input with empty arguments.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" * This exception is thrown when an input with empty arguments is entered by the user.","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"public class EmptyArgumentException extends RuntimeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" public EmptyArgumentException(String keyword) {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" super(String.format(\"Please specify the correct number of arguments for keyword %s ~~\", keyword));","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":11}},{"path":"src/main/java/cheems/exceptions/InputOutputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"public class InputOutputException extends RuntimeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" public InputOutputException(String msg) {","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" super(msg);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wanghejin":7}},{"path":"src/main/java/cheems/exceptions/InvalidKeywordException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" * Custom exception class to represent an invalid keyword input.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" * This exception is thrown when an input keyword is not recognised by the chatbot.","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"public class InvalidKeywordException extends RuntimeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" public InvalidKeywordException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" super(\"Sorry I do not understand you, can you provide another keyword or I get you some fries?\");","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":11}},{"path":"src/main/java/cheems/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" * A child class of the abstract Task class.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" * Represents a task that has a deadline.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" private LocalDate by;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" private final DateTimeFormatter DATE_PATTERN \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" public Deadline(String description, String by) throws DateTimeParseException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" * Formats the deadline task in a user-friendly readable string.","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" * @return A string representation of the deadline task.","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" public String toStorage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" return String.format(\"%d|DEADLINE|%s|%s\", this.isDone ? 1 : 0,","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" this.getDescription(), this.by.format(DATE_PATTERN));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":36}},{"path":"src/main/java/cheems/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" * A child class of the abstract Task class.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" * Represents a task that has a start time and an end time.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" private LocalDate from;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" private LocalDate to;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" private final DateTimeFormatter DATE_PATTERN \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" this.from \u003d LocalDate.parse(from);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" this.to \u003d LocalDate.parse(to);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" * Formats the event task in a user-friendly readable string.","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" * @return A string representation of the event task.","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":" return \"[E]\" + super.toString() +","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" \" (from: \" + this.from +","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" public String toStorage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" return String.format(\"%d|EVENT|%s|%s|%s\", this.isDone ? 1 : 0, this.getDescription(),","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" this.from.format(DATE_PATTERN), this.to.format(DATE_PATTERN));","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":39}},{"path":"src/main/java/cheems/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" * An abstract class that represents each task.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" * Each task has a string description and a status.","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":" private String description;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" public abstract String toStorage();","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" /** Marks this task as done.*/","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" /** Marks this task as undone.*/","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" * Formats the task in a user-friendly readable string.","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" * @return A string representation of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"wanghejin":44}},{"path":"src/main/java/cheems/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":" * A child class of the abstract Task class.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":" * Represents a task that is a to-do.","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" * Formats the todo task in a user-friendly readable string.","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" * @return A string representation of the todo task.","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" public String toStorage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" return String.format(\"%d|TODO|%s\", this.isDone ? 1 : 0, this.getDescription());","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":26}},{"path":"src/test/java/cheems/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import cheems.exceptions.EmptyArgumentException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":"class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":" Printable uiMock \u003d mock(UI.class);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":" ListManageable tasklistMock \u003d mock(Tasklist.class);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":" private Parser parser \u003d new Parser(tasklistMock, uiMock);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":" void parseAndExecute_emptyInput_success() throws Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":" parser.parseAndExecute(\"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"Please give me instructions, if not, I\u0027ll serve you some fries.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" verify(uiMock).printWithFormat(resp);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" void parseAndExecute_validFind_tasklistMethodCalled() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" String input \u003d \"find book\";","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" parser.parseAndExecute(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" verify(tasklistMock).find(\"book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" void parseAndExecute_validMark_tasklistMethodCalled() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" String input \u003d \"mark 1\";","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":" parser.parseAndExecute(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" verify(tasklistMock).markAsDone(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":" void parseAndExecute_validUnmark_tasklistMethodCalled() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" String input \u003d \"unmark 1\";","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":" parser.parseAndExecute(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"wanghejin"},"content":" verify(tasklistMock).markAsNotDone(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"wanghejin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"wanghejin"},"content":" void parseAndExecute_validDelete_tasklistMethodCalled() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"wanghejin"},"content":" String input \u003d \"delete 1\";","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"wanghejin"},"content":" parser.parseAndExecute(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"wanghejin"},"content":" verify(tasklistMock).delete(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"wanghejin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"wanghejin"},"content":" void parseAndExecute_validTodo_tasklistMethodCalled() {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"wanghejin"},"content":" String input \u003d \"todo ballet lesson\";","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"wanghejin"},"content":" parser.parseAndExecute(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"wanghejin"},"content":" verify(tasklistMock).addTaskToDatabase(\"TODO\", \"ballet lesson\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"wanghejin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"wanghejin"},"content":" void parseAndExecute_validEvent_tasklistMethodCalled() {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"wanghejin"},"content":" String input \u003d \"event global conference /from 2023-04-29 /to 2023-05-12\";","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"wanghejin"},"content":" parser.parseAndExecute(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"wanghejin"},"content":" verify(tasklistMock).addTaskToDatabase(\"EVENT\", \"global conference\", \"2023-04-29\", \"2023-05-12\");","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"wanghejin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"wanghejin"},"content":" void parseAndExecute_validDeadline_tasklistMethodCalled() {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"wanghejin"},"content":" String input \u003d \"deadline CS2100 quiz /by 2023-09-01\";","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"wanghejin"},"content":" parser.parseAndExecute(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"wanghejin"},"content":" verify(tasklistMock).addTaskToDatabase(\"DEADLINE\",\"CS2100 quiz\",\"2023-09-01\");","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"wanghejin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"wanghejin"},"content":" void parseAndExecute_noArguments_exceptionThrown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"wanghejin"},"content":" assertThrows(EmptyArgumentException.class, () -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"wanghejin"},"content":" parser.parseAndExecute(\"find\");","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"wanghejin"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"wanghejin"},"content":" assertThrows(NumberFormatException.class, () -\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"wanghejin"},"content":" parser.parseAndExecute(\"mark something\");","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"wanghejin"},"content":" });","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wanghejin":95}},{"path":"src/test/java/cheems/TasklistTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"package cheems;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"import cheems.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"import cheems.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"import cheems.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"import cheems.tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"import org.mockito.internal.matchers.apachecommons.ReflectionEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":"import static org.assertj.core.api.Assertions.assertThat;;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wanghejin"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wanghejin"},"content":"class TasklistTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wanghejin"},"content":" Printable uiMock \u003d mock(UI.class);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wanghejin"},"content":" Storable storageMock \u003d mock(Storage.class);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wanghejin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wanghejin"},"content":" void addTodoTaskToDatabaseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wanghejin"},"content":" Tasklist tasklist \u003d new Tasklist(storageMock, uiMock);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wanghejin"},"content":" String[] params \u003d {\"TODO\",\"Sing a song\"};","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"wanghejin"},"content":" tasklist.addTaskToDatabase(params);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"wanghejin"},"content":" Todo todo \u003d new Todo(\"Sing a song\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"I have added this task for you!\\n\" + todo.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"wanghejin"},"content":" resp +\u003d String.format(\"\\nNow you have %d task(s) in your list!\", tasklist.getTotal());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"wanghejin"},"content":" assertEquals(1, tasklist.getTotal());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"wanghejin"},"content":" assertTrue(new ReflectionEquals(todo).matches(tasklist.getTaskAt(0)));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"wanghejin"},"content":" verify(storageMock).saveNewTask(todo.toStorage());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"wanghejin"},"content":" verify(uiMock).printWithFormat(resp);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"wanghejin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"wanghejin"},"content":" void addDeadlineTaskToDatabaseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"wanghejin"},"content":" Tasklist tasklist \u003d new Tasklist(storageMock, uiMock);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"wanghejin"},"content":" String[] params \u003d {\"DEADLINE\", \"do hw\", \"2019-12-14\"};","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"wanghejin"},"content":" tasklist.addTaskToDatabase(params);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"wanghejin"},"content":" Deadline ddl \u003d new Deadline(\"do hw\", \"2019-12-14\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"I have added this task for you!\\n\" + ddl.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"wanghejin"},"content":" resp +\u003d String.format(\"\\nNow you have %d task(s) in your list!\", tasklist.getTotal());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"wanghejin"},"content":" assertEquals(1, tasklist.getTotal());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"wanghejin"},"content":" verify(storageMock).saveNewTask(ddl.toStorage());","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"wanghejin"},"content":" verify(uiMock).printWithFormat(resp);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"wanghejin"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"wanghejin"},"content":" void addEventTaskToDatabaseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"wanghejin"},"content":" Tasklist tasklist \u003d new Tasklist(storageMock, uiMock);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"wanghejin"},"content":" String[] params \u003d {\"EVENT\", \"conference\", \"2022-12-22\", \"2022-12-24\"};","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"wanghejin"},"content":" tasklist.addTaskToDatabase(params);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"wanghejin"},"content":" Event event \u003d new Event(\"conference\", \"2022-12-22\", \"2022-12-24\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"wanghejin"},"content":" String resp \u003d \"I have added this task for you!\\n\" + event.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"wanghejin"},"content":" resp +\u003d String.format(\"\\nNow you have %d task(s) in your list!\", tasklist.getTotal());","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"wanghejin"},"content":" assertEquals(1, tasklist.getTotal());","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"wanghejin"},"content":" verify(storageMock).saveNewTask(event.toStorage());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"wanghejin"},"content":" verify(uiMock).printWithFormat(resp);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"wanghejin"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"wanghejin"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wanghejin":65}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wanghejin"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wanghejin"},"content":"hello","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wanghejin"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wanghejin"},"content":"mark something","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wanghejin"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"wanghejin"},"content":"todo borrow book","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"wanghejin"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wanghejin"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wanghejin"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wanghejin"},"content":"mark 3","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wanghejin"},"content":"unmark 3","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wanghejin"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wanghejin"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wanghejin":13}},{"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":"wanghejin"},"content":"java -classpath ../bin Cheems \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-22"},{"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":{"wanghejin":1,"-":37}}] diff --git a/wanghejin_ip_master/commits.json b/wanghejin_ip_master/commits.json index e00d80fe..cf87a692 100644 --- a/wanghejin_ip_master/commits.json +++ b/wanghejin_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"wanghejin":[{"date":"2023-08-21","commitResults":[{"hash":"de46dfaca761a7a30800a3531b6c01db40c7eeae","isMergeCommit":false,"messageTitle":"Customised own chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}},{"hash":"c8cef5af1340a953f19f07d62b0fdafe1644f17e","isMergeCommit":false,"messageTitle":"Achieved Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":4}}},{"hash":"2169c0ed1a9b21ee52129fbdd755456b6f7a0974","isMergeCommit":false,"messageTitle":"Achieved Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":12}}},{"hash":"ab29db98da2992a23f732cc592fd3448e0143f84","isMergeCommit":false,"messageTitle":"Achieved Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":5}}},{"hash":"6a5a736b371e6136d51091f6de6e0d0045ffdf27","isMergeCommit":false,"messageTitle":"Changed database type to ArrayList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":7}}}]},{"date":"2023-08-22","commitResults":[{"hash":"c7e4dbd01c78d123d19911b8a6ef7a8eb2ca7342","isMergeCommit":false,"messageTitle":"Achieved Level-4, basic project layout","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":200,"deletions":50}}},{"hash":"90854d20872761868a78911713f154c27f862bbf","isMergeCommit":false,"messageTitle":"Cleaner error handling in parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":67}}},{"hash":"c952d33faaf9ed3e778cfc08a412897fe55773ab","isMergeCommit":false,"messageTitle":"Handle null string in parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":43}}},{"hash":"251fd6b76be2748427d543c35b76ab29942db25b","isMergeCommit":false,"messageTitle":"Passed UI test","messageBody":"","tags":["Level-5","Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"bat":{"insertions":0,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"a9d1cf3f12cfdcbbee34301144d68c0541170c5c","isMergeCommit":false,"messageTitle":"feat: added delete action to database","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":2}}}]},{"date":"2023-08-24","commitResults":[{"hash":"88a45e40a35c94581afc277df5dcc6840b05e3d5","isMergeCommit":false,"messageTitle":"feat: Added format function to UI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":31}}},{"hash":"c51db35c1154910f9266e944984c2a874a230687","isMergeCommit":false,"messageTitle":"test: added error cases for text-ui-test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1}}},{"hash":"a41d510bf255434d3a6c27865ffbc7df272ae68a","isMergeCommit":false,"messageTitle":"fix: Correct subject-verb agreement in chat response","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":6},"java":{"insertions":4,"deletions":3}}},{"hash":"0635e5d9d42ec3b11c558ff4df1f88845bf2a3ac","isMergeCommit":false,"messageTitle":"fix: change access modifier of ui and scanner in Cheems","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":8}}}]},{"date":"2023-08-26","commitResults":[{"hash":"750ce482e7c5e18274376d60a6afd5d3d3ab07c7","isMergeCommit":false,"messageTitle":"fix: changed Database \u0026 UI to contain static methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":53}}}]},{"date":"2023-08-27","commitResults":[{"hash":"9df29b5a41fc3a446f1461ea824fb8c67186e732","isMergeCommit":false,"messageTitle":"feat: update file storage upon deletion of task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":177,"deletions":29}}},{"hash":"3cf6d2674d6261d561c5b2823aa2d89eefd30762","isMergeCommit":false,"messageTitle":"feat: update file storage upon deletion of task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":2}}},{"hash":"201cb4ecaebca1c33d66e425d9e2556c5ed0fefe","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"4fe0f26afd10c7dad1ae42c8f65c34735f48333a","isMergeCommit":false,"messageTitle":"feat: recognise date in format yyyy-mm-dd in ddl, event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":3}}},{"hash":"ad399e8ec80baa5f267cc32178bf2e0a0d413fd9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"289f0902eb6101d951f0e9b692fdce6cd9f1dcd2","isMergeCommit":false,"messageTitle":"fix: Delete unused deleteTask method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":26}}},{"hash":"8100b0cb6644018a28ea9bee4f375b58d048fcc0","isMergeCommit":false,"messageTitle":"doc: Add JavaDoc for non-public classes and methods","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":166,"deletions":13}}}]},{"date":"2023-08-30","commitResults":[{"hash":"0cdba31eb53e7d218a4f6913ced849f113b20c84","isMergeCommit":false,"messageTitle":"feat: Add find with keyword feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":1}}},{"hash":"f13f5ae48b55855632dd4daca5ee4a74b107bf19","isMergeCommit":false,"messageTitle":"refactor: Move all files to package \"cheems\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":53},"md":{"insertions":1,"deletions":1}}},{"hash":"09b7e0e76fad09928e2f21b6d8ef93e60afb4536","isMergeCommit":false,"messageTitle":"style: Make naming and layout comply to coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":5}}},{"hash":"0e27bc21651f46f3e39571ca6b2ffbd6313b4e7c","isMergeCommit":false,"messageTitle":"Add throws keyword for explicit exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":21}}},{"hash":"de18d78207603a6e683164ca5af645d69d16f218","isMergeCommit":false,"messageTitle":"Fix import statements to comply with coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}},{"hash":"81e6e3947c74494e62d9c3af5f4ad070b9f9584c","isMergeCommit":true,"messageTitle":"merge: Resolve conflicts between JavaDoc and Coding Standard, merge to master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a327126b3abb95589bb5b880a236010de7003c37","isMergeCommit":true,"messageTitle":"merge: Resolve conflicts between master and branch-Level-9","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"218da8d5657c0fd944dfeb3d0580b35b3158498b","isMergeCommit":false,"messageTitle":"style: Add spacings and line breaks to comply with coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":10}}},{"hash":"415a5489a38bfc40320a291de792c0e198042822","isMergeCommit":false,"messageTitle":"Delete folder created by accident","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"ab56a7000ec14e79443a66773f003b438be4f6aa","isMergeCommit":false,"messageTitle":"chore: Modify Parser to be clearer in logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"1e3d8b989bcf8f0ba5f90af468688619c79e6035","isMergeCommit":false,"messageTitle":"refactor: Extract create task logic in Tasklist to a new function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":29}}},{"hash":"f924d8837a08c1f59154939800921758c9bb94c2","isMergeCommit":false,"messageTitle":"refactor: Abstract biz logic in Storage and Tasklist","messageBody":"Delete and mark actions in Storage induce similar actions to overwrite\nthe database. Combined this logic into one function for updating the\nwhole database.\n\nMultiple functions in Tasklist requires checking for index out of range.\nThis is abstracted out as a helper function.\n","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":5},"java":{"insertions":70,"deletions":97}}},{"hash":"d359e8ac0904cee44a4643df1999db500f821bf7","isMergeCommit":false,"messageTitle":"style: Modify header comments to include exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"wanghejin":{"java":710,"md":1,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":22}},"authorContributionVariance":{"wanghejin":34108.37},"authorDisplayNameMap":{"wanghejin":"CS2103T-W11-3 WANG..EJIN"}} +{"authorDailyContributionsMap":{"wanghejin":[{"date":"2023-08-21","commitResults":[{"hash":"de46dfaca761a7a30800a3531b6c01db40c7eeae","isMergeCommit":false,"messageTitle":"Customised own chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}},{"hash":"c8cef5af1340a953f19f07d62b0fdafe1644f17e","isMergeCommit":false,"messageTitle":"Achieved Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":4}}},{"hash":"2169c0ed1a9b21ee52129fbdd755456b6f7a0974","isMergeCommit":false,"messageTitle":"Achieved Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":12}}},{"hash":"ab29db98da2992a23f732cc592fd3448e0143f84","isMergeCommit":false,"messageTitle":"Achieved Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":5}}},{"hash":"6a5a736b371e6136d51091f6de6e0d0045ffdf27","isMergeCommit":false,"messageTitle":"Changed database type to ArrayList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":7}}}]},{"date":"2023-08-22","commitResults":[{"hash":"c7e4dbd01c78d123d19911b8a6ef7a8eb2ca7342","isMergeCommit":false,"messageTitle":"Achieved Level-4, basic project layout","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":200,"deletions":50}}},{"hash":"90854d20872761868a78911713f154c27f862bbf","isMergeCommit":false,"messageTitle":"Cleaner error handling in parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":67}}},{"hash":"c952d33faaf9ed3e778cfc08a412897fe55773ab","isMergeCommit":false,"messageTitle":"Handle null string in parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":43}}},{"hash":"251fd6b76be2748427d543c35b76ab29942db25b","isMergeCommit":false,"messageTitle":"Passed UI test","messageBody":"","tags":["Level-5","Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"bat":{"insertions":0,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"a9d1cf3f12cfdcbbee34301144d68c0541170c5c","isMergeCommit":false,"messageTitle":"feat: added delete action to database","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":2}}}]},{"date":"2023-08-24","commitResults":[{"hash":"88a45e40a35c94581afc277df5dcc6840b05e3d5","isMergeCommit":false,"messageTitle":"feat: Added format function to UI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":31}}},{"hash":"c51db35c1154910f9266e944984c2a874a230687","isMergeCommit":false,"messageTitle":"test: added error cases for text-ui-test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1}}},{"hash":"a41d510bf255434d3a6c27865ffbc7df272ae68a","isMergeCommit":false,"messageTitle":"fix: Correct subject-verb agreement in chat response","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":6},"java":{"insertions":4,"deletions":3}}},{"hash":"0635e5d9d42ec3b11c558ff4df1f88845bf2a3ac","isMergeCommit":false,"messageTitle":"fix: change access modifier of ui and scanner in Cheems","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":8}}}]},{"date":"2023-08-26","commitResults":[{"hash":"750ce482e7c5e18274376d60a6afd5d3d3ab07c7","isMergeCommit":false,"messageTitle":"fix: changed Database \u0026 UI to contain static methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":53}}}]},{"date":"2023-08-27","commitResults":[{"hash":"9df29b5a41fc3a446f1461ea824fb8c67186e732","isMergeCommit":false,"messageTitle":"feat: update file storage upon deletion of task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":177,"deletions":29}}},{"hash":"3cf6d2674d6261d561c5b2823aa2d89eefd30762","isMergeCommit":false,"messageTitle":"feat: update file storage upon deletion of task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":2}}},{"hash":"201cb4ecaebca1c33d66e425d9e2556c5ed0fefe","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"4fe0f26afd10c7dad1ae42c8f65c34735f48333a","isMergeCommit":false,"messageTitle":"feat: recognise date in format yyyy-mm-dd in ddl, event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":3}}},{"hash":"ad399e8ec80baa5f267cc32178bf2e0a0d413fd9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"289f0902eb6101d951f0e9b692fdce6cd9f1dcd2","isMergeCommit":false,"messageTitle":"fix: Delete unused deleteTask method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":26}}},{"hash":"8098d26bf75407e601e3c13c0d215c0d50c098f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dab88935fc4f63a9595b0e8ab399c74d03694668","isMergeCommit":false,"messageTitle":"Update build.gradle to run Cheems","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"8100b0cb6644018a28ea9bee4f375b58d048fcc0","isMergeCommit":false,"messageTitle":"doc: Add JavaDoc for non-public classes and methods","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":166,"deletions":13}}}]},{"date":"2023-08-30","commitResults":[{"hash":"0cdba31eb53e7d218a4f6913ced849f113b20c84","isMergeCommit":false,"messageTitle":"feat: Add find with keyword feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":1}}},{"hash":"f13f5ae48b55855632dd4daca5ee4a74b107bf19","isMergeCommit":false,"messageTitle":"refactor: Move all files to package \"cheems\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":53},"md":{"insertions":1,"deletions":1}}},{"hash":"09b7e0e76fad09928e2f21b6d8ef93e60afb4536","isMergeCommit":false,"messageTitle":"style: Make naming and layout comply to coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":5}}},{"hash":"0e27bc21651f46f3e39571ca6b2ffbd6313b4e7c","isMergeCommit":false,"messageTitle":"Add throws keyword for explicit exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":21}}},{"hash":"de18d78207603a6e683164ca5af645d69d16f218","isMergeCommit":false,"messageTitle":"Fix import statements to comply with coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}},{"hash":"81e6e3947c74494e62d9c3af5f4ad070b9f9584c","isMergeCommit":true,"messageTitle":"merge: Resolve conflicts between JavaDoc and Coding Standard, merge to master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a327126b3abb95589bb5b880a236010de7003c37","isMergeCommit":true,"messageTitle":"merge: Resolve conflicts between master and branch-Level-9","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"218da8d5657c0fd944dfeb3d0580b35b3158498b","isMergeCommit":false,"messageTitle":"style: Add spacings and line breaks to comply with coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":10}}},{"hash":"415a5489a38bfc40320a291de792c0e198042822","isMergeCommit":false,"messageTitle":"Delete folder created by accident","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"ab56a7000ec14e79443a66773f003b438be4f6aa","isMergeCommit":false,"messageTitle":"chore: Modify Parser to be clearer in logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"1e3d8b989bcf8f0ba5f90af468688619c79e6035","isMergeCommit":false,"messageTitle":"refactor: Extract create task logic in Tasklist to a new function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":29}}},{"hash":"f924d8837a08c1f59154939800921758c9bb94c2","isMergeCommit":false,"messageTitle":"refactor: Abstract biz logic in Storage and Tasklist","messageBody":"Delete and mark actions in Storage induce similar actions to overwrite\nthe database. Combined this logic into one function for updating the\nwhole database.\n\nMultiple functions in Tasklist requires checking for index out of range.\nThis is abstracted out as a helper function.\n","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":5},"java":{"insertions":70,"deletions":97}}},{"hash":"d359e8ac0904cee44a4643df1999db500f821bf7","isMergeCommit":false,"messageTitle":"style: Modify header comments to include exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"e0e2ee142fc9f2055bbf033d74ce56695422263e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"93e5a06b1c181e8d57ef7bd7370d4f5cc17f5f05","isMergeCommit":false,"messageTitle":"refactor: Convert Parser and Tasklist to use instance methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":23}}},{"hash":"32374524e763b4320bcccb4d2f6fa641f390ef5d","isMergeCommit":false,"messageTitle":"refactor: Fix major design problem","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":72}}},{"hash":"140ba60ddfbb8a40a63177e40fba25f55fe5e271","isMergeCommit":false,"messageTitle":"chore: Format date in Deadline and Event","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":9},"java":{"insertions":14,"deletions":24}}},{"hash":"39b3c0bb290535b75febe278939176c98c7bb0bf","isMergeCommit":false,"messageTitle":"test: unit test add method and parser method","messageBody":"","tags":["A-Jar","A-JUnit","A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":1},"java":{"insertions":212,"deletions":22}}}]}]},"authorFileTypeContributionMap":{"wanghejin":{"java":901,"md":1,"fxml":0,"sh":1,"bat":0,"gradle":6,"txt":14}},"authorContributionVariance":{"wanghejin":38581.047},"authorDisplayNameMap":{"wanghejin":"CS2103T-W11-3 WANG..EJIN"}} diff --git a/waseemingly_ip_master/authorship.json b/waseemingly_ip_master/authorship.json index 3799d6be..cd81f073 100644 --- a/waseemingly_ip_master/authorship.json +++ b/waseemingly_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"waseemingly":2,"-":22}},{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"T | 0 | 1","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"D | 0 | 2 | 2001-11-02T11:11","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"T | 0 | 3","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"E | 0 | 4 | 2011-11-11T11:11 | 2001-11-11T11:12","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"T | 0 | 5","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":5}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(formatter) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" return \"D\" + super.toFileString() + \" | \" + by;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"waseemingly":26}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.command.ByeCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"public class Duke {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" public Duke(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" while (true) {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" Command command \u003d Parser.parse(userInput); // This interprets the user input and returns the respective command","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" command.execute(tasks, ui, storage); // Execute the command","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" if (command instanceof ByeCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":" public static void main(String[] args) throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"waseemingly":47}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":" super(message);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"waseemingly":7}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(formatter) + \" to: \" + to.format(formatter) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" return \"E\" + super.toFileString() + \" | \" + from + \" | \" + to;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"waseemingly":27}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.command.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":" // Interpret the user command and return a duke.commands.Command object or equivalent representation","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" public static Command parse(String userInput) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" if (\"bye\".equalsIgnoreCase(userInput)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" return new ByeCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" } else if (\"list\".equalsIgnoreCase(userInput)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" int taskNumber \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" return new MarkCommand(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" int taskNumber \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" return new UnmarkCommand(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" String description \u003d userInput.substring(4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" return new TodoCommand(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" String content \u003d userInput.substring(8).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" int index \u003d content.indexOf(\"/by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Please use \u0027/by\u0027 to specify the deadline time.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" String description \u003d content.substring(0, index).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" String by \u003d content.substring(index + 4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" return new DeadlineCommand(description, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" String content \u003d userInput.substring(5).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":" String[] parts \u003d content.split(\"/from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Please use the format: event [description] /from [start time] /to [end time]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":" String from \u003d parts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":" String to \u003d parts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":" return new EventCommand(description, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":" int taskNumber \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"waseemingly"},"content":" return new DeleteCommand(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"waseemingly"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"waseemingly"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":64}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" private String directoryPath;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" private String fileName;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" this.directoryPath \u003d file.getParent();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" this.fileName \u003d file.getName();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" public void saveTasks(TaskList tasks) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" // Ensure the directory exists","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" directory.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" // Create file instance","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" try (FileWriter writer \u003d new FileWriter(file)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" writer.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" public ArrayList loadTasks() throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":" ArrayList tasks \u003d new ArrayList();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":" return tasks; // return empty list if file doesn\u0027t exist","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":" try (Scanner scanner \u003d new Scanner(file)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"waseemingly"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"waseemingly"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"waseemingly"},"content":" switch (parts[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"waseemingly"},"content":" case \"T\":","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"waseemingly"},"content":" Todo todo \u003d new Todo(parts[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"waseemingly"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"waseemingly"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"waseemingly"},"content":" tasks.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"waseemingly"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"waseemingly"},"content":" case \"D\":","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter defaultFormatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter isoFormatter \u003d DateTimeFormatter.ISO_LOCAL_DATE_TIME;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"waseemingly"},"content":" dateTime \u003d LocalDateTime.parse(parts[3], defaultFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"waseemingly"},"content":" dateTime \u003d LocalDateTime.parse(parts[3], isoFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"Error parsing date-time from saved data: \" + parts[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"waseemingly"},"content":" continue; // Skip to the next loop iteration if date parsing fails","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"waseemingly"},"content":" Deadline deadline \u003d new Deadline(parts[2], dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"waseemingly"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"waseemingly"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"waseemingly"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"waseemingly"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"waseemingly"},"content":" case \"E\":","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTimeFrom;","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTimeTo;","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter defaultFormat \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter isoFormat \u003d DateTimeFormatter.ISO_LOCAL_DATE_TIME;","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"waseemingly"},"content":" dateTimeFrom \u003d LocalDateTime.parse(parts[3], defaultFormat);","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"waseemingly"},"content":" dateTimeFrom \u003d LocalDateTime.parse(parts[3], isoFormat);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"Error parsing start date-time from saved data: \" + parts[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"waseemingly"},"content":" continue; // Skip to the next loop iteration if date parsing fails","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"waseemingly"},"content":" dateTimeTo \u003d LocalDateTime.parse(parts[4], defaultFormat);","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"waseemingly"},"content":" dateTimeTo \u003d LocalDateTime.parse(parts[4], isoFormat);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"Error parsing end date-time from saved data: \" + parts[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"waseemingly"},"content":" continue; // Skip to the next loop iteration if date parsing fails","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"waseemingly"},"content":" Event event \u003d new Event(parts[2], dateTimeFrom, dateTimeTo);","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"waseemingly"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"waseemingly"},"content":" event.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"waseemingly"},"content":" tasks.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"waseemingly"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"waseemingly"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":127}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" public String getNumberIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" return (isDone ? \"1\" : \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" return \" | \" + getNumberIcon() + \" | \" + description;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"waseemingly":38}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" // Constructor to load existing tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" public Task get(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" return tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" public void delete(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" return tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" public void markAsDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" tasks.get(index).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" public void unmarkAsDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" tasks.get(index).unmarkAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" // Additional methods for any other operations you want on your task list can be added here","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" public static void processTask(String userInput, ArrayList\u003cTask\u003e tasks, boolean mark) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":" int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":" taskNumber \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":" if (mark) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"waseemingly"},"content":" task.unmarkAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"waseemingly"},"content":" System.out.println(\" [\" + task.getStatusIcon() + \"] \" + task.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"waseemingly"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"waseemingly"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"That task doesn\u0027t exist!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"waseemingly"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"waseemingly"},"content":" return tasks.iterator();","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":73}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" return \"T\" + super.toFileString();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":"/*","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":"while (true) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" if (\"bye\".equalsIgnoreCase(userInput)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" if (\"list\".equalsIgnoreCase(userInput)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" ui.showTasksList(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" processTask(userInput, tasks, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" duke.Storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" processTask(userInput, tasks, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" duke.Storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":" String description \u003d userInput.substring(4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":" duke.Todo newTodo \u003d new duke.Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":" tasks.add(newTodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"waseemingly"},"content":" duke.Storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"waseemingly"},"content":" ui.showAddedTask(newTodo, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"waseemingly"},"content":" String content \u003d userInput.substring(8).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"waseemingly"},"content":" int index \u003d content.indexOf(\"/by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"waseemingly"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"Please use \u0027/by\u0027 to specify the deadline time.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"waseemingly"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"waseemingly"},"content":" String description \u003d content.substring(0, index).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"waseemingly"},"content":" String by \u003d content.substring(index + 4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"waseemingly"},"content":" duke.Deadline newDeadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"waseemingly"},"content":" newDeadline \u003d new duke.Deadline(description, dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"waseemingly"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"waseemingly"},"content":" duke.Storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"Invalid date-time format! Please use d/M/yyyy HHmm format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"waseemingly"},"content":" ui.showAddedTask(newDeadline, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"waseemingly"},"content":" String content \u003d userInput.substring(5).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"waseemingly"},"content":" String[] parts \u003d content.split(\"/from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"waseemingly"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"Please use the format: event [description] /from [start time] /to [end time]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"waseemingly"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"waseemingly"},"content":" String from \u003d parts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"waseemingly"},"content":" String to \u003d parts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"waseemingly"},"content":" duke.Event newEvent;","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTimeFrom \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTimeTo \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"waseemingly"},"content":" newEvent \u003d new duke.Event(description, dateTimeFrom, dateTimeTo);","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"waseemingly"},"content":" tasks.add(newEvent);","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"waseemingly"},"content":" duke.Storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"Invalid date-time format! Please use d/M/yyyy HHmm format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"waseemingly"},"content":" ui.showAddedTask(newEvent, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"waseemingly"},"content":" int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"waseemingly"},"content":" taskNumber \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"waseemingly"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"Invalid task number!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"waseemingly"},"content":" duke.Task deletedTask \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"waseemingly"},"content":" tasks.remove(taskNumber - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"waseemingly"},"content":" duke.Storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"waseemingly"},"content":" ui.showDeletedTask(deletedTask, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"waseemingly"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"waseemingly"},"content":" ui.showInvalidTaskNumber();","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"waseemingly"},"content":" } catch (duke.DukeException de) {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"waseemingly"},"content":" System.out.println(de.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"waseemingly"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"waseemingly"},"content":" } catch (duke.DukeException de) {","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"waseemingly"},"content":" ui.printMessage(de.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"waseemingly"},"content":" ui.showGoodbye();","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":159}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" // Read a line of input from the user","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" // Show a welcome message when the program starts","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" printLine(\"Hello! I\u0027m duke.Duke\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" printLine(\"What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" // Show a goodbye message when the program ends","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" public void showGoodbye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" printLine(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" // Show an error message","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" public void showError(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" printLine(\"☹ OOPS!!! \" + message);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" // Show a loading error specifically","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" showError(\"There was an error loading saved tasks.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":" // Generic method to print a message surrounded by lines","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" public void printMessage(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":" printLine(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":" // Helper method to print a line","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":" private void printLine(String line) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"waseemingly"},"content":" public void showTasksList(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"waseemingly"},"content":" printLine(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"waseemingly"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"waseemingly"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"waseemingly"},"content":" printLine((i + 1) + \".\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"waseemingly"},"content":" public void showAddedTask(Task task, int totalTasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"waseemingly"},"content":" printMessage(\"Got it. I\u0027ve added this task:\\n \" + task + \"\\nNow you have \" + totalTasks + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"waseemingly"},"content":" public void showDeletedTask(Task task, int totalTasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"waseemingly"},"content":" printMessage(\"Noted. I\u0027ve removed this task:\\n \" + task + \"\\nNow you have \" + totalTasks + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"waseemingly"},"content":" public void showSavingError(String errorMessage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"waseemingly"},"content":" printLine(\"Error saving tasks: \" + errorMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"waseemingly"},"content":" public void showInvalidTaskNumber() {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"waseemingly"},"content":" printMessage(\"Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"waseemingly"},"content":" public void showTaskMarked(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"waseemingly"},"content":" printLine(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"waseemingly"},"content":" printLine(\" [\" + task.getStatusIcon() + \"] \" + task.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"waseemingly"},"content":" public void showTaskUnmarked(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"waseemingly"},"content":" printLine(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"waseemingly"},"content":" printLine(\" [\" + task.getStatusIcon() + \"] \" + task.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":93}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" ui.showGoodbye();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":12}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":12}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" private String by;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" public DeadlineCommand(String description, String by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" if (description.isEmpty() || by.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"☹ OOPS!!! The description or deadline of a task cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" Deadline newDeadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" newDeadline \u003d new Deadline(description, dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" ui.showAddedTask(newDeadline, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Invalid date-time format! Please use d/M/yyyy HHmm format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":39}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" public DeleteCommand(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Invalid task number!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" Task deletedTask \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" tasks.delete(taskNumber - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" ui.showDeletedTask(deletedTask, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":31}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" private String from;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" private String to;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" public EventCommand(String description, String from, String to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" if (description.isEmpty() || from.isEmpty() || to.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"☹ OOPS!!! The description, start, or end time of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" Event newEvent;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTimeFrom \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTimeTo \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" newEvent \u003d new Event(description, dateTimeFrom, dateTimeTo);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" tasks.add(newEvent);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" ui.showAddedTask(newEvent, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Invalid date-time format! Please use d/M/yyyy HHmm format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":42}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" ui.showTasksList(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":12}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" private int taskNumber; // the number of the task to be marked","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" public MarkCommand(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" Task task \u003d tasks.get(taskNumber - 1); // arrays are 0-based, so subtract 1","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" ui.showTaskMarked(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":25}},{"path":"src/main/java/duke/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" tasks.add(newTodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" ui.showAddedTask(newTodo, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":31}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" private int taskNumber; // the number of the task to be marked","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" public UnmarkCommand(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" Task task \u003d tasks.get(taskNumber - 1); // arrays are 0-based, so subtract 1","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" task.unmarkAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" ui.showTaskUnmarked(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":25}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"todo borrow book","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"waseemingly":1}},{"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":"waseemingly"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"waseemingly":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"waseemingly":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"waseemingly":1,"-":41}},{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"D | 0 | 2 | 2001-11-02T11:11","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"T | 0 | 3","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"E | 0 | 4 | 2011-11-11T11:11 | 2001-11-11T11:12","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"T | 0 | 5","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"T | 0 | 1","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"T | 0 | 12","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":6}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":" * Represents a Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" * Creates a new Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" * @param description The description or name of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" * @param by The date and time by which the task should be completed.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" * Returns a string representation of the task for user display.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" * @return A string representing the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(formatter) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" * Returns a string representation of the task for saving to file.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" * @return A string representing the task in a format suitable for file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":" return \"D\" + super.toFileString() + \" | \" + by;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"waseemingly":45}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.command.ByeCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" * The main Duke class that represents the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" * It initializes the application and interacts with the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"public class Duke {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" * Constructs a Duke object and initializes the UI, Storage, and TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" * @param filePath The path to the file where tasks are saved and loaded.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" * @throws FileNotFoundException If the file is not found.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" public Duke(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" ui.showWelcome();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" * Runs the Duke chatbot. It reads user input and executes the appropriate commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" * The method continues running until a ByeCommand is received.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" while (true) {","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" Command command \u003d Parser.parse(userInput); // This interprets the user input and returns the respective command","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":" command.execute(tasks, ui, storage); // Execute the command","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" if (command instanceof ByeCommand) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"waseemingly"},"content":" * The main method for the Duke chatbot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"waseemingly"},"content":" * @param args Command line arguments.","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"waseemingly"},"content":" * @throws FileNotFoundException If the file is not found.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"waseemingly"},"content":" public static void main(String[] args) throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"waseemingly"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"waseemingly":66}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":" * Represents exceptions specific to the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" * Constructs a new DukeException with the specified detail message.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" * @param message The detail message. The detail message is saved for later retrieval by the {@link #getMessage()} method.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" super(message);","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"waseemingly":15}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":" * Represents an event task in the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":" * Each event has a description, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" * Constructs an Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" * @param from The start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" * @param to The end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" * Returns a string representation of the event suitable for user display.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" * @return A string representation of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(formatter) + \" to: \" + to.format(formatter) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" * Returns a string representation of the event suitable for saving to file.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" * @return A string representation of the event for file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":" return \"E\" + super.toFileString() + \" | \" + from + \" | \" + to;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"waseemingly":48}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.command.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":" * Provides utilities for parsing user inputs into commands for the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" * Parses the given user input string into a Command object.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" * This method recognizes various command keywords and constructs the appropriate command object.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" * @param userInput The raw input string from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" * @return The appropriate Command object based on the user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" * @throws DukeException If the user input is not recognized or improperly formatted.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" public static Command parse(String userInput) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" if (\"bye\".equalsIgnoreCase(userInput)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" return new ByeCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" } else if (\"list\".equalsIgnoreCase(userInput)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" int taskNumber \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" return new MarkCommand(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" int taskNumber \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" return new UnmarkCommand(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" String description \u003d userInput.substring(4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" return new TodoCommand(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" String content \u003d userInput.substring(8).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" int index \u003d content.indexOf(\"/by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Please use \u0027/by\u0027 to specify the deadline time.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":" String description \u003d content.substring(0, index).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":" String by \u003d content.substring(index + 4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":" return new DeadlineCommand(description, by);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":" String content \u003d userInput.substring(5).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":" String[] parts \u003d content.split(\"/from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Please use the format: event [description] /from [start time] /to [end time]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"waseemingly"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"waseemingly"},"content":" String from \u003d parts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"waseemingly"},"content":" String to \u003d parts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"waseemingly"},"content":" return new EventCommand(description, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"waseemingly"},"content":" int taskNumber \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"waseemingly"},"content":" return new DeleteCommand(taskNumber);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"waseemingly"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"waseemingly"},"content":" String keyword \u003d userInput.substring(4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"waseemingly"},"content":" return new FindCommand(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"waseemingly"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":77}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" * Represents a storage system to handle reading and writing tasks to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" private String directoryPath;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" private String fileName;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" * Initializes a new instance of the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" * @param filePath The path to the file used for storing tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" this.directoryPath \u003d file.getParent();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" this.fileName \u003d file.getName();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" * Saves the tasks into the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" * @param tasks The list of tasks to be saved.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" * @throws IOException If there\u0027s an issue writing to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" public void saveTasks(TaskList tasks) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" // Ensure the directory exists","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":" directory.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":" // Create file instance","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":" try (FileWriter writer \u003d new FileWriter(file)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":" writer.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"waseemingly"},"content":" * Loads tasks from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"waseemingly"},"content":" * @return An ArrayList of tasks loaded from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"waseemingly"},"content":" * @throws FileNotFoundException If the file doesn\u0027t exist.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"waseemingly"},"content":" public ArrayList\u003cTask\u003e loadTasks() throws FileNotFoundException {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"waseemingly"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"waseemingly"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"waseemingly"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"waseemingly"},"content":" return tasks; // return empty list if file doesn\u0027t exist","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"waseemingly"},"content":" try (Scanner scanner \u003d new Scanner(file)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"waseemingly"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"waseemingly"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"waseemingly"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"waseemingly"},"content":" switch (parts[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"waseemingly"},"content":" case \"T\":","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"waseemingly"},"content":" Todo todo \u003d new Todo(parts[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"waseemingly"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"waseemingly"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"waseemingly"},"content":" tasks.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"waseemingly"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"waseemingly"},"content":" case \"D\":","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter defaultFormatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter isoFormatter \u003d DateTimeFormatter.ISO_LOCAL_DATE_TIME;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"waseemingly"},"content":" dateTime \u003d LocalDateTime.parse(parts[3], defaultFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"waseemingly"},"content":" dateTime \u003d LocalDateTime.parse(parts[3], isoFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"Error parsing date-time from saved data: \" + parts[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"waseemingly"},"content":" continue; // Skip to the next loop iteration if date parsing fails","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"waseemingly"},"content":" Deadline deadline \u003d new Deadline(parts[2], dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"waseemingly"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"waseemingly"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"waseemingly"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"waseemingly"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"waseemingly"},"content":" case \"E\":","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTimeFrom;","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTimeTo;","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter defaultFormat \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter isoFormat \u003d DateTimeFormatter.ISO_LOCAL_DATE_TIME;","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"waseemingly"},"content":" dateTimeFrom \u003d LocalDateTime.parse(parts[3], defaultFormat);","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"waseemingly"},"content":" dateTimeFrom \u003d LocalDateTime.parse(parts[3], isoFormat);","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"Error parsing start date-time from saved data: \" + parts[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"waseemingly"},"content":" continue; // Skip to the next loop iteration if date parsing fails","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"waseemingly"},"content":" dateTimeTo \u003d LocalDateTime.parse(parts[4], defaultFormat);","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"waseemingly"},"content":" dateTimeTo \u003d LocalDateTime.parse(parts[4], isoFormat);","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"Error parsing end date-time from saved data: \" + parts[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"waseemingly"},"content":" continue; // Skip to the next loop iteration if date parsing fails","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"waseemingly"},"content":" Event event \u003d new Event(parts[2], dateTimeFrom, dateTimeTo);","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"waseemingly"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"waseemingly"},"content":" event.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"waseemingly"},"content":" tasks.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"waseemingly"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"waseemingly"},"content":" return tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":147}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":" * Represents a task with a description and completion status.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" * Initializes a new instance of the Task class with the specified description.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" * Gets the status icon of the task. Returns \u0027X\u0027 if the task is done, and \u0027 \u0027 otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" * @return The status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" * Gets the number icon of the task. Returns \u00271\u0027 if the task is done, and \u00270\u0027 otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" * @return The number icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" public String getNumberIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" return (isDone ? \"1\" : \"0\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" * Unmarks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":" * Returns a string representation of the task with its status icon and description.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":" * @return A string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"waseemingly"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"waseemingly"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"waseemingly"},"content":" * Returns a formatted string representation of the task for file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"waseemingly"},"content":" * @return A formatted string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"waseemingly"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"waseemingly"},"content":" return \" | \" + getNumberIcon() + \" | \" + description;","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"waseemingly":72}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import java.util.Iterator;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":" * Represents a list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" * Initializes an empty task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" * Initializes the task list with the given tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" * @param tasks The initial list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" * Adds a task to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" * Retrieves a task from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" * @param index The index of the task to be retrieved.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" public Task get(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":" return tasks.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":" * Deletes a task from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":" public void delete(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":" tasks.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"waseemingly"},"content":" * Retrieves the number of tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"waseemingly"},"content":" * @return The number of tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"waseemingly"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"waseemingly"},"content":" return tasks.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"waseemingly"},"content":" * Marks a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"waseemingly"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"waseemingly"},"content":" public void markAsDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"waseemingly"},"content":" tasks.get(index).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"waseemingly"},"content":" * Unmarks a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"waseemingly"},"content":" * @param index The index of the task to be unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"waseemingly"},"content":" public void unmarkAsDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"waseemingly"},"content":" tasks.get(index).unmarkAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"waseemingly"},"content":" * Processes a task based on user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"waseemingly"},"content":" * @param userInput The user\u0027s input.","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"waseemingly"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"waseemingly"},"content":" * @param mark Whether to mark the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"waseemingly"},"content":" public static void processTask(String userInput, ArrayList\u003cTask\u003e tasks, boolean mark) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"waseemingly"},"content":" int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"waseemingly"},"content":" taskNumber \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"waseemingly"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"waseemingly"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"waseemingly"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"waseemingly"},"content":" if (mark) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"waseemingly"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"waseemingly"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"waseemingly"},"content":" task.unmarkAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"waseemingly"},"content":" System.out.println(\" [\" + task.getStatusIcon() + \"] \" + task.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"waseemingly"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"waseemingly"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"That task doesn\u0027t exist!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"waseemingly"},"content":" * Returns an iterator over the elements in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"waseemingly"},"content":" * @return An iterator over the tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"waseemingly"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"waseemingly"},"content":" return tasks.iterator();","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"waseemingly"},"content":" public ArrayList\u003cTask\u003e findTasksByKeyword(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"waseemingly"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"waseemingly"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"waseemingly"},"content":" if (task.description.contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"waseemingly"},"content":" matchingTasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"waseemingly"},"content":" return matchingTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":135}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":" * Represents a Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":" * A Todo task is a task without any date/time attached to it.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" * Creates a new Todo task with the given description.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" * @param description The description of the Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" * Returns a string representation of the Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" * @return A string representing the Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" * Returns a string representation of the Todo task for file storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" * @return A string suitable for storing the Todo task in a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" return \"T\" + super.toFileString();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":"/*","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":"while (true) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":" if (\"bye\".equalsIgnoreCase(userInput)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":" if (\"list\".equalsIgnoreCase(userInput)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":" ui.showTasksList(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":" processTask(userInput, tasks, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"waseemingly"},"content":" duke.Storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"waseemingly"},"content":" processTask(userInput, tasks, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"waseemingly"},"content":" duke.Storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"waseemingly"},"content":" String description \u003d userInput.substring(4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"waseemingly"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"waseemingly"},"content":" duke.Todo newTodo \u003d new duke.Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"waseemingly"},"content":" tasks.add(newTodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"waseemingly"},"content":" duke.Storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"waseemingly"},"content":" ui.showAddedTask(newTodo, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"waseemingly"},"content":" String content \u003d userInput.substring(8).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"waseemingly"},"content":" int index \u003d content.indexOf(\"/by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"waseemingly"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"Please use \u0027/by\u0027 to specify the deadline time.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"waseemingly"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"waseemingly"},"content":" String description \u003d content.substring(0, index).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"waseemingly"},"content":" String by \u003d content.substring(index + 4).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"waseemingly"},"content":" duke.Deadline newDeadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"waseemingly"},"content":" newDeadline \u003d new duke.Deadline(description, dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"waseemingly"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"waseemingly"},"content":" duke.Storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"Invalid date-time format! Please use d/M/yyyy HHmm format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"waseemingly"},"content":" ui.showAddedTask(newDeadline, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"waseemingly"},"content":" String content \u003d userInput.substring(5).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"waseemingly"},"content":" String[] parts \u003d content.split(\"/from | /to \");","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"waseemingly"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"Please use the format: event [description] /from [start time] /to [end time]\");","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"waseemingly"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"waseemingly"},"content":" String from \u003d parts[1].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"waseemingly"},"content":" String to \u003d parts[2].trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"waseemingly"},"content":" duke.Event newEvent;","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTimeFrom \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTimeTo \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"waseemingly"},"content":" newEvent \u003d new duke.Event(description, dateTimeFrom, dateTimeTo);","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"waseemingly"},"content":" tasks.add(newEvent);","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"waseemingly"},"content":" duke.Storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"Invalid date-time format! Please use d/M/yyyy HHmm format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"waseemingly"},"content":" ui.showAddedTask(newEvent, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"waseemingly"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"waseemingly"},"content":" int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"waseemingly"},"content":" taskNumber \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"waseemingly"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"Invalid task number!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"waseemingly"},"content":" duke.Task deletedTask \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"waseemingly"},"content":" tasks.remove(taskNumber - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"waseemingly"},"content":" duke.Storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"waseemingly"},"content":" ui.showDeletedTask(deletedTask, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"waseemingly"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"waseemingly"},"content":" ui.showInvalidTaskNumber();","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"waseemingly"},"content":" } catch (duke.DukeException de) {","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"waseemingly"},"content":" System.out.println(de.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"waseemingly"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"waseemingly"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"waseemingly"},"content":" throw new duke.DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"waseemingly"},"content":" } catch (duke.DukeException de) {","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"waseemingly"},"content":" ui.printMessage(de.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"waseemingly"},"content":" ui.showGoodbye();","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":182}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":" * Represents the User Interface (UI) of the duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" * This class handles all interactions with the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" * Initializes a new Ui instance.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" * Reads and returns a line of input from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" * @return User\u0027s input string.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" * Displays the welcome message when the program starts.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" printLine(\"Hello! I\u0027m duke.Duke\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" printLine(\"What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" * Displays the goodbye message when the program ends.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":" public void showGoodbye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":" printLine(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":" * Displays an error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":" * @param message The error message to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":" public void showError(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"waseemingly"},"content":" printLine(\"☹ OOPS!!! \" + message);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"waseemingly"},"content":" * Displays a loading error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"waseemingly"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"waseemingly"},"content":" showError(\"There was an error loading saved tasks.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"waseemingly"},"content":" * Displays a message surrounded by lines.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"waseemingly"},"content":" * @param message The message to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"waseemingly"},"content":" public void printMessage(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"waseemingly"},"content":" printLine(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"waseemingly"},"content":" * Displays a line of text.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"waseemingly"},"content":" * @param line The text to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"waseemingly"},"content":" private void printLine(String line) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"waseemingly"},"content":" System.out.println(line);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"waseemingly"},"content":" * Displays the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"waseemingly"},"content":" * @param tasks The list of tasks to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"waseemingly"},"content":" public void showTasksList(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"waseemingly"},"content":" printLine(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"waseemingly"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"waseemingly"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"waseemingly"},"content":" printLine((i + 1) + \".\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"waseemingly"},"content":" * Displays a message indicating a task has been added.","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"waseemingly"},"content":" * @param task The task that was added.","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"waseemingly"},"content":" * @param totalTasks The total number of tasks after adding.","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"waseemingly"},"content":" public void showAddedTask(Task task, int totalTasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"waseemingly"},"content":" printMessage(\"Got it. I\u0027ve added this task:\\n \" + task + \"\\nNow you have \" + totalTasks + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"waseemingly"},"content":" * Displays a message indicating a task has been deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"waseemingly"},"content":" * @param task The task that was deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"waseemingly"},"content":" * @param totalTasks The total number of tasks after deletion.","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"waseemingly"},"content":" public void showDeletedTask(Task task, int totalTasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"waseemingly"},"content":" printMessage(\"Noted. I\u0027ve removed this task:\\n \" + task + \"\\nNow you have \" + totalTasks + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"waseemingly"},"content":" * Displays an error message related to task saving.","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"waseemingly"},"content":" * @param errorMessage The specific error message regarding saving.","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"waseemingly"},"content":" public void showSavingError(String errorMessage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"waseemingly"},"content":" printLine(\"Error saving tasks: \" + errorMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"waseemingly"},"content":" * Displays a message indicating an invalid task number.","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"waseemingly"},"content":" public void showInvalidTaskNumber() {","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"waseemingly"},"content":" printMessage(\"Please provide a valid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"waseemingly"},"content":" * Displays a message indicating a task has been marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"waseemingly"},"content":" * @param task The task that was marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"waseemingly"},"content":" public void showTaskMarked(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"waseemingly"},"content":" printLine(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"waseemingly"},"content":" printLine(\" [\" + task.getStatusIcon() + \"] \" + task.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"waseemingly"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"waseemingly"},"content":" * Displays a message indicating a task has been marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"waseemingly"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"waseemingly"},"content":" * @param task The task that was unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"waseemingly"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"waseemingly"},"content":" public void showTaskUnmarked(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"waseemingly"},"content":" printLine(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"waseemingly"},"content":" printLine(\" [\" + task.getStatusIcon() + \"] \" + task.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"waseemingly"},"content":" public void showMatchingTasks(ArrayList\u003cTask\u003e matchingTasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"waseemingly"},"content":" if (matchingTasks.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"waseemingly"},"content":" printMessage(\"No tasks match your search.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"waseemingly"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"waseemingly"},"content":" printLine(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"waseemingly"},"content":" for (int i \u003d 0; i \u003c matchingTasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"waseemingly"},"content":" Task task \u003d matchingTasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"waseemingly"},"content":" printLine((i + 1) + \".\" + task);","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"waseemingly"},"content":" printLine(\"____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":173}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" ui.showGoodbye();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":12}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":12}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" private String by;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" public DeadlineCommand(String description, String by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" if (description.isEmpty() || by.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"☹ OOPS!!! The description or deadline of a task cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" Deadline newDeadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" newDeadline \u003d new Deadline(description, dateTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" ui.showAddedTask(newDeadline, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Invalid date-time format! Please use d/M/yyyy HHmm format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":39}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" public DeleteCommand(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Invalid task number!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" Task deletedTask \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" tasks.delete(taskNumber - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" ui.showDeletedTask(deletedTask, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":31}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" private String from;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" private String to;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" public EventCommand(String description, String from, String to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" if (description.isEmpty() || from.isEmpty() || to.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"☹ OOPS!!! The description, start, or end time of an event cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" Event newEvent;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTimeFrom \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" LocalDateTime dateTimeTo \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" newEvent \u003d new Event(description, dateTimeFrom, dateTimeTo);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":" tasks.add(newEvent);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" ui.showAddedTask(newEvent, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Invalid date-time format! Please use d/M/yyyy HHmm format.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":42}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" private String keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d tasks.findTasksByKeyword(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" ui.showMatchingTasks(matchingTasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":20}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" ui.showTasksList(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":12}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" private int taskNumber; // the number of the task to be marked","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" public MarkCommand(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" Task task \u003d tasks.get(taskNumber - 1); // arrays are 0-based, so subtract 1","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" ui.showTaskMarked(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":25}},{"path":"src/main/java/duke/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" tasks.add(newTodo);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" ui.showSavingError(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" ui.showAddedTask(newTodo, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":31}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import duke.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" private int taskNumber; // the number of the task to be marked","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" public UnmarkCommand(int taskNumber) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException, IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" Task task \u003d tasks.get(taskNumber - 1); // arrays are 0-based, so subtract 1","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" task.unmarkAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(tasks); // Save the updated tasks to file","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" ui.showTaskUnmarked(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":25}},{"path":"src/test/java/duke/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" private final String testFilePath \u003d \"data/testTasks.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" @BeforeEach","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" public void setUp() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" storage \u003d new Storage(testFilePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" @AfterEach","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" public void tearDown() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":" File file \u003d new File(testFilePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"waseemingly"},"content":" if (file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"waseemingly"},"content":" file.delete();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"waseemingly"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"waseemingly"},"content":" public void testSaveTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"waseemingly"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"waseemingly"},"content":" taskList.add(new Todo(\"read book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"waseemingly"},"content":" assertDoesNotThrow(() -\u003e storage.saveTasks(taskList));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"waseemingly"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"waseemingly"},"content":" public void testLoadTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"waseemingly"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"waseemingly"},"content":" Todo todo \u003d new Todo(\"read book\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"waseemingly"},"content":" taskList.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"waseemingly"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"waseemingly"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"waseemingly"},"content":" ArrayList\u003cTask\u003e loadedTasks \u003d storage.loadTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"waseemingly"},"content":" assertNotNull(loadedTasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"waseemingly"},"content":" assertEquals(1, loadedTasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"waseemingly"},"content":" assertEquals(todo.toString(), loadedTasks.get(0).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"waseemingly"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"waseemingly"},"content":" fail(\"Should not have thrown any exception.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":55}},{"path":"src/test/java/duke/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class TaskTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" public void testMarkAsDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" assertTrue(task.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":" public void testUnmarkAsDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"waseemingly"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"waseemingly"},"content":" task.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"waseemingly"},"content":" task.unmarkAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"waseemingly"},"content":" assertFalse(task.isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":23}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"waseemingly"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"waseemingly"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"waseemingly"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"waseemingly"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"waseemingly"},"content":" public void dummyTest(){","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"waseemingly"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"waseemingly"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"waseemingly"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"waseemingly"},"content":" public void anotherDummyTest(){","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"waseemingly"},"content":" assertEquals(4, 4);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"waseemingly"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"waseemingly"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"waseemingly":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"waseemingly"},"content":"todo borrow book","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"waseemingly":1}},{"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":"waseemingly"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"waseemingly":1,"-":20}}] diff --git a/waseemingly_ip_master/commits.json b/waseemingly_ip_master/commits.json index 279a7af4..14e9935e 100644 --- a/waseemingly_ip_master/commits.json +++ b/waseemingly_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"waseemingly":[{"date":"2023-08-21","commitResults":[{"hash":"bb368cc1d5adfa317ffbdc8b986d6c0041c81584","isMergeCommit":false,"messageTitle":"Level-0 :Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}}]},{"date":"2023-08-22","commitResults":[{"hash":"cb7520c358667ecb4871ca42384333bd2f0dc57e","isMergeCommit":false,"messageTitle":"Level 1. Echo Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":11}}},{"hash":"77c70b6b4a13320addb85725009bd36cfed58535","isMergeCommit":false,"messageTitle":"Level 2. Add, List Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":4}}},{"hash":"15d1f84f689949eb01b82698f273ac38ac914657","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"Created a new class called Task to represent tasks.\n","tags":["Level-3-and-A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":3}}},{"hash":"c522eb8960cc85ca7f5f74f923592dc5a25d87d5","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines Add support for tracking three types of tasks","messageBody":"Created the following classes which are subclasses of Task\nToDos: tasks without any date/time attached to it\nDeadlines: tasks that need to be done before a specific date/time\nEvents: tasks that start at a specific date/time and ends at a specific date/time\n","tags":["Level-4-and-A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":10}}},{"hash":"eefb66badfca42aac04db0f427dd62c9be6ef758","isMergeCommit":false,"messageTitle":"Duke A-TextUiTesting: Automated Text UI Testing Test using the I/O redirection technique Use the input/output redirection technique to semi-automate the testing of Duke.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":0,"deletions":2}}},{"hash":"bb378b64e0c2795b503401fb49518d0c00ea30c7","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors Teach the chatbot to deal with errors such as incorrect inputs entered by the user.","messageBody":"Defined a new class DukeException to represent exceptions specific to Duke.\n","tags":["Level-5-and-A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":84}}},{"hash":"2da46a2f0d173dda91b7bf6166f3f293f3fd8a42","isMergeCommit":false,"messageTitle":"Level 6. Delete Add support for deleting tasks from the list.","messageBody":"Used java collection classes to use ArrayList\u003cTask\u003e to store the tasks.\n","tags":["Level-6-and-A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":30}}}]},{"date":"2023-08-31","commitResults":[{"hash":"1fd3a8defa01a8be4ff060206d05728f90702e24","isMergeCommit":false,"messageTitle":"Add save functionality","messageBody":"Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the chatbot starts up.\n","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":139,"deletions":2}}},{"hash":"3214ad0a4e9249181164c7b26854eb6aff2e0e83","isMergeCommit":false,"messageTitle":"Add date and time reading functionality.","messageBody":"Store deadline dates as a java.time.LocalDateTime in your task objects. Accept dates in a format such as yyyy-mm-dd format (e.g., 2019-10-15) and print in a different format such as MMM dd yyyy e.g., (Oct 15 2019).\n","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":63,"deletions":24}}}]},{"date":"2023-09-01","commitResults":[{"hash":"dd727c26aa579ea92cc16e0661fa0c1f7e3badeb","isMergeCommit":false,"messageTitle":"Add more OOP and create new classes","messageBody":"Classes UI, Parser, TaskList, Storage, Command was added\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":705,"deletions":202}}},{"hash":"c8b3456af8b9aa7c3ae2dc8a5f674b27bb35ff98","isMergeCommit":false,"messageTitle":"Remove utils.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":80}}},{"hash":"636d2eeaeb85c873dc39e474278572d5f1bbc47b","isMergeCommit":false,"messageTitle":"remove duke.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3}}},{"hash":"b14ce42bb269b7269d8ddb9a68265be79694341e","isMergeCommit":false,"messageTitle":"Divide classes into package duke","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":31},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"waseemingly":{"java":890,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":6}},"authorContributionVariance":{"waseemingly":89245.336},"authorDisplayNameMap":{"waseemingly":"CS2103T-T09-2 MOHA..ALIK"}} +{"authorDailyContributionsMap":{"waseemingly":[{"date":"2023-08-21","commitResults":[{"hash":"bb368cc1d5adfa317ffbdc8b986d6c0041c81584","isMergeCommit":false,"messageTitle":"Level-0 :Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}}]},{"date":"2023-08-22","commitResults":[{"hash":"cb7520c358667ecb4871ca42384333bd2f0dc57e","isMergeCommit":false,"messageTitle":"Level 1. Echo Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":11}}},{"hash":"77c70b6b4a13320addb85725009bd36cfed58535","isMergeCommit":false,"messageTitle":"Level 2. Add, List Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":4}}},{"hash":"15d1f84f689949eb01b82698f273ac38ac914657","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"Created a new class called Task to represent tasks.\n","tags":["Level-3-and-A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":3}}},{"hash":"c522eb8960cc85ca7f5f74f923592dc5a25d87d5","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines Add support for tracking three types of tasks","messageBody":"Created the following classes which are subclasses of Task\nToDos: tasks without any date/time attached to it\nDeadlines: tasks that need to be done before a specific date/time\nEvents: tasks that start at a specific date/time and ends at a specific date/time\n","tags":["Level-4-and-A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":10}}},{"hash":"eefb66badfca42aac04db0f427dd62c9be6ef758","isMergeCommit":false,"messageTitle":"Duke A-TextUiTesting: Automated Text UI Testing Test using the I/O redirection technique Use the input/output redirection technique to semi-automate the testing of Duke.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":0,"deletions":2}}},{"hash":"bb378b64e0c2795b503401fb49518d0c00ea30c7","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors Teach the chatbot to deal with errors such as incorrect inputs entered by the user.","messageBody":"Defined a new class DukeException to represent exceptions specific to Duke.\n","tags":["Level-5-and-A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":84}}},{"hash":"2da46a2f0d173dda91b7bf6166f3f293f3fd8a42","isMergeCommit":false,"messageTitle":"Level 6. Delete Add support for deleting tasks from the list.","messageBody":"Used java collection classes to use ArrayList\u003cTask\u003e to store the tasks.\n","tags":["Level-6-and-A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":30}}}]},{"date":"2023-08-31","commitResults":[{"hash":"1fd3a8defa01a8be4ff060206d05728f90702e24","isMergeCommit":false,"messageTitle":"Add save functionality","messageBody":"Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the chatbot starts up.\n","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":139,"deletions":2}}},{"hash":"3214ad0a4e9249181164c7b26854eb6aff2e0e83","isMergeCommit":false,"messageTitle":"Add date and time reading functionality.","messageBody":"Store deadline dates as a java.time.LocalDateTime in your task objects. Accept dates in a format such as yyyy-mm-dd format (e.g., 2019-10-15) and print in a different format such as MMM dd yyyy e.g., (Oct 15 2019).\n","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":63,"deletions":24}}}]},{"date":"2023-09-01","commitResults":[{"hash":"dd727c26aa579ea92cc16e0661fa0c1f7e3badeb","isMergeCommit":false,"messageTitle":"Add more OOP and create new classes","messageBody":"Classes UI, Parser, TaskList, Storage, Command was added\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":705,"deletions":202}}},{"hash":"c8b3456af8b9aa7c3ae2dc8a5f674b27bb35ff98","isMergeCommit":false,"messageTitle":"Remove utils.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":80}}},{"hash":"636d2eeaeb85c873dc39e474278572d5f1bbc47b","isMergeCommit":false,"messageTitle":"remove duke.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3}}},{"hash":"b14ce42bb269b7269d8ddb9a68265be79694341e","isMergeCommit":false,"messageTitle":"Divide classes into package duke","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":31},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"26662cb292150827a48ae11daec4a5c2bb29ba9d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/nus-cs2103-AY2324S1/ip","messageBody":"* \u0027add-gradle-support\u0027 of https://github.com/nus-cs2103-AY2324S1/ip:\n Bump gradle and lib version\n Add Gradle support\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"da137ab0a5a949691689513566e08f0962ab0d5f","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":2}}},{"hash":"ec0651bbd0af0b4e62096498a732a0685fc65ba0","isMergeCommit":false,"messageTitle":"Package the app as a Jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"e0c34adc51bd6c45ebb85b21b00f3a2b6c8da35d","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":277,"deletions":10}}},{"hash":"0a04f7f89899969bc24cae40c31ac917d91058ca","isMergeCommit":false,"messageTitle":"Follow the coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"48fb24bda214686240bed9acb3a4cad0492650ce","isMergeCommit":false,"messageTitle":"Add a feature where user find a task by searching for a keyword","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":49,"deletions":0}}},{"hash":"2aba9c643dcd1189cbdda314e8bf7377187a1de4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"* branch-A-JavaDoc:\n Add JavaDoc comments\n\n# Conflicts:\n#\tsrc/main/java/duke/Parser.java\n","fileTypesAndContributionMap":{}},{"hash":"a87a0aff1d2f98b9cfde0701638c8378a0e8f976","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"* branch-Level-9:\n Add a feature where user find a task by searching for a keyword\n","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"waseemingly":{"java":1304,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":7}},"authorContributionVariance":{"waseemingly":160910.58},"authorDisplayNameMap":{"waseemingly":"CS2103T-T09-2 MOHA..ALIK"}} diff --git a/wasjoe1_ip_master/authorship.json b/wasjoe1_ip_master/authorship.json index 78376917..210a9c15 100644 --- a/wasjoe1_ip_master/authorship.json +++ b/wasjoe1_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":" protected String by;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wasjoe1"},"content":" public String addTaskString (int currNumOfTask) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wasjoe1"},"content":" return super.addTaskString(currNumOfTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wasjoe1":18}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"import java.util.List;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":" String openingStr \u003d","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":" \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":" \" Hello! I\u0027m JEOE\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":" \" What can I do for you?\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":" \" type :\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":" \" list \u003d\u003e to list out items in storage\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wasjoe1"},"content":" \" _Anything else_ \u003d\u003e store in storage\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wasjoe1"},"content":" \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wasjoe1"},"content":" System.out.println(openingStr);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wasjoe1"},"content":" Scanner scanner \u003d new Scanner(System.in); // makes it such that the scanner takes in inputs from the console","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wasjoe1"},"content":" List\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wasjoe1"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wasjoe1"},"content":" while (isRunning) {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"wasjoe1"},"content":" String reply \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"wasjoe1"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"wasjoe1"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"wasjoe1"},"content":" String command \u003d input.split(\" \")[0]; // even if its empty string, the 0 index will still be \"\"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"wasjoe1"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"wasjoe1"},"content":" isRunning \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d \" Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"wasjoe1"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"wasjoe1"},"content":" for (int i \u003d 0; i \u003c storage.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"wasjoe1"},"content":" String num \u003d String.valueOf(i + 1) + \". \";","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"wasjoe1"},"content":" Task task \u003d storage.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d num + task + \"\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"wasjoe1"},"content":" } else if (command.equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"wasjoe1"},"content":" // create the actual task","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"wasjoe1"},"content":" String description \u003d input.replaceFirst(\"todo \", \"\");","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"wasjoe1"},"content":" Todo todo \u003d new Todo(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"wasjoe1"},"content":" // add to the storage","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"wasjoe1"},"content":" storage.add(todo);","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"wasjoe1"},"content":" // add to the reply","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d todo.addTaskString(storage.size());","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"wasjoe1"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"wasjoe1"},"content":" String[] arr \u003d input.replaceFirst(\"deadline \", \"\").split(\" /by \");","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"wasjoe1"},"content":" String description \u003d arr[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"wasjoe1"},"content":" String by \u003d arr[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"wasjoe1"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"wasjoe1"},"content":" // add to storage","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"wasjoe1"},"content":" storage.add(deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"wasjoe1"},"content":" //add to the reply","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d deadline.addTaskString(storage.size());","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"wasjoe1"},"content":" } else if (command.equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"wasjoe1"},"content":" String[] arr \u003d input.replaceFirst(\"event \", \"\").split(\" /from \"); // arr have description","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"wasjoe1"},"content":" String description \u003d arr[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"wasjoe1"},"content":" String[] arr2 \u003d arr[1].split(\" /to \"); // arr2 have the from \u0026 to","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"wasjoe1"},"content":" String from \u003d arr2[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"wasjoe1"},"content":" String to \u003d arr2[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"wasjoe1"},"content":" Event event \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"wasjoe1"},"content":" // add to storage","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"wasjoe1"},"content":" storage.add(event);","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"wasjoe1"},"content":" // add to the reply","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d event.addTaskString(storage.size());","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"wasjoe1"},"content":" } else if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"wasjoe1"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"wasjoe1"},"content":" // mark the task","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"wasjoe1"},"content":" storage.get(index).mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"wasjoe1"},"content":" // format the reply","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"wasjoe1"},"content":" (\"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"wasjoe1"},"content":" storage.get(index).toString() + \"\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"wasjoe1"},"content":" } else if (command.equals(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"wasjoe1"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"wasjoe1"},"content":" // unmark the task","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"wasjoe1"},"content":" storage.get(index).unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"wasjoe1"},"content":" // format the reply","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"wasjoe1"},"content":" (\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"wasjoe1"},"content":" storage.get(index).toString() + \"\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"wasjoe1"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"wasjoe1"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"wasjoe1"},"content":" // delete from the array","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"wasjoe1"},"content":" Task t \u003d storage.remove(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"wasjoe1"},"content":" // add to the reply","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"wasjoe1"},"content":" (\"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"wasjoe1"},"content":" t.toString() + \"\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"wasjoe1"},"content":" \"Now you have \" + storage.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"wasjoe1"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"wasjoe1"},"content":" // nothing happens, since we only want the 3 specific types of tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"wasjoe1"},"content":" // throw exception when it doesnt have a command word","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"wasjoe1"},"content":" throw new NoCommandException(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"wasjoe1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"wasjoe1"},"content":" System.out.println(reply);","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"wasjoe1"},"content":" scanner.close();","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"wasjoe1":101,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" public Event (String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wasjoe1"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wasjoe1"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wasjoe1"},"content":" public String addTaskString (int currNumOfTask) {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wasjoe1"},"content":" return super.addTaskString(currNumOfTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wasjoe1":20}},{"path":"src/main/java/NoCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"public class NoCommandException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":" public NoCommandException(String input) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":" super(","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":" \" ☹ OOPS!!! A valid Task is required. Your current input \\\"\" + input + \"\\\" is not a valid task.\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" \"\\nPlease enter your input starting with :\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":" \"todo\\n\" + \"deadline\\n\" + \"event\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":" \"\\n After the command word, leave a space before typing your task.\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wasjoe1":10}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":" String description; // the toString handles the space after the [ ] or [X]","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":" return isDone ? \"[X] \" + this.description : \"[ ] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wasjoe1"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wasjoe1"},"content":" return this.isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wasjoe1"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wasjoe1"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"wasjoe1"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"wasjoe1"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"wasjoe1"},"content":" public String addTaskString (int currNumOfTask) {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"wasjoe1"},"content":" return \"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"wasjoe1"},"content":" + this.toString() + \"\\n\" // not sure if this toString will call this toString or the object\u0027s toString","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"wasjoe1"},"content":" + \"Now you have \" + currNumOfTask + \" tasks in the list.\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wasjoe1":30}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wasjoe1"},"content":" public String addTaskString (int currNumOfTask) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wasjoe1"},"content":" return super.addTaskString(currNumOfTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wasjoe1":15}},{"path":"text-ui-test/diff-output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"--- ACTUAL.TXT\t2023-08-24 12:24:54","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"+++ EXPECTED.TXT\t2023-08-24 12:08:47","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"@@ -24,3 +24,40 @@","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":" Now you have 3 tasks in the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" ____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":"+ ☹ OOPS!!! A valid Task is required. Your current input \"random grribish\" is not a valid task.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":"+Please enter your input starting with :","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":"+todo","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wasjoe1"},"content":"+deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wasjoe1"},"content":"+event","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wasjoe1"},"content":"+ After the command word, leave a space before typing your task.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"wasjoe1"},"content":"+Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"wasjoe1"},"content":"+[T][X] borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"wasjoe1"},"content":"+OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"wasjoe1"},"content":"+[T][ ] borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"wasjoe1"},"content":"+Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"wasjoe1"},"content":"+[D][X] return book (by: Sunday)","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"wasjoe1"},"content":"+Here are the tasks in your list:","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"wasjoe1"},"content":"+1. [T][ ] borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"wasjoe1"},"content":"+2. [D][X] return book (by: Sunday)","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"wasjoe1"},"content":"+3. [E][ ] project meeting (from: Mon 2pm to: 4pm)","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"wasjoe1"},"content":"+ Bye. Hope to see you again soon!","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wasjoe1":43}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":"random grribish","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wasjoe1":9}}] +[{"path":"src/main/java/Exceptions/InitializationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"package Exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"public class InitializationException extends Exception {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":" public InitializationException(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" super(\"initialization exception thrown\");","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wasjoe1":7}},{"path":"src/main/java/Exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"package Exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"public class InvalidCommandException extends RunException {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":" public InvalidCommandException(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" super(\"☹ OOPS!!! A valid command is required. Your current command \\\"\" + input + \"\\\" is not a valid command.\\n\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":" \"Please enter your input starting with :\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":" \"bye\\n\" + \"list\\n\" + \"todo\\n\" + \"deadline\\n\" + \"event\\n\" + \"mark\\n\" + \"unmark\\n\" + \"delete\\n\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":" \"After the command word, leave a space before typing your task.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wasjoe1":11}},{"path":"src/main/java/Exceptions/NoCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"package Exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"public class NoCommandException extends RunException {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":" public NoCommandException(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" super(\"☹ OOPS!!! A valid command is required. Your current command \\\"\" + input + \"\\\" is empty.\\n\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":" \"Please enter your input starting with :\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":" \"bye\\n\" + \"list\\n\" + \"todo\\n\" + \"deadline\\n\" + \"event\\n\" + \"mark\\n\" + \"unmark\\n\" + \"delete\\n\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":" \"After the command word, leave a space before typing your task.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wasjoe1":11}},{"path":"src/main/java/Exceptions/RunException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"package Exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"public class RunException extends Exception{","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":" public RunException(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" super(\"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":" input +","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":" \"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wasjoe1":9}},{"path":"src/main/java/Jeoe.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":"import Exceptions.InitializationException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wasjoe1"},"content":"import Exceptions.RunException;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wasjoe1"},"content":"import Exceptions.NoCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wasjoe1"},"content":"import Exceptions.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wasjoe1"},"content":"import Tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wasjoe1"},"content":"import Tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wasjoe1"},"content":"import Tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wasjoe1"},"content":"import Tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wasjoe1"},"content":"import Tasks.Task.TaskType;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wasjoe1"},"content":"public class Jeoe {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wasjoe1"},"content":" private static Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"wasjoe1"},"content":" private static List\u003cTask\u003e storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"wasjoe1"},"content":" private static String filePath \u003d System.getProperty(\"user.dir\") + \"/storage/taskListData.txt\"; // dir is till ip","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"wasjoe1"},"content":" private static Task StringToTask(String taskInStringForm) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"wasjoe1"},"content":" String[] taskData \u003d taskInStringForm.split(\" \\\\| \"); // assuming the description and all that doesnt have |","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"wasjoe1"},"content":" // splits into type, mark or not, description, from, to","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"wasjoe1"},"content":" switch (taskData[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"wasjoe1"},"content":" case \"T\":","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"wasjoe1"},"content":" Task todo \u003d new Todo(taskData[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"wasjoe1"},"content":" if (taskData[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"wasjoe1"},"content":" todo.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"wasjoe1"},"content":" return todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"wasjoe1"},"content":" case \"D\":","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"wasjoe1"},"content":" Task deadline \u003d new Deadline(taskData[2], LocalDateTime.parse(taskData[3]));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"wasjoe1"},"content":" if (taskData[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"wasjoe1"},"content":" deadline.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"wasjoe1"},"content":" return deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"wasjoe1"},"content":" case \"E\":","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"wasjoe1"},"content":" Task event \u003d new Event(taskData[2], taskData[3], taskData[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"wasjoe1"},"content":" if (taskData[1] \u003d\u003d \"1\") {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"wasjoe1"},"content":" event.mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"wasjoe1"},"content":" return event;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"wasjoe1"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"wasjoe1"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"wasjoe1"},"content":" private static String taskToString(Task t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"wasjoe1"},"content":" // splits into type, mark or not, description, from, to","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"wasjoe1"},"content":" String deLim \u003d \" | \";","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"wasjoe1"},"content":" switch (t.taskType()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"wasjoe1"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"wasjoe1"},"content":" String todo \u003d \"T\" + deLim;","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"wasjoe1"},"content":" todo +\u003d t.isDone() ? (\"1\" + deLim) : (\"0\" + deLim);","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"wasjoe1"},"content":" todo +\u003d t.getDescription();","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"wasjoe1"},"content":" return todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"wasjoe1"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"wasjoe1"},"content":" String deadline \u003d \"D\" + deLim;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"wasjoe1"},"content":" deadline +\u003d t.isDone() ? (\"1\" + deLim) : (\"0\" + deLim);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"wasjoe1"},"content":" deadline +\u003d t.getDescription() + deLim;","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"wasjoe1"},"content":" deadline +\u003d t.getEndDateTimeString();","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"wasjoe1"},"content":" return deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"wasjoe1"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"wasjoe1"},"content":" String event \u003d \"E\" + deLim;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"wasjoe1"},"content":" event +\u003d t.isDone() ? (\"1\" + deLim) : (\"0\" + deLim);","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"wasjoe1"},"content":" event +\u003d t.getDescription() + deLim;","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"wasjoe1"},"content":" event +\u003d t.getEndDateTimeString();","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"wasjoe1"},"content":" return event;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"wasjoe1"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"wasjoe1"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"wasjoe1"},"content":" private static void save() { // for saving into the storage, just rewrite the entire file","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"wasjoe1"},"content":" // to overwrite the file","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"wasjoe1"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"wasjoe1"},"content":" // concatenate all the tasks in string form","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"wasjoe1"},"content":" String listOfTasksString \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"wasjoe1"},"content":" for(Task t : storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"wasjoe1"},"content":" String tString \u003d taskToString(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"wasjoe1"},"content":" listOfTasksString +\u003d (tString + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"wasjoe1"},"content":" // write to the file","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"wasjoe1"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"wasjoe1"},"content":" fw.write(listOfTasksString);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"wasjoe1"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"wasjoe1"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"wasjoe1"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"wasjoe1"},"content":" private static String convertToISO8601(String dt) {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"wasjoe1"},"content":" // dt are in the format 2022-12-01 18:00","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"wasjoe1"},"content":" String[] dtArr \u003d dt.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"wasjoe1"},"content":" return dtArr[0] + \"T\" + dtArr[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"wasjoe1"},"content":" private static void initialize() throws InitializationException { // create the initialization exception","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"wasjoe1"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"wasjoe1"},"content":" scanner \u003d new Scanner(System.in); // makes it such that the scanner takes in inputs from the console","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"wasjoe1"},"content":" storage \u003d new ArrayList\u003c\u003e(); // everytime you initialize, you start with a new storage","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"wasjoe1"},"content":" // add items into the storage when loading the app","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"wasjoe1"},"content":" // find the file","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"wasjoe1"},"content":" File taskListData \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"wasjoe1"},"content":" // if file doesnt exist, // taskListData.length() \u003d\u003d 0; // is used to check length of file","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"wasjoe1"},"content":" if (!taskListData.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"wasjoe1"},"content":" System.out.println(\"task list data doesnt exist\");","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"wasjoe1"},"content":" taskListData.getParentFile().mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"wasjoe1"},"content":" taskListData.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"wasjoe1"},"content":" Scanner fileSc \u003d new Scanner(taskListData);","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"wasjoe1"},"content":" while (fileSc.hasNextLine()) { // if no task, storage is empty","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"wasjoe1"},"content":" Task task \u003d StringToTask(fileSc.nextLine());","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"wasjoe1"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"wasjoe1"},"content":" storage.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"wasjoe1"},"content":" String openingStr \u003d \"____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"wasjoe1"},"content":" \" Hello! I\u0027m JEOE\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"wasjoe1"},"content":" \" What can I do for you?\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"wasjoe1"},"content":" \" type :\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"wasjoe1"},"content":" \" list \u003d\u003e to list out items in storage\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"wasjoe1"},"content":" \" _Anything else_ \u003d\u003e store in storage\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"wasjoe1"},"content":" \"____________________________________________________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"wasjoe1"},"content":" System.out.println(openingStr);","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"wasjoe1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"wasjoe1"},"content":" System.out.println(\"smt went wrong\");","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"wasjoe1"},"content":" // could be scanner fail OR cannot find such file (assumes if file is found, its always correct format)","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"wasjoe1"},"content":" // if cannot find file, create new file","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"wasjoe1"},"content":" // if scanner fail, throw scanner fail exception","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"wasjoe1"},"content":"// throw new InitializationException(\"initiazlization exception\");","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"wasjoe1"},"content":" public static void run(){","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"wasjoe1"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"wasjoe1"},"content":" while (isRunning) {","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"wasjoe1"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"wasjoe1"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"wasjoe1"},"content":" String reply \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"wasjoe1"},"content":" String command \u003d input.split(\" \")[0]; // even if its empty string, the 0 index will still be \"\"","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"wasjoe1"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"wasjoe1"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"wasjoe1"},"content":" isRunning \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d \" Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"wasjoe1"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"wasjoe1"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"wasjoe1"},"content":" for (int i \u003d 0; i \u003c storage.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"wasjoe1"},"content":" String num \u003d String.valueOf(i + 1) + \". \";","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"wasjoe1"},"content":" Task task \u003d storage.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d num + task + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"wasjoe1"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"wasjoe1"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"wasjoe1"},"content":" // create the actual task","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"wasjoe1"},"content":" String todoDescription \u003d input.replaceFirst(\"todo \", \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"wasjoe1"},"content":" Todo todo \u003d new Todo(todoDescription);","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"wasjoe1"},"content":" // add to the storage","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"wasjoe1"},"content":" storage.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"wasjoe1"},"content":" Jeoe.save();","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"wasjoe1"},"content":" // add to the reply","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d todo.replyString(storage.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"wasjoe1"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"wasjoe1"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"wasjoe1"},"content":" String[] deadlineArr \u003d input.replaceFirst(\"deadline \", \"\").split(\" /by \");","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"wasjoe1"},"content":" String deadlineDescription \u003d deadlineArr[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"wasjoe1"},"content":" String by \u003d convertToISO8601(deadlineArr[1]); // need to add the T in","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"wasjoe1"},"content":" Deadline deadline \u003d new Deadline(deadlineDescription, LocalDateTime.parse(by));","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"wasjoe1"},"content":" // add to storage","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"wasjoe1"},"content":" storage.add(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"wasjoe1"},"content":" Jeoe.save();","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"wasjoe1"},"content":" //add to the reply","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d deadline.replyString(storage.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"wasjoe1"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"wasjoe1"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"wasjoe1"},"content":" String[] eventArr \u003d input.replaceFirst(\"event \", \"\").split(\" /from \"); // eventArr have description","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"wasjoe1"},"content":" String eventDescription \u003d eventArr[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"wasjoe1"},"content":" String[] eventArr2 \u003d eventArr[1].split(\" /to \"); // eventArr2 have the from \u0026 to","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"wasjoe1"},"content":" String from \u003d eventArr2[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"wasjoe1"},"content":" String to \u003d eventArr2[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"wasjoe1"},"content":" Event event \u003d new Event(eventDescription, from, to);","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"wasjoe1"},"content":" // add to storage","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"wasjoe1"},"content":" storage.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"wasjoe1"},"content":" Jeoe.save();","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"wasjoe1"},"content":" // add to the reply","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d event.replyString(storage.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"wasjoe1"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"wasjoe1"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"wasjoe1"},"content":" int idxMark \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"wasjoe1"},"content":" // mark the task","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"wasjoe1"},"content":" storage.get(idxMark).mark();","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"wasjoe1"},"content":" Jeoe.save();","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"wasjoe1"},"content":" // format the reply","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d (\"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"wasjoe1"},"content":" storage.get(idxMark).toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"wasjoe1"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"wasjoe1"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"wasjoe1"},"content":" int idxUnmark \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":212,"author":{"gitId":"wasjoe1"},"content":" // unmark the task","lastModifiedDate":"2023-09-01"},{"lineNumber":213,"author":{"gitId":"wasjoe1"},"content":" storage.get(idxUnmark).unmark();","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"wasjoe1"},"content":" Jeoe.save();","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"wasjoe1"},"content":" // format the reply","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d (\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"wasjoe1"},"content":" storage.get(idxUnmark).toString() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":218,"author":{"gitId":"wasjoe1"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"wasjoe1"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":220,"author":{"gitId":"wasjoe1"},"content":" int idxDel \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":221,"author":{"gitId":"wasjoe1"},"content":" // delete from the array","lastModifiedDate":"2023-09-01"},{"lineNumber":222,"author":{"gitId":"wasjoe1"},"content":" Task t \u003d storage.remove(idxDel);","lastModifiedDate":"2023-09-01"},{"lineNumber":223,"author":{"gitId":"wasjoe1"},"content":" Jeoe.save();","lastModifiedDate":"2023-09-01"},{"lineNumber":224,"author":{"gitId":"wasjoe1"},"content":" // add to the reply","lastModifiedDate":"2023-09-01"},{"lineNumber":225,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d (\"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":226,"author":{"gitId":"wasjoe1"},"content":" t.toString() + \"\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":227,"author":{"gitId":"wasjoe1"},"content":" \"Now you have \" + storage.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"wasjoe1"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"wasjoe1"},"content":" case \"\":","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"wasjoe1"},"content":" throw new NoCommandException(command);","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"wasjoe1"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"wasjoe1"},"content":" // throw exception when it doesnt have a command word","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"wasjoe1"},"content":" throw new InvalidCommandException(command);","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"wasjoe1"},"content":" reply +\u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"wasjoe1"},"content":" System.out.println(reply);","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"wasjoe1"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"wasjoe1"},"content":" // print exception, they will handle their formatting themselves","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"wasjoe1"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":240,"author":{"gitId":"wasjoe1"},"content":" } catch (NoCommandException e) { // can think of if tried 3 empty commands, terminate program","lastModifiedDate":"2023-09-01"},{"lineNumber":241,"author":{"gitId":"wasjoe1"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":243,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":244,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":245,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":246,"author":{"gitId":"wasjoe1"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":247,"author":{"gitId":"wasjoe1"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"wasjoe1"},"content":" Jeoe.initialize();","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"wasjoe1"},"content":" Jeoe.run();","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"wasjoe1"},"content":" scanner.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"wasjoe1"},"content":" } catch (InitializationException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"wasjoe1"},"content":" // exception to do with initialization \u003d\u003e scanner fails (cannot be file issue)","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wasjoe1":255}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"package Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wasjoe1"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wasjoe1"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\")) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wasjoe1"},"content":" public String getEndDateTimeString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wasjoe1"},"content":" return this.by.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wasjoe1"},"content":" // return this.by.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wasjoe1"},"content":" // + \"T\" + this.by.format(DateTimeFormatter.ofPattern(\"HH:mm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"wasjoe1"},"content":" public String replyString(int currNumOfTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"wasjoe1"},"content":" return super.replyString(currNumOfTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wasjoe1":29}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"package Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"public class Event extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":" protected String from;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" protected String to;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":" public Event (String description, String from, String to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wasjoe1"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wasjoe1"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wasjoe1"},"content":" public String getStartDateTimeString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wasjoe1"},"content":" return this.from;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wasjoe1"},"content":" public String getEndDateTimeString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wasjoe1"},"content":" return this.to;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"wasjoe1"},"content":" public String replyString(int currNumOfTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"wasjoe1"},"content":" return super.replyString(currNumOfTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wasjoe1":30}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"package Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":"public class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" private String description; // the toString handles the space after the [ ] or [X]","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":" public enum TaskType {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":" TODO,","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":" EVENT,","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":" DEADLINE","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wasjoe1"},"content":" TaskType taskType \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wasjoe1"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wasjoe1"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wasjoe1"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wasjoe1"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wasjoe1"},"content":" return isDone ? \"[X] \" + this.description : \"[ ] \" + this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wasjoe1"},"content":" public boolean isDone() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"wasjoe1"},"content":" return this.isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"wasjoe1"},"content":" public void unmark() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"wasjoe1"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"wasjoe1"},"content":" public void mark() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"wasjoe1"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"wasjoe1"},"content":" public TaskType taskType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"wasjoe1"},"content":" return this.taskType;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"wasjoe1"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"wasjoe1"},"content":" return this.description;","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"wasjoe1"},"content":" public String getStartDateTimeString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"wasjoe1"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"wasjoe1"},"content":" public String getEndDateTimeString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"wasjoe1"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"wasjoe1"},"content":" public String replyString (int currNumOfTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"wasjoe1"},"content":" return \"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"wasjoe1"},"content":" + this.toString() + \"\\n\" // the toString is called from the child class which is amazing \u003d\u003e RTT is child class type i guess","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"wasjoe1"},"content":" + \"Now you have \" + currNumOfTask + \" tasks in the list.\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wasjoe1":56}},{"path":"src/main/java/Tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"package Tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":" public Todo(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wasjoe1"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wasjoe1"},"content":" public String replyString (int currNumOfTask) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wasjoe1"},"content":" return super.replyString(currNumOfTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wasjoe1"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wasjoe1"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wasjoe1":17}},{"path":"storage/taskListData.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"T | 0 | another thing","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"T | 0 | really another thing","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"D | 0 | smt | 2022-12-01T18:00:00","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":"D | 0 | another thing | 2021-11-01T15:35:00","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wasjoe1":4}},{"path":"text-ui-test/diff-output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"--- ACTUAL.TXT\t2023-08-24 12:24:54","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"+++ EXPECTED.TXT\t2023-08-24 12:08:47","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"@@ -24,3 +24,40 @@","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":" Now you have 3 tasks in the list.","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":" ____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":"+ ☹ OOPS!!! A valid Tasks.Tasks is required. Your current input \"random grribish\" is not a valid task.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wasjoe1"},"content":"+Please enter your input starting with :","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wasjoe1"},"content":"+todo","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wasjoe1"},"content":"+deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wasjoe1"},"content":"+event","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wasjoe1"},"content":"+ After the command word, leave a space before typing your task.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"wasjoe1"},"content":"+Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"wasjoe1"},"content":"+[T][X] borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"wasjoe1"},"content":"+OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"wasjoe1"},"content":"+[T][ ] borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"wasjoe1"},"content":"+Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"wasjoe1"},"content":"+[D][X] return book (by: Sunday)","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"wasjoe1"},"content":"+Here are the tasks in your list:","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"wasjoe1"},"content":"+1. [T][ ] borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"wasjoe1"},"content":"+2. [D][X] return book (by: Sunday)","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"wasjoe1"},"content":"+3. [E][ ] project meeting (from: Mon 2pm to: 4pm)","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"wasjoe1"},"content":"+ Bye. Hope to see you again soon!","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"wasjoe1"},"content":"+____________________________________________________________","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"wasjoe1"},"content":"+","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wasjoe1":43}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wasjoe1"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wasjoe1"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wasjoe1"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wasjoe1"},"content":"random grribish","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wasjoe1"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wasjoe1"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wasjoe1"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wasjoe1"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wasjoe1"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wasjoe1":9}}] diff --git a/wasjoe1_ip_master/commits.json b/wasjoe1_ip_master/commits.json index f8348362..e605f20e 100644 --- a/wasjoe1_ip_master/commits.json +++ b/wasjoe1_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"wasjoe1":[{"date":"2023-08-24","commitResults":[{"hash":"754e6fa38ca6732130d10c53a348bd4d2348cd00","isMergeCommit":false,"messageTitle":"Level-0 commit by joe : 1st ever commit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"457f29c91dbb48f0f2ac40b50c291f809d66168f","isMergeCommit":false,"messageTitle":"Level-1 commit by joe : just bye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"7f92e1f50fc22045cea33ab7f9689ab96481b0bc","isMergeCommit":false,"messageTitle":"Level-1 commit by joe : just bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"b88e49ceebd30a6f61d2290728f7f76eda0d5ea8","isMergeCommit":false,"messageTitle":"Level-2 commit by joe : add stuff \u0026 display a list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":8}}},{"hash":"9272ff74672a8cb8db0c0f28b4316b555abfa274","isMergeCommit":false,"messageTitle":"Level-3 commit by joe : Having tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":11}}},{"hash":"1dc174f5c91638d1d8a7f44946207fb9ab8f0c5c","isMergeCommit":false,"messageTitle":"Level-4 commit by joe : Have other task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":157,"deletions":64}}},{"hash":"5bdb7bc05c5478d1cfe6b6970e1c8dd22f49dfde","isMergeCommit":false,"messageTitle":"Level-5 commit by joe : error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":163,"deletions":152}}},{"hash":"c0465f0be3c39c409b0a5aeac74906b289874f14","isMergeCommit":false,"messageTitle":"A-TextUiTesting commit by joe : ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":52,"deletions":0}}},{"hash":"6f7874c4d7624913c0dc379013f4faefdb065cf3","isMergeCommit":false,"messageTitle":"Level-6 commit by joe : deleting a task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"wasjoe1":{"java":194,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":52}},"authorContributionVariance":{"wasjoe1":69614.2},"authorDisplayNameMap":{"wasjoe1":"CS2103T-F11-2 CHUA.. JOE"}} +{"authorDailyContributionsMap":{"wasjoe1":[{"date":"2023-08-24","commitResults":[{"hash":"754e6fa38ca6732130d10c53a348bd4d2348cd00","isMergeCommit":false,"messageTitle":"Level-0 commit by joe : 1st ever commit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"457f29c91dbb48f0f2ac40b50c291f809d66168f","isMergeCommit":false,"messageTitle":"Level-1 commit by joe : just bye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"7f92e1f50fc22045cea33ab7f9689ab96481b0bc","isMergeCommit":false,"messageTitle":"Level-1 commit by joe : just bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"b88e49ceebd30a6f61d2290728f7f76eda0d5ea8","isMergeCommit":false,"messageTitle":"Level-2 commit by joe : add stuff \u0026 display a list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":8}}},{"hash":"9272ff74672a8cb8db0c0f28b4316b555abfa274","isMergeCommit":false,"messageTitle":"Level-3 commit by joe : Having tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":11}}},{"hash":"1dc174f5c91638d1d8a7f44946207fb9ab8f0c5c","isMergeCommit":false,"messageTitle":"Level-4 commit by joe : Have other task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":157,"deletions":64}}},{"hash":"5bdb7bc05c5478d1cfe6b6970e1c8dd22f49dfde","isMergeCommit":false,"messageTitle":"Level-5 commit by joe : error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":163,"deletions":152}}},{"hash":"c0465f0be3c39c409b0a5aeac74906b289874f14","isMergeCommit":false,"messageTitle":"A-TextUiTesting commit by joe : ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":52,"deletions":0}}},{"hash":"6f7874c4d7624913c0dc379013f4faefdb065cf3","isMergeCommit":false,"messageTitle":"Level-6 commit by joe : deleting a task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":7}}}]},{"date":"2023-09-01","commitResults":[{"hash":"2e5098a98454c72581e89987289e63003e7f771b","isMergeCommit":false,"messageTitle":"Add save feature to Jeoe.java and some restructure","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":425,"deletions":198}}},{"hash":"625805600d3a3a11c83138740784306cb7a23187","isMergeCommit":false,"messageTitle":"Teach chatbot to understand date \u0026 time in deadline task","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":19,"deletions":19}}}]}]},"authorFileTypeContributionMap":{"wasjoe1":{"java":425,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":56}},"authorContributionVariance":{"wasjoe1":58738.777},"authorDisplayNameMap":{"wasjoe1":"CS2103T-F11-2 CHUA.. JOE"}} diff --git a/wesho1107_ip_master/authorship.json b/wesho1107_ip_master/authorship.json index 6cc2a27c..2538dbf1 100644 --- a/wesho1107_ip_master/authorship.json +++ b/wesho1107_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"# duke.main.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"3. After that, locate the `src/main/java/duke.main.Duke.java` file, right-click it, and choose `Run duke.main.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"wesho1107":2,"-":22}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.main.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" super(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" storage.append(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" ui.showAddSuccess(task.toString(), tasks.getTasks().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":20}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.main.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" public Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public Command(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws IOException, InvalidTaskNumberException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":18}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.main.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public DeleteCommand(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" super(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" super(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws IOException, InvalidTaskNumberException {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" if (index \u003e\u003d tasks.getSize() || index \u003c 0) throw new InvalidTaskNumberException();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" Task task \u003d tasks.getTaskAtIndex(this.index);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" tasks.remove(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" storage.update(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" ui.showDeleteSuccess(task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":27}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.main.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" public ExitCommand(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" super(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" ui.showParting();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":22}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.main.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" public ListCommand(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" super(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" ui.showList(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":17}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.main.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" private boolean isMark;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" public MarkCommand(int index, boolean isMark) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" super(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" this.isMark \u003d isMark;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws IOException, InvalidTaskNumberException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" if (this.index \u003e\u003d tasks.getSize() || this.index \u003c 0) throw new InvalidTaskNumberException();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" Task task \u003d tasks.getTaskAtIndex(this.index);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" if (isMark) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" task.markTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" ui.showMark(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" task.unmarkTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" ui.showUnmark(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" storage.update(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":30}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class DukeException extends Throwable {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" public DukeException(String error) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" super(\"\\n\" + error);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wesho1107":8}},{"path":"src/main/java/duke/exception/EmptyDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class EmptyDeadlineException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public EmptyDeadlineException(String error) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(error);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wesho1107":7}},{"path":"src/main/java/duke/exception/EmptyEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class EmptyEventException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public EmptyEventException(String error) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(error);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wesho1107":7}},{"path":"src/main/java/duke/exception/EmptyTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class EmptyTaskException extends DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public EmptyTaskException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(\" TWEET!!! A task cannot be empty\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":7}},{"path":"src/main/java/duke/exception/EmptyTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class EmptyTodoException extends DukeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public EmptyTodoException(String error) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(error);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wesho1107":7}},{"path":"src/main/java/duke/exception/InvalidTaskNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class InvalidTaskNumberException extends DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public InvalidTaskNumberException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(\" TWEET!!! I can\u0027t find the task you are looking for!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":7}},{"path":"src/main/java/duke/exception/NoDueDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class NoDueDateException extends DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public NoDueDateException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(\" TWEET!!! A deadline cannot have no due date\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":7}},{"path":"src/main/java/duke/exception/NoEventEndException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class NoEventEndException extends DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" public NoEventEndException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" super(\" TWEET!!! An event cannot have no end timing\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":8}},{"path":"src/main/java/duke/exception/NoEventStartException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class NoEventStartException extends DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" public NoEventStartException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" super(\" TWEET!!! An event cannot have no start timing\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":8}},{"path":"src/main/java/duke/main/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.main;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.command.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" new Duke(\"./tasks.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"wesho1107":44,"-":2}},{"path":"src/main/java/duke/main/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.main;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.command.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" Command c;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" String[] splitCommand \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" String headCommand \u003d splitCommand[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" String commandDetails;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" if (headCommand.equals(\"bye\")) return new ExitCommand(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" if (headCommand.equals(\"list\")) return new ListCommand(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" if (splitCommand.length \u003c 2) throw new EmptyTaskException();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" commandDetails \u003d splitCommand[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" String task;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" String[] details;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" switch(headCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" index \u003d Integer.parseInt(commandDetails) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" System.out.println(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" index \u003d Integer.parseInt(commandDetails) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" System.out.println(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" return new MarkCommand(index, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" index \u003d Integer.parseInt(commandDetails) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" System.out.println(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" return new MarkCommand(index, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" task \u003d commandDetails;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" Todo todo \u003d new Todo(task, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" return new AddCommand(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" details \u003d commandDetails.split(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" if (details.length \u003c 2) throw new NoDueDateException();","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" task \u003d details[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" String duedate \u003d details[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" Deadline deadline \u003d new Deadline(task, duedate, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" return new AddCommand(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" details \u003d commandDetails.split(\" /from \");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" if(details.length \u003c 2) throw new NoEventStartException();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" task \u003d details[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" String[] timeDetails \u003d details[1].split(\" /to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" if(timeDetails.length \u003c 2) throw new NoEventEndException();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" String start \u003d timeDetails[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" String end \u003d timeDetails[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" Event event \u003d new Event(task, start, end, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" return new AddCommand(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" throw new DukeException(\" TWEET!!! No such command\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":72}},{"path":"src/main/java/duke/main/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.main;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" public ArrayList\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" File f \u003d new File(this.filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" if (!f.exists()) f.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" Scanner sc \u003d new Scanner(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" String[] taskDetails \u003d sc.nextLine().split(\" , \");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" switch (taskDetails[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" task \u003d new Todo(taskDetails[2], taskDetails[1].equals(\"1\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" task \u003d new Deadline(taskDetails[2], taskDetails[3], taskDetails[1].equals(\"1\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" task \u003d new Event(taskDetails[2], taskDetails[3], taskDetails[4], taskDetails[1].equals(\"1\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" task \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" public void append(Task task) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" FileWriter fw \u003d new FileWriter(this.filePath, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" fw.write(task.getTaskFileString() + System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" public void update(List\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" tasks.forEach(task -\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" fw.write(task.getTaskFileString() + System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":66}},{"path":"src/main/java/duke/main/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.main;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" public void remove(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" tasks.remove(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" public Task getTaskAtIndex(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":38}},{"path":"src/main/java/duke/main/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.main;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" private Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" // Constants","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" private String DIVIDER \u003d \" ____________________________________________________________\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" private String LOGO \u003d \" (• \u003e (• \u003e (• \u003e (• \u003e (• \u003e (• \u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" + \" /)) /)) /)) /)) /)) /))\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" + \" `` `` `` `` `` ``\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" private String HELP \u003d \" IMPORTANT NOTES:\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" + \" Todo: todo \u003ctask\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" + \" Deadline: deadline \u003cdeadline\u003e /by \u003cduedate\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" + \" Event: event \u003cevent\u003e /from \u003cstart\u003e /to \u003cend\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" + \" Datetime format: \\\"dd/MM/yyyy HH:mm\\\"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" private String GREET \u003d \" Hello! I\u0027m Birdy\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" + \" chirp chirp! How can I help?\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" private String PARTING \u003d \" chirp! See you around!\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" return sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" public void showError(String error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" String output \u003d DIVIDER + \" \" + error + DIVIDER;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" String output \u003d DIVIDER + \" chirp! cannot load tasks from file\\n\" + DIVIDER;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" public void showParting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" String output \u003d DIVIDER + PARTING + DIVIDER;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" String output \u003d LOGO + DIVIDER + HELP + DIVIDER + GREET;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" public void showHelp() {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" String output \u003d DIVIDER + HELP + DIVIDER;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" public void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" public void showList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" tasks.forEach(task -\u003e System.out.println(\" \" + task.toString()));","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" public void showAddSuccess(String task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER + \" chirp! I\u0027ve added this task:\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" + String.format(\" %s\\n\", task)","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" + String.format(\" Now you have %d tasks in the list\\n\", size)","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" + DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" public void showDeleteSuccess(String task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER + \" chirp! chirp! duke.task.Task right out the window!\\n\" + DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" public void showMark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER + \" chirp! I\u0027ve mark this task as done:\\n\" + String.format(\" %s\\n\", task.toString()) + DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" public void showUnmark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER + \" chirp! I\u0027ve mark this task as not done yet:\\n\" + String.format(\" %s\\n\", task.toString()) + DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":73}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" private LocalDateTime duedate;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" public Deadline(String task, String duedate, boolean done) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" super(task, done);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" this.duedate \u003d stringToDateObj(duedate);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" private LocalDateTime stringToDateObj(String dateString) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" return LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" return \"[D]\" + super.toString() + String.format(\" (by: %s)\", this.duedate.format(formatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" public String getTaskFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" return \"D\" + \" , \" + super.getTaskFileString() + \" , \" + this.duedate.format(formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" public void printStart() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" System.out.println(\" This deadline has no start time\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" public void printEnd() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" System.out.println(\" This deadline has no start time\");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" public void printDueDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" System.out.println(\" This deadline is due: \" + this.duedate.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wesho1107":42}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public Event(String task, String start, String end, boolean done) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" super(task, done);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" this.start \u003d stringToDateObj(start);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" this.end \u003d stringToDateObj(end);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" private LocalDateTime stringToDateObj(String dateString) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" return LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" return \"[E]\" + super.toString() + String.format(\" (from: %s to: %s)\", this.start.format(formatter), this.end.format(formatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" public String getTaskFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" return \"E\" + \" , \" + super.getTaskFileString() + \" , \" + this.start.format(formatter) + \" , \" + this.end.format(formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" public void printStart() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" System.out.println(\" The event starts at: \" + this.start.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" public void printEnd() {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" System.out.println(\" The event is until: \" + this.end.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" public void printDueDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" System.out.println(\" This event has no due date\");","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wesho1107":44}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" private String task;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" private boolean done \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" public Task(String task, boolean done) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" String message;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" if (this.done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" message \u003d \"[X] \" + this.task;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" message \u003d \"[ ] \" + this.task;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" return message;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" public void markTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" public String getTaskFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" return (done ? \"1\" : \"0\") + \" , \" + this.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" public void printStart() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" System.out.println(\" This task has no start time\");","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" public void printEnd() {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" System.out.println(\" This task has no end time\");","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" public void printDueDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" System.out.println(\" This task has no due date\");","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wesho1107":45}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public Todo(String task, boolean done) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(task, done);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" public String getTaskFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" return \"T\" + \" , \" + super.getTaskFileString();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" public void printStart() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" System.out.println(\" This todo has no start time\");","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" public void printEnd() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" System.out.println(\" This todo has no start time\");","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" public void printDueDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" System.out.println(\" This todo has no due date\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wesho1107":32}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"todo get eggs","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"deadline make cake /by this Friday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"event birthday /from next Saturday /to next Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"todo get candles","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wesho1107":10}},{"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":"wesho1107"},"content":"java -classpath ..\\bin duke.main.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"-":20,"wesho1107":1}},{"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":"wesho1107"},"content":"if ! javac -cp ../src/main/java/ipduke -Xlint:none -d ../bin ../src/main/java/ipduke/*.java","lastModifiedDate":"2023-08-24"},{"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":"wesho1107"},"content":"java -classpath ../bin ipduke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":31,"wesho1107":3}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"# duke.main.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"3. After that, locate the `src/main/java/duke.main.Duke.java` file, right-click it, and choose `Run duke.main.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"wesho1107":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" mainClass.set(\"duke.main.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"wesho1107":1}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.main.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" super(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" storage.append(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" ui.showAddSuccess(task.toString(), tasks.getTasks().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":20}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.main.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" public Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public Command(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws IOException, InvalidTaskNumberException {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":18}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.main.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public DeleteCommand(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" super(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" super(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws IOException, InvalidTaskNumberException {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" if (index \u003e\u003d tasks.getSize() || index \u003c 0) throw new InvalidTaskNumberException();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" Task task \u003d tasks.getTaskAtIndex(this.index);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" tasks.remove(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" storage.update(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" ui.showDeleteSuccess(task.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":27}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.main.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" public ExitCommand(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" super(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" ui.showParting();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":22}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.main.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" public ListCommand(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" super(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" ui.showList(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":17}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.main.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" private boolean isMark;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" private int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" public MarkCommand(int index, boolean isMark) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" super(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" this.isMark \u003d isMark;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws IOException, InvalidTaskNumberException {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" if (this.index \u003e\u003d tasks.getSize() || this.index \u003c 0) throw new InvalidTaskNumberException();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" Task task \u003d tasks.getTaskAtIndex(this.index);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" if (isMark) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" task.markTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" ui.showMark(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" task.unmarkTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" ui.showUnmark(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" storage.update(tasks.getTasks());","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":30}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class DukeException extends Throwable {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" public DukeException(String error) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" super(\"\\n\" + error);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wesho1107":8}},{"path":"src/main/java/duke/exception/EmptyDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class EmptyDeadlineException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public EmptyDeadlineException(String error) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(error);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wesho1107":7}},{"path":"src/main/java/duke/exception/EmptyEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class EmptyEventException extends DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public EmptyEventException(String error) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(error);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wesho1107":7}},{"path":"src/main/java/duke/exception/EmptyTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class EmptyTaskException extends DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public EmptyTaskException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(\" TWEET!!! A task cannot be empty\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":7}},{"path":"src/main/java/duke/exception/EmptyTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class EmptyTodoException extends DukeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public EmptyTodoException(String error) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(error);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wesho1107":7}},{"path":"src/main/java/duke/exception/InvalidTaskNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class InvalidTaskNumberException extends DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public InvalidTaskNumberException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(\" TWEET!!! I can\u0027t find the task you are looking for!\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":7}},{"path":"src/main/java/duke/exception/NoDueDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class NoDueDateException extends DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public NoDueDateException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(\" TWEET!!! A deadline cannot have no due date\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":7}},{"path":"src/main/java/duke/exception/NoEventEndException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class NoEventEndException extends DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" public NoEventEndException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" super(\" TWEET!!! An event cannot have no end timing\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":8}},{"path":"src/main/java/duke/exception/NoEventStartException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class NoEventStartException extends DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" public NoEventStartException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" super(\" TWEET!!! An event cannot have no start timing\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":8}},{"path":"src/main/java/duke/main/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.main;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.command.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" new Duke(\"./tasks.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"wesho1107":44,"-":2}},{"path":"src/main/java/duke/main/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.main;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.command.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" Command c;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" String[] splitCommand \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" String headCommand \u003d splitCommand[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" String commandDetails;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" if (headCommand.equals(\"bye\")) return new ExitCommand(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" if (headCommand.equals(\"list\")) return new ListCommand(null);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" if (splitCommand.length \u003c 2) throw new EmptyTaskException();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" commandDetails \u003d splitCommand[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" String task;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" String[] details;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" int index;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" switch(headCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" case \"delete\":","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" index \u003d Integer.parseInt(commandDetails) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" System.out.println(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" case \"mark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" index \u003d Integer.parseInt(commandDetails) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" System.out.println(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" return new MarkCommand(index, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" index \u003d Integer.parseInt(commandDetails) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" System.out.println(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" return new MarkCommand(index, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" task \u003d commandDetails;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" Todo todo \u003d new Todo(task, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" return new AddCommand(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" details \u003d commandDetails.split(\" /by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" if (details.length \u003c 2) throw new NoDueDateException();","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" task \u003d details[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" String duedate \u003d details[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" Deadline deadline \u003d new Deadline(task, duedate, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" return new AddCommand(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" details \u003d commandDetails.split(\" /from \");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" if(details.length \u003c 2) throw new NoEventStartException();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" task \u003d details[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" String[] timeDetails \u003d details[1].split(\" /to \");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" if(timeDetails.length \u003c 2) throw new NoEventEndException();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" String start \u003d timeDetails[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" String end \u003d timeDetails[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" Event event \u003d new Event(task, start, end, false);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" return new AddCommand(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" throw new DukeException(\" TWEET!!! No such command\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":72}},{"path":"src/main/java/duke/main/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.main;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" public ArrayList\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" File f \u003d new File(this.filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" if (!f.exists()) f.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" Scanner sc \u003d new Scanner(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" Task task;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" String[] taskDetails \u003d sc.nextLine().split(\" , \");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" switch (taskDetails[0]) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" task \u003d new Todo(taskDetails[2], taskDetails[1].equals(\"1\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" task \u003d new Deadline(taskDetails[2], taskDetails[3], taskDetails[1].equals(\"1\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" task \u003d new Event(taskDetails[2], taskDetails[3], taskDetails[4], taskDetails[1].equals(\"1\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" task \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" public void append(Task task) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" FileWriter fw \u003d new FileWriter(this.filePath, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" fw.write(task.getTaskFileString() + System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" public void update(List\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" tasks.forEach(task -\u003e {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" fw.write(task.getTaskFileString() + System.lineSeparator());","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" });","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":66}},{"path":"src/main/java/duke/main/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.main;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" public void remove(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" tasks.remove(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" return tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" public Task getTaskAtIndex(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":38}},{"path":"src/main/java/duke/main/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.main;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" private Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" // Constants","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" private String DIVIDER \u003d \" ____________________________________________________________\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" private String LOGO \u003d \" (• \u003e (• \u003e (• \u003e (• \u003e (• \u003e (• \u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" + \" /)) /)) /)) /)) /)) /))\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" + \" `` `` `` `` `` ``\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" private String HELP \u003d \" IMPORTANT NOTES:\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" + \" Todo: todo \u003ctask\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" + \" Deadline: deadline \u003cdeadline\u003e /by \u003cduedate\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" + \" Event: event \u003cevent\u003e /from \u003cstart\u003e /to \u003cend\u003e\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" + \" Datetime format: \\\"dd/MM/yyyy HH:mm\\\"\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" private String GREET \u003d \" Hello! I\u0027m Birdy\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" + \" chirp chirp! How can I help?\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" private String PARTING \u003d \" chirp! See you around!\\n\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" return sc.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" public void showError(String error) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" String output \u003d DIVIDER + \" \" + error + DIVIDER;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" String output \u003d DIVIDER + \" chirp! cannot load tasks from file\\n\" + DIVIDER;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wesho1107"},"content":" public void showParting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wesho1107"},"content":" String output \u003d DIVIDER + PARTING + DIVIDER;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wesho1107"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wesho1107"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"wesho1107"},"content":" String output \u003d LOGO + DIVIDER + HELP + DIVIDER + GREET;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"wesho1107"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"wesho1107"},"content":" public void showHelp() {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"wesho1107"},"content":" String output \u003d DIVIDER + HELP + DIVIDER;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"wesho1107"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"wesho1107"},"content":" public void showLine() {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"wesho1107"},"content":" public void showList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"wesho1107"},"content":" tasks.forEach(task -\u003e System.out.println(\" \" + task.toString()));","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"wesho1107"},"content":" public void showAddSuccess(String task, int size) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER + \" chirp! I\u0027ve added this task:\\n\"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"wesho1107"},"content":" + String.format(\" %s\\n\", task)","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"wesho1107"},"content":" + String.format(\" Now you have %d tasks in the list\\n\", size)","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"wesho1107"},"content":" + DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"wesho1107"},"content":" public void showDeleteSuccess(String task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER + \" chirp! chirp! duke.task.Task right out the window!\\n\" + DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"wesho1107"},"content":" public void showMark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER + \" chirp! I\u0027ve mark this task as done:\\n\" + String.format(\" %s\\n\", task.toString()) + DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"wesho1107"},"content":" public void showUnmark(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"wesho1107"},"content":" System.out.println(DIVIDER + \" chirp! I\u0027ve mark this task as not done yet:\\n\" + String.format(\" %s\\n\", task.toString()) + DIVIDER);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wesho1107":73}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" private LocalDateTime duedate;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" public Deadline(String task, String duedate, boolean done) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" super(task, done);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" this.duedate \u003d stringToDateObj(duedate);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" private LocalDateTime stringToDateObj(String dateString) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" return LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" return \"[D]\" + super.toString() + String.format(\" (by: %s)\", this.duedate.format(formatter));","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" public String getTaskFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" return \"D\" + \" , \" + super.getTaskFileString() + \" , \" + this.duedate.format(formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wesho1107":27}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm\");","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" private LocalDateTime start;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" private LocalDateTime end;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public Event(String task, String start, String end, boolean done) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" super(task, done);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" this.start \u003d stringToDateObj(start);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" this.end \u003d stringToDateObj(end);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" private LocalDateTime stringToDateObj(String dateString) {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" return LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" return \"[E]\" + super.toString() + String.format(\" (from: %s, to: %s)\", this.start.format(formatter), this.end.format(formatter));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":" public String getTaskFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" return \"E\" + \" , \" + super.getTaskFileString() + \" , \" + this.start.format(formatter) + \" , \" + this.end.format(formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wesho1107":29}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" private String task;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" private boolean done;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":" public Task(String task, boolean done) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" String message;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" if (this.done) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" message \u003d \"[X] \" + this.task;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" message \u003d \"[ ] \" + this.task;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" return message;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" public boolean markTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wesho1107"},"content":" return this.done;","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wesho1107"},"content":" public boolean unmarkTask() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"wesho1107"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wesho1107"},"content":" return this.done;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wesho1107"},"content":" public String getTaskFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wesho1107"},"content":" return (done ? \"1\" : \"0\") + \" , \" + this.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wesho1107":35}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":" public Todo(String task, boolean done) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":" super(task, done);","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" public String getTaskFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" return \"T\" + \" , \" + super.getTaskFileString();","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wesho1107":17}},{"path":"src/test/java/duke/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" Deadline deadline \u003d new Deadline(\"task\", \"11/11/2002 11:11\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public void testMarkDeadline() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" assertEquals(true, deadline.markTask(), \"Marking deadline should work\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" public void testUnmarkTodo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" assertEquals(false, deadline.markTask(), \"Unmarking deadline should work\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" public void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" assertEquals(\"[D][ ] task (by: 11/11/2002 11:00)\", deadline.toString(), \"deadline.toString() should work\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wesho1107":23}},{"path":"src/test/java/duke/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"public class EventTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" Event event \u003d new Event(\"task\", \"11/11/2002 11:11\", \"11/11/2002 22:22\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public void testMarkDeadline() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" assertEquals(true, event.markTask(), \"Marking event should work\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" public void testUnmarkTodo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" assertEquals(false, event.markTask(), \"Unmarking event should work\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" public void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" assertEquals(\"[E][ ] task (from: 11/11/2002 11:11, to: 11/11/2002 22:22)\", event.toString(), \"event.toString() should work\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wesho1107":23}},{"path":"src/test/java/duke/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":" Todo todo \u003d new Todo(\"task\", false);","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":" public void testMarkTodo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wesho1107"},"content":" assertEquals(true, todo.markTask(), \"Marking todo should work\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wesho1107"},"content":" public void testUnmarkTodo() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wesho1107"},"content":" assertEquals(false, todo.unmarkTask(), \"Unmarking todo should work\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wesho1107"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wesho1107"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wesho1107"},"content":" public void testToString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wesho1107"},"content":" assertEquals(\"[T][ ] task\", todo.toString(), \"todo.toString() should work\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wesho1107"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wesho1107"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wesho1107":23}},{"path":"tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"D , 0 , dead , 11/11/2002 11:00","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"T , 0 , Todo","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"E , 0 , task , 11/11/2002 11:11 , 11/11/2002 22:22","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wesho1107":3}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wesho1107"},"content":"todo get eggs","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wesho1107"},"content":"deadline make cake /by this Friday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wesho1107"},"content":"event birthday /from next Saturday /to next Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wesho1107"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wesho1107"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wesho1107"},"content":"todo get candles","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wesho1107"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wesho1107"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wesho1107"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wesho1107"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wesho1107":10}},{"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":"wesho1107"},"content":"java -classpath ..\\bin duke.main.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-31"},{"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":{"-":20,"wesho1107":1}},{"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":"wesho1107"},"content":"if ! javac -cp ../src/main/java/ipduke -Xlint:none -d ../bin ../src/main/java/ipduke/*.java","lastModifiedDate":"2023-08-24"},{"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":"wesho1107"},"content":"java -classpath ../bin ipduke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"wesho1107"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":31,"wesho1107":3}}] diff --git a/wesho1107_ip_master/commits.json b/wesho1107_ip_master/commits.json index bb57fc1b..c78017ac 100644 --- a/wesho1107_ip_master/commits.json +++ b/wesho1107_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"wesho1107":[{"date":"2023-08-23","commitResults":[{"hash":"3b1d0065c6014fd70ebc11c423a07f0671a4f21c","isMergeCommit":false,"messageTitle":"greet skeletal","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"25de10bef57e88f45213fc37d68ec76a5b343ff7","isMergeCommit":false,"messageTitle":"added echo method and abstraction","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":17}}},{"hash":"f6e71eeff62f1129ebaec0efd3b55afb05177d10","isMergeCommit":false,"messageTitle":"added new list method, use ArrayList","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"ae1edb5a3fb947505d3f23278cb875718baec454","isMergeCommit":false,"messageTitle":"new Task class in package, mark and unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":5}}},{"hash":"ab5b34ceeab5510dd51abe4ddb2c527e1df1a67c","isMergeCommit":false,"messageTitle":"new task classes, overriding tostring","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":21}}}]},{"date":"2023-08-24","commitResults":[{"hash":"86d1229c1720ddfd737fba99b69b59c84936a9c9","isMergeCommit":false,"messageTitle":"new classes for Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":42},"sh":{"insertions":3,"deletions":7}}},{"hash":"ce9990ef3b7a59f84a02124856e7eb3bef778ff7","isMergeCommit":false,"messageTitle":"automated test input/output","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":26,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"f7f0aaacec0e6f440df27844787f8a0b3c949f32","isMergeCommit":false,"messageTitle":"Delete diff_report.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":16}}},{"hash":"91b3d9167ab996e8d70dee708cfdee9c4f60bc8c","isMergeCommit":false,"messageTitle":"added delete case","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":4}}},{"hash":"b327ee21729cad592c1010d80e7664f782836a67","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 f github.com:wesho1107/ip","messageBody":"merge\n","fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"15e8fda02428ecc904994981be3fd4a65906ae0f","isMergeCommit":false,"messageTitle":"add Read and Write functions","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":77}}},{"hash":"4f9502fc098aab22645d5ba6f65d2306e3b7e434","isMergeCommit":false,"messageTitle":"add rewrite for Delete and Mark","messageBody":"","tags":["Level-7-continued"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"557a4564d563cdbfcbfa04cf12cbf94aafcff18a","isMergeCommit":false,"messageTitle":"add LocalDateTime and functions","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":18}}}]},{"date":"2023-08-31","commitResults":[{"hash":"ca7bdf2fcabe3379e9b743bbd2cf162ae43d9337","isMergeCommit":false,"messageTitle":"add DukeExceptions and Commands, OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":412,"deletions":87}}},{"hash":"e1442b61dc36238285be2bd6e4d8b74f3d1f49b6","isMergeCommit":false,"messageTitle":"add packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":12}}},{"hash":"48f9b4fe0bfc6033cce437baf141902df799e99a","isMergeCommit":false,"messageTitle":"add README and tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":183},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"3f0642f26471213bb7e1f9a23fb81bdfc73a3c2e","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"add gradle support\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"wesho1107":{"java":656,"md":2,"fxml":0,"sh":3,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"wesho1107":47107.176},"authorDisplayNameMap":{"wesho1107":"CS2103T-T15-1 HO J..HENG"}} +{"authorDailyContributionsMap":{"wesho1107":[{"date":"2023-08-23","commitResults":[{"hash":"3b1d0065c6014fd70ebc11c423a07f0671a4f21c","isMergeCommit":false,"messageTitle":"greet skeletal","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"25de10bef57e88f45213fc37d68ec76a5b343ff7","isMergeCommit":false,"messageTitle":"added echo method and abstraction","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":17}}},{"hash":"f6e71eeff62f1129ebaec0efd3b55afb05177d10","isMergeCommit":false,"messageTitle":"added new list method, use ArrayList","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"ae1edb5a3fb947505d3f23278cb875718baec454","isMergeCommit":false,"messageTitle":"new Task class in package, mark and unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":5}}},{"hash":"ab5b34ceeab5510dd51abe4ddb2c527e1df1a67c","isMergeCommit":false,"messageTitle":"new task classes, overriding tostring","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":21}}}]},{"date":"2023-08-24","commitResults":[{"hash":"86d1229c1720ddfd737fba99b69b59c84936a9c9","isMergeCommit":false,"messageTitle":"new classes for Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":42},"sh":{"insertions":3,"deletions":7}}},{"hash":"ce9990ef3b7a59f84a02124856e7eb3bef778ff7","isMergeCommit":false,"messageTitle":"automated test input/output","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":26,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"f7f0aaacec0e6f440df27844787f8a0b3c949f32","isMergeCommit":false,"messageTitle":"Delete diff_report.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":16}}},{"hash":"91b3d9167ab996e8d70dee708cfdee9c4f60bc8c","isMergeCommit":false,"messageTitle":"added delete case","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":4}}},{"hash":"b327ee21729cad592c1010d80e7664f782836a67","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 f github.com:wesho1107/ip","messageBody":"merge\n","fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"15e8fda02428ecc904994981be3fd4a65906ae0f","isMergeCommit":false,"messageTitle":"add Read and Write functions","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":77}}},{"hash":"4f9502fc098aab22645d5ba6f65d2306e3b7e434","isMergeCommit":false,"messageTitle":"add rewrite for Delete and Mark","messageBody":"","tags":["Level-7-continued"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"557a4564d563cdbfcbfa04cf12cbf94aafcff18a","isMergeCommit":false,"messageTitle":"add LocalDateTime and functions","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":18}}}]},{"date":"2023-08-31","commitResults":[{"hash":"ca7bdf2fcabe3379e9b743bbd2cf162ae43d9337","isMergeCommit":false,"messageTitle":"add DukeExceptions and Commands, OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":412,"deletions":87}}},{"hash":"e1442b61dc36238285be2bd6e4d8b74f3d1f49b6","isMergeCommit":false,"messageTitle":"add packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":12}}},{"hash":"48f9b4fe0bfc6033cce437baf141902df799e99a","isMergeCommit":false,"messageTitle":"add README and tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":183},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"3f0642f26471213bb7e1f9a23fb81bdfc73a3c2e","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"add gradle support\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"98a02317b80bd01fce3d8d96656e8e5a3da5ea8a","isMergeCommit":false,"messageTitle":"change build.gradle mainClass","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"eac6da32ca541d0ae179b2fa36e5db64d01ac307","isMergeCommit":false,"messageTitle":"add tests for task classes","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":75,"deletions":61}}}]}]},"authorFileTypeContributionMap":{"wesho1107":{"java":670,"md":2,"fxml":0,"sh":3,"bat":1,"gradle":1,"txt":13}},"authorContributionVariance":{"wesho1107":46283.734},"authorDisplayNameMap":{"wesho1107":"CS2103T-T15-1 HO J..HENG"}} diff --git a/wjacobw_ip_master/authorship.json b/wjacobw_ip_master/authorship.json index 010c115b..92cffd72 100644 --- a/wjacobw_ip_master/authorship.json +++ b/wjacobw_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"newfile.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"some words...","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wjacobw":1}},{"path":"newnewnewfile.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"newnewnewfile","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wjacobw":1}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":" protected String by;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":" super(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wjacobw"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"wjacobw"},"content":" public String getBy() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wjacobw"},"content":" return this.by;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wjacobw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"wjacobw"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wjacobw"},"content":" return \"[D]\" + super.toString() + \"(by: \" + by + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"wjacobw"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wjacobw":17}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":"import java.util.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":"import java.nio.channels.FileChannel;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wjacobw"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wjacobw"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"wjacobw"},"content":" private static StringBuilder tempData \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wjacobw"},"content":" public static boolean isNumeric(String str) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"wjacobw"},"content":" Double.parseDouble(str);","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"wjacobw"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wjacobw"},"content":" } catch(NumberFormatException e){","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"wjacobw"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"wjacobw"},"content":" private static List\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wjacobw"},"content":" private static void refreshData() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wjacobw"},"content":" String zenithData \u003d \"src/main/java/data/zenith.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wjacobw"},"content":" FileChannel fileChannel \u003d FileChannel.open(Paths.get(zenithData),","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wjacobw"},"content":" StandardOpenOption.WRITE);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wjacobw"},"content":" fileChannel.truncate(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wjacobw"},"content":" fileChannel.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wjacobw"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wjacobw"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wjacobw"},"content":" for (Task task : list) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wjacobw"},"content":" String done \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wjacobw"},"content":" String by \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wjacobw"},"content":" String from \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wjacobw"},"content":" String to \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wjacobw"},"content":" String description \u003d task.getDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wjacobw"},"content":" String type \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"wjacobw"},"content":" if (task.isDone \u003d\u003d true) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"wjacobw"},"content":" done \u003d \" /1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wjacobw"},"content":" }// Perform your task processing here","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"wjacobw"},"content":" else {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"wjacobw"},"content":" done \u003d \" /0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"wjacobw"},"content":" if (task instanceof Event) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"wjacobw"},"content":" from \u003d \"/from \" + ((Event) task).getFrom();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"wjacobw"},"content":" to \u003d \"/to \" + ((Event) task).getBy();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"wjacobw"},"content":" type \u003d \"event \";","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"wjacobw"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"wjacobw"},"content":" by \u003d \"/by \" + ((Deadline) task).getBy();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"wjacobw"},"content":" type \u003d \"deadline \";","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"wjacobw"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"wjacobw"},"content":" type \u003d \"todo \";","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"wjacobw"},"content":" String string \u003d type + description + from + by + to + done;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"wjacobw"},"content":" appendToFile(zenithData, string);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"wjacobw"},"content":" catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"wjacobw"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"wjacobw"},"content":" public void List() {","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"wjacobw"},"content":" int index \u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"wjacobw"},"content":" for (Task thing: list) {","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"wjacobw"},"content":" System.out.println(index +\". \" + thing.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"wjacobw"},"content":" index++;","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"wjacobw"},"content":" private static void loadFileStringContents(String filePath) throws FileNotFoundException{","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"wjacobw"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"wjacobw"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"wjacobw"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"wjacobw"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"wjacobw"},"content":" StringToArray(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"wjacobw"},"content":" s.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"File not found: \" + filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"wjacobw"},"content":" // Handle the exception here, such as creating the file if needed","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"wjacobw"},"content":" private static void StringToArray(String str) { // might need to add corrupted file exception","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"wjacobw"},"content":" String arr[] \u003d str.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"wjacobw"},"content":" if (arr[0].equals(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"wjacobw"},"content":" String firstFrom \u003d arr[1].substring(arr[1].indexOf(\"/from\") + 6);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"wjacobw"},"content":" String secondFrom \u003d firstFrom.substring(0, firstFrom.indexOf(\"/to\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"wjacobw"},"content":" String firstTo \u003d arr[1].substring(arr[1].indexOf(\"/to\")+ 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"wjacobw"},"content":" String secondTo \u003d firstTo.substring(0, firstTo.indexOf(\"/\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"wjacobw"},"content":" String content \u003d arr[1].substring(0, arr[1].indexOf(\"/from \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"wjacobw"},"content":" String done \u003d firstTo.substring(firstTo.indexOf(\"/\" ));","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"wjacobw"},"content":" if (done \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"wjacobw"},"content":" Event event \u003d new Event(content, secondFrom, secondTo);","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"wjacobw"},"content":" event.finish();","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"wjacobw"},"content":" list.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"wjacobw"},"content":" } else if (done \u003d\u003d \"0\"){","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"wjacobw"},"content":" Event event \u003d new Event(content, secondFrom, secondTo);","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"wjacobw"},"content":" list.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"wjacobw"},"content":" else if (arr[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"wjacobw"},"content":" String firstBy \u003d arr[1].substring(arr[1].indexOf(\"/by\") + 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"wjacobw"},"content":" String secondBy \u003d firstBy.substring(0, firstBy.indexOf(\"/\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"wjacobw"},"content":" String done \u003d firstBy.substring(firstBy.indexOf(\"/\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"wjacobw"},"content":" Deadline deadline \u003d new Deadline(arr[1].substring(0, arr[1].indexOf(\"/by \")), secondBy);","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"wjacobw"},"content":" if (done \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"wjacobw"},"content":" deadline.finish();","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"wjacobw"},"content":" list.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"wjacobw"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"wjacobw"},"content":" list.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"wjacobw"},"content":" else if (arr[0].equals(\"todo\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"wjacobw"},"content":" String firstTodo \u003d arr[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"wjacobw"},"content":" String secondToDo \u003d firstTodo.substring(0, firstTodo.indexOf(\"/\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"wjacobw"},"content":" String done \u003d firstTodo.substring(firstTodo.indexOf(\"/\") + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"wjacobw"},"content":" Todo todo \u003d new Todo(secondToDo);","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"wjacobw"},"content":" if (done \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"wjacobw"},"content":" todo.finish();","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"wjacobw"},"content":" list.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"wjacobw"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"wjacobw"},"content":" list.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"wjacobw"},"content":" } catch (ArrayIndexOutOfBoundsException e){","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Please specify the content of the todo list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"wjacobw"},"content":" private static void appendToFile(String filePath, String textToAppend) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"wjacobw"},"content":" FileWriter fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"wjacobw"},"content":" fw.write(\"\\n\" + textToAppend);","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"wjacobw"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"wjacobw"},"content":" public void Answer() throws Exception{ // just a reader for additional files inputted by the users.","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"wjacobw"},"content":" // my plan is to make sure every line inputted by the user, it is saved to the zenith.txt file directly.","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"wjacobw"},"content":" // But to show the users the list, need to first load the data to a class storage containing the copied","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"wjacobw"},"content":" // data of zenith.txt","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"wjacobw"},"content":" String zenithData \u003d \"src/main/java/data/zenith.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"wjacobw"},"content":" BufferedReader reader \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2023-08-27"},{"lineNumber":173,"author":{"gitId":"wjacobw"},"content":" String str \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":174,"author":{"gitId":"wjacobw"},"content":" String arr[] \u003d str.split(\" \", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":175,"author":{"gitId":"wjacobw"},"content":" String onetwo \u003d list.size() \u003e 1? \" task\": \" tasks\";","lastModifiedDate":"2023-08-27"},{"lineNumber":176,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":177,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":178,"author":{"gitId":"wjacobw"},"content":" if (str.equals(\"bye\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":179,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":180,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":181,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":182,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":183,"author":{"gitId":"wjacobw"},"content":" else if (str.equals(\"list\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":184,"author":{"gitId":"wjacobw"},"content":" List();","lastModifiedDate":"2023-08-27"},{"lineNumber":185,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":186,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":187,"author":{"gitId":"wjacobw"},"content":" } else if (arr[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":188,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":189,"author":{"gitId":"wjacobw"},"content":" list.get(Integer.parseInt(arr[1]) - 1).getDescription();","lastModifiedDate":"2023-08-27"},{"lineNumber":190,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":191,"author":{"gitId":"wjacobw"},"content":" System.out.println(list.get(Integer.parseInt(arr[1]) - 1).toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":192,"author":{"gitId":"wjacobw"},"content":" list.remove(Integer.parseInt(arr[1]) - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":193,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":194,"author":{"gitId":"wjacobw"},"content":" refreshData();","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":196,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":197,"author":{"gitId":"wjacobw"},"content":" catch(NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":198,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"to pick which task to do, please input an integer\");","lastModifiedDate":"2023-08-27"},{"lineNumber":199,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":200,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":201,"author":{"gitId":"wjacobw"},"content":" catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":202,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"currently, you task list does not the task with the index you just inputted\");","lastModifiedDate":"2023-08-27"},{"lineNumber":203,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":204,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":205,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":206,"author":{"gitId":"wjacobw"},"content":" else if (arr[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":207,"author":{"gitId":"wjacobw"},"content":" //arr[1].length() \u003d\u003d 1 \u0026\u0026 isNumeric(arr[1])","lastModifiedDate":"2023-08-27"},{"lineNumber":208,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":209,"author":{"gitId":"wjacobw"},"content":" list.get(Integer.parseInt(arr[1]) - 1).getDescription();","lastModifiedDate":"2023-08-27"},{"lineNumber":210,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \");","lastModifiedDate":"2023-08-27"},{"lineNumber":211,"author":{"gitId":"wjacobw"},"content":" System.out.println(\" [X] \" + list.get(Integer.parseInt(arr[1]) - 1).getDescription());","lastModifiedDate":"2023-08-27"},{"lineNumber":212,"author":{"gitId":"wjacobw"},"content":" list.get(Integer.parseInt(arr[1]) - 1).finish();","lastModifiedDate":"2023-08-27"},{"lineNumber":213,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":214,"author":{"gitId":"wjacobw"},"content":" refreshData();","lastModifiedDate":"2023-08-31"},{"lineNumber":215,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":216,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":217,"author":{"gitId":"wjacobw"},"content":" catch(NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":218,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"to pick which task to do, please input an integer\");","lastModifiedDate":"2023-08-27"},{"lineNumber":219,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":220,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":221,"author":{"gitId":"wjacobw"},"content":" catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":222,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"currently, you task list does not the task with the index you just inputted\");","lastModifiedDate":"2023-08-27"},{"lineNumber":223,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":224,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":225,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":226,"author":{"gitId":"wjacobw"},"content":" } else if (arr[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":227,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":228,"author":{"gitId":"wjacobw"},"content":" list.get(Integer.parseInt(arr[1]) - 1).getDescription();","lastModifiedDate":"2023-08-27"},{"lineNumber":229,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \");","lastModifiedDate":"2023-08-27"},{"lineNumber":230,"author":{"gitId":"wjacobw"},"content":" System.out.println(\" [] \" + list.get(Integer.parseInt(arr[1]) - 1).getDescription());","lastModifiedDate":"2023-08-27"},{"lineNumber":231,"author":{"gitId":"wjacobw"},"content":" list.get(Integer.parseInt(arr[1]) - 1).unfinish();","lastModifiedDate":"2023-08-27"},{"lineNumber":232,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":233,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":234,"author":{"gitId":"wjacobw"},"content":" refreshData();","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":236,"author":{"gitId":"wjacobw"},"content":" catch(NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":237,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"to pick which task to undo, please input an integer\");","lastModifiedDate":"2023-08-27"},{"lineNumber":238,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":239,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":240,"author":{"gitId":"wjacobw"},"content":" catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":241,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"currently, you task list does not the task with the index you just inputted\");","lastModifiedDate":"2023-08-27"},{"lineNumber":242,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":243,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":244,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":245,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":246,"author":{"gitId":"wjacobw"},"content":" } else if (arr[0].equals(\"event\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":247,"author":{"gitId":"wjacobw"},"content":" String firstFrom \u003d arr[1].substring(arr[1].indexOf(\"/from\") + 6);","lastModifiedDate":"2023-08-27"},{"lineNumber":248,"author":{"gitId":"wjacobw"},"content":" System.out.println(firstFrom);","lastModifiedDate":"2023-08-27"},{"lineNumber":249,"author":{"gitId":"wjacobw"},"content":" String secondFrom \u003d firstFrom.substring(0, firstFrom.indexOf(\"/to\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":250,"author":{"gitId":"wjacobw"},"content":" String to \u003d arr[1].substring(arr[1].indexOf(\"/to\")+ 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":251,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":252,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":253,"author":{"gitId":"wjacobw"},"content":" String content \u003d arr[1].substring(0, arr[1].indexOf(\"/from \"));","lastModifiedDate":"2023-08-27"},{"lineNumber":254,"author":{"gitId":"wjacobw"},"content":" Event event \u003d new Event(content, secondFrom, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":255,"author":{"gitId":"wjacobw"},"content":" System.out.println(event);","lastModifiedDate":"2023-08-27"},{"lineNumber":256,"author":{"gitId":"wjacobw"},"content":" list.add(event);","lastModifiedDate":"2023-08-27"},{"lineNumber":257,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":258,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":259,"author":{"gitId":"wjacobw"},"content":" appendToFile(zenithData, str);","lastModifiedDate":"2023-08-31"},{"lineNumber":260,"author":{"gitId":"wjacobw"},"content":" refreshData();","lastModifiedDate":"2023-08-31"},{"lineNumber":261,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":262,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":263,"author":{"gitId":"wjacobw"},"content":" } else if (arr[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":264,"author":{"gitId":"wjacobw"},"content":" String by \u003d arr[1].substring(arr[1].indexOf(\"/by\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":265,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":266,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":267,"author":{"gitId":"wjacobw"},"content":" Deadline deadline \u003d new Deadline(arr[1].substring(0, arr[1].indexOf(\"/by \")), by);","lastModifiedDate":"2023-08-27"},{"lineNumber":268,"author":{"gitId":"wjacobw"},"content":" System.out.println(deadline);","lastModifiedDate":"2023-08-27"},{"lineNumber":269,"author":{"gitId":"wjacobw"},"content":" list.add(deadline);","lastModifiedDate":"2023-08-27"},{"lineNumber":270,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":271,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":272,"author":{"gitId":"wjacobw"},"content":" appendToFile(zenithData, str);","lastModifiedDate":"2023-08-31"},{"lineNumber":273,"author":{"gitId":"wjacobw"},"content":" refreshData();","lastModifiedDate":"2023-08-31"},{"lineNumber":274,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":275,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":276,"author":{"gitId":"wjacobw"},"content":" else if (arr[0].equals(\"todo\")){","lastModifiedDate":"2023-08-27"},{"lineNumber":277,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":278,"author":{"gitId":"wjacobw"},"content":" Todo todo \u003d new Todo(arr[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":279,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":280,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");// no following words after","lastModifiedDate":"2023-08-27"},{"lineNumber":281,"author":{"gitId":"wjacobw"},"content":" System.out.println(todo);","lastModifiedDate":"2023-08-27"},{"lineNumber":282,"author":{"gitId":"wjacobw"},"content":" list.add(todo);","lastModifiedDate":"2023-08-27"},{"lineNumber":283,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":284,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":285,"author":{"gitId":"wjacobw"},"content":" appendToFile(zenithData, str);","lastModifiedDate":"2023-08-31"},{"lineNumber":286,"author":{"gitId":"wjacobw"},"content":" refreshData();","lastModifiedDate":"2023-08-31"},{"lineNumber":287,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":288,"author":{"gitId":"wjacobw"},"content":" } catch (ArrayIndexOutOfBoundsException e){","lastModifiedDate":"2023-08-27"},{"lineNumber":289,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Please specify the content of the todo list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":290,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":291,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":292,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":293,"author":{"gitId":"wjacobw"},"content":" else if(arr[0].isEmpty()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":294,"author":{"gitId":"wjacobw"},"content":" try { // if empty string","lastModifiedDate":"2023-08-27"},{"lineNumber":295,"author":{"gitId":"wjacobw"},"content":" System.out.println(arr[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":296,"author":{"gitId":"wjacobw"},"content":" } catch(ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":297,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Don\u0027t just input blank space\");","lastModifiedDate":"2023-08-27"},{"lineNumber":298,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":299,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":300,"author":{"gitId":"wjacobw"},"content":" } else { // not the correct format","lastModifiedDate":"2023-08-27"},{"lineNumber":301,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":302,"author":{"gitId":"wjacobw"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":303,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":304,"author":{"gitId":"wjacobw"},"content":" catch (DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":305,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Please input the correct format\");","lastModifiedDate":"2023-08-27"},{"lineNumber":306,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":307,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":308,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":309,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":310,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":311,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":312,"author":{"gitId":"wjacobw"},"content":" public static void main(String[] args) throws Exception {","lastModifiedDate":"2023-08-27"},{"lineNumber":313,"author":{"gitId":"wjacobw"},"content":" String logo \u003d \"Zenith\";","lastModifiedDate":"2023-08-27"},{"lineNumber":314,"author":{"gitId":"wjacobw"},"content":" String zenithData \u003d \"src/main/java/data/zenith.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":315,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":316,"author":{"gitId":"wjacobw"},"content":" loadFileStringContents(zenithData);","lastModifiedDate":"2023-08-31"},{"lineNumber":317,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":318,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Hello I\u0027m Zenith\" );","lastModifiedDate":"2023-08-31"},{"lineNumber":319,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":320,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":321,"author":{"gitId":"wjacobw"},"content":" Duke d \u003d new Duke();","lastModifiedDate":"2023-08-27"},{"lineNumber":322,"author":{"gitId":"wjacobw"},"content":" d.Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":323,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":324,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":325,"author":{"gitId":"wjacobw"},"content":" catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":326,"author":{"gitId":"wjacobw"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":327,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":328,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":329,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"wjacobw":327,"-":3}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":" super(message);","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wjacobw":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":" protected String by;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":" protected String from;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":" public Event(String description, String from, String by) {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wjacobw"},"content":" super(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wjacobw"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"wjacobw"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"wjacobw"},"content":" public String getBy() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wjacobw"},"content":" return this.by;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wjacobw"},"content":" public String getFrom(){","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wjacobw"},"content":" return this.from;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wjacobw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"wjacobw"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"wjacobw"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \"to: \" + by + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"wjacobw"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wjacobw":22}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"public class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":" protected String description;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wjacobw"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wjacobw"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"wjacobw"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"wjacobw"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"wjacobw"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"wjacobw"},"content":" return description;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"wjacobw"},"content":" public void finish() {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"wjacobw"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"wjacobw"},"content":" public void unfinish() {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wjacobw"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"wjacobw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"wjacobw"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"wjacobw"},"content":" return \"[\" + getStatusIcon() + \"] \" + getDescription();","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"wjacobw"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wjacobw":28}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":" protected String by;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":" super(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"wjacobw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"wjacobw"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"wjacobw"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"wjacobw"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wjacobw":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"todo study","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":"mark 1","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":"list","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":"bye","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wjacobw":4}}] +[{"path":"runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":"then","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wjacobw"},"content":" mkdir ../bin","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wjacobw"},"content":"fi","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wjacobw"},"content":"# delete output from previous run","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wjacobw"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wjacobw"},"content":"then","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wjacobw"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wjacobw"},"content":"fi","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wjacobw"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wjacobw"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wjacobw"},"content":"then","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wjacobw"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wjacobw"},"content":" exit 1","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wjacobw"},"content":"fi","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wjacobw"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wjacobw"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"wjacobw"},"content":"# compare the output to the expected output","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"wjacobw"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"wjacobw"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"wjacobw"},"content":"then","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"wjacobw"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"wjacobw"},"content":" exit 0","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"wjacobw"},"content":"else","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"wjacobw"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"wjacobw"},"content":" exit 1","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"wjacobw"},"content":"fi","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wjacobw":35}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":" protected String by;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":" super(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wjacobw"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"wjacobw"},"content":" public String getBy() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wjacobw"},"content":" return this.by;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wjacobw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"wjacobw"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wjacobw"},"content":" return \"[D]\" + super.toString() + \"(by: \" + by + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"wjacobw"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wjacobw":17}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":"import java.util.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":"import java.nio.channels.FileChannel;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wjacobw"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wjacobw"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wjacobw"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"wjacobw"},"content":"import java.time.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wjacobw"},"content":"import java.time.format.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"wjacobw"},"content":" private static StringBuilder tempData \u003d new StringBuilder();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wjacobw"},"content":" public static boolean isNumeric(String str) {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"wjacobw"},"content":" Double.parseDouble(str);","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"wjacobw"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"wjacobw"},"content":" } catch(NumberFormatException e){","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"wjacobw"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"wjacobw"},"content":" private static List\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wjacobw"},"content":" private static void refreshData() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wjacobw"},"content":" String zenithData \u003d \"src/main/java/data/zenith.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wjacobw"},"content":" FileChannel fileChannel \u003d FileChannel.open(Paths.get(zenithData),","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wjacobw"},"content":" StandardOpenOption.WRITE);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wjacobw"},"content":" fileChannel.truncate(0);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wjacobw"},"content":" fileChannel.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wjacobw"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wjacobw"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wjacobw"},"content":" for (Task task : list) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wjacobw"},"content":" String done \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wjacobw"},"content":" String by \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wjacobw"},"content":" String from \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wjacobw"},"content":" String to \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"wjacobw"},"content":" String description \u003d task.getDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"wjacobw"},"content":" String type \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"wjacobw"},"content":" if (task.isDone \u003d\u003d true) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"wjacobw"},"content":" done \u003d \" /1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wjacobw"},"content":" }// Perform your task processing here","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"wjacobw"},"content":" else {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"wjacobw"},"content":" done \u003d \" /0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"wjacobw"},"content":" if (task instanceof Event) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"wjacobw"},"content":" from \u003d \"/from \" + ((Event) task).getFrom();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"wjacobw"},"content":" to \u003d \"/to \" + ((Event) task).getBy();","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"wjacobw"},"content":" type \u003d \"event \";","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"wjacobw"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"wjacobw"},"content":" by \u003d \"/by \" + ((Deadline) task).getBy();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"wjacobw"},"content":" type \u003d \"deadline \";","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"wjacobw"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"wjacobw"},"content":" type \u003d \"todo \";","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"wjacobw"},"content":" String string \u003d type + description + from + by + to + done;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"wjacobw"},"content":" appendToFile(zenithData, string);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"wjacobw"},"content":" catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"wjacobw"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"wjacobw"},"content":" public void List() {","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"wjacobw"},"content":" int index \u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"wjacobw"},"content":" for (Task thing: list) {","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"wjacobw"},"content":" System.out.println(index +\". \" + thing.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"wjacobw"},"content":" index++;","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"wjacobw"},"content":" private static void loadFileStringContents(String filePath) throws FileNotFoundException{","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"wjacobw"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"wjacobw"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"wjacobw"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"wjacobw"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"wjacobw"},"content":" StringToArray(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"wjacobw"},"content":" s.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"wjacobw"},"content":" // Handle the exception here, such as creating the file if needed","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"wjacobw"},"content":" private static void StringToArray(String str) { // might need to add corrupted file exception","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"wjacobw"},"content":" String arr[] \u003d str.split(\" \", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"wjacobw"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd LLLL yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"wjacobw"},"content":" if (arr[0].equals(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"wjacobw"},"content":" String firstFrom \u003d arr[1].substring(arr[1].indexOf(\"/from\") + 6); //","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"wjacobw"},"content":" String secondFrom \u003d firstFrom.substring(0, firstFrom.indexOf(\"/to\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"wjacobw"},"content":" String firstTo \u003d arr[1].substring(arr[1].indexOf(\"/to\")+ 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"wjacobw"},"content":" String secondTo \u003d firstTo.substring(0, firstTo.indexOf(\"|\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"wjacobw"},"content":" String content \u003d arr[1].substring(0, arr[1].indexOf(\"/from \"));","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"wjacobw"},"content":" String done \u003d firstTo.substring(firstTo.indexOf(\"|\") + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"wjacobw"},"content":" String fromDate \u003d secondFrom.substring(0, secondFrom.indexOf(\"/\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"wjacobw"},"content":" String firstFromMonth \u003d secondFrom.substring(secondFrom.indexOf(\"/\") + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"wjacobw"},"content":" String fromMonth \u003d firstFromMonth.substring(0, firstFromMonth.indexOf(\"/\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"wjacobw"},"content":" String fromYear \u003d firstFromMonth.substring(firstFromMonth.indexOf(\"/\") + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"wjacobw"},"content":" String toDate \u003d secondTo.substring(0, secondTo.indexOf(\"/\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"wjacobw"},"content":" String firstToMonth \u003d secondTo.substring(secondTo.indexOf(\"/\") + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"wjacobw"},"content":" String toMonth \u003d firstToMonth.substring(0, firstToMonth.indexOf(\"/\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"wjacobw"},"content":" String toYear \u003d firstToMonth.substring(firstToMonth.indexOf(\"/\") + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"wjacobw"},"content":" toYear \u003d toYear.substring(0, toYear.indexOf(\" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"wjacobw"},"content":" fromYear \u003d fromYear.substring(0, fromYear.indexOf(\" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"wjacobw"},"content":" LocalDate to \u003d LocalDate.of(Integer.parseInt(toYear), Integer.parseInt(toMonth), Integer.parseInt(toDate));","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"wjacobw"},"content":" LocalDate from \u003d LocalDate.of(Integer.parseInt(fromYear), Integer.parseInt(fromMonth), Integer.parseInt(fromDate));","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"wjacobw"},"content":" String formattedTo \u003d to.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"wjacobw"},"content":" String formattedFrom \u003d from.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"wjacobw"},"content":" if (done \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"wjacobw"},"content":" Event event \u003d new Event(content, formattedFrom, formattedTo);","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"wjacobw"},"content":" event.finish();","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"wjacobw"},"content":" list.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"wjacobw"},"content":" } else if (done \u003d\u003d \"0\"){","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"wjacobw"},"content":" Event event \u003d new Event(content, formattedFrom, formattedTo);","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"wjacobw"},"content":" list.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"wjacobw"},"content":" else if (arr[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"wjacobw"},"content":" String firstBy \u003d arr[1].substring(arr[1].indexOf(\"/by\") + 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"wjacobw"},"content":" String secondBy \u003d firstBy.substring(0, firstBy.indexOf(\"|\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"wjacobw"},"content":" String done \u003d firstBy.substring(firstBy.indexOf(\"|\") + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"wjacobw"},"content":" String byDate \u003d secondBy.substring(0, secondBy.indexOf(\"/\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"wjacobw"},"content":" String firstByMonth \u003d secondBy.substring(secondBy.indexOf(\"/\") + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"wjacobw"},"content":" String byMonth \u003d firstByMonth.substring(0, firstByMonth.indexOf(\"/\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"wjacobw"},"content":" String byYear \u003d firstByMonth.substring(firstByMonth.indexOf(\"/\") + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"wjacobw"},"content":" byYear \u003d byYear.substring(0, byYear.indexOf(\" \"));","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"wjacobw"},"content":" LocalDate by \u003d LocalDate.of(Integer.parseInt(byYear), Integer.parseInt(byMonth), Integer.parseInt(byDate));","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"wjacobw"},"content":" String formattedTo \u003d by.format(formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"wjacobw"},"content":" Deadline deadline \u003d new Deadline(arr[1].substring(0, arr[1].indexOf(\"/by \")), formattedTo);","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"wjacobw"},"content":" if (done \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"wjacobw"},"content":" deadline.finish();","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"wjacobw"},"content":" list.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"wjacobw"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"wjacobw"},"content":" list.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"wjacobw"},"content":" else if (arr[0].equals(\"todo\")){","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"wjacobw"},"content":" String firstTodo \u003d arr[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"wjacobw"},"content":" String secondToDo \u003d firstTodo.substring(0, firstTodo.indexOf(\"|\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"wjacobw"},"content":" String done \u003d firstTodo.substring(firstTodo.indexOf(\"|\") + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"wjacobw"},"content":" Todo todo \u003d new Todo(secondToDo);","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"wjacobw"},"content":" if (done \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"wjacobw"},"content":" todo.finish();","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"wjacobw"},"content":" list.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"wjacobw"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"wjacobw"},"content":" list.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"wjacobw"},"content":" } catch (ArrayIndexOutOfBoundsException e){","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Please specify the content of the todo list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"wjacobw"},"content":" private static void appendToFile(String filePath, String textToAppend) throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"wjacobw"},"content":" FileWriter fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"wjacobw"},"content":" fw.write(\"\\n\" + textToAppend);","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"wjacobw"},"content":" fw.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":178,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":182,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":183,"author":{"gitId":"wjacobw"},"content":" public void Answer() throws Exception{ // just a reader for additional files inputted by the users.","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"wjacobw"},"content":" // my plan is to make sure every line inputted by the user, it is saved to the zenith.txt file directly.","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"wjacobw"},"content":" // But to show the users the list, need to first load the data to a class storage containing the copied","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"wjacobw"},"content":" // data of zenith.txt","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"wjacobw"},"content":" String zenithData \u003d \"src/main/java/data/zenith.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"wjacobw"},"content":" BufferedReader reader \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2023-08-27"},{"lineNumber":189,"author":{"gitId":"wjacobw"},"content":" String str \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":190,"author":{"gitId":"wjacobw"},"content":" String arr[] \u003d str.split(\" \", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":191,"author":{"gitId":"wjacobw"},"content":" String onetwo \u003d list.size() \u003e 1? \" task\": \" tasks\";","lastModifiedDate":"2023-08-27"},{"lineNumber":192,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":193,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":194,"author":{"gitId":"wjacobw"},"content":" if (str.equals(\"bye\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":195,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":196,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":197,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":198,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":199,"author":{"gitId":"wjacobw"},"content":" else if (str.equals(\"list\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":200,"author":{"gitId":"wjacobw"},"content":" List();","lastModifiedDate":"2023-08-27"},{"lineNumber":201,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":202,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":203,"author":{"gitId":"wjacobw"},"content":" } else if (arr[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":204,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":205,"author":{"gitId":"wjacobw"},"content":" list.get(Integer.parseInt(arr[1]) - 1).getDescription();","lastModifiedDate":"2023-08-27"},{"lineNumber":206,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":207,"author":{"gitId":"wjacobw"},"content":" System.out.println(list.get(Integer.parseInt(arr[1]) - 1).toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":208,"author":{"gitId":"wjacobw"},"content":" list.remove(Integer.parseInt(arr[1]) - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":209,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":210,"author":{"gitId":"wjacobw"},"content":" refreshData();","lastModifiedDate":"2023-08-31"},{"lineNumber":211,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":212,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":213,"author":{"gitId":"wjacobw"},"content":" catch(NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":214,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"to pick which task to do, please input an integer\");","lastModifiedDate":"2023-08-27"},{"lineNumber":215,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":216,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":217,"author":{"gitId":"wjacobw"},"content":" catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":218,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"currently, you task list does not the task with the index you just inputted\");","lastModifiedDate":"2023-08-27"},{"lineNumber":219,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":220,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":221,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":222,"author":{"gitId":"wjacobw"},"content":" else if (arr[0].equals(\"mark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":223,"author":{"gitId":"wjacobw"},"content":" //arr[1].length() \u003d\u003d 1 \u0026\u0026 isNumeric(arr[1])","lastModifiedDate":"2023-08-27"},{"lineNumber":224,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":225,"author":{"gitId":"wjacobw"},"content":" list.get(Integer.parseInt(arr[1]) - 1).getDescription();","lastModifiedDate":"2023-08-27"},{"lineNumber":226,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \");","lastModifiedDate":"2023-08-27"},{"lineNumber":227,"author":{"gitId":"wjacobw"},"content":" System.out.println(\" [X] \" + list.get(Integer.parseInt(arr[1]) - 1).getDescription());","lastModifiedDate":"2023-08-27"},{"lineNumber":228,"author":{"gitId":"wjacobw"},"content":" list.get(Integer.parseInt(arr[1]) - 1).finish();","lastModifiedDate":"2023-08-27"},{"lineNumber":229,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":230,"author":{"gitId":"wjacobw"},"content":" refreshData();","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":232,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":233,"author":{"gitId":"wjacobw"},"content":" catch(NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":234,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"to pick which task to do, please input an integer\");","lastModifiedDate":"2023-08-27"},{"lineNumber":235,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":236,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":237,"author":{"gitId":"wjacobw"},"content":" catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":238,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"currently, you task list does not the task with the index you just inputted\");","lastModifiedDate":"2023-08-27"},{"lineNumber":239,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":240,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":241,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":242,"author":{"gitId":"wjacobw"},"content":" } else if (arr[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":243,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":244,"author":{"gitId":"wjacobw"},"content":" list.get(Integer.parseInt(arr[1]) - 1).getDescription();","lastModifiedDate":"2023-08-27"},{"lineNumber":245,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \");","lastModifiedDate":"2023-08-27"},{"lineNumber":246,"author":{"gitId":"wjacobw"},"content":" System.out.println(\" [] \" + list.get(Integer.parseInt(arr[1]) - 1).getDescription());","lastModifiedDate":"2023-08-27"},{"lineNumber":247,"author":{"gitId":"wjacobw"},"content":" list.get(Integer.parseInt(arr[1]) - 1).unfinish();","lastModifiedDate":"2023-08-27"},{"lineNumber":248,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":249,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":250,"author":{"gitId":"wjacobw"},"content":" refreshData();","lastModifiedDate":"2023-08-31"},{"lineNumber":251,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":252,"author":{"gitId":"wjacobw"},"content":" catch(NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":253,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"to pick which task to undo, please input an integer\");","lastModifiedDate":"2023-08-27"},{"lineNumber":254,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":255,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":256,"author":{"gitId":"wjacobw"},"content":" catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":257,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"currently, you task list does not the task with the index you just inputted\");","lastModifiedDate":"2023-08-27"},{"lineNumber":258,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":259,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":260,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":261,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":262,"author":{"gitId":"wjacobw"},"content":" } else if (arr[0].equals(\"event\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":263,"author":{"gitId":"wjacobw"},"content":" String firstFrom \u003d arr[1].substring(arr[1].indexOf(\"/from\") + 6);","lastModifiedDate":"2023-08-27"},{"lineNumber":264,"author":{"gitId":"wjacobw"},"content":" System.out.println(firstFrom);","lastModifiedDate":"2023-08-27"},{"lineNumber":265,"author":{"gitId":"wjacobw"},"content":" String secondFrom \u003d firstFrom.substring(0, firstFrom.indexOf(\"/to\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":266,"author":{"gitId":"wjacobw"},"content":" String to \u003d arr[1].substring(arr[1].indexOf(\"/to\")+ 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":267,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":268,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":269,"author":{"gitId":"wjacobw"},"content":" String content \u003d arr[1].substring(0, arr[1].indexOf(\"/from \"));","lastModifiedDate":"2023-08-27"},{"lineNumber":270,"author":{"gitId":"wjacobw"},"content":" Event event \u003d new Event(content, secondFrom, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":271,"author":{"gitId":"wjacobw"},"content":" System.out.println(event);","lastModifiedDate":"2023-08-27"},{"lineNumber":272,"author":{"gitId":"wjacobw"},"content":" list.add(event);","lastModifiedDate":"2023-08-27"},{"lineNumber":273,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":274,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":275,"author":{"gitId":"wjacobw"},"content":" appendToFile(zenithData, str);","lastModifiedDate":"2023-08-31"},{"lineNumber":276,"author":{"gitId":"wjacobw"},"content":" refreshData();","lastModifiedDate":"2023-08-31"},{"lineNumber":277,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":278,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":279,"author":{"gitId":"wjacobw"},"content":" } else if (arr[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":280,"author":{"gitId":"wjacobw"},"content":" String by \u003d arr[1].substring(arr[1].indexOf(\"/by\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":281,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":282,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":283,"author":{"gitId":"wjacobw"},"content":" Deadline deadline \u003d new Deadline(arr[1].substring(0, arr[1].indexOf(\"/by \")), by);","lastModifiedDate":"2023-08-27"},{"lineNumber":284,"author":{"gitId":"wjacobw"},"content":" System.out.println(deadline);","lastModifiedDate":"2023-08-27"},{"lineNumber":285,"author":{"gitId":"wjacobw"},"content":" list.add(deadline);","lastModifiedDate":"2023-08-27"},{"lineNumber":286,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":287,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":288,"author":{"gitId":"wjacobw"},"content":" appendToFile(zenithData, str);","lastModifiedDate":"2023-08-31"},{"lineNumber":289,"author":{"gitId":"wjacobw"},"content":" refreshData();","lastModifiedDate":"2023-08-31"},{"lineNumber":290,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":291,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":292,"author":{"gitId":"wjacobw"},"content":" else if (arr[0].equals(\"todo\")){","lastModifiedDate":"2023-08-27"},{"lineNumber":293,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":294,"author":{"gitId":"wjacobw"},"content":" Todo todo \u003d new Todo(arr[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":295,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":296,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");// no following words after","lastModifiedDate":"2023-08-27"},{"lineNumber":297,"author":{"gitId":"wjacobw"},"content":" System.out.println(todo);","lastModifiedDate":"2023-08-27"},{"lineNumber":298,"author":{"gitId":"wjacobw"},"content":" list.add(todo);","lastModifiedDate":"2023-08-27"},{"lineNumber":299,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Now you have \" + list.size() + onetwo + \" in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":300,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":301,"author":{"gitId":"wjacobw"},"content":" appendToFile(zenithData, str);","lastModifiedDate":"2023-08-31"},{"lineNumber":302,"author":{"gitId":"wjacobw"},"content":" refreshData();","lastModifiedDate":"2023-08-31"},{"lineNumber":303,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":304,"author":{"gitId":"wjacobw"},"content":" } catch (ArrayIndexOutOfBoundsException e){","lastModifiedDate":"2023-08-27"},{"lineNumber":305,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Please specify the content of the todo list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":306,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":307,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":308,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":309,"author":{"gitId":"wjacobw"},"content":" else if(arr[0].isEmpty()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":310,"author":{"gitId":"wjacobw"},"content":" try { // if empty string","lastModifiedDate":"2023-08-27"},{"lineNumber":311,"author":{"gitId":"wjacobw"},"content":" System.out.println(arr[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":312,"author":{"gitId":"wjacobw"},"content":" } catch(ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":313,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Don\u0027t just input blank space\");","lastModifiedDate":"2023-08-27"},{"lineNumber":314,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":315,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":316,"author":{"gitId":"wjacobw"},"content":" } else { // not the correct format","lastModifiedDate":"2023-08-27"},{"lineNumber":317,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":318,"author":{"gitId":"wjacobw"},"content":" throw new DukeException(\"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":319,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":320,"author":{"gitId":"wjacobw"},"content":" catch (DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":321,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Please input the correct format\");","lastModifiedDate":"2023-08-27"},{"lineNumber":322,"author":{"gitId":"wjacobw"},"content":" Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":323,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":324,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":325,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":326,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":327,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":328,"author":{"gitId":"wjacobw"},"content":" public static void main(String[] args) throws Exception {","lastModifiedDate":"2023-08-27"},{"lineNumber":329,"author":{"gitId":"wjacobw"},"content":" String logo \u003d \"Zenith\";","lastModifiedDate":"2023-08-27"},{"lineNumber":330,"author":{"gitId":"wjacobw"},"content":" String zenithData \u003d \"src/main/java/data/zenith.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":331,"author":{"gitId":"wjacobw"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":332,"author":{"gitId":"wjacobw"},"content":" loadFileStringContents(zenithData);","lastModifiedDate":"2023-08-31"},{"lineNumber":333,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":334,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"Hello I\u0027m Zenith\" );","lastModifiedDate":"2023-08-31"},{"lineNumber":335,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":336,"author":{"gitId":"wjacobw"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":337,"author":{"gitId":"wjacobw"},"content":" Duke d \u003d new Duke();","lastModifiedDate":"2023-08-27"},{"lineNumber":338,"author":{"gitId":"wjacobw"},"content":" d.Answer();","lastModifiedDate":"2023-08-27"},{"lineNumber":339,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":340,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":341,"author":{"gitId":"wjacobw"},"content":" catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":342,"author":{"gitId":"wjacobw"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":343,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":344,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"wjacobw":343,"-":3}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":" super(message);","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wjacobw":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":" protected String by;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":" protected String from;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":" public Event(String description, String from, String by) {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wjacobw"},"content":" super(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wjacobw"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"wjacobw"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"wjacobw"},"content":" public String getBy() {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wjacobw"},"content":" return this.by;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wjacobw"},"content":" public String getFrom(){","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wjacobw"},"content":" return this.from;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wjacobw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"wjacobw"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"wjacobw"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \"to: \" + by + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"wjacobw"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wjacobw":22}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"public class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":" protected String description;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wjacobw"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wjacobw"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"wjacobw"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"wjacobw"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"wjacobw"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"wjacobw"},"content":" return description;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"wjacobw"},"content":" public void finish() {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"wjacobw"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"wjacobw"},"content":" public void unfinish() {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wjacobw"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"wjacobw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"wjacobw"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"wjacobw"},"content":" return \"[\" + getStatusIcon() + \"] \" + getDescription();","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"wjacobw"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wjacobw":28}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":" protected String by;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wjacobw"},"content":" super(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"wjacobw"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"wjacobw"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"wjacobw"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"wjacobw"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"wjacobw"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"wjacobw"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wjacobw":14}},{"path":"src/main/java/data/zenith.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"deadline return book /by 2/12/2019 |0","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":"event return book /from 2/12/2019 /to 10/11/2011 |0","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":"todo return book |0","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wjacobw":3}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wjacobw"},"content":"todo study","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"wjacobw"},"content":"mark 1","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wjacobw"},"content":"list","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wjacobw"},"content":"bye","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wjacobw":4}}] diff --git a/wjacobw_ip_master/commits.json b/wjacobw_ip_master/commits.json index 8289b837..ac66ee27 100644 --- a/wjacobw_ip_master/commits.json +++ b/wjacobw_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"wjacobw":[{"date":"2023-08-27","commitResults":[{"hash":"32a94d1d0131a90ff1a62b1028e74d241d5c0b2b","isMergeCommit":false,"messageTitle":"v1","messageBody":"","tags":["Level-6","Level-5","Level-4","Level-3","Level-2","Level-1","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":248,"deletions":7}}}]},{"date":"2023-08-30","commitResults":[{"hash":"55d3d056aeea207b0e9738da5f93cffbc4437a2e","isMergeCommit":false,"messageTitle":"newfile added","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"66109d827d60c25c41b5dd31f23bc49d0f2566ef","isMergeCommit":false,"messageTitle":"newnewfile","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"bf5d8dd85fa1d3d3154f195dc16251c79bc01b23","isMergeCommit":false,"messageTitle":"newnewnewfile","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"840e98c452158351049843c2534cc6e3f59be96d","isMergeCommit":true,"messageTitle":"Merge branch \u0027feature1\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"d5eadbcc1badf659b196b92ff0bde4b9a2f1324b","isMergeCommit":false,"messageTitle":"all the features on Level-7 except catching exception","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":182,"deletions":17}}}]}]},"authorFileTypeContributionMap":{"wjacobw":{"java":413,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":6}},"authorContributionVariance":{"wjacobw":6396.265},"authorDisplayNameMap":{"wjacobw":"CS2103T-F08-4 WILL..JAYA"}} +{"authorDailyContributionsMap":{"wjacobw":[{"date":"2023-08-27","commitResults":[{"hash":"32a94d1d0131a90ff1a62b1028e74d241d5c0b2b","isMergeCommit":false,"messageTitle":"v1","messageBody":"","tags":["Level-6","Level-5","Level-4","Level-3","Level-2","Level-1","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":248,"deletions":7}}}]},{"date":"2023-08-30","commitResults":[{"hash":"55d3d056aeea207b0e9738da5f93cffbc4437a2e","isMergeCommit":false,"messageTitle":"newfile added","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"66109d827d60c25c41b5dd31f23bc49d0f2566ef","isMergeCommit":false,"messageTitle":"newnewfile","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"bf5d8dd85fa1d3d3154f195dc16251c79bc01b23","isMergeCommit":false,"messageTitle":"newnewnewfile","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"840e98c452158351049843c2534cc6e3f59be96d","isMergeCommit":true,"messageTitle":"Merge branch \u0027feature1\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"d5eadbcc1badf659b196b92ff0bde4b9a2f1324b","isMergeCommit":false,"messageTitle":"all the features on Level-7 except catching exception","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":182,"deletions":17}}}]},{"date":"2023-09-01","commitResults":[{"hash":"9b1fa66f41aa17434a8a371347cdc54210052325","isMergeCommit":false,"messageTitle":"Features for level 8","messageBody":"","tags":["branch-Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":36,"deletions":20},"sh":{"insertions":35,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"wjacobw":{"java":429,"md":0,"fxml":0,"sh":35,"bat":0,"gradle":0,"txt":7}},"authorContributionVariance":{"wjacobw":6217.9287},"authorDisplayNameMap":{"wjacobw":"CS2103T-F08-4 WILL..JAYA"}} diff --git a/wjayee_ip_master/authorship.json b/wjayee_ip_master/authorship.json index 32259a87..29a72558 100644 --- a/wjayee_ip_master/authorship.json +++ b/wjayee_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":"wjayee"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","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":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"wjayee":3}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"import duke.utils.Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"import duke.utils.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * Chatbot that takes in commands.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" public Duke(String path) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" this.storage \u003d new Storage(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" this.tasks \u003d new TaskList(storage.readFile());","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" * Starts the chatbot.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" boolean end \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" ui.greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" while(!end) {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" String nextInput \u003d scanner.nextLine().trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" Commands command \u003d Parser.determineCommand(nextInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" switch (command) {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":" case TODO:","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" case EVENT:","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" Task t \u003d TaskList.createTask(nextInput, command, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" ui.showTaskAdded(t.getTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":" case LIST:","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"wjayee"},"content":" ui.showNoTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"wjayee"},"content":" ui.showAllTasks(tasks.getTasksDes(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"wjayee"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"wjayee"},"content":" case UNMARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"wjayee"},"content":" case MARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"wjayee"},"content":" String completionStatus \u003d tasks.changeTaskCompletion(nextInput, command);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"wjayee"},"content":" ui.showStatusChanged(completionStatus);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"wjayee"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"wjayee"},"content":" case DELETE:","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"wjayee"},"content":" String deleteStatus \u003d tasks.deleteTask(nextInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"wjayee"},"content":" ui.showStatusChanged(deleteStatus);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"wjayee"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"wjayee"},"content":" case BYE:","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"wjayee"},"content":" end \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"wjayee"},"content":" String savedStatus \u003d storage.saveToDisk(tasks.getTasksDes(0));","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"wjayee"},"content":" ui.showStatusChanged(savedStatus);","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"wjayee"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"wjayee"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"wjayee"},"content":" ui.showDukeError(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"wjayee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"wjayee"},"content":" ui.showDateError();","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"wjayee"},"content":" ui.showGeneralError();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"wjayee"},"content":" ui.separator();","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"wjayee"},"content":" ui.farewell();","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":94,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":95,"author":{"gitId":"wjayee"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"wjayee"},"content":" new Duke(\"toothless.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":3,"wjayee":95}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":" * Constructor for Exceptions.DukeException.","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" * @param message Exception message.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":11}},{"path":"src/main/java/duke/exceptions/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"public class InvalidInputException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" * Constructor for Exceptions.InvalidInputException.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" * @param message Exception message.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" public InvalidInputException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * Returns the description of the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * @return Description of exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" return \"I don\u0027t understand what you just said :(\";","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":22}},{"path":"src/main/java/duke/exceptions/MissingDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"public class MissingDateException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" * Constructor for Exceptions.MissingDateException.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" * @param message Exception message.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" public MissingDateException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * Returns the description of the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * @return Description of exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" return \"Date of the task is missing! Please give your task a date :)\";","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":23}},{"path":"src/main/java/duke/exceptions/MissingTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"public class MissingTaskException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":" * Constructor for Exceptions.MissingTaskException.","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" * @param message Exception message.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" public MissingTaskException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" * Returns the description of the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * @return Description of exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" return \"Task cannot be found :(\";","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":20}},{"path":"src/main/java/duke/exceptions/MissingTitleException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"public class MissingTitleException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" * Constructor for Exceptions.MissingTitleException.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" * @param message Exception message.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" public MissingTitleException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * Returns the description of the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * @return Description of exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" return \"Title of the task is missing! Please give your task a name :)\";","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":23}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"import java.util.List;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" * Class that retrieves and stores the list of tasks locally.","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" private String path;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" private File tempFile;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" public Storage(String path) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" this.path \u003d path;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" this.tempFile \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" * Reads the previously saved list of tasks and returns it in a list of task descriptions.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" * @return A list of task descriptions.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" public List\u003cString\u003e readFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" List\u003cString\u003e output \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" File f \u003d new File(path);","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" String task \u003d s.nextLine().trim();","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" output.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" return output;","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" return output;","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":" * Writes a string of tasks to a file.","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" * @param fw File to be written in.","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":" * @param tasks Tasks to be written.","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" private void writeToFile(FileWriter fw, String tasks) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" fw.write(tasks);","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" fw.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":" * Updates the local file with the new list of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"wjayee"},"content":" * @param tasks List of task descriptions.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"wjayee"},"content":" * @return The status of whether the save was successful or not.","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"wjayee"},"content":" public String saveToDisk(List\u003cString\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"wjayee"},"content":" FileWriter fw \u003d new FileWriter(path);","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"wjayee"},"content":" String input \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"wjayee"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"wjayee"},"content":" input \u003d input + tasks.get(i) + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"wjayee"},"content":" writeToFile(fw, input);","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"wjayee"},"content":" return \"Tasks saved successfully\";","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"wjayee"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"wjayee"},"content":" return \"Tasks could not be saved\";","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"wjayee":73}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import duke.utils.DukeDateFormat;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" /** Date that task is to be completed by. */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" private LocalDate by;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" * Constructor for Deadline.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * @param taskName Name of deadline.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * @param by Date where the task is due.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" public Deadline(String taskName, int isDone, LocalDate by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" super(taskName, isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" * @return Status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" public String getTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" return \"Deadline -\u003e\" + super.getTask() + \" By: \" + DukeDateFormat.dateToString(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" * @return String representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" return super.toString().replace(\"/TASK\", \"deadline \") + \" /by \" + by.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":39}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import duke.utils.DukeDateFormat;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" /** Date where the event start. */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" private LocalDate from;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" /** Date where the event ends. */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" private LocalDate to;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * Constructor for Event.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" * @param taskName Name of event.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" * @param from Date where event starts.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" * @param to Date where event ends.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" public Event(String taskName, int isDone, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" super(taskName, isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" * Returns duration of the event.","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" * @return Duration of event.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" private String getDuration() {","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" return DukeDateFormat.dateToString(from) + \" - \" + DukeDateFormat.dateToString(to);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the status of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" * @return Status of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" public String getTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" return \"Event -\u003e\" + super.getTask() + \" (\" + getDuration() + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":" * @return String representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" String fromDate \u003d from.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" String toDate \u003d to.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" return super.toString().replace(\"/TASK\", \"event \") + \" /from \" + fromDate + \" /to \" + toDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":54}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":" /** Completion status of the task. */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" /** Title of the task. */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" private String taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" * Constructor for Task.","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" * @param taskName Name of task.","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" public Task(String taskName, int isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" this.isDone \u003d isDone \u003d\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the status of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" * @return Status of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" public String getTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" String output \u003d (isDone ? \" [X] \" : \" [ ] \") + this.taskName;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" return output;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" * Marks the status of the task as completed.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" * @return Dialogue to confirm the completion status of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" public String markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" return \"\u0027\" + this.taskName + \"\u0027\" + \" is completed! Good job :)\";","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" * Marks the status of the task as uncompleted.","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" * @return Dialogue to confirm the completion status of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" public String markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" return \"\u0027\" + this.taskName + \"\u0027\" + \" is now not completed :(\";","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" * @return String representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" return (isDone ? \"/C \" : \"/UC \") + \"/TASK\" + taskName ;","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wjayee":54}},{"path":"src/main/java/duke/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.MissingTaskException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import duke.utils.Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import duke.utils.DukeDateFormat;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"import duke.utils.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * Class that contains the list of tasks when the chatbot is active.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" public TaskList(List\u003cString\u003e stringTasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" this.tasks \u003d stringToTask(stringTasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" * Converts a list of task descriptions to a list of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" * @param input List of task descriptions.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" * @return List of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" private static List\u003cTask\u003e stringToTask(List\u003cString\u003e input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" List\u003cTask\u003e output \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" for (int i \u003d 0; i \u003c input.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" String nextInput \u003d input.get(i);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" Commands command \u003d Parser.determineCommand(nextInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" int isDone \u003d nextInput.contains(\"/UC\") ? 0 : 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" Task task \u003d createTask(nextInput, command, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" output.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":" * Creates a task based on the input given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":" * @param input The input given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" * @param command Type of command in the input","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" * @param isDone A field for task created.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" * @return The task created.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" * @throws DukeException If title or date does not exist, or if input is invalid.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" * @throws DateTimeParseException If date exists but is in the wrong format.","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":" public static Task createTask(String input, Commands command, int isDone) throws DukeException, DateTimeParseException {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"wjayee"},"content":" switch (command) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"wjayee"},"content":" case TODO:","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"wjayee"},"content":" String todoTitle \u003d Parser.obtainTitle(input, Commands.TODO);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"wjayee"},"content":" return new ToDo(todoTitle, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"wjayee"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"wjayee"},"content":" String deadlineTitle \u003d Parser.obtainTitle(input, Commands.DEADLINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"wjayee"},"content":" String by \u003d Parser.obtainDate(input, Commands.DEADLINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"wjayee"},"content":" LocalDate byDate \u003d DukeDateFormat.stringToDate(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"wjayee"},"content":" return new Deadline(deadlineTitle, isDone, byDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"wjayee"},"content":" case EVENT:","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"wjayee"},"content":" String eventTitle \u003d Parser.obtainTitle(input, Commands.EVENT);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"wjayee"},"content":" String fromTo \u003d Parser.obtainDate(input, Commands.EVENT);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"wjayee"},"content":" LocalDate from \u003d DukeDateFormat.stringToDate(fromTo.split(\"/to\")[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"wjayee"},"content":" LocalDate to \u003d DukeDateFormat.stringToDate(fromTo.split(\"/to\")[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"wjayee"},"content":" return new Event(eventTitle, isDone, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"wjayee"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"wjayee"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"wjayee"},"content":" throw e;","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"wjayee"},"content":" * Checks if the list of tasks is empty.","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"wjayee"},"content":" * @return True if list is empty.","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"wjayee"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"wjayee"},"content":" return tasks.isEmpty();","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"wjayee"},"content":" * Returns a list of task descriptions.","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"wjayee"},"content":" * @param typeOfDes The type of description to be returned.","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"wjayee"},"content":" * @return A list of description to be stored locally if typeOfDes \u003d 0 else","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"wjayee"},"content":" * a list of description to be read by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"wjayee"},"content":" public List\u003cString\u003e getTasksDes(int typeOfDes) {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"wjayee"},"content":" List\u003cString\u003e output \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"wjayee"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"wjayee"},"content":" if (typeOfDes \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"wjayee"},"content":" output.add(tasks.get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"wjayee"},"content":" output.add(tasks.get(i).getTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"wjayee"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"wjayee"},"content":" * Updates the completion status of their task and returns a String as the dialogue.","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"wjayee"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"wjayee"},"content":" * @param command Type of command given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"wjayee"},"content":" * @return Dialogue for the bot to confirm status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"wjayee"},"content":" * @throws DukeException Exceptions.InvalidInputException thrown if input","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"wjayee"},"content":" * cannot be recognised. Exceptions.MissingTaskException thrown","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"wjayee"},"content":" * if task cannot be found in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"wjayee"},"content":" public String changeTaskCompletion(String input, Commands command) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"wjayee"},"content":" int taskNum \u003d Integer.valueOf(input.split(\" \")[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"wjayee"},"content":" Task task \u003d tasks.get(taskNum - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"wjayee"},"content":" if (command.equals(Commands.UNMARK)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"wjayee"},"content":" return task.markAsUndone();","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"wjayee"},"content":" } else if (command.equals(Commands.MARK)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"wjayee"},"content":" return task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"wjayee"},"content":" } catch (IndexOutOfBoundsException ioob) {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"wjayee"},"content":" throw new MissingTaskException(\"Missing Task\");","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"wjayee"},"content":" * Deletes a task from the task list and returns a String as the dialogue.","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"wjayee"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"wjayee"},"content":" * @return Dialogue to confirm the deletion of the task from the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"wjayee"},"content":" * @throws DukeException Exceptions.InvalidInputException thrown if input","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"wjayee"},"content":" * cannot be recognised. Exceptions.MissingTaskException thrown","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"wjayee"},"content":" * if task cannot be found in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"wjayee"},"content":" public String deleteTask(String input) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"wjayee"},"content":" int taskNum \u003d Integer.valueOf(input.split(\" \")[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"wjayee"},"content":" Task deleted \u003d tasks.remove(taskNum - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"wjayee"},"content":" return deleted.getTask() + \" has been deleted!\";","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"wjayee"},"content":" } catch (IndexOutOfBoundsException ioob) {","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"wjayee"},"content":" throw new MissingTaskException(\"Missing Task\");","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"wjayee"},"content":" * Adds a task to the list of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"wjayee"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"wjayee"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"wjayee"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wjayee":167}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":" * Constructor for ToDo.","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" * @param taskName Name of todo.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" public ToDo(String taskName, int isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" super(taskName, isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * @return Status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" public String getTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" return \"To Do -\u003e\" + super.getTask();","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" * @return String representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" return super.toString().replace(\"/TASK\", \"todo \");","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":29}},{"path":"src/main/java/duke/utils/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"public enum Commands {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":" TODO,","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":" DEADLINE,","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" EVENT,","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" LIST,","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" UNMARK,","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" MARK,","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" DELETE,","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" BYE,","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" UNKNOWN","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":13}},{"path":"src/main/java/duke/utils/DukeDateFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import java.time.format.TextStyle;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" * Class to format the date.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"public class DukeDateFormat {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * Converts a string to LocalDate.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * @param dateInput String representation of date.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" * @return The LocalDate representation of date.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" public static LocalDate stringToDate(String dateInput) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" LocalDate date \u003d LocalDate.parse(dateInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" return date;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" throw e;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" * Converts a date to String.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" * @param date LocalDate representation of date.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" * @return The string representation of date.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" public static String dateToString(LocalDate date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" String day \u003d String.valueOf(date.getDayOfMonth());","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" String month \u003d date.getMonth().getDisplayName(TextStyle.SHORT, Locale.ENGLISH);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" String year \u003d String.valueOf(date.getYear());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" return month + \" \" + day + \" \" + year;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wjayee":40}},{"path":"src/main/java/duke/utils/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.MissingDateException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.MissingTitleException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" * Makes sense of the user command.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * Returns the command that is called by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" * @return The type of command called.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" public static Commands determineCommand(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" for (Commands command: Commands.values()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" if (input.contains(command.name().toLowerCase())) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" return command;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" return Commands.UNKNOWN;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" * Returns the title of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" * @param command Type of command given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" * @return The title of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" * @throws DukeException InvalidInputException thrown if input cannot be recognised.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" * @throws MissingTitleException if user did not give a title for their task.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" public static String obtainTitle(String input, Commands command)","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" throws DukeException, MissingTitleException {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" String title;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" if (command.equals(Commands.TODO)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" title \u003d input.split(\"todo \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" } else if (command.equals(Commands.DEADLINE)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" title \u003d input.split(\"deadline \")[1].split(\"/by \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" } else if (command.equals(Commands.EVENT)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":" title \u003d input.split(\"event \")[1].split(\"/from \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" if (title.trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" throw new MissingTitleException(\"Missing Title\");","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":" return title.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"wjayee"},"content":" } catch (ArrayIndexOutOfBoundsException | MissingTitleException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"wjayee"},"content":" throw new MissingTitleException(\"Missing Title\");","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"wjayee"},"content":" * Returns the date specified by the user for their task.","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"wjayee"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"wjayee"},"content":" * @param command Type of command given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"wjayee"},"content":" * @return By date of deadlines or From and To date of events.","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"wjayee"},"content":" * @throws DukeException InvalidInputException thrown if input cannot be recognised.","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"wjayee"},"content":" * @throws MissingDateException if user did not give a by date for their","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"wjayee"},"content":" * deadline or either a from or to date for their event.","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"wjayee"},"content":" public static String obtainDate(String input, Commands command) throws DukeException, MissingDateException{","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"wjayee"},"content":" if (command.equals(Commands.DEADLINE)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"wjayee"},"content":" return input.split(\" /by \")[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"wjayee"},"content":" } else if (command.equals(Commands.EVENT)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"wjayee"},"content":" String from \u003d input.split(\" /from \")[1].split(\" /to \")[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"wjayee"},"content":" String to \u003d input.split(\" /from \")[1].split(\" /to \")[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"wjayee"},"content":" return from + \"/to\" + to;","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid Input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"wjayee"},"content":" throw e;","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"wjayee"},"content":" } catch (ArrayIndexOutOfBoundsException oob) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"wjayee"},"content":" throw new MissingDateException(\"Missing Date\");","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wjayee":95}},{"path":"src/main/java/duke/utils/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" * User interface for the chatbot.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" private String greeting \u003d \"Hello! I\u0027m Toothless.\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" \"What can I do for you today?\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" \"---------------------------------\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" private String farewell \u003d \"Goodbye. Hope to see you soon!\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" \"---------------------------------\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" private String addTask \u003d \"A new task has been added!\\n \";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" * Greets the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" public void greet() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" * Bids farewell to the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" public void farewell() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" System.out.println(farewell);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" * Displays the type of input error.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" * @param e The exception thrown.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" public void showDukeError(DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" * Tells user to input the correct date format.","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":" public void showDateError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" System.out.println(\"Date cannot be recognised :( please input a valid date format yyyy-mm-dd !\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" * Tells user that there has been an error.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" public void showGeneralError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" System.out.println(\"There has been an internal error. Please try again!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"wjayee"},"content":" * Confirms that a task has been added.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"wjayee"},"content":" * @param taskDescription Description of the task added.","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"wjayee"},"content":" public void showTaskAdded(String taskDescription) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"wjayee"},"content":" System.out.println(addTask + taskDescription);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"wjayee"},"content":" * Displays a message when there are no tasks in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"wjayee"},"content":" public void showNoTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"wjayee"},"content":" System.out.println(\"You have no tasks! Yay :)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"wjayee"},"content":" * Lists out all the tasks in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"wjayee"},"content":" * @param tasksDescriptions The list of descriptions of the tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"wjayee"},"content":" public void showAllTasks(List\u003cString\u003e tasksDescriptions) {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"wjayee"},"content":" System.out.println(\"Here\u0027s your list of tasks!\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"wjayee"},"content":" for (int i \u003d 0; i \u003c tasksDescriptions.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"wjayee"},"content":" System.out.println((i + 1) + \": \" + tasksDescriptions.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"wjayee"},"content":" * Confirms that the status of a task has changed.","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"wjayee"},"content":" * @param status The current status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"wjayee"},"content":" public void showStatusChanged(String status) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"wjayee"},"content":" System.out.println(status);","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"wjayee"},"content":" * Separates the commands and output.","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"wjayee"},"content":" public void separator() {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"wjayee"},"content":" System.out.println(\"---------------------------------\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wjayee":96}},{"path":"src/test/java/duke/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import duke.utils.Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" @BeforeEach","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" void setUp() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" List\u003cString\u003e stringTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" stringTasks.add(\"/UC todo 1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" stringTasks.add(\"/UC deadline 2 /by 2023-12-12\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" stringTasks.add(\"/UC event 3 /from 2023-12-12 /to 2023-12-13\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" tasks \u003d new TaskList(stringTasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" public void createTask_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" assertEquals(new ToDo(\"4\", 0),","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" TaskList.createTask(\"todo 4\", Commands.TODO, 0));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" assertEquals(new Deadline(\"5\", 0, LocalDate.parse(\"2024-01-01\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" TaskList.createTask(\"deadline 5 /by 2024-01-01\", Commands.DEADLINE, 0));","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" assertEquals(","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" new Event(\"6\", 0, LocalDate.parse(\"2024-01-01\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" LocalDate.parse(\"2024-01-02\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" TaskList.createTask(\"event 6 /from 2024-01-01 /to 2024-01-02\",","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" Commands.EVENT, 0));","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" public void createTask_invalidDateFormat_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" assertEquals(","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" new Event(\"6\", 0, LocalDate.parse(\"2024-01-01\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" LocalDate.parse(\"2024-01-02\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":" TaskList.createTask(\"event 6 /from new year /to 2024-01-02\",","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":" Commands.EVENT, 0));","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"wjayee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"wjayee"},"content":" assertEquals(\"Text \u0027new year\u0027 could not be parsed at index 0\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"wjayee"},"content":" public void createTask_missingTitle_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"wjayee"},"content":" assertEquals(","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"wjayee"},"content":" new Event(\"6\", 0, LocalDate.parse(\"2024-01-01\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"wjayee"},"content":" LocalDate.parse(\"2024-01-02\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"wjayee"},"content":" TaskList.createTask(\"event/from 2024-01-01 /to 2024-01-02\",","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"wjayee"},"content":" Commands.EVENT, 0));","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"wjayee"},"content":" assertEquals(\"Title of the task is missing! Please give your task a name :)\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"wjayee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"wjayee"},"content":" public void deleteTask_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"wjayee"},"content":" assertEquals(\"Deadline -\u003e [ ] 2 By: Dec 12 2023 has been deleted!\",","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"wjayee"},"content":" tasks.deleteTask(\"delete 2\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"wjayee"},"content":" public void deleteTask_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"wjayee"},"content":" assertEquals(\"fail\", tasks.deleteTask(\"delete 5\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"wjayee"},"content":" assertEquals(\"Task cannot be found :(\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wjayee":98}},{"path":"src/test/java/duke/utils/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.MissingTitleException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" public void obtainTitle_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" assertEquals(\"return books\", Parser.obtainTitle(\"todo return books\", Commands.TODO));","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" assertEquals(\"write essay\",","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" Parser.obtainTitle(\"deadline write essay /by 2024-01-01\", Commands.DEADLINE));","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" assertEquals(\"hackathon\",","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" Parser.obtainTitle(\"event hackathon /from 2024-01-01 /to 2024-01-02\", Commands.EVENT));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" public void obtainTitle_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" assertEquals(\"hackathon\",","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" Parser.obtainTitle(\"event /from 2024-01-01 /to 2024-01-02\", Commands.EVENT));","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" } catch (MissingTitleException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" assertEquals(\"Title of the task is missing! Please give your task a name :)\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" fail(\"here\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wjayee":36}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"todo return books","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"delete","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"delete 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"todo return books","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"deadline write essay /by 2023-08-30","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"deadline write essay","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"deadline write essay /by today","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":"event hackathon /from 2023-08-30 /to 2023-08-31","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":"event","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":"event hackathon","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":"event hackathon /from 23/9","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":"event hackathon /to 25/9","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":"event hackathon /from 2023-08-30 /to next day","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":"mark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":"mark","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":"unmark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":"unmark","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":29}},{"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":"wjayee"},"content":"del ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"-":20,"wjayee":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":"wjayee"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","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":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"wjayee":3}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"\u003e\u003e\u003e\u003e\u003e\u003e\u003e branch-Level-9","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":"import duke.utils.Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":"import duke.utils.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":"import duke.utils.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" * Chatbot that takes in commands.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" * Constructor for creating a Duke.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" * @param path Location of the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" public Duke(String path) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" this.storage \u003d new Storage(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" this.tasks \u003d new TaskList(storage.readFile());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" * Starts the chatbot.","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" boolean end \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":" ui.greet();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" while (!end) {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" String nextInput \u003d scanner.nextLine().trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" Commands command \u003d Parser.determineCommand(nextInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":" switch (command) {","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":" case TODO:","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"wjayee"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"wjayee"},"content":" case EVENT:","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"wjayee"},"content":" Task t \u003d TaskList.createTask(nextInput, command, 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"wjayee"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"wjayee"},"content":" ui.showTaskAdded(t.getTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"wjayee"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"wjayee"},"content":" case LIST:","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"wjayee"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"wjayee"},"content":" ui.showNoTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"wjayee"},"content":" ui.showTasks(tasks.getTasksDes(1), 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"wjayee"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"wjayee"},"content":" case UNMARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"wjayee"},"content":" case MARK:","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"wjayee"},"content":" String completionStatus \u003d tasks.changeTaskCompletion(nextInput, command);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"wjayee"},"content":" ui.showStatusChanged(completionStatus);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"wjayee"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"wjayee"},"content":" case FIND:","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"wjayee"},"content":" List\u003cString\u003e matchingTasks \u003d tasks.findTask(nextInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"wjayee"},"content":" ui.showTasks(matchingTasks, 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"wjayee"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"wjayee"},"content":" case DELETE:","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"wjayee"},"content":" String deleteStatus \u003d tasks.deleteTask(nextInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"wjayee"},"content":" ui.showStatusChanged(deleteStatus);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"wjayee"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"wjayee"},"content":" case BYE:","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"wjayee"},"content":" end \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"wjayee"},"content":" String savedStatus \u003d storage.saveToDisk(tasks.getTasksDes(0));","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"wjayee"},"content":" ui.showStatusChanged(savedStatus);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"wjayee"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"wjayee"},"content":" case UNKNOWN:","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"wjayee"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"wjayee"},"content":" ui.showDukeError(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"wjayee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"wjayee"},"content":" ui.showDateError();","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"wjayee"},"content":" ui.showGeneralError();","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"wjayee"},"content":" ui.separator();","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"wjayee"},"content":" ui.farewell();","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"wjayee"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"wjayee"},"content":" new Duke(\"toothless.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":3,"wjayee":111}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"/** Encapsulates exceptions due to wrong input. */","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" * Constructor for DukeException.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" * @param message Exception message.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":12}},{"path":"src/main/java/duke/exceptions/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"/** Encapsulates exceptions due to invalid input. */","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"public class InvalidInputException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" * Constructor for Exceptions.InvalidInputException.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" * @param message Exception message.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" public InvalidInputException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * Returns the description of the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" * @return Description of exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" return \"I don\u0027t understand what you just said :(\";","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":23}},{"path":"src/main/java/duke/exceptions/MissingDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"/** Encapsulates exceptions due to missing dates. */","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"public class MissingDateException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" * Constructor for Exceptions.MissingDateException.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" * @param message Exception message.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" public MissingDateException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * Returns the description of the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" * @return Description of exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" return \"Date of the task is missing! Please give your task a date :)\";","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":24}},{"path":"src/main/java/duke/exceptions/MissingTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"/** Encapsulates exceptions due to missing task in the task list. */","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"public class MissingTaskException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" * Constructor for Exceptions.MissingTaskException.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" * @param message Exception message.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" public MissingTaskException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * Returns the description of the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * @return Description of exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" return \"Task cannot be found :(\";","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":21}},{"path":"src/main/java/duke/exceptions/MissingTitleException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"/** Encapsulates exceptions due to missing task titles. */","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"public class MissingTitleException extends DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" * Constructor for Exceptions.MissingTitleException.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" * @param message Exception message.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" public MissingTitleException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * Returns the description of the exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" * @return Description of exception.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" return \"Title of the task is missing! Please give your task a name :)\";","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":24}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"import java.util.List;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" * Class that retrieves and stores the list of tasks locally.","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" private String path;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" private File tempFile;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" * Constructor for a locally saved file.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" * @param path Location of the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" public Storage(String path) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" this.path \u003d path;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" this.tempFile \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" * Reads the previously saved list of tasks and returns it in a list of task descriptions.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" * @return A list of task descriptions.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" public List\u003cString\u003e readFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" List\u003cString\u003e output \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" File f \u003d new File(path);","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" String task \u003d s.nextLine().trim();","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" output.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" return output;","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" return output;","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" * Writes a string of tasks to a file.","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" * @param fw File to be written in.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" * @param tasks Tasks to be written.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" private void writeToFile(FileWriter fw, String tasks) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":" fw.write(tasks);","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":" fw.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"wjayee"},"content":" * Updates the local file with the new list of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"wjayee"},"content":" * @param tasks List of task descriptions.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"wjayee"},"content":" * @return The status of whether the save was successful or not.","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"wjayee"},"content":" public String saveToDisk(List\u003cString\u003e tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"wjayee"},"content":" FileWriter fw \u003d new FileWriter(path);","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"wjayee"},"content":" String input \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"wjayee"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"wjayee"},"content":" input \u003d input + tasks.get(i) + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"wjayee"},"content":" writeToFile(fw, input);","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"wjayee"},"content":" return \"Tasks saved successfully\";","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"wjayee"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"wjayee"},"content":" return \"Tasks could not be saved\";","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":75,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"wjayee":77}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import duke.utils.DukeDateFormat;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"/** Encapsulates a task with a deadline. */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" /** Date that task is to be completed by. */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" private LocalDate by;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * Constructor for Deadline.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * @param taskName Name of deadline.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" * @param by Date where the task is due.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" public Deadline(String taskName, int isDone, LocalDate by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" super(taskName, isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" * @return Status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" public String getTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" return \"Deadline -\u003e\" + super.getTask() + \" By: \" + DukeDateFormat.dateToString(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" * @return String representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" return super.toString().replace(\"/TASK\", \"deadline \") + \" /by \" + by.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":40}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import duke.utils.DukeDateFormat;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"/** Encapsulates a task with a from and to date. */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" /** Date where the event start. */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" private LocalDate from;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" /** Date where the event ends. */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" private LocalDate to;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" * Constructor for Event.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" * @param taskName Name of event.","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" * @param from Date where event starts.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" * @param to Date where event ends.","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" public Event(String taskName, int isDone, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" super(taskName, isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" * Returns duration of the event.","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" * @return Duration of event.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" private String getDuration() {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" return DukeDateFormat.dateToString(from) + \" - \" + DukeDateFormat.dateToString(to);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the status of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" * @return Status of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" public String getTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" return \"Event -\u003e\" + super.getTask() + \" (\" + getDuration() + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":" * @return String representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" String fromDate \u003d from.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" String toDate \u003d to.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" return super.toString().replace(\"/TASK\", \"event \") + \" /from \" + fromDate + \" /to \" + toDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":55}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"/** Encapsulates a task with a task name and Boolean isDone. */","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" /** Completion status of the task. */","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" /** Title of the task. */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" private String taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" * Constructor for Task.","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" * @param taskName Name of task.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" public Task(String taskName, int isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" this.isDone \u003d isDone \u003d\u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the status of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" * @return Status of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" public String getTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" String output \u003d (isDone ? \" [X] \" : \" [ ] \") + this.taskName;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" return output;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" * Marks the status of the task as completed.","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" * @return Dialogue to confirm the completion status of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" public String markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" return \"\u0027\" + this.taskName + \"\u0027\" + \" is completed! Good job :)\";","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" * Marks the status of the task as uncompleted.","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" * @return Dialogue to confirm the completion status of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" public String markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":" return \"\u0027\" + this.taskName + \"\u0027\" + \" is now not completed :(\";","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" * @return String representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" return (isDone ? \"/C \" : \"/UC \") + \"/TASK\" + taskName;","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wjayee":55}},{"path":"src/main/java/duke/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.MissingTaskException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"import duke.utils.Commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"import duke.utils.DukeDateFormat;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"import duke.utils.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" * Class that contains the list of tasks when the chatbot is active.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" public TaskList(List\u003cString\u003e stringTasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" this.tasks \u003d stringToTask(stringTasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" * Converts a list of task descriptions to a list of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" * @param input List of task descriptions.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" * @return List of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" private static List\u003cTask\u003e stringToTask(List\u003cString\u003e input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" List\u003cTask\u003e output \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" for (int i \u003d 0; i \u003c input.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" String nextInput \u003d input.get(i);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" Commands command \u003d Parser.determineCommand(nextInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" int isDone \u003d nextInput.contains(\"/UC\") ? 0 : 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" Task task \u003d createTask(nextInput, command, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" output.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" * Creates a task based on the input given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" * @param input The input given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" * @param command Type of command in the input","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" * @param isDone A field for task created.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" * @return The task created.","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" * @throws DukeException If title or date does not exist, or if input is invalid.","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":" * @throws DateTimeParseException If date exists but is in the wrong format.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"wjayee"},"content":" public static Task createTask(String input, Commands command, int isDone)","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"wjayee"},"content":" throws DukeException, DateTimeParseException {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"wjayee"},"content":" switch (command) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"wjayee"},"content":" case TODO:","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"wjayee"},"content":" String todoTitle \u003d Parser.obtainTitle(input, Commands.TODO);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"wjayee"},"content":" return new ToDo(todoTitle, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"wjayee"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"wjayee"},"content":" String deadlineTitle \u003d Parser.obtainTitle(input, Commands.DEADLINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"wjayee"},"content":" String by \u003d Parser.obtainDate(input, Commands.DEADLINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"wjayee"},"content":" LocalDate byDate \u003d DukeDateFormat.stringToDate(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"wjayee"},"content":" return new Deadline(deadlineTitle, isDone, byDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"wjayee"},"content":" case EVENT:","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"wjayee"},"content":" String eventTitle \u003d Parser.obtainTitle(input, Commands.EVENT);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"wjayee"},"content":" String fromTo \u003d Parser.obtainDate(input, Commands.EVENT);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"wjayee"},"content":" LocalDate from \u003d DukeDateFormat.stringToDate(fromTo.split(\"/to\")[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"wjayee"},"content":" LocalDate to \u003d DukeDateFormat.stringToDate(fromTo.split(\"/to\")[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"wjayee"},"content":" return new Event(eventTitle, isDone, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"wjayee"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"wjayee"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"wjayee"},"content":" throw e;","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"wjayee"},"content":" * Checks if the list of tasks is empty.","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"wjayee"},"content":" * @return True if list is empty.","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"wjayee"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"wjayee"},"content":" return tasks.isEmpty();","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"wjayee"},"content":" * Returns a list of task descriptions.","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"wjayee"},"content":" * @param typeOfDes The type of description to be returned.","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"wjayee"},"content":" * @return A list of description to be stored locally if typeOfDes \u003d 0 else","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"wjayee"},"content":" * a list of description to be read by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"wjayee"},"content":" public List\u003cString\u003e getTasksDes(int typeOfDes) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"wjayee"},"content":" List\u003cString\u003e output \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"wjayee"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"wjayee"},"content":" if (typeOfDes \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"wjayee"},"content":" output.add(tasks.get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"wjayee"},"content":" output.add(tasks.get(i).getTask());","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"wjayee"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"wjayee"},"content":" * Updates the completion status of their task and returns a String as the dialogue.","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"wjayee"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"wjayee"},"content":" * @param command Type of command given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"wjayee"},"content":" * @return Dialogue for the bot to confirm status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"wjayee"},"content":" * @throws DukeException Exceptions.InvalidInputException thrown if input","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"wjayee"},"content":" * cannot be recognised. Exceptions.MissingTaskException thrown","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"wjayee"},"content":" * @throws DukeException InvalidInputException thrown if input","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"wjayee"},"content":" * cannot be recognised. MissingTaskException thrown","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"wjayee"},"content":" * if task cannot be found in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"wjayee"},"content":" public String changeTaskCompletion(String input, Commands command) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"wjayee"},"content":" int taskNum \u003d Integer.valueOf(input.split(\" \")[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"wjayee"},"content":" Task task \u003d tasks.get(taskNum - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"wjayee"},"content":" if (command.equals(Commands.UNMARK)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"wjayee"},"content":" return task.markAsUndone();","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"wjayee"},"content":" } else if (command.equals(Commands.MARK)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"wjayee"},"content":" return task.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"wjayee"},"content":" } catch (IndexOutOfBoundsException ioob) {","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"wjayee"},"content":" throw new MissingTaskException(\"Missing Task\");","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"wjayee"},"content":" * Deletes a task from the task list and returns a String as the dialogue.","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"wjayee"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"wjayee"},"content":" * @return Dialogue to confirm the deletion of the task from the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"wjayee"},"content":" * @throws DukeException Exceptions.InvalidInputException thrown if input","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"wjayee"},"content":" * cannot be recognised. Exceptions.MissingTaskException thrown","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"wjayee"},"content":" * if task cannot be found in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"wjayee"},"content":" public String deleteTask(String input) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"wjayee"},"content":" int taskNum \u003d Integer.valueOf(input.split(\" \")[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"wjayee"},"content":" Task deleted \u003d tasks.remove(taskNum - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"wjayee"},"content":" return deleted.getTask() + \" has been deleted!\";","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"wjayee"},"content":" } catch (IndexOutOfBoundsException ioob) {","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"wjayee"},"content":" throw new MissingTaskException(\"Missing Task\");","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"wjayee"},"content":" * Returns tasks that matches the keyword provided by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"wjayee"},"content":" * @param input The user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"wjayee"},"content":" * @return The tasks that matched the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"wjayee"},"content":" * @throws DukeException If user did not provide a keyword or if the input was invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"wjayee"},"content":" public List\u003cString\u003e findTask(String input) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"wjayee"},"content":" String keyword \u003d Parser.obtainTitle(input, Commands.FIND);","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"wjayee"},"content":" List\u003cString\u003e results \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"wjayee"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"wjayee"},"content":" Task t \u003d tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"wjayee"},"content":" if (t.getTask().contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"wjayee"},"content":" results.add(t.getTask());","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"wjayee"},"content":" return results;","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"wjayee"},"content":" throw e;","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":189,"author":{"gitId":"wjayee"},"content":" * Adds a task to the list of tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":190,"author":{"gitId":"wjayee"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"wjayee"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"wjayee"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wjayee":196}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"/** Encapsulates a task. */","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":" * Constructor for ToDo.","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" * @param taskName Name of todo.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" public ToDo(String taskName, int isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" super(taskName, isDone);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * @return Status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" public String getTask() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" return \"To Do -\u003e\" + super.getTask();","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" * @return String representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" return super.toString().replace(\"/TASK\", \"todo \");","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":30}},{"path":"src/main/java/duke/utils/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":" * Types of commands that Duke can recognise.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"public enum Commands {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":" TODO,","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" DEADLINE,","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" EVENT,","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" LIST,","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":" UNMARK,","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" MARK,","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" FIND,","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" DELETE,","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" BYE,","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" UNKNOWN","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":17}},{"path":"src/main/java/duke/utils/DukeDateFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import java.time.format.TextStyle;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" * Class to format the date.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"public class DukeDateFormat {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * Converts a string to LocalDate.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * @param dateInput String representation of date.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" * @return The LocalDate representation of date.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" public static LocalDate stringToDate(String dateInput) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" LocalDate date \u003d LocalDate.parse(dateInput);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" return date;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" throw e;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" * Converts a date to String.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" * @param date LocalDate representation of date.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" * @return The string representation of date.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" public static String dateToString(LocalDate date) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" String day \u003d String.valueOf(date.getDayOfMonth());","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" String month \u003d date.getMonth().getDisplayName(TextStyle.SHORT, Locale.ENGLISH);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" String year \u003d String.valueOf(date.getYear());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" return month + \" \" + day + \" \" + year;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wjayee":40}},{"path":"src/main/java/duke/utils/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.MissingDateException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.MissingTitleException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" * Makes sense of the user command.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" * Returns the command that is called by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" * @return The type of command called.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" public static Commands determineCommand(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" for (Commands command: Commands.values()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" if (input.contains(command.name().toLowerCase())) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" return command;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" return Commands.UNKNOWN;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" * Returns the title of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" * @param command Type of command given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" * @return The title of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" * @throws DukeException InvalidInputException thrown if input cannot be recognised.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" * @throws MissingTitleException if user did not give a title for their task.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" public static String obtainTitle(String input, Commands command)","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" throws DukeException, MissingTitleException {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" String title;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" if (command.equals(Commands.TODO)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" title \u003d input.split(\"todo \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" } else if (command.equals(Commands.DEADLINE)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" title \u003d input.split(\"deadline \")[1].split(\"/by \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" } else if (command.equals(Commands.EVENT)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":" title \u003d input.split(\"event \")[1].split(\"/from \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" } else if (command.equals(Commands.FIND)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" title \u003d input.split(\"find \")[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":" if (title.trim().isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"wjayee"},"content":" throw new MissingTitleException(\"Missing Title\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"wjayee"},"content":" return title.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"wjayee"},"content":" } catch (ArrayIndexOutOfBoundsException | MissingTitleException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"wjayee"},"content":" throw new MissingTitleException(\"Missing Title\");","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"wjayee"},"content":" * Returns the date specified by the user for their task.","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"wjayee"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"wjayee"},"content":" * @param command Type of command given by the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"wjayee"},"content":" * @return By date of deadlines or From and To date of events.","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"wjayee"},"content":" * @throws DukeException InvalidInputException thrown if input cannot be recognised.","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"wjayee"},"content":" * @throws MissingDateException if user did not give a by date for their","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"wjayee"},"content":" * deadline or either a from or to date for their event.","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"wjayee"},"content":" public static String obtainDate(String input, Commands command) throws DukeException, MissingDateException {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"wjayee"},"content":" if (command.equals(Commands.DEADLINE)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"wjayee"},"content":" return input.split(\" /by \")[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"wjayee"},"content":" } else if (command.equals(Commands.EVENT)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"wjayee"},"content":" String from \u003d input.split(\" /from \")[1].split(\" /to \")[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"wjayee"},"content":" String to \u003d input.split(\" /from \")[1].split(\" /to \")[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"wjayee"},"content":" return from + \"/to\" + to;","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid Input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"wjayee"},"content":" throw e;","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"wjayee"},"content":" } catch (ArrayIndexOutOfBoundsException oob) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"wjayee"},"content":" throw new MissingDateException(\"Missing Date\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"wjayee"},"content":" throw new InvalidInputException(\"Invalid input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wjayee":98}},{"path":"src/main/java/duke/utils/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":" * User interface for the chatbot.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":" private String greeting \u003d \"Hello! I\u0027m Toothless.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" + \"What can I do for you today?\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" + \"---------------------------------\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" private String farewell \u003d \"Goodbye. Hope to see you soon!\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" + \"---------------------------------\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" private String addTask \u003d \"A new task has been added!\\n \";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" * Greets the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" public void greet() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" * Bids farewell to the user.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" public void farewell() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" System.out.println(farewell);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" * Displays the type of input error.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" * @param e The exception thrown.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" public void showDukeError(DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" * Tells user to input the correct date format.","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":" public void showDateError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" System.out.println(\"Date cannot be recognised :( please input a valid date format yyyy-mm-dd !\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" * Tells user that there has been an error.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" public void showGeneralError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" System.out.println(\"There has been an internal error. Please try again!\");","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"wjayee"},"content":" * Confirms that a task has been added.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"wjayee"},"content":" * @param taskDescription Description of the task added.","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"wjayee"},"content":" public void showTaskAdded(String taskDescription) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"wjayee"},"content":" System.out.println(addTask + taskDescription);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"wjayee"},"content":" * Displays a message when there are no tasks in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"wjayee"},"content":" public void showNoTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"wjayee"},"content":" System.out.println(\"You have no tasks! Yay :)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"wjayee"},"content":" * Lists out all the tasks in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"wjayee"},"content":" * 0 represents all tasks, other numbers represent matching tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"wjayee"},"content":" * @param tasksDescriptions The list of descriptions of the tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"wjayee"},"content":" public void showTasks(List\u003cString\u003e tasksDescriptions, int type) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"wjayee"},"content":" if (tasksDescriptions.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"wjayee"},"content":" showNoTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"wjayee"},"content":" if (type \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"wjayee"},"content":" System.out.println(\"Here\u0027s your list of tasks!\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"wjayee"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"wjayee"},"content":" System.out.println(\"Here\u0027s the matching tasks!\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"wjayee"},"content":" for (int i \u003d 0; i \u003c tasksDescriptions.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"wjayee"},"content":" System.out.println((i + 1) + \": \" + tasksDescriptions.get(i));","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"wjayee"},"content":" * Confirms that the status of a task has changed.","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"wjayee"},"content":" * @param status The current status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"wjayee"},"content":" public void showStatusChanged(String status) {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"wjayee"},"content":" System.out.println(status);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"wjayee"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"wjayee"},"content":" * Separates the commands and output.","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"wjayee"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"wjayee"},"content":" public void separator() {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"wjayee"},"content":" System.out.println(\"---------------------------------\");","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"wjayee":105}},{"path":"src/test/java/duke/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":"import duke.utils.Commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" @BeforeEach","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" void setUp() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" List\u003cString\u003e stringTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":" stringTasks.add(\"/UC todo 1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" stringTasks.add(\"/UC deadline 2 /by 2023-12-12\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" stringTasks.add(\"/UC event 3 /from 2023-12-12 /to 2023-12-13\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" tasks \u003d new TaskList(stringTasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" public void createTask_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" assertEquals(new ToDo(\"4\", 0),","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" TaskList.createTask(\"todo 4\", Commands.TODO, 0));","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" assertEquals(new Deadline(\"5\", 0, LocalDate.parse(\"2024-01-01\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":" TaskList.createTask(\"deadline 5 /by 2024-01-01\", Commands.DEADLINE, 0));","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"wjayee"},"content":" assertEquals(","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"wjayee"},"content":" new Event(\"6\", 0, LocalDate.parse(\"2024-01-01\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"wjayee"},"content":" LocalDate.parse(\"2024-01-02\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"wjayee"},"content":" TaskList.createTask(\"event 6 /from 2024-01-01 /to 2024-01-02\",","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"wjayee"},"content":" Commands.EVENT, 0));","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"wjayee"},"content":" public void createTask_invalidDateFormat_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"wjayee"},"content":" assertEquals(","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"wjayee"},"content":" new Event(\"6\", 0, LocalDate.parse(\"2024-01-01\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"wjayee"},"content":" LocalDate.parse(\"2024-01-02\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"wjayee"},"content":" TaskList.createTask(\"event 6 /from new year /to 2024-01-02\",","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"wjayee"},"content":" Commands.EVENT, 0));","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"wjayee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"wjayee"},"content":" assertEquals(\"Text \u0027new year\u0027 could not be parsed at index 0\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"wjayee"},"content":" public void createTask_missingTitle_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"wjayee"},"content":" assertEquals(","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"wjayee"},"content":" new Event(\"6\", 0, LocalDate.parse(\"2024-01-01\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"wjayee"},"content":" LocalDate.parse(\"2024-01-02\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"wjayee"},"content":" TaskList.createTask(\"event/from 2024-01-01 /to 2024-01-02\",","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"wjayee"},"content":" Commands.EVENT, 0));","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"wjayee"},"content":" assertEquals(\"Title of the task is missing! Please give your task a name :)\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"wjayee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"wjayee"},"content":" public void deleteTask_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"wjayee"},"content":" assertEquals(\"Deadline -\u003e [ ] 2 By: Dec 12 2023 has been deleted!\",","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"wjayee"},"content":" tasks.deleteTask(\"delete 2\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"wjayee"},"content":" public void deleteTask_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"wjayee"},"content":" assertEquals(\"fail\", tasks.deleteTask(\"delete 5\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"wjayee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"wjayee"},"content":" assertEquals(\"Task cannot be found :(\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wjayee":99}},{"path":"src/test/java/duke/utils/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"package duke.utils;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"import duke.exceptions.MissingTitleException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":" public void obtainTitle_success() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":" assertEquals(\"return books\", Parser.obtainTitle(\"todo return books\", Commands.TODO));","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":" assertEquals(\"write essay\",","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":" Parser.obtainTitle(\"deadline write essay /by 2024-01-01\", Commands.DEADLINE));","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":" assertEquals(\"hackathon\",","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":" Parser.obtainTitle(\"event hackathon /from 2024-01-01 /to 2024-01-02\", Commands.EVENT));","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":" public void obtainTitle_exceptionThrown() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":" assertEquals(\"hackathon\",","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":" Parser.obtainTitle(\"event /from 2024-01-01 /to 2024-01-02\", Commands.EVENT));","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":" fail();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"wjayee"},"content":" } catch (MissingTitleException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"wjayee"},"content":" assertEquals(\"Title of the task is missing! Please give your task a name :)\", e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"wjayee"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"wjayee"},"content":" fail(\"here\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"wjayee"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"wjayee"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"wjayee":38}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wjayee"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"wjayee"},"content":"todo return books","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wjayee"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wjayee"},"content":"delete","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wjayee"},"content":"delete 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wjayee"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wjayee"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wjayee"},"content":"todo return books","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wjayee"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wjayee"},"content":"deadline write essay /by 2023-08-30","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"wjayee"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wjayee"},"content":"deadline write essay","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wjayee"},"content":"deadline write essay /by today","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"wjayee"},"content":"event hackathon /from 2023-08-30 /to 2023-08-31","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"wjayee"},"content":"event","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wjayee"},"content":"event hackathon","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wjayee"},"content":"event hackathon /from 23/9","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wjayee"},"content":"event hackathon /to 25/9","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wjayee"},"content":"event hackathon /from 2023-08-30 /to next day","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"wjayee"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wjayee"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wjayee"},"content":"mark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wjayee"},"content":"mark","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wjayee"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wjayee"},"content":"unmark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wjayee"},"content":"unmark","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wjayee"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wjayee"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wjayee"},"content":"find book","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"wjayee"},"content":"find Aug 30","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"wjayee"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wjayee":31}},{"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":"wjayee"},"content":"del ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"-":20,"wjayee":1}}] diff --git a/wjayee_ip_master/commits.json b/wjayee_ip_master/commits.json index 49caf0da..35df6912 100644 --- a/wjayee_ip_master/commits.json +++ b/wjayee_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"wjayee":[{"date":"2023-08-22","commitResults":[{"hash":"e3344433c3af71d6b498edff54d212433aaf334a","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":6}}},{"hash":"11a12581292c716282a0c712b2f6f58669529cfb","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"fac9d53ac96598d33a9fac3c9ae88e3745b62606","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"f671bae02ab8d19264592c15b45ee7d26e646b2d","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":3}}}]},{"date":"2023-08-23","commitResults":[{"hash":"f72eff3c2a4ff698aa0fdb1f5a4dbccac9375984","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":22}}},{"hash":"ba7943e37598439cbcdb2062f239f817e85d6ea8","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":7,"deletions":9},"bat":{"insertions":2,"deletions":2}}},{"hash":"67a9017261bd879c9a6782de8e2444f2a2e8d1ba","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":1},"java":{"insertions":204,"deletions":52}}},{"hash":"7626f84a6c974c30cc0b7ce56cd2529f9ce2d9cf","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":19,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"556571f212667cb764847fd1896a519b14cd5d39","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":4}}}]},{"date":"2023-08-29","commitResults":[{"hash":"f23d0affb47a04fa94894f7c56a8522d3c7a7d41","isMergeCommit":false,"messageTitle":"branch-Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":182,"deletions":46}}},{"hash":"971d156ea72c614701da01e2a6e6ea4429b4ab58","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b67d164c12be832e4293e133b4abe10f4d02daeb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wjayee/ip","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"937a2ac3b6e095652003f70ff60212946d5a347a","isMergeCommit":false,"messageTitle":"Add Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":74,"deletions":18}}},{"hash":"63c675f5ad06049832095fb048b598ea56ee7f6e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"40ca8ccf24a65447e77ead5c28033fec94e20d42","isMergeCommit":false,"messageTitle":"Add A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":333,"deletions":236}}},{"hash":"ea419f25684f982a4729964333fac8922f94a2cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"3982624ed753ae5a98d35af0c28adae13439727e","isMergeCommit":false,"messageTitle":"Add A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":29}}}]},{"date":"2023-08-31","commitResults":[{"hash":"d7302467683d276865729339a60010f1280a67b1","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"8005e54fbc629338c46ab2f3b37a1745ec3e03a9","isMergeCommit":false,"messageTitle":"Add A-Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"00ded565c97712da0cd0068cdf69143ed7cb54d1","isMergeCommit":false,"messageTitle":"Add A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":185,"deletions":49}}},{"hash":"9b63f62a1cc17c585776cb9a12ae1182ed9d6977","isMergeCommit":false,"messageTitle":"Add A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"wjayee":{"java":988,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":3,"txt":29}},"authorContributionVariance":{"wjayee":55037.98},"authorDisplayNameMap":{"wjayee":"CS2103T-F08-3 WONG.. YEE"}} +{"authorDailyContributionsMap":{"wjayee":[{"date":"2023-08-22","commitResults":[{"hash":"e3344433c3af71d6b498edff54d212433aaf334a","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":6}}},{"hash":"11a12581292c716282a0c712b2f6f58669529cfb","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"fac9d53ac96598d33a9fac3c9ae88e3745b62606","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"f671bae02ab8d19264592c15b45ee7d26e646b2d","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":3}}}]},{"date":"2023-08-23","commitResults":[{"hash":"f72eff3c2a4ff698aa0fdb1f5a4dbccac9375984","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":22}}},{"hash":"ba7943e37598439cbcdb2062f239f817e85d6ea8","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":7,"deletions":9},"bat":{"insertions":2,"deletions":2}}},{"hash":"67a9017261bd879c9a6782de8e2444f2a2e8d1ba","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":1},"java":{"insertions":204,"deletions":52}}},{"hash":"7626f84a6c974c30cc0b7ce56cd2529f9ce2d9cf","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":19,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"556571f212667cb764847fd1896a519b14cd5d39","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":4}}}]},{"date":"2023-08-29","commitResults":[{"hash":"f23d0affb47a04fa94894f7c56a8522d3c7a7d41","isMergeCommit":false,"messageTitle":"branch-Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":182,"deletions":46}}},{"hash":"971d156ea72c614701da01e2a6e6ea4429b4ab58","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b67d164c12be832e4293e133b4abe10f4d02daeb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/wjayee/ip","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"937a2ac3b6e095652003f70ff60212946d5a347a","isMergeCommit":false,"messageTitle":"Add Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":74,"deletions":18}}},{"hash":"63c675f5ad06049832095fb048b598ea56ee7f6e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"40ca8ccf24a65447e77ead5c28033fec94e20d42","isMergeCommit":false,"messageTitle":"Add A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":333,"deletions":236}}},{"hash":"ea419f25684f982a4729964333fac8922f94a2cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"3982624ed753ae5a98d35af0c28adae13439727e","isMergeCommit":false,"messageTitle":"Add A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":29}}}]},{"date":"2023-08-31","commitResults":[{"hash":"d7302467683d276865729339a60010f1280a67b1","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"8005e54fbc629338c46ab2f3b37a1745ec3e03a9","isMergeCommit":false,"messageTitle":"Add A-Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"00ded565c97712da0cd0068cdf69143ed7cb54d1","isMergeCommit":false,"messageTitle":"Add A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":185,"deletions":49}}},{"hash":"9b63f62a1cc17c585776cb9a12ae1182ed9d6977","isMergeCommit":false,"messageTitle":"Add A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":5}}}]},{"date":"2023-09-01","commitResults":[{"hash":"5d3d9871ccbcc0b6408aab65905db3a8443da1a6","isMergeCommit":false,"messageTitle":"Add A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":97}}},{"hash":"f262a44085f286002b36dc2c1d4d91cb775563f3","isMergeCommit":false,"messageTitle":"Add A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"80db73c7044193ee75b530729e47a6089a9c3050","isMergeCommit":false,"messageTitle":"Add Level-9","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":54,"deletions":10}}},{"hash":"b2a4f3ba0331ff5faddbdcec722201be11489cc4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"c04f0d919ddd2ddf4bac7c008bf2c2799f07e326","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"4847aad1878b7335cb84a7d08154be9b5885ce48","isMergeCommit":false,"messageTitle":"Resolve conflicts","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":32}}},{"hash":"99bd43ff7b24f8c1a5a863fee4fa24bef3c2f8c2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Duke.java\n#\tsrc/main/java/duke/tasks/TaskList.java\n#\tsrc/main/java/duke/utils/Parser.java\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"wjayee":{"java":1065,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":3,"txt":31}},"authorContributionVariance":{"wjayee":54467.0},"authorDisplayNameMap":{"wjayee":"CS2103T-F08-3 WONG.. YEE"}} diff --git a/wr1159_ip_master/authorship.json b/wr1159_ip_master/authorship.json index 5f13a952..4511db6c 100644 --- a/wr1159_ip_master/authorship.json +++ b/wr1159_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":" protected String deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":" public Deadline (String description, String deadline) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":" return \"[D][\" + this.getStatusIcon() + \"] \" + this.description + \" (by: \" + this.deadline + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wr1159"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wr1159":12}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":" private static final String NAME \u003d \"Sisyphus\";","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":" private static final String HORIZONTAL_LINE \u003d \"_________________________________\";","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":" private static final String LOGO \u003d \"\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":" \" ,-\u0027\\\"\\\"\\\"`-.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":" \" ,\u0027 `.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wr1159"},"content":" \" / ` \\\\\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wr1159"},"content":" \" ( / )\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wr1159"},"content":" \" | \\\" |\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wr1159"},"content":" \" ( )\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"wr1159"},"content":" \" `.\\\\\\\\ \\\\ /\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wr1159"},"content":" \" `:. , \\\\ ,\\\\ _\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wr1159"},"content":" \" WE `:-.___,-`-.{\\\\)\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wr1159"},"content":" \" MUST `. |/ \\\\\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wr1159"},"content":" \" GO `. \\\\ \\\\\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wr1159"},"content":" \" ON `-. _\\\\,)\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wr1159"},"content":" \" `. |,-||\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wr1159"},"content":" \" `.|| ||\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wr1159"},"content":" public static void main(String[] args) throws SisyphusException{","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"wr1159"},"content":" greet();","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wr1159"},"content":" handleCommand();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wr1159"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"wr1159"},"content":" * Greets user with name.","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"wr1159"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"wr1159"},"content":" public static void greet() {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"wr1159"},"content":" System.out.println(LOGO);","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"wr1159"},"content":" System.out.println(\"Hello, I\u0027m \" + NAME + \".\");","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"wr1159"},"content":" System.out.println(\"What can I do for you? Do you want to roll a boulder?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"wr1159"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"wr1159"},"content":" * Main logic flow to take in the following commands","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"wr1159"},"content":" * 1. \"bye\" to exit chat","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"wr1159"},"content":" * 2. \"list\" to list tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"wr1159"},"content":" * 3. \"mark\" to mark task","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"wr1159"},"content":" * 4. \"unmark\" to unmark task","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"wr1159"},"content":" * 5. \"delete\" to delete task","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"wr1159"},"content":" * 5. \"todo\" to create a todo","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"wr1159"},"content":" * 6. \"deadline\" to create a deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"wr1159"},"content":" * 7. \"event\" to create an event","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"wr1159"},"content":" * 8. default behaviour is to add task","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"wr1159"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"wr1159"},"content":" public static void handleCommand() throws SisyphusException {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"wr1159"},"content":" boolean isChatting \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"wr1159"},"content":" Scanner scanner\u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"wr1159"},"content":" String input, command, params \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"wr1159"},"content":" String[] inputArray;","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"wr1159"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"wr1159"},"content":" while (isChatting) {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"wr1159"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"wr1159"},"content":" inputArray \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"wr1159"},"content":" command \u003d inputArray[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"wr1159"},"content":" if (inputArray.length \u003e 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"wr1159"},"content":" params \u003d inputArray[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"wr1159"},"content":" switch (command) {","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"wr1159"},"content":" case (\"bye\"): {","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"wr1159"},"content":" System.out.println(\"Goodbye, it was nice chatting with you.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"wr1159"},"content":" isChatting \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"wr1159"},"content":" case (\"list\"): {","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"wr1159"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"wr1159"},"content":" System.out.println(i + 1 + \". \" + taskList.get(i));","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"wr1159"},"content":" case (\"mark\"): {","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"wr1159"},"content":" int index;","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"wr1159"},"content":" index \u003d Integer.parseInt(params.split(\" \")[0]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"wr1159"},"content":" taskList.get(index).setDone(true);","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"wr1159"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"You must include a valid task number. \"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"wr1159"},"content":" + \"Use list to see what is valid.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"wr1159"},"content":" System.out.println(\"The following item has been marked as done.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"wr1159"},"content":" System.out.println(taskList.get(index));","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"wr1159"},"content":" case (\"unmark\"): {","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"wr1159"},"content":" int index;","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"wr1159"},"content":" index \u003d Integer.parseInt(params.split(\" \")[0]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"wr1159"},"content":" taskList.get(index).setDone(false);","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"wr1159"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"You must include a valid task number. \"","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"wr1159"},"content":" + \"Use list to see what is valid.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"wr1159"},"content":" System.out.println(\"The following item has been unmarked and is now uncompleted.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"wr1159"},"content":" System.out.println(taskList.get(index));","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"wr1159"},"content":" case (\"delete\"): {","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"wr1159"},"content":" int index;","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"wr1159"},"content":" Task deletedTask;","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"wr1159"},"content":" index \u003d Integer.parseInt(params.split(\" \")[0]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"wr1159"},"content":" deletedTask \u003d taskList.get(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"wr1159"},"content":" taskList.remove(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"wr1159"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"You must include a valid task number. \"","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"wr1159"},"content":" + \"Use list to see what is valid.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"wr1159"},"content":" System.out.println(\"The following item has been deleted from the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"wr1159"},"content":" System.out.println(deletedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"wr1159"},"content":" case (\"todo\"): {","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"wr1159"},"content":" if (params \u003d\u003d \"\" || params \u003d\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"Include a description for the ToDo. \\nHere is an example: \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"wr1159"},"content":" \"todo Roll Boulder\");","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"wr1159"},"content":" ToDo todoTask \u003d new ToDo(params);","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"wr1159"},"content":" taskList.add(todoTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"wr1159"},"content":" System.out.println(\"The following ToDo has been added.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"wr1159"},"content":" System.out.println(todoTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"wr1159"},"content":" System.out.println(\"You now have \" + taskList.size() + \" items in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"wr1159"},"content":" case (\"deadline\"): {","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"wr1159"},"content":" String description, deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"wr1159"},"content":" description \u003d params.split(\" /by \")[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"wr1159"},"content":" deadline \u003d params.split(\" /by \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"wr1159"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"Include both description and deadline for a deadline. \\nHere \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"wr1159"},"content":" \"is an example: deadline roll boulder /by eternity\");","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"wr1159"},"content":" Deadline deadlineTask \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"wr1159"},"content":" taskList.add(deadlineTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"wr1159"},"content":" System.out.println(\"The following deadline has been added.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"wr1159"},"content":" System.out.println(deadlineTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"wr1159"},"content":" System.out.println(\"You now have \" + taskList.size() + \" items in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"wr1159"},"content":" case (\"event\"): {","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"wr1159"},"content":" String description, fromAndToTime, from, to;","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"wr1159"},"content":" description \u003d params.split(\" /from \")[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"wr1159"},"content":" fromAndToTime \u003d params.split(\" /from \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"wr1159"},"content":" from \u003d fromAndToTime.split(\" /to \")[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"wr1159"},"content":" to \u003d fromAndToTime.split(\" /to \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"wr1159"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"Include the description, from and to time for an event. \\nHere is\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"wr1159"},"content":" \" an example: event roll boulder /from past /to eternity\");","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"wr1159"},"content":" Event eventTask \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"wr1159"},"content":" taskList.add(eventTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"wr1159"},"content":" System.out.println(\"The following event has been added.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"wr1159"},"content":" System.out.println(eventTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"wr1159"},"content":" System.out.println(\"You now have \" + taskList.size() + \" items in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"wr1159"},"content":" default: {","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"Enter a valid command. Available comments are \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"wr1159"},"content":" \"bye, list, event, deadline, todo, mark, unmark.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"wr1159"},"content":" } catch (SisyphusException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"wr1159"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"wr1159":194,"-":3}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":" protected String start, end;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wr1159"},"content":" return \"[E][\" + this.getStatusIcon() + \"] \" + this.description + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wr1159"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wr1159":13}},{"path":"src/main/java/SisyphusException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"public class SisyphusException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":" public SisyphusException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":" super(message + \"\\nOtherwise, I can\u0027t be bothered with it.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wr1159":6}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wr1159"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wr1159"},"content":" public void setDone(boolean state) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wr1159"},"content":" this.isDone \u003d state;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wr1159"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"wr1159"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"wr1159"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"wr1159"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wr1159":22}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":" return \"[T][\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wr1159":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"todo roll boulder","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":"deadline roll boulder /by eternity","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":"event roll boulder /from now /to forever","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wr1159":10}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":" protected String deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":" public Deadline (String description, String deadline) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":" public Deadline (String description, boolean isDone, String deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wr1159"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"wr1159"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"wr1159"},"content":" return \"[D][\" + this.getStatusIcon() + \"] \" + this.description + \" (by: \" + this.deadline + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wr1159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wr1159"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wr1159"},"content":" return String.format(\"D,%s,%s,%s\", description, isDone ? \"1\" : \"0\", deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wr1159"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wr1159":22}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":" private static final String NAME \u003d \"Sisyphus\";","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":" private static final String HORIZONTAL_LINE \u003d \"_________________________________\";","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":" private static final String LOGO \u003d \"\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":" \" ,-\u0027\\\"\\\"\\\"`-.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":" \" ,\u0027 `.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wr1159"},"content":" \" / ` \\\\\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wr1159"},"content":" \" ( / )\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wr1159"},"content":" \" | \\\" |\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wr1159"},"content":" \" ( )\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"wr1159"},"content":" \" `.\\\\\\\\ \\\\ /\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wr1159"},"content":" \" `:. , \\\\ ,\\\\ _\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wr1159"},"content":" \" WE `:-.___,-`-.{\\\\)\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wr1159"},"content":" \" MUST `. |/ \\\\\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wr1159"},"content":" \" GO `. \\\\ \\\\\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wr1159"},"content":" \" ON `-. _\\\\,)\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wr1159"},"content":" \" `. |,-||\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wr1159"},"content":" \" `.|| ||\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wr1159"},"content":" public static void main(String[] args) throws SisyphusException{","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"wr1159"},"content":" greet();","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wr1159"},"content":" handleCommand();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wr1159"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"wr1159"},"content":" * Greets user with name.","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"wr1159"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"wr1159"},"content":" public static void greet() {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"wr1159"},"content":" System.out.println(LOGO);","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"wr1159"},"content":" System.out.println(\"Hello, I\u0027m \" + NAME + \".\");","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"wr1159"},"content":" System.out.println(\"What can I do for you? Do you want to roll a boulder?\");","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"wr1159"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"wr1159"},"content":" * Main logic flow to take in the following commands","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"wr1159"},"content":" * 1. \"bye\" to exit chat","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"wr1159"},"content":" * 2. \"list\" to list tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"wr1159"},"content":" * 3. \"mark\" to mark task","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"wr1159"},"content":" * 4. \"unmark\" to unmark task","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"wr1159"},"content":" * 5. \"delete\" to delete task","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"wr1159"},"content":" * 5. \"todo\" to create a todo","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"wr1159"},"content":" * 6. \"deadline\" to create a deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"wr1159"},"content":" * 7. \"event\" to create an event","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"wr1159"},"content":" * 8. default behaviour is to add task","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"wr1159"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"wr1159"},"content":" public static void handleCommand() throws SisyphusException {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"wr1159"},"content":" boolean isChatting \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"wr1159"},"content":" Scanner scanner\u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"wr1159"},"content":" String input, command, params \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"wr1159"},"content":" String[] inputArray;","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"wr1159"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"wr1159"},"content":" TaskList taskList \u003d storage.loadData();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"wr1159"},"content":" while (isChatting) {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"wr1159"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"wr1159"},"content":" inputArray \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"wr1159"},"content":" command \u003d inputArray[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"wr1159"},"content":" if (inputArray.length \u003e 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"wr1159"},"content":" params \u003d inputArray[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"wr1159"},"content":" switch (command) {","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"wr1159"},"content":" case (\"bye\"): {","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"wr1159"},"content":" System.out.println(\"Goodbye, it was nice chatting with you.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"wr1159"},"content":" isChatting \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"wr1159"},"content":" case (\"list\"): {","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"wr1159"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"wr1159"},"content":" System.out.println(i + 1 + \". \" + taskList.getTask(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"wr1159"},"content":" case (\"mark\"): {","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"wr1159"},"content":" int index;","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"wr1159"},"content":" index \u003d Integer.parseInt(params.split(\" \")[0]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"wr1159"},"content":" taskList.markTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"wr1159"},"content":" storage.writeFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"wr1159"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"You must include a valid task number. \"","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"wr1159"},"content":" + \"Use list to see what is valid.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"wr1159"},"content":" System.out.println(\"The following item has been marked as done.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"wr1159"},"content":" System.out.println(taskList.getTask(index));","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"wr1159"},"content":" case (\"unmark\"): {","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"wr1159"},"content":" int index;","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"wr1159"},"content":" index \u003d Integer.parseInt(params.split(\" \")[0]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"wr1159"},"content":" taskList.unmarkTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"wr1159"},"content":" storage.writeFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"wr1159"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"You must include a valid task number. \"","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"wr1159"},"content":" + \"Use list to see what is valid.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"wr1159"},"content":" System.out.println(\"The following item has been unmarked and is now uncompleted.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"wr1159"},"content":" System.out.println(taskList.getTask(index));","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"wr1159"},"content":" case (\"delete\"): {","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"wr1159"},"content":" int index;","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"wr1159"},"content":" Task deletedTask;","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"wr1159"},"content":" index \u003d Integer.parseInt(params.split(\" \")[0]) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"wr1159"},"content":" deletedTask \u003d taskList.getTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"wr1159"},"content":" taskList.deleteTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"wr1159"},"content":" storage.writeFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"wr1159"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"You must include a valid task number. \"","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"wr1159"},"content":" + \"Use list to see what is valid.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"wr1159"},"content":" System.out.println(\"The following item has been deleted from the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"wr1159"},"content":" System.out.println(deletedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"wr1159"},"content":" case (\"todo\"): {","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"wr1159"},"content":" if (params \u003d\u003d \"\" || params \u003d\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"Include a description for the ToDo. \\nHere is an example: \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"wr1159"},"content":" \"todo Roll Boulder\");","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"wr1159"},"content":" ToDo todoTask \u003d new ToDo(params);","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"wr1159"},"content":" taskList.addTask(todoTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"wr1159"},"content":" storage.writeFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"wr1159"},"content":" System.out.println(\"The following ToDo has been added.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"wr1159"},"content":" System.out.println(todoTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"wr1159"},"content":" System.out.println(\"You now have \" + taskList.size() + \" items in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"wr1159"},"content":" case (\"deadline\"): {","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"wr1159"},"content":" String description, deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"wr1159"},"content":" description \u003d params.split(\" /by \")[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"wr1159"},"content":" deadline \u003d params.split(\" /by \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"wr1159"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"Include both description and deadline for a deadline. \\nHere \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"wr1159"},"content":" \"is an example: deadline roll boulder /by eternity\");","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"wr1159"},"content":" Deadline deadlineTask \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"wr1159"},"content":" taskList.addTask(deadlineTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"wr1159"},"content":" storage.writeFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"wr1159"},"content":" System.out.println(\"The following deadline has been added.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"wr1159"},"content":" System.out.println(deadlineTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"wr1159"},"content":" System.out.println(\"You now have \" + taskList.size() + \" items in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"wr1159"},"content":" case (\"event\"): {","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"wr1159"},"content":" String description, fromAndToTime, from, to;","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"wr1159"},"content":" description \u003d params.split(\" /from \")[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"wr1159"},"content":" fromAndToTime \u003d params.split(\" /from \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"wr1159"},"content":" from \u003d fromAndToTime.split(\" /to \")[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"wr1159"},"content":" to \u003d fromAndToTime.split(\" /to \")[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"wr1159"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"Include the description, from and to time for an event. \\nHere is\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"wr1159"},"content":" \" an example: event roll boulder /from past /to eternity\");","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"wr1159"},"content":" Event eventTask \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"wr1159"},"content":" taskList.addTask(eventTask);","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"wr1159"},"content":" storage.writeFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"wr1159"},"content":" System.out.println(\"The following event has been added.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"wr1159"},"content":" System.out.println(eventTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"wr1159"},"content":" System.out.println(\"You now have \" + taskList.size() + \" items in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"wr1159"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"wr1159"},"content":" default: {","lastModifiedDate":"2023-08-23"},{"lineNumber":196,"author":{"gitId":"wr1159"},"content":" throw new SisyphusException(\"Enter a valid command. Available comments are \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"wr1159"},"content":" \"bye, list, event, deadline, todo, mark, unmark.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"wr1159"},"content":" } catch (SisyphusException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"wr1159"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":203,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"wr1159":202,"-":3}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":" protected String start, end;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":" public Event(String description, boolean isDone, String start, String end) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wr1159"},"content":" this.start \u003d start;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wr1159"},"content":" this.end \u003d end;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wr1159"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wr1159"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wr1159"},"content":" return \"[E][\" + this.getStatusIcon() + \"] \" + this.description + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wr1159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wr1159"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wr1159"},"content":" return String.format(\"E,%s,%s,%s,%s\", description, isDone ? \"1\" : \"0\", start, end);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"wr1159"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wr1159":24}},{"path":"src/main/java/SisyphusException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"public class SisyphusException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":" public SisyphusException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":" super(message + \"\\nOtherwise, I can\u0027t be bothered with it.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wr1159":6}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"import java.io.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":" String currentDirectory \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":" String fileName \u003d \"sisyphusData.csv\";","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":" Path filePath \u003d Path.of(currentDirectory, fileName);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wr1159"},"content":" * Attempts to read file in csv format and skip all \"corrupted\" / wrong lines of values.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wr1159"},"content":" * If file does not exist, an empty TaskList will be returned and a file will be created.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wr1159"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wr1159"},"content":" * @return TaskList from the saved file","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wr1159"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wr1159"},"content":" public TaskList loadData() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wr1159"},"content":" if (Files.exists(filePath)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wr1159"},"content":" FileReader fileReader \u003d new FileReader(filePath.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wr1159"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wr1159"},"content":" TaskList savedTaskList \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wr1159"},"content":" String line;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wr1159"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"wr1159"},"content":" String[] params \u003d line.split(\",\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"wr1159"},"content":" if (params.length \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"wr1159"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"wr1159"},"content":" String type \u003d params[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"wr1159"},"content":" switch (type) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"wr1159"},"content":" case (\"E\"): {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"wr1159"},"content":" if (params.length \u003d\u003d 5) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"wr1159"},"content":" Event event \u003d new Event(params[1], params[2].equals(\"1\"), params[3], params[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"wr1159"},"content":" savedTaskList.addTask(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"wr1159"},"content":" case (\"D\"): {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"wr1159"},"content":" if (params.length \u003d\u003d 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"wr1159"},"content":" Deadline deadline \u003d new Deadline(params[1], params[2].equals(\"1\"), params[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"wr1159"},"content":" savedTaskList.addTask(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"wr1159"},"content":" case (\"T\"): {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"wr1159"},"content":" if (params.length \u003d\u003d 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"wr1159"},"content":" ToDo todo \u003d new ToDo(params[1], params[2].equals(\"1\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"wr1159"},"content":" savedTaskList.addTask(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"wr1159"},"content":" default: {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"wr1159"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"wr1159"},"content":" bufferedReader.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"wr1159"},"content":" return savedTaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"wr1159"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"wr1159"},"content":" System.err.println(\"An error occurred while reading the file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"wr1159"},"content":" return new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"wr1159"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"wr1159"},"content":" writeFile(new TaskList());","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"wr1159"},"content":" return new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"wr1159"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"wr1159"},"content":" * Takes in a TaskList and writes all tasks in the TaskList to the saved file based on a csv format.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"wr1159"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"wr1159"},"content":" * @param taskList","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"wr1159"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"wr1159"},"content":" public void writeFile(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"wr1159"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"wr1159"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"wr1159"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"wr1159"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"wr1159"},"content":" stringBuilder.append(taskList.getTask(i).toSaveFormat());","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"wr1159"},"content":" stringBuilder.append(\u0027\\n\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"wr1159"},"content":" fileWriter.write(stringBuilder.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"wr1159"},"content":" fileWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"wr1159"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"wr1159"},"content":" System.err.println(\"An error occurred while writing to the file: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"wr1159"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"wr1159"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"wr1159"},"content":" * Testing for Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"wr1159"},"content":" * @param args","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"wr1159"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"wr1159"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"wr1159"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"wr1159"},"content":" TaskList loaded \u003d storage.loadData();","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"wr1159"},"content":" for (int i \u003d 0; i \u003c loaded.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"wr1159"},"content":" System.out.println(loaded.getTask(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"wr1159"},"content":" TaskList temp \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"wr1159"},"content":" temp.addTask(new ToDo(\"turtles\", true));","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"wr1159"},"content":" storage.writeFile(temp);","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"wr1159"},"content":"// String currentDirectory \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"wr1159"},"content":"// String fileName \u003d \"sisyphusData.csv\";","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"wr1159"},"content":"// String filePath \u003d currentDirectory + \"/\" + fileName;","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"wr1159"},"content":"// Path path \u003d Path.of(currentDirectory, fileName);","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"wr1159"},"content":"// System.out.println(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"wr1159"},"content":"// if(Files.exists(path)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"wr1159"},"content":"// System.out.println(\"Turtles\");","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"wr1159"},"content":"// }","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"wr1159"},"content":"// System.out.println(path);","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"wr1159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wr1159":119}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"public abstract class Task {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wr1159"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wr1159"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wr1159"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"wr1159"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"wr1159"},"content":" public void setDone(boolean state) {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"wr1159"},"content":" this.isDone \u003d state;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"wr1159"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"wr1159"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"wr1159"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"wr1159"},"content":" public abstract String toSaveFormat();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"wr1159"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wr1159":29}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":" protected ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"wr1159"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"wr1159"},"content":" return taskList.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wr1159"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wr1159"},"content":" taskList.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wr1159"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"wr1159"},"content":" return taskList.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"wr1159"},"content":" public void markTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"wr1159"},"content":" taskList.get(index).setDone(true);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"wr1159"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"wr1159"},"content":" taskList.get(index).setDone(false);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"wr1159"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"wr1159"},"content":" taskList.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"wr1159"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"wr1159":33}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":" super(description, isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"wr1159"},"content":" return \"[T][\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"wr1159"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"wr1159"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"wr1159"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"wr1159"},"content":" return String.format(\"T,%s,%s\", description, isDone ? \"1\" : \"0\");","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"wr1159"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"wr1159"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wr1159":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wr1159"},"content":"todo roll boulder","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"wr1159"},"content":"deadline roll boulder /by eternity","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"wr1159"},"content":"event roll boulder /from now /to forever","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"wr1159"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"wr1159"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"wr1159"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"wr1159"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"wr1159"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"wr1159"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"wr1159"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"wr1159":10}}] diff --git a/wr1159_ip_master/commits.json b/wr1159_ip_master/commits.json index df34221a..94c50d85 100644 --- a/wr1159_ip_master/commits.json +++ b/wr1159_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"wr1159":[{"date":"2023-08-23","commitResults":[{"hash":"abea017d205deecdd55d392c6c10721037de941c","isMergeCommit":false,"messageTitle":"Rename bot and add basic greetings","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"c757965c2437be7def7ee486b30af85c6cba6a32","isMergeCommit":false,"messageTitle":"Add echo function and reformatted greeting to include logo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":5}}},{"hash":"c26fcc8dc51991df8775a212f18f353c5254221c","isMergeCommit":false,"messageTitle":"Add addAndList function to meet Level-2 requirements","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":9}}}]},{"date":"2023-08-24","commitResults":[{"hash":"465549fbd2b27d1ad8c7b801406b464ff120ec8a","isMergeCommit":false,"messageTitle":"Add mark and unmark functionalities to meet Level 3 requirements","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":9}}},{"hash":"817ee3dd774c715f041745e51310984a53d2445e","isMergeCommit":false,"messageTitle":"Add ToDo, Deadline, Event and support of the respective commands to meet Level 4 requirements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":8}}},{"hash":"7bac52d4d0e504d626b7bc8806c26c36c634569e","isMergeCommit":false,"messageTitle":"Clean up formatting","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"521c56d8f7951344a5985f792c910a792943754e","isMergeCommit":false,"messageTitle":"Add text-ui test and update string for unmark","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"94a67043d89213d08e636720e6c53106337b1155","isMergeCommit":false,"messageTitle":"Add exception handling to meet level 5 requirements","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":77}}},{"hash":"2a2b6f2d7233fe29f9e6b5141f2609e3ca0be2dc","isMergeCommit":false,"messageTitle":"Add delete function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":26,"deletions":8}}},{"hash":"178c4ff8531173f1548c82db5bae79ee597b9d13","isMergeCommit":false,"messageTitle":"Remove redundant -1 value in Mark","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"wr1159":{"java":256,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"wr1159":19330.814},"authorDisplayNameMap":{"wr1159":"CS2103T-F11-1 CHU ..RONG"}} +{"authorDailyContributionsMap":{"wr1159":[{"date":"2023-08-23","commitResults":[{"hash":"abea017d205deecdd55d392c6c10721037de941c","isMergeCommit":false,"messageTitle":"Rename bot and add basic greetings","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"c757965c2437be7def7ee486b30af85c6cba6a32","isMergeCommit":false,"messageTitle":"Add echo function and reformatted greeting to include logo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":5}}},{"hash":"c26fcc8dc51991df8775a212f18f353c5254221c","isMergeCommit":false,"messageTitle":"Add addAndList function to meet Level-2 requirements","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":9}}}]},{"date":"2023-08-24","commitResults":[{"hash":"465549fbd2b27d1ad8c7b801406b464ff120ec8a","isMergeCommit":false,"messageTitle":"Add mark and unmark functionalities to meet Level 3 requirements","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":9}}},{"hash":"817ee3dd774c715f041745e51310984a53d2445e","isMergeCommit":false,"messageTitle":"Add ToDo, Deadline, Event and support of the respective commands to meet Level 4 requirements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":8}}},{"hash":"7bac52d4d0e504d626b7bc8806c26c36c634569e","isMergeCommit":false,"messageTitle":"Clean up formatting","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"521c56d8f7951344a5985f792c910a792943754e","isMergeCommit":false,"messageTitle":"Add text-ui test and update string for unmark","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"94a67043d89213d08e636720e6c53106337b1155","isMergeCommit":false,"messageTitle":"Add exception handling to meet level 5 requirements","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":77}}},{"hash":"2a2b6f2d7233fe29f9e6b5141f2609e3ca0be2dc","isMergeCommit":false,"messageTitle":"Add delete function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":26,"deletions":8}}},{"hash":"178c4ff8531173f1548c82db5bae79ee597b9d13","isMergeCommit":false,"messageTitle":"Remove redundant -1 value in Mark","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"e538441220495bf40dadb9c7c56314a6014f5479","isMergeCommit":false,"messageTitle":"Add TaskList object","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":11}}},{"hash":"53591b1ca69445a9586fcaae993b806a98aa4007","isMergeCommit":false,"messageTitle":"Add optional isDone param to constructor to task, deadline, event, todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"dc6b0701d58fca08297daad8d3c07e174b49bc1f","isMergeCommit":false,"messageTitle":"Add toSaveFormat function for Task and children of Task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}},{"hash":"56d4701ffacd63922d8af732a92eb41a9e477106","isMergeCommit":false,"messageTitle":"Fix saveFormat to correspond to event type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"04acee1055c4484097fd18a3822440787733bed3","isMergeCommit":false,"messageTitle":"Add Storage class and integrated Storage into chatbot to save TaskList into local storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":243,"deletions":116}}},{"hash":"778cb1d9867e57bf2dc86c7906e723c56609e873","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027 to add Storage Class","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"wr1159":{"java":453,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"wr1159":21367.174},"authorDisplayNameMap":{"wr1159":"CS2103T-F11-1 CHU ..RONG"}} diff --git a/xCOLOURx_ip_master/authorship.json b/xCOLOURx_ip_master/authorship.json index 93cb5801..76c3bc05 100644 --- a/xCOLOURx_ip_master/authorship.json +++ b/xCOLOURx_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":" public String printToFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" return \"D|\" + super.printToFile() + \"|\" + this.by.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" return by;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":30}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \" to: \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" public String printToFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" return \"E|\" + super.printToFile() + \"|\" + this.from.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")) + \"|\" + this.to.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" return from;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":" return to;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":34}},{"path":"src/main/java/Noac.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"public class Noac {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" private static final String FILE_PATH \u003d \"./data/noac.txt\";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" String logo \u003d \" _ _ ___ _ ____\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" \"| \\\\ | |/ _ \\\\ / \\\\ / ___|\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" \"| \\\\| | | | |/ _ \\\\| |\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":" \"| |\\\\ | |_| / ___ \\\\ |___\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" \"|_| \\\\_|\\\\___/_/ \\\\_\\\\____|\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":" tasks \u003d Noac.loadFromFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":" } catch (NoacException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"xCOLOURx"},"content":" String welcomeMessage \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"xCOLOURx"},"content":" \" Hello! I\u0027m NOAC\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"xCOLOURx"},"content":" \" What can I do for you?\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"xCOLOURx"},"content":" \" ____________________________________________________________\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(welcomeMessage);","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"xCOLOURx"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"xCOLOURx"},"content":" boolean didListChange \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"xCOLOURx"},"content":" while (!userInput.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"xCOLOURx"},"content":" try{","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"xCOLOURx"},"content":" String[] userInputArr \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"xCOLOURx"},"content":" String command \u003d userInputArr[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"xCOLOURx"},"content":" switch(command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"xCOLOURx"},"content":" case \"list\":","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"xCOLOURx"},"content":" for (int i \u003d 1; i \u003c\u003d tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + i + \".\" + tasks.get(i-1).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"xCOLOURx"},"content":" case \"mark\": case \"unmark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"xCOLOURx"},"content":" String[] temp \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"xCOLOURx"},"content":" if(checkValidMarkInput(userInput, tasks.size())){","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"xCOLOURx"},"content":" int taskNo \u003d Integer.parseInt(temp[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"xCOLOURx"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"xCOLOURx"},"content":" tasks.get(taskNo - 1).markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"xCOLOURx"},"content":" didListChange \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"xCOLOURx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"xCOLOURx"},"content":" tasks.get(taskNo - 1).unmarkAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"xCOLOURx"},"content":" didListChange \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + tasks.get(taskNo-1).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"xCOLOURx"},"content":" case \"todo\":","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"xCOLOURx"},"content":" if (userInputArr.length \u003e 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"xCOLOURx"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"xCOLOURx"},"content":" for(int i \u003d 1; i \u003c userInputArr.length; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"xCOLOURx"},"content":" description +\u003d userInputArr[i] + \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"xCOLOURx"},"content":" description \u003d description.substring(0, description.length() - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"xCOLOURx"},"content":" Todo t \u003d new Todo(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"xCOLOURx"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"xCOLOURx"},"content":" didListChange \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + t.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"xCOLOURx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"xCOLOURx"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"xCOLOURx"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"xCOLOURx"},"content":" String by \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"xCOLOURx"},"content":" boolean afterBy \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"xCOLOURx"},"content":" for(int i \u003d 1; i \u003c userInputArr.length; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"xCOLOURx"},"content":" if (userInputArr[i].equals(\"/by\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"xCOLOURx"},"content":" afterBy \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"xCOLOURx"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"xCOLOURx"},"content":" if (afterBy) {","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"xCOLOURx"},"content":" by +\u003d userInputArr[i] + \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"xCOLOURx"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"xCOLOURx"},"content":" description +\u003d userInputArr[i] + \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"xCOLOURx"},"content":" if (!afterBy) {","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! The input must contain the command /by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"xCOLOURx"},"content":" if(by.length() \u003d\u003d 0 || description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! The description and by of a deadline cannot \\n be empty\");","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"xCOLOURx"},"content":" by \u003d by.substring(0, by.length() - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"xCOLOURx"},"content":" description \u003d description.substring(0, description.length() - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"xCOLOURx"},"content":" Deadline d \u003d new Deadline(description, parseDate(by));","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"xCOLOURx"},"content":" tasks.add(d);","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"xCOLOURx"},"content":" didListChange \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + d.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"xCOLOURx"},"content":" case \"event\":","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"xCOLOURx"},"content":" String descript \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"xCOLOURx"},"content":" String from \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"xCOLOURx"},"content":" String to \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"xCOLOURx"},"content":" String status \u003d \"event\";","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"xCOLOURx"},"content":" for(int i \u003d 1; i \u003c userInputArr.length; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"xCOLOURx"},"content":" if (userInputArr[i].equals(\"/from\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"xCOLOURx"},"content":" status \u003d \"from\";","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"xCOLOURx"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"xCOLOURx"},"content":" if (userInputArr[i].equals(\"/to\")){","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"xCOLOURx"},"content":" status \u003d \"to\";","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"xCOLOURx"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"xCOLOURx"},"content":" if (status.equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"xCOLOURx"},"content":" descript +\u003d userInputArr[i] + \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"xCOLOURx"},"content":" } else if (status.equals(\"from\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"xCOLOURx"},"content":" from +\u003d userInputArr[i] + \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"xCOLOURx"},"content":" } else if (status.equals(\"to\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"xCOLOURx"},"content":" to +\u003d userInputArr[i] + \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"xCOLOURx"},"content":" if (!status.equals(\"to\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! The input must contain the command /from and /to \\n in this order\"); }","lastModifiedDate":"2023-08-24"},{"lineNumber":217,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":218,"author":{"gitId":"xCOLOURx"},"content":" if(descript.length() \u003d\u003d 0 || from.length() \u003d\u003d 0 || to.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! The description, from and to of a event cannot \\n be empty!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":221,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":222,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"xCOLOURx"},"content":" from \u003d from.substring(0, from.length() - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"xCOLOURx"},"content":" to \u003d to.substring(0, to.length() - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"xCOLOURx"},"content":" descript \u003d descript.substring(0, descript.length() - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":229,"author":{"gitId":"xCOLOURx"},"content":" Event e \u003d new Event(descript, parseDate(from), parseDate(to));","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":231,"author":{"gitId":"xCOLOURx"},"content":" tasks.add(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"xCOLOURx"},"content":" didListChange \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":236,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + e.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":238,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":239,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":240,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":241,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":243,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":244,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":245,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"xCOLOURx"},"content":" case \"delete\":","lastModifiedDate":"2023-08-24"},{"lineNumber":247,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":248,"author":{"gitId":"xCOLOURx"},"content":" if(checkValidDeleteInput(userInput, tasks.size())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":249,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":250,"author":{"gitId":"xCOLOURx"},"content":" int taskNo \u003d Integer.parseInt(userInputArr[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":251,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":252,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":254,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + tasks.get(taskNo-1).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":255,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":256,"author":{"gitId":"xCOLOURx"},"content":" tasks.remove(taskNo-1);","lastModifiedDate":"2023-08-31"},{"lineNumber":257,"author":{"gitId":"xCOLOURx"},"content":" didListChange \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":258,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":259,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":260,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":261,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":262,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":263,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":265,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":266,"author":{"gitId":"xCOLOURx"},"content":" case \"on\":","lastModifiedDate":"2023-08-31"},{"lineNumber":267,"author":{"gitId":"xCOLOURx"},"content":" LocalDate localDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":268,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":269,"author":{"gitId":"xCOLOURx"},"content":" if (userInputArr.length !\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":270,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please input date in this format yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":271,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":272,"author":{"gitId":"xCOLOURx"},"content":" try{","lastModifiedDate":"2023-08-31"},{"lineNumber":273,"author":{"gitId":"xCOLOURx"},"content":" localDate \u003d LocalDate.parse(userInputArr[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":274,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":275,"author":{"gitId":"xCOLOURx"},"content":" } catch (DateTimeParseException exception) {","lastModifiedDate":"2023-08-31"},{"lineNumber":276,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please input date in this format yyyy-MM-dd\");","lastModifiedDate":"2023-08-31"},{"lineNumber":277,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":278,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":279,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":280,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" The tasks on this date are:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":281,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":282,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":283,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":284,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":285,"author":{"gitId":"xCOLOURx"},"content":" for(int i \u003d 0 ; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":286,"author":{"gitId":"xCOLOURx"},"content":" if(tasks.get(i) instanceof Deadline) {","lastModifiedDate":"2023-08-31"},{"lineNumber":287,"author":{"gitId":"xCOLOURx"},"content":" if(localDate.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).equals(((Deadline) tasks.get(i)).getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":288,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + tasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":289,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":290,"author":{"gitId":"xCOLOURx"},"content":" } else if (tasks.get(i) instanceof Event) {","lastModifiedDate":"2023-08-31"},{"lineNumber":291,"author":{"gitId":"xCOLOURx"},"content":" if(localDate.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).equals(((Event) tasks.get(i)).getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"))) || localDate.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).equals(((Event) tasks.get(i)).getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":292,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + tasks.get(i).toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":293,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":294,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":295,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":296,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":297,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":298,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-31"},{"lineNumber":299,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":300,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":301,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":302,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":303,"author":{"gitId":"xCOLOURx"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":304,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":305,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":306,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":307,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":308,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":309,"author":{"gitId":"xCOLOURx"},"content":" } catch (NoacException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":310,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":311,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":312,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":313,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":314,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":315,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":316,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":317,"author":{"gitId":"xCOLOURx"},"content":" if(didListChange) {","lastModifiedDate":"2023-08-31"},{"lineNumber":318,"author":{"gitId":"xCOLOURx"},"content":" printToFile(tasks);","lastModifiedDate":"2023-08-31"},{"lineNumber":319,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":320,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":321,"author":{"gitId":"xCOLOURx"},"content":" didListChange \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":322,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":323,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":324,"author":{"gitId":"xCOLOURx"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":325,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":326,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":327,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":328,"author":{"gitId":"xCOLOURx"},"content":" String byeMessage \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":329,"author":{"gitId":"xCOLOURx"},"content":" \" Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":330,"author":{"gitId":"xCOLOURx"},"content":" \" ____________________________________________________________\";","lastModifiedDate":"2023-08-24"},{"lineNumber":331,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":332,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(byeMessage);","lastModifiedDate":"2023-08-24"},{"lineNumber":333,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":334,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":335,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":336,"author":{"gitId":"xCOLOURx"},"content":" private static boolean checkValidMarkInput(String input, int listSize) throws NoacException {","lastModifiedDate":"2023-08-24"},{"lineNumber":337,"author":{"gitId":"xCOLOURx"},"content":" String[] temp \u003d input.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":338,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":339,"author":{"gitId":"xCOLOURx"},"content":" if(temp.length \u003e 2 || temp.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":340,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please enter in the format mark [TASK_NUMBER] e.g. mark 1\");","lastModifiedDate":"2023-08-24"},{"lineNumber":341,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":342,"author":{"gitId":"xCOLOURx"},"content":" } else if (!temp[1].matches(\"\\\\d+\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":343,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":344,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please enter in the format mark [TASK_NUMBER] e.g. mark 1\");","lastModifiedDate":"2023-08-24"},{"lineNumber":345,"author":{"gitId":"xCOLOURx"},"content":" } else if (Integer.parseInt(temp[1]) \u003e listSize) {","lastModifiedDate":"2023-08-24"},{"lineNumber":346,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":347,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please enter a task in your list!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":348,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":349,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":350,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":351,"author":{"gitId":"xCOLOURx"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":352,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":353,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":354,"author":{"gitId":"xCOLOURx"},"content":" private static boolean checkValidDeleteInput(String input, int listSize) throws NoacException {","lastModifiedDate":"2023-08-24"},{"lineNumber":355,"author":{"gitId":"xCOLOURx"},"content":" String[] temp \u003d input.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":356,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":357,"author":{"gitId":"xCOLOURx"},"content":" if(temp.length \u003e 2 || temp.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":358,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please enter in the format delete [TASK_NUMBER] e.g. delete 1\");","lastModifiedDate":"2023-08-24"},{"lineNumber":359,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":360,"author":{"gitId":"xCOLOURx"},"content":" } else if (!temp[1].matches(\"\\\\d+\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":361,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":362,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please enter in the format delete [TASK_NUMBER] e.g. delete 1\");","lastModifiedDate":"2023-08-24"},{"lineNumber":363,"author":{"gitId":"xCOLOURx"},"content":" } else if (Integer.parseInt(temp[1]) \u003e listSize) {","lastModifiedDate":"2023-08-24"},{"lineNumber":364,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":365,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please enter a task in your list!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":366,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":367,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":368,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":369,"author":{"gitId":"xCOLOURx"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":370,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":371,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":372,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":373,"author":{"gitId":"xCOLOURx"},"content":" private static void printToFile(ArrayList\u003cTask\u003e tasks){","lastModifiedDate":"2023-08-31"},{"lineNumber":374,"author":{"gitId":"xCOLOURx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":375,"author":{"gitId":"xCOLOURx"},"content":" FileWriter fileWriter \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":376,"author":{"gitId":"xCOLOURx"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(fileWriter);","lastModifiedDate":"2023-08-31"},{"lineNumber":377,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":378,"author":{"gitId":"xCOLOURx"},"content":" for(int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":379,"author":{"gitId":"xCOLOURx"},"content":" bufferedWriter.write(tasks.get(i).printToFile() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":380,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":381,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":382,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":383,"author":{"gitId":"xCOLOURx"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":384,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":385,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":386,"author":{"gitId":"xCOLOURx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":387,"author":{"gitId":"xCOLOURx"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":388,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":389,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":390,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":391,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":392,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":393,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":394,"author":{"gitId":"xCOLOURx"},"content":" private static ArrayList\u003cTask\u003e loadFromFile() throws NoacException {","lastModifiedDate":"2023-08-31"},{"lineNumber":395,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":396,"author":{"gitId":"xCOLOURx"},"content":" ArrayList\u003cTask\u003e returnList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":397,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":398,"author":{"gitId":"xCOLOURx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":399,"author":{"gitId":"xCOLOURx"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-31"},{"lineNumber":400,"author":{"gitId":"xCOLOURx"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":401,"author":{"gitId":"xCOLOURx"},"content":" if (!file.createNewFile()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":402,"author":{"gitId":"xCOLOURx"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":403,"author":{"gitId":"xCOLOURx"},"content":" while(scanner.hasNextLine()){","lastModifiedDate":"2023-08-31"},{"lineNumber":404,"author":{"gitId":"xCOLOURx"},"content":" String[] fileLineInput \u003d scanner.nextLine().split(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":405,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":406,"author":{"gitId":"xCOLOURx"},"content":" String taskType \u003d fileLineInput[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":407,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":408,"author":{"gitId":"xCOLOURx"},"content":" switch (taskType){","lastModifiedDate":"2023-08-31"},{"lineNumber":409,"author":{"gitId":"xCOLOURx"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":410,"author":{"gitId":"xCOLOURx"},"content":" if (fileLineInput.length !\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":411,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Corrupted Save file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":412,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":413,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":414,"author":{"gitId":"xCOLOURx"},"content":" Todo todo \u003d new Todo(fileLineInput[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":415,"author":{"gitId":"xCOLOURx"},"content":" if(fileLineInput[1].equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":416,"author":{"gitId":"xCOLOURx"},"content":" todo.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":417,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":418,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":419,"author":{"gitId":"xCOLOURx"},"content":" returnList.add(todo);","lastModifiedDate":"2023-08-31"},{"lineNumber":420,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":421,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":422,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":423,"author":{"gitId":"xCOLOURx"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":424,"author":{"gitId":"xCOLOURx"},"content":" if (fileLineInput.length !\u003d 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":425,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Corrupted Save file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":426,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":427,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":428,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":429,"author":{"gitId":"xCOLOURx"},"content":" Deadline deadline \u003d new Deadline(fileLineInput[2], parseDate(fileLineInput[3]));","lastModifiedDate":"2023-08-31"},{"lineNumber":430,"author":{"gitId":"xCOLOURx"},"content":" if(fileLineInput[1].equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":431,"author":{"gitId":"xCOLOURx"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":432,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":433,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":434,"author":{"gitId":"xCOLOURx"},"content":" returnList.add(deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":435,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":436,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":437,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":438,"author":{"gitId":"xCOLOURx"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":439,"author":{"gitId":"xCOLOURx"},"content":" if (fileLineInput.length !\u003d 5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":440,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Corrupted Save file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":441,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":442,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":443,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":444,"author":{"gitId":"xCOLOURx"},"content":" Event event \u003d new Event(fileLineInput[2],parseDate(fileLineInput[3]) ,parseDate(fileLineInput[4]) );","lastModifiedDate":"2023-08-31"},{"lineNumber":445,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":446,"author":{"gitId":"xCOLOURx"},"content":" if(fileLineInput[1].equals(\"1\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":447,"author":{"gitId":"xCOLOURx"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":448,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":449,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":450,"author":{"gitId":"xCOLOURx"},"content":" returnList.add(event);","lastModifiedDate":"2023-08-31"},{"lineNumber":451,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":452,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":453,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":454,"author":{"gitId":"xCOLOURx"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":455,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Corrupted Save file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":456,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":457,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":458,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":459,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":460,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":461,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":462,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":463,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":464,"author":{"gitId":"xCOLOURx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":465,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":466,"author":{"gitId":"xCOLOURx"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":467,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":468,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":469,"author":{"gitId":"xCOLOURx"},"content":" return returnList;","lastModifiedDate":"2023-08-31"},{"lineNumber":470,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":471,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":472,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":473,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":474,"author":{"gitId":"xCOLOURx"},"content":" private static LocalDateTime parseDate(String date) throws NoacException {","lastModifiedDate":"2023-08-31"},{"lineNumber":475,"author":{"gitId":"xCOLOURx"},"content":" LocalDateTime localDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":476,"author":{"gitId":"xCOLOURx"},"content":" try{","lastModifiedDate":"2023-08-31"},{"lineNumber":477,"author":{"gitId":"xCOLOURx"},"content":" if(date.length() \u003d\u003d 10) {","lastModifiedDate":"2023-08-31"},{"lineNumber":478,"author":{"gitId":"xCOLOURx"},"content":" localDateTime \u003d LocalDateTime.parse(date + \" 0000\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":479,"author":{"gitId":"xCOLOURx"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":480,"author":{"gitId":"xCOLOURx"},"content":" localDateTime \u003d LocalDateTime.parse(date, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":481,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":482,"author":{"gitId":"xCOLOURx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":483,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please input date in this format yyyy-MM-dd or yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":484,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":485,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":486,"author":{"gitId":"xCOLOURx"},"content":" return localDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":487,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":488,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":489,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":490,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":491,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":492,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":493,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":494,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":494}},{"path":"src/main/java/NoacException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"public class NoacException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":" public NoacException(String errMessage) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":" super(errMessage);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":6}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" public String printToFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" int i \u003d isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":" return i + \"|\" + description;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":32}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":" return \"[T]\" + super.toString() ;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" public String printToFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":" return \"T|\" + super.printToFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":5}},{"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":"xCOLOURx"},"content":"java -classpath ..\\bin Noac \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"xCOLOURx":1,"-":20}}] +[{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" mainClass.set(\"noac.Noac\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"xCOLOURx"},"content":" archiveBaseName \u003d \"noac\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"xCOLOURx":2,"-":40}},{"path":"src/main/java/noac/Noac.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"public class Noac {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":" private Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" public Noac(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" } catch (NoacException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" ui.showWelcomeMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":" } catch (NoacException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"xCOLOURx"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"xCOLOURx"},"content":" new Noac(\"data/tasks.txt\").run();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":45}},{"path":"src/main/java/noac/NoacException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"public class NoacException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":" public NoacException(String errMessage) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":" super(errMessage);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":8}},{"path":"src/main/java/noac/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.command.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" public static Command parse(String fullCommand) throws NoacException{","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" Command returnCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" String[] userInputArr \u003d fullCommand.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" String command \u003d userInputArr[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" case \"list\":","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" returnCommand \u003d new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" case \"mark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":" if (userInputArr.length \u003e 2 || userInputArr.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please enter in the format mark [TASK_NUMBER] e.g. mark 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":" } else if (!userInputArr[1].matches(\"\\\\d+\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please enter in the format mark [TASK_NUMBER] e.g. mark 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"xCOLOURx"},"content":" int taskNo \u003d Integer.parseInt(userInputArr[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"xCOLOURx"},"content":" returnCommand \u003d new MarkCommand(taskNo, command.equals(\"mark\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"xCOLOURx"},"content":" case \"todo\":","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"xCOLOURx"},"content":" if (userInputArr.length \u003e 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"xCOLOURx"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"xCOLOURx"},"content":" for (int i \u003d 1; i \u003c userInputArr.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"xCOLOURx"},"content":" description +\u003d userInputArr[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"xCOLOURx"},"content":" description \u003d description.substring(0, description.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"xCOLOURx"},"content":" returnCommand \u003d new TodoCommand(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"xCOLOURx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"xCOLOURx"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"xCOLOURx"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"xCOLOURx"},"content":" String by \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"xCOLOURx"},"content":" boolean afterBy \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"xCOLOURx"},"content":" for (int i \u003d 1; i \u003c userInputArr.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"xCOLOURx"},"content":" if (userInputArr[i].equals(\"/by\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"xCOLOURx"},"content":" afterBy \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"xCOLOURx"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"xCOLOURx"},"content":" if (afterBy) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"xCOLOURx"},"content":" by +\u003d userInputArr[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"xCOLOURx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"xCOLOURx"},"content":" description +\u003d userInputArr[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"xCOLOURx"},"content":" if (!afterBy) {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! The input must contain the command /by\");","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"xCOLOURx"},"content":" if (by.length() \u003d\u003d 0 || description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! The description and by of a deadline cannot \\n be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"xCOLOURx"},"content":" by \u003d by.substring(0, by.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"xCOLOURx"},"content":" description \u003d description.substring(0, description.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"xCOLOURx"},"content":" returnCommand \u003d new DeadlineCommand(description, parseDate(by));","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"xCOLOURx"},"content":" case \"event\":","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"xCOLOURx"},"content":" String descript \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"xCOLOURx"},"content":" String from \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"xCOLOURx"},"content":" String to \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"xCOLOURx"},"content":" String status \u003d \"event\";","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"xCOLOURx"},"content":" for (int i \u003d 1; i \u003c userInputArr.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"xCOLOURx"},"content":" if (userInputArr[i].equals(\"/from\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"xCOLOURx"},"content":" status \u003d \"from\";","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"xCOLOURx"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"xCOLOURx"},"content":" if (userInputArr[i].equals(\"/to\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"xCOLOURx"},"content":" status \u003d \"to\";","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"xCOLOURx"},"content":" continue;","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"xCOLOURx"},"content":" if (status.equals(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"xCOLOURx"},"content":" descript +\u003d userInputArr[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"xCOLOURx"},"content":" } else if (status.equals(\"from\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"xCOLOURx"},"content":" from +\u003d userInputArr[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"xCOLOURx"},"content":" } else if (status.equals(\"to\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"xCOLOURx"},"content":" to +\u003d userInputArr[i] + \" \";","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"xCOLOURx"},"content":" if (!status.equals(\"to\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! The input must contain the command /from and /to \\n in this order\");","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"xCOLOURx"},"content":" if (descript.length() \u003d\u003d 0 || from.length() \u003d\u003d 0 || to.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! The description, from and to of a event cannot \\n be empty!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"xCOLOURx"},"content":" from \u003d from.substring(0, from.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"xCOLOURx"},"content":" to \u003d to.substring(0, to.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"xCOLOURx"},"content":" descript \u003d descript.substring(0, descript.length() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"xCOLOURx"},"content":" returnCommand \u003d new EventCommand(descript, parseDate(from), parseDate(to));","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"xCOLOURx"},"content":" case \"delete\":","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"xCOLOURx"},"content":" if(userInputArr.length \u003e 2 || userInputArr.length \u003c\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please enter in the format delete [TASK_NUMBER] e.g. delete 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"xCOLOURx"},"content":" } else if (!userInputArr[1].matches(\"\\\\d+\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please enter in the format delete [TASK_NUMBER] e.g. delete 1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"xCOLOURx"},"content":" int taskNo2 \u003d Integer.parseInt(userInputArr[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"xCOLOURx"},"content":" returnCommand \u003d new DeleteCommand(taskNo2);","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"xCOLOURx"},"content":" case \"on\":","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"xCOLOURx"},"content":" LocalDate localDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"xCOLOURx"},"content":" if (userInputArr.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please input date in this format yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"xCOLOURx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"xCOLOURx"},"content":" localDate \u003d LocalDate.parse(userInputArr[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"xCOLOURx"},"content":" } catch (DateTimeParseException exception) {","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please input date in this format yyyy-MM-dd\");","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"xCOLOURx"},"content":" returnCommand \u003d new OnCommand(localDate);","lastModifiedDate":"2023-09-01"},{"lineNumber":181,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":183,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":184,"author":{"gitId":"xCOLOURx"},"content":" case \"bye\":","lastModifiedDate":"2023-09-01"},{"lineNumber":185,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":186,"author":{"gitId":"xCOLOURx"},"content":" returnCommand \u003d new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":188,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":189,"author":{"gitId":"xCOLOURx"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":190,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-01"},{"lineNumber":191,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":193,"author":{"gitId":"xCOLOURx"},"content":" return returnCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":194,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":197,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"xCOLOURx"},"content":" public static LocalDateTime parseDate(String date) throws DateTimeParseException {","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"xCOLOURx"},"content":" LocalDateTime localDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":201,"author":{"gitId":"xCOLOURx"},"content":" if(date.length() \u003d\u003d 10) {","lastModifiedDate":"2023-09-01"},{"lineNumber":202,"author":{"gitId":"xCOLOURx"},"content":" localDateTime \u003d LocalDateTime.parse(date + \" 0000\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"xCOLOURx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":204,"author":{"gitId":"xCOLOURx"},"content":" localDateTime \u003d LocalDateTime.parse(date, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":206,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":207,"author":{"gitId":"xCOLOURx"},"content":" return localDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":208,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":209,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":211,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":211}},{"path":"src/main/java/noac/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import noac.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import noac.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import noac.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" private String filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" public ArrayList\u003cTask\u003e load() throws NoacException {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":" ArrayList\u003cTask\u003e returnList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" if (!file.createNewFile()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":" while(scanner.hasNextLine()){","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":" String[] fileLineInput \u003d scanner.nextLine().split(\"\\\\|\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"xCOLOURx"},"content":" String taskType \u003d fileLineInput[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"xCOLOURx"},"content":" switch (taskType){","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"xCOLOURx"},"content":" case \"T\":","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"xCOLOURx"},"content":" if (fileLineInput.length !\u003d 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Corrupted Save file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"xCOLOURx"},"content":" Todo todo \u003d new Todo(fileLineInput[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"xCOLOURx"},"content":" if(fileLineInput[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"xCOLOURx"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"xCOLOURx"},"content":" returnList.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"xCOLOURx"},"content":" case \"D\":","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"xCOLOURx"},"content":" if (fileLineInput.length !\u003d 4) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Corrupted Save file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"xCOLOURx"},"content":" Deadline deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"xCOLOURx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"xCOLOURx"},"content":" deadline \u003d new Deadline(fileLineInput[2], Parser.parseDate(fileLineInput[3]));","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"xCOLOURx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Corrupted Save file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"xCOLOURx"},"content":" if(fileLineInput[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"xCOLOURx"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"xCOLOURx"},"content":" returnList.add(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"xCOLOURx"},"content":" case \"E\":","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"xCOLOURx"},"content":" if (fileLineInput.length !\u003d 5) {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Corrupted Save file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"xCOLOURx"},"content":" Event event;","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"xCOLOURx"},"content":" try{","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"xCOLOURx"},"content":" event \u003d new Event(fileLineInput[2],Parser.parseDate(fileLineInput[3]) , Parser.parseDate(fileLineInput[4]) );","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"xCOLOURx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Corrupted Save file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"xCOLOURx"},"content":" if(fileLineInput[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"xCOLOURx"},"content":" event.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"xCOLOURx"},"content":" returnList.add(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"xCOLOURx"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"xCOLOURx"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Corrupted Save file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"xCOLOURx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Corrupted Save file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"xCOLOURx"},"content":" return returnList;","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"xCOLOURx"},"content":" public void save(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"xCOLOURx"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"xCOLOURx"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"xCOLOURx"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(fileWriter);","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"xCOLOURx"},"content":" for(int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"xCOLOURx"},"content":" bufferedWriter.write(taskList.getTask(i).printToFile() + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"xCOLOURx"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"xCOLOURx"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"xCOLOURx"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":127}},{"path":"src/main/java/noac/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" return taskList.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" taskList.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" taskList.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"xCOLOURx"},"content":" return taskList.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":42}},{"path":"src/main/java/noac/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" public Ui(){","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" public void showWelcomeMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" String logo \u003d \" _ _ ___ _ ____\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" \"| \\\\ | |/ _ \\\\ / \\\\ / ___|\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" \"| \\\\| | | | |/ _ \\\\| |\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":" \"| |\\\\ | |_| / ___ \\\\ |___\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" \"|_| \\\\_|\\\\___/_/ \\\\_\\\\____|\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":" String welcomeMessage \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" \" Hello! I\u0027m NOAC\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" \" What can I do for you?\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" \" ____________________________________________________________\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(welcomeMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"xCOLOURx"},"content":" public void showByeMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"xCOLOURx"},"content":" String byeMessage \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"xCOLOURx"},"content":" \" Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"xCOLOURx"},"content":" \" ____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(byeMessage);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"xCOLOURx"},"content":" public void showErrorMessage(NoacException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"xCOLOURx"},"content":" public void showList(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"xCOLOURx"},"content":" for (int i \u003d 1; i \u003c\u003d taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + i + \".\" + taskList.getTask(i-1).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"xCOLOURx"},"content":" public void showMarkOrUnmark(Task task, boolean isMark) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"xCOLOURx"},"content":" if (isMark) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"xCOLOURx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"xCOLOURx"},"content":" public void showAddTask(Task task, int listSize) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Now you have \" + listSize + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"xCOLOURx"},"content":" public void showDeleteTask(Task task, int listSize) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" Now you have \" + listSize + \" tasks in the list.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"xCOLOURx"},"content":" public void showOnDate(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" The tasks on this date are:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"xCOLOURx"},"content":" for(int i \u003d 0 ; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" \" + tasks.get(i).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"xCOLOURx"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"xCOLOURx"},"content":" public String readCommand(){","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"xCOLOURx"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":116}},{"path":"src/main/java/noac/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.NoacException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import noac.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import noac.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import noac.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws NoacException;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":" return isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":17}},{"path":"src/main/java/noac/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import noac.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import noac.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import noac.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" private LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":" public DeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage){","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" Deadline d \u003d new Deadline(this.description, this.by);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" tasks.addTask(d);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" ui.showAddTask(d, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":31}},{"path":"src/main/java/noac/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.NoacException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import noac.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import noac.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import noac.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":" private int taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" public DeleteCommand(int taskIndex) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NoacException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" if (taskIndex + 1 \u003e tasks.size() || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please enter a task in your list!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" tasks.deleteTask(this.taskIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":" ui.showDeleteTask(tasks.getTask(this.taskIndex), tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":31}},{"path":"src/main/java/noac/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import noac.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import noac.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import noac.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" public EventCommand(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" Event e \u003d new Event(this.description, this.from, this.to);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" tasks.addTask(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" ui.showAddTask(e, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":34}},{"path":"src/main/java/noac/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import noac.NoacException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import noac.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import noac.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"import noac.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":" private boolean isExit \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NoacException {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":" ui.showByeMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" return isExit;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":22}},{"path":"src/main/java/noac/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import noac.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import noac.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" ui.showList(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":14}},{"path":"src/main/java/noac/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import noac.NoacException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import noac.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import noac.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"import noac.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":" private int taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" private boolean isMark;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":" public MarkCommand(int taskIndex, boolean isMark) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" this.isMark \u003d isMark;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NoacException {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" if (taskIndex + 1 \u003e tasks.size() || taskIndex \u003c 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" throw new NoacException(\"☹ OOPS!!! Please enter a task in your list!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" if (isMark) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" tasks.getTask(this.taskIndex).markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":" tasks.getTask(this.taskIndex).unmarkAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":" ui.showMarkOrUnmark(tasks.getTask(this.taskIndex), this.isMark);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":37}},{"path":"src/main/java/noac/command/OnCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import noac.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import noac.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import noac.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"import noac.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"import noac.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":"public class OnCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" private LocalDate localDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" public OnCommand(LocalDate localDate) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" this.localDate \u003d localDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" ArrayList\u003cTask\u003e taskArrayList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" if (tasks.getTask(i) instanceof Deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" if (localDate.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).equals(((Deadline) tasks.getTask(i)).getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")))) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":" taskArrayList.add(tasks.getTask(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":" } else if (tasks.getTask(i) instanceof Event) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":" if (localDate.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).equals(((Event) tasks.getTask(i)).getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"))) || localDate.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).equals(((Event) tasks.getTask(i)).getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")))) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":" taskArrayList.add(tasks.getTask(i));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"xCOLOURx"},"content":" ui.showOnDate(taskArrayList);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":44}},{"path":"src/main/java/noac/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import noac.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"import noac.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import noac.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage){","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" Todo t \u003d new Todo(this.description);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" ui.showAddTask(t, tasks.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":27}},{"path":"src/main/java/noac/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" public String printToFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" return \"D|\" + super.printToFile() + \"|\" + this.by.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" return by;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":31}},{"path":"src/main/java/noac/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \" to: \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" public String printToFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" return \"E|\" + super.printToFile() + \"|\" + this.from.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")) + \"|\" + this.to.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" return from;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":" return to;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":35}},{"path":"src/main/java/noac/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":" public String printToFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" int i \u003d isDone ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":" return i + \"|\" + description;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":34}},{"path":"src/main/java/noac/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":" return \"[T]\" + super.toString() ;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" public String printToFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" return \"T|\" + super.printToFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":21}},{"path":"src/test/java/noac/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":" public void testParseDate() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":" LocalDateTime result \u003d LocalDateTime.parse(\"2001-10-10 0000\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":" assertEquals(result.toString(), Parser.parseDate(\"2001-10-10\").toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":" LocalDateTime result2 \u003d LocalDateTime.parse(\"2001-10-10 1800\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":" assertEquals(result2.toString(), Parser.parseDate(\"2001-10-10 1800\").toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":" DateTimeParseException e \u003d assertThrows(DateTimeParseException.class, () -\u003e Parser.parseDate(\"2001-10-101800\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":31}},{"path":"src/test/java/noac/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"package noac.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"import noac.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xCOLOURx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xCOLOURx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xCOLOURx"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"xCOLOURx"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"xCOLOURx"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"xCOLOURx"},"content":" public void testPrintToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xCOLOURx"},"content":" Deadline d \u003d new Deadline(\"hello\", LocalDateTime.parse(\"2001-10-10 1800\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xCOLOURx"},"content":" String result \u003d \"D|0|hello|2001-10-10 1800\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xCOLOURx"},"content":" assertEquals(result ,d.printToFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xCOLOURx"},"content":" Deadline d2 \u003d new Deadline(\"hello\", LocalDateTime.parse(\"2001-10-10 1800\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xCOLOURx"},"content":" String result2 \u003d \"D|1|hello|2001-10-10 1800\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xCOLOURx"},"content":" d2.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xCOLOURx"},"content":" assertEquals(result2 ,d2.printToFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"xCOLOURx"},"content":" Deadline d3 \u003d new Deadline(\"hello\", Parser.parseDate(\"2001-10-10\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"xCOLOURx"},"content":" String result3 \u003d \"D|0|hello|2001-10-10 0000\";","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"xCOLOURx"},"content":" assertEquals(result3 ,d3.printToFile());","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"xCOLOURx"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"xCOLOURx"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"xCOLOURx"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xCOLOURx":42}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"xCOLOURx"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xCOLOURx"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xCOLOURx"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xCOLOURx"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xCOLOURx"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xCOLOURx":5}},{"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":"xCOLOURx"},"content":"java -classpath ..\\bin noac.Noac \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"xCOLOURx":1,"-":20}}] diff --git a/xCOLOURx_ip_master/commits.json b/xCOLOURx_ip_master/commits.json index cc8e9d72..def7183b 100644 --- a/xCOLOURx_ip_master/commits.json +++ b/xCOLOURx_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"xCOLOURx":[{"date":"2023-08-24","commitResults":[{"hash":"ee580b78146058780b3919e86620fac9f6b81788","isMergeCommit":false,"messageTitle":"Initial commit for lvl 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":5}}},{"hash":"a5825fece20e7101d16560e74856365a565151c6","isMergeCommit":false,"messageTitle":"Initial commit for lvl 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":21}}},{"hash":"311264ff062a223ca3343ef4524dc14ad99a4867","isMergeCommit":false,"messageTitle":"Inital commit for lvl 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":6}}},{"hash":"6615a61dc5941e55e68ce4de1957ea62da9144b7","isMergeCommit":false,"messageTitle":"Inital commit for lvl 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":5}}},{"hash":"4bfedb49a2ac1db00ae245ee47f0c78c6bfd42f8","isMergeCommit":false,"messageTitle":"Initial commit for lvl 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":227,"deletions":25}}},{"hash":"f12c1c3b26d93ad23c1b53eebe170fc95a72372f","isMergeCommit":false,"messageTitle":"Initial commit for Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"15297316477e6a7cb51ffa486c34f94be7adba59","isMergeCommit":false,"messageTitle":"Initial commit for lvl 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":143}}},{"hash":"6eebcc102c4621299a2472d2aa6326b9b079c42b","isMergeCommit":false,"messageTitle":"Initial commit for lvl 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":4}}}]},{"date":"2023-08-31","commitResults":[{"hash":"539b6d178b90ed5746c1dfef1cde70aefa49d45b","isMergeCommit":false,"messageTitle":"Add Save functionality","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":20}}},{"hash":"a15503108270d15e8436f6bb1e092ff99c636bb5","isMergeCommit":false,"messageTitle":"Add Date and Time functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":222,"deletions":139}}},{"hash":"fc9de874b21bdeb89ebde16457b2e0b7ea9a3138","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"xCOLOURx":{"java":614,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":5}},"authorContributionVariance":{"xCOLOURx":57482.023},"authorDisplayNameMap":{"xCOLOURx":"CS2103T-T13-1 KYLE..CHAN"}} +{"authorDailyContributionsMap":{"xCOLOURx":[{"date":"2023-08-24","commitResults":[{"hash":"ee580b78146058780b3919e86620fac9f6b81788","isMergeCommit":false,"messageTitle":"Initial commit for lvl 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":5}}},{"hash":"a5825fece20e7101d16560e74856365a565151c6","isMergeCommit":false,"messageTitle":"Initial commit for lvl 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":21}}},{"hash":"311264ff062a223ca3343ef4524dc14ad99a4867","isMergeCommit":false,"messageTitle":"Inital commit for lvl 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":6}}},{"hash":"6615a61dc5941e55e68ce4de1957ea62da9144b7","isMergeCommit":false,"messageTitle":"Inital commit for lvl 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":5}}},{"hash":"4bfedb49a2ac1db00ae245ee47f0c78c6bfd42f8","isMergeCommit":false,"messageTitle":"Initial commit for lvl 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":227,"deletions":25}}},{"hash":"f12c1c3b26d93ad23c1b53eebe170fc95a72372f","isMergeCommit":false,"messageTitle":"Initial commit for Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"15297316477e6a7cb51ffa486c34f94be7adba59","isMergeCommit":false,"messageTitle":"Initial commit for lvl 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":143}}},{"hash":"6eebcc102c4621299a2472d2aa6326b9b079c42b","isMergeCommit":false,"messageTitle":"Initial commit for lvl 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":4}}}]},{"date":"2023-08-31","commitResults":[{"hash":"539b6d178b90ed5746c1dfef1cde70aefa49d45b","isMergeCommit":false,"messageTitle":"Add Save functionality","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":20}}},{"hash":"a15503108270d15e8436f6bb1e092ff99c636bb5","isMergeCommit":false,"messageTitle":"Add Date and Time functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":222,"deletions":139}}},{"hash":"fc9de874b21bdeb89ebde16457b2e0b7ea9a3138","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"34c0681906e73032e0b6e6e03ecb8e95f8ae219d","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":692,"deletions":476}}},{"hash":"b511bf1293213437cf37809c7fd2431b0b0f5a9c","isMergeCommit":false,"messageTitle":"Add Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":21},"bat":{"insertions":1,"deletions":1}}},{"hash":"51eef1f6a6ce238c997bfb83be2bae026e2a9997","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f8be0daab4904bb19717b239713f63ad5a9350b0","isMergeCommit":false,"messageTitle":"Add Gradle Support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"1df7c11e36c8838e831136dfa55a47cd954d5959","isMergeCommit":false,"messageTitle":"Add JUnit Test","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"xCOLOURx":{"java":1000,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":5}},"authorContributionVariance":{"xCOLOURx":157159.48},"authorDisplayNameMap":{"xCOLOURx":"CS2103T-T13-1 KYLE..CHAN"}} diff --git a/xenosf_ip_master/authorship.json b/xenosf_ip_master/authorship.json index 5eaab7a3..0bc75cc8 100644 --- a/xenosf_ip_master/authorship.json +++ b/xenosf_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" * Deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" protected String deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" * Constructor for Deadline task.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":" * @param description Description of task.","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":" public DeadlineTask(String description, String deadline) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":" * Gets Deadline task formatted with type and status icon","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":" * @return Task formatted as a string.","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xenosf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xenosf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xenosf"},"content":" return String.format(\"\u003cD\u003e%s (BY: %s)\", super.toString(), this.deadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":26}},{"path":"src/main/java/Dude.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" * Dude (Duke, but renamed)","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":"public class Dude {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" // Messages","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" static String logo \u003d","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":" \" _| _| _ O\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" \"(_||_|(_|(/_ /İ\\\\\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":" \"------------ ```\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":" static String border \u003d \"-----------------------------------------------------------\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":" static String hello \u003d logo +","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":" \"Hello! I\u0027m dude.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":" \"What can I do for you?\";","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":" static String goodbye \u003d","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":" \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":" static String taskListPrefix \u003d \"Here\u0027s your tasks list:\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":" static String emptyTaskList \u003d \"You currently have no tasks in your list.\";","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":" static String addedTask \u003d \"Got it! I\u0027ve added this task:\\n\\t%s\\nYou now have a total of %d task(s).\";","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xenosf"},"content":" static String deletedTask \u003d \"Got it! I\u0027ve removed this task:\\n\\t%s\\nYou now have a total of %d task(s).\";","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"xenosf"},"content":" static String markedAsDonePrefix \u003d \"Nice! I\u0027ve marked this task as done:\\n\\t\";","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xenosf"},"content":" static String markedAsNotDonePrefix \u003d \"Got it. I\u0027ve marked this task as not done:\\n\\t\";","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"xenosf"},"content":" * Tasks stored by user.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xenosf"},"content":" public static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xenosf"},"content":" * Add task to tasks list.","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xenosf"},"content":" * @param task Task to add.","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xenosf"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xenosf"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"xenosf"},"content":" * Remove task from tasks list.","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"xenosf"},"content":" * @param index 1-based index of task to remove.","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"xenosf"},"content":" * @return Removed task.","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"xenosf"},"content":" public static Task removeTask(int index) throws TaskOutOfBoundsException {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"xenosf"},"content":" return tasks.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"xenosf"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"xenosf"},"content":" throw new TaskOutOfBoundsException();","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"xenosf"},"content":" * Get number of tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"xenosf"},"content":" * @return Number of tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"xenosf"},"content":" public static int getNumTasks() {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"xenosf"},"content":" return tasks.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"xenosf"},"content":" * Get task from list.","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"xenosf"},"content":" * @param index 1-based index of task to get.","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"xenosf"},"content":" * @throws TaskOutOfBoundsException if task number does not exist","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"xenosf"},"content":" public static Task getTask(int index) throws TaskOutOfBoundsException {","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"xenosf"},"content":" return tasks.get(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"xenosf"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"xenosf"},"content":" throw new TaskOutOfBoundsException();","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"xenosf"},"content":" * Gets list of all tasks as a string.","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"xenosf"},"content":" * @return Tasks list formatted as a string.","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"xenosf"},"content":" public static String getTasksList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"xenosf"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"xenosf"},"content":" return emptyTaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"xenosf"},"content":" StringBuilder tasksList \u003d new StringBuilder(taskListPrefix);","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"xenosf"},"content":" for (int i \u003d 0; i \u003c getNumTasks(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"xenosf"},"content":" String taskNumberPrefix \u003d String.format(\"%3s-\", i + 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"xenosf"},"content":" String taskStr \u003d taskNumberPrefix + tasks.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"xenosf"},"content":" tasksList.append(taskStr);","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"xenosf"},"content":" return tasksList.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"xenosf"},"content":" * Parses command with task number with format `{cmd} {index}`, getting corresponding task.","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"xenosf"},"content":" * @param input command.","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"xenosf"},"content":" * @return index of task with index specified in commands","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"xenosf"},"content":" * @throws InvalidTaskIndexException if index is invalid","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"xenosf"},"content":" * @throws TaskIndexMissingException if index is not specified","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"xenosf"},"content":" public static int parseTaskIndexCommand(String input) throws InvalidTaskIndexException, TaskIndexMissingException {","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"xenosf"},"content":" String[] splitInput \u003d input.split(\" \", 3);","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"xenosf"},"content":" if (splitInput.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"xenosf"},"content":" // task number not specified","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"xenosf"},"content":" throw new TaskIndexMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"xenosf"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"xenosf"},"content":" String specifiedTask \u003d splitInput[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"xenosf"},"content":" int index \u003d Integer.parseInt(specifiedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"xenosf"},"content":" getTask(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"xenosf"},"content":" return index;","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"xenosf"},"content":" } catch (NumberFormatException | TaskOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"xenosf"},"content":" // cannot parse number from input","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"xenosf"},"content":" throw new InvalidTaskIndexException(specifiedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"xenosf"},"content":" * Parses delete commands.","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"xenosf"},"content":" * @param input delete command.","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"xenosf"},"content":" * @throws DudeException if parsing task from command fails","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"xenosf"},"content":" public static void parseDelete(String input) throws DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"xenosf"},"content":" int taskToDelete \u003d parseTaskIndexCommand(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"xenosf"},"content":" Task task \u003d removeTask(taskToDelete);","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"xenosf"},"content":" printMessage(String.format(deletedTask, task, getNumTasks()));","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"xenosf"},"content":" * Parses mark commands.","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":136,"author":{"gitId":"xenosf"},"content":" * @param input mark command.","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"xenosf"},"content":" * @throws DudeException if parsing task from command fails","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":139,"author":{"gitId":"xenosf"},"content":" public static void parseMark(String input) throws DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"xenosf"},"content":" int taskToMark \u003d parseTaskIndexCommand(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"xenosf"},"content":" Task task \u003d getTask(taskToMark);","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"xenosf"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"xenosf"},"content":" printMessage(markedAsDonePrefix + task);","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"xenosf"},"content":" * Parses unmark commands.","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"xenosf"},"content":" * @param input unmark command.","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"xenosf"},"content":" * @throws DudeException if parsing task from command fails","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"xenosf"},"content":" public static void parseUnmark(String input) throws DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"xenosf"},"content":" int taskToUnmark \u003d parseTaskIndexCommand(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"xenosf"},"content":" Task task \u003d getTask(taskToUnmark);","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"xenosf"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"xenosf"},"content":" printMessage(markedAsNotDonePrefix + task);","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"xenosf"},"content":" * Parses todo task command.","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"xenosf"},"content":" * @param input command.","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"xenosf"},"content":" * @throws TaskDescriptionMissingException if task description is missing","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"xenosf"},"content":" public static void parseTodo(String input) throws TaskDescriptionMissingException {","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"xenosf"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"xenosf"},"content":" if (splitInput.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"xenosf"},"content":" // task description not specified","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"xenosf"},"content":" throw new TaskDescriptionMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"xenosf"},"content":" String description \u003d splitInput[1].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"xenosf"},"content":" Task task \u003d new ToDoTask(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"xenosf"},"content":" addTask(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"xenosf"},"content":" printMessage(String.format(addedTask, task, getNumTasks()));","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"xenosf"},"content":" * Parses deadline task command.","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"xenosf"},"content":" * @param input command.","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"xenosf"},"content":" * @throws TaskDescriptionMissingException if task description is missing","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"xenosf"},"content":" * @throws TaskDeadlineMissingException if task deadline is missing","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":185,"author":{"gitId":"xenosf"},"content":" public static void parseDeadline(String input)","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"xenosf"},"content":" throws TaskDescriptionMissingException, TaskDeadlineMissingException {","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"xenosf"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"xenosf"},"content":" if (splitInput.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":189,"author":{"gitId":"xenosf"},"content":" // task description not specified","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"xenosf"},"content":" throw new TaskDescriptionMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"xenosf"},"content":" String[] splitDeadline \u003d splitInput[1].split(\"/by\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":193,"author":{"gitId":"xenosf"},"content":" if (splitDeadline.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":194,"author":{"gitId":"xenosf"},"content":" // deadline not specified","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"xenosf"},"content":" throw new TaskDeadlineMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"xenosf"},"content":" String description \u003d splitDeadline[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":198,"author":{"gitId":"xenosf"},"content":" String deadline \u003d splitDeadline[1].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":199,"author":{"gitId":"xenosf"},"content":" Task task \u003d new DeadlineTask(description, deadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"xenosf"},"content":" addTask(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":201,"author":{"gitId":"xenosf"},"content":" printMessage(String.format(addedTask, task, getNumTasks()));","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":203,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":204,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":205,"author":{"gitId":"xenosf"},"content":" * Parses event task command.","lastModifiedDate":"2023-08-23"},{"lineNumber":206,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":207,"author":{"gitId":"xenosf"},"content":" * @param input command.","lastModifiedDate":"2023-08-23"},{"lineNumber":208,"author":{"gitId":"xenosf"},"content":" * @throws TaskDescriptionMissingException if task description is missing","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"xenosf"},"content":" * @throws EventStartMissingException if event start is missing","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"xenosf"},"content":" * @throws EventEndMissingException if event end is missing","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":212,"author":{"gitId":"xenosf"},"content":" public static void parseEvent(String input)","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"xenosf"},"content":" throws TaskDescriptionMissingException, EventStartMissingException, EventEndMissingException {","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"xenosf"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":215,"author":{"gitId":"xenosf"},"content":" if (splitInput.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":216,"author":{"gitId":"xenosf"},"content":" // task description not specified","lastModifiedDate":"2023-08-23"},{"lineNumber":217,"author":{"gitId":"xenosf"},"content":" throw new TaskDescriptionMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":218,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"xenosf"},"content":" String[] splitStart \u003d splitInput[1].split(\"/from\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":220,"author":{"gitId":"xenosf"},"content":" if (splitStart.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":221,"author":{"gitId":"xenosf"},"content":" // start date not specified","lastModifiedDate":"2023-08-23"},{"lineNumber":222,"author":{"gitId":"xenosf"},"content":" throw new EventStartMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"xenosf"},"content":" String[] splitEnd \u003d splitStart[1].split(\"/to\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":225,"author":{"gitId":"xenosf"},"content":" if (splitEnd.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":226,"author":{"gitId":"xenosf"},"content":" // end date not specified","lastModifiedDate":"2023-08-23"},{"lineNumber":227,"author":{"gitId":"xenosf"},"content":" throw new EventEndMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"xenosf"},"content":" String description \u003d splitStart[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":230,"author":{"gitId":"xenosf"},"content":" String start \u003d splitEnd[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":231,"author":{"gitId":"xenosf"},"content":" String end \u003d splitEnd[1].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":232,"author":{"gitId":"xenosf"},"content":" Task task \u003d new EventTask(description, start, end);","lastModifiedDate":"2023-08-23"},{"lineNumber":233,"author":{"gitId":"xenosf"},"content":" addTask(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":234,"author":{"gitId":"xenosf"},"content":" printMessage(String.format(addedTask, task, getNumTasks()));","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":236,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":237,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":238,"author":{"gitId":"xenosf"},"content":" * Parse input and act accordingly.","lastModifiedDate":"2023-08-23"},{"lineNumber":239,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":240,"author":{"gitId":"xenosf"},"content":" * @param input Input to parse.","lastModifiedDate":"2023-08-23"},{"lineNumber":241,"author":{"gitId":"xenosf"},"content":" * @return `true` if a subsequent command can be taken, `false` if not (i.e. quit)","lastModifiedDate":"2023-08-23"},{"lineNumber":242,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":243,"author":{"gitId":"xenosf"},"content":" public static boolean parseInput(String input) throws DudeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":244,"author":{"gitId":"xenosf"},"content":" // extract command (strip leading and trailing whitespace, take first word)","lastModifiedDate":"2023-08-23"},{"lineNumber":245,"author":{"gitId":"xenosf"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":246,"author":{"gitId":"xenosf"},"content":" String cmdString \u003d splitInput[0].toLowerCase();","lastModifiedDate":"2023-08-24"},{"lineNumber":247,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":248,"author":{"gitId":"xenosf"},"content":" DudeCommand cmd \u003d DudeCommand.valueOf(cmdString);","lastModifiedDate":"2023-08-24"},{"lineNumber":249,"author":{"gitId":"xenosf"},"content":" switch (cmd) {","lastModifiedDate":"2023-08-23"},{"lineNumber":250,"author":{"gitId":"xenosf"},"content":" case bye:","lastModifiedDate":"2023-08-24"},{"lineNumber":251,"author":{"gitId":"xenosf"},"content":" // quit","lastModifiedDate":"2023-08-23"},{"lineNumber":252,"author":{"gitId":"xenosf"},"content":" // Print shutdown greeting","lastModifiedDate":"2023-08-23"},{"lineNumber":253,"author":{"gitId":"xenosf"},"content":" printMessage(goodbye);","lastModifiedDate":"2023-08-23"},{"lineNumber":254,"author":{"gitId":"xenosf"},"content":" return false;","lastModifiedDate":"2023-08-23"},{"lineNumber":255,"author":{"gitId":"xenosf"},"content":" case list:","lastModifiedDate":"2023-08-24"},{"lineNumber":256,"author":{"gitId":"xenosf"},"content":" // list tasks","lastModifiedDate":"2023-08-23"},{"lineNumber":257,"author":{"gitId":"xenosf"},"content":" printMessage(getTasksList());","lastModifiedDate":"2023-08-23"},{"lineNumber":258,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":259,"author":{"gitId":"xenosf"},"content":" case mark:","lastModifiedDate":"2023-08-24"},{"lineNumber":260,"author":{"gitId":"xenosf"},"content":" // mark as done","lastModifiedDate":"2023-08-24"},{"lineNumber":261,"author":{"gitId":"xenosf"},"content":" parseMark(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":262,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":263,"author":{"gitId":"xenosf"},"content":" case unmark:","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"xenosf"},"content":" // mark as not done","lastModifiedDate":"2023-08-24"},{"lineNumber":265,"author":{"gitId":"xenosf"},"content":" parseUnmark(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":266,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":267,"author":{"gitId":"xenosf"},"content":" case delete:","lastModifiedDate":"2023-08-24"},{"lineNumber":268,"author":{"gitId":"xenosf"},"content":" case remove: // alias because I keep typing remove lol","lastModifiedDate":"2023-08-24"},{"lineNumber":269,"author":{"gitId":"xenosf"},"content":" parseDelete(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":270,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":271,"author":{"gitId":"xenosf"},"content":" case todo:","lastModifiedDate":"2023-08-24"},{"lineNumber":272,"author":{"gitId":"xenosf"},"content":" // add todo task to list","lastModifiedDate":"2023-08-23"},{"lineNumber":273,"author":{"gitId":"xenosf"},"content":" parseTodo(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":274,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":275,"author":{"gitId":"xenosf"},"content":" case deadline:","lastModifiedDate":"2023-08-24"},{"lineNumber":276,"author":{"gitId":"xenosf"},"content":" // add deadline task to list","lastModifiedDate":"2023-08-23"},{"lineNumber":277,"author":{"gitId":"xenosf"},"content":" parseDeadline(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":278,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":279,"author":{"gitId":"xenosf"},"content":" case event:","lastModifiedDate":"2023-08-24"},{"lineNumber":280,"author":{"gitId":"xenosf"},"content":" // add event task to list","lastModifiedDate":"2023-08-23"},{"lineNumber":281,"author":{"gitId":"xenosf"},"content":" parseEvent(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":282,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":283,"author":{"gitId":"xenosf"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":284,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"xenosf"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":286,"author":{"gitId":"xenosf"},"content":" // invalid command entered","lastModifiedDate":"2023-08-24"},{"lineNumber":287,"author":{"gitId":"xenosf"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-23"},{"lineNumber":288,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":289,"author":{"gitId":"xenosf"},"content":" return true;","lastModifiedDate":"2023-08-23"},{"lineNumber":290,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":291,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":292,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":293,"author":{"gitId":"xenosf"},"content":" * Format and print given message/prompt to console.","lastModifiedDate":"2023-08-23"},{"lineNumber":294,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":295,"author":{"gitId":"xenosf"},"content":" * @param message Message to print. Lines separated by \\n.","lastModifiedDate":"2023-08-23"},{"lineNumber":296,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":297,"author":{"gitId":"xenosf"},"content":" public static void printMessage(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":298,"author":{"gitId":"xenosf"},"content":" String[] lines \u003d message.split(\"\\\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":299,"author":{"gitId":"xenosf"},"content":" String prefix \u003d \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":300,"author":{"gitId":"xenosf"},"content":" String output \u003d border + prefix +","lastModifiedDate":"2023-08-23"},{"lineNumber":301,"author":{"gitId":"xenosf"},"content":" String.join(\"\\n\" + prefix, lines) +","lastModifiedDate":"2023-08-23"},{"lineNumber":302,"author":{"gitId":"xenosf"},"content":" \"\\n\" + border;","lastModifiedDate":"2023-08-23"},{"lineNumber":303,"author":{"gitId":"xenosf"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-23"},{"lineNumber":304,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":305,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":306,"author":{"gitId":"xenosf"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":307,"author":{"gitId":"xenosf"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":308,"author":{"gitId":"xenosf"},"content":" // Print startup greeting","lastModifiedDate":"2023-08-23"},{"lineNumber":309,"author":{"gitId":"xenosf"},"content":" printMessage(hello);","lastModifiedDate":"2023-08-23"},{"lineNumber":310,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":311,"author":{"gitId":"xenosf"},"content":" // Input loop -- wait for input, respond, repeat","lastModifiedDate":"2023-08-23"},{"lineNumber":312,"author":{"gitId":"xenosf"},"content":" boolean shouldContinue \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":313,"author":{"gitId":"xenosf"},"content":" while (shouldContinue) {","lastModifiedDate":"2023-08-23"},{"lineNumber":314,"author":{"gitId":"xenosf"},"content":" // read user input","lastModifiedDate":"2023-08-23"},{"lineNumber":315,"author":{"gitId":"xenosf"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":316,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":317,"author":{"gitId":"xenosf"},"content":" shouldContinue \u003d parseInput(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":318,"author":{"gitId":"xenosf"},"content":" } catch (DudeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":319,"author":{"gitId":"xenosf"},"content":" printMessage(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":320,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":321,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":322,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":323,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"xenosf":323}},{"path":"src/main/java/DudeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" * Commands to be entered into Dude.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":"public enum DudeCommand {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" list,","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" todo,","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" deadline,","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" event,","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" mark,","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":" unmark,","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" remove,","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":" delete,","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":" bye,","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":14}},{"path":"src/main/java/DudeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" * Exception specific to Dude (Duke)","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":"public class DudeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" * Constructor for Dude exception with message","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" * @param message Human-readable error message.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":" public DudeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":" * Constructor for Dude exception with default message","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":" public DudeException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":" super(\"An error occurred. :(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":21}},{"path":"src/main/java/EventEndMissingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class EventEndMissingException extends DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public EventEndMissingException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(\"Please specify the event end date after the task\\n description and start date, prefixed by `\\\\to`.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":5}},{"path":"src/main/java/EventStartMissingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class EventStartMissingException extends DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public EventStartMissingException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(\"Please specify the event start date after the task\\ndescription, prefixed by `\\\\from`.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":5}},{"path":"src/main/java/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" * Start time","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" protected String startTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" * End time","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":" protected String endTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":" * Constructor for Event task.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":" * @param description Description of task.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":" public EventTask(String description, String startTime, String endTime) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xenosf"},"content":" * Gets Event task formatted with type and status icon","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xenosf"},"content":" * @return Task formatted as a string.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xenosf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xenosf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xenosf"},"content":" return String.format(\"\u003cE\u003e%s (FROM: %s, TO: %s)\", super.toString(), this.startTime, this.endTime);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":33}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class InvalidCommandException extends DudeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" \"I don\u0027t know what that means.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" \"Try checking if you\u0027ve typed the command correctly.\"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":8}},{"path":"src/main/java/InvalidTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class InvalidTaskIndexException extends DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public InvalidTaskIndexException(String index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" String.format(\"I can\u0027t find the task numbered \\\"%s\\\".\\nTry checking if you\u0027ve typed the correct task number.\",","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" index)","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":8}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" * Constructor for task.","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" * @param description Description of task.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":" * Gets text status icon of task\u0027s completion status.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":" * @return space if not done; X if done.","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xenosf"},"content":" * Gets task formatted with status icon","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xenosf"},"content":" * @return Task formatted as a string. e.g. [X] completed task","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xenosf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xenosf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xenosf"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xenosf"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xenosf"},"content":" * Marks task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xenosf"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xenosf"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xenosf"},"content":" * Marks task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xenosf"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xenosf"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":47}},{"path":"src/main/java/TaskDeadlineMissingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class TaskDeadlineMissingException extends DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public TaskDeadlineMissingException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(\"Please specify a task deadline after the task\\ndescription, prefixed by `\\\\by`.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":5}},{"path":"src/main/java/TaskDescriptionMissingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class TaskDescriptionMissingException extends DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public TaskDescriptionMissingException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(\"Please specify a task description.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":5}},{"path":"src/main/java/TaskIndexMissingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class TaskIndexMissingException extends DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public TaskIndexMissingException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(\"Please specify a task number.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":5}},{"path":"src/main/java/TaskOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class TaskOutOfBoundsException extends IndexOutOfBoundsException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public TaskOutOfBoundsException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(\"Task number out of bounds.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":5}},{"path":"src/main/java/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" * Constructor for ToDo task.","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" * @param description Description of task.","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" public ToDoTask(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":" * Gets Todo task formatted with type and status icon","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":" * @return Task formatted as a string.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":" return \"\u003cT\u003e\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"qwertyuiop","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":"hello.....","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"todo learn how to use the deadline command /by now","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":"deaDline discussion post","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":"deadline essay /by sunday 2359","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":"event","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":"event anyhow","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":"event project meeting /to 1330h /from 1300h","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":"event project meeting /from mon 1300h /to 1330h","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":"event party /from mon 2200h /to tue 0330h","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":"mark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":"mark 81 483","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":"todo a","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"xenosf"},"content":"todo b","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"xenosf"},"content":"todo c","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"xenosf"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"xenosf"},"content":"remove 2","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"xenosf"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"xenosf"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"xenosf"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":28}},{"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":"xenosf"},"content":"java -classpath ..\\bin Dude \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"xenosf":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":"xenosf"},"content":"java -classpath ../bin Dude \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"xenosf":1,"-":37}}] +[{"path":"src/main/java/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" * Deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" protected String deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" * Constructor for Deadline task.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":" * @param description Description of task","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" * @param deadline Deadline for task","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":" public DeadlineTask(String description, String deadline) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":" * Constructor for deadline task, specifying completion status.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":" * @param description Description of task","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"xenosf"},"content":" * @param isDone Boolean representing task completion status","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"xenosf"},"content":" * @param deadline Deadline for task","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"xenosf"},"content":" public DeadlineTask(String description, String deadline, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"xenosf"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"xenosf"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"xenosf"},"content":" * Returns Deadline task formatted with type and status icon","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xenosf"},"content":" * @return Task formatted as a string.","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xenosf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xenosf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xenosf"},"content":" return String.format(\"\u003cD\u003e%s (BY: %s)\", super.toString(), this.deadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"xenosf"},"content":" * Parses save file data into a deadline task instance.","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"xenosf"},"content":" * @param data line from save file","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"xenosf"},"content":" * @return Task instance","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"xenosf"},"content":" * @throws InvalidTaskDataException if data is not in the expected format","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"xenosf"},"content":" public static DeadlineTask fromData(String data) throws InvalidTaskDataException {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"xenosf"},"content":" /*","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"xenosf"},"content":" expected format:","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"xenosf"},"content":" completed: 1, incomplete: 0","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"xenosf"},"content":" deadline: D || 1/0 || deadline || description","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"xenosf"},"content":" String[] splitData \u003d data.split(DELIMITER_REGEX, 4);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"xenosf"},"content":" if (splitData.length \u003c 4) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"xenosf"},"content":" throw new InvalidTaskDataException();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"xenosf"},"content":" String taskType \u003d splitData[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"xenosf"},"content":" String taskCompleted \u003d splitData[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"xenosf"},"content":" String taskDeadline \u003d splitData[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"xenosf"},"content":" String taskDescription \u003d splitData[3];","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"xenosf"},"content":" if (!taskCompleted.equals(\"1\") \u0026\u0026 !taskCompleted.equals(\"0\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"xenosf"},"content":" throw new InvalidTaskDataException();","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"xenosf"},"content":" boolean isCompleted \u003d taskCompleted.equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"xenosf"},"content":" return new DeadlineTask(taskDescription, taskDeadline, isCompleted);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"xenosf"},"content":" * Parses deadline task instance into save file string data","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"xenosf"},"content":" * @return Task data as string","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"xenosf"},"content":" public String toData() {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"xenosf"},"content":" /*","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"xenosf"},"content":" expected format:","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"xenosf"},"content":" completed: 1, incomplete: 0","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"xenosf"},"content":" deadline: D || 1/0 || deadline || description","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"xenosf"},"content":" String taskCompleted \u003d this.isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"xenosf"},"content":" return String.join(DELIMITER, \"D\", taskCompleted, this.deadline, this.description) + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":84}},{"path":"src/main/java/Dude.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" * Dude (Duke, but renamed)","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":"public class Dude {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" // Save-file related constants","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":" * Path to save file","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":" static final String SAVE_FILE_PATH \u003d \"./data/dude.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":" // Messages","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":" static String logo \u003d","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":" \" _| _| _ O\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":" \"(_||_|(_|(/_ /İ\\\\\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":" \"------------ ```\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xenosf"},"content":" static String border \u003d \"-----------------------------------------------------------\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xenosf"},"content":" static String hello \u003d logo +","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xenosf"},"content":" \"Hello! I\u0027m dude.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xenosf"},"content":" \"What can I do for you?\";","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xenosf"},"content":" static String goodbye \u003d","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xenosf"},"content":" \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xenosf"},"content":" static String taskListPrefix \u003d \"Here\u0027s your tasks list:\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xenosf"},"content":" static String emptyTaskList \u003d \"You currently have no tasks in your list.\";","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xenosf"},"content":" static String addedTask \u003d \"Got it! I\u0027ve added this task:\\n\\t%s\\nYou now have a total of %d task(s).\";","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xenosf"},"content":" static String deletedTask \u003d \"Got it! I\u0027ve removed this task:\\n\\t%s\\nYou now have a total of %d task(s).\";","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"xenosf"},"content":" static String markedAsDonePrefix \u003d \"Nice! I\u0027ve marked this task as done:\\n\\t\";","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xenosf"},"content":" static String markedAsNotDonePrefix \u003d \"Got it. I\u0027ve marked this task as not done:\\n\\t\";","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"xenosf"},"content":" * Tasks stored by user.","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xenosf"},"content":" public static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xenosf"},"content":" * Add task to tasks list.","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xenosf"},"content":" * @param task Task to add","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"xenosf"},"content":" * @throws SaveFileException if error saving","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xenosf"},"content":" public static void addTask(Task task) throws SaveFileException {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"xenosf"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"xenosf"},"content":" saveToSaveFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"xenosf"},"content":" * Remove task from tasks list.","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"xenosf"},"content":" * @param index 1-based index of task to remove","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"xenosf"},"content":" * @return Removed task","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"xenosf"},"content":" * @throws SaveFileException if error saving","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"xenosf"},"content":" public static Task removeTask(int index) throws TaskOutOfBoundsException, SaveFileException {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"xenosf"},"content":" Task removedTask \u003d tasks.remove(index - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"xenosf"},"content":" saveToSaveFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"xenosf"},"content":" return removedTask;","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"xenosf"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"xenosf"},"content":" throw new TaskOutOfBoundsException();","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"xenosf"},"content":" * Get number of tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"xenosf"},"content":" * @return Number of tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"xenosf"},"content":" public static int getNumTasks() {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"xenosf"},"content":" return tasks.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"xenosf"},"content":" * Get task from list.","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"xenosf"},"content":" * @param index 1-based index of task to get.","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"xenosf"},"content":" * @throws TaskOutOfBoundsException if task number does not exist","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"xenosf"},"content":" public static Task getTask(int index) throws TaskOutOfBoundsException {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"xenosf"},"content":" return tasks.get(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"xenosf"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"xenosf"},"content":" throw new TaskOutOfBoundsException();","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"xenosf"},"content":" * Gets list of all tasks as a string.","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"xenosf"},"content":" * @return Tasks list formatted as a string.","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"xenosf"},"content":" public static String getTasksList() {","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"xenosf"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"xenosf"},"content":" return emptyTaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"xenosf"},"content":" StringBuilder tasksList \u003d new StringBuilder(taskListPrefix);","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"xenosf"},"content":" for (int i \u003d 0; i \u003c getNumTasks(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"xenosf"},"content":" String taskNumberPrefix \u003d String.format(\"%3s-\", i + 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"xenosf"},"content":" String taskStr \u003d taskNumberPrefix + tasks.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"xenosf"},"content":" tasksList.append(taskStr);","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"xenosf"},"content":" return tasksList.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"xenosf"},"content":" * Parses command with task number with format `{cmd} {index}`, getting corresponding task.","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"xenosf"},"content":" * @param input command.","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"xenosf"},"content":" * @return index of task with index specified in commands","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"xenosf"},"content":" * @throws InvalidTaskIndexException if index is invalid","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"xenosf"},"content":" * @throws TaskIndexMissingException if index is not specified","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"xenosf"},"content":" public static int parseTaskIndexCommand(String input) throws InvalidTaskIndexException, TaskIndexMissingException {","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"xenosf"},"content":" String[] splitInput \u003d input.split(\" \", 3);","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"xenosf"},"content":" if (splitInput.length \u003c 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"xenosf"},"content":" // task number not specified","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"xenosf"},"content":" throw new TaskIndexMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"xenosf"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"xenosf"},"content":" String specifiedTask \u003d splitInput[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"xenosf"},"content":" int index \u003d Integer.parseInt(specifiedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"xenosf"},"content":" getTask(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"xenosf"},"content":" return index;","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"xenosf"},"content":" } catch (NumberFormatException | TaskOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"xenosf"},"content":" // cannot parse number from input","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"xenosf"},"content":" throw new InvalidTaskIndexException(specifiedTask);","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"xenosf"},"content":" * Parses delete commands.","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"xenosf"},"content":" * @param input delete command.","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"xenosf"},"content":" * @throws DudeException if parsing task from command fails","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"xenosf"},"content":" public static void parseDelete(String input) throws DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"xenosf"},"content":" int taskToDelete \u003d parseTaskIndexCommand(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"xenosf"},"content":" Task task \u003d removeTask(taskToDelete);","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"xenosf"},"content":" printMessage(String.format(deletedTask, task, getNumTasks()));","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"xenosf"},"content":" * Parses mark commands.","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":150,"author":{"gitId":"xenosf"},"content":" * @param input mark command.","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"xenosf"},"content":" * @throws DudeException if parsing task from command fails","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":153,"author":{"gitId":"xenosf"},"content":" public static void parseMark(String input) throws DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"xenosf"},"content":" int taskToMark \u003d parseTaskIndexCommand(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"xenosf"},"content":" Task task \u003d getTask(taskToMark);","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"xenosf"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"xenosf"},"content":" printMessage(markedAsDonePrefix + task);","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"xenosf"},"content":" * Parses unmark commands.","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"xenosf"},"content":" * @param input unmark command.","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"xenosf"},"content":" * @throws DudeException if parsing task from command fails","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"xenosf"},"content":" public static void parseUnmark(String input) throws DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"xenosf"},"content":" int taskToUnmark \u003d parseTaskIndexCommand(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"xenosf"},"content":" Task task \u003d getTask(taskToUnmark);","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"xenosf"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"xenosf"},"content":" printMessage(markedAsNotDonePrefix + task);","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"xenosf"},"content":" * Parses todo task command.","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"xenosf"},"content":" * @param input command.","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"xenosf"},"content":" * @throws TaskDescriptionMissingException if task description is missing","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"xenosf"},"content":" public static void parseTodo(String input) throws TaskDescriptionMissingException, SaveFileException {","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"xenosf"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"xenosf"},"content":" if (splitInput.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"xenosf"},"content":" // task description not specified","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"xenosf"},"content":" throw new TaskDescriptionMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"xenosf"},"content":" String description \u003d splitInput[1].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"xenosf"},"content":" Task task \u003d new ToDoTask(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"xenosf"},"content":" addTask(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"xenosf"},"content":" printMessage(String.format(addedTask, task, getNumTasks()));","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":191,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":193,"author":{"gitId":"xenosf"},"content":" * Parses deadline task command.","lastModifiedDate":"2023-08-23"},{"lineNumber":194,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"xenosf"},"content":" * @param input command.","lastModifiedDate":"2023-08-23"},{"lineNumber":196,"author":{"gitId":"xenosf"},"content":" * @throws TaskDescriptionMissingException if task description is missing","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"xenosf"},"content":" * @throws TaskDeadlineMissingException if task deadline is missing","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":199,"author":{"gitId":"xenosf"},"content":" public static void parseDeadline(String input)","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"xenosf"},"content":" throws TaskDescriptionMissingException, TaskDeadlineMissingException, SaveFileException {","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"xenosf"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":202,"author":{"gitId":"xenosf"},"content":" if (splitInput.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":203,"author":{"gitId":"xenosf"},"content":" // task description not specified","lastModifiedDate":"2023-08-23"},{"lineNumber":204,"author":{"gitId":"xenosf"},"content":" throw new TaskDescriptionMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"xenosf"},"content":" String[] splitDeadline \u003d splitInput[1].split(\"/by\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":207,"author":{"gitId":"xenosf"},"content":" if (splitDeadline.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":208,"author":{"gitId":"xenosf"},"content":" // deadline not specified","lastModifiedDate":"2023-08-23"},{"lineNumber":209,"author":{"gitId":"xenosf"},"content":" throw new TaskDeadlineMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"xenosf"},"content":" String description \u003d splitDeadline[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":212,"author":{"gitId":"xenosf"},"content":" String deadline \u003d splitDeadline[1].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":213,"author":{"gitId":"xenosf"},"content":" Task task \u003d new DeadlineTask(description, deadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":214,"author":{"gitId":"xenosf"},"content":" addTask(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":215,"author":{"gitId":"xenosf"},"content":" printMessage(String.format(addedTask, task, getNumTasks()));","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":217,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":218,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":219,"author":{"gitId":"xenosf"},"content":" * Parses event task command.","lastModifiedDate":"2023-08-23"},{"lineNumber":220,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":221,"author":{"gitId":"xenosf"},"content":" * @param input command.","lastModifiedDate":"2023-08-23"},{"lineNumber":222,"author":{"gitId":"xenosf"},"content":" * @throws TaskDescriptionMissingException if task description is missing","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"xenosf"},"content":" * @throws EventStartMissingException if event start is missing","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"xenosf"},"content":" * @throws EventEndMissingException if event end is missing","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":226,"author":{"gitId":"xenosf"},"content":" public static void parseEvent(String input)","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"xenosf"},"content":" throws TaskDescriptionMissingException, EventStartMissingException, EventEndMissingException, SaveFileException {","lastModifiedDate":"2023-08-30"},{"lineNumber":228,"author":{"gitId":"xenosf"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":229,"author":{"gitId":"xenosf"},"content":" if (splitInput.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":230,"author":{"gitId":"xenosf"},"content":" // task description not specified","lastModifiedDate":"2023-08-23"},{"lineNumber":231,"author":{"gitId":"xenosf"},"content":" throw new TaskDescriptionMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"xenosf"},"content":" String[] splitStart \u003d splitInput[1].split(\"/from\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":234,"author":{"gitId":"xenosf"},"content":" if (splitStart.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":235,"author":{"gitId":"xenosf"},"content":" // start date not specified","lastModifiedDate":"2023-08-23"},{"lineNumber":236,"author":{"gitId":"xenosf"},"content":" throw new EventStartMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":238,"author":{"gitId":"xenosf"},"content":" String[] splitEnd \u003d splitStart[1].split(\"/to\", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":239,"author":{"gitId":"xenosf"},"content":" if (splitEnd.length \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":240,"author":{"gitId":"xenosf"},"content":" // end date not specified","lastModifiedDate":"2023-08-23"},{"lineNumber":241,"author":{"gitId":"xenosf"},"content":" throw new EventEndMissingException();","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":243,"author":{"gitId":"xenosf"},"content":" String description \u003d splitStart[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":244,"author":{"gitId":"xenosf"},"content":" String start \u003d splitEnd[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":245,"author":{"gitId":"xenosf"},"content":" String end \u003d splitEnd[1].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":246,"author":{"gitId":"xenosf"},"content":" Task task \u003d new EventTask(description, start, end);","lastModifiedDate":"2023-08-23"},{"lineNumber":247,"author":{"gitId":"xenosf"},"content":" addTask(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":248,"author":{"gitId":"xenosf"},"content":" printMessage(String.format(addedTask, task, getNumTasks()));","lastModifiedDate":"2023-08-24"},{"lineNumber":249,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":250,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":251,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":252,"author":{"gitId":"xenosf"},"content":" * Parse input and act accordingly.","lastModifiedDate":"2023-08-23"},{"lineNumber":253,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":254,"author":{"gitId":"xenosf"},"content":" * @param input Input to parse.","lastModifiedDate":"2023-08-23"},{"lineNumber":255,"author":{"gitId":"xenosf"},"content":" * @return `true` if a subsequent command can be taken, `false` if not (i.e. quit)","lastModifiedDate":"2023-08-23"},{"lineNumber":256,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":257,"author":{"gitId":"xenosf"},"content":" public static boolean parseInput(String input) throws DudeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":258,"author":{"gitId":"xenosf"},"content":" // extract command (strip leading and trailing whitespace, take first word)","lastModifiedDate":"2023-08-23"},{"lineNumber":259,"author":{"gitId":"xenosf"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":260,"author":{"gitId":"xenosf"},"content":" String cmdString \u003d splitInput[0].toLowerCase();","lastModifiedDate":"2023-08-24"},{"lineNumber":261,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":262,"author":{"gitId":"xenosf"},"content":" DudeCommand cmd \u003d DudeCommand.valueOf(cmdString);","lastModifiedDate":"2023-08-24"},{"lineNumber":263,"author":{"gitId":"xenosf"},"content":" switch (cmd) {","lastModifiedDate":"2023-08-23"},{"lineNumber":264,"author":{"gitId":"xenosf"},"content":" case bye:","lastModifiedDate":"2023-08-24"},{"lineNumber":265,"author":{"gitId":"xenosf"},"content":" // quit","lastModifiedDate":"2023-08-23"},{"lineNumber":266,"author":{"gitId":"xenosf"},"content":" // Print shutdown greeting","lastModifiedDate":"2023-08-23"},{"lineNumber":267,"author":{"gitId":"xenosf"},"content":" printMessage(goodbye);","lastModifiedDate":"2023-08-23"},{"lineNumber":268,"author":{"gitId":"xenosf"},"content":" return false;","lastModifiedDate":"2023-08-23"},{"lineNumber":269,"author":{"gitId":"xenosf"},"content":" case list:","lastModifiedDate":"2023-08-24"},{"lineNumber":270,"author":{"gitId":"xenosf"},"content":" // list tasks","lastModifiedDate":"2023-08-23"},{"lineNumber":271,"author":{"gitId":"xenosf"},"content":" printMessage(getTasksList());","lastModifiedDate":"2023-08-23"},{"lineNumber":272,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":273,"author":{"gitId":"xenosf"},"content":" case mark:","lastModifiedDate":"2023-08-24"},{"lineNumber":274,"author":{"gitId":"xenosf"},"content":" // mark as done","lastModifiedDate":"2023-08-24"},{"lineNumber":275,"author":{"gitId":"xenosf"},"content":" parseMark(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":276,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":277,"author":{"gitId":"xenosf"},"content":" case unmark:","lastModifiedDate":"2023-08-24"},{"lineNumber":278,"author":{"gitId":"xenosf"},"content":" // mark as not done","lastModifiedDate":"2023-08-24"},{"lineNumber":279,"author":{"gitId":"xenosf"},"content":" parseUnmark(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":280,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":281,"author":{"gitId":"xenosf"},"content":" case delete:","lastModifiedDate":"2023-08-24"},{"lineNumber":282,"author":{"gitId":"xenosf"},"content":" case remove: // alias because I keep typing remove lol","lastModifiedDate":"2023-08-24"},{"lineNumber":283,"author":{"gitId":"xenosf"},"content":" parseDelete(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":284,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"xenosf"},"content":" case todo:","lastModifiedDate":"2023-08-24"},{"lineNumber":286,"author":{"gitId":"xenosf"},"content":" // add todo task to list","lastModifiedDate":"2023-08-23"},{"lineNumber":287,"author":{"gitId":"xenosf"},"content":" parseTodo(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":288,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":289,"author":{"gitId":"xenosf"},"content":" case deadline:","lastModifiedDate":"2023-08-24"},{"lineNumber":290,"author":{"gitId":"xenosf"},"content":" // add deadline task to list","lastModifiedDate":"2023-08-23"},{"lineNumber":291,"author":{"gitId":"xenosf"},"content":" parseDeadline(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":292,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":293,"author":{"gitId":"xenosf"},"content":" case event:","lastModifiedDate":"2023-08-24"},{"lineNumber":294,"author":{"gitId":"xenosf"},"content":" // add event task to list","lastModifiedDate":"2023-08-23"},{"lineNumber":295,"author":{"gitId":"xenosf"},"content":" parseEvent(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":296,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":297,"author":{"gitId":"xenosf"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":298,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":299,"author":{"gitId":"xenosf"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":300,"author":{"gitId":"xenosf"},"content":" // invalid command entered","lastModifiedDate":"2023-08-24"},{"lineNumber":301,"author":{"gitId":"xenosf"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-23"},{"lineNumber":302,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":303,"author":{"gitId":"xenosf"},"content":" return true;","lastModifiedDate":"2023-08-23"},{"lineNumber":304,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":305,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":306,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":307,"author":{"gitId":"xenosf"},"content":" * Format and print given message/prompt to console.","lastModifiedDate":"2023-08-23"},{"lineNumber":308,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":309,"author":{"gitId":"xenosf"},"content":" * @param message Message to print. Lines separated by \\n.","lastModifiedDate":"2023-08-23"},{"lineNumber":310,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":311,"author":{"gitId":"xenosf"},"content":" public static void printMessage(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":312,"author":{"gitId":"xenosf"},"content":" String[] lines \u003d message.split(\"\\\\n\");","lastModifiedDate":"2023-08-23"},{"lineNumber":313,"author":{"gitId":"xenosf"},"content":" String prefix \u003d \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":314,"author":{"gitId":"xenosf"},"content":" String output \u003d border + prefix +","lastModifiedDate":"2023-08-23"},{"lineNumber":315,"author":{"gitId":"xenosf"},"content":" String.join(\"\\n\" + prefix, lines) +","lastModifiedDate":"2023-08-23"},{"lineNumber":316,"author":{"gitId":"xenosf"},"content":" \"\\n\" + border;","lastModifiedDate":"2023-08-23"},{"lineNumber":317,"author":{"gitId":"xenosf"},"content":" System.out.println(output);","lastModifiedDate":"2023-08-23"},{"lineNumber":318,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":319,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":320,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":321,"author":{"gitId":"xenosf"},"content":" * Create new empty save file at SAVE_FILE_PATH if it does not already exist.","lastModifiedDate":"2023-08-30"},{"lineNumber":322,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":323,"author":{"gitId":"xenosf"},"content":" * @throws SaveFileException if file cannot be created","lastModifiedDate":"2023-08-30"},{"lineNumber":324,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":325,"author":{"gitId":"xenosf"},"content":" public static void createSaveFile() throws SaveFileException {","lastModifiedDate":"2023-08-30"},{"lineNumber":326,"author":{"gitId":"xenosf"},"content":" File saveFile \u003d new File(SAVE_FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":327,"author":{"gitId":"xenosf"},"content":" File parent \u003d saveFile.getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":328,"author":{"gitId":"xenosf"},"content":" // check \u0026 create parent dir(s)","lastModifiedDate":"2023-08-30"},{"lineNumber":329,"author":{"gitId":"xenosf"},"content":" if (parent !\u003d null \u0026\u0026 !parent.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":330,"author":{"gitId":"xenosf"},"content":" parent.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":331,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":332,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":333,"author":{"gitId":"xenosf"},"content":" // create save file","lastModifiedDate":"2023-08-30"},{"lineNumber":334,"author":{"gitId":"xenosf"},"content":" saveFile.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":335,"author":{"gitId":"xenosf"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":336,"author":{"gitId":"xenosf"},"content":" throw new SaveFileException(\"Error creating save file: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":337,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":338,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":339,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":340,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":341,"author":{"gitId":"xenosf"},"content":" * Reads save file contents and sets list of Task instances.","lastModifiedDate":"2023-08-30"},{"lineNumber":342,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":343,"author":{"gitId":"xenosf"},"content":" * @throws SaveFileException if there is an error reading the file","lastModifiedDate":"2023-08-30"},{"lineNumber":344,"author":{"gitId":"xenosf"},"content":" * @throws InvalidTaskDataException if the text data format is invalid","lastModifiedDate":"2023-08-30"},{"lineNumber":345,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":346,"author":{"gitId":"xenosf"},"content":" public static void readSaveFile() throws SaveFileException, InvalidTaskDataException {","lastModifiedDate":"2023-08-30"},{"lineNumber":347,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":348,"author":{"gitId":"xenosf"},"content":" File f \u003d new File(SAVE_FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":349,"author":{"gitId":"xenosf"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-30"},{"lineNumber":350,"author":{"gitId":"xenosf"},"content":" ArrayList\u003cTask\u003e readTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":351,"author":{"gitId":"xenosf"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":352,"author":{"gitId":"xenosf"},"content":" String data \u003d s.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":353,"author":{"gitId":"xenosf"},"content":" if (data.isBlank()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":354,"author":{"gitId":"xenosf"},"content":" continue;","lastModifiedDate":"2023-08-30"},{"lineNumber":355,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":356,"author":{"gitId":"xenosf"},"content":" String taskType \u003d data.split(Task.DELIMITER_REGEX)[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":357,"author":{"gitId":"xenosf"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":358,"author":{"gitId":"xenosf"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":359,"author":{"gitId":"xenosf"},"content":" readTasks.add(ToDoTask.fromData(data));","lastModifiedDate":"2023-08-30"},{"lineNumber":360,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":361,"author":{"gitId":"xenosf"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":362,"author":{"gitId":"xenosf"},"content":" readTasks.add(DeadlineTask.fromData(data));","lastModifiedDate":"2023-08-30"},{"lineNumber":363,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":364,"author":{"gitId":"xenosf"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":365,"author":{"gitId":"xenosf"},"content":" readTasks.add(EventTask.fromData(data));","lastModifiedDate":"2023-08-30"},{"lineNumber":366,"author":{"gitId":"xenosf"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":367,"author":{"gitId":"xenosf"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":368,"author":{"gitId":"xenosf"},"content":" throw new InvalidTaskDataException();","lastModifiedDate":"2023-08-30"},{"lineNumber":369,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":370,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":371,"author":{"gitId":"xenosf"},"content":" tasks \u003d readTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":372,"author":{"gitId":"xenosf"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":373,"author":{"gitId":"xenosf"},"content":" throw new SaveFileException(\"Error reading save file: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":374,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":375,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":376,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":377,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":378,"author":{"gitId":"xenosf"},"content":" * Saves current list of tasks to save file.","lastModifiedDate":"2023-08-30"},{"lineNumber":379,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":380,"author":{"gitId":"xenosf"},"content":" * @throws SaveFileException if there is an error saving the file","lastModifiedDate":"2023-08-30"},{"lineNumber":381,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":382,"author":{"gitId":"xenosf"},"content":" public static void saveToSaveFile() throws SaveFileException {","lastModifiedDate":"2023-08-30"},{"lineNumber":383,"author":{"gitId":"xenosf"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":384,"author":{"gitId":"xenosf"},"content":" for (int i \u003d 1; i \u003c\u003d getNumTasks(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":385,"author":{"gitId":"xenosf"},"content":" s.append(getTask(i).toData());","lastModifiedDate":"2023-08-30"},{"lineNumber":386,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":387,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":388,"author":{"gitId":"xenosf"},"content":" FileWriter fw \u003d new FileWriter(SAVE_FILE_PATH);","lastModifiedDate":"2023-08-30"},{"lineNumber":389,"author":{"gitId":"xenosf"},"content":" fw.write(s.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":390,"author":{"gitId":"xenosf"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":391,"author":{"gitId":"xenosf"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":392,"author":{"gitId":"xenosf"},"content":" throw new SaveFileException(\"Error writing save file: \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":393,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":394,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":395,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":396,"author":{"gitId":"xenosf"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":397,"author":{"gitId":"xenosf"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":398,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":399,"author":{"gitId":"xenosf"},"content":" // Startup","lastModifiedDate":"2023-08-30"},{"lineNumber":400,"author":{"gitId":"xenosf"},"content":" createSaveFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":401,"author":{"gitId":"xenosf"},"content":" printMessage(hello); // Print startup greeting","lastModifiedDate":"2023-08-30"},{"lineNumber":402,"author":{"gitId":"xenosf"},"content":" readSaveFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":403,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":404,"author":{"gitId":"xenosf"},"content":" // Input loop -- wait for input, respond, repeat","lastModifiedDate":"2023-08-23"},{"lineNumber":405,"author":{"gitId":"xenosf"},"content":" boolean shouldContinue \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":406,"author":{"gitId":"xenosf"},"content":" while (shouldContinue) {","lastModifiedDate":"2023-08-23"},{"lineNumber":407,"author":{"gitId":"xenosf"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":408,"author":{"gitId":"xenosf"},"content":" // read user input","lastModifiedDate":"2023-08-23"},{"lineNumber":409,"author":{"gitId":"xenosf"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":410,"author":{"gitId":"xenosf"},"content":" shouldContinue \u003d parseInput(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":411,"author":{"gitId":"xenosf"},"content":" } catch (DudeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":412,"author":{"gitId":"xenosf"},"content":" printMessage(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":413,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":414,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":415,"author":{"gitId":"xenosf"},"content":" } catch (DudeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":416,"author":{"gitId":"xenosf"},"content":" printMessage(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":417,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":418,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":419,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"xenosf":419}},{"path":"src/main/java/DudeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" * Commands to be entered into Dude.","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":"public enum DudeCommand {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" list,","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" todo,","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" deadline,","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" event,","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" mark,","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":" unmark,","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" remove,","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":" delete,","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":" bye,","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":14}},{"path":"src/main/java/DudeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" * Exception specific to Dude (Duke)","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":"public class DudeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" * Constructor for Dude exception with message","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" * @param message Human-readable error message.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":" public DudeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":" * Constructor for Dude exception with default message","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":" public DudeException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":" super(\"An error occurred. :(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":21}},{"path":"src/main/java/EventEndMissingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class EventEndMissingException extends DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public EventEndMissingException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(\"Please specify the event end date after the task\\n description and start date, prefixed by `\\\\to`.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":5}},{"path":"src/main/java/EventStartMissingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class EventStartMissingException extends DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public EventStartMissingException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(\"Please specify the event start date after the task\\ndescription, prefixed by `\\\\from`.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":5}},{"path":"src/main/java/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" * Start time","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" protected String startTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" * End time","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":" protected String endTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":" * Constructor for Event task.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":" * @param description Description of task","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":" * @param startTime Start time of event","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":" * @param endTime End time of event","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":" public EventTask(String description, String startTime, String endTime) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xenosf"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"xenosf"},"content":" * Constructor for Event task, specifying completion status.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"xenosf"},"content":" * @param description Description of task","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"xenosf"},"content":" * @param startTime Start time of event","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"xenosf"},"content":" * @param endTime End time of event","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"xenosf"},"content":" * @param isDone Boolean representing task completion status","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"xenosf"},"content":" public EventTask(String description, String startTime, String endTime, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"xenosf"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"xenosf"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"xenosf"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xenosf"},"content":" * Gets Event task formatted with type and status icon","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xenosf"},"content":" * @return Task formatted as a string.","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xenosf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xenosf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xenosf"},"content":" return String.format(\"\u003cE\u003e%s (FROM: %s, TO: %s)\", super.toString(), this.startTime, this.endTime);","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"xenosf"},"content":" * Parses save file data into an event task instance.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"xenosf"},"content":" * @param data line from save file","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"xenosf"},"content":" * @return Task instance","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"xenosf"},"content":" * @throws InvalidTaskDataException if data is not in the expected format","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"xenosf"},"content":" public static EventTask fromData(String data) throws InvalidTaskDataException {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"xenosf"},"content":" /*","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"xenosf"},"content":" expected format:","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"xenosf"},"content":" completed: 1, incomplete: 0","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"xenosf"},"content":" event: E || 1/0 || start || end || description","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"xenosf"},"content":" String[] splitData \u003d data.split(DELIMITER_REGEX, 5);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"xenosf"},"content":" if (splitData.length \u003c 5) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"xenosf"},"content":" throw new InvalidTaskDataException();","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"xenosf"},"content":" String taskType \u003d splitData[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"xenosf"},"content":" String taskCompleted \u003d splitData[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"xenosf"},"content":" String taskStart \u003d splitData[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"xenosf"},"content":" String taskEnd \u003d splitData[3];","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"xenosf"},"content":" String taskDescription \u003d splitData[4];","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"xenosf"},"content":" if (!taskCompleted.equals(\"1\") \u0026\u0026 !taskCompleted.equals(\"0\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"xenosf"},"content":" throw new InvalidTaskDataException();","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"xenosf"},"content":" boolean isCompleted \u003d taskCompleted.equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"xenosf"},"content":" return new EventTask(taskDescription, taskStart, taskEnd, isCompleted);","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"xenosf"},"content":" * Parses event task instance into save file string data","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"xenosf"},"content":" * @return Task data as string","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"xenosf"},"content":" public String toData() {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"xenosf"},"content":" /*","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"xenosf"},"content":" expected format:","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"xenosf"},"content":" completed: 1, incomplete: 0","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"xenosf"},"content":" event: E || 1/0 || start || end || description","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"xenosf"},"content":" String taskCompleted \u003d this.isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"xenosf"},"content":" return String.join(DELIMITER, \"E\", taskCompleted,","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"xenosf"},"content":" this.startTime, this.endTime, this.description) + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":95}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class InvalidCommandException extends DudeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" \"I don\u0027t know what that means.\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" \"Try checking if you\u0027ve typed the command correctly.\"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":8}},{"path":"src/main/java/InvalidTaskDataException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class InvalidTaskDataException extends DudeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public InvalidTaskDataException() {","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" \"Could not read task(s) from saved data.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" + \"The format is possibly corrupted.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" + \"Try checking the file at \"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" + Dude.SAVE_FILE_PATH","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" + \" and try again,\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" + \"or delete the file to start over.\"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":" );","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"xenosf":12}},{"path":"src/main/java/InvalidTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class InvalidTaskIndexException extends DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public InvalidTaskIndexException(String index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" String.format(\"I can\u0027t find the task numbered \\\"%s\\\".\\nTry checking if you\u0027ve typed the correct task number.\",","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" index)","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" );","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":8}},{"path":"src/main/java/SaveFileException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class SaveFileException extends DudeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public SaveFileException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" message","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" );","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"xenosf":7}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" * Delimiter regex for save file data","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" public static final String DELIMITER \u003d \" || \";","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" * Delimiter regex for save file data","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" public static final String DELIMITER_REGEX \u003d \" \\\\|\\\\| \";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":" * Constructor for task.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":" * @param description Description of task","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"xenosf"},"content":" * Constructor for task, specifying completion status.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"xenosf"},"content":" * @param description Description of task","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"xenosf"},"content":" * @param isDone Boolean representing task completion status","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"xenosf"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"xenosf"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"xenosf"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xenosf"},"content":" * Gets text status icon of task\u0027s completion status.","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xenosf"},"content":" * @return space if not done; X if done.","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xenosf"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xenosf"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xenosf"},"content":" * Gets task formatted with status icon","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xenosf"},"content":" * @return Task formatted as a string. e.g. [X] completed task","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xenosf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xenosf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xenosf"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xenosf"},"content":" * Marks task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"xenosf"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"xenosf"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"xenosf"},"content":" * Marks task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"xenosf"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"xenosf"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"xenosf"},"content":" * Parses save file data into a Task instance.","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"xenosf"},"content":" * @param data line from save file","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"xenosf"},"content":" * @return Task instance","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"xenosf"},"content":" * @throws InvalidTaskDataException if data is not in the expected format","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"xenosf"},"content":" public static Task fromData(String data) throws InvalidTaskDataException {","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"xenosf"},"content":" /*","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"xenosf"},"content":" expected format:","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"xenosf"},"content":" completed: 1, incomplete: 0","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"xenosf"},"content":" todo: T || 1/0 || description","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"xenosf"},"content":" String[] splitData \u003d data.split(DELIMITER_REGEX, 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"xenosf"},"content":" if (splitData.length \u003c 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"xenosf"},"content":" throw new InvalidTaskDataException();","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"xenosf"},"content":" String taskType \u003d splitData[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"xenosf"},"content":" String taskCompleted \u003d splitData[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"xenosf"},"content":" String taskDescription \u003d splitData[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"xenosf"},"content":" if (!taskCompleted.equals(\"1\") \u0026\u0026 !taskCompleted.equals(\"0\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"xenosf"},"content":" throw new InvalidTaskDataException();","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"xenosf"},"content":" boolean isCompleted \u003d taskCompleted.equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"xenosf"},"content":" return new Task(taskDescription, isCompleted);","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"xenosf"},"content":" * Parses To Do task instance into save file string data","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"xenosf"},"content":" * @return Task data as string","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"xenosf"},"content":" public String toData() {","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"xenosf"},"content":" /*","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"xenosf"},"content":" expected format:","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"xenosf"},"content":" completed: 1, incomplete: 0","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"xenosf"},"content":" todo: T || 1/0 || description","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"xenosf"},"content":" String taskCompleted \u003d this.isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"xenosf"},"content":" return String.join(DELIMITER, \"T\", taskCompleted, this.description) + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":111}},{"path":"src/main/java/TaskDeadlineMissingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class TaskDeadlineMissingException extends DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public TaskDeadlineMissingException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(\"Please specify a task deadline after the task\\ndescription, prefixed by `\\\\by`.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":5}},{"path":"src/main/java/TaskDescriptionMissingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class TaskDescriptionMissingException extends DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public TaskDescriptionMissingException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(\"Please specify a task description.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":5}},{"path":"src/main/java/TaskIndexMissingException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class TaskIndexMissingException extends DudeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public TaskIndexMissingException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(\"Please specify a task number.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xenosf":5}},{"path":"src/main/java/TaskOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class TaskOutOfBoundsException extends IndexOutOfBoundsException {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" public TaskOutOfBoundsException() {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" super(\"Task number out of bounds.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":5}},{"path":"src/main/java/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":" * Constructor for ToDo task.","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":" * @param description Description of task","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":" public ToDoTask(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":" * Constructor for ToDo task, specifying completion status.","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":" * @param description Description of task","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":" * @param isDone Boolean representing task completion status","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":" public ToDoTask(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xenosf"},"content":" * Gets Todo task formatted with type and status icon","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xenosf"},"content":" * @return Task formatted as a string","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xenosf"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xenosf"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xenosf"},"content":" return \"\u003cT\u003e\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"xenosf"},"content":" * Parses save file data into a To Do task instance.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"xenosf"},"content":" * @param data line from save file","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"xenosf"},"content":" * @return Task instance","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"xenosf"},"content":" * @throws InvalidTaskDataException if data is not in the expected format","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"xenosf"},"content":" public static ToDoTask fromData(String data) throws InvalidTaskDataException {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"xenosf"},"content":" /*","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"xenosf"},"content":" expected format:","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"xenosf"},"content":" completed: 1, incomplete: 0","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"xenosf"},"content":" todo: T || 1/0 || description","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"xenosf"},"content":" String[] splitData \u003d data.split(DELIMITER_REGEX, 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"xenosf"},"content":" if (splitData.length \u003c 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"xenosf"},"content":" throw new InvalidTaskDataException();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"xenosf"},"content":" String taskType \u003d splitData[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"xenosf"},"content":" String taskCompleted \u003d splitData[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"xenosf"},"content":" String taskDescription \u003d splitData[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"xenosf"},"content":" if (!taskCompleted.equals(\"1\") \u0026\u0026 !taskCompleted.equals(\"0\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"xenosf"},"content":" throw new InvalidTaskDataException();","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"xenosf"},"content":" boolean isCompleted \u003d taskCompleted.equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"xenosf"},"content":" return new ToDoTask(taskDescription, isCompleted);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"xenosf"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"xenosf"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"xenosf"},"content":" * Parses To Do task instance into save file string data","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"xenosf"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"xenosf"},"content":" * @return Task data as string","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"xenosf"},"content":" public String toData() {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"xenosf"},"content":" /*","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"xenosf"},"content":" expected format:","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"xenosf"},"content":" completed: 1, incomplete: 0","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"xenosf"},"content":" todo: T || 1/0 || description","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"xenosf"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"xenosf"},"content":" String taskCompleted \u003d this.isDone ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"xenosf"},"content":" return String.join(DELIMITER, \"T\", taskCompleted, this.description) + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"xenosf"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"xenosf"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":73}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"xenosf"},"content":"qwertyuiop","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xenosf"},"content":"hello.....","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xenosf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xenosf"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xenosf"},"content":"todo learn how to use the deadline command /by now","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xenosf"},"content":"deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xenosf"},"content":"deaDline discussion post","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xenosf"},"content":"deadline essay /by sunday 2359","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xenosf"},"content":"event","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xenosf"},"content":"event anyhow","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xenosf"},"content":"event project meeting /to 1330h /from 1300h","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xenosf"},"content":"event project meeting /from mon 1300h /to 1330h","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xenosf"},"content":"event party /from mon 2200h /to tue 0330h","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xenosf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xenosf"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xenosf"},"content":"mark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xenosf"},"content":"mark 81 483","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xenosf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xenosf"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xenosf"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xenosf"},"content":"todo a","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"xenosf"},"content":"todo b","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"xenosf"},"content":"todo c","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"xenosf"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"xenosf"},"content":"remove 2","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"xenosf"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"xenosf"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"xenosf"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xenosf":28}},{"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":"xenosf"},"content":"java -classpath ..\\bin Dude \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"xenosf":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":"xenosf"},"content":"java -classpath ../bin Dude \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"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":{"xenosf":1,"-":37}}] diff --git a/xenosf_ip_master/commits.json b/xenosf_ip_master/commits.json index d28ad685..36cd0e97 100644 --- a/xenosf_ip_master/commits.json +++ b/xenosf_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"xenosf":[{"date":"2023-08-22","commitResults":[{"hash":"4b981a19da6b33a46c9e8625eee56d0a5b1f883b","isMergeCommit":false,"messageTitle":"rename duke to dude; set up greeting and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":10}}}]},{"date":"2023-08-23","commitResults":[{"hash":"8e42713a7e113de51a9035dc7a3b446e4b22bc72","isMergeCommit":false,"messageTitle":"add echo user command feature \u0026 bye command","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"25b33c40fc9613ae152632cfaa59365a02663745","isMergeCommit":false,"messageTitle":"separate command and text parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"84c81e12051f5e2566fac71d79a966a5642b8799","isMergeCommit":false,"messageTitle":"move messages out of main function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":8}}},{"hash":"9e6ceafc0e19adca9b34af624c166394c7281411","isMergeCommit":false,"messageTitle":"move input parsing out of main function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":16}}},{"hash":"89798dd36ed42fa23368bc2cac9f4bc311330e32","isMergeCommit":false,"messageTitle":"add task list add and display feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"4d6baf7262c6988801bd0d88bf3349a774de8847","isMergeCommit":false,"messageTitle":"refactor tasks add and list to separate methods; add 0 tasks msg","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":8}}},{"hash":"2fe1842ee730f41c475cbaf6a5bc60678d196c0a","isMergeCommit":false,"messageTitle":"add mark and unmark task feature","messageBody":"","tags":["Level-5","Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":14}}},{"hash":"c8faeb6ed11d94e28c7f9c11337c05b46eff8c1e","isMergeCommit":false,"messageTitle":"streamline console print function calls","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":17}}},{"hash":"1d2a5316b20d14fe35ae056cf9d27a3a2bc61fae","isMergeCommit":false,"messageTitle":"change getTaskString to override toString instead","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"d5b0cabcba85e2c6afbbbc42cda8f864b7afced8","isMergeCommit":false,"messageTitle":"remove isdone getter","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":12}}},{"hash":"fa637d77b22d10163ac09e12d7e2592d604209e3","isMergeCommit":false,"messageTitle":"add different types of tasks: deadline, event, todo","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":0}}},{"hash":"e5588aea144fc3fa86096d1861c8378dfa085713","isMergeCommit":false,"messageTitle":"change task type icon formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"b760360aff8fb092ad73b0415b75671ec78eed00","isMergeCommit":false,"messageTitle":"change task date display formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"5b912da575ae9294bebb4609ea96dc7c38987805","isMergeCommit":false,"messageTitle":"add todo task, deadline task, event task commands","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":50}}},{"hash":"dcd5053bffa54724e0fd3a750cda27dcb8cf4740","isMergeCommit":false,"messageTitle":"change initial ascii art","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}},{"hash":"60ea862cb5d31694778e7ced3dff0ac11df6e11a","isMergeCommit":false,"messageTitle":"fix bug in event end check","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"95290fe145b0ada3016a21c16ef6c0ca65364ed8","isMergeCommit":false,"messageTitle":"edit error message to fit in lines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"c045ef0e5000b9f5473233feac516f3831fa556e","isMergeCommit":false,"messageTitle":"implement automated testing","messageBody":"","tags":["A-TextUiTesting","A-Exceptions"],"fileTypesAndContributionMap":{"txt":{"insertions":21,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"33436c454027330c8b4e39d4b18b9dd70fd2253b","isMergeCommit":false,"messageTitle":"add javadoc for Dude class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"4ea3129fe97953acb58ed6813a57fedd62813d9b","isMergeCommit":false,"messageTitle":"add DudeException parent class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":1}}},{"hash":"a365c3d2d5b104a58c46c58a76cf7b7033d410ca","isMergeCommit":false,"messageTitle":"implement invalid command exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":5}}}]},{"date":"2023-08-24","commitResults":[{"hash":"f2f0bfd68481fc9f7e004230e792deeefce9763e","isMergeCommit":false,"messageTitle":"convert exception messages to actual exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":0}}},{"hash":"e81ec136b5d974d8a207bea96ff02f48650b83e3","isMergeCommit":false,"messageTitle":"add param for index","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}},{"hash":"17a398b93a14839ae7a3d7a52fd24726004b2360","isMergeCommit":false,"messageTitle":"refactor tasks to use ArrayList","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":15}}},{"hash":"93aed1d5b311dd1177675a9ccd4a8f6fc366650e","isMergeCommit":false,"messageTitle":"add delete task method; refactor get task to use arraylist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":4}}},{"hash":"052553a65bb586e72a17b9d86e8e919f18fa0072","isMergeCommit":false,"messageTitle":"implement delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":44,"deletions":2}}},{"hash":"b9b1f03ced5d38cb7b7646c0fc9436db5f5faef7","isMergeCommit":false,"messageTitle":"split and refactor mark and unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":28}}},{"hash":"3cba24bb2af9188ac1f10121833c31f4aa2c7830","isMergeCommit":false,"messageTitle":"convert command to lowercase before checking","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":1}}},{"hash":"ce54ad04a921e844f50130f4d8c3851b6f8b7bd3","isMergeCommit":false,"messageTitle":"use enums for commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":38}}},{"hash":"60d65518c592b3baaa73653fe7e44b6ce16da12b","isMergeCommit":false,"messageTitle":"convert all dude errors to use exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":50}}}]}]},"authorFileTypeContributionMap":{"xenosf":{"java":530,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":28}},"authorContributionVariance":{"xenosf":72407.06},"authorDisplayNameMap":{"xenosf":"CS2103T-T08-2 XENO..NONG"}} +{"authorDailyContributionsMap":{"xenosf":[{"date":"2023-08-22","commitResults":[{"hash":"4b981a19da6b33a46c9e8625eee56d0a5b1f883b","isMergeCommit":false,"messageTitle":"rename duke to dude; set up greeting and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":10}}}]},{"date":"2023-08-23","commitResults":[{"hash":"8e42713a7e113de51a9035dc7a3b446e4b22bc72","isMergeCommit":false,"messageTitle":"add echo user command feature \u0026 bye command","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"25b33c40fc9613ae152632cfaa59365a02663745","isMergeCommit":false,"messageTitle":"separate command and text parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"84c81e12051f5e2566fac71d79a966a5642b8799","isMergeCommit":false,"messageTitle":"move messages out of main function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":8}}},{"hash":"9e6ceafc0e19adca9b34af624c166394c7281411","isMergeCommit":false,"messageTitle":"move input parsing out of main function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":16}}},{"hash":"89798dd36ed42fa23368bc2cac9f4bc311330e32","isMergeCommit":false,"messageTitle":"add task list add and display feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"4d6baf7262c6988801bd0d88bf3349a774de8847","isMergeCommit":false,"messageTitle":"refactor tasks add and list to separate methods; add 0 tasks msg","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":8}}},{"hash":"2fe1842ee730f41c475cbaf6a5bc60678d196c0a","isMergeCommit":false,"messageTitle":"add mark and unmark task feature","messageBody":"","tags":["Level-5","Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":14}}},{"hash":"c8faeb6ed11d94e28c7f9c11337c05b46eff8c1e","isMergeCommit":false,"messageTitle":"streamline console print function calls","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":17}}},{"hash":"1d2a5316b20d14fe35ae056cf9d27a3a2bc61fae","isMergeCommit":false,"messageTitle":"change getTaskString to override toString instead","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"d5b0cabcba85e2c6afbbbc42cda8f864b7afced8","isMergeCommit":false,"messageTitle":"remove isdone getter","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":12}}},{"hash":"fa637d77b22d10163ac09e12d7e2592d604209e3","isMergeCommit":false,"messageTitle":"add different types of tasks: deadline, event, todo","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":0}}},{"hash":"e5588aea144fc3fa86096d1861c8378dfa085713","isMergeCommit":false,"messageTitle":"change task type icon formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"b760360aff8fb092ad73b0415b75671ec78eed00","isMergeCommit":false,"messageTitle":"change task date display formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"5b912da575ae9294bebb4609ea96dc7c38987805","isMergeCommit":false,"messageTitle":"add todo task, deadline task, event task commands","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":50}}},{"hash":"dcd5053bffa54724e0fd3a750cda27dcb8cf4740","isMergeCommit":false,"messageTitle":"change initial ascii art","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}},{"hash":"60ea862cb5d31694778e7ced3dff0ac11df6e11a","isMergeCommit":false,"messageTitle":"fix bug in event end check","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"95290fe145b0ada3016a21c16ef6c0ca65364ed8","isMergeCommit":false,"messageTitle":"edit error message to fit in lines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"c045ef0e5000b9f5473233feac516f3831fa556e","isMergeCommit":false,"messageTitle":"implement automated testing","messageBody":"","tags":["A-TextUiTesting","A-Exceptions"],"fileTypesAndContributionMap":{"txt":{"insertions":21,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"33436c454027330c8b4e39d4b18b9dd70fd2253b","isMergeCommit":false,"messageTitle":"add javadoc for Dude class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"4ea3129fe97953acb58ed6813a57fedd62813d9b","isMergeCommit":false,"messageTitle":"add DudeException parent class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":1}}},{"hash":"a365c3d2d5b104a58c46c58a76cf7b7033d410ca","isMergeCommit":false,"messageTitle":"implement invalid command exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":5}}}]},{"date":"2023-08-24","commitResults":[{"hash":"f2f0bfd68481fc9f7e004230e792deeefce9763e","isMergeCommit":false,"messageTitle":"convert exception messages to actual exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":0}}},{"hash":"e81ec136b5d974d8a207bea96ff02f48650b83e3","isMergeCommit":false,"messageTitle":"add param for index","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}},{"hash":"17a398b93a14839ae7a3d7a52fd24726004b2360","isMergeCommit":false,"messageTitle":"refactor tasks to use ArrayList","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":15}}},{"hash":"93aed1d5b311dd1177675a9ccd4a8f6fc366650e","isMergeCommit":false,"messageTitle":"add delete task method; refactor get task to use arraylist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":4}}},{"hash":"052553a65bb586e72a17b9d86e8e919f18fa0072","isMergeCommit":false,"messageTitle":"implement delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":44,"deletions":2}}},{"hash":"b9b1f03ced5d38cb7b7646c0fc9436db5f5faef7","isMergeCommit":false,"messageTitle":"split and refactor mark and unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":28}}},{"hash":"3cba24bb2af9188ac1f10121833c31f4aa2c7830","isMergeCommit":false,"messageTitle":"convert command to lowercase before checking","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":1}}},{"hash":"ce54ad04a921e844f50130f4d8c3851b6f8b7bd3","isMergeCommit":false,"messageTitle":"use enums for commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":38}}},{"hash":"60d65518c592b3baaa73653fe7e44b6ce16da12b","isMergeCommit":false,"messageTitle":"convert all dude errors to use exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":50}}}]},{"date":"2023-08-30","commitResults":[{"hash":"0950cca9abac8409d84ea0c7e24e2e0ab98a3323","isMergeCommit":false,"messageTitle":"Implement save feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":380,"deletions":28}}}]},{"date":"2023-09-01","commitResults":[{"hash":"60fa220aa56e3c65464407226cda16ddb9ef78b3","isMergeCommit":true,"messageTitle":"Merge pull request #1 from xenosf/branch-Level-7","messageBody":"Merge Branch level 7","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"xenosf":{"java":882,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":28}},"authorContributionVariance":{"xenosf":46890.766},"authorDisplayNameMap":{"xenosf":"CS2103T-T08-2 XENO..NONG"}} diff --git a/xxiaoweii_ip_master/authorship.json b/xxiaoweii_ip_master/authorship.json index 30df0916..b27d4c30 100644 --- a/xxiaoweii_ip_master/authorship.json +++ b/xxiaoweii_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"Level7File/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"0","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"0","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":2}},{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"xxiaoweii":2,"-":22}},{"path":"src/main/java/duke/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.IncompleteMessageException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.DetailsUnknownException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.InvalidTaskNumberException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"public class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" public Command(TaskList tasklist, Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" this.taskList \u003d tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" public void handleList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.listOutTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" public void handleDelete(String userInput, String keyword) throws IncompleteMessageException, InvalidTaskNumberException {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.length() \u003d\u003d keyword.length()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" throw new IncompleteMessageException(\"Delete\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":" String getIndex \u003d userInput.substring(keyword.length() + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" int taskIndex \u003d Integer.parseInt(getIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xxiaoweii"},"content":" if (taskIndex \u003e this.taskList.numOfTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xxiaoweii"},"content":" throw new InvalidTaskNumberException();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.deleteTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"xxiaoweii"},"content":" public void handleDone(String userInput, String keyword) throws IncompleteMessageException, InvalidTaskNumberException {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.length() \u003d\u003d keyword.length()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"xxiaoweii"},"content":" throw new IncompleteMessageException(\"Done\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"xxiaoweii"},"content":" String getIndex \u003d userInput.substring(keyword.length() + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"xxiaoweii"},"content":" int taskIndex \u003d Integer.parseInt(getIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"xxiaoweii"},"content":" if (taskIndex \u003e this.taskList.numOfTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"xxiaoweii"},"content":" throw new InvalidTaskNumberException();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.markAsDone(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"xxiaoweii"},"content":" public void handleUndone(String userInput, String keyword) throws IncompleteMessageException, InvalidTaskNumberException {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.length() \u003d\u003d keyword.length()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"xxiaoweii"},"content":" throw new IncompleteMessageException(\"Undone\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"xxiaoweii"},"content":" String getIndex \u003d userInput.substring(keyword.length() + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"xxiaoweii"},"content":" int taskIndex \u003d Integer.parseInt(getIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"xxiaoweii"},"content":" if (taskIndex \u003e this.taskList.numOfTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"xxiaoweii"},"content":" throw new InvalidTaskNumberException();","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.markAsUndone(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"xxiaoweii"},"content":" public void handleDeadline(String userInput, String keyword) throws IncompleteMessageException, DetailsUnknownException {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.length() \u003d\u003d keyword.length()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"xxiaoweii"},"content":" throw new IncompleteMessageException(\"duke.Deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"xxiaoweii"},"content":" int byIndex \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"xxiaoweii"},"content":" if (byIndex \u003d\u003d -1 || byIndex \u003d\u003d userInput.length() - 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"xxiaoweii"},"content":" throw new DetailsUnknownException();","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"xxiaoweii"},"content":" String taskDescription \u003d userInput.substring(keyword.length() + 1, byIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"xxiaoweii"},"content":" String deadlineInfo \u003d userInput.substring(byIndex + 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"xxiaoweii"},"content":" if (taskDescription.isEmpty() || deadlineInfo.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"xxiaoweii"},"content":" throw new DetailsUnknownException();","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"xxiaoweii"},"content":" Deadline task \u003d new Deadline(taskDescription, deadlineInfo);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"xxiaoweii"},"content":" public void handleEvent(String userInput, String keyword) throws IncompleteMessageException, DetailsUnknownException {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"xxiaoweii"},"content":" int fromIndex \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"xxiaoweii"},"content":" int toIndex \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.length() \u003d\u003d keyword.length() || fromIndex \u003d\u003d -1 || toIndex \u003d\u003d -1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"xxiaoweii"},"content":" throw new IncompleteMessageException(\"duke.Event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"xxiaoweii"},"content":" String taskDescription \u003d userInput.substring(keyword.length() + 1, userInput.indexOf(\"/from\") - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"xxiaoweii"},"content":" String startDetails \u003d userInput.substring(userInput.indexOf(\"/from\") + 6, userInput.indexOf(\"/to\") - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"xxiaoweii"},"content":" String endDetails \u003d userInput.substring(userInput.indexOf(\"/to\") + 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"xxiaoweii"},"content":" if (taskDescription.isEmpty() || startDetails.isEmpty() || endDetails.isEmpty()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"xxiaoweii"},"content":" throw new DetailsUnknownException();","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"xxiaoweii"},"content":" Event task \u003d new Event(taskDescription, startDetails, endDetails);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"xxiaoweii"},"content":" public void handleTodo(String userInput, String keyword) throws IncompleteMessageException, DetailsUnknownException {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.length() \u003c\u003d keyword.length() + 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"xxiaoweii"},"content":" throw new IncompleteMessageException(\"duke.ToDo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"xxiaoweii"},"content":" String taskDescription \u003d userInput.substring(keyword.length() + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"xxiaoweii"},"content":" ToDo task \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":115}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"import duke.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" private LocalDateTime time;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" public Deadline(String task, String deadlineDetails) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" super(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" LocalDateTime dueDateTime \u003d Parser.formatDate(deadlineDetails);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" this.time \u003d dueDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":" String timeToString \u003d Parser.dateToString(this.time);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" return \"[D]\" + super.toString() + \" (by: \" + timeToString + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xxiaoweii":24}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.UnknownCommandException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.ChattyException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.DetailsUnknownException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" private Messages messages;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" private TaskList tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" public Duke() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" this.messages \u003d new Messages();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" this.tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":" tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xxiaoweii"},"content":" storage.loadTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xxiaoweii"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":" tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":35,"author":{"gitId":"xxiaoweii"},"content":" new Duke(\"Level7File/tasks.txt\").startChatting();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"xxiaoweii"},"content":" public void startChatting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"xxiaoweii"},"content":" Messages.Greet();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"xxiaoweii"},"content":" String exitC \u003d \"bye\";","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"xxiaoweii"},"content":" String listC \u003d \"list\";","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"xxiaoweii"},"content":" String deleteC \u003d \"delete\";","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"xxiaoweii"},"content":" String doneC \u003d \"mark\";","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"xxiaoweii"},"content":" String undoneC \u003d \"unmark\";","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"xxiaoweii"},"content":" String deadlineC \u003d \"deadline\";","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"xxiaoweii"},"content":" String eventC \u003d \"event\";","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"xxiaoweii"},"content":" String todoC \u003d \"todo\";","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"xxiaoweii"},"content":" String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"xxiaoweii"},"content":" do {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"xxiaoweii"},"content":" userInput \u003d ui.getInput();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"xxiaoweii"},"content":" Command command \u003d new Command(tasklist, ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"xxiaoweii"},"content":" if (!userInput.equalsIgnoreCase(exitC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"xxiaoweii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.equalsIgnoreCase(listC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"xxiaoweii"},"content":" command.handleList();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"xxiaoweii"},"content":" } else if (userInput.startsWith(deleteC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"xxiaoweii"},"content":" command.handleDelete(userInput, deleteC);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"xxiaoweii"},"content":" } else if (userInput.startsWith(doneC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"xxiaoweii"},"content":" command.handleDone(userInput, doneC);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"xxiaoweii"},"content":" } else if (userInput.startsWith(undoneC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"xxiaoweii"},"content":" command.handleUndone(userInput, undoneC);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"xxiaoweii"},"content":" } else if (userInput.startsWith(deadlineC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"xxiaoweii"},"content":" command.handleDeadline(userInput, deadlineC);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"xxiaoweii"},"content":" } else if (userInput.startsWith(eventC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"xxiaoweii"},"content":" command.handleEvent(userInput, eventC);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"xxiaoweii"},"content":" } else if (userInput.startsWith(todoC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"xxiaoweii"},"content":" command.handleTodo(userInput, todoC);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"xxiaoweii"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"xxiaoweii"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"xxiaoweii"},"content":" storage.saveTaskToFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"xxiaoweii"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Error parsing date and time: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"xxiaoweii"},"content":" } catch (DetailsUnknownException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"xxiaoweii"},"content":" } catch (UnknownCommandException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"xxiaoweii"},"content":" } catch (ChattyException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"xxiaoweii"},"content":" } while (!userInput.equalsIgnoreCase(exitC));","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"xxiaoweii"},"content":" this.messages.Exit();","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"xxiaoweii":85,"-":4}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"import duke.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" private LocalDateTime startDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" private LocalDateTime endDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" public Event(String task, String startDetails, String endDetails) {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" super(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" this.startDateTime \u003d Parser.formatDate(startDetails);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" this.endDateTime \u003d Parser.formatDate(endDetails);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":" String formattedStart \u003d Parser.dateToString(startDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" String formattedEnd \u003d Parser.dateToString(endDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formattedStart + \" to: \" + formattedEnd + \") \";","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xxiaoweii":25}},{"path":"src/main/java/duke/Messages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class Messages {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" public Messages() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" Messages.Greet();","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" public static final void Greet() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Hello! I\u0027m Chatty!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"What can I do for you today? \");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" public static final void Exit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Bye bye! Hope to see you again soon\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xxiaoweii":18}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" public static LocalDateTime formatDate(String dateTimeString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" LocalDateTime parseDate \u003d LocalDateTime.parse(dateTimeString, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" return parseDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" public static String dateToString(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy h:mma\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" String formattedDate \u003d dateTime.format(outputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" return formattedDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":20}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import duke.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"import duke.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" public void saveTaskToFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(this.filePath));","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" for (Task task: TaskList.getList()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":" writer.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"An error occur while trying to save tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xxiaoweii"},"content":" public void loadTask() throws IOException {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xxiaoweii"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"xxiaoweii"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"xxiaoweii"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"xxiaoweii"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"xxiaoweii"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"xxiaoweii"},"content":" String taskData \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"xxiaoweii"},"content":" String[] keywords \u003d taskData.split(\" / \");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"xxiaoweii"},"content":" String taskType\u003d keywords[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"xxiaoweii"},"content":" boolean isDone \u003d \"1\".equals(keywords[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"xxiaoweii"},"content":" String taskDescription \u003d keywords[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"xxiaoweii"},"content":" String taskDetails \u003d keywords[3];","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"xxiaoweii"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"xxiaoweii"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"xxiaoweii"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"xxiaoweii"},"content":" task \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"xxiaoweii"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"xxiaoweii"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"xxiaoweii"},"content":" task \u003d new Deadline(taskDescription, taskDetails);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"xxiaoweii"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"xxiaoweii"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"xxiaoweii"},"content":" String[] eventDetails \u003d taskDetails.split(\" /from \");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"xxiaoweii"},"content":" if (eventDetails.length !\u003d 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Error: Incomplete event details.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"xxiaoweii"},"content":" continue;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"xxiaoweii"},"content":" String startTime \u003d eventDetails[1].split(\" /to \")[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"xxiaoweii"},"content":" String endTime \u003d eventDetails[1].split(\" /to \")[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"xxiaoweii"},"content":" task \u003d new Event(taskDescription, startTime, endTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"xxiaoweii"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"xxiaoweii"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Error: Unknown task type. \");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"xxiaoweii"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"xxiaoweii"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"xxiaoweii"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"xxiaoweii"},"content":" task.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"xxiaoweii"},"content":" TaskList.getList().add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"xxiaoweii"},"content":" scanner.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":79}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" private String task;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" public Task(String task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" public Task() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" this.task \u003d \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" public void markDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xxiaoweii"},"content":" return \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xxiaoweii"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xxiaoweii"},"content":" return \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"xxiaoweii"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xxiaoweii"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xxiaoweii"},"content":" return \"[\" + (this.isDone? \"X\" : \" \") + \"] \" + this.task;","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xxiaoweii":38}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" private static ArrayList\u003cTask\u003e listOfTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" listOfTasks.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Now you have \" + listOfTasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" Task removedTask \u003d listOfTasks.remove(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(removedTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Now you have \" + listOfTasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" public void listOutTasks() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" if (listOfTasks.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"There is currently no task in your list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Here are the tasks in your list: \");","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":" for (int i \u003d 0; i \u003c listOfTasks.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xxiaoweii"},"content":" System.out.println((i + 1) + \".\" + listOfTasks.get(i));","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xxiaoweii"},"content":" public void markAsDone(int i) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xxiaoweii"},"content":" listOfTasks.get(i - 1).markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n \" + listOfTasks.get(i - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xxiaoweii"},"content":" public void markAsUndone(int i) {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xxiaoweii"},"content":" listOfTasks.get(i - 1).markUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n \" + listOfTasks.get(i - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"xxiaoweii"},"content":" public int numOfTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"xxiaoweii"},"content":" return listOfTasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"xxiaoweii"},"content":" public static ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"xxiaoweii"},"content":" return listOfTasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xxiaoweii":50}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":" public ToDo(String task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" super(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xxiaoweii":13}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" public String getInput() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":16}},{"path":"src/main/java/duke/exception/ChattyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class ChattyException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":" public ChattyException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xxiaoweii":8}},{"path":"src/main/java/duke/exception/DetailsUnknownException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class DetailsUnknownException extends ChattyException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" public DetailsUnknownException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":" super(\"The details are missing. Please check your input again\");","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":9}},{"path":"src/main/java/duke/exception/IncompleteMessageException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class IncompleteMessageException extends ChattyException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":" public IncompleteMessageException(String errorMessage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" super(\"The command you entered is incomplete. Please give me more information.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":7}},{"path":"src/main/java/duke/exception/InvalidTaskNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class InvalidTaskNumberException extends ChattyException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" public InvalidTaskNumberException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" super(\"The task number you have entered is invalid, please double check.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":8}},{"path":"src/main/java/duke/exception/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class UnknownCommandException extends ChattyException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":" public UnknownCommandException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" super(\"Sorry, I don\u0027t understand what that means.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xxiaoweii":7}}] +[{"path":"Level7File/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"0","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"0","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":2}},{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"xxiaoweii":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"xxiaoweii":1,"-":41}},{"path":"src/main/java/duke/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.IncompleteMessageException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.DetailsUnknownException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.InvalidTaskNumberException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"public class Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" public Command(TaskList tasklist, Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" this.taskList \u003d tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" public void handleList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.listOutTasks();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" public void handleDelete(String userInput, String keyword) throws IncompleteMessageException, InvalidTaskNumberException {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.length() \u003d\u003d keyword.length()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" throw new IncompleteMessageException(\"Delete\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":" String getIndex \u003d userInput.substring(keyword.length() + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" int taskIndex \u003d Integer.parseInt(getIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xxiaoweii"},"content":" if (taskIndex \u003e this.taskList.numOfTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xxiaoweii"},"content":" throw new InvalidTaskNumberException();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.deleteTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"xxiaoweii"},"content":" public void handleDone(String userInput, String keyword) throws IncompleteMessageException, InvalidTaskNumberException {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.length() \u003d\u003d keyword.length()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"xxiaoweii"},"content":" throw new IncompleteMessageException(\"Done\");","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"xxiaoweii"},"content":" String getIndex \u003d userInput.substring(keyword.length() + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"xxiaoweii"},"content":" int taskIndex \u003d Integer.parseInt(getIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"xxiaoweii"},"content":" if (taskIndex \u003e this.taskList.numOfTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"xxiaoweii"},"content":" throw new InvalidTaskNumberException();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.markAsDone(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"xxiaoweii"},"content":" public void handleUndone(String userInput, String keyword) throws IncompleteMessageException, InvalidTaskNumberException {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.length() \u003d\u003d keyword.length()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"xxiaoweii"},"content":" throw new IncompleteMessageException(\"Undone\");","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"xxiaoweii"},"content":" String getIndex \u003d userInput.substring(keyword.length() + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"xxiaoweii"},"content":" int taskIndex \u003d Integer.parseInt(getIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"xxiaoweii"},"content":" if (taskIndex \u003e this.taskList.numOfTasks()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"xxiaoweii"},"content":" throw new InvalidTaskNumberException();","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.markAsUndone(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"xxiaoweii"},"content":" public void handleDeadline(String userInput, String keyword) throws IncompleteMessageException, DetailsUnknownException {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"xxiaoweii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"xxiaoweii"},"content":" String[] inputToArr \u003d Parser.splitInput(userInput); //return [keyword, task /by time]","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.length() \u003d\u003d keyword.length()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"xxiaoweii"},"content":" throw new IncompleteMessageException(\"D\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"xxiaoweii"},"content":" String[] taskArr \u003d Parser.splitDeadlineDetails(inputToArr[1]); // return [task, /by time]","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"xxiaoweii"},"content":" String taskDescription \u003d taskArr[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"xxiaoweii"},"content":" String taskTime \u003d taskArr[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"xxiaoweii"},"content":" Deadline deadline \u003d new Deadline(taskDescription, taskTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.addTask(deadline);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"xxiaoweii"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"xxiaoweii"},"content":" throw new DetailsUnknownException();","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"xxiaoweii"},"content":" } catch (IncompleteMessageException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"xxiaoweii"},"content":" e.getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"xxiaoweii"},"content":" public void handleEvent(String userInput, String keyword) throws IncompleteMessageException, DetailsUnknownException {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"xxiaoweii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"xxiaoweii"},"content":" String[] inputToArr \u003d Parser.splitInput(userInput); // return [kw, task /from time /to time]","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.length() \u003d\u003d keyword.length()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"xxiaoweii"},"content":" throw new IncompleteMessageException(\"E\");","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"xxiaoweii"},"content":" String[] taskArr \u003d Parser.splitEventDetails(inputToArr[1]); // return [task, /from time /to time]","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"xxiaoweii"},"content":" String taskDescription \u003d taskArr[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"xxiaoweii"},"content":" String taskTime \u003d taskArr[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"xxiaoweii"},"content":" Event event \u003d new Event(taskDescription, taskTime);","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.addTask(event);","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"xxiaoweii"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"xxiaoweii"},"content":" throw new DetailsUnknownException();","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"xxiaoweii"},"content":" } catch (IncompleteMessageException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"xxiaoweii"},"content":" e.getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"xxiaoweii"},"content":" public void handleTodo(String userInput, String keyword) throws IncompleteMessageException, DetailsUnknownException {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.length() \u003c\u003d keyword.length() + 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"xxiaoweii"},"content":" throw new IncompleteMessageException(\"duke.ToDo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"xxiaoweii"},"content":" String taskDescription \u003d userInput.substring(keyword.length() + 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"xxiaoweii"},"content":" ToDo task \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"xxiaoweii"},"content":" this.taskList.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":119}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"import duke.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" private LocalDateTime time;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" public Deadline(String task, String deadlineDetails) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" super(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" LocalDateTime dueDateTime \u003d Parser.formatDate(deadlineDetails);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" this.time \u003d dueDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" public LocalDateTime getTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":" return this.time;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":" String timeToString \u003d Parser.dateToString(this.time);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":" return \"[D]\" + super.toString() + \" (by: \" + timeToString + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xxiaoweii":27}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.UnknownCommandException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.ChattyException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.DetailsUnknownException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" private Messages messages;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" private TaskList tasklist;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" public Duke() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" this.messages \u003d new Messages();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" this.tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":" tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xxiaoweii"},"content":" storage.loadTask();","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xxiaoweii"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":" tasklist \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xxiaoweii"},"content":" } catch (DetailsUnknownException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"xxiaoweii"},"content":" e.getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":37,"author":{"gitId":"xxiaoweii"},"content":" new Duke(\"Level7File/tasks.txt\").startChatting();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"xxiaoweii"},"content":" public void startChatting() {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"xxiaoweii"},"content":" Messages.Greet();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"xxiaoweii"},"content":" String exitC \u003d \"bye\";","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"xxiaoweii"},"content":" String listC \u003d \"list\";","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"xxiaoweii"},"content":" String deleteC \u003d \"delete\";","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"xxiaoweii"},"content":" String doneC \u003d \"mark\";","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"xxiaoweii"},"content":" String undoneC \u003d \"unmark\";","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"xxiaoweii"},"content":" String deadlineC \u003d \"deadline\";","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"xxiaoweii"},"content":" String eventC \u003d \"event\";","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"xxiaoweii"},"content":" String todoC \u003d \"todo\";","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"xxiaoweii"},"content":" String userInput;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"xxiaoweii"},"content":" do {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"xxiaoweii"},"content":" userInput \u003d ui.getInput();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"xxiaoweii"},"content":" Command command \u003d new Command(tasklist, ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"xxiaoweii"},"content":" if (!userInput.equalsIgnoreCase(exitC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"xxiaoweii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"xxiaoweii"},"content":" if (userInput.equalsIgnoreCase(listC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"xxiaoweii"},"content":" command.handleList();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"xxiaoweii"},"content":" } else if (userInput.startsWith(deleteC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"xxiaoweii"},"content":" command.handleDelete(userInput, deleteC);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"xxiaoweii"},"content":" } else if (userInput.startsWith(doneC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"xxiaoweii"},"content":" command.handleDone(userInput, doneC);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"xxiaoweii"},"content":" } else if (userInput.startsWith(undoneC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"xxiaoweii"},"content":" command.handleUndone(userInput, undoneC);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"xxiaoweii"},"content":" } else if (userInput.startsWith(deadlineC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"xxiaoweii"},"content":" command.handleDeadline(userInput, deadlineC);","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"xxiaoweii"},"content":" } else if (userInput.startsWith(eventC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"xxiaoweii"},"content":" command.handleEvent(userInput, eventC);","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"xxiaoweii"},"content":" } else if (userInput.startsWith(todoC)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"xxiaoweii"},"content":" command.handleTodo(userInput, todoC);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"xxiaoweii"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"xxiaoweii"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"xxiaoweii"},"content":" storage.saveTaskToFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"xxiaoweii"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Error parsing date and time: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"xxiaoweii"},"content":" } catch (DetailsUnknownException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"xxiaoweii"},"content":" } catch (UnknownCommandException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"xxiaoweii"},"content":" } catch (ChattyException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"xxiaoweii"},"content":" } while (!userInput.equalsIgnoreCase(exitC));","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"xxiaoweii"},"content":" this.messages.Exit();","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"xxiaoweii":87,"-":4}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import duke.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"import duke.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.DetailsUnknownException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" private LocalDateTime startDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" private LocalDateTime endDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" public Event(String task, String startDetails, String endDetails) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" super(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" this.startDateTime \u003d Parser.formatDate(startDetails);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" this.endDateTime \u003d Parser.formatDate(endDetails);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" public Event(String task, String dateTimeDetails) throws DetailsUnknownException {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":" super(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" String[] timeArr \u003d Parser.splitEventDateTime(dateTimeDetails); // return [start time, end time]","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":" this.startDateTime \u003d Parser.formatDate(timeArr[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":" this.endDateTime \u003d Parser.formatDate(timeArr[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":" throw new DetailsUnknownException();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":" public LocalDateTime getStartDateTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"xxiaoweii"},"content":" return this.startDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"xxiaoweii"},"content":" public LocalDateTime getEndDateTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"xxiaoweii"},"content":" return this.endDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"xxiaoweii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"xxiaoweii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"xxiaoweii"},"content":" String formattedStart \u003d Parser.dateToString(startDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"xxiaoweii"},"content":" String formattedEnd \u003d Parser.dateToString(endDateTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"xxiaoweii"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formattedStart + \" to: \" + formattedEnd + \") \";","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xxiaoweii":46}},{"path":"src/main/java/duke/Messages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class Messages {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" public Messages() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" Messages.Greet();","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" public static final void Greet() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Hello! I\u0027m Chatty!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"What can I do for you today? \");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" public static final void Exit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Bye bye! Hope to see you again soon\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xxiaoweii":18}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" public static LocalDateTime formatDate(String dateTimeString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" LocalDateTime parseDate \u003d LocalDateTime.parse(dateTimeString, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" return parseDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" public static String dateToString(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy h:mma\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" String formattedDate \u003d dateTime.format(outputFormatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" return formattedDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" public static String[] splitInput(String oriInput) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":" // split the input into at most 2 parts to get the task type and the task details","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" return oriInput.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":" public static String[] splitDeadlineDetails(String oriInput) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" // split the input to get the deadline task description and deadline time","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":" return oriInput.split(\"/by \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"xxiaoweii"},"content":" public static String[] splitEventDetails(String oriInput) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":" // split the input to get the event task description and the date time details","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"xxiaoweii"},"content":" return oriInput.split(\"/from \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"xxiaoweii"},"content":" public static String[] splitEventDateTime(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"xxiaoweii"},"content":" // split the input again to get the start time of the event and the end time of the event","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"xxiaoweii"},"content":" return input.split(\" /to \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":39}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import duke.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"import duke.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"import duke.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"import duke.exception.DetailsUnknownException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" public void saveTaskToFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(this.filePath));","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":" StringBuilder tasks \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" for (Task task: TaskList.getList()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" tasks.append(task.getStatus()).append(\" | \").append(task.getTaskType(task)).append(\"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" writer.write(tasks.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xxiaoweii"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"An error occur while trying to save tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"xxiaoweii"},"content":" public void loadTask() throws IOException, DetailsUnknownException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"xxiaoweii"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"xxiaoweii"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"xxiaoweii"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"xxiaoweii"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"xxiaoweii"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"xxiaoweii"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"xxiaoweii"},"content":" String taskData \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"xxiaoweii"},"content":" String[] keywords \u003d taskData.split(\" \\\\|\\\\| \");","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"xxiaoweii"},"content":" Task currT \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"xxiaoweii"},"content":" switch (keywords[0]) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"xxiaoweii"},"content":" case \"T\":","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"xxiaoweii"},"content":" currT \u003d new ToDo(keywords[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"xxiaoweii"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"xxiaoweii"},"content":" case \"D\":","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"xxiaoweii"},"content":" currT \u003d new Deadline(keywords[2], keywords[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"xxiaoweii"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"xxiaoweii"},"content":" case \"E\":","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"xxiaoweii"},"content":" currT \u003d new Event(keywords[2], keywords[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"xxiaoweii"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"xxiaoweii"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Error: Unknown task type. \");","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"xxiaoweii"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"xxiaoweii"},"content":" if (keywords[1].equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"xxiaoweii"},"content":" currT.markDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"xxiaoweii"},"content":" TaskList.getList().add(currT);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"xxiaoweii"},"content":" scanner.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":69}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" private String task;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" public Task(String task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" public Task() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" this.task \u003d \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" public void markDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" public String getStatus() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":" if (isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"xxiaoweii"},"content":" return \"1\";","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"xxiaoweii"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"xxiaoweii"},"content":" return \"0\";","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"xxiaoweii"},"content":" public String getTaskType(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"xxiaoweii"},"content":" if (task instanceof Event) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"xxiaoweii"},"content":" return \"E | \" + this.task + \"| \" + ((Event) task).getStartDateTime() + \" to \" + ((Event) task).getEndDateTime();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"xxiaoweii"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"xxiaoweii"},"content":" return \"D | \" + this.task + \"| \" + ((Deadline) task).getTime();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"xxiaoweii"},"content":" } else if (task instanceof ToDo) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"xxiaoweii"},"content":" return \"T | \" + this.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"xxiaoweii"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"xxiaoweii"},"content":" return \"Unknown\";","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"xxiaoweii"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xxiaoweii"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xxiaoweii"},"content":" return \"[\" + (this.isDone? \"X\" : \" \") + \"] \" + this.task;","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xxiaoweii":50}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"public class TaskList {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" private static ArrayList\u003cTask\u003e listOfTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" listOfTasks.add(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Now you have \" + listOfTasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":" Task removedTask \u003d listOfTasks.remove(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(removedTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Now you have \" + listOfTasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"xxiaoweii"},"content":" public void listOutTasks() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xxiaoweii"},"content":" if (listOfTasks.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"There is currently no task in your list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xxiaoweii"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Here are the tasks in your list: \");","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xxiaoweii"},"content":" for (int i \u003d 0; i \u003c listOfTasks.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xxiaoweii"},"content":" System.out.println((i + 1) + \".\" + listOfTasks.get(i));","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xxiaoweii"},"content":" public void markAsDone(int i) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xxiaoweii"},"content":" listOfTasks.get(i - 1).markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n \" + listOfTasks.get(i - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xxiaoweii"},"content":" public void markAsUndone(int i) {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xxiaoweii"},"content":" listOfTasks.get(i - 1).markUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"xxiaoweii"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n \" + listOfTasks.get(i - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"xxiaoweii"},"content":" public int numOfTasks() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"xxiaoweii"},"content":" return listOfTasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"xxiaoweii"},"content":" public static ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"xxiaoweii"},"content":" return listOfTasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xxiaoweii":50}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":" public ToDo(String task) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" super(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xxiaoweii":13}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" public String getInput() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":16}},{"path":"src/main/java/duke/exception/ChattyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class ChattyException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":" public ChattyException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xxiaoweii":8}},{"path":"src/main/java/duke/exception/DetailsUnknownException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class DetailsUnknownException extends ChattyException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" public DetailsUnknownException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":" super(\"The details are missing. Please check your input again\");","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":9}},{"path":"src/main/java/duke/exception/IncompleteMessageException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class IncompleteMessageException extends ChattyException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":" public IncompleteMessageException(String errorMessage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" super(\"The command you entered is incomplete. Please give me more information.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":7}},{"path":"src/main/java/duke/exception/InvalidTaskNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class InvalidTaskNumberException extends ChattyException {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" public InvalidTaskNumberException() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" super(\"The task number you have entered is invalid, please double check.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"xxiaoweii":8}},{"path":"src/main/java/duke/exception/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"package duke.exception;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"public class UnknownCommandException extends ChattyException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":" public UnknownCommandException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":" super(\"Sorry, I don\u0027t understand what that means.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"xxiaoweii":7}},{"path":"src/test/java/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"import duke.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" public void testStringConversion() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" assertEquals(\"[D][ ] Complete iP (by: Sep 05 2023 2:00PM)\", new Deadline(\"Complete iP\", \"2023-09-05 1400\").toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xxiaoweii":13}},{"path":"src/test/java/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xxiaoweii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"xxiaoweii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"xxiaoweii"},"content":"import duke.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"xxiaoweii"},"content":"public class ToDoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"xxiaoweii"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"xxiaoweii"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"xxiaoweii"},"content":" public void testStringConversion() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"xxiaoweii"},"content":" assertEquals(\"[T][ ] Complete iP\", new ToDo(\"Complete iP\").toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"xxiaoweii"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"xxiaoweii"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"xxiaoweii":13}}] diff --git a/xxiaoweii_ip_master/commits.json b/xxiaoweii_ip_master/commits.json index 1fae0aec..47c389b5 100644 --- a/xxiaoweii_ip_master/commits.json +++ b/xxiaoweii_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"xxiaoweii":[{"date":"2023-08-23","commitResults":[{"hash":"db9d5273b5dfe82df794fb5c1f67c43e35c3427e","isMergeCommit":false,"messageTitle":"level 0 - rename, greet, exit","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"9b36f3efca7833183292ba14c0e64f5110d89d92","isMergeCommit":false,"messageTitle":"level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"29747e8089f93ffc3f41bcc75f3a265198273866","isMergeCommit":false,"messageTitle":"level 1 -","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"7904bd3a5681f4e0c07de4199962da31521f0e34","isMergeCommit":false,"messageTitle":"level 1 - echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"4906654f45af92c37843da18dfa1ac9786748afe","isMergeCommit":false,"messageTitle":"level 1 - echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"4a8668115e44daee82177246f27c765c31eb27ec","isMergeCommit":false,"messageTitle":"level 2 - Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"1836d13a2e408b2a4aeb0fa26894a7cd3e35406b","isMergeCommit":false,"messageTitle":"level 3 - Mark As Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"7a428a95d038260250620e490468040286e22616","isMergeCommit":false,"messageTitle":"level 4: ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":12}}},{"hash":"ce86ea15422d0b2a036501bdebc245ec0d36d1ca","isMergeCommit":false,"messageTitle":"A-TestUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"bat":{"insertions":0,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"7c1bc8cfcf7f7392bb75e394ac3a8695b5ee437f","isMergeCommit":false,"messageTitle":"Level 5 - Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":26}}},{"hash":"e78dcc9c6a92cef5d717b2f6668786796566cd0b","isMergeCommit":false,"messageTitle":"Level 6 - Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"33547fca441d380cf905adc88ec3bf830bb5fcfd","isMergeCommit":false,"messageTitle":"Level 6 - updated the code slightly","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":228,"deletions":132}}},{"hash":"d622b086eae73fa444aadccff40c63dd821a9822","isMergeCommit":false,"messageTitle":"Level 7 - Save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":2}}},{"hash":"39c3d4e00fc3fb43ac95143953c069e8a2006055","isMergeCommit":false,"messageTitle":"Level 8 - Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":29,"deletions":3}}},{"hash":"cf5a465c6631658c1a996cd5cd53d121f6f56cb1","isMergeCommit":false,"messageTitle":"Level 8 - Dates and Times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":16}}},{"hash":"bb72d7b4e79a19be462eff2635f51de901505783","isMergeCommit":false,"messageTitle":"Level 8 - Dates and Times","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ec2253217bc96ea555ca418455a4cfb405d9c7f8","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":18},"md":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"xxiaoweii":{"java":522,"md":2,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":2}},"authorContributionVariance":{"xxiaoweii":26668.0},"authorDisplayNameMap":{"xxiaoweii":"CS2103T-F08-4 ONG .. WEI"}} +{"authorDailyContributionsMap":{"xxiaoweii":[{"date":"2023-08-23","commitResults":[{"hash":"db9d5273b5dfe82df794fb5c1f67c43e35c3427e","isMergeCommit":false,"messageTitle":"level 0 - rename, greet, exit","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"9b36f3efca7833183292ba14c0e64f5110d89d92","isMergeCommit":false,"messageTitle":"level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"29747e8089f93ffc3f41bcc75f3a265198273866","isMergeCommit":false,"messageTitle":"level 1 -","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"7904bd3a5681f4e0c07de4199962da31521f0e34","isMergeCommit":false,"messageTitle":"level 1 - echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"4906654f45af92c37843da18dfa1ac9786748afe","isMergeCommit":false,"messageTitle":"level 1 - echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"4a8668115e44daee82177246f27c765c31eb27ec","isMergeCommit":false,"messageTitle":"level 2 - Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"1836d13a2e408b2a4aeb0fa26894a7cd3e35406b","isMergeCommit":false,"messageTitle":"level 3 - Mark As Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"7a428a95d038260250620e490468040286e22616","isMergeCommit":false,"messageTitle":"level 4: ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":12}}},{"hash":"ce86ea15422d0b2a036501bdebc245ec0d36d1ca","isMergeCommit":false,"messageTitle":"A-TestUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"bat":{"insertions":0,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"7c1bc8cfcf7f7392bb75e394ac3a8695b5ee437f","isMergeCommit":false,"messageTitle":"Level 5 - Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":26}}},{"hash":"e78dcc9c6a92cef5d717b2f6668786796566cd0b","isMergeCommit":false,"messageTitle":"Level 6 - Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"33547fca441d380cf905adc88ec3bf830bb5fcfd","isMergeCommit":false,"messageTitle":"Level 6 - updated the code slightly","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":228,"deletions":132}}},{"hash":"d622b086eae73fa444aadccff40c63dd821a9822","isMergeCommit":false,"messageTitle":"Level 7 - Save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":2}}},{"hash":"39c3d4e00fc3fb43ac95143953c069e8a2006055","isMergeCommit":false,"messageTitle":"Level 8 - Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":29,"deletions":3}}},{"hash":"cf5a465c6631658c1a996cd5cd53d121f6f56cb1","isMergeCommit":false,"messageTitle":"Level 8 - Dates and Times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":16}}},{"hash":"bb72d7b4e79a19be462eff2635f51de901505783","isMergeCommit":false,"messageTitle":"Level 8 - Dates and Times","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ec2253217bc96ea555ca418455a4cfb405d9c7f8","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":18},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-01","commitResults":[{"hash":"524f8dc427fc16c17c569bb2d2ef1d263ad60730","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":58}}},{"hash":"78bb09aff3c65981d8a127bbd3057827d21ac806","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"927f03f3821a19e1d5309af267380cd43df25c37","isMergeCommit":false,"messageTitle":"level 0 - rename, greet, exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"33fd4402b7dcda98e98f02d7ddb0844f7c908853","isMergeCommit":false,"messageTitle":"level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":1}}},{"hash":"321adbdc184080889ffd7db993c57180d064915f","isMergeCommit":false,"messageTitle":"level 1 -","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"89296275d1962688c243739f73bde0d74d52b5d3","isMergeCommit":false,"messageTitle":"level 1 - echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"fe095a535577c697a416ee05f74c6398371e461f","isMergeCommit":false,"messageTitle":"level 1 - echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"b3774cb12b795fbefbc5cbb70b700093b392a25a","isMergeCommit":false,"messageTitle":"level 2 - Add, List","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"111971660fd6369d852dceadd6518ab09d2619dc","isMergeCommit":false,"messageTitle":"level 3 - Mark As Done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":1}}},{"hash":"23d114678d6d2cc25d001bbe6b09c2fad0d47d69","isMergeCommit":false,"messageTitle":"level 4: ToDos, Events, Deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":12}}},{"hash":"c30062cc577a4b9773a4b1bb8fe151612d789d48","isMergeCommit":false,"messageTitle":"A-TestUiTesting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"bat":{"insertions":0,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"7de816c595cb2c8df333dbd7633af2d774853ee5","isMergeCommit":false,"messageTitle":"Level 5 - Handle Errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":26}}},{"hash":"becd1d3d66a0aac589dc9005753b9d1d922fbd74","isMergeCommit":false,"messageTitle":"Level 6 - Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"de927d4f4ed94563d504b0458409d480be96f976","isMergeCommit":false,"messageTitle":"Level 6 - updated the code slightly","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":228,"deletions":132}}},{"hash":"b50ca3d01a2c163e57661d0284a8817f53920a4c","isMergeCommit":false,"messageTitle":"Level 7 - Save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":2}}},{"hash":"dde19fa19a8dad6385fe1e5cdfd2646bdf719cc6","isMergeCommit":false,"messageTitle":"Level 8 - Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":29,"deletions":3}}},{"hash":"40a72e6744174aa4f391ccf09fbce11db55297ff","isMergeCommit":false,"messageTitle":"Level 8 - Dates and Times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":16}}},{"hash":"9d32ea6a7926312a40cdf901bf727e31e4ef7298","isMergeCommit":false,"messageTitle":"Level 8 - Dates and Times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"c3dc38e45b2bbc41c09eb0489527c40411ee0b46","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":18},"md":{"insertions":2,"deletions":2}}},{"hash":"a6bc1214370307fcccbfa0659cbf4d9db6510d5b","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":58}}},{"hash":"fdf27a31497b348abdb9b81a80994f3da1e3f908","isMergeCommit":false,"messageTitle":"JUnit test","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}},{"hash":"f7c760e8b5aa3c091a69135c3ebf2756adc55ff9","isMergeCommit":false,"messageTitle":"JUnit test","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":25,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"xxiaoweii":{"java":599,"md":2,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":2}},"authorContributionVariance":{"xxiaoweii":124617.164},"authorDisplayNameMap":{"xxiaoweii":"CS2103T-F08-4 ONG .. WEI"}} diff --git a/yanghengtang_ip_master/authorship.json b/yanghengtang_ip_master/authorship.json index e337a225..79339bf3 100644 --- a/yanghengtang_ip_master/authorship.json +++ b/yanghengtang_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yanghengtang":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" archiveFileName \u003d \"duke.jar\"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yanghengtang":2,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"T | 1 | read book","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"D | 0 | return book | 2023-09-11","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"E | 0 | project meeting | 2023-09-11 | 2023-09-11","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"T | 1 | join sports club","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"yanghengtang":4}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" this.taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" this.ui.printError(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" this.ui.printEntryMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" String fullCommand \u003d ui.nextCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"yanghengtang"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"yanghengtang"},"content":" c.execute(taskList, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yanghengtang"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"yanghengtang"},"content":" } catch (TaskException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"yanghengtang"},"content":" ui.printError(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"yanghengtang"},"content":" };","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"yanghengtang"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"yanghengtang"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":48,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"yanghengtang":46,"-":3}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" * Represents a Add Command to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" private Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to add a Task from a TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList with the Task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to show the status of the adding command.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" taskList.add(this.task);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" ui.printAdd(this.task, taskList.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":31}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represents commands to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" private boolean exit;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" public Command(boolean exit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" this.exit \u003d exit;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands associated with the Command object.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList required for execution of some commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui required for execution of some commands.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage required for execution of some commands.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" public abstract void execute(TaskList taskList, Ui ui, Storage storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" * Returns a boolean value to indicate if Command object is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" * @return True if the Command object is an ExitCommand.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" return this.exit;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":34}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" * Represents a Delete command to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to delete a Task from a TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList with the Task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to show the status of the deletion command.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" Task task \u003d taskList.remove(this.index);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" ui.printDelete(task, taskList.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":31}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represents an Exit command to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" public ExitCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" super(true);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to exit the chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList associated with the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to show the status of the exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" storage.save(taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" ui.printExitMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":27}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represents a Find command to be executed.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" private String queryString;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" public FindCommand(String queryString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" this.queryString \u003d queryString;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to find a Task from a TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList to be searched on.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to show the status of the finding of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" TaskList filteredTaskList \u003d taskList.find(this.queryString);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" ui.printFind(filteredTaskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yanghengtang":30}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" * Represents a Mark command to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to mark a Task from a TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList with the Task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to show the status of the marking of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" Task task \u003d taskList.mark(this.index);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" ui.printDelete(task, taskList.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":31}},{"path":"src/main/java/duke/command/PrintListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represents a Print List command to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public class PrintListCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" public PrintListCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to print the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList to be printed.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to print the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" ui.printList(taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":26}},{"path":"src/main/java/duke/command/UnknownCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represents an unknown command.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public class UnknownCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" public UnknownCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" * Prints the error message indicating an unknown command has been entered.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList associated with the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui used to print the error message.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" ui.printCommandNotFound();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":26}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" * Represents a unmark command to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to unmark a Task from a TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList with the Task to be unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to show the status of the unmarking of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" Task task \u003d taskList.unmark(this.index);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" ui.printDelete(task, taskList.size());","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":31}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":" * Represents a task with a given deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" protected LocalDate byDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" public Deadline(String description, LocalDate byDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" this.byDate \u003d byDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" * Returns a string representation of the Deadline object.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * @return String representation of the Deadline object.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" String status \u003d \"[\" + (super.isDone ? \"X\" : \" \") + \"]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" String deadline \u003d \"(by: \" + this.byDate + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" return \"[D]\" + status + \" \" + super.description + \" \" + deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":27}},{"path":"src/main/java/duke/task/DeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":" * Represents an error that occurred during the initialisation of a Deadline object.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"public class DeadlineException extends TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" public DeadlineException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" super(\"Valid Format: deadline (description) /by (YYYY-MM-DD)\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":12}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":" * Represents an event with a given start and end date.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" protected LocalDate fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" protected LocalDate toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" public Event(String description, LocalDate fromDate, LocalDate toDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * Returns a string representation of the Event object.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" * @return String representation of the Event object.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" String status \u003d \"[\" + (this.isDone ? \"X\" : \" \") + \"]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" String duration \u003d \"(from: \" + this.fromDate + \" to: \" + this.toDate + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" return \"[E]\" + status + \" \" + this.description + \" \" + duration;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":29}},{"path":"src/main/java/duke/task/EventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":" * Represents an error that occurred during the initialisation of a Deadline object.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"public class EventException extends TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" public EventException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" super(\"event (description) /from (YYYY-MM-DD) /to (YYYY-MM-DD)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":11}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":" * Represents a task with status indicating its completeness","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" * @return String representation of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" String status \u003d \"[\" + (this.isDone ? \"X\" : \" \") + \"]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" return status + \" \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" * Updates the task status to \u0027completed\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":" * Updates the task status to \u0027uncompleted\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yanghengtang"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"yanghengtang"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"yanghengtang":39}},{"path":"src/main/java/duke/task/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":" * Represents an error that occurred during the initialisation of a Deadline object.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"public class TaskException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" public TaskException(String format) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" super(\"Oops! Invalid input for your task.\\nValid Format: \" + format);","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":11}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":" * Represents a task that is to be done.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" * Returns a string representation of the ToDo object.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" * @return String representation of the ToDo object.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" String status \u003d \"[\" + (super.isDone ? \"X\" : \" \") + \"]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" return \"[T]\" + status + \" \" + super.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":21}},{"path":"src/main/java/duke/task/ToDoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":" * Represents an error that occurred during the initialisation of a Deadline object.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"public class ToDoException extends TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" public ToDoException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" super(\"todo (description)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":11}},{"path":"src/main/java/duke/util/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.command.AddCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":"import duke.command.PrintListCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"import duke.command.UnknownCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"import duke.task.DeadlineException;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":"import duke.task.EventException;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":"import duke.task.TaskException;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":"import duke.task.ToDoException;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" * Converts a given String into Tasks and Commands.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" * Returns a Command with the given instructions.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" * @param input The given instruction to be parsed.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" * @return Command object that correspond to the given instruction.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" * @throws TaskException if given input is in the wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":" public static Command parse(String input) throws TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"yanghengtang"},"content":" return new PrintListCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"yanghengtang"},"content":" return new MarkCommand(Parser.parseUserMark(input));","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"yanghengtang"},"content":" return new UnmarkCommand(Parser.parseUserUnmark(input));","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"yanghengtang"},"content":" return new DeleteCommand(Parser.parseUserDelete(input));","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"find\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yanghengtang"},"content":" String queryString \u003d Parser.parseUserFind(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yanghengtang"},"content":" return new FindCommand(queryString);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"yanghengtang"},"content":" Deadline deadline \u003d Parser.parseUserDeadline(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"yanghengtang"},"content":" return new AddCommand(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"yanghengtang"},"content":" Event event \u003d Parser.parseUserEvent(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"yanghengtang"},"content":" return new AddCommand(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"yanghengtang"},"content":" ToDo todo \u003d Parser.parseUserToDo(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"yanghengtang"},"content":" return new AddCommand(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"yanghengtang"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"yanghengtang"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"yanghengtang"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"yanghengtang"},"content":" return new UnknownCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yanghengtang"},"content":" * Returns a Deadline object based on the information from the local file.","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yanghengtang"},"content":" * @param input The given information from local file.","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yanghengtang"},"content":" * @return Deadline object that correspond to the information given.","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yanghengtang"},"content":" public static Deadline parseLoadDeadline(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"yanghengtang"},"content":" int byIndex \u003d input.indexOf(\u0027|\u0027, 7);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"yanghengtang"},"content":" String description \u003d input.substring(8, byIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"yanghengtang"},"content":" String by \u003d input.substring(byIndex + 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"yanghengtang"},"content":" LocalDate byDate \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"yanghengtang"},"content":" Deadline deadline \u003d new Deadline(description, byDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"yanghengtang"},"content":" if (input.charAt(4) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"yanghengtang"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"yanghengtang"},"content":" return deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"yanghengtang"},"content":" * Returns a Event object based on the information from the local file.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"yanghengtang"},"content":" * @param input The given information from local file.","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"yanghengtang"},"content":" * @return Event object that correspond to the information given.","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"yanghengtang"},"content":" public static Event parseLoadEvent(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"yanghengtang"},"content":" int fromIndex \u003d input.indexOf(\u0027|\u0027, 7);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"yanghengtang"},"content":" int toIndex \u003d input.indexOf(\u0027|\u0027, fromIndex + 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"yanghengtang"},"content":" String description \u003d input.substring(8, fromIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"yanghengtang"},"content":" String from \u003d input.substring(fromIndex + 2, toIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"yanghengtang"},"content":" String to \u003d input.substring(toIndex + 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"yanghengtang"},"content":" LocalDate fromDate \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"yanghengtang"},"content":" LocalDate toDate \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"yanghengtang"},"content":" Event event \u003d new Event(description, fromDate, toDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"yanghengtang"},"content":" if (input.charAt(4) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"yanghengtang"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"yanghengtang"},"content":" return event;","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"yanghengtang"},"content":" * Returns a ToDo object based on the information from the local file.","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"yanghengtang"},"content":" * @param input The given information from local file.","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"yanghengtang"},"content":" * @return ToDo object that correspond to the information given.","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"yanghengtang"},"content":" public static ToDo parseLoadToDo(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"yanghengtang"},"content":" String description \u003d input.substring(8);","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"yanghengtang"},"content":" ToDo todo \u003d new ToDo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"yanghengtang"},"content":" if (input.charAt(4) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"yanghengtang"},"content":" todo.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"yanghengtang"},"content":" return todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"yanghengtang"},"content":" * Returns a Deadline object based on the user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"yanghengtang"},"content":" * @param input The user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"yanghengtang"},"content":" * @return Deadline object that corresponds to the user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"yanghengtang"},"content":" * @throws DeadlineException if given input is missing information or in wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"yanghengtang"},"content":" public static Deadline parseUserDeadline(String input) throws DeadlineException {","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"yanghengtang"},"content":" int byIndex \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 9) {","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"yanghengtang"},"content":" throw new DeadlineException();","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"yanghengtang"},"content":" } else if (byIndex \u003d\u003d -1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"yanghengtang"},"content":" throw new DeadlineException();","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"yanghengtang"},"content":" String description \u003d input.substring(9, byIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"yanghengtang"},"content":" String by \u003d input.substring(byIndex + 4);","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"yanghengtang"},"content":" LocalDate byDate \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"yanghengtang"},"content":" Deadline deadline \u003d new Deadline(description, byDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"yanghengtang"},"content":" return deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"yanghengtang"},"content":" * Returns a Event object based on the user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"yanghengtang"},"content":" * @param input The user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"yanghengtang"},"content":" * @return Event object that corresponds to the user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"yanghengtang"},"content":" * @throws EventException if given input is missing information or in wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"yanghengtang"},"content":" public static Event parseUserEvent(String input) throws EventException {","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"yanghengtang"},"content":" int fromIndex \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"yanghengtang"},"content":" int toIndex \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 6) {","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"yanghengtang"},"content":" throw new EventException();","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"yanghengtang"},"content":" } else if (fromIndex \u003d\u003d -1 || toIndex \u003d\u003d -1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"yanghengtang"},"content":" throw new EventException();","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"yanghengtang"},"content":" } else if (fromIndex \u003e toIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"yanghengtang"},"content":" throw new EventException();","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"yanghengtang"},"content":" String description \u003d input.substring(6, fromIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"yanghengtang"},"content":" String from \u003d input.substring(fromIndex + 6, toIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"yanghengtang"},"content":" String to \u003d input.substring(toIndex + 4);","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"yanghengtang"},"content":" LocalDate fromDate \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"yanghengtang"},"content":" LocalDate toDate \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"yanghengtang"},"content":" Event event \u003d new Event(description, fromDate, toDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"yanghengtang"},"content":" return event;","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"yanghengtang"},"content":" * Returns a ToDo object based on the user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"yanghengtang"},"content":" * @param input The user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"yanghengtang"},"content":" * @return ToDo object that corresponds to the user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"yanghengtang"},"content":" * @throws ToDoException if given input is missing information or in wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"yanghengtang"},"content":" public static ToDo parseUserToDo(String input) throws ToDoException {","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 5) {","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"yanghengtang"},"content":" throw new ToDoException();","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"yanghengtang"},"content":" ToDo todo \u003d new ToDo(input.substring(5));","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"yanghengtang"},"content":" return todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"yanghengtang"},"content":" * Returns the index of the Task to be mark based on user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"yanghengtang"},"content":" * @param input The given user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"yanghengtang"},"content":" * @return The index of the Task the user wishes to mark.","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"yanghengtang"},"content":" * @throws TaskException if given input is missing information or in wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"yanghengtang"},"content":" public static int parseUserMark(String input) throws TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"yanghengtang"},"content":" int index \u003d Integer.valueOf(input.substring(5)) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 5) {","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"yanghengtang"},"content":" throw new TaskException(\"mark (task number)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":212,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":213,"author":{"gitId":"yanghengtang"},"content":" return index;","lastModifiedDate":"2023-08-30"},{"lineNumber":214,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":215,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":216,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"yanghengtang"},"content":" * Returns the index of Task to be unmark based on user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"yanghengtang"},"content":" * @param input The given user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":220,"author":{"gitId":"yanghengtang"},"content":" * @return The index of the Task the user wishes to unmark.","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"yanghengtang"},"content":" * @throws TaskException if given input is missing information or in wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"yanghengtang"},"content":" public static int parseUserUnmark(String input) throws TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":224,"author":{"gitId":"yanghengtang"},"content":" int index \u003d Integer.valueOf(input.substring(7)) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":225,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":226,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 7) {","lastModifiedDate":"2023-08-30"},{"lineNumber":227,"author":{"gitId":"yanghengtang"},"content":" throw new TaskException(\"unmark (task number)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":228,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":229,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":230,"author":{"gitId":"yanghengtang"},"content":" return index;","lastModifiedDate":"2023-08-30"},{"lineNumber":231,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":232,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":233,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"yanghengtang"},"content":" * Returns the index of the Task to be deleted based on user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":236,"author":{"gitId":"yanghengtang"},"content":" * @param input The given user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":237,"author":{"gitId":"yanghengtang"},"content":" * @return The index of the Task the user wishes to delete.","lastModifiedDate":"2023-08-31"},{"lineNumber":238,"author":{"gitId":"yanghengtang"},"content":" * @throws TaskException if given input is missing information or in wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":239,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":240,"author":{"gitId":"yanghengtang"},"content":" public static int parseUserDelete(String input) throws TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":241,"author":{"gitId":"yanghengtang"},"content":" int index \u003d Integer.valueOf(input.substring(7)) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":242,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":243,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 7) {","lastModifiedDate":"2023-08-30"},{"lineNumber":244,"author":{"gitId":"yanghengtang"},"content":" throw new TaskException(\"delete (task number)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":245,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":246,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":247,"author":{"gitId":"yanghengtang"},"content":" return index;","lastModifiedDate":"2023-08-30"},{"lineNumber":248,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":249,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":250,"author":{"gitId":"yanghengtang"},"content":" public static String parseUserFind(String input) throws TaskException {","lastModifiedDate":"2023-08-31"},{"lineNumber":251,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":252,"author":{"gitId":"yanghengtang"},"content":" throw new TaskException(\"find (query string)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":253,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":254,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":255,"author":{"gitId":"yanghengtang"},"content":" return input.substring(5);","lastModifiedDate":"2023-08-31"},{"lineNumber":256,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":257,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":257}},{"path":"src/main/java/duke/util/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" * Represents a storage for the list of Tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" private File file;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" public Storage(String path) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" this.file \u003d new File(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" if (!this.file.getParentFile().exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" this.file.getParentFile().mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" if (!this.file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" this.file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Error: Unable to create local file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yanghengtang"},"content":" * Returns an ArrayList of Tasks from local data file.","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yanghengtang"},"content":" * @return ArrayList consisting of Task read from the data file.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yanghengtang"},"content":" * @throws FileNotFoundException","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yanghengtang"},"content":" public ArrayList\u003cTask\u003e load() throws FileNotFoundException {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"yanghengtang"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"yanghengtang"},"content":" Scanner sc \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"yanghengtang"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"yanghengtang"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"yanghengtang"},"content":" if (input.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"yanghengtang"},"content":" Deadline deadline \u003d Parser.parseLoadDeadline(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"yanghengtang"},"content":" list.add(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"yanghengtang"},"content":" } else if (input.charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"yanghengtang"},"content":" Event event \u003d Parser.parseLoadEvent(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"yanghengtang"},"content":" list.add(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"yanghengtang"},"content":" } else if (input.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"yanghengtang"},"content":" ToDo todo \u003d Parser.parseLoadToDo(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"yanghengtang"},"content":" list.add(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"yanghengtang"},"content":" return list;","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yanghengtang"},"content":" * Save the given TaskList into a local data file.","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList to be saved locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yanghengtang"},"content":" public void save(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yanghengtang"},"content":" String input \u003d taskList.toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yanghengtang"},"content":" String newData \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"yanghengtang"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yanghengtang"},"content":" int startIndex \u003d input.indexOf((i + 1) + \".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"yanghengtang"},"content":" int endIndex \u003d input.indexOf(\"\\n\", startIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"yanghengtang"},"content":" String subInput \u003d input.substring(startIndex + 2, endIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"yanghengtang"},"content":" String taskType \u003d String.valueOf(subInput.charAt(1));","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"yanghengtang"},"content":" String status \u003d subInput.charAt(4) \u003d\u003d \u0027X\u0027 ? \"1\" : \"0\";","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"yanghengtang"},"content":" newData +\u003d taskType + \" | \" + status + \" | \";","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"yanghengtang"},"content":" if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"yanghengtang"},"content":" int byIndex \u003d subInput.indexOf(\"(by:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"yanghengtang"},"content":" int subEndIndex \u003d subInput.indexOf(\")\");","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"yanghengtang"},"content":" String description \u003d subInput.substring(7, byIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"yanghengtang"},"content":" String by \u003d subInput.substring(byIndex + 5, subEndIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"yanghengtang"},"content":" newData +\u003d description + \" | \" + by;","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"yanghengtang"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"yanghengtang"},"content":" int fromIndex \u003d subInput.indexOf(\"(from:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"yanghengtang"},"content":" int toIndex \u003d subInput.indexOf(\"to:\", fromIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"yanghengtang"},"content":" int subEndIndex \u003d subInput.indexOf(\")\");","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"yanghengtang"},"content":" String description \u003d subInput.substring(7, fromIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"yanghengtang"},"content":" String from \u003d subInput.substring(fromIndex + 7, toIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"yanghengtang"},"content":" String to \u003d subInput.substring(toIndex + 4, subEndIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"yanghengtang"},"content":" newData +\u003d description + \" | \" + from + \" | \" + to;","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"yanghengtang"},"content":" } else if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"yanghengtang"},"content":" String description \u003d subInput.substring(7);","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"yanghengtang"},"content":" newData +\u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"yanghengtang"},"content":" newData +\u003d System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"yanghengtang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"yanghengtang"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"yanghengtang"},"content":" fw.write(newData);","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"yanghengtang"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"yanghengtang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Error: Unable to save list\");","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":115}},{"path":"src/main/java/duke/util/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represent a list consisting of Task objects.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" * Constructs a TaskList with a given ArrayList.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @param list The initial list of Task to be stored in the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" this.list \u003d list;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" * Returns a string representation of the TaskList with individual Task.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" * @return The string representation of the list of Task in the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"yanghengtang"},"content":" String output \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"yanghengtang"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"yanghengtang"},"content":" output +\u003d (i + 1) + \".\"+ list.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"yanghengtang"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yanghengtang"},"content":" * Add a given Task into the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yanghengtang"},"content":" * @param task The given Task to be added into the TaskList","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yanghengtang"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"yanghengtang"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yanghengtang"},"content":" * Removes a Task of the given index and returns the removed Task.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yanghengtang"},"content":" * If given index is out of bound, returns null.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yanghengtang"},"content":" * @param index The index of Task to be removed.","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yanghengtang"},"content":" * @return The Task object that has been removed from the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yanghengtang"},"content":" public Task remove(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"yanghengtang"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"yanghengtang"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"yanghengtang"},"content":" return this.list.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yanghengtang"},"content":" * Update the status of the Task of given index to completed and","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yanghengtang"},"content":" * returns the Task. If given index is out of bound, returns null.","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yanghengtang"},"content":" * @param index The index of the Task to be marked complete.","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yanghengtang"},"content":" * @return The Task object that has been marked complete.","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yanghengtang"},"content":" public Task mark(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"yanghengtang"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"yanghengtang"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"yanghengtang"},"content":" this.list.get(index).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"yanghengtang"},"content":" return this.list.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"yanghengtang"},"content":" * Update the status of the Task of given index to uncompleted and","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"yanghengtang"},"content":" * returns the Task. If given index is out of bound, returns null.","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"yanghengtang"},"content":" * @param index The index of the Task to be marked incomplete.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"yanghengtang"},"content":" * @return The Task object that has been marked incomplete.","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"yanghengtang"},"content":" public Task unmark(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"yanghengtang"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"yanghengtang"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"yanghengtang"},"content":" this.list.get(index).markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"yanghengtang"},"content":" return this.list.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"yanghengtang"},"content":" * Returns the number of Task in the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"yanghengtang"},"content":" * @return The number of Task in the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"yanghengtang"},"content":" public int size() {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"yanghengtang"},"content":" return this.list.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"yanghengtang"},"content":" public TaskList find(String string) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"yanghengtang"},"content":" ArrayList\u003cTask\u003e filteredList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"yanghengtang"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"yanghengtang"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"yanghengtang"},"content":" if (task.toString().contains(string)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"yanghengtang"},"content":" filteredList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"yanghengtang"},"content":" return new TaskList(filteredList);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":115}},{"path":"src/main/java/duke/util/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represents user interface of the chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" private static final String HORIZONTAL_LINE \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" public Ui () {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * Returns the next line of user input from the user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" * @return Next line of user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" public String nextCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" if (!scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" return \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" * Prints the entry message of the chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" public void printEntryMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":" String entryMessage \u003d HORIZONTAL_LINE","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" + \"Hello! I\u0027m Chad \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"yanghengtang"},"content":" + \"What can I do for you? \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"yanghengtang"},"content":" + HORIZONTAL_LINE;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"yanghengtang"},"content":" System.out.println(entryMessage);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yanghengtang"},"content":" * Prints the exit message of the chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yanghengtang"},"content":" public void printExitMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"yanghengtang"},"content":" String exitMessage \u003d HORIZONTAL_LINE","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"yanghengtang"},"content":" + \"Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"yanghengtang"},"content":" + HORIZONTAL_LINE;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"yanghengtang"},"content":" System.out.println(exitMessage);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yanghengtang"},"content":" * Prints all the String representation of Tasks in a given TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yanghengtang"},"content":" public void printList(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yanghengtang"},"content":" System.out.print(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"yanghengtang"},"content":" System.out.println(taskList.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yanghengtang"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yanghengtang"},"content":" * Prints a message to indicate that a given task has been successfully added.","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yanghengtang"},"content":" * @param task The given Task to be added to the target TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yanghengtang"},"content":" * @param size The size of the target TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yanghengtang"},"content":" public void printAdd(Task task, int size) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"yanghengtang"},"content":" System.out.print(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"yanghengtang"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"yanghengtang"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"yanghengtang"},"content":" * Prints a message to indicate that a given task has been successfully deleted.","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"yanghengtang"},"content":" * @param task The given Task to be deleted from the target TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"yanghengtang"},"content":" * @param size The size of the target TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"yanghengtang"},"content":" public void printDelete(Task task, int size) {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"yanghengtang"},"content":" System.out.print(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"yanghengtang"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"yanghengtang"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"yanghengtang"},"content":" * Prints a message to indicate that a given task has been successfully marked.","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"yanghengtang"},"content":" * @param task The given Task to be marked as completed.","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"yanghengtang"},"content":" public void printMark(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"yanghengtang"},"content":" System.out.print(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"yanghengtang"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"yanghengtang"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"yanghengtang"},"content":" * Prints a message to indicate that a given task has been successfully unmarked.","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"yanghengtang"},"content":" * @param task The given Task to be marked as uncompleted.","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"yanghengtang"},"content":" public void printUnmark(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"yanghengtang"},"content":" System.out.print(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"yanghengtang"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"yanghengtang"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"yanghengtang"},"content":" * Prints the error message from a checked exception thrown.","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"yanghengtang"},"content":" * @param e The Exception thrown from the execution of a method.","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"yanghengtang"},"content":" public void printError(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"yanghengtang"},"content":" System.out.print(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Oops! we encountered an error\");","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"yanghengtang"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"yanghengtang"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"yanghengtang"},"content":" * Prints the error message when the parser cannot find a matching command.","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"yanghengtang"},"content":" public void printCommandNotFound() {","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"yanghengtang"},"content":" System.out.print(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Oops! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"yanghengtang"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"yanghengtang"},"content":" public void printFind(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"yanghengtang"},"content":" System.out.print(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"yanghengtang"},"content":" System.out.print(taskList.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"yanghengtang"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":141}},{"path":"src/test/java/duke/util/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.task.DeadlineException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" public void parseLoadDeadlineTest_standardInput() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" String input \u003d \"D | 0 | return book | 2023-09-11\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" Deadline deadline \u003d new Deadline(\"return book\", LocalDate.parse(\"2023-09-11\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" Assertions.assertEquals(Parser.parseLoadDeadline(input).toString(), deadline.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" public void parseUserDeadlineTest_missingByDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" String input \u003d \"deadline return book\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" Parser.parseUserDeadline(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" } catch (DeadlineException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" Assertions.assertEquals(e.getMessage(), new DeadlineException().getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":31}},{"path":"src/test/java/duke/util/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" public void removeTest_invalidIndex() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" Assertions.assertEquals(taskList.remove(1), null);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" public void markTest_invalidIndex() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" Assertions.assertEquals(taskList.mark(1), null);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":8}},{"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":"yanghengtang"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"yanghengtang":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yanghengtang":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" archiveFileName \u003d \"duke.jar\"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yanghengtang":2,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"T | 1 | read book","lastModifiedDate":"2023-08-29"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"D | 0 | return book | 2023-09-11","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"E | 0 | project meeting | 2023-09-11 | 2023-09-11","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"T | 1 | join sports club","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"yanghengtang":4}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.task.TaskException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" this.taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" this.ui.printEntryMessage();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" String fullCommand \u003d ui.nextCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" c.execute(taskList, ui, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" } catch (TaskException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" ui.addErrorMessage(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":" ui.printMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"yanghengtang"},"content":" };","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"yanghengtang"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"yanghengtang"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":42,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"yanghengtang":40,"-":3}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" * Represents a Add Command to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" private Task task;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to add a Task from a TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList with the Task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to show the status of the adding command.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" taskList.add(this.task);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" ui.addAddMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" ui.addTaskMessage(this.task);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" ui.addTaskListSizeMessage(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":33}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represents commands to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" private boolean exit;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" public Command(boolean exit) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" this.exit \u003d exit;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands associated with the Command object.","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList required for execution of some commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui required for execution of some commands.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage required for execution of some commands.","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" public abstract void execute(TaskList taskList, Ui ui, Storage storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" * Returns a boolean value to indicate if Command object is an exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" * @return True if the Command object is an ExitCommand.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" return this.exit;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":34}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" * Represents a Delete command to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to delete a Task from a TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList with the Task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to show the status of the deletion command.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" Task task \u003d taskList.remove(this.index);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" ui.addDeleteMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" ui.addTaskMessage(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" ui.addTaskListSizeMessage(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":33}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represents an Exit command to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" public ExitCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" super(true);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to exit the chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList associated with the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to show the status of the exit command.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" storage.save(taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" ui.addExitMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":27}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represents a Find command to be executed.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" private String queryString;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" public FindCommand(String queryString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" this.queryString \u003d queryString;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to find a Task from a TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList to be searched on.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to show the status of the finding of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" TaskList filteredTaskList \u003d taskList.find(this.queryString);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" ui.addFindMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" ui.addTaskList(filteredTaskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yanghengtang":31}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" * Represents a Mark command to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to mark a Task from a TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList with the Task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to show the status of the marking of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" Task task \u003d taskList.mark(this.index);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" ui.addMarkMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" ui.addTaskMessage(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" ui.addTaskListSizeMessage(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":33}},{"path":"src/main/java/duke/command/PrintListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represents a Print List command to be executed.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public class PrintListCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" public PrintListCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to print the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList to be printed.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to print the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" ui.addTaskList(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":26}},{"path":"src/main/java/duke/command/UnknownCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represents an unknown command.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public class UnknownCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" public UnknownCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" * Prints the error message indicating an unknown command has been entered.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList associated with the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui used to print the error message.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" ui.addCommandNotFound();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":26}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.command;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.util.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.util.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" * Represents an unmark command to be executed.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" super(false);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" * Executes the list of commands to unmark a Task from a TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList with the Task to be unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @param ui The given Ui to show the status of the unmarking of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" * @param storage The given Storage that saves the TaskList locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" Task task \u003d taskList.unmark(this.index);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" ui.addUnmarkMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" ui.addTaskMessage(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" ui.addTaskListSizeMessage(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":33}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":" * Represents a task with a given deadline.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" protected LocalDate byDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" public Deadline(String description, LocalDate byDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" this.byDate \u003d byDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" * Returns a string representation of the Deadline object.","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * @return String representation of the Deadline object.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" String status \u003d \"[\" + (super.isDone ? \"X\" : \" \") + \"]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" String deadline \u003d \"(by: \" + this.byDate + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" return \"[D]\" + status + \" \" + super.description + \" \" + deadline;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":27}},{"path":"src/main/java/duke/task/DeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":" * Represents an error that occurred during the initialisation of a Deadline object.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"public class DeadlineException extends TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" public DeadlineException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" super(\"Valid Format: deadline (description) /by (YYYY-MM-DD)\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":12}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":" * Represents an event with a given start and end date.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" protected LocalDate fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" protected LocalDate toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" public Event(String description, LocalDate fromDate, LocalDate toDate) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" * Returns a string representation of the Event object.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" * @return String representation of the Event object.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" String status \u003d \"[\" + (this.isDone ? \"X\" : \" \") + \"]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" String duration \u003d \"(from: \" + this.fromDate + \" to: \" + this.toDate + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" return \"[E]\" + status + \" \" + this.description + \" \" + duration;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":29}},{"path":"src/main/java/duke/task/EventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":" * Represents an error that occurred during the initialisation of a Deadline object.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"public class EventException extends TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" public EventException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" super(\"event (description) /from (YYYY-MM-DD) /to (YYYY-MM-DD)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":11}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":" * Represents a task with status indicating its completeness","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" * @return String representation of the task","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" String status \u003d \"[\" + (this.isDone ? \"X\" : \" \") + \"]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" return status + \" \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" * Updates the task status to \u0027completed\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":" * Updates the task status to \u0027uncompleted\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yanghengtang"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"yanghengtang"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"yanghengtang":39}},{"path":"src/main/java/duke/task/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":" * Represents an error that occurred during the initialisation of a Deadline object.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"public class TaskException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" public TaskException(String format) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" super(\"Oops! Invalid input for your task.\\nValid Format: \" + format);","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":11}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":" * Represents a task that is to be done.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" * Returns a string representation of the ToDo object.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" * @return String representation of the ToDo object.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" String status \u003d \"[\" + (super.isDone ? \"X\" : \" \") + \"]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" return \"[T]\" + status + \" \" + super.description;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":21}},{"path":"src/main/java/duke/task/ToDoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":" * Represents an error that occurred during the initialisation of a Deadline object.","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"public class ToDoException extends TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" public ToDoException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" super(\"todo (description)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":11}},{"path":"src/main/java/duke/util/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.command.AddCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":"import duke.command.PrintListCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"import duke.command.UnknownCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"import duke.task.DeadlineException;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":"import duke.task.EventException;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":"import duke.task.TaskException;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":"import duke.task.ToDoException;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" * Converts a given String into Tasks and Commands.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" * Returns a Command with the given instructions.","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" * @param input The given instruction to be parsed.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" * @return Command object that correspond to the given instruction.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" * @throws TaskException if given input is in the wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":" public static Command parse(String input) throws TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"yanghengtang"},"content":" return new PrintListCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"yanghengtang"},"content":" return new MarkCommand(Parser.parseUserMark(input));","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"yanghengtang"},"content":" return new UnmarkCommand(Parser.parseUserUnmark(input));","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"yanghengtang"},"content":" return new DeleteCommand(Parser.parseUserDelete(input));","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"find\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yanghengtang"},"content":" String queryString \u003d Parser.parseUserFind(input);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yanghengtang"},"content":" return new FindCommand(queryString);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"yanghengtang"},"content":" Deadline deadline \u003d Parser.parseUserDeadline(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"yanghengtang"},"content":" return new AddCommand(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"yanghengtang"},"content":" Event event \u003d Parser.parseUserEvent(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"yanghengtang"},"content":" return new AddCommand(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"yanghengtang"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"yanghengtang"},"content":" ToDo todo \u003d Parser.parseUserToDo(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"yanghengtang"},"content":" return new AddCommand(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"yanghengtang"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"yanghengtang"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"yanghengtang"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"yanghengtang"},"content":" return new UnknownCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yanghengtang"},"content":" * Returns a Deadline object based on the information from the local file.","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yanghengtang"},"content":" * @param input The given information from local file.","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yanghengtang"},"content":" * @return Deadline object that correspond to the information given.","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yanghengtang"},"content":" public static Deadline parseLoadDeadline(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"yanghengtang"},"content":" int byIndex \u003d input.indexOf(\u0027|\u0027, 7);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"yanghengtang"},"content":" String description \u003d input.substring(8, byIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"yanghengtang"},"content":" String by \u003d input.substring(byIndex + 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"yanghengtang"},"content":" LocalDate byDate \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"yanghengtang"},"content":" Deadline deadline \u003d new Deadline(description, byDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"yanghengtang"},"content":" if (input.charAt(4) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"yanghengtang"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"yanghengtang"},"content":" return deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"yanghengtang"},"content":" * Returns a Event object based on the information from the local file.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"yanghengtang"},"content":" * @param input The given information from local file.","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"yanghengtang"},"content":" * @return Event object that correspond to the information given.","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"yanghengtang"},"content":" public static Event parseLoadEvent(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"yanghengtang"},"content":" int fromIndex \u003d input.indexOf(\u0027|\u0027, 7);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"yanghengtang"},"content":" int toIndex \u003d input.indexOf(\u0027|\u0027, fromIndex + 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"yanghengtang"},"content":" String description \u003d input.substring(8, fromIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"yanghengtang"},"content":" String from \u003d input.substring(fromIndex + 2, toIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"yanghengtang"},"content":" String to \u003d input.substring(toIndex + 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"yanghengtang"},"content":" LocalDate fromDate \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"yanghengtang"},"content":" LocalDate toDate \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"yanghengtang"},"content":" Event event \u003d new Event(description, fromDate, toDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"yanghengtang"},"content":" if (input.charAt(4) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"yanghengtang"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"yanghengtang"},"content":" return event;","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"yanghengtang"},"content":" * Returns a ToDo object based on the information from the local file.","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"yanghengtang"},"content":" * @param input The given information from local file.","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"yanghengtang"},"content":" * @return ToDo object that correspond to the information given.","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"yanghengtang"},"content":" public static ToDo parseLoadToDo(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"yanghengtang"},"content":" String description \u003d input.substring(8);","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"yanghengtang"},"content":" ToDo todo \u003d new ToDo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"yanghengtang"},"content":" if (input.charAt(4) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"yanghengtang"},"content":" todo.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"yanghengtang"},"content":" return todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"yanghengtang"},"content":" * Returns a Deadline object based on the user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"yanghengtang"},"content":" * @param input The user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"yanghengtang"},"content":" * @return Deadline object that corresponds to the user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"yanghengtang"},"content":" * @throws DeadlineException if given input is missing information or in wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"yanghengtang"},"content":" public static Deadline parseUserDeadline(String input) throws DeadlineException {","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"yanghengtang"},"content":" int byIndex \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 9) {","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"yanghengtang"},"content":" throw new DeadlineException();","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"yanghengtang"},"content":" } else if (byIndex \u003d\u003d -1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"yanghengtang"},"content":" throw new DeadlineException();","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"yanghengtang"},"content":" String description \u003d input.substring(9, byIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"yanghengtang"},"content":" String by \u003d input.substring(byIndex + 4);","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"yanghengtang"},"content":" LocalDate byDate \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"yanghengtang"},"content":" Deadline deadline \u003d new Deadline(description, byDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"yanghengtang"},"content":" return deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":154,"author":{"gitId":"yanghengtang"},"content":" * Returns a Event object based on the user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"yanghengtang"},"content":" * @param input The user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"yanghengtang"},"content":" * @return Event object that corresponds to the user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"yanghengtang"},"content":" * @throws EventException if given input is missing information or in wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"yanghengtang"},"content":" public static Event parseUserEvent(String input) throws EventException {","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"yanghengtang"},"content":" int fromIndex \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"yanghengtang"},"content":" int toIndex \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 6) {","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"yanghengtang"},"content":" throw new EventException();","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"yanghengtang"},"content":" } else if (fromIndex \u003d\u003d -1 || toIndex \u003d\u003d -1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"yanghengtang"},"content":" throw new EventException();","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"yanghengtang"},"content":" } else if (fromIndex \u003e toIndex) {","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"yanghengtang"},"content":" throw new EventException();","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"yanghengtang"},"content":" String description \u003d input.substring(6, fromIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"yanghengtang"},"content":" String from \u003d input.substring(fromIndex + 6, toIndex - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"yanghengtang"},"content":" String to \u003d input.substring(toIndex + 4);","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"yanghengtang"},"content":" LocalDate fromDate \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"yanghengtang"},"content":" LocalDate toDate \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"yanghengtang"},"content":" Event event \u003d new Event(description, fromDate, toDate);","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"yanghengtang"},"content":" return event;","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"yanghengtang"},"content":" * Returns a ToDo object based on the user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"yanghengtang"},"content":" * @param input The user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"yanghengtang"},"content":" * @return ToDo object that corresponds to the user given input.","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"yanghengtang"},"content":" * @throws ToDoException if given input is missing information or in wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"yanghengtang"},"content":" public static ToDo parseUserToDo(String input) throws ToDoException {","lastModifiedDate":"2023-08-30"},{"lineNumber":191,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 5) {","lastModifiedDate":"2023-08-30"},{"lineNumber":192,"author":{"gitId":"yanghengtang"},"content":" throw new ToDoException();","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"yanghengtang"},"content":" ToDo todo \u003d new ToDo(input.substring(5));","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"yanghengtang"},"content":" return todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"yanghengtang"},"content":" * Returns the index of the Task to be mark based on user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"yanghengtang"},"content":" * @param input The given user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"yanghengtang"},"content":" * @return The index of the Task the user wishes to mark.","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"yanghengtang"},"content":" * @throws TaskException if given input is missing information or in wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"yanghengtang"},"content":" public static int parseUserMark(String input) throws TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"yanghengtang"},"content":" int index \u003d Integer.valueOf(input.substring(5)) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 5) {","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"yanghengtang"},"content":" throw new TaskException(\"mark (task number)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":212,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":213,"author":{"gitId":"yanghengtang"},"content":" return index;","lastModifiedDate":"2023-08-30"},{"lineNumber":214,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":215,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":216,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"yanghengtang"},"content":" * Returns the index of Task to be unmark based on user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"yanghengtang"},"content":" * @param input The given user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":220,"author":{"gitId":"yanghengtang"},"content":" * @return The index of the Task the user wishes to unmark.","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"yanghengtang"},"content":" * @throws TaskException if given input is missing information or in wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"yanghengtang"},"content":" public static int parseUserUnmark(String input) throws TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":224,"author":{"gitId":"yanghengtang"},"content":" int index \u003d Integer.valueOf(input.substring(7)) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":225,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":226,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 7) {","lastModifiedDate":"2023-08-30"},{"lineNumber":227,"author":{"gitId":"yanghengtang"},"content":" throw new TaskException(\"unmark (task number)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":228,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":229,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":230,"author":{"gitId":"yanghengtang"},"content":" return index;","lastModifiedDate":"2023-08-30"},{"lineNumber":231,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":232,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":233,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"yanghengtang"},"content":" * Returns the index of the Task to be deleted based on user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":236,"author":{"gitId":"yanghengtang"},"content":" * @param input The given user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":237,"author":{"gitId":"yanghengtang"},"content":" * @return The index of the Task the user wishes to delete.","lastModifiedDate":"2023-08-31"},{"lineNumber":238,"author":{"gitId":"yanghengtang"},"content":" * @throws TaskException if given input is missing information or in wrong format.","lastModifiedDate":"2023-08-31"},{"lineNumber":239,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":240,"author":{"gitId":"yanghengtang"},"content":" public static int parseUserDelete(String input) throws TaskException {","lastModifiedDate":"2023-08-30"},{"lineNumber":241,"author":{"gitId":"yanghengtang"},"content":" int index \u003d Integer.valueOf(input.substring(7)) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":242,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":243,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 7) {","lastModifiedDate":"2023-08-30"},{"lineNumber":244,"author":{"gitId":"yanghengtang"},"content":" throw new TaskException(\"delete (task number)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":245,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":246,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":247,"author":{"gitId":"yanghengtang"},"content":" return index;","lastModifiedDate":"2023-08-30"},{"lineNumber":248,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":249,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":250,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"yanghengtang"},"content":" * Returns the query string to be searched based on user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":252,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"yanghengtang"},"content":" * @param input The given user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"yanghengtang"},"content":" * @return The string the users wishes to search.","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"yanghengtang"},"content":" * @throws TaskException if given input is missing information or in wrong format.","lastModifiedDate":"2023-09-01"},{"lineNumber":256,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"yanghengtang"},"content":" public static String parseUserFind(String input) throws TaskException {","lastModifiedDate":"2023-08-31"},{"lineNumber":258,"author":{"gitId":"yanghengtang"},"content":" if (input.length() \u003c\u003d 5) {","lastModifiedDate":"2023-08-31"},{"lineNumber":259,"author":{"gitId":"yanghengtang"},"content":" throw new TaskException(\"find (query string)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":260,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":261,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":262,"author":{"gitId":"yanghengtang"},"content":" return input.substring(5);","lastModifiedDate":"2023-08-31"},{"lineNumber":263,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":264,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"yanghengtang"},"content":" * Returns the String of the given TaskList in the data file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList to be parsed into data.","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"yanghengtang"},"content":" * @return The String of the given TaskList in the data file format.","lastModifiedDate":"2023-09-01"},{"lineNumber":270,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"yanghengtang"},"content":" public static String parseTaskListToData(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":272,"author":{"gitId":"yanghengtang"},"content":" String input \u003d taskList.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":273,"author":{"gitId":"yanghengtang"},"content":" String newData \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":274,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":275,"author":{"gitId":"yanghengtang"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":276,"author":{"gitId":"yanghengtang"},"content":" int startIndex \u003d input.indexOf((i + 1) + \".\");","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"yanghengtang"},"content":" int endIndex \u003d input.indexOf(\"\\n\", startIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":278,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":279,"author":{"gitId":"yanghengtang"},"content":" String subInput \u003d input.substring(startIndex + 2, endIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":280,"author":{"gitId":"yanghengtang"},"content":" String taskType \u003d String.valueOf(subInput.charAt(1));","lastModifiedDate":"2023-09-01"},{"lineNumber":281,"author":{"gitId":"yanghengtang"},"content":" String status \u003d subInput.charAt(4) \u003d\u003d \u0027X\u0027 ? \"1\" : \"0\";","lastModifiedDate":"2023-09-01"},{"lineNumber":282,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":283,"author":{"gitId":"yanghengtang"},"content":" newData +\u003d taskType + \" | \" + status + \" | \";","lastModifiedDate":"2023-09-01"},{"lineNumber":284,"author":{"gitId":"yanghengtang"},"content":" if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":285,"author":{"gitId":"yanghengtang"},"content":" int byIndex \u003d subInput.indexOf(\"(by:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":286,"author":{"gitId":"yanghengtang"},"content":" int subEndIndex \u003d subInput.indexOf(\")\");","lastModifiedDate":"2023-09-01"},{"lineNumber":287,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":288,"author":{"gitId":"yanghengtang"},"content":" String description \u003d subInput.substring(7, byIndex - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":289,"author":{"gitId":"yanghengtang"},"content":" String by \u003d subInput.substring(byIndex + 5, subEndIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":290,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":291,"author":{"gitId":"yanghengtang"},"content":" newData +\u003d description + \" | \" + by;","lastModifiedDate":"2023-09-01"},{"lineNumber":292,"author":{"gitId":"yanghengtang"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":293,"author":{"gitId":"yanghengtang"},"content":" int fromIndex \u003d subInput.indexOf(\"(from:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":294,"author":{"gitId":"yanghengtang"},"content":" int toIndex \u003d subInput.indexOf(\"to:\", fromIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":295,"author":{"gitId":"yanghengtang"},"content":" int subEndIndex \u003d subInput.indexOf(\")\");","lastModifiedDate":"2023-09-01"},{"lineNumber":296,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":297,"author":{"gitId":"yanghengtang"},"content":" String description \u003d subInput.substring(7, fromIndex - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":298,"author":{"gitId":"yanghengtang"},"content":" String from \u003d subInput.substring(fromIndex + 7, toIndex - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":299,"author":{"gitId":"yanghengtang"},"content":" String to \u003d subInput.substring(toIndex + 4, subEndIndex);","lastModifiedDate":"2023-09-01"},{"lineNumber":300,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":301,"author":{"gitId":"yanghengtang"},"content":" newData +\u003d description + \" | \" + from + \" | \" + to;","lastModifiedDate":"2023-09-01"},{"lineNumber":302,"author":{"gitId":"yanghengtang"},"content":" } else if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":303,"author":{"gitId":"yanghengtang"},"content":" String description \u003d subInput.substring(7);","lastModifiedDate":"2023-09-01"},{"lineNumber":304,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":305,"author":{"gitId":"yanghengtang"},"content":" newData +\u003d description;","lastModifiedDate":"2023-09-01"},{"lineNumber":306,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":307,"author":{"gitId":"yanghengtang"},"content":" newData +\u003d System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":308,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":309,"author":{"gitId":"yanghengtang"},"content":" return newData;","lastModifiedDate":"2023-09-01"},{"lineNumber":310,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":311,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":311}},{"path":"src/main/java/duke/util/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" * Represents a storage for the list of Tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" private File file;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" public Storage(String path) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" this.file \u003d new File(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" if (!this.file.getParentFile().exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" this.file.getParentFile().mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" if (!this.file.exists()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" this.file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Error: Unable to create local file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yanghengtang"},"content":" * Returns an ArrayList of Tasks from local data file.","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yanghengtang"},"content":" * @return ArrayList consisting of Task read from the data file.","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yanghengtang"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"yanghengtang"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"yanghengtang"},"content":" Scanner sc \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"yanghengtang"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"yanghengtang"},"content":" sc \u003d new Scanner(this.file);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"yanghengtang"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Error: Unable to load local file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"yanghengtang"},"content":" while (sc !\u003d null \u0026\u0026 sc.hasNextLine()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"yanghengtang"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"yanghengtang"},"content":" if (input.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"yanghengtang"},"content":" Deadline deadline \u003d Parser.parseLoadDeadline(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"yanghengtang"},"content":" list.add(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"yanghengtang"},"content":" } else if (input.charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"yanghengtang"},"content":" Event event \u003d Parser.parseLoadEvent(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"yanghengtang"},"content":" list.add(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"yanghengtang"},"content":" } else if (input.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"yanghengtang"},"content":" ToDo todo \u003d Parser.parseLoadToDo(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"yanghengtang"},"content":" list.add(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"yanghengtang"},"content":" return list;","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yanghengtang"},"content":" * Save the given TaskList into a local data file.","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList to be saved locally.","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yanghengtang"},"content":" public void save(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"yanghengtang"},"content":" String newData \u003d Parser.parseTaskListToData(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"yanghengtang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"yanghengtang"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"yanghengtang"},"content":" fw.write(newData);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"yanghengtang"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"yanghengtang"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"yanghengtang"},"content":" System.out.println(\"Error: Unable to save list\");","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":85}},{"path":"src/main/java/duke/util/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represent a list consisting of Task objects.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" * Constructs a TaskList with a given ArrayList.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @param list The initial list of Task to be stored in the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" this.list \u003d list;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" * Returns a string representation of the TaskList with individual Task.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" * @return The string representation of the list of Task in the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"yanghengtang"},"content":" String output \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"yanghengtang"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"yanghengtang"},"content":" output +\u003d (i + 1) + \".\"+ list.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"yanghengtang"},"content":" return output;","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yanghengtang"},"content":" * Add a given Task into the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yanghengtang"},"content":" * @param task The given Task to be added into the TaskList","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yanghengtang"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"yanghengtang"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yanghengtang"},"content":" * Removes a Task of the given index and returns the removed Task.","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yanghengtang"},"content":" * If given index is out of bound, returns null.","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yanghengtang"},"content":" * @param index The index of Task to be removed.","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yanghengtang"},"content":" * @return The Task object that has been removed from the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yanghengtang"},"content":" public Task remove(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"yanghengtang"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"yanghengtang"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"yanghengtang"},"content":" return this.list.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yanghengtang"},"content":" * Update the status of the Task of given index to completed and","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yanghengtang"},"content":" * returns the Task. If given index is out of bound, returns null.","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yanghengtang"},"content":" * @param index The index of the Task to be marked complete.","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yanghengtang"},"content":" * @return The Task object that has been marked complete.","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yanghengtang"},"content":" public Task mark(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"yanghengtang"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"yanghengtang"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"yanghengtang"},"content":" this.list.get(index).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"yanghengtang"},"content":" return this.list.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"yanghengtang"},"content":" * Update the status of the Task of given index to uncompleted and","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"yanghengtang"},"content":" * returns the Task. If given index is out of bound, returns null.","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"yanghengtang"},"content":" * @param index The index of the Task to be marked incomplete.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"yanghengtang"},"content":" * @return The Task object that has been marked incomplete.","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"yanghengtang"},"content":" public Task unmark(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"yanghengtang"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"yanghengtang"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"yanghengtang"},"content":" this.list.get(index).markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"yanghengtang"},"content":" return this.list.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"yanghengtang"},"content":" * Returns the number of Task in the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"yanghengtang"},"content":" * @return The number of Task in the TaskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"yanghengtang"},"content":" public int size() {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"yanghengtang"},"content":" return this.list.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"yanghengtang"},"content":" public TaskList find(String string) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"yanghengtang"},"content":" ArrayList\u003cTask\u003e filteredList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"yanghengtang"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"yanghengtang"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"yanghengtang"},"content":" if (task.toString().contains(string)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"yanghengtang"},"content":" filteredList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"yanghengtang"},"content":" return new TaskList(filteredList);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":115}},{"path":"src/main/java/duke/util/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":" * Represents user interface of the chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" private String message;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" private static final String HORIZONTAL_LINE \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" public Ui () {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" this.message \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" * Returns the next line of user input from the user interface.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" * @return Next line of user input.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" public String nextCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" if (!scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" return \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yanghengtang"},"content":" * Prints the entry message of the chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yanghengtang"},"content":" public void printEntryMessage() {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"yanghengtang"},"content":" String entryMessage \u003d HORIZONTAL_LINE","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"yanghengtang"},"content":" + \"Hello! I\u0027m Chad \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"yanghengtang"},"content":" + \"What can I do for you? \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"yanghengtang"},"content":" + HORIZONTAL_LINE;","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"yanghengtang"},"content":" System.out.println(entryMessage);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yanghengtang"},"content":" * Prints the exit message of the chatbot.","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yanghengtang"},"content":" public void addExitMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"yanghengtang"},"content":" this.message \u003d \"Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yanghengtang"},"content":" * Prints the current message in the Ui object and clears the message.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yanghengtang"},"content":" public void printMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"yanghengtang"},"content":" System.out.print(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"yanghengtang"},"content":" System.out.print(this.message);","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"yanghengtang"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"yanghengtang"},"content":" this.message \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yanghengtang"},"content":" * Adds all the String representation of Tasks in a given TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yanghengtang"},"content":" public void addTaskList(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"yanghengtang"},"content":" this.message +\u003d taskList.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yanghengtang"},"content":" * Adds a message to indicate that a given task has been successfully added.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yanghengtang"},"content":" public void addAddMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"yanghengtang"},"content":" this.message +\u003d \"Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"yanghengtang"},"content":" * Adds a message to indicate that a given task has been successfully deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"yanghengtang"},"content":" public void addDeleteMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"yanghengtang"},"content":" this.message +\u003d \"Noted. I\u0027ve removed this task:\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"yanghengtang"},"content":" * Adds a message to indicate that a given task has been successfully marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"yanghengtang"},"content":" public void addMarkMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"yanghengtang"},"content":" this.message +\u003d \"Nice! I\u0027ve marked this task as done:\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"yanghengtang"},"content":" * Adds a message to indicate that a given task has been successfully unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"yanghengtang"},"content":" public void addUnmarkMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"yanghengtang"},"content":" this.message +\u003d \"OK, I\u0027ve marked this task as not done yet:\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"yanghengtang"},"content":" * Add the error message from a given Exeception.","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"yanghengtang"},"content":" * @param e The Exception thrown from the execution of a method.","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"yanghengtang"},"content":" public void addErrorMessage(Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"yanghengtang"},"content":" this.message +\u003d \"Oops! we encountered an error\\n\" + e.getMessage() + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"yanghengtang"},"content":" * Adds the error message when the parser cannot find a matching command.","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"yanghengtang"},"content":" public void addCommandNotFound() {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"yanghengtang"},"content":" this.message +\u003d \"Oops! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"yanghengtang"},"content":" * Adds the message to indicate the find query is successful.","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"yanghengtang"},"content":" public void addFindMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"yanghengtang"},"content":" this.message +\u003d \"Here are the matching tasks in your list:\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"yanghengtang"},"content":" * Adds the String representation of the given Task into the message.","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"yanghengtang"},"content":" * @param task The given Task to be added into the message of the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"yanghengtang"},"content":" public void addTaskMessage(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"yanghengtang"},"content":" this.message +\u003d task.toString() + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"yanghengtang"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"yanghengtang"},"content":" * Adds the message indicating the size of the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"yanghengtang"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"yanghengtang"},"content":" * @param taskList The given TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"yanghengtang"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"yanghengtang"},"content":" public void addTaskListSizeMessage(TaskList taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"yanghengtang"},"content":" this.message +\u003d \"Now you have \" + taskList.size() + \" tasks in the list.\" + \"\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":137}},{"path":"src/test/java/duke/util/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import duke.task.DeadlineException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" public void parseLoadDeadlineTest_standardInput() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" String input \u003d \"D | 0 | return book | 2023-09-11\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" Deadline deadline \u003d new Deadline(\"return book\", LocalDate.parse(\"2023-09-11\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" Assertions.assertEquals(Parser.parseLoadDeadline(input).toString(), deadline.toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"yanghengtang"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"yanghengtang"},"content":" public void parseUserDeadlineTest_missingByDate() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"yanghengtang"},"content":" String input \u003d \"deadline return book\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"yanghengtang"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"yanghengtang"},"content":" Parser.parseUserDeadline(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"yanghengtang"},"content":" fail();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"yanghengtang"},"content":" } catch (DeadlineException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"yanghengtang"},"content":" Assertions.assertEquals(e.getMessage(), new DeadlineException().getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":31}},{"path":"src/test/java/duke/util/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"package duke.util;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"yanghengtang"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"yanghengtang"},"content":" public void removeTest_invalidIndex() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"yanghengtang"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yanghengtang"},"content":" Assertions.assertEquals(taskList.remove(1), null);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yanghengtang"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"yanghengtang"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"yanghengtang"},"content":" public void markTest_invalidIndex() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"yanghengtang"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"yanghengtang"},"content":" Assertions.assertEquals(taskList.mark(1), null);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"yanghengtang"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"yanghengtang"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"yanghengtang":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yanghengtang"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"yanghengtang"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"yanghengtang"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"yanghengtang"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"yanghengtang"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"yanghengtang"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"yanghengtang"},"content":"unmark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yanghengtang"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yanghengtang":8}},{"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":"yanghengtang"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"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":{"yanghengtang":1,"-":20}}] diff --git a/yanghengtang_ip_master/commits.json b/yanghengtang_ip_master/commits.json index 7d029079..a5e423cc 100644 --- a/yanghengtang_ip_master/commits.json +++ b/yanghengtang_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yanghengtang":[{"date":"2023-08-23","commitResults":[{"hash":"20327e71b207efe08c151112b8bcbb38c2ac7ad7","isMergeCommit":false,"messageTitle":"Implement initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"6754bdb695a6a302631fdc6632636c23b68130f7","isMergeCommit":false,"messageTitle":"Implement Echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"f8d2529cc061b3c6e60be0bda9a0a88c72ec5567","isMergeCommit":false,"messageTitle":"Implement Add, List functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"8538f65f679f5d9e7b54848e026e17ae02f24731","isMergeCommit":false,"messageTitle":"Add Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"b6d19c4af013b59eaea2d07c9bcf70e94a8b129a","isMergeCommit":false,"messageTitle":"Update Duke.java to use Task class","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":3}}}]},{"date":"2023-08-24","commitResults":[{"hash":"57f4473a1721cf95b1740b85d05c558b2de190f0","isMergeCommit":false,"messageTitle":"Fix List output format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"9218d109b24b6f2fe381404c80c62ea247241f59","isMergeCommit":false,"messageTitle":"Add Deadline.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"0ebec01bef06324c7402b8286269e19d7fe6c2a1","isMergeCommit":false,"messageTitle":"Add Event.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"5b3bc2f71f48e0d6a77b4ca9b99de8d6c3596be8","isMergeCommit":false,"messageTitle":"Add ToDo.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"210ad0fbb6ddb5164a7c8319572c377645c28f66","isMergeCommit":false,"messageTitle":"Update Duke.java to handle ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"140e1ce225ce95d0988a993e5030eb4e1d745ed4","isMergeCommit":false,"messageTitle":"Fix Duke.java Scanner bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":9}}},{"hash":"9f866c821f32ff3678e26144fe8fe8c9dc1fca58","isMergeCommit":false,"messageTitle":"Fix Duke exit message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"601d921516c073a72b1720fe0a34ff169934d541","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"cbd8222e7f0a502daa90b65913ecf531b3352438","isMergeCommit":false,"messageTitle":"Add error handling for invalid action input","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"054c80756c3c81f5ec60be50ecc795b9179795b8","isMergeCommit":false,"messageTitle":"Add error handling for adding ToDo task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":7}}},{"hash":"9b9482101c67974b0a7377e1ea1ee2a1f73208cb","isMergeCommit":false,"messageTitle":"Add error handling for adding Event task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":11}}},{"hash":"853d0076a24c98420002ff3654003aa03bab91dd","isMergeCommit":false,"messageTitle":"Fix task counter bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"6f77c95dc24caf8bf4106b451d5f01cd791629c8","isMergeCommit":false,"messageTitle":"Add error handling for adding Deadline task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":9}}},{"hash":"deecb0642bf4a49e861906d17269b94a7e73ad38","isMergeCommit":false,"messageTitle":"Add error handling for Mark and Unmark action","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":12}}},{"hash":"e29f60fbf2320b3ea2d07bc38194c875170c12f0","isMergeCommit":false,"messageTitle":"Update error messages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"2abd8682fed83709edf5b781b0442d120dc565f1","isMergeCommit":false,"messageTitle":"Update parsing of string of Event and Deadline task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"0b9e85ebf5a2e40102068b4309ef5c147c256e86","isMergeCommit":false,"messageTitle":"Update error messages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"787d474528d64fde92d6cc446948e7f0f697312e","isMergeCommit":false,"messageTitle":"Add Delete functionality for List","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"6f12dc7b445104c2908d73341639e3bb6d7a4ff4","isMergeCommit":false,"messageTitle":"Refactor Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":65}}},{"hash":"4ebba5c116a607019c4164109be051d7555e77b6","isMergeCommit":false,"messageTitle":"Add DeadlineException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"80869f804c3db3eda285691b18d7034d4c763885","isMergeCommit":false,"messageTitle":"Add EventException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"9b06ce8efeb962640c58d6135b2688960eac9401","isMergeCommit":false,"messageTitle":"Add TaskException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"a0bdad0c27209592058347d5c30e1598167397d5","isMergeCommit":false,"messageTitle":"Add ToDoException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"5bbe27cf12edc58281dc72fc046413d8d952b6ac","isMergeCommit":false,"messageTitle":"Update error handling in Duke","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":33}}}]},{"date":"2023-08-29","commitResults":[{"hash":"5cd49af0832e4d3f67e62d88c9c1803f02bea131","isMergeCommit":false,"messageTitle":"Add duke.txt data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"016d3c344d0a6641a39e40933e8a088246f3b1fe","isMergeCommit":false,"messageTitle":"Add load file functionality for Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":1}}},{"hash":"f46bb857470e44e1bb8b0e803411cf73364b9d24","isMergeCommit":false,"messageTitle":"Add save file functionality for Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":0}}},{"hash":"e957ab5612c6611b974abc51f4e14be68da5844a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"e87d150e2f0fbe73aacd89a4f7559d6e2234d140","isMergeCommit":false,"messageTitle":"Update Deadline.java to handle LocalDate type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}},{"hash":"4a8bfce6c7dde624aced23fdd74726eb78dbdc0d","isMergeCommit":false,"messageTitle":"Update Event.java to handle LocalDate type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":3}}},{"hash":"af319e1550aa1d0682ad3537719b9e5704bbcb07","isMergeCommit":false,"messageTitle":"Update Duke.java to handle LocalDate type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":4}}},{"hash":"f4ad4bacdb063359689bf2c57040180be64f0598","isMergeCommit":false,"messageTitle":"Update data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2}}},{"hash":"9c7902836cd921d4e649133a765555de16ae6413","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"5fac1d5b5ea3edd6208432c465dc5b6426a68e3e","isMergeCommit":false,"messageTitle":"Add Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":0}}},{"hash":"3972c8a5c4cdc405375d92e2c702a8da52de229e","isMergeCommit":false,"messageTitle":"Add Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":0}}},{"hash":"163c7a3a4da6a56806a220b0f103ca4506d3f868","isMergeCommit":false,"messageTitle":"Add TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":0}}},{"hash":"892caff61a9d5fa8a8cba44179c99898bef5b65d","isMergeCommit":false,"messageTitle":"Add Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":0}}},{"hash":"aae0821594104547ec8559a81e85f8d8030ac021","isMergeCommit":false,"messageTitle":"Refactor Duke.java to work with new classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":266}}},{"hash":"efc96e203adc91f211542c4640e0f6d64c323b99","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"207b5985e7266afec08ec37a4d18a908c47a7ddb","isMergeCommit":false,"messageTitle":"Refactor into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":2},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"d4df8a4c5e2fa68ffe0622697d20847bbb1628fa","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"3e465623a89bd7fd7d1db2c7072fcb4c8c9a449c","isMergeCommit":false,"messageTitle":"Add Command.java abstract class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"d27a1a500891acb20f684a4173c409266c4b4044","isMergeCommit":false,"messageTitle":"Add AddCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"65cb3c3488c09ce827441c78e1b8fe510804f5e4","isMergeCommit":false,"messageTitle":"Add DeleteCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"950f1c5cb2e8c9c34e13561f29e2d87f5e5816c7","isMergeCommit":false,"messageTitle":"Add ExitCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"593a5407cf42c795bb995a96be68d742ae6a4d0f","isMergeCommit":false,"messageTitle":"Add MarkCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"e53597da6d8eb9b796b4539d79b5dfac0bf2732c","isMergeCommit":false,"messageTitle":"Add PrintListCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"36ba877bffa1b57ecd77088c1af88d1fdeee3edc","isMergeCommit":false,"messageTitle":"Add UnknownCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"6fa7666d6dd5190ceba2afacaeb5c25730f8e114","isMergeCommit":false,"messageTitle":"Add UnmarkCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"bd54fd66e306674143847852380f02cfaf1cd3ec","isMergeCommit":false,"messageTitle":"Refactor Duke.java to include Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":60}}},{"hash":"a7a82a7f48ca14c3eb36528b626726aee8d7424c","isMergeCommit":false,"messageTitle":"Refactor Parser.java to include Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":18}}},{"hash":"5fd12676f93af58af6d63d0aff1d4efd8177771d","isMergeCommit":false,"messageTitle":"Refactor Ui.java to include Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"00585ad282357ddc1f9f86d00a09c0ba287936d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fcb17f5c24da05155d726c3d0af032cabbdb744d","isMergeCommit":false,"messageTitle":"Update data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"ac06ba66da5c832b5825a6f9ed9ffe02ec599a84","isMergeCommit":false,"messageTitle":"Update mainClass name in build.gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"362fe543357d28db29177e0e6dfe29f37bd9644c","isMergeCommit":false,"messageTitle":"Update DeadlineException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":5}}},{"hash":"9df34f8b459387a051b1528ca5332b0d9b5c10ec","isMergeCommit":false,"messageTitle":"Update EventException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":5}}},{"hash":"6065bfc8d6037c70919674fd468a06d2faf30e43","isMergeCommit":false,"messageTitle":"Update TaskException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":3}}},{"hash":"a504bc7155566383f3346388c274f08e84703b30","isMergeCommit":false,"messageTitle":"Update ToDoException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":5}}},{"hash":"03c3ba16459eb8ba80fb604dcb010ac09ab04bf2","isMergeCommit":false,"messageTitle":"Update Parser.java to handle new Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}},{"hash":"6846ccfe712ba9a537507c1db2a62cd016399be9","isMergeCommit":false,"messageTitle":"Update TaskList.java to handle out of bound index","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"62890f31182d77862ea9309f1d2659b562fd0aa7","isMergeCommit":false,"messageTitle":"Add ParserTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"0afca73c3568eb6dfce50acc0fb4926beaad58c1","isMergeCommit":false,"messageTitle":"Add TaskListTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"7c7366acffb7c040eebf05ec3fe6b7161681910a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"ab2dbdb1498199ca50d4f0ac553b359ad743cf90","isMergeCommit":false,"messageTitle":"Update build.gradle jar shadowJar archiveFileName","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"49d7382750bfce869bd2dc078dc56bad80246933","isMergeCommit":false,"messageTitle":"Add Javadocs for AddCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"a3646e6560d6c37b89d3cef53d4dc045169f107e","isMergeCommit":false,"messageTitle":"Add Javadocs for Command.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"ae994113739ee13eeb103e5eacb50acfdbc31b6b","isMergeCommit":false,"messageTitle":"Add Javadocs for DeleteCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"b7ff26d4966442778219d743e41f31ad7b6c4960","isMergeCommit":false,"messageTitle":"Add Javadocs for ExitCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"9824d9ba54e9989a2a9de8c23d6013feac7eb647","isMergeCommit":false,"messageTitle":"Add Javadocs for MarkCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"a87b5f52c2af5f55b8d92392b16e5d2588e610d1","isMergeCommit":false,"messageTitle":"Add Javadocs for PrintListCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"888712b05c0ca24d811028aa3b9257899d4c77ab","isMergeCommit":false,"messageTitle":"Add Javadocs for UnknownCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"4c1511eb52986f2995c95fc57ec70312e7bbdf20","isMergeCommit":false,"messageTitle":"Add Javadocs for UnmarkCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"d9c1b4b64d333f00b46fd096ccd4e669f820cac8","isMergeCommit":false,"messageTitle":"Add Javadocs for Deadline.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"d96e1031829f7b03774aa86c13d64636fc3b8322","isMergeCommit":false,"messageTitle":"Add Javadocs for DeadlineException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"f7e66f0e2de9387a2ca70fd72c249ff9173340f6","isMergeCommit":false,"messageTitle":"Add Javadocs for Event.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"dcf8376ca6d565fa8cbc3b98ef6c61d1dfc3ac8f","isMergeCommit":false,"messageTitle":"Add Javadocs for EventException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"c79fa5156a98b6e4904a5400eb5021922fd220bc","isMergeCommit":false,"messageTitle":"Add Javadocs for TaskException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"f39efd520554c770fc5d05513df5372bc4f303a4","isMergeCommit":false,"messageTitle":"Add Javadocs for ToDoException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"94ee101c8a771544eddc3d82d52f5f426294ce2f","isMergeCommit":false,"messageTitle":"Add Javadocs for Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"b5fd67aa1bc052543d37f823620232d7c179b87f","isMergeCommit":false,"messageTitle":"Add Javadocs for ToDo.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"d1cb44e639836c18d77aa4e3ae664159bdc1c4e0","isMergeCommit":false,"messageTitle":"Add Javadocs for Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":0}}},{"hash":"05583419ef1ce6d48c81dabf2080377529e2ad24","isMergeCommit":false,"messageTitle":"Add Javadocs for Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"1293f5453fb4976b025b02527f456ebafbf6468a","isMergeCommit":false,"messageTitle":"Add Javadocs for TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":0}}},{"hash":"ecd5941b52ff6583e7ef14bd9db210474a60a84e","isMergeCommit":false,"messageTitle":"Add Javadocs for Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":0}}},{"hash":"05a6aafa0e443f108afad2b91e3b992d74690b1a","isMergeCommit":false,"messageTitle":"Update AddCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"ec214f11606f47055ac36cc9fcc20192881594d4","isMergeCommit":false,"messageTitle":"Update Command.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ef5bc7c149376a1e0dda9360787a6b04a10bb07c","isMergeCommit":false,"messageTitle":"Update DeleteCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"9fd117c28c5ce262c497e66fcf856110bc7d6c49","isMergeCommit":false,"messageTitle":"Update ExitCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"ef04bc73bb3559f9eaa8d50fcc541f706bdba851","isMergeCommit":false,"messageTitle":"Update MarkCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"76b9b086e35451e6de312cfa9b7f8f6b0a5f0cb9","isMergeCommit":false,"messageTitle":"Update PrintListCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"148d9208b4da7f4768e5dacbfcf0c7d4fcec0dcc","isMergeCommit":false,"messageTitle":"Update UnknownCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b853aab3f33a05726e60c735f97f0f927474675c","isMergeCommit":false,"messageTitle":"Update UnmarkCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"fc7a3b2cce96b377ed4906c7bdd71de2fa32b408","isMergeCommit":false,"messageTitle":"Update Deadline.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"c5a90220a82ecbce770b1dd73de0c6d3d1fd3b42","isMergeCommit":false,"messageTitle":"Update Event.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"4a2bd1714ed8eb62fae68d48d545020b48cdf005","isMergeCommit":false,"messageTitle":"Update ToDo.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"2eab95b970dcdd60b8f6567d576ba590fa9eae59","isMergeCommit":false,"messageTitle":"Update Parser.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}},{"hash":"1e30fd4b3614c26d0fbc10f393ca1bbca248819d","isMergeCommit":false,"messageTitle":"Update Storage.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"2233e288a6b6fd0750c0bb1d5c3783de93dd03c9","isMergeCommit":false,"messageTitle":"Update Ui.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"13a06be6256aeae96b6c3a16abd691fb82b80164","isMergeCommit":false,"messageTitle":"Update Duke.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"c3edf3be7450cb244e9ac3c4832cb4b9d70d24fd","isMergeCommit":false,"messageTitle":"Add support for Find command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"fa064a6e422a5ddd275afd6f2537d3b223d46d20","isMergeCommit":false,"messageTitle":"Add FindCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"f107019dc5ca1bfbf596d209c9946611dd039b8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"61b2f75dc2055e9eb5bec98dd72915340daa081b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"e0f01c3bce42534bc07b93f7f962b4d9c53d6953","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"902750d7176aeb036cee4f764888d23874687af5","isMergeCommit":false,"messageTitle":"Fix missing import statement bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"569f2044a5f685f69f98c0b1ee249f3112733bcf","isMergeCommit":false,"messageTitle":"Add functionality to check and create file or directory if not found","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"6fea9057d1cdfb677ae44b97cbf92cffd6bb02d3","isMergeCommit":false,"messageTitle":"Update JavaDoc for AddCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"265faa34aa3483b3f2114d6f6aadbeb76c4e038d","isMergeCommit":false,"messageTitle":"Update JavaDoc for Command.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"87f1f7fc9aed4885f68da8ef2f9ddd7a12b2f19f","isMergeCommit":false,"messageTitle":"Update JavaDoc for DeleteCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cd8f803e4070ae5c20bcc3179f44cc0981bb3632","isMergeCommit":false,"messageTitle":"Update JavaDoc for ExitCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"4e4c49c22aa9254e75fb470ccb3d8d70f8af3e25","isMergeCommit":false,"messageTitle":"Add JavaDoc for FindCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":3}}},{"hash":"4da3b1fbf28778ea6c27d6e174440c556921e489","isMergeCommit":false,"messageTitle":"Update JavaDoc for MarkCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"0d28b83dde236917bcfe2a94ade5c02cc7af15d1","isMergeCommit":false,"messageTitle":"Update JavaDoc for PrintListCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"da03f5d44dda9f5ef5a65d5e88e75fb905aafdba","isMergeCommit":false,"messageTitle":"Update JavaDoc for UnknownCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"c8168f5d3f214563a672283504a9338cc824bd77","isMergeCommit":false,"messageTitle":"Update JavaDoc for UnmarkCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"yanghengtang":{"java":1153,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":12}},"authorContributionVariance":{"yanghengtang":97314.77},"authorDisplayNameMap":{"yanghengtang":"CS2103T-T08-1 TANG..HENG"}} +{"authorDailyContributionsMap":{"yanghengtang":[{"date":"2023-08-23","commitResults":[{"hash":"20327e71b207efe08c151112b8bcbb38c2ac7ad7","isMergeCommit":false,"messageTitle":"Implement initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"6754bdb695a6a302631fdc6632636c23b68130f7","isMergeCommit":false,"messageTitle":"Implement Echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"f8d2529cc061b3c6e60be0bda9a0a88c72ec5567","isMergeCommit":false,"messageTitle":"Implement Add, List functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"8538f65f679f5d9e7b54848e026e17ae02f24731","isMergeCommit":false,"messageTitle":"Add Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"b6d19c4af013b59eaea2d07c9bcf70e94a8b129a","isMergeCommit":false,"messageTitle":"Update Duke.java to use Task class","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":3}}}]},{"date":"2023-08-24","commitResults":[{"hash":"57f4473a1721cf95b1740b85d05c558b2de190f0","isMergeCommit":false,"messageTitle":"Fix List output format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"9218d109b24b6f2fe381404c80c62ea247241f59","isMergeCommit":false,"messageTitle":"Add Deadline.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"0ebec01bef06324c7402b8286269e19d7fe6c2a1","isMergeCommit":false,"messageTitle":"Add Event.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"5b3bc2f71f48e0d6a77b4ca9b99de8d6c3596be8","isMergeCommit":false,"messageTitle":"Add ToDo.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"210ad0fbb6ddb5164a7c8319572c377645c28f66","isMergeCommit":false,"messageTitle":"Update Duke.java to handle ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"140e1ce225ce95d0988a993e5030eb4e1d745ed4","isMergeCommit":false,"messageTitle":"Fix Duke.java Scanner bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":9}}},{"hash":"9f866c821f32ff3678e26144fe8fe8c9dc1fca58","isMergeCommit":false,"messageTitle":"Fix Duke exit message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"601d921516c073a72b1720fe0a34ff169934d541","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"cbd8222e7f0a502daa90b65913ecf531b3352438","isMergeCommit":false,"messageTitle":"Add error handling for invalid action input","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"054c80756c3c81f5ec60be50ecc795b9179795b8","isMergeCommit":false,"messageTitle":"Add error handling for adding ToDo task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":7}}},{"hash":"9b9482101c67974b0a7377e1ea1ee2a1f73208cb","isMergeCommit":false,"messageTitle":"Add error handling for adding Event task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":11}}},{"hash":"853d0076a24c98420002ff3654003aa03bab91dd","isMergeCommit":false,"messageTitle":"Fix task counter bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"6f77c95dc24caf8bf4106b451d5f01cd791629c8","isMergeCommit":false,"messageTitle":"Add error handling for adding Deadline task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":9}}},{"hash":"deecb0642bf4a49e861906d17269b94a7e73ad38","isMergeCommit":false,"messageTitle":"Add error handling for Mark and Unmark action","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":12}}},{"hash":"e29f60fbf2320b3ea2d07bc38194c875170c12f0","isMergeCommit":false,"messageTitle":"Update error messages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"2abd8682fed83709edf5b781b0442d120dc565f1","isMergeCommit":false,"messageTitle":"Update parsing of string of Event and Deadline task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"0b9e85ebf5a2e40102068b4309ef5c147c256e86","isMergeCommit":false,"messageTitle":"Update error messages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"787d474528d64fde92d6cc446948e7f0f697312e","isMergeCommit":false,"messageTitle":"Add Delete functionality for List","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"6f12dc7b445104c2908d73341639e3bb6d7a4ff4","isMergeCommit":false,"messageTitle":"Refactor Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":65}}},{"hash":"4ebba5c116a607019c4164109be051d7555e77b6","isMergeCommit":false,"messageTitle":"Add DeadlineException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"80869f804c3db3eda285691b18d7034d4c763885","isMergeCommit":false,"messageTitle":"Add EventException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"9b06ce8efeb962640c58d6135b2688960eac9401","isMergeCommit":false,"messageTitle":"Add TaskException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"a0bdad0c27209592058347d5c30e1598167397d5","isMergeCommit":false,"messageTitle":"Add ToDoException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"5bbe27cf12edc58281dc72fc046413d8d952b6ac","isMergeCommit":false,"messageTitle":"Update error handling in Duke","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":33}}}]},{"date":"2023-08-29","commitResults":[{"hash":"5cd49af0832e4d3f67e62d88c9c1803f02bea131","isMergeCommit":false,"messageTitle":"Add duke.txt data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"016d3c344d0a6641a39e40933e8a088246f3b1fe","isMergeCommit":false,"messageTitle":"Add load file functionality for Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":1}}},{"hash":"f46bb857470e44e1bb8b0e803411cf73364b9d24","isMergeCommit":false,"messageTitle":"Add save file functionality for Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":0}}},{"hash":"e957ab5612c6611b974abc51f4e14be68da5844a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"e87d150e2f0fbe73aacd89a4f7559d6e2234d140","isMergeCommit":false,"messageTitle":"Update Deadline.java to handle LocalDate type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}},{"hash":"4a8bfce6c7dde624aced23fdd74726eb78dbdc0d","isMergeCommit":false,"messageTitle":"Update Event.java to handle LocalDate type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":3}}},{"hash":"af319e1550aa1d0682ad3537719b9e5704bbcb07","isMergeCommit":false,"messageTitle":"Update Duke.java to handle LocalDate type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":4}}},{"hash":"f4ad4bacdb063359689bf2c57040180be64f0598","isMergeCommit":false,"messageTitle":"Update data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2}}},{"hash":"9c7902836cd921d4e649133a765555de16ae6413","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"5fac1d5b5ea3edd6208432c465dc5b6426a68e3e","isMergeCommit":false,"messageTitle":"Add Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":0}}},{"hash":"3972c8a5c4cdc405375d92e2c702a8da52de229e","isMergeCommit":false,"messageTitle":"Add Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":0}}},{"hash":"163c7a3a4da6a56806a220b0f103ca4506d3f868","isMergeCommit":false,"messageTitle":"Add TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":0}}},{"hash":"892caff61a9d5fa8a8cba44179c99898bef5b65d","isMergeCommit":false,"messageTitle":"Add Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":0}}},{"hash":"aae0821594104547ec8559a81e85f8d8030ac021","isMergeCommit":false,"messageTitle":"Refactor Duke.java to work with new classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":266}}},{"hash":"efc96e203adc91f211542c4640e0f6d64c323b99","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"207b5985e7266afec08ec37a4d18a908c47a7ddb","isMergeCommit":false,"messageTitle":"Refactor into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":2},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"d4df8a4c5e2fa68ffe0622697d20847bbb1628fa","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"3e465623a89bd7fd7d1db2c7072fcb4c8c9a449c","isMergeCommit":false,"messageTitle":"Add Command.java abstract class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"d27a1a500891acb20f684a4173c409266c4b4044","isMergeCommit":false,"messageTitle":"Add AddCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"65cb3c3488c09ce827441c78e1b8fe510804f5e4","isMergeCommit":false,"messageTitle":"Add DeleteCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"950f1c5cb2e8c9c34e13561f29e2d87f5e5816c7","isMergeCommit":false,"messageTitle":"Add ExitCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"593a5407cf42c795bb995a96be68d742ae6a4d0f","isMergeCommit":false,"messageTitle":"Add MarkCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"e53597da6d8eb9b796b4539d79b5dfac0bf2732c","isMergeCommit":false,"messageTitle":"Add PrintListCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"36ba877bffa1b57ecd77088c1af88d1fdeee3edc","isMergeCommit":false,"messageTitle":"Add UnknownCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"6fa7666d6dd5190ceba2afacaeb5c25730f8e114","isMergeCommit":false,"messageTitle":"Add UnmarkCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"bd54fd66e306674143847852380f02cfaf1cd3ec","isMergeCommit":false,"messageTitle":"Refactor Duke.java to include Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":60}}},{"hash":"a7a82a7f48ca14c3eb36528b626726aee8d7424c","isMergeCommit":false,"messageTitle":"Refactor Parser.java to include Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":18}}},{"hash":"5fd12676f93af58af6d63d0aff1d4efd8177771d","isMergeCommit":false,"messageTitle":"Refactor Ui.java to include Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"00585ad282357ddc1f9f86d00a09c0ba287936d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fcb17f5c24da05155d726c3d0af032cabbdb744d","isMergeCommit":false,"messageTitle":"Update data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"ac06ba66da5c832b5825a6f9ed9ffe02ec599a84","isMergeCommit":false,"messageTitle":"Update mainClass name in build.gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"362fe543357d28db29177e0e6dfe29f37bd9644c","isMergeCommit":false,"messageTitle":"Update DeadlineException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":5}}},{"hash":"9df34f8b459387a051b1528ca5332b0d9b5c10ec","isMergeCommit":false,"messageTitle":"Update EventException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":5}}},{"hash":"6065bfc8d6037c70919674fd468a06d2faf30e43","isMergeCommit":false,"messageTitle":"Update TaskException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":3}}},{"hash":"a504bc7155566383f3346388c274f08e84703b30","isMergeCommit":false,"messageTitle":"Update ToDoException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":5}}},{"hash":"03c3ba16459eb8ba80fb604dcb010ac09ab04bf2","isMergeCommit":false,"messageTitle":"Update Parser.java to handle new Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}},{"hash":"6846ccfe712ba9a537507c1db2a62cd016399be9","isMergeCommit":false,"messageTitle":"Update TaskList.java to handle out of bound index","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"62890f31182d77862ea9309f1d2659b562fd0aa7","isMergeCommit":false,"messageTitle":"Add ParserTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"0afca73c3568eb6dfce50acc0fb4926beaad58c1","isMergeCommit":false,"messageTitle":"Add TaskListTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"7c7366acffb7c040eebf05ec3fe6b7161681910a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"ab2dbdb1498199ca50d4f0ac553b359ad743cf90","isMergeCommit":false,"messageTitle":"Update build.gradle jar shadowJar archiveFileName","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"49d7382750bfce869bd2dc078dc56bad80246933","isMergeCommit":false,"messageTitle":"Add Javadocs for AddCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"a3646e6560d6c37b89d3cef53d4dc045169f107e","isMergeCommit":false,"messageTitle":"Add Javadocs for Command.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"ae994113739ee13eeb103e5eacb50acfdbc31b6b","isMergeCommit":false,"messageTitle":"Add Javadocs for DeleteCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"b7ff26d4966442778219d743e41f31ad7b6c4960","isMergeCommit":false,"messageTitle":"Add Javadocs for ExitCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"9824d9ba54e9989a2a9de8c23d6013feac7eb647","isMergeCommit":false,"messageTitle":"Add Javadocs for MarkCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"a87b5f52c2af5f55b8d92392b16e5d2588e610d1","isMergeCommit":false,"messageTitle":"Add Javadocs for PrintListCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"888712b05c0ca24d811028aa3b9257899d4c77ab","isMergeCommit":false,"messageTitle":"Add Javadocs for UnknownCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"4c1511eb52986f2995c95fc57ec70312e7bbdf20","isMergeCommit":false,"messageTitle":"Add Javadocs for UnmarkCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"d9c1b4b64d333f00b46fd096ccd4e669f820cac8","isMergeCommit":false,"messageTitle":"Add Javadocs for Deadline.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"d96e1031829f7b03774aa86c13d64636fc3b8322","isMergeCommit":false,"messageTitle":"Add Javadocs for DeadlineException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"f7e66f0e2de9387a2ca70fd72c249ff9173340f6","isMergeCommit":false,"messageTitle":"Add Javadocs for Event.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"dcf8376ca6d565fa8cbc3b98ef6c61d1dfc3ac8f","isMergeCommit":false,"messageTitle":"Add Javadocs for EventException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"c79fa5156a98b6e4904a5400eb5021922fd220bc","isMergeCommit":false,"messageTitle":"Add Javadocs for TaskException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"f39efd520554c770fc5d05513df5372bc4f303a4","isMergeCommit":false,"messageTitle":"Add Javadocs for ToDoException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"94ee101c8a771544eddc3d82d52f5f426294ce2f","isMergeCommit":false,"messageTitle":"Add Javadocs for Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"b5fd67aa1bc052543d37f823620232d7c179b87f","isMergeCommit":false,"messageTitle":"Add Javadocs for ToDo.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"d1cb44e639836c18d77aa4e3ae664159bdc1c4e0","isMergeCommit":false,"messageTitle":"Add Javadocs for Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":0}}},{"hash":"05583419ef1ce6d48c81dabf2080377529e2ad24","isMergeCommit":false,"messageTitle":"Add Javadocs for Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"1293f5453fb4976b025b02527f456ebafbf6468a","isMergeCommit":false,"messageTitle":"Add Javadocs for TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":0}}},{"hash":"ecd5941b52ff6583e7ef14bd9db210474a60a84e","isMergeCommit":false,"messageTitle":"Add Javadocs for Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":0}}},{"hash":"05a6aafa0e443f108afad2b91e3b992d74690b1a","isMergeCommit":false,"messageTitle":"Update AddCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"ec214f11606f47055ac36cc9fcc20192881594d4","isMergeCommit":false,"messageTitle":"Update Command.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ef5bc7c149376a1e0dda9360787a6b04a10bb07c","isMergeCommit":false,"messageTitle":"Update DeleteCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"9fd117c28c5ce262c497e66fcf856110bc7d6c49","isMergeCommit":false,"messageTitle":"Update ExitCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"ef04bc73bb3559f9eaa8d50fcc541f706bdba851","isMergeCommit":false,"messageTitle":"Update MarkCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"76b9b086e35451e6de312cfa9b7f8f6b0a5f0cb9","isMergeCommit":false,"messageTitle":"Update PrintListCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"148d9208b4da7f4768e5dacbfcf0c7d4fcec0dcc","isMergeCommit":false,"messageTitle":"Update UnknownCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b853aab3f33a05726e60c735f97f0f927474675c","isMergeCommit":false,"messageTitle":"Update UnmarkCommand.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"fc7a3b2cce96b377ed4906c7bdd71de2fa32b408","isMergeCommit":false,"messageTitle":"Update Deadline.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"c5a90220a82ecbce770b1dd73de0c6d3d1fd3b42","isMergeCommit":false,"messageTitle":"Update Event.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"4a2bd1714ed8eb62fae68d48d545020b48cdf005","isMergeCommit":false,"messageTitle":"Update ToDo.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"2eab95b970dcdd60b8f6567d576ba590fa9eae59","isMergeCommit":false,"messageTitle":"Update Parser.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}},{"hash":"1e30fd4b3614c26d0fbc10f393ca1bbca248819d","isMergeCommit":false,"messageTitle":"Update Storage.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"2233e288a6b6fd0750c0bb1d5c3783de93dd03c9","isMergeCommit":false,"messageTitle":"Update Ui.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"13a06be6256aeae96b6c3a16abd691fb82b80164","isMergeCommit":false,"messageTitle":"Update Duke.java code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"c3edf3be7450cb244e9ac3c4832cb4b9d70d24fd","isMergeCommit":false,"messageTitle":"Add support for Find command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"fa064a6e422a5ddd275afd6f2537d3b223d46d20","isMergeCommit":false,"messageTitle":"Add FindCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"f107019dc5ca1bfbf596d209c9946611dd039b8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"61b2f75dc2055e9eb5bec98dd72915340daa081b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"e0f01c3bce42534bc07b93f7f962b4d9c53d6953","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"902750d7176aeb036cee4f764888d23874687af5","isMergeCommit":false,"messageTitle":"Fix missing import statement bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"569f2044a5f685f69f98c0b1ee249f3112733bcf","isMergeCommit":false,"messageTitle":"Add functionality to check and create file or directory if not found","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"6fea9057d1cdfb677ae44b97cbf92cffd6bb02d3","isMergeCommit":false,"messageTitle":"Update JavaDoc for AddCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"265faa34aa3483b3f2114d6f6aadbeb76c4e038d","isMergeCommit":false,"messageTitle":"Update JavaDoc for Command.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"87f1f7fc9aed4885f68da8ef2f9ddd7a12b2f19f","isMergeCommit":false,"messageTitle":"Update JavaDoc for DeleteCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cd8f803e4070ae5c20bcc3179f44cc0981bb3632","isMergeCommit":false,"messageTitle":"Update JavaDoc for ExitCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"4e4c49c22aa9254e75fb470ccb3d8d70f8af3e25","isMergeCommit":false,"messageTitle":"Add JavaDoc for FindCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":3}}},{"hash":"4da3b1fbf28778ea6c27d6e174440c556921e489","isMergeCommit":false,"messageTitle":"Update JavaDoc for MarkCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"0d28b83dde236917bcfe2a94ade5c02cc7af15d1","isMergeCommit":false,"messageTitle":"Update JavaDoc for PrintListCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"da03f5d44dda9f5ef5a65d5e88e75fb905aafdba","isMergeCommit":false,"messageTitle":"Update JavaDoc for UnknownCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"c8168f5d3f214563a672283504a9338cc824bd77","isMergeCommit":false,"messageTitle":"Update JavaDoc for UnmarkCommand.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"02c7b22f054bcdd9edbdeae9260b042091966772","isMergeCommit":false,"messageTitle":"Update JavaDoc for Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"4b70119980a3e3225b0f23a6cbd0352392eb667d","isMergeCommit":false,"messageTitle":"Refactor Parser and Storage for parsing of TaskList to data","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":36}}},{"hash":"efdb44c1f64b69d252d9c270c0b5e7a74a646513","isMergeCommit":false,"messageTitle":"Update Ui.java logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":61}}},{"hash":"7f58cca295b3499eadb59bdb86b1b2f02e98b9d7","isMergeCommit":false,"messageTitle":"Refactor to work with updated Ui logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":11}}},{"hash":"ca5212f9cbe7574b920a63614b362ae292733aa4","isMergeCommit":false,"messageTitle":"Update error handling for FileNotFoundException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":14}}}]}]},"authorFileTypeContributionMap":{"yanghengtang":{"java":1176,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":12}},"authorContributionVariance":{"yanghengtang":97606.68},"authorDisplayNameMap":{"yanghengtang":"CS2103T-T08-1 TANG..HENG"}} diff --git a/yihfei_ip_master/authorship.json b/yihfei_ip_master/authorship.json index bb09b12b..cc8b3e58 100644 --- a/yihfei_ip_master/authorship.json +++ b/yihfei_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Haste.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"import commands.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"import data.Storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"public class Haste {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":" public Haste(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" Haste haste \u003d new Haste(\"./Data.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" // greet and check for storage files","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" haste.load();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" haste.run();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" haste.end();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" while (ui.running) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" String cmd \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" //System.out.println(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" Parser.handleCommand(cmd, ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":" public void load() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yihfei"},"content":" this.ui.greet();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yihfei"},"content":" this.storage.read(this.ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"yihfei"},"content":" public void end() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yihfei"},"content":" this.storage.delete();","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yihfei"},"content":" this.storage.save();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yihfei":44}},{"path":"src/main/java/commands/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package commands;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import exceptions.EmptyTaskException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"import exceptions.InvalidCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"import tasks.Event;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"import tasks.ToDo;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" // used to handle type of tasks","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" public static void handleCommand(String cmd, Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" if (cmd.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" ui.bye();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" //online \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" } else if (cmd.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" // print list","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" ui.printList();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":" } else if (cmd.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" ui.mark(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" } else if (cmd.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" ui.unmark(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" } else if (cmd.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" ui.delete(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" // add task to list","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":" String type \u003d cmd.split(\"\\\\s+\")[0]; // grab the first word","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":" Task newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yihfei"},"content":" // get a new task","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yihfei"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yihfei"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yihfei"},"content":" newTask \u003d ToDo.interpret(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yihfei"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yihfei"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yihfei"},"content":" newTask \u003d Deadline.interpret(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yihfei"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yihfei"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yihfei"},"content":" newTask \u003d Event.interpret(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yihfei"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yihfei"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yihfei"},"content":" throw new InvalidCommand(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yihfei"},"content":" // add new task using ui","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yihfei"},"content":" ui.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yihfei"},"content":" } catch(EmptyTaskException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yihfei"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yihfei"},"content":" } catch(InvalidCommand e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yihfei"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"yihfei"},"content":" public static LocalDateTime parseTime(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yihfei"},"content":" // formatting","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yihfei"},"content":" String formatPattern \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yihfei"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(formatPattern);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yihfei"},"content":" LocalDateTime parsedTime \u003d LocalDateTime.parse(input, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yihfei"},"content":" return parsedTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yihfei"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yihfei"},"content":" System.out.println(\"Date Time should be in yyyy-MM-dd HHmm format!\\ndefault time used\\n\" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yihfei"},"content":" return LocalDateTime.of(2000, 1, 1, 0, 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"yihfei"},"content":" public static String formatTime(LocalDateTime input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"yihfei"},"content":" // format time into a string object","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"yihfei"},"content":" String year \u003d String.valueOf(input.getYear());","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"yihfei"},"content":" String month \u003d input.getMonth().toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"yihfei"},"content":" String day \u003d String.valueOf(input.getDayOfMonth());","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"yihfei"},"content":" int hourAndTime \u003d input.getHour() * 100 + input.getMinute();","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"yihfei"},"content":" int min \u003d input.getMinute();","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"yihfei"},"content":" return hourAndTime \u003c 1000","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"yihfei"},"content":" ? month + \" \" + day + \" \" + year + \" 0\" + (hourAndTime)","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"yihfei"},"content":" : month + \" \" + day + \" \" + year + \" \" + (hourAndTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"yihfei"},"content":" public static String getCmd(LocalDateTime savedTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"yihfei"},"content":" int year \u003d savedTime.getYear();","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"yihfei"},"content":" String month \u003d savedTime.getMonthValue() \u003e\u003d 10 ? String.valueOf(savedTime.getMonthValue())","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"yihfei"},"content":" : \"0\" + savedTime.getMonthValue();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"yihfei"},"content":" int day \u003d savedTime.getDayOfMonth();","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"yihfei"},"content":" String hourAndTime \u003d savedTime.getHour() \u003e\u003d 10 ? String.valueOf(savedTime.getHour() * 100 + savedTime.getMinute())","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"yihfei"},"content":" : \"0\" + (savedTime.getHour() * 100 + savedTime.getMinute());","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"yihfei"},"content":" return year + \"-\" + month + \"-\" + day + \" \" + hourAndTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yihfei":98}},{"path":"src/main/java/data/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package data;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import commands.Parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"import ui.Ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":" // create data file","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" private final String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" create();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" public void create() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":" this.file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" System.out.println(\"error creating file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yihfei"},"content":" // read data file","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yihfei"},"content":" public void read(Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yihfei"},"content":" Scanner scanner \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yihfei"},"content":" if (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yihfei"},"content":" System.out.println(\"loading tasks from saved files...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yihfei"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yihfei"},"content":" String cmd \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yihfei"},"content":" Parser.handleCommand(cmd, ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yihfei"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yihfei"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yihfei"},"content":" // add one line to text file","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yihfei"},"content":" public void write(String line) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yihfei"},"content":" FileWriter writer \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yihfei"},"content":" writer.write(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yihfei"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yihfei"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yihfei"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yihfei"},"content":" public void save() {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yihfei"},"content":" create();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yihfei"},"content":" for (Task task: TaskList.taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yihfei"},"content":" write(task.getCmd() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yihfei"},"content":" public void delete() {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yihfei"},"content":" file.delete();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yihfei":71}},{"path":"src/main/java/data/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package data;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import exceptions.EmptyTaskException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"import exceptions.InvalidCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"public class TaskList {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":" public static final ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":" // number tracker","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" public static int numOfTasks \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" // adds task into task list","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":" public static void addTask(Task newTask) throws InvalidCommand, EmptyTaskException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" taskList.add(newTask);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" numOfTasks++;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" public static void deleteTask(int id) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" taskList.remove(id);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" numOfTasks--;","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" public static int getNumOfTasks() {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" return numOfTasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" public static Task getTask(int id) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" return taskList.get(id);","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"yihfei":33}},{"path":"src/main/java/exceptions/EmptyTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"public class EmptyTaskException extends Exception {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":" public EmptyTaskException(String task) {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":" super(\"Description of \" + task + \" cannot be empty!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"yihfei":8}},{"path":"src/main/java/exceptions/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"public class InvalidCommand extends Exception {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":" public InvalidCommand(String cmd) {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":" super(cmd + \" is an invalid command!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"yihfei":7}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import commands.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"import exceptions.EmptyTaskException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" return \"[D]\" + super.toString() + \" (by: \" + Parser.formatTime(this.by) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" public static Deadline interpret(String cmd) throws EmptyTaskException {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" Pattern pt \u003d Pattern.compile(\"deadline(( (.*) )?/by( (.*))?)?\");","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" Matcher mt \u003d pt.matcher(cmd);","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" mt.find();","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" // check if there is any text after deadline","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" String overall \u003d mt.group(1);","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" // grab desc","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" String desc \u003d mt.group(3);","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" // and the due date/time","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" LocalDateTime due \u003d Parser.parseTime(mt.group(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" if (Task.checkEmpty(overall)|| Task.checkEmpty(desc)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":" throw new EmptyTaskException(\"tasks.Deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"yihfei"},"content":" return new Deadline(desc, due);","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"yihfei"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"yihfei"},"content":" public String getCmd() {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"yihfei"},"content":" return \"deadline \" + super.description + \" /by \" + Parser.getCmd(this.by);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yihfei":42}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import commands.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"import exceptions.EmptyTaskException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" return \"[E]\" + super.toString() + \" (from: \" + Parser.formatTime(this.start) + \" to: \" + Parser.formatTime(this.end) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" public static Event interpret(String cmd) throws EmptyTaskException {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" Pattern pt \u003d Pattern.compile(\"event(( (.*) )?/from( (.*) )?/to( (.*))?)?\");","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":" Matcher mt \u003d pt.matcher(cmd);","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" mt.find();","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" String overall \u003d mt.group(1);","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" String desc \u003d mt.group(3);","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" LocalDateTime start \u003d Parser.parseTime(mt.group(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" LocalDateTime end \u003d Parser.parseTime(mt.group(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" if (Task.checkEmpty(overall) || Task.checkEmpty(desc)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" throw new EmptyTaskException(\"tasks.Event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":" return new Event(desc, start, end);","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"yihfei"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"yihfei"},"content":" public String getCmd() {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"yihfei"},"content":" return \"event \" + super.description + \" /from \" + Parser.getCmd(this.start) + \" /to \"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yihfei"},"content":" + Parser.getCmd(this.end);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yihfei":42}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":" protected boolean isComplete;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":" public Task(String description){","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" isComplete \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" isComplete \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" return (isComplete ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" public static boolean checkEmpty(String s) {","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" return s \u003d\u003d null || s.isBlank();","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" public abstract String getCmd();","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yihfei":34}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import exceptions.EmptyTaskException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" public static ToDo interpret(String cmd) throws EmptyTaskException {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" Pattern pt \u003d Pattern.compile(\"todo( (.+))?\"); // ( ...)? is optional group","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" Matcher mt \u003d pt.matcher(cmd);","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" mt.find();","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" String desc \u003d mt.group(2);","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" if (Task.checkEmpty(desc)) { // check if desc is null","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" throw new EmptyTaskException(\"tasks.ToDo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":" return new ToDo(desc);","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" public String getCmd() {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" return \"todo \" + super.description;","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"yihfei":32}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"import exceptions.EmptyTaskException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"import exceptions.InvalidCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"import tasks.Task;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"import static java.lang.Integer.parseInt;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":" public static final String LINE \u003d \"____________________________________________\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":" public static final String INDENT \u003d \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" public boolean running \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" // print a string (including multiple lines) with indent and lines top and bottom","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" public static void formatPrint(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" String[] lines \u003d input.split(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" for (String line : lines) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" System.out.println(INDENT + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" public void greet() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" formatPrint(\"Hello! I\u0027m HASTE\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" // read file and update task list","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" public void bye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" formatPrint(\"Bye. Hope to see you again!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" // end prog","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":" this.running \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yihfei"},"content":" public void mark(String cmd) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yihfei"},"content":" int id \u003d parseInt(cmd.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yihfei"},"content":" Task currTask \u003d TaskList.taskList.get(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yihfei"},"content":" currTask.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yihfei"},"content":" formatPrint(\"Nice! I\u0027ve marked this task as done:\\n\" + currTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yihfei"},"content":" public void unmark(String cmd) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yihfei"},"content":" int id \u003d parseInt(cmd.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yihfei"},"content":" Task currTask \u003d TaskList.taskList.get(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yihfei"},"content":" currTask.markUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yihfei"},"content":" formatPrint(\"Okay, I\u0027ve marked this task as not done:\\n\" + currTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yihfei"},"content":" public void delete(String cmd) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yihfei"},"content":" int id \u003d parseInt(cmd.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yihfei"},"content":" // to do : fix order (delete task to be in front?)","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yihfei"},"content":" String taskDesc \u003d TaskList.taskList.get(id).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yihfei"},"content":" TaskList.deleteTask(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yihfei"},"content":" formatPrint(\"Noted. I\u0027ve removed this task\\n\" + taskDesc + \"\\nNow you have \" + TaskList.getNumOfTasks() + \" tasks in the list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yihfei"},"content":" public void add(Task newTask) throws InvalidCommand, EmptyTaskException {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yihfei"},"content":" TaskList.addTask(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"yihfei"},"content":" String taskDesc \u003d TaskList.getTask(TaskList.getNumOfTasks() - 1).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yihfei"},"content":" Ui.formatPrint(\"Got it. I\u0027ve added this task:\\n\" + taskDesc + \"\\nNow you have \" + TaskList.getNumOfTasks() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yihfei"},"content":" public void printList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yihfei"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yihfei"},"content":" for (Task x : TaskList.taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yihfei"},"content":" System.out.println(INDENT + (TaskList.taskList.indexOf(x) + 1) + \". \" + x);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yihfei"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yihfei":72}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"event project meeting /from 2023-02-21 1600 /to 2023-02-21 1700","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"deadline return book /by 2023-06-11 0900","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"delete 2","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yihfei":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":"yihfei"},"content":"java -classpath ../bin Haste \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":{"yihfei":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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" mainClass.set(\"Haste\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yihfei":1,"-":41}},{"path":"src/main/java/haste/Haste.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package haste;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import haste.commands.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"import haste.data.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"import haste.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"public class Haste {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" public Haste(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" Haste haste \u003d new Haste(\"./Data.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" // greet and check for storage files","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" haste.load();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" haste.run();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" haste.end();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" while (ui.running) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" String cmd \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" //System.out.println(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" Parser.handleCommand(cmd, ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"yihfei"},"content":" public void load() {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yihfei"},"content":" this.ui.greet();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yihfei"},"content":" this.storage.read(this.ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"yihfei"},"content":" public void end() {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yihfei"},"content":" this.storage.delete();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yihfei"},"content":" this.storage.save();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yihfei":46}},{"path":"src/main/java/haste/commands/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package haste.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import haste.exceptions.EmptyTaskException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"import haste.exceptions.InvalidCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"import haste.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"import haste.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"import haste.tasks.ToDo;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"import haste.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"import haste.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" // used to handle type of tasks","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" public static void handleCommand(String cmd, Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" if (cmd.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" ui.bye();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" //online \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" } else if (cmd.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" // print list","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" ui.printList();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":" } else if (cmd.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" ui.mark(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" System.out.println(\"task does not exist\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" } else if (cmd.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":" ui.unmark(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"yihfei"},"content":" System.out.println(\"task does not exist\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"yihfei"},"content":" } else if (cmd.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"yihfei"},"content":" ui.delete(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yihfei"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"yihfei"},"content":" System.out.println(\"task does not exist\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"yihfei"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yihfei"},"content":" // add task to list","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yihfei"},"content":" String type \u003d cmd.split(\"\\\\s+\")[0]; // grab the first word","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yihfei"},"content":" Task newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yihfei"},"content":" // get a new task","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yihfei"},"content":" switch (type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yihfei"},"content":" case \"todo\":","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yihfei"},"content":" newTask \u003d ToDo.interpret(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yihfei"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yihfei"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yihfei"},"content":" newTask \u003d Deadline.interpret(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yihfei"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yihfei"},"content":" case \"event\":","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yihfei"},"content":" newTask \u003d Event.interpret(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yihfei"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yihfei"},"content":" default:","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"yihfei"},"content":" throw new InvalidCommand(cmd);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yihfei"},"content":" // add new task using ui","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yihfei"},"content":" ui.add(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yihfei"},"content":" } catch(EmptyTaskException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yihfei"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yihfei"},"content":" } catch(InvalidCommand e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yihfei"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yihfei"},"content":" public static LocalDateTime parseTime(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"yihfei"},"content":" // formatting","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"yihfei"},"content":" String formatPattern \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"yihfei"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(formatPattern);","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"yihfei"},"content":" LocalDateTime parsedTime \u003d LocalDateTime.parse(input, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"yihfei"},"content":" return parsedTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"yihfei"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"yihfei"},"content":" System.out.println(\"Date Time should be in yyyy-MM-dd HHmm format!\\ndefault time used\\n\" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"yihfei"},"content":" return LocalDateTime.of(2000, 1, 1, 0, 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"yihfei"},"content":" public static String formatTime(LocalDateTime input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"yihfei"},"content":" // format time into a string object","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"yihfei"},"content":" String year \u003d String.valueOf(input.getYear());","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"yihfei"},"content":" String month \u003d input.getMonth().toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"yihfei"},"content":" String day \u003d String.valueOf(input.getDayOfMonth());","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"yihfei"},"content":" int hourAndTime \u003d input.getHour() * 100 + input.getMinute();","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"yihfei"},"content":" int min \u003d input.getMinute();","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"yihfei"},"content":" return hourAndTime \u003c 1000","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"yihfei"},"content":" ? month + \" \" + day + \" \" + year + \" 0\" + (hourAndTime)","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"yihfei"},"content":" : month + \" \" + day + \" \" + year + \" \" + (hourAndTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"yihfei"},"content":" public static String getCmd(LocalDateTime savedTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"yihfei"},"content":" int year \u003d savedTime.getYear();","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"yihfei"},"content":" String month \u003d savedTime.getMonthValue() \u003e\u003d 10 ? String.valueOf(savedTime.getMonthValue())","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"yihfei"},"content":" : \"0\" + savedTime.getMonthValue();","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"yihfei"},"content":" int day \u003d savedTime.getDayOfMonth();","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"yihfei"},"content":" String hourAndTime \u003d savedTime.getHour() \u003e\u003d 10 ? String.valueOf(savedTime.getHour() * 100 + savedTime.getMinute())","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"yihfei"},"content":" : \"0\" + (savedTime.getHour() * 100 + savedTime.getMinute());","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"yihfei"},"content":" return year + \"-\" + month + \"-\" + day + \" \" + hourAndTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yihfei":111}},{"path":"src/main/java/haste/data/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package haste.data;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import haste.commands.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"import haste.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"import haste.ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":" // create data file","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" private final String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" create();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" public void create() {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":" this.file \u003d new File(this.filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" System.out.println(\"error creating file\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yihfei"},"content":" // read data file","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yihfei"},"content":" public void read(Ui ui) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yihfei"},"content":" Scanner scanner \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yihfei"},"content":" if (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yihfei"},"content":" System.out.println(\"loading tasks from saved files...\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yihfei"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yihfei"},"content":" String cmd \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yihfei"},"content":" Parser.handleCommand(cmd, ui);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yihfei"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yihfei"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yihfei"},"content":" // add one line to text file","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yihfei"},"content":" public void write(String line) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yihfei"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yihfei"},"content":" FileWriter writer \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yihfei"},"content":" writer.write(line);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yihfei"},"content":" writer.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yihfei"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yihfei"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yihfei"},"content":" public void save() {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yihfei"},"content":" create();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yihfei"},"content":" for (Task task: TaskList.taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yihfei"},"content":" write(task.getCmd() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yihfei"},"content":" public void delete() {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yihfei"},"content":" file.delete();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yihfei":71}},{"path":"src/main/java/haste/data/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package haste.data;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import haste.exceptions.EmptyTaskException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"import haste.exceptions.InvalidCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"import haste.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"public class TaskList {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":" public static final ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":" // number tracker","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" public static int numOfTasks \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" // adds task into task list","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":" public static void addTask(Task newTask) throws InvalidCommand, EmptyTaskException {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" taskList.add(newTask);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" numOfTasks++;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" public static void deleteTask(int id) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" taskList.remove(id);","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" numOfTasks--;","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" public static int getNumOfTasks() {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" return numOfTasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" public static Task getTask(int id) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" return taskList.get(id);","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"yihfei":33}},{"path":"src/main/java/haste/exceptions/EmptyTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package haste.exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"public class EmptyTaskException extends Exception {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":" public EmptyTaskException(String task) {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":" super(\"Description of \" + task + \" cannot be empty!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"yihfei":8}},{"path":"src/main/java/haste/exceptions/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package haste.exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"public class InvalidCommand extends Exception {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":" public InvalidCommand(String cmd) {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":" super(cmd + \" is an invalid command!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"yihfei":7}},{"path":"src/main/java/haste/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package haste.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import haste.commands.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"import haste.exceptions.EmptyTaskException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" return \"[D]\" + super.toString() + \" (by: \" + Parser.formatTime(this.by) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" public static Deadline interpret(String cmd) throws EmptyTaskException {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" Pattern pt \u003d Pattern.compile(\"deadline(( (.*) )?/by( (.*))?)?\");","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" Matcher mt \u003d pt.matcher(cmd);","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" mt.find();","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" // check if there is any text after deadline","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" String overall \u003d mt.group(1);","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" // grab desc","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" String desc \u003d mt.group(3);","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" // and the due date/time","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" LocalDateTime due \u003d Parser.parseTime(mt.group(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" if (Task.checkEmpty(overall)|| Task.checkEmpty(desc)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":" throw new EmptyTaskException(\"tasks.Deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"yihfei"},"content":" return new Deadline(desc, due);","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":37,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"yihfei"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"yihfei"},"content":" public String getCmd() {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"yihfei"},"content":" return \"deadline \" + super.description + \" /by \" + Parser.getCmd(this.by);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yihfei":42}},{"path":"src/main/java/haste/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package haste.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import haste.commands.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"import haste.exceptions.EmptyTaskException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" return \"[E]\" + super.toString() + \" (from: \" + Parser.formatTime(this.start) + \" to: \" + Parser.formatTime(this.end) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" public static Event interpret(String cmd) throws EmptyTaskException {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" Pattern pt \u003d Pattern.compile(\"event(( (.*) )?/from( (.*) )?/to( (.*))?)?\");","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":" Matcher mt \u003d pt.matcher(cmd);","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" mt.find();","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" String overall \u003d mt.group(1);","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" String desc \u003d mt.group(3);","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" LocalDateTime start \u003d Parser.parseTime(mt.group(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" LocalDateTime end \u003d Parser.parseTime(mt.group(7));","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" if (Task.checkEmpty(overall) || Task.checkEmpty(desc)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" throw new EmptyTaskException(\"tasks.Event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":" return new Event(desc, start, end);","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":36,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"yihfei"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"yihfei"},"content":" public String getCmd() {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"yihfei"},"content":" return \"event \" + super.description + \" /from \" + Parser.getCmd(this.start) + \" /to \"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yihfei"},"content":" + Parser.getCmd(this.end);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yihfei":42}},{"path":"src/main/java/haste/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package haste.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":" protected boolean isComplete;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":" public Task(String description){","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" isComplete \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" isComplete \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" return (isComplete ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" public static boolean checkEmpty(String s) {","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" return s \u003d\u003d null || s.isBlank();","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" public abstract String getCmd();","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yihfei":34}},{"path":"src/main/java/haste/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package haste.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"import haste.exceptions.EmptyTaskException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" public static ToDo interpret(String cmd) throws EmptyTaskException {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":" Pattern pt \u003d Pattern.compile(\"todo( (.+))?\"); // ( ...)? is optional group","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":" Matcher mt \u003d pt.matcher(cmd);","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" mt.find();","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" String desc \u003d mt.group(2);","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" if (Task.checkEmpty(desc)) { // check if desc is null","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" throw new EmptyTaskException(\"tasks.ToDo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":" return new ToDo(desc);","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" public String getCmd() {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" return \"todo \" + super.description;","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"yihfei":32}},{"path":"src/main/java/haste/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"package haste.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"import haste.data.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"import haste.exceptions.EmptyTaskException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"import haste.exceptions.InvalidCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"import haste.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yihfei"},"content":"import static java.lang.Integer.parseInt;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yihfei"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yihfei"},"content":" public static final String LINE \u003d \"____________________________________________\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yihfei"},"content":" public static final String INDENT \u003d \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yihfei"},"content":" public boolean running \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yihfei"},"content":" // print a string (including multiple lines) with indent and lines top and bottom","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yihfei"},"content":" public static void formatPrint(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yihfei"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yihfei"},"content":" String[] lines \u003d input.split(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yihfei"},"content":" for (String line : lines) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yihfei"},"content":" System.out.println(INDENT + line);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yihfei"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yihfei"},"content":" public void greet() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yihfei"},"content":" formatPrint(\"Hello! I\u0027m HASTE\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yihfei"},"content":" // read file and update task list","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yihfei"},"content":" public void bye() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yihfei"},"content":" formatPrint(\"Bye. Hope to see you again!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yihfei"},"content":" // end prog","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yihfei"},"content":" this.running \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yihfei"},"content":" public void mark(String cmd) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yihfei"},"content":" int id \u003d parseInt(cmd.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yihfei"},"content":" Task currTask \u003d TaskList.taskList.get(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yihfei"},"content":" currTask.markDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yihfei"},"content":" formatPrint(\"Nice! I\u0027ve marked this task as done:\\n\" + currTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yihfei"},"content":" public void unmark(String cmd) {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yihfei"},"content":" int id \u003d parseInt(cmd.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yihfei"},"content":" Task currTask \u003d TaskList.taskList.get(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yihfei"},"content":" currTask.markUndone();","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yihfei"},"content":" formatPrint(\"Okay, I\u0027ve marked this task as not done:\\n\" + currTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yihfei"},"content":" public void delete(String cmd) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yihfei"},"content":" int id \u003d parseInt(cmd.split(\" \")[1]) - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yihfei"},"content":" // to do : fix order (delete task to be in front?)","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yihfei"},"content":" String taskDesc \u003d TaskList.taskList.get(id).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yihfei"},"content":" TaskList.deleteTask(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yihfei"},"content":" formatPrint(\"Noted. I\u0027ve removed this task\\n\" + taskDesc + \"\\nNow you have \" + TaskList.getNumOfTasks() + \" tasks in the list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"yihfei"},"content":" public void add(Task newTask) throws InvalidCommand, EmptyTaskException {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yihfei"},"content":" TaskList.addTask(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yihfei"},"content":" String taskDesc \u003d TaskList.getTask(TaskList.getNumOfTasks() - 1).toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yihfei"},"content":" Ui.formatPrint(\"Got it. I\u0027ve added this task:\\n\" + taskDesc + \"\\nNow you have \" + TaskList.getNumOfTasks() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yihfei"},"content":" public void printList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yihfei"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yihfei"},"content":" for (Task x : TaskList.taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yihfei"},"content":" System.out.println(INDENT + (TaskList.taskList.indexOf(x) + 1) + \". \" + x);","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yihfei"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yihfei"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yihfei"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"yihfei"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yihfei":74}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yihfei"},"content":"event project meeting /from 2023-02-21 1600 /to 2023-02-21 1700","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"yihfei"},"content":"deadline return book /by 2023-06-11 0900","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"yihfei"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"yihfei"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"yihfei"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"yihfei"},"content":"delete 2","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"yihfei"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yihfei"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"yihfei"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yihfei":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":"yihfei"},"content":"java -classpath ../bin Haste \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":{"yihfei":1,"-":37}}] diff --git a/yihfei_ip_master/commits.json b/yihfei_ip_master/commits.json index 9b766d50..f7c945b5 100644 --- a/yihfei_ip_master/commits.json +++ b/yihfei_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yihfei":[{"date":"2023-08-23","commitResults":[{"hash":"fcc6b26f747d5e8e313199db12cf106a4126f54d","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"10abfe9ae2caf99c7306e17dbe399892281108e9","isMergeCommit":false,"messageTitle":"Level 1, 2, 3","messageBody":"","tags":["Level-3","Level-2","Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":14}}},{"hash":"64af43f3a74952dc60fbfaf56c5255969a4ced03","isMergeCommit":false,"messageTitle":"level 4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":8}}},{"hash":"cb3297d2eb94834841f322670e9c57dee24dc809","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":8}}},{"hash":"160aa75183ebbe0b4ac4febcccb824852bb83c36","isMergeCommit":false,"messageTitle":"A-TextUiTesting and minor formatting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":61,"deletions":23},"sh":{"insertions":1,"deletions":1}}},{"hash":"be53780f0d31f925781a3160c31b082146ec1818","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:yihfei/ip","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-25","commitResults":[{"hash":"dec99c59c692d2050de3cb3a1a920212c37a6c1d","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":50}}},{"hash":"d2fd980dfeadd915283587253cfd579cda05b42a","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":38,"deletions":29}}}]},{"date":"2023-08-29","commitResults":[{"hash":"eb070ee316eb13265d12c6a5250db572c5c4acf4","isMergeCommit":false,"messageTitle":"Add TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":44}}},{"hash":"76dda8a429ea325c7546ba7134c5fd60d38814ee","isMergeCommit":false,"messageTitle":"Add save functionality to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":17}}},{"hash":"4b4195de5af9c12437ab268c8a185dade579c8f6","isMergeCommit":false,"messageTitle":"Change TaskList to handle missing data file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"6e678c4e3bac7c457b3dd236aaf690d3be1e577c","isMergeCommit":true,"messageTitle":"Merge level 7 branch with master branch","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"188c067c90d29dac420155d53791bfcad1799caf","isMergeCommit":false,"messageTitle":"Add TimeParser class to handle Strings of date and time","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":63,"deletions":14}}},{"hash":"d5cd5c60c707c01c4d94b6f7321eb61fc530b711","isMergeCommit":true,"messageTitle":"Merge branch-level-8 to master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"bf532376c0852740f77d57a7d0d63fd53b684727","isMergeCommit":false,"messageTitle":"Add Ui and Parser classes to handle user interactions and commands respectively","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":163,"deletions":135}}},{"hash":"368db40bcc18a47119f26c9ffbb089d65eb5b375","isMergeCommit":false,"messageTitle":"Add Storage class and organise packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":100}}},{"hash":"4370075ea03aef483f1c3889711b9af28dacb89c","isMergeCommit":true,"messageTitle":"Merge branch-oop to master","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"284c5155310938c80b1c773f2670be9b695942be","isMergeCommit":false,"messageTitle":"Organise packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":8}}},{"hash":"6d51538aa73b7c6d243b377ed3c01a89957c908f","isMergeCommit":true,"messageTitle":"Merge branch-packages to master","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yihfei":{"java":483,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"yihfei":27657.314},"authorDisplayNameMap":{"yihfei":"CS2103T-F10-4 LIM .. FEI"}} +{"authorDailyContributionsMap":{"yihfei":[{"date":"2023-08-23","commitResults":[{"hash":"fcc6b26f747d5e8e313199db12cf106a4126f54d","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"10abfe9ae2caf99c7306e17dbe399892281108e9","isMergeCommit":false,"messageTitle":"Level 1, 2, 3","messageBody":"","tags":["Level-3","Level-2","Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":14}}},{"hash":"64af43f3a74952dc60fbfaf56c5255969a4ced03","isMergeCommit":false,"messageTitle":"level 4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":8}}},{"hash":"cb3297d2eb94834841f322670e9c57dee24dc809","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":8}}},{"hash":"160aa75183ebbe0b4ac4febcccb824852bb83c36","isMergeCommit":false,"messageTitle":"A-TextUiTesting and minor formatting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":61,"deletions":23},"sh":{"insertions":1,"deletions":1}}},{"hash":"be53780f0d31f925781a3160c31b082146ec1818","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:yihfei/ip","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-25","commitResults":[{"hash":"dec99c59c692d2050de3cb3a1a920212c37a6c1d","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":50}}},{"hash":"d2fd980dfeadd915283587253cfd579cda05b42a","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":38,"deletions":29}}}]},{"date":"2023-08-29","commitResults":[{"hash":"eb070ee316eb13265d12c6a5250db572c5c4acf4","isMergeCommit":false,"messageTitle":"Add TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":44}}},{"hash":"76dda8a429ea325c7546ba7134c5fd60d38814ee","isMergeCommit":false,"messageTitle":"Add save functionality to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":17}}},{"hash":"4b4195de5af9c12437ab268c8a185dade579c8f6","isMergeCommit":false,"messageTitle":"Change TaskList to handle missing data file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"6e678c4e3bac7c457b3dd236aaf690d3be1e577c","isMergeCommit":true,"messageTitle":"Merge level 7 branch with master branch","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"188c067c90d29dac420155d53791bfcad1799caf","isMergeCommit":false,"messageTitle":"Add TimeParser class to handle Strings of date and time","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":63,"deletions":14}}},{"hash":"d5cd5c60c707c01c4d94b6f7321eb61fc530b711","isMergeCommit":true,"messageTitle":"Merge branch-level-8 to master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"bf532376c0852740f77d57a7d0d63fd53b684727","isMergeCommit":false,"messageTitle":"Add Ui and Parser classes to handle user interactions and commands respectively","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":163,"deletions":135}}},{"hash":"368db40bcc18a47119f26c9ffbb089d65eb5b375","isMergeCommit":false,"messageTitle":"Add Storage class and organise packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":100}}},{"hash":"4370075ea03aef483f1c3889711b9af28dacb89c","isMergeCommit":true,"messageTitle":"Merge branch-oop to master","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"284c5155310938c80b1c773f2670be9b695942be","isMergeCommit":false,"messageTitle":"Organise packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":8}}},{"hash":"6d51538aa73b7c6d243b377ed3c01a89957c908f","isMergeCommit":true,"messageTitle":"Merge branch-packages to master","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"2bcac05cdfd06a59bc47d8d36153818c792b2f50","isMergeCommit":true,"messageTitle":"Merge master to add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fa7409e2f8a6d1ed768a509cd9ea6f19bfc5fce7","isMergeCommit":false,"messageTitle":"Add gradle with basic run functionality","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"fb66dc3f28e9948c288f0d49e1572e7d806374d4","isMergeCommit":true,"messageTitle":"Merge add-gradle-support to master","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"e3d99d40adb31a0653faa519f283aedf858d9f2e","isMergeCommit":false,"messageTitle":"Organise packages into haste package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"ccfd853c6a8f99313c3a5ba726102c767d33d323","isMergeCommit":false,"messageTitle":"Fix minor bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":38}}}]}]},"authorFileTypeContributionMap":{"yihfei":{"java":500,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":1,"txt":9}},"authorContributionVariance":{"yihfei":27153.182},"authorDisplayNameMap":{"yihfei":"CS2103T-F10-4 LIM .. FEI"}} diff --git a/ylyma_ip_master/authorship.json b/ylyma_ip_master/authorship.json index 72b26e9a..a94b5ea3 100644 --- a/ylyma_ip_master/authorship.json +++ b/ylyma_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":" protected String deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" public String getDeadline() {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" return this.deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" return \"[D]\" + \"[\" + this.getStatusIcon() + \"] \" + this.description + \" (by: \" + this.deadline + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ylyma":16}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":" protected String start;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":" protected String end;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" public String getStart() {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" return this.start;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" public String getEnd() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" return this.end;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" return \"[E]\" ","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" + \"[\" ","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" + this.getStatusIcon()","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" + \"] \" ","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" + this.description ","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" + \" (from \" ","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" + this.start ","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" + \" - \"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":" + this.end","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":" + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ylyma":31}},{"path":"src/main/java/Kiera.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"public class Kiera {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":" protected static String name \u003d \"Kiera\";","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":" protected static String line \u003d \" ---------------------------------------------\";","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":" protected static String hello \u003d line","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":" + \"\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":" + \" \" ","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" + \"hi, it\u0027s kiera.\\n\" ","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" + \" \" ","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" + \"what do you need?\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" + line;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" protected static String bye \u003d line","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" + \"\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" + \" \" ","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" + \"muaks! \u003c3\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" + line;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" protected static ArrayList\u003cTask\u003e store \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" protected static int index \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" public static String list() {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" if (index \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" return line + \"\\n nothing for you to do yet! \\n\" + result + line;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":" for (int i \u003d 0; i \u003c index; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":" Task t \u003d store.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":" result \u003d result + \" \" + (i + 1) + \". \" + t.toString() + \"\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"ylyma"},"content":" return line + \"\\n you need to get these done today:\\n\" + result + line;","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"ylyma"},"content":" public static String mark(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"ylyma"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"ylyma"},"content":" int unchecked \u003d Integer.valueOf(input.replace(\"mark \", \"\")) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"ylyma"},"content":" Task t \u003d store.get(unchecked);","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"ylyma"},"content":" t.markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"ylyma"},"content":" return line","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"ylyma"},"content":" + \" \\n yay, one task down: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"ylyma"},"content":" + \" \"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"ylyma"},"content":" + t.toString()","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"ylyma"},"content":" + \"\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"ylyma"},"content":" + line;","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"ylyma"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"ylyma"},"content":" throw new KieraException(\"your task number is not in the task list!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"ylyma"},"content":" public static String unmark(String input) {","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"ylyma"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"ylyma"},"content":" int checked \u003d Integer.valueOf(input.replace(\"unmark \", \"\")) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"ylyma"},"content":" Task t \u003d store.get(checked);","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"ylyma"},"content":" t.markAsUndone();","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"ylyma"},"content":" return line","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"ylyma"},"content":" + \" \\n ok, this task is not done yet: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"ylyma"},"content":" + \" \"","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"ylyma"},"content":" + t.toString()","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"ylyma"},"content":" + \"\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"ylyma"},"content":" + line;","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"ylyma"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"ylyma"},"content":" throw new KieraException(\"your task number is not in the task list!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"ylyma"},"content":" public static String addTask(String input, String type) throws KieraException {","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"ylyma"},"content":" Task t;","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"ylyma"},"content":" if (type \u003d\u003d \"todo\") {","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"ylyma"},"content":" if (input \u003d\u003d \"\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"ylyma"},"content":" throw new KieraException( \"todo can\u0027t be empty! follow the format: todo (task).\");","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"ylyma"},"content":" t \u003d new Todo(input);","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"ylyma"},"content":" } else if (type \u003d\u003d \"deadline\") {","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"ylyma"},"content":" if (input \u003d\u003d \"\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"ylyma"},"content":" throw new KieraException( \"deadline can\u0027t be empty! follow the format: deadline (task).\");","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"ylyma"},"content":" String deadline \u003d input.split(\"/\")[1].replace(\"by \", \"\");","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.split(\"/\")[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"ylyma"},"content":" t \u003d new Deadline(desc, deadline);","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"ylyma"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"ylyma"},"content":" if (input \u003d\u003d \"\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"ylyma"},"content":" throw new KieraException( \"deadline can\u0027t be empty! follow the format: event (task).\");","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"ylyma"},"content":" String end \u003d input.split(\"/\")[2].replace(\"to \", \"\");","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"ylyma"},"content":" String start \u003d input.split(\"/\")[1].replace(\"from \", \"\");","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.split(\"/\")[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"ylyma"},"content":" t \u003d new Event(desc, start, end);","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"ylyma"},"content":" store.add(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"ylyma"},"content":" index ++;","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"ylyma"},"content":" String plural \u003d index \u003d\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"ylyma"},"content":" return line ","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"ylyma"},"content":" + \"\\n \" ","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"ylyma"},"content":" + \"alright, one more task has been added: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"ylyma"},"content":" + \" \"","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"ylyma"},"content":" + t.toString()","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"ylyma"},"content":" + \"\\n \"","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"ylyma"},"content":" + (index) ","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"ylyma"},"content":" + \" more \"","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"ylyma"},"content":" + plural","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"ylyma"},"content":" + \" to go! \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"ylyma"},"content":" + line;","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"ylyma"},"content":" public static String delete(String input) {","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"ylyma"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"ylyma"},"content":" int deleted \u003d Integer.valueOf(input.replace(\"delete \", \"\")) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"ylyma"},"content":" Task t \u003d store.get(deleted);","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"ylyma"},"content":" store.remove(deleted);","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"ylyma"},"content":" index --;","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"ylyma"},"content":" String plural \u003d index \u003d\u003d 0 ? \"task\" : \"tasks\";","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"ylyma"},"content":" return line ","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"ylyma"},"content":" + \"\\n \" ","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"ylyma"},"content":" + \"alright, this task is gone: \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"ylyma"},"content":" + \" \"","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"ylyma"},"content":" + t.toString()","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"ylyma"},"content":" + \"\\n \"","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"ylyma"},"content":" + (index) ","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"ylyma"},"content":" + \" more \"","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"ylyma"},"content":" + plural","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"ylyma"},"content":" + \" left! \\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"ylyma"},"content":" + line;","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"ylyma"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"ylyma"},"content":" throw new KieraException(\"your task number is not in the task list!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"ylyma"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"ylyma"},"content":" System.out.println(hello);","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"ylyma"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"ylyma"},"content":" String input \u003d System.console().readLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"ylyma"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"ylyma"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"ylyma"},"content":" if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"ylyma"},"content":" System.out.println(mark(input));","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"ylyma"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"ylyma"},"content":" } else if (input.startsWith(\"unmark\")){","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"ylyma"},"content":" System.out.println(unmark(input));","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"ylyma"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"ylyma"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"ylyma"},"content":" System.out.println(list());","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"ylyma"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"ylyma"},"content":" if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"ylyma"},"content":" System.out.println(delete(input));","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"ylyma"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"ylyma"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.replace(\"todo \", \"\");","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"ylyma"},"content":" System.out.println(addTask(desc, \"todo\"));","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"ylyma"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.replace(\"deadline \", \"\");","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"ylyma"},"content":" System.out.println(addTask(desc, \"deadline\"));","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"ylyma"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.replace(\"event \", \"\");","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"ylyma"},"content":" System.out.println(addTask(desc, \"event\"));","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"ylyma"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"ylyma"},"content":" System.out.println(line + \"\\n sorry, i don\u0027t know what this means... \\n\" + line);","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":184,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":185,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"ylyma"},"content":" System.out.println(bye);","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":189,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ylyma":190}},{"path":"src/main/java/KieraException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"public class KieraException extends RuntimeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":" private static final String msg \u003d \"sorry, \";","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":" public KieraException(String e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":" super(msg + e);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ylyma":11}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":" protected String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" return this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ylyma":26}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":" return \"[T]\" + \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ylyma":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ylyma":10}},{"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":"ylyma"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Kiera.java","lastModifiedDate":"2023-08-24"},{"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":"ylyma"},"content":"java -classpath ..\\bin Kiera \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"ylyma":2,"-":19}}] +[{"path":"data/storage.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"T // // hi","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"T // X // hi","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"T // // hi","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"D // // yay /by 2023-05-04","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"E // // event who /from 2023-04-04 1800 /to 1900","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ylyma":5}},{"path":"src/main/java/kiera/Kiera.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import kiera.exception.KieraException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"public class Kiera {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":" protected static String filePath \u003d \"./data/storage.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" public Kiera(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" } catch (KieraException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" public void run() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" ui.showHello();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":" while (!isExit) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ylyma"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ylyma"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ylyma"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ylyma"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ylyma"},"content":" } catch (KieraException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"ylyma"},"content":" ui.showError(e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ylyma"},"content":" } finally {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ylyma"},"content":" ui.showLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"ylyma"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ylyma"},"content":" new Kiera(filePath).run();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ylyma":46}},{"path":"src/main/java/kiera/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.command.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import kiera.tasktype.TaskType;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" public Parser() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" public static Command parse(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.replace(\"mark \", \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" return new MarkCommand(desc, true);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.replace(\"unmark \", \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" return new MarkCommand(desc, false);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":" if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.replace(\"delete \", \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ylyma"},"content":" return new DeleteCommand(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ylyma"},"content":" if (input.startsWith(\"deadline-date\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.replace(\"deadline-date \", \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ylyma"},"content":" return new FilterCommand(TaskType.DEADLINE, desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ylyma"},"content":" } else if (input.startsWith(\"event-date\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.replace(\"event-date \", \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ylyma"},"content":" return new FilterCommand(TaskType.EVENT, desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ylyma"},"content":" if (input.startsWith(\"deadline-today\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ylyma"},"content":" String desc \u003d LocalDate.now().toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ylyma"},"content":" return new FilterCommand(TaskType.DEADLINE, desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ylyma"},"content":" } else if (input.startsWith(\"event-today\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ylyma"},"content":" String desc \u003d LocalDate.now().toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ylyma"},"content":" return new FilterCommand(TaskType.EVENT, desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ylyma"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.replace(\"todo \", \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ylyma"},"content":" return new AddCommand(TaskType.TODO, desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ylyma"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.replace(\"deadline \", \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ylyma"},"content":" return new AddCommand(TaskType.DEADLINE, desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ylyma"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ylyma"},"content":" String desc \u003d input.replace(\"event \", \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ylyma"},"content":" return new AddCommand(TaskType.EVENT, desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ylyma"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"ylyma":65}},{"path":"src/main/java/kiera/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.exception.KieraException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import kiera.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"import kiera.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"import kiera.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"import kiera.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" private String filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" public ArrayList\u003cTask\u003e load() throws KieraException {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" ArrayList\u003cTask\u003e result \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":" Task t;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ylyma"},"content":" String next \u003d s.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ylyma"},"content":" String[] r \u003d next.split(\" // \");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ylyma"},"content":" String type \u003d r[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ylyma"},"content":" String done \u003d r[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ylyma"},"content":" String desc \u003d r[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ylyma"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ylyma"},"content":" t \u003d new Todo(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ylyma"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ylyma"},"content":" t \u003d new Deadline(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ylyma"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ylyma"},"content":" t \u003d new Event(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ylyma"},"content":" if (done.equals(\"X\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ylyma"},"content":" t.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ylyma"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ylyma"},"content":" t.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ylyma"},"content":" result.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ylyma"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ylyma"},"content":" throw new KieraException(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ylyma"},"content":" return result;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ylyma"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ylyma"},"content":" String text \u003d tasks.getTasks().stream().map(task -\u003e task.toStorageString() + \"\\n\").collect(Collectors.joining());","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ylyma"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ylyma"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ylyma"},"content":" fw.write(text);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ylyma"},"content":" fw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ylyma"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ylyma"},"content":" throw new KieraException(\"data not saved...\" + e);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ylyma":69}},{"path":"src/main/java/kiera/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import kiera.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"import kiera.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"import kiera.tasktype.TaskType;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" public TaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" public int getSize() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" public void add(Task t) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" this.tasks.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":" public void remove(Task t) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":" this.tasks.remove(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ylyma"},"content":" public Task getTaskByIndex(int i) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"ylyma"},"content":" return this.tasks.get(i - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ylyma"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ylyma"},"content":" return this.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ylyma"},"content":" public int indexOf(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ylyma"},"content":" return this.tasks.indexOf(task) + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ylyma"},"content":" public ArrayList\u003cTask\u003e filterByDate(TaskType t, LocalDate d) {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ylyma"},"content":" switch (t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ylyma"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ylyma"},"content":" return this.tasks.stream()","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ylyma"},"content":" .filter(task -\u003e task.getDeadline() !\u003d null)","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ylyma"},"content":" .filter(task -\u003e task instanceof Deadline)","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ylyma"},"content":" .filter(task -\u003e task.getDeadline().equals(d))","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ylyma"},"content":" .collect(Collectors.toCollection(ArrayList::new));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ylyma"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ylyma"},"content":" return this.tasks.stream()","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ylyma"},"content":" .filter(task -\u003e task.getStartDate() !\u003d null)","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ylyma"},"content":" .filter(task -\u003e task instanceof Event)","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ylyma"},"content":" .filter(task -\u003e task.getStartDate().equals(d))","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ylyma"},"content":" .collect(Collectors.toCollection(ArrayList::new));","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ylyma"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"ylyma"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"ylyma"},"content":" return this.tasks.isEmpty();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ylyma":65}},{"path":"src/main/java/kiera/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import kiera.tasktype.TaskType;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" private final String LINE \u003d \" ---------------------------------------------\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" public Ui() {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" System.out.println(\"tasks cannot be loaded; starting with an empty list!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" public void showError(String e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" public void showLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" public void showHello() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" System.out.println(LINE","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" + \" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":" + \"hi, it\u0027s kiera.\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":" + \" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":" + \"what do you need?\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ylyma"},"content":" public void showBye() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ylyma"},"content":" System.out.println(LINE","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ylyma"},"content":" + \"\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ylyma"},"content":" + \" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ylyma"},"content":" + \"muaks! \u003c3\\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ylyma"},"content":" + LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ylyma"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ylyma"},"content":" Scanner in \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ylyma"},"content":" if (in.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ylyma"},"content":" return in.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ylyma"},"content":" return \"sorry, i didn\u0027t quite catch that.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ylyma"},"content":" public void showAddNotice(Task task, TaskType t, int listSize) {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"ylyma"},"content":" String plural \u003d listSize \u003d\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"ylyma"},"content":" System.out.println(\" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"ylyma"},"content":" + \"alright, one \"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"ylyma"},"content":" + t","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"ylyma"},"content":" + \" has been added: \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"ylyma"},"content":" + \" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"ylyma"},"content":" + task","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ylyma"},"content":" + \"\\n \"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ylyma"},"content":" + listSize","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ylyma"},"content":" + \" more \"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ylyma"},"content":" + plural","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ylyma"},"content":" + \" to go!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ylyma"},"content":" public void showDeleteNotice(Task task, int listSize) {","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ylyma"},"content":" String plural \u003d listSize \u003d\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ylyma"},"content":" System.out.println(\" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"ylyma"},"content":" + \"alright, this task is gone: \\n\"","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"ylyma"},"content":" + \" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"ylyma"},"content":" + task","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"ylyma"},"content":" + \"\\n \"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"ylyma"},"content":" + listSize","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"ylyma"},"content":" + \" more \"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"ylyma"},"content":" + plural","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"ylyma"},"content":" + \" left!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"ylyma"},"content":" public void showFilteredNotice(LocalDate d, TaskType t, String content, int listSize) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"ylyma"},"content":" String plural \u003d listSize \u003d\u003d 1 ? \" \" : \"s \";","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"ylyma"},"content":" String verb \u003d listSize \u003d\u003d 1 ? \"is \" : \"are \";","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"ylyma"},"content":" System.out.println(\" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"ylyma"},"content":" + \"there \"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"ylyma"},"content":" + verb","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"ylyma"},"content":" + listSize","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"ylyma"},"content":" + t","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"ylyma"},"content":" + plural","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"ylyma"},"content":" + \"due on \"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"ylyma"},"content":" + d","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"ylyma"},"content":" + \":\\n \"","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"ylyma"},"content":" + content","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"ylyma"},"content":" + \" \"","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"ylyma"},"content":" );","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"ylyma"},"content":" public void showList(String content) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"ylyma"},"content":" System.out.println(\" you need to get these done:\\n\" + content.stripTrailing());","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ylyma":92}},{"path":"src/main/java/kiera/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import kiera.exception.KieraException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"import kiera.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"import kiera.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"import kiera.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"import kiera.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":"import kiera.tasktype.TaskType;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" public AddCommand(TaskType t, String desc) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" setDescription(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" setTaskType(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws KieraException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" TaskType t \u003d this.getTaskType();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" String desc \u003d this.getDescription();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" switch (t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" task \u003d new Todo(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" ui.showAddNotice(task, t, tasks.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":" task \u003d new Deadline(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":" ui.showAddNotice(task, t, tasks.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ylyma"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ylyma"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ylyma"},"content":" task \u003d new Event(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ylyma"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ylyma"},"content":" ui.showAddNotice(task, t, tasks.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ylyma"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ylyma"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ylyma"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ylyma"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ylyma":47}},{"path":"src/main/java/kiera/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import kiera.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"import kiera.tasktype.TaskType;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"import kiera.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" private String desc;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" private TaskType t;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" public Command() {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" public void setDescription(String desc) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" public void setTaskType(TaskType t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" this.t \u003d t;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" return this.desc;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" public TaskType getTaskType() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" return this.t;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"ylyma":28}},{"path":"src/main/java/kiera/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import kiera.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"import kiera.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"import kiera.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" public DeleteCommand(String desc) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" setDescription(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" int index \u003d Integer.parseInt(this.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" Task task \u003d tasks.getTaskByIndex(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" tasks.remove(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" ui.showDeleteNotice(task, tasks.getSize());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ylyma":25}},{"path":"src/main/java/kiera/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import kiera.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"import kiera.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":" public ExitCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" ui.showBye();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ylyma":21}},{"path":"src/main/java/kiera/command/FilterCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import kiera.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"import kiera.tasktype.TaskType;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":"public class FilterCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" public FilterCommand(TaskType t, String desc) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" setDescription(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" setTaskType(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" TaskType t \u003d this.getTaskType();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" LocalDate d \u003d LocalDate.parse(this.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" ArrayList\u003cTask\u003e filtered \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" switch (t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" filtered \u003d tasks.filterByDate(TaskType.DEADLINE, d);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" filtered \u003d tasks.filterByDate(TaskType.EVENT, d);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" System.out.println(\"this task type has no date property!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":" if (filtered.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":" System.out.println(\"no \" + t + \" due on \" + d);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ylyma"},"content":" String content \u003d filtered.stream()","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ylyma"},"content":" .map(task -\u003e \" \" + tasks.indexOf(task) + \". \" + task + \"\\n\")","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ylyma"},"content":" .collect(Collectors.joining());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ylyma"},"content":" ui.showFilteredNotice(d, t, content, filtered.size());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ylyma"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ylyma"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ylyma":43}},{"path":"src/main/java/kiera/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import kiera.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"import kiera.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" public ListCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" System.out.println(\"nothing for you to do yet!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" String result \u003d tasks.getTasks().stream()","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" .map(task -\u003e \" \" + tasks.indexOf(task) + \". \" + task + \"\\n\")","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" .collect(Collectors.joining());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" ui.showList(result);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ylyma":27}},{"path":"src/main/java/kiera/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import kiera.exception.KieraException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"import kiera.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" private boolean mark;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" public MarkCommand(String desc, boolean mark) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" setDescription(desc);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" this.mark \u003d mark;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws KieraException {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" int index \u003d Integer.parseInt(this.getDescription());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" Task t \u003d tasks.getTaskByIndex(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" String notify;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" if (mark) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" notify \u003d \"yay, you\u0027re one task down!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" t.markAsDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" notify \u003d \"ok, this task has been marked undone.\";","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" t.markAsUndone();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":" String result \u003d tasks.getTasks().stream()","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":" .map(task -\u003e \" \" + tasks.indexOf(task) + \". \" + task + \"\\n\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ylyma"},"content":" .collect(Collectors.joining());","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ylyma"},"content":" System.out.println(notify);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ylyma"},"content":" storage.save(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ylyma"},"content":" ui.showList(result);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ylyma"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ylyma"},"content":" throw new KieraException(\"your task number is not in the task list!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"ylyma"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ylyma"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ylyma":46}},{"path":"src/main/java/kiera/exception/KieraException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.exception;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"public class KieraException extends RuntimeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":" public KieraException(String e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":" super(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":" return this.getMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ylyma":10}},{"path":"src/main/java/kiera/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.exception.KieraException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":" public Deadline(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" super(input.split(\"/\")[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" setDeadline(input.split(\"/\")[1].replace(\"by \", \"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" throw new KieraException(\" write a date for your deadline in the form: /by yyyy-mm-dd 2359\");","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" throw new KieraException(\" fill in the date in this format: /by yyyy-mm-dd!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" public String getDateString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" int day \u003d this.getDeadline().getDayOfMonth();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" String month \u003d this.getDeadline().getMonth().toString().substring(0, 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" int year \u003d this.getDeadline().getYear();","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" return day + \" \" + month + \" \" + year;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" public String toStorageString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" return \"D // \" + this.getStatusIcon() + \" // \" + this.getDescription() + \" /by \" + this.getDeadline();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":" return \"[D]\" + \"[\" + this.getStatusIcon() + \"] \" + this.getDescription() + \" (by: \" + this.getDateString() + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ylyma":33}},{"path":"src/main/java/kiera/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.exception.KieraException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" public Event(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" super(input.split(\"/\")[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" setStartEnd(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" throw new KieraException(\" invalid input! write when your event starts and ends in the form: /from yyyy-mm-dd 0000 /to 2359)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" throw new KieraException(\" fill in the date in the format: /from yyyy-mm-dd 0000 /to 2359!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" public String getDateString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" int startDay \u003d this.getStartDate().getDayOfMonth();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" String startMonth \u003d this.getStartDate().getMonth().toString().substring(0, 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":" int startYear \u003d this.getStartDate().getYear();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":" return startDay + \" \" + startMonth + \" \" + startYear + \" \" + this.getStartTime() + \" - \" + this.getEndTime();","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"ylyma"},"content":" public String toStorageString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"ylyma"},"content":" int start \u003d this.getStartTime().getHour() * 100 + this.getStartTime().getMinute();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ylyma"},"content":" int end \u003d this.getEndTime().getHour() * 100 + this.getEndTime().getMinute();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ylyma"},"content":" return \"E // \" + this.getStatusIcon()","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"ylyma"},"content":" + \" // \"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"ylyma"},"content":" + this.getDescription()","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"ylyma"},"content":" + \" /from \"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"ylyma"},"content":" + this.getStartDate()","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ylyma"},"content":" + \" \"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"ylyma"},"content":" + start","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ylyma"},"content":" + \" /to \"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"ylyma"},"content":" + end;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ylyma"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"ylyma"},"content":" return \"[E]\" ","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"ylyma"},"content":" + \"[\" ","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"ylyma"},"content":" + this.getStatusIcon()","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"ylyma"},"content":" + \"] \" ","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"ylyma"},"content":" + this.getDescription()","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"ylyma"},"content":" + \" (from \" ","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"ylyma"},"content":" + this.getDateString()","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ylyma"},"content":" + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ylyma":57}},{"path":"src/main/java/kiera/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":" private String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" private LocalDate deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" private LocalDate startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" private LocalTime startTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" private LocalTime endTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" public void setStartEnd(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" String[] inputs \u003d input.split(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" String start \u003d inputs[1].replace(\"from \", \"\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" String[] times \u003d start.split(\"-\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" int y \u003d Integer.parseInt(times[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" int m \u003d Integer.parseInt(times[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" int d \u003d Integer.parseInt(times[2].split(\" \")[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":" int time \u003d Integer.parseInt(times[2].split(\" \")[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"ylyma"},"content":" int startHour \u003d (int) Math.floor(time / 100);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"ylyma"},"content":" int startMin \u003d time % 100;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"ylyma"},"content":" int end \u003d Integer.parseInt(inputs[2].replace(\"to \", \"\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"ylyma"},"content":" int endHour \u003d (int) Math.floor(end / 100);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"ylyma"},"content":" int endMin \u003d end % 100;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"ylyma"},"content":" this.startDate \u003d LocalDate.of(y, m, d);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"ylyma"},"content":" this.startTime \u003d LocalTime.of(startHour, startMin);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"ylyma"},"content":" this.endTime \u003d LocalTime.of(endHour, endMin);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"ylyma"},"content":" public void setDeadline(String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"ylyma"},"content":" this.deadline \u003d LocalDate.parse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"ylyma"},"content":" public LocalDate getDeadline() {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"ylyma"},"content":" return this.deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"ylyma"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"ylyma"},"content":" return this.description;","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"ylyma"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"ylyma"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"ylyma"},"content":" public LocalDate getStartDate() {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"ylyma"},"content":" return this.startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"ylyma"},"content":" public LocalTime getStartTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"ylyma"},"content":" return this.startTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"ylyma"},"content":" public LocalTime getEndTime() {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"ylyma"},"content":" return this.endTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"ylyma"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"ylyma"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"ylyma"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"ylyma"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"ylyma"},"content":" public String getDateString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"ylyma"},"content":" return \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"ylyma"},"content":" public String toStorageString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"ylyma"},"content":" return \" // \" + this.getStatusIcon() + \" // \" + this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"ylyma"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"ylyma"},"content":" return \"[ ]\" + \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ylyma":84}},{"path":"src/main/java/kiera/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":" public String toStorageString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" return \"T // \" + this.getStatusIcon() + \" // \" + this.getDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" return \"[T]\" + \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" ","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"ylyma":16}},{"path":"src/main/java/kiera/tasktype/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"package kiera.tasktype;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"import kiera.exception.KieraException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"public enum TaskType {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":" TODO,","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":" DEADLINE,","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":" EVENT;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":" public String toString() throws KieraException {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"ylyma"},"content":" String res;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"ylyma"},"content":" switch (this) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"ylyma"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"ylyma"},"content":" res \u003d \"todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"ylyma"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"ylyma"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"ylyma"},"content":" res \u003d \"deadline\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"ylyma"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"ylyma"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"ylyma"},"content":" res \u003d \"event\";","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"ylyma"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"ylyma"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"ylyma"},"content":" throw new KieraException(\"no such task type exist! \");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"ylyma"},"content":" return res;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"ylyma"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"ylyma"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"ylyma"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"ylyma":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ylyma"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"ylyma"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"ylyma"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"ylyma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"ylyma"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"ylyma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"ylyma"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"ylyma"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"ylyma"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"ylyma"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"ylyma":10}},{"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":"ylyma"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Kiera.java","lastModifiedDate":"2023-08-24"},{"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":"ylyma"},"content":"java -classpath ..\\bin Kiera \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"ylyma":2,"-":19}}] diff --git a/ylyma_ip_master/commits.json b/ylyma_ip_master/commits.json index a9edba00..3af49e7d 100644 --- a/ylyma_ip_master/commits.json +++ b/ylyma_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ylyma":[{"date":"2023-08-23","commitResults":[{"hash":"5f9846356c89c10b332cf3cbf8dead16d530cf5b","isMergeCommit":false,"messageTitle":"rename, greet, exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":10}}},{"hash":"41c67d4157c7bdeb5db282f12daadb2e33865c6c","isMergeCommit":false,"messageTitle":"rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":8}}},{"hash":"01d58971dcd33b83bff8d576b000c2d50b919b53","isMergeCommit":false,"messageTitle":"echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":3}}},{"hash":"a8443bc97438c029781e909b1871b695ed1ff162","isMergeCommit":false,"messageTitle":"add, list + change tone","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":39}}},{"hash":"27f9c0d670fdfe8c6e96fc4d11ed3ba529577636","isMergeCommit":false,"messageTitle":"mark as done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":14}}},{"hash":"65dcb48e983f3422aa76545a4453efaf7df99fdd","isMergeCommit":false,"messageTitle":"added classes","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":20}}},{"hash":"eb7aa23ace3fcdecdf62d5755020da91d1065ec0","isMergeCommit":false,"messageTitle":"todos, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":62}}}]},{"date":"2023-08-24","commitResults":[{"hash":"f7657f5b665f9d7f7d43d2ad63e46e3030613895","isMergeCommit":false,"messageTitle":"exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":19,"deletions":6},"bat":{"insertions":2,"deletions":2}}},{"hash":"05da12c85f31a19a5307e6b049c365b0f4c6019b","isMergeCommit":false,"messageTitle":"delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":18}}},{"hash":"977eb2ba51bfb22298944d36cf2349c7fb440bf0","isMergeCommit":false,"messageTitle":"ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":68,"deletions":42}}}]}]},"authorFileTypeContributionMap":{"ylyma":{"java":284,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":10}},"authorContributionVariance":{"ylyma":33939.1},"authorDisplayNameMap":{"ylyma":"CS2103T-W10-1 AMY ..UHUI"}} +{"authorDailyContributionsMap":{"ylyma":[{"date":"2023-08-23","commitResults":[{"hash":"5f9846356c89c10b332cf3cbf8dead16d530cf5b","isMergeCommit":false,"messageTitle":"rename, greet, exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":10}}},{"hash":"41c67d4157c7bdeb5db282f12daadb2e33865c6c","isMergeCommit":false,"messageTitle":"rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":8}}},{"hash":"01d58971dcd33b83bff8d576b000c2d50b919b53","isMergeCommit":false,"messageTitle":"echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":3}}},{"hash":"a8443bc97438c029781e909b1871b695ed1ff162","isMergeCommit":false,"messageTitle":"add, list + change tone","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":39}}},{"hash":"27f9c0d670fdfe8c6e96fc4d11ed3ba529577636","isMergeCommit":false,"messageTitle":"mark as done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":14}}},{"hash":"65dcb48e983f3422aa76545a4453efaf7df99fdd","isMergeCommit":false,"messageTitle":"added classes","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":20}}},{"hash":"eb7aa23ace3fcdecdf62d5755020da91d1065ec0","isMergeCommit":false,"messageTitle":"todos, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":62}}}]},{"date":"2023-08-24","commitResults":[{"hash":"f7657f5b665f9d7f7d43d2ad63e46e3030613895","isMergeCommit":false,"messageTitle":"exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":19,"deletions":6},"bat":{"insertions":2,"deletions":2}}},{"hash":"05da12c85f31a19a5307e6b049c365b0f4c6019b","isMergeCommit":false,"messageTitle":"delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":18}}},{"hash":"977eb2ba51bfb22298944d36cf2349c7fb440bf0","isMergeCommit":false,"messageTitle":"ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":68,"deletions":42}}}]},{"date":"2023-08-30","commitResults":[{"hash":"92042db9547da4e1ef37ced6e3b01f3f15db0d47","isMergeCommit":false,"messageTitle":"Add save file and functions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":2,"deletions":0}}},{"hash":"72dd9f3c2307ee65a56c058b3056172578e0f257","isMergeCommit":false,"messageTitle":"Add save file and functions","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":170,"deletions":90}}}]},{"date":"2023-08-31","commitResults":[{"hash":"07fd129703da1451f4112eace3974a600dd04233","isMergeCommit":false,"messageTitle":"Add date and time commands and objects","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":294,"deletions":91}}}]},{"date":"2023-09-01","commitResults":[{"hash":"a9ac9f0ca22f415e5a7f4ce49708133c97e645b4","isMergeCommit":false,"messageTitle":"Add more classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":524,"deletions":373}}},{"hash":"dcda41e62733dae01aab6f74f5774a90c3a3ff5f","isMergeCommit":false,"messageTitle":"Add enum TaskTypes","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"07459881488d81a0218b7c1ddb1f8622bb8291b8","isMergeCommit":false,"messageTitle":"Organise into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":38}}}]}]},"authorFileTypeContributionMap":{"ylyma":{"java":802,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":15}},"authorContributionVariance":{"ylyma":84296.59},"authorDisplayNameMap":{"ylyma":"CS2103T-W10-1 AMY ..UHUI"}} diff --git a/yuxunn_ip_master/authorship.json b/yuxunn_ip_master/authorship.json index 676144ff..f42f3bc6 100644 --- a/yuxunn_ip_master/authorship.json +++ b/yuxunn_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"4","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"T | 0 | eat","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"T | 0 | eat","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"T | 0 | sleep","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"D | 1 | return book | null","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yuxunn":5}},{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"4","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"T | 0 | eat","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"T | 0 | eat","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"T | 0 | sleep","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"D | 0 | return book | null","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yuxunn":5}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"//import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"//import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"//import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"//import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yuxunn"},"content":"//import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yuxunn"},"content":"//import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"yuxunn"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yuxunn"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yuxunn"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yuxunn"},"content":" public Duke(String fileDir) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yuxunn"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yuxunn"},"content":" storage \u003d new Storage(fileDir);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yuxunn"},"content":" String[] actions \u003d storage.loadActions();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yuxunn"},"content":" boolean[] isDone \u003d storage.loadIsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yuxunn"},"content":" String[] types \u003d storage.loadTypes();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yuxunn"},"content":" int counter \u003d storage.load(\"./data/duke.txt\", actions, types, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yuxunn"},"content":" if (actions !\u003d null \u0026\u0026 isDone !\u003d null \u0026\u0026 types !\u003d null \u0026\u0026 counter \u003e\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yuxunn"},"content":" taskList \u003d new TaskList(actions, isDone, types, counter);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yuxunn"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"yuxunn"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yuxunn"},"content":" String[] actions2 \u003d new String[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yuxunn"},"content":" boolean[] isDone2 \u003d new boolean[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yuxunn"},"content":" String[] types2 \u003d new String[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yuxunn"},"content":" taskList \u003d new TaskList(actions2, isDone2, types2, 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":32,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"yuxunn"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yuxunn"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yuxunn"},"content":" boolean exit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yuxunn"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"yuxunn"},"content":" while (exit !\u003d true) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yuxunn"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yuxunn"},"content":" exit \u003d Parser.inputType(input, taskList, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"yuxunn"},"content":" Storage.save(\"./data/duke.txt\", TaskList.actions, TaskList.type, TaskList.isDone, TaskList.dueString, TaskList.startTime, TaskList.endTime, TaskList.counter);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yuxunn"},"content":" new Duke(\"./data/duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yuxunn"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yuxunn":46,"-":4}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yuxunn"},"content":" public static boolean inputType(String input, TaskList taskList, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yuxunn"},"content":" if (input.startsWith(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yuxunn"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yuxunn"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yuxunn"},"content":" int num3 \u003d Integer.parseInt(input.substring(7).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yuxunn"},"content":" String action2 \u003d TaskList.helper(TaskList.actions[num3 - 1], TaskList.type[num3 - 1], TaskList.isDone[num3 - 1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yuxunn"},"content":" for (int j \u003d num3 - 1; j \u003c TaskList.counter - 1; j++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yuxunn"},"content":" TaskList.actions[j] \u003d TaskList.actions[j + 1];","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yuxunn"},"content":" TaskList.type[j] \u003d TaskList.type[j + 1];","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yuxunn"},"content":" TaskList.isDone[j] \u003d TaskList.isDone[j + 1];","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yuxunn"},"content":" TaskList.counter \u003d TaskList.counter - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + action2);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Now you have \" + TaskList.counter + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yuxunn"},"content":" Storage.save(\"data/tasks.txt\", TaskList.actions, TaskList.type, TaskList.isDone, TaskList.dueString, TaskList.startTime, TaskList.endTime, TaskList.counter);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yuxunn"},"content":" } else if (input.startsWith(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yuxunn"},"content":" for (int i \u003d 0; i \u003c TaskList.counter; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yuxunn"},"content":" String DMYString \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yuxunn"},"content":" if (TaskList.type[i].equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yuxunn"},"content":" DMYString \u003d \"by \" + TaskList.dueString[i];","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yuxunn"},"content":" } else if (TaskList.type[i].equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yuxunn"},"content":" LocalDateTime startTime \u003d TaskList.startTime[i];","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yuxunn"},"content":" LocalDateTime endTime \u003d TaskList.endTime[i];","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yuxunn"},"content":" DMYString \u003d \"from \" + TaskList.startTime[i]","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yuxunn"},"content":" + \" to \" + TaskList.endTime[i];","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yuxunn"},"content":" System.out.println((i + 1) + \".\" + TaskList.helper(TaskList.actions[i], TaskList.type[i], TaskList.isDone[i]) + \" \" + DMYString);","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yuxunn"},"content":" }else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yuxunn"},"content":" if (input.length() \u003c\u003d 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yuxunn"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yuxunn"},"content":" String action \u003d input.substring(5).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yuxunn"},"content":" TaskList.todo(action);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yuxunn"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yuxunn"},"content":" String action \u003d input.substring(9, input.indexOf(\"/by\")).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yuxunn"},"content":" // System.out.println(action + \"action\");","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yuxunn"},"content":" String by \u003d input.substring(input.indexOf(\"/by\") + 4).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yuxunn"},"content":" LocalDateTime timeDeadline \u003d dateTask(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yuxunn"},"content":" // System.out.println(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yuxunn"},"content":" TaskList.deadline(action, by, timeDeadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yuxunn"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yuxunn"},"content":" String action \u003d input.substring(6, input.indexOf(\"/from\")).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yuxunn"},"content":" String from \u003d input.substring(input.indexOf(\"/from\") + 6, input.indexOf(\"/to\")).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yuxunn"},"content":" String to \u003d input.substring(input.indexOf(\"/to\") + 4).trim();;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yuxunn"},"content":" TaskList.event(action, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"yuxunn"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yuxunn"},"content":" int num \u003d Integer.parseInt(input.substring(5).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yuxunn"},"content":" if (num - 1 \u003c TaskList.counter) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yuxunn"},"content":" TaskList.isDone[num - 1] \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yuxunn"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yuxunn"},"content":" int num2 \u003d Integer.parseInt(input.substring(7).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yuxunn"},"content":" if (num2 - 1 \u003c TaskList.counter) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yuxunn"},"content":" TaskList.isDone[num2 - 1] \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yuxunn"},"content":" System.out.println(\" \" + TaskList.helper(TaskList.actions[num2 - 1], TaskList.type[num2 - 1], TaskList.isDone[num2 - 1]));","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yuxunn"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"yuxunn"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"yuxunn"},"content":" private static LocalDateTime dateTask(String dateTimeStr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"yuxunn"},"content":" DateTimeFormatter DMYhelper \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"yuxunn"},"content":" // HHmm for the hour and minutes","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"yuxunn"},"content":" return LocalDateTime.parse(dateTimeStr, DMYhelper);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"yuxunn"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yuxunn":85}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yuxunn"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yuxunn"},"content":" private String fileDir;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yuxunn"},"content":" public Storage(String fileDir) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yuxunn"},"content":" this.fileDir \u003d fileDir;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yuxunn"},"content":" public static void save(String fileName, String[] actions, String[] type, boolean[] isDone, String[] dueStrings, LocalDateTime[] startTimes, LocalDateTime[] endTimes, int counter) {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yuxunn"},"content":" try (FileWriter writer \u003d new FileWriter(fileName)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yuxunn"},"content":" writer.write(counter + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yuxunn"},"content":" for (int i \u003d 0; i \u003c counter; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yuxunn"},"content":" int isDoneNum \u003d isDone[i] ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yuxunn"},"content":" writer.write(type[i] + \" | \" + isDoneNum + \" | \" + actions[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yuxunn"},"content":" if (type[i].equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yuxunn"},"content":" writer.write(\" | \" + dueStrings[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yuxunn"},"content":" } else if (type[i].equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yuxunn"},"content":" writer.write(\" | \" + startTimes[i].format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yuxunn"},"content":" + \" | \" + endTimes[i].format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yuxunn"},"content":" writer.write(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yuxunn"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yuxunn"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yuxunn"},"content":" public static int load(String fileName, String[] actions, String[] type, boolean[] isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yuxunn"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yuxunn"},"content":" try (FileReader fileReader \u003d new FileReader(fileName)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yuxunn"},"content":" Scanner scanner \u003d new Scanner(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yuxunn"},"content":" while (scanner.hasNextLine() \u0026\u0026 count \u003c actions.length) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yuxunn"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yuxunn"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yuxunn"},"content":" // to split the line read into the different parts action num and done","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yuxunn"},"content":" if (parts.length \u003e\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yuxunn"},"content":" type[count] \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yuxunn"},"content":" isDone[count] \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yuxunn"},"content":" actions[count] \u003d parts[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yuxunn"},"content":" count++;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yuxunn"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yuxunn"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yuxunn"},"content":" return count;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yuxunn"},"content":" public boolean[] loadIsDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yuxunn"},"content":" boolean[] isDone \u003d new boolean[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yuxunn"},"content":" try (FileReader fileReader \u003d new FileReader(fileDir)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yuxunn"},"content":" Scanner scanner \u003d new Scanner(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yuxunn"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"yuxunn"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yuxunn"},"content":" if (isDone.length \u003e count) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yuxunn"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yuxunn"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yuxunn"},"content":" if (parts.length \u003e\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yuxunn"},"content":" isDone[count] \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yuxunn"},"content":" count++;","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yuxunn"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yuxunn"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yuxunn"},"content":" return isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"yuxunn"},"content":" public String[] loadTypes() {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"yuxunn"},"content":" String[] type \u003d new String[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"yuxunn"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"yuxunn"},"content":" try (FileReader fileReader \u003d new FileReader(fileDir)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"yuxunn"},"content":" Scanner scanner \u003d new Scanner(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"yuxunn"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"yuxunn"},"content":" if (type.length \u003e count) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"yuxunn"},"content":" count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"yuxunn"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"yuxunn"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"yuxunn"},"content":" if (parts.length \u003e\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"yuxunn"},"content":" type[count] \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"yuxunn"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"yuxunn"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"yuxunn"},"content":" return type;","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"yuxunn"},"content":" public String[] loadActions() {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"yuxunn"},"content":" String[] actions \u003d new String[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"yuxunn"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"yuxunn"},"content":" try (FileReader fileReader \u003d new FileReader(fileDir)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"yuxunn"},"content":" Scanner scanner \u003d new Scanner(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"yuxunn"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"yuxunn"},"content":" if (actions.length \u003e count) {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"yuxunn"},"content":" count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"yuxunn"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"yuxunn"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"yuxunn"},"content":" if (parts.length \u003e\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"yuxunn"},"content":" actions[count] \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"yuxunn"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"yuxunn"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"yuxunn"},"content":" return actions;","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yuxunn":120}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":" public static String[] actions;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yuxunn"},"content":" public static boolean[] isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yuxunn"},"content":" public static String[] type;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yuxunn"},"content":" public static int counter;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yuxunn"},"content":" public static String[] dueString \u003d new String[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yuxunn"},"content":" public static LocalDateTime[] startTime \u003d new LocalDateTime[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yuxunn"},"content":" public static LocalDateTime[] endTime\u003d new LocalDateTime[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yuxunn"},"content":" public TaskList(String[] actions, boolean[] isDone, String[] type, int counter){","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yuxunn"},"content":" TaskList.actions \u003d actions;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yuxunn"},"content":" TaskList.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yuxunn"},"content":" TaskList.type \u003d type;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yuxunn"},"content":" TaskList.counter \u003d counter;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yuxunn"},"content":" public static void todo(String action) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yuxunn"},"content":" isDone[counter] \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yuxunn"},"content":" actions[counter] \u003d action;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yuxunn"},"content":" type[counter] \u003d \"T\";","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yuxunn"},"content":" counter\u003d counter + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + helper(action, \"T\", false));","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Now you have \" + counter + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yuxunn"},"content":" public static String helper(String task, String taskType, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yuxunn"},"content":" String taskIcon;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yuxunn"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yuxunn"},"content":" taskIcon \u003d \"[T]\";","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yuxunn"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yuxunn"},"content":" taskIcon \u003d \"[D]\";","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yuxunn"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yuxunn"},"content":" taskIcon \u003d \"[E]\";","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yuxunn"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yuxunn"},"content":" taskIcon \u003d \"[ ]\";","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yuxunn"},"content":" return taskIcon + \"[\" + (isDone ? \"X\" : \" \") + \"] \" + task;","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yuxunn"},"content":" public static void deadline(String action, String due, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yuxunn"},"content":" String byString \u003d due.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yuxunn"},"content":" dueString[counter] \u003d byString;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yuxunn"},"content":" actions[counter] \u003d action;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yuxunn"},"content":" // System.out.println(action + \"hello\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yuxunn"},"content":" type[counter] \u003d \"D\";","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yuxunn"},"content":" isDone[counter] \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yuxunn"},"content":" counter \u003d counter + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + helper(action, \"D\", false) + \" (by\" + \" \" + byString + \")\");","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Now you have \" + counter + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"yuxunn"},"content":" public static void event(String action, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yuxunn"},"content":" String from \u003d start.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yuxunn"},"content":" String to \u003d end.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yuxunn"},"content":" LocalDateTime startTimeEvent \u003d helper2(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yuxunn"},"content":" LocalDateTime endTimeEvent \u003d helper2(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yuxunn"},"content":" startTime[counter] \u003d startTimeEvent;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yuxunn"},"content":" endTime[counter] \u003d endTimeEvent;","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yuxunn"},"content":" actions[counter] \u003d action;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yuxunn"},"content":" isDone[counter] \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yuxunn"},"content":" type[counter] \u003d \"E\";","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yuxunn"},"content":" counter \u003d counter + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + helper(action, \"E\", false) + \" (from: \" + from + \" to: \" + to + \")\");","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Now you have \" + counter + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"yuxunn"},"content":" private static LocalDateTime helper2 (String dateTimeStr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"yuxunn"},"content":" DateTimeFormatter DMYhelper \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"yuxunn"},"content":" // HHmm for the hour and minutes","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"yuxunn"},"content":" return LocalDateTime.parse(dateTimeStr, DMYhelper);","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"yuxunn"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yuxunn":80}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Hello! I\u0027m Bob\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Error\");","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yuxunn"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yuxunn":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"todo sleep","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yuxunn":5}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"yuxunn"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yuxunn":2,"-":22}},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"yuxunn"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yuxunn":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"13","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"T | 0 | Read a book","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"D | 0 | Finish report | null","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"D | 0 | Finish report | null","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"T | 0 | Read a book","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yuxunn"},"content":"D | 0 | Finish report | null","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yuxunn"},"content":"T | 0 | Read a book","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yuxunn"},"content":"D | 0 | Finish report | null","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yuxunn"},"content":"T | 0 | Read a book","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yuxunn"},"content":"D | 0 | Finish report | null","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yuxunn"},"content":"T | 0 | Read a book","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yuxunn"},"content":"D | 0 | Finish report | null","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yuxunn"},"content":"T | 0 | Read a book","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yuxunn"},"content":"D | 0 | Finish report | 30/08/2023 1430","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"yuxunn":14}},{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"1","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"D | 0 | return book | null","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yuxunn":2}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"//import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"//import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yuxunn"},"content":"//import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yuxunn"},"content":"//import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yuxunn"},"content":"//import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yuxunn"},"content":"//import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"yuxunn"},"content":" public Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yuxunn"},"content":" public TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yuxunn"},"content":" public Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yuxunn"},"content":" public Duke(String fileDir) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yuxunn"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yuxunn"},"content":" storage \u003d new Storage(fileDir);","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yuxunn"},"content":" String[] actions \u003d storage.loadActions();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yuxunn"},"content":" boolean[] isDone \u003d storage.loadIsDone();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yuxunn"},"content":" String[] types \u003d storage.loadTypes();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yuxunn"},"content":" int counter \u003d storage.load(\"./data/duke.txt\", actions, types, isDone);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yuxunn"},"content":" if (actions !\u003d null \u0026\u0026 isDone !\u003d null \u0026\u0026 types !\u003d null \u0026\u0026 counter \u003e\u003d 0) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yuxunn"},"content":" taskList \u003d new TaskList(actions, isDone, types, counter);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yuxunn"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"yuxunn"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yuxunn"},"content":" String[] actions2 \u003d new String[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yuxunn"},"content":" boolean[] isDone2 \u003d new boolean[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yuxunn"},"content":" String[] types2 \u003d new String[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yuxunn"},"content":" taskList \u003d new TaskList(actions2, isDone2, types2, 0);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"yuxunn"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yuxunn"},"content":" ui.showWelcome();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yuxunn"},"content":" boolean exit \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yuxunn"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"yuxunn"},"content":" while (exit !\u003d true) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yuxunn"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yuxunn"},"content":" exit \u003d Parser.inputType(input, taskList, storage);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"yuxunn"},"content":" Storage.save(\"./data/duke.txt\", TaskList.actions, TaskList.type, TaskList.isDone, TaskList.dueString, TaskList.startTime, TaskList.endTime, TaskList.counter);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yuxunn"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yuxunn"},"content":" new Duke(\"./data/duke.txt\").run();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yuxunn"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yuxunn":50,"-":2}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yuxunn"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yuxunn"},"content":" public static boolean inputType(String input, TaskList taskList, Storage storage) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yuxunn"},"content":" if (input.startsWith(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yuxunn"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yuxunn"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yuxunn"},"content":" int num3 \u003d Integer.parseInt(input.substring(7).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yuxunn"},"content":" String action2 \u003d TaskList.helper(TaskList.actions[num3 - 1], TaskList.type[num3 - 1], TaskList.isDone[num3 - 1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yuxunn"},"content":" for (int j \u003d num3 - 1; j \u003c TaskList.counter - 1; j++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yuxunn"},"content":" TaskList.actions[j] \u003d TaskList.actions[j + 1];","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yuxunn"},"content":" TaskList.type[j] \u003d TaskList.type[j + 1];","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yuxunn"},"content":" TaskList.isDone[j] \u003d TaskList.isDone[j + 1];","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yuxunn"},"content":" TaskList.counter \u003d TaskList.counter - 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + action2);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Now you have \" + TaskList.counter + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yuxunn"},"content":" Storage.save(\"data/tasks.txt\", TaskList.actions, TaskList.type, TaskList.isDone, TaskList.dueString, TaskList.startTime, TaskList.endTime, TaskList.counter);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yuxunn"},"content":" } else if (input.startsWith(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yuxunn"},"content":" for (int i \u003d 0; i \u003c TaskList.counter; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yuxunn"},"content":" String DMYString \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yuxunn"},"content":" if (TaskList.type[i].equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yuxunn"},"content":" DMYString \u003d \"by \" + TaskList.dueString[i];","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yuxunn"},"content":" } else if (TaskList.type[i].equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yuxunn"},"content":" LocalDateTime startTime \u003d TaskList.startTime[i];","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yuxunn"},"content":" LocalDateTime endTime \u003d TaskList.endTime[i];","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yuxunn"},"content":" DMYString \u003d \"from \" + TaskList.startTime[i]","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yuxunn"},"content":" + \" to \" + TaskList.endTime[i];","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yuxunn"},"content":" System.out.println((i + 1) + \".\" + TaskList.helper(TaskList.actions[i], TaskList.type[i], TaskList.isDone[i]) + \" \" + DMYString);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yuxunn"},"content":" }else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yuxunn"},"content":" if (input.length() \u003c\u003d 4) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yuxunn"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yuxunn"},"content":" String action \u003d input.substring(5).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yuxunn"},"content":" TaskList.todo(action);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yuxunn"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yuxunn"},"content":" String action \u003d input.substring(9, input.indexOf(\"/by\")).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yuxunn"},"content":" // System.out.println(action + \"action\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yuxunn"},"content":" String by \u003d input.substring(input.indexOf(\"/by\") + 4).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yuxunn"},"content":" LocalDateTime timeDeadline \u003d dateTask(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yuxunn"},"content":" // System.out.println(by);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yuxunn"},"content":" TaskList.deadline(action, by, timeDeadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yuxunn"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yuxunn"},"content":" String action \u003d input.substring(6, input.indexOf(\"/from\")).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yuxunn"},"content":" String from \u003d input.substring(input.indexOf(\"/from\") + 6, input.indexOf(\"/to\")).trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yuxunn"},"content":" String to \u003d input.substring(input.indexOf(\"/to\") + 4).trim();;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"yuxunn"},"content":" TaskList.event(action, from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yuxunn"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yuxunn"},"content":" int num \u003d Integer.parseInt(input.substring(5).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yuxunn"},"content":" if (num - 1 \u003c TaskList.counter) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yuxunn"},"content":" TaskList.isDone[num - 1] \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yuxunn"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yuxunn"},"content":" int num2 \u003d Integer.parseInt(input.substring(7).trim());","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yuxunn"},"content":" if (num2 - 1 \u003c TaskList.counter) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yuxunn"},"content":" TaskList.isDone[num2 - 1] \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yuxunn"},"content":" System.out.println(\" \" + TaskList.helper(TaskList.actions[num2 - 1], TaskList.type[num2 - 1], TaskList.isDone[num2 - 1]));","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"yuxunn"},"content":" return false;","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"yuxunn"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"yuxunn"},"content":" return true;","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"yuxunn"},"content":" private static LocalDateTime dateTask(String dateTimeStr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"yuxunn"},"content":" DateTimeFormatter DMYhelper \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"yuxunn"},"content":" // HHmm for the hour and minutes","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"yuxunn"},"content":" return LocalDateTime.parse(dateTimeStr, DMYhelper);","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"yuxunn"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yuxunn":87}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"import java.io.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yuxunn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yuxunn"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yuxunn"},"content":" private String fileDir;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yuxunn"},"content":" public Storage(String fileDir) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yuxunn"},"content":" this.fileDir \u003d fileDir;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yuxunn"},"content":" public static void save(String fileName, String[] actions, String[] type, boolean[] isDone, String[] dueStrings, LocalDateTime[] startTimes, LocalDateTime[] endTimes, int counter) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yuxunn"},"content":" try (FileWriter writer \u003d new FileWriter(fileName)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yuxunn"},"content":" writer.write(counter + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yuxunn"},"content":" for (int i \u003d 0; i \u003c counter; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yuxunn"},"content":" int isDoneNum \u003d isDone[i] ? 1 : 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yuxunn"},"content":" writer.write(type[i] + \" | \" + isDoneNum + \" | \" + actions[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yuxunn"},"content":" if (type[i].equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yuxunn"},"content":" writer.write(\" | \" + dueStrings[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yuxunn"},"content":" } else if (type[i].equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yuxunn"},"content":" writer.write(\" | \" + startTimes[i].format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"))","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yuxunn"},"content":" + \" | \" + endTimes[i].format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yuxunn"},"content":" writer.write(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yuxunn"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yuxunn"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yuxunn"},"content":" public static int load(String fileName, String[] actions, String[] type, boolean[] isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yuxunn"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yuxunn"},"content":" try (FileReader fileReader \u003d new FileReader(fileName)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yuxunn"},"content":" Scanner scanner \u003d new Scanner(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yuxunn"},"content":" while (scanner.hasNextLine() \u0026\u0026 count \u003c actions.length) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yuxunn"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yuxunn"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yuxunn"},"content":" // to split the line read into the different parts action num and done","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yuxunn"},"content":" if (parts.length \u003e\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yuxunn"},"content":" type[count] \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yuxunn"},"content":" isDone[count] \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yuxunn"},"content":" actions[count] \u003d parts[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yuxunn"},"content":" count++;","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yuxunn"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yuxunn"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yuxunn"},"content":" return count;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yuxunn"},"content":" public boolean[] loadIsDone() {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yuxunn"},"content":" boolean[] isDone \u003d new boolean[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yuxunn"},"content":" try (FileReader fileReader \u003d new FileReader(fileDir)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"yuxunn"},"content":" Scanner scanner \u003d new Scanner(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yuxunn"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yuxunn"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yuxunn"},"content":" if (isDone.length \u003e count) {","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yuxunn"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yuxunn"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yuxunn"},"content":" if (parts.length \u003e\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yuxunn"},"content":" isDone[count] \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yuxunn"},"content":" count++;","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yuxunn"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yuxunn"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"yuxunn"},"content":" return isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"yuxunn"},"content":" public String[] loadTypes() {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"yuxunn"},"content":" String[] type \u003d new String[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"yuxunn"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"yuxunn"},"content":" try (FileReader fileReader \u003d new FileReader(fileDir)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"yuxunn"},"content":" Scanner scanner \u003d new Scanner(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"yuxunn"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"yuxunn"},"content":" if (type.length \u003e count) {","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"yuxunn"},"content":" count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"yuxunn"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"yuxunn"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"yuxunn"},"content":" if (parts.length \u003e\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"yuxunn"},"content":" type[count] \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"yuxunn"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"yuxunn"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"yuxunn"},"content":" return type;","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"yuxunn"},"content":" public String[] loadActions() {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"yuxunn"},"content":" String[] actions \u003d new String[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"yuxunn"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"yuxunn"},"content":" try (FileReader fileReader \u003d new FileReader(fileDir)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"yuxunn"},"content":" Scanner scanner \u003d new Scanner(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"yuxunn"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"yuxunn"},"content":" if (actions.length \u003e count) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"yuxunn"},"content":" count \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"yuxunn"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"yuxunn"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"yuxunn"},"content":" if (parts.length \u003e\u003d 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"yuxunn"},"content":" actions[count] \u003d parts[0];","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"yuxunn"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"yuxunn"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"yuxunn"},"content":" return actions;","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"yuxunn"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"yuxunn":124}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yuxunn"},"content":" public static String[] actions;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yuxunn"},"content":" public static boolean[] isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yuxunn"},"content":" public static String[] type;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yuxunn"},"content":" public static int counter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yuxunn"},"content":" public static String[] dueString \u003d new String[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yuxunn"},"content":" public static LocalDateTime[] startTime \u003d new LocalDateTime[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"yuxunn"},"content":" public static LocalDateTime[] endTime\u003d new LocalDateTime[100];","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yuxunn"},"content":" public TaskList(String[] actions, boolean[] isDone, String[] type, int counter){","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yuxunn"},"content":" TaskList.actions \u003d actions;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"yuxunn"},"content":" TaskList.isDone \u003d isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"yuxunn"},"content":" TaskList.type \u003d type;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yuxunn"},"content":" TaskList.counter \u003d counter;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yuxunn"},"content":" public static void todo(String action) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yuxunn"},"content":" isDone[counter] \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yuxunn"},"content":" actions[counter] \u003d action;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yuxunn"},"content":" type[counter] \u003d \"T\";","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yuxunn"},"content":" counter\u003d counter + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + helper(action, \"T\", false));","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Now you have \" + counter + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yuxunn"},"content":" public static String helper(String task, String taskType, boolean isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yuxunn"},"content":" String taskIcon;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"yuxunn"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"yuxunn"},"content":" taskIcon \u003d \"[T]\";","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"yuxunn"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"yuxunn"},"content":" taskIcon \u003d \"[D]\";","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"yuxunn"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"yuxunn"},"content":" taskIcon \u003d \"[E]\";","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"yuxunn"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"yuxunn"},"content":" taskIcon \u003d \"[ ]\";","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"yuxunn"},"content":" return taskIcon + \"[\" + (isDone ? \"X\" : \" \") + \"] \" + task;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"yuxunn"},"content":" public static void deadline(String action, String due, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"yuxunn"},"content":" String byString \u003d due.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"yuxunn"},"content":" dueString[counter] \u003d byString;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"yuxunn"},"content":" actions[counter] \u003d action;","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"yuxunn"},"content":" // System.out.println(action + \"hello\");","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"yuxunn"},"content":" type[counter] \u003d \"D\";","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"yuxunn"},"content":" isDone[counter] \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"yuxunn"},"content":" counter \u003d counter + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + helper(action, \"D\", false) + \" (by\" + \" \" + byString + \")\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Now you have \" + counter + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"yuxunn"},"content":" public static void event(String action, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"yuxunn"},"content":" String from \u003d start.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"yuxunn"},"content":" String to \u003d end.trim();","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"yuxunn"},"content":" LocalDateTime startTimeEvent \u003d helper2(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"yuxunn"},"content":" LocalDateTime endTimeEvent \u003d helper2(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"yuxunn"},"content":" startTime[counter] \u003d startTimeEvent;","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yuxunn"},"content":" endTime[counter] \u003d endTimeEvent;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"yuxunn"},"content":" actions[counter] \u003d action;","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"yuxunn"},"content":" isDone[counter] \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"yuxunn"},"content":" type[counter] \u003d \"E\";","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"yuxunn"},"content":" counter \u003d counter + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + helper(action, \"E\", false) + \" (from: \" + from + \" to: \" + to + \")\");","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Now you have \" + counter + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"yuxunn"},"content":" private static LocalDateTime helper2 (String dateTimeStr) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"yuxunn"},"content":" DateTimeFormatter DMYhelper \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"yuxunn"},"content":" // HHmm for the hour and minutes","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"yuxunn"},"content":" return LocalDateTime.parse(dateTimeStr, DMYhelper);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"yuxunn"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yuxunn":81}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Hello! I\u0027m Bob\\nWhat can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yuxunn"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yuxunn"},"content":" System.out.println(\"Error\");","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"yuxunn"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"yuxunn":11}},{"path":"src/test/java/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yuxunn"},"content":"import duke.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yuxunn"},"content":"import duke.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yuxunn"},"content":"import java.io.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yuxunn"},"content":"public class DukeTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yuxunn"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yuxunn"},"content":" public void testTodoCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yuxunn"},"content":" Duke duke \u003d new Duke(\"./data/duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yuxunn"},"content":" // Simulate user input to add a \"todo\" task","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"yuxunn"},"content":" String simulatedUserInput \u003d \"todo Read a book\\nbye\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"yuxunn"},"content":" InputStream inputStream \u003d new ByteArrayInputStream(simulatedUserInput.getBytes());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yuxunn"},"content":" System.setIn(inputStream);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yuxunn"},"content":" // Redirect output to capture Duke\u0027s responses","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yuxunn"},"content":" ByteArrayOutputStream outputStream \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yuxunn"},"content":" System.setOut(new PrintStream(outputStream));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yuxunn"},"content":" // Run Duke","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yuxunn"},"content":" duke.run();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yuxunn"},"content":" // Capture Duke\u0027s output","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yuxunn"},"content":" String dukeOutput \u003d outputStream.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yuxunn"},"content":" // Check if Duke\u0027s output contains the added \"todo\" task","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yuxunn"},"content":" assertTrue(dukeOutput.contains(\"Got it. I\u0027ve added this task:\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yuxunn"},"content":" assertTrue(dukeOutput.contains(\"[T][ ] Read a book\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"yuxunn"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"yuxunn"},"content":" public void testDeadlineCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"yuxunn"},"content":" Duke duke \u003d new Duke(\"./data/duke.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"yuxunn"},"content":" // Simulate user input to add a \"deadline\" task","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"yuxunn"},"content":" String simulatedUserInput \u003d \"deadline Finish report /by 30/08/2023 1430\\nbye\\n\";","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"yuxunn"},"content":" InputStream inputStream \u003d new ByteArrayInputStream(simulatedUserInput.getBytes());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"yuxunn"},"content":" System.setIn(inputStream);","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"yuxunn"},"content":" // Redirect output to capture Duke\u0027s responses","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"yuxunn"},"content":" ByteArrayOutputStream outputStream \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"yuxunn"},"content":" System.setOut(new PrintStream(outputStream));","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"yuxunn"},"content":" // Run Duke","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"yuxunn"},"content":" duke.run();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"yuxunn"},"content":" // Capture Duke\u0027s output","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"yuxunn"},"content":" String dukeOutput \u003d outputStream.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"yuxunn"},"content":" // Check if Duke\u0027s output contains the added \"deadline\" task and displays it correctly","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"yuxunn"},"content":" assertTrue(dukeOutput.contains(\"Got it. I\u0027ve added this task:\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"yuxunn"},"content":" assertTrue(dukeOutput.contains(\"[D][ ] Finish report (by 30/08/2023 1430)\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"yuxunn"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"yuxunn"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"yuxunn"},"content":"","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"yuxunn":60}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yuxunn"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"yuxunn"},"content":"todo sleep","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"yuxunn"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"yuxunn"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"yuxunn"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yuxunn":5}},{"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":"yuxunn"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"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":{"yuxunn":1,"-":20}}] diff --git a/yuxunn_ip_master/commits.json b/yuxunn_ip_master/commits.json index 2e40b4f9..65b8e775 100644 --- a/yuxunn_ip_master/commits.json +++ b/yuxunn_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yuxunn":[{"date":"2023-08-24","commitResults":[{"hash":"63c4e45d3f7c90701a503cf27623c3ea8c49b2c2","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"c63cb01ca540ba376c16c1f383defe5ca29a7d91","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}},{"hash":"254bf9f5119a6a7ede9c6c1901ba5543d84d0dc0","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"9ae23e8d7cb55558284acac4f607cced2d769903","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":10}}},{"hash":"15bfd04d10172ac03f4c6e3f455a3861451da671","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":10}}},{"hash":"648cd7b844599eac140e61148fe2b14033fcf52b","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":7}}},{"hash":"5e87e07dc3a8c175f70a42a903da1668ed6a96fc","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":27,"deletions":18}}},{"hash":"a64bc139910d9520f9e5b754864436fdd79d13a8","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":2},"java":{"insertions":11,"deletions":11}}},{"hash":"ef07abd9bdff5a1b7afb8438db9220fe38c2267a","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":6},"java":{"insertions":4,"deletions":4}}},{"hash":"efdab49454947fcdc6c84b471a842b3c8ef97fa1","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"e62d6378fa6eaa787c0f89d085806dd20ddcd5cb","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":14}}},{"hash":"022d59d1cef6677a82558112f74971b52a913075","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"be1e7b6f52cb53c85eb8f0186b7d34b62e2da1ef","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"9636586598ec9bcd71a82ec0e4cabd17b51c3021","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":30,"deletions":12}}},{"hash":"6e3a6ee0f24d14bcf60ffcfd298d33b3e7971849","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"ea9ee039a36d1ab458a462e2f96a281cfe760876","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["AMoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":1},"java":{"insertions":331,"deletions":150}}}]}]},"authorFileTypeContributionMap":{"yuxunn":{"java":340,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"yuxunn":27697.654},"authorDisplayNameMap":{"yuxunn":"CS2103T-F08-2 TEE .. XUN"}} +{"authorDailyContributionsMap":{"yuxunn":[{"date":"2023-08-24","commitResults":[{"hash":"63c4e45d3f7c90701a503cf27623c3ea8c49b2c2","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"c63cb01ca540ba376c16c1f383defe5ca29a7d91","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}},{"hash":"254bf9f5119a6a7ede9c6c1901ba5543d84d0dc0","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"9ae23e8d7cb55558284acac4f607cced2d769903","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":10}}},{"hash":"15bfd04d10172ac03f4c6e3f455a3861451da671","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":10}}},{"hash":"648cd7b844599eac140e61148fe2b14033fcf52b","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":7}}},{"hash":"5e87e07dc3a8c175f70a42a903da1668ed6a96fc","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":27,"deletions":18}}},{"hash":"a64bc139910d9520f9e5b754864436fdd79d13a8","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":2},"java":{"insertions":11,"deletions":11}}},{"hash":"ef07abd9bdff5a1b7afb8438db9220fe38c2267a","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":6},"java":{"insertions":4,"deletions":4}}},{"hash":"efdab49454947fcdc6c84b471a842b3c8ef97fa1","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"e62d6378fa6eaa787c0f89d085806dd20ddcd5cb","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":14}}},{"hash":"022d59d1cef6677a82558112f74971b52a913075","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"be1e7b6f52cb53c85eb8f0186b7d34b62e2da1ef","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"9636586598ec9bcd71a82ec0e4cabd17b51c3021","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":30,"deletions":12}}},{"hash":"6e3a6ee0f24d14bcf60ffcfd298d33b3e7971849","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"ea9ee039a36d1ab458a462e2f96a281cfe760876","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["AMoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":1},"java":{"insertions":331,"deletions":150}}}]},{"date":"2023-09-01","commitResults":[{"hash":"34edb92e460dcc247a8cfb9afc032fb2650d02d2","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":9},"java":{"insertions":23,"deletions":12},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"8aab7d9998b930c3ed2d63087fce67713a73564e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"9979f5391ed8e90a7409c0974a60ef4a131ae9a5","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 into branch-A-Packages","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bbf821e9ca49a63be989f6044cfeebc96cfc935e","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":2,"deletions":1}}},{"hash":"59e4224ec3bebc5373e657e0b9bc934bb1305d33","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"abf148de728c446b25d854ce275a6be088c570ec","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":3},"java":{"insertions":63,"deletions":3}}},{"hash":"31cfd63bd78ca29170ebc6fae6ec0d2dfe23cfe4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yuxunn":{"java":413,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":21}},"authorContributionVariance":{"yuxunn":26233.178},"authorDisplayNameMap":{"yuxunn":"CS2103T-F08-2 TEE .. XUN"}} diff --git a/yytan25_ip_master/authorship.json b/yytan25_ip_master/authorship.json index 3c404ed2..6903cabd 100644 --- a/yytan25_ip_master/authorship.json +++ b/yytan25_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":" protected LocalDateTime due;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":" public Deadline(String details, LocalDateTime due) {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":" super(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":" this.due \u003d due;","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" public Deadline(String details, boolean isCompleted, LocalDateTime due) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":" super(details, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" this.due \u003d due;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" SimpleDateFormat dateFormatter \u003d new SimpleDateFormat(\"E, dd MMM yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" return \"[D]\" + super.toString() + \" (by: \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" dateFormatter.format(this.due.toLocalDate()) + \" \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" this.due.toLocalTime().toString() + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"yytan25":24}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"import java.io.File;","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":"import java.util.InputMismatchException;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":" private boolean isRunning \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" private final ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" private int numOfTasks \u003d 0;","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" private int numOfCompletedTasks \u003d 0;","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" private int consecInvalidInputCount \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" private final String name;","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" public enum TaskType {","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" TASK, TODO, DEADLINE, EVENT","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":" public enum Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" TASK, TODO, DEADLINE, EVENT, LIST, MARK, UNMARK, DELETE, COMMANDS, BYE","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":" public Duke() throws IOException {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":" this.name \u003d \"Meg\";","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"yytan25"},"content":" this.run();","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"yytan25"},"content":" public void run() throws IOException {","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"yytan25"},"content":" this.launchOnStart();","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"yytan25"},"content":" this.readTasksFromDisk(\"./data/tasks.txt\");","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"yytan25"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"yytan25"},"content":" System.out.println(\"File not found. Please check your directory and try again.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"yytan25"},"content":" this.exit(2);","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"yytan25"},"content":" this.printSelfIntroduction();","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"yytan25"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"yytan25"},"content":" while (this.isRunning) {","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"yytan25"},"content":" if (this.consecInvalidInputCount \u003e\u003d 10) {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"yytan25"},"content":" this.exit(1);","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"yytan25"},"content":" } else if (this.consecInvalidInputCount \u003d\u003d 8) {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"yytan25"},"content":" System.out.println(\"If you keep giving me nonsense, I\u0027m leaving!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"yytan25"},"content":" String msg \u003d sc.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"yytan25"},"content":" this.readInput(msg);","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":54,"author":{"gitId":"yytan25"},"content":" this.exit(0);","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"yytan25"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"yytan25"},"content":" * Greets the user and creates the requisite folder and text file, if required.","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"yytan25"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"yytan25"},"content":" public void launchOnStart() {","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"yytan25"},"content":" File f \u003d new File(\"./data\");","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"yytan25"},"content":" if (f.mkdirs()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Welcome, new user! I\u0027m %s!%n\" +","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"yytan25"},"content":" \"Hope you have a great time!%n\", this.name);","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Welcome back, friend!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"yytan25"},"content":" File file \u003d new File(\"./data/tasks.txt\");","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"yytan25"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Your tasks will be automatically saved.%n\" + \"\\n\" +","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"yytan25"},"content":" \"Feeling overwhelmed in school and having trouble remembering commitments?%n\" +","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"yytan25"},"content":" \"I\u0027m here to help!%n\");","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Tasks from previous session loaded successfully!\");","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"yytan25"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Due to technical issues, I\u0027m only available in guest mode.%n\" +","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"yytan25"},"content":" \"I sincerely apologise to the inconvenience caused.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"yytan25"},"content":" } finally {","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"yytan25"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":84,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":85,"author":{"gitId":"yytan25"},"content":" public void printHorizontalLine() {","lastModifiedDate":"2023-08-20"},{"lineNumber":86,"author":{"gitId":"yytan25"},"content":" for (int i \u003d 0; i \u003c 20; i++) {","lastModifiedDate":"2023-08-19"},{"lineNumber":87,"author":{"gitId":"yytan25"},"content":" System.out.print(\"-\");","lastModifiedDate":"2023-08-19"},{"lineNumber":88,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":89,"author":{"gitId":"yytan25"},"content":" System.out.println();","lastModifiedDate":"2023-08-19"},{"lineNumber":90,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":91,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":92,"author":{"gitId":"yytan25"},"content":" public void printCommands() {","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mtask\\033[0m - Create a new task%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mtodo\\033[0m - Create a new todo%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mdeadline\\033[0m - Create a new deadline%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mevent\\033[0m - Create a new event%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mlist\\033[0m - View your current tasks and completion status%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mmark\\033[0m - Mark a task as complete%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3munmark\\033[0m - Mark a task as incomplete%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mdelete\\033[0m - Delete a task%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mbye\\033[0m - Exit the program%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"yytan25"},"content":" this.consecInvalidInputCount \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"yytan25"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-19"},{"lineNumber":104,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"yytan25"},"content":" public void printSelfIntroduction() {","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"yytan25"},"content":" System.out.println(\"I support the following commands:\" + \"\\n\");","lastModifiedDate":"2023-08-26"},{"lineNumber":108,"author":{"gitId":"yytan25"},"content":" printCommands();","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"yytan25"},"content":" public void printEndOfOperation() {","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"yytan25"},"content":" System.out.println();","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Anything else you want me to do?%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Just so you know, you can input \\033[3mcommands\\033[0m \" +","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"yytan25"},"content":" \"to view the commands again.%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"yytan25"},"content":" this.consecInvalidInputCount \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"yytan25"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"yytan25"},"content":" public void readTasksFromDisk(String filePath) throws FileNotFoundException,","lastModifiedDate":"2023-08-26"},{"lineNumber":121,"author":{"gitId":"yytan25"},"content":" IllegalArgumentException {","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"yytan25"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"yytan25"},"content":" Scanner sc \u003d new Scanner(f);","lastModifiedDate":"2023-08-26"},{"lineNumber":124,"author":{"gitId":"yytan25"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":125,"author":{"gitId":"yytan25"},"content":" String[] args \u003d sc.nextLine().split(\"-\", -1);","lastModifiedDate":"2023-08-26"},{"lineNumber":126,"author":{"gitId":"yytan25"},"content":" TaskType type;","lastModifiedDate":"2023-08-26"},{"lineNumber":127,"author":{"gitId":"yytan25"},"content":" LocalDateTime due \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"yytan25"},"content":" LocalDateTime start \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"yytan25"},"content":" LocalDateTime end \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":131,"author":{"gitId":"yytan25"},"content":" type \u003d TaskType.valueOf(args[0].toUpperCase());","lastModifiedDate":"2023-08-26"},{"lineNumber":132,"author":{"gitId":"yytan25"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":133,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Task not found\");","lastModifiedDate":"2023-08-26"},{"lineNumber":134,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-08-26"},{"lineNumber":135,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":136,"author":{"gitId":"yytan25"},"content":" String details \u003d args[1];","lastModifiedDate":"2023-08-26"},{"lineNumber":137,"author":{"gitId":"yytan25"},"content":" boolean isCompleted \u003d args[2].equals(\"Y\");","lastModifiedDate":"2023-08-26"},{"lineNumber":138,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"yytan25"},"content":" if (type \u003d\u003d TaskType.DEADLINE) {","lastModifiedDate":"2023-08-26"},{"lineNumber":140,"author":{"gitId":"yytan25"},"content":" due \u003d LocalDateTime.parse(args[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"yytan25"},"content":" } else if (type \u003d\u003d TaskType.EVENT) {","lastModifiedDate":"2023-08-26"},{"lineNumber":142,"author":{"gitId":"yytan25"},"content":" start \u003d LocalDateTime.parse(args[3]);","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"yytan25"},"content":" end \u003d LocalDateTime.parse(args[4]);","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"yytan25"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Could not retrieve date and/or time\");","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":149,"author":{"gitId":"yytan25"},"content":" switch (type) {","lastModifiedDate":"2023-08-26"},{"lineNumber":150,"author":{"gitId":"yytan25"},"content":" case TASK:","lastModifiedDate":"2023-08-26"},{"lineNumber":151,"author":{"gitId":"yytan25"},"content":" Task t \u003d new Task(details, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":152,"author":{"gitId":"yytan25"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-26"},{"lineNumber":153,"author":{"gitId":"yytan25"},"content":" this.numOfTasks++;","lastModifiedDate":"2023-08-26"},{"lineNumber":154,"author":{"gitId":"yytan25"},"content":" if (t.isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":155,"author":{"gitId":"yytan25"},"content":" this.numOfCompletedTasks++;","lastModifiedDate":"2023-08-26"},{"lineNumber":156,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":157,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":158,"author":{"gitId":"yytan25"},"content":" case TODO:","lastModifiedDate":"2023-08-26"},{"lineNumber":159,"author":{"gitId":"yytan25"},"content":" ToDo todo \u003d new ToDo(details, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":160,"author":{"gitId":"yytan25"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-26"},{"lineNumber":161,"author":{"gitId":"yytan25"},"content":" this.numOfTasks++;","lastModifiedDate":"2023-08-26"},{"lineNumber":162,"author":{"gitId":"yytan25"},"content":" if (todo.isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":163,"author":{"gitId":"yytan25"},"content":" this.numOfCompletedTasks++;","lastModifiedDate":"2023-08-26"},{"lineNumber":164,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":165,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":166,"author":{"gitId":"yytan25"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-26"},{"lineNumber":167,"author":{"gitId":"yytan25"},"content":" Deadline d \u003d new Deadline(details, isCompleted, due);","lastModifiedDate":"2023-08-26"},{"lineNumber":168,"author":{"gitId":"yytan25"},"content":" tasks.add(d);","lastModifiedDate":"2023-08-26"},{"lineNumber":169,"author":{"gitId":"yytan25"},"content":" this.numOfTasks++;","lastModifiedDate":"2023-08-26"},{"lineNumber":170,"author":{"gitId":"yytan25"},"content":" if (d.isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":171,"author":{"gitId":"yytan25"},"content":" this.numOfCompletedTasks++;","lastModifiedDate":"2023-08-26"},{"lineNumber":172,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":173,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":174,"author":{"gitId":"yytan25"},"content":" case EVENT:","lastModifiedDate":"2023-08-26"},{"lineNumber":175,"author":{"gitId":"yytan25"},"content":" Event e \u003d new Event(details, isCompleted, start, end);","lastModifiedDate":"2023-08-26"},{"lineNumber":176,"author":{"gitId":"yytan25"},"content":" tasks.add(e);","lastModifiedDate":"2023-08-26"},{"lineNumber":177,"author":{"gitId":"yytan25"},"content":" this.numOfTasks++;","lastModifiedDate":"2023-08-26"},{"lineNumber":178,"author":{"gitId":"yytan25"},"content":" if (e.isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":179,"author":{"gitId":"yytan25"},"content":" this.numOfCompletedTasks++;","lastModifiedDate":"2023-08-26"},{"lineNumber":180,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":181,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":182,"author":{"gitId":"yytan25"},"content":" default:","lastModifiedDate":"2023-08-26"},{"lineNumber":183,"author":{"gitId":"yytan25"},"content":" // Shouldn\u0027t reach here","lastModifiedDate":"2023-08-26"},{"lineNumber":184,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":185,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":186,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":187,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":188,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":189,"author":{"gitId":"yytan25"},"content":" public boolean checkValidTask(String details) {","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"yytan25"},"content":" return !details.isEmpty();","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"yytan25"},"content":" public boolean checkDuplicates(String details) {","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"yytan25"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"yytan25"},"content":" if (details.equals(t.getDetails())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"yytan25"},"content":" return true;","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"yytan25"},"content":" return false;","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":201,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":202,"author":{"gitId":"yytan25"},"content":" public void readInput(String message) {","lastModifiedDate":"2023-08-20"},{"lineNumber":203,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"yytan25"},"content":" executeCommand(Command.valueOf(message.toUpperCase()));","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"yytan25"},"content":" catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"I\u0027m just a robot!%n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"yytan25"},"content":" \"I don\u0027t understand what %s is!%n\", message);","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"yytan25"},"content":" this.consecInvalidInputCount++;","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"yytan25"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"yytan25"},"content":" public void executeCommand(Command command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"yytan25"},"content":" switch (command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"yytan25"},"content":" case TASK:","lastModifiedDate":"2023-08-24"},{"lineNumber":217,"author":{"gitId":"yytan25"},"content":" this.createTask();","lastModifiedDate":"2023-08-24"},{"lineNumber":218,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"yytan25"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"yytan25"},"content":" this.createToDo();","lastModifiedDate":"2023-08-24"},{"lineNumber":221,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":222,"author":{"gitId":"yytan25"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"yytan25"},"content":" this.createDeadline();","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"yytan25"},"content":" case EVENT:","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"yytan25"},"content":" this.createEvent();","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":228,"author":{"gitId":"yytan25"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"yytan25"},"content":" this.list();","lastModifiedDate":"2023-08-20"},{"lineNumber":230,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":231,"author":{"gitId":"yytan25"},"content":" case MARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"yytan25"},"content":" this.markAsComplete();","lastModifiedDate":"2023-08-20"},{"lineNumber":233,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":234,"author":{"gitId":"yytan25"},"content":" case UNMARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"yytan25"},"content":" this.markAsIncomplete();","lastModifiedDate":"2023-08-20"},{"lineNumber":236,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":237,"author":{"gitId":"yytan25"},"content":" case DELETE:","lastModifiedDate":"2023-08-24"},{"lineNumber":238,"author":{"gitId":"yytan25"},"content":" this.deleteTask();","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":240,"author":{"gitId":"yytan25"},"content":" case COMMANDS:","lastModifiedDate":"2023-08-24"},{"lineNumber":241,"author":{"gitId":"yytan25"},"content":" this.printCommands();","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":243,"author":{"gitId":"yytan25"},"content":" case BYE:","lastModifiedDate":"2023-08-24"},{"lineNumber":244,"author":{"gitId":"yytan25"},"content":" this.isRunning \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":245,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":246,"author":{"gitId":"yytan25"},"content":" default:","lastModifiedDate":"2023-08-26"},{"lineNumber":247,"author":{"gitId":"yytan25"},"content":" // Shouldn\u0027t reach here","lastModifiedDate":"2023-08-26"},{"lineNumber":248,"author":{"gitId":"yytan25"},"content":" // Input errors should already be caught in the readInput() method.","lastModifiedDate":"2023-08-26"},{"lineNumber":249,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":250,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":251,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":252,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":253,"author":{"gitId":"yytan25"},"content":" public String checkUserInput(String taskType, String input) {","lastModifiedDate":"2023-08-24"},{"lineNumber":254,"author":{"gitId":"yytan25"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":255,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Input %s %s.%n\", taskType, input);","lastModifiedDate":"2023-08-24"},{"lineNumber":256,"author":{"gitId":"yytan25"},"content":" String message \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":258,"author":{"gitId":"yytan25"},"content":" if (!checkValidTask(message)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":259,"author":{"gitId":"yytan25"},"content":" if (taskType.equals(\"deadline\") \u0026\u0026","lastModifiedDate":"2023-08-31"},{"lineNumber":260,"author":{"gitId":"yytan25"},"content":" input.equals(\"due time (Optional, Required format: HH:MM)\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":261,"author":{"gitId":"yytan25"},"content":" return \"23:59\";","lastModifiedDate":"2023-08-31"},{"lineNumber":262,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":263,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"The %s %s cannot be empty.%n\", taskType, input);","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"yytan25"},"content":" printEndOfOperation();","lastModifiedDate":"2023-08-24"},{"lineNumber":265,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":266,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":267,"author":{"gitId":"yytan25"},"content":" } else if (checkDuplicates(message)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":268,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Task %s already exists.%n\", message);","lastModifiedDate":"2023-08-24"},{"lineNumber":269,"author":{"gitId":"yytan25"},"content":" printEndOfOperation();","lastModifiedDate":"2023-08-24"},{"lineNumber":270,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":271,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":272,"author":{"gitId":"yytan25"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":273,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Invalid date or time format. Please try again.%n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":274,"author":{"gitId":"yytan25"},"content":" printEndOfOperation();","lastModifiedDate":"2023-08-31"},{"lineNumber":275,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":276,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":277,"author":{"gitId":"yytan25"},"content":" return message;","lastModifiedDate":"2023-08-24"},{"lineNumber":278,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":279,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":280,"author":{"gitId":"yytan25"},"content":" public void createTask() {","lastModifiedDate":"2023-08-24"},{"lineNumber":281,"author":{"gitId":"yytan25"},"content":" String details \u003d checkUserInput(\"task\", \"details\");","lastModifiedDate":"2023-08-24"},{"lineNumber":282,"author":{"gitId":"yytan25"},"content":" if (details !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":283,"author":{"gitId":"yytan25"},"content":" tasks.add(new Task(details));","lastModifiedDate":"2023-08-24"},{"lineNumber":284,"author":{"gitId":"yytan25"},"content":" numOfTasks++;","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Don\u0027t expect me to %s for you!%n\", details);","lastModifiedDate":"2023-08-24"},{"lineNumber":286,"author":{"gitId":"yytan25"},"content":" printEndOfOperation();","lastModifiedDate":"2023-08-24"},{"lineNumber":287,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":288,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":289,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":290,"author":{"gitId":"yytan25"},"content":" public void createToDo() {","lastModifiedDate":"2023-08-24"},{"lineNumber":291,"author":{"gitId":"yytan25"},"content":" String details \u003d checkUserInput(\"todo\", \"details\");","lastModifiedDate":"2023-08-24"},{"lineNumber":292,"author":{"gitId":"yytan25"},"content":" if (details !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":293,"author":{"gitId":"yytan25"},"content":" tasks.add(new ToDo(details));","lastModifiedDate":"2023-08-24"},{"lineNumber":294,"author":{"gitId":"yytan25"},"content":" numOfTasks++;","lastModifiedDate":"2023-08-24"},{"lineNumber":295,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Stop talking to me! Go and %s!%n\", details);","lastModifiedDate":"2023-08-24"},{"lineNumber":296,"author":{"gitId":"yytan25"},"content":" printEndOfOperation();","lastModifiedDate":"2023-08-24"},{"lineNumber":297,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":298,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":299,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":300,"author":{"gitId":"yytan25"},"content":" public void createDeadline() {","lastModifiedDate":"2023-08-24"},{"lineNumber":301,"author":{"gitId":"yytan25"},"content":" String details \u003d checkUserInput(\"deadline\",\"details\");","lastModifiedDate":"2023-08-24"},{"lineNumber":302,"author":{"gitId":"yytan25"},"content":" if (details \u003d\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":303,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":304,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":305,"author":{"gitId":"yytan25"},"content":" LocalDate dueDate \u003d LocalDate.parse(checkUserInput(\"deadline\",","lastModifiedDate":"2023-08-31"},{"lineNumber":306,"author":{"gitId":"yytan25"},"content":" \"due date (Required format: YYYY-MM-DD)\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":307,"author":{"gitId":"yytan25"},"content":" LocalTime dueTime \u003d LocalTime.parse(checkUserInput(\"deadline\",","lastModifiedDate":"2023-08-31"},{"lineNumber":308,"author":{"gitId":"yytan25"},"content":" \"due time (Optional, Required format: HH:MM)\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":309,"author":{"gitId":"yytan25"},"content":" LocalDateTime due \u003d dueTime.atDate(dueDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":310,"author":{"gitId":"yytan25"},"content":" tasks.add(new Deadline(details, due));","lastModifiedDate":"2023-08-24"},{"lineNumber":311,"author":{"gitId":"yytan25"},"content":" numOfTasks++;","lastModifiedDate":"2023-08-24"},{"lineNumber":312,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Just saying, better %s now.%n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":313,"author":{"gitId":"yytan25"},"content":" \"Not like it\u0027s my problem if you don\u0027t.%n\", details);","lastModifiedDate":"2023-08-24"},{"lineNumber":314,"author":{"gitId":"yytan25"},"content":" printEndOfOperation();","lastModifiedDate":"2023-08-24"},{"lineNumber":315,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":316,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":317,"author":{"gitId":"yytan25"},"content":" public void createEvent() {","lastModifiedDate":"2023-08-24"},{"lineNumber":318,"author":{"gitId":"yytan25"},"content":" String details \u003d checkUserInput(\"event\", \"details\");","lastModifiedDate":"2023-08-24"},{"lineNumber":319,"author":{"gitId":"yytan25"},"content":" if (details \u003d\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":320,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":321,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":322,"author":{"gitId":"yytan25"},"content":" LocalDate startDate \u003d LocalDate.parse(checkUserInput(\"event\",","lastModifiedDate":"2023-08-31"},{"lineNumber":323,"author":{"gitId":"yytan25"},"content":" \"start date (Required format: YYYY-MM-DD)\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":324,"author":{"gitId":"yytan25"},"content":" LocalTime startTime \u003d LocalTime.parse(checkUserInput(\"event\",","lastModifiedDate":"2023-08-31"},{"lineNumber":325,"author":{"gitId":"yytan25"},"content":" \"start time (Required format: HH:MM)\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":326,"author":{"gitId":"yytan25"},"content":" LocalDate endDate \u003d LocalDate.parse(checkUserInput(\"event\",","lastModifiedDate":"2023-08-31"},{"lineNumber":327,"author":{"gitId":"yytan25"},"content":" \"end date (Required format: YYYY-MM-DD)\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":328,"author":{"gitId":"yytan25"},"content":" LocalTime endTime \u003d LocalTime.parse(checkUserInput(\"event\",","lastModifiedDate":"2023-08-31"},{"lineNumber":329,"author":{"gitId":"yytan25"},"content":" \"end time (Required format: HH:MM)\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":330,"author":{"gitId":"yytan25"},"content":" LocalDateTime start \u003d startTime.atDate(startDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":331,"author":{"gitId":"yytan25"},"content":" LocalDateTime end \u003d endTime.atDate(endDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":332,"author":{"gitId":"yytan25"},"content":" tasks.add(new Event(details, start, end));","lastModifiedDate":"2023-08-24"},{"lineNumber":333,"author":{"gitId":"yytan25"},"content":" numOfTasks++;","lastModifiedDate":"2023-08-24"},{"lineNumber":334,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Wow, you have a %s at %s?%n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":335,"author":{"gitId":"yytan25"},"content":" \"Uhh, n-not like I wanna join you!%n\", details, start);","lastModifiedDate":"2023-08-24"},{"lineNumber":336,"author":{"gitId":"yytan25"},"content":" printEndOfOperation();","lastModifiedDate":"2023-08-24"},{"lineNumber":337,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":338,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":339,"author":{"gitId":"yytan25"},"content":" public void list() {","lastModifiedDate":"2023-08-20"},{"lineNumber":340,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"You have %d tasks. (%d complete, %d incomplete)%n\",","lastModifiedDate":"2023-08-21"},{"lineNumber":341,"author":{"gitId":"yytan25"},"content":" numOfTasks, numOfCompletedTasks, numOfTasks - numOfCompletedTasks);","lastModifiedDate":"2023-08-21"},{"lineNumber":342,"author":{"gitId":"yytan25"},"content":" for (int i \u003d 0; i \u003c numOfTasks; i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":343,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"%d. \" + tasks.get(i).toString()","lastModifiedDate":"2023-08-20"},{"lineNumber":344,"author":{"gitId":"yytan25"},"content":" + \"%n\", i + 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":345,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":346,"author":{"gitId":"yytan25"},"content":" if (numOfCompletedTasks \u003d\u003d numOfTasks) {","lastModifiedDate":"2023-08-21"},{"lineNumber":347,"author":{"gitId":"yytan25"},"content":" System.out.println(\"You\u0027ve completed all your tasks. Good for you.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":348,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":349,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Don\u0027t expect me to remember them for you!\");","lastModifiedDate":"2023-08-20"},{"lineNumber":350,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":351,"author":{"gitId":"yytan25"},"content":" printEndOfOperation();","lastModifiedDate":"2023-08-24"},{"lineNumber":352,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":353,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":354,"author":{"gitId":"yytan25"},"content":" public void markAsComplete() {","lastModifiedDate":"2023-08-20"},{"lineNumber":355,"author":{"gitId":"yytan25"},"content":" if (this.numOfTasks \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":356,"author":{"gitId":"yytan25"},"content":" System.out.println(\"No tasks to mark.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":357,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Please create a task first.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":358,"author":{"gitId":"yytan25"},"content":" this.consecInvalidInputCount++;","lastModifiedDate":"2023-08-24"},{"lineNumber":359,"author":{"gitId":"yytan25"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":360,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":361,"author":{"gitId":"yytan25"},"content":" Integer taskNumber \u003d this.launchConfirmationScreen(\"mark as complete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":362,"author":{"gitId":"yytan25"},"content":" if (taskNumber !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":363,"author":{"gitId":"yytan25"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":364,"author":{"gitId":"yytan25"},"content":" if (!task.isCompleted) {","lastModifiedDate":"2023-08-20"},{"lineNumber":365,"author":{"gitId":"yytan25"},"content":" task.setCompleted();","lastModifiedDate":"2023-08-20"},{"lineNumber":366,"author":{"gitId":"yytan25"},"content":" this.numOfCompletedTasks++;","lastModifiedDate":"2023-08-21"},{"lineNumber":367,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Task %d set as complete.%n\", taskNumber);","lastModifiedDate":"2023-08-20"},{"lineNumber":368,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":369,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Task %d is already complete.%n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":370,"author":{"gitId":"yytan25"},"content":" \"Stop wasting my time!%n\", taskNumber);","lastModifiedDate":"2023-08-21"},{"lineNumber":371,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":372,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":373,"author":{"gitId":"yytan25"},"content":" printEndOfOperation();","lastModifiedDate":"2023-08-24"},{"lineNumber":374,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":375,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":376,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":377,"author":{"gitId":"yytan25"},"content":" public void markAsIncomplete() {","lastModifiedDate":"2023-08-20"},{"lineNumber":378,"author":{"gitId":"yytan25"},"content":" if (this.numOfCompletedTasks \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":379,"author":{"gitId":"yytan25"},"content":" System.out.println(\"No tasks to unmark.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":380,"author":{"gitId":"yytan25"},"content":" if (this.numOfTasks !\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":381,"author":{"gitId":"yytan25"},"content":" System.out.println(\"You have no completed tasks.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":382,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":383,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Please create a task first.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":384,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":385,"author":{"gitId":"yytan25"},"content":" this.consecInvalidInputCount++;","lastModifiedDate":"2023-08-24"},{"lineNumber":386,"author":{"gitId":"yytan25"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":387,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":388,"author":{"gitId":"yytan25"},"content":" Integer taskNumber \u003d this.launchConfirmationScreen(\"mark as incomplete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":389,"author":{"gitId":"yytan25"},"content":" if (taskNumber !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":390,"author":{"gitId":"yytan25"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":391,"author":{"gitId":"yytan25"},"content":" if (task.isCompleted) {","lastModifiedDate":"2023-08-20"},{"lineNumber":392,"author":{"gitId":"yytan25"},"content":" task.setIncomplete();","lastModifiedDate":"2023-08-20"},{"lineNumber":393,"author":{"gitId":"yytan25"},"content":" this.numOfCompletedTasks--;","lastModifiedDate":"2023-08-21"},{"lineNumber":394,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Task %d set as incomplete.%n\", taskNumber);","lastModifiedDate":"2023-08-20"},{"lineNumber":395,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":396,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Task %d is already incomplete.%n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":397,"author":{"gitId":"yytan25"},"content":" \"Stop wasting my time!%n\", taskNumber);","lastModifiedDate":"2023-08-21"},{"lineNumber":398,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":399,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":400,"author":{"gitId":"yytan25"},"content":" printEndOfOperation();","lastModifiedDate":"2023-08-24"},{"lineNumber":401,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":402,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":403,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":404,"author":{"gitId":"yytan25"},"content":" public void deleteTask() {","lastModifiedDate":"2023-08-24"},{"lineNumber":405,"author":{"gitId":"yytan25"},"content":" if (this.numOfTasks \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":406,"author":{"gitId":"yytan25"},"content":" System.out.println(\"No tasks to delete.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":407,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Please create a task first.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":408,"author":{"gitId":"yytan25"},"content":" this.consecInvalidInputCount++;","lastModifiedDate":"2023-08-24"},{"lineNumber":409,"author":{"gitId":"yytan25"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":410,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":411,"author":{"gitId":"yytan25"},"content":" Integer taskNumber \u003d this.launchConfirmationScreen(\"delete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":412,"author":{"gitId":"yytan25"},"content":" if (taskNumber !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":413,"author":{"gitId":"yytan25"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":414,"author":{"gitId":"yytan25"},"content":" if (task.isCompleted) {","lastModifiedDate":"2023-08-24"},{"lineNumber":415,"author":{"gitId":"yytan25"},"content":" this.numOfCompletedTasks--;","lastModifiedDate":"2023-08-24"},{"lineNumber":416,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":417,"author":{"gitId":"yytan25"},"content":" tasks.remove(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":418,"author":{"gitId":"yytan25"},"content":" this.numOfTasks--;","lastModifiedDate":"2023-08-24"},{"lineNumber":419,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Task %d deleted successfully.%n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":420,"author":{"gitId":"yytan25"},"content":" \"You now have %d tasks.%n\", taskNumber, this.numOfTasks);","lastModifiedDate":"2023-08-24"},{"lineNumber":421,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":422,"author":{"gitId":"yytan25"},"content":" printEndOfOperation();","lastModifiedDate":"2023-08-24"},{"lineNumber":423,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":424,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":425,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":426,"author":{"gitId":"yytan25"},"content":" public Integer launchConfirmationScreen(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":427,"author":{"gitId":"yytan25"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":428,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Please input the task number you wish to %s.%n\",","lastModifiedDate":"2023-08-20"},{"lineNumber":429,"author":{"gitId":"yytan25"},"content":" message);","lastModifiedDate":"2023-08-20"},{"lineNumber":430,"author":{"gitId":"yytan25"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":431,"author":{"gitId":"yytan25"},"content":" for (int i \u003d 0; i \u003c numOfTasks; i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":432,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"%d. \" + tasks.get(i).toString()","lastModifiedDate":"2023-08-20"},{"lineNumber":433,"author":{"gitId":"yytan25"},"content":" + \"%n\", i + 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":434,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":435,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-08-20"},{"lineNumber":436,"author":{"gitId":"yytan25"},"content":" int taskNumber \u003d sc.nextInt();","lastModifiedDate":"2023-08-24"},{"lineNumber":437,"author":{"gitId":"yytan25"},"content":" if (taskNumber \u003e numOfTasks || taskNumber \u003c 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":438,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Request unsuccessful. (reason: invalid task number)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":439,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":440,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":441,"author":{"gitId":"yytan25"},"content":" return taskNumber;","lastModifiedDate":"2023-08-24"},{"lineNumber":442,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":443,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":444,"author":{"gitId":"yytan25"},"content":" catch (InputMismatchException e) {","lastModifiedDate":"2023-08-20"},{"lineNumber":445,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Request unsuccessful. (reason: invalid input)\");","lastModifiedDate":"2023-08-24"},{"lineNumber":446,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-08-24"},{"lineNumber":447,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":448,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":449,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":450,"author":{"gitId":"yytan25"},"content":" public void saveTasksToDisk(String filePath) throws IOException {","lastModifiedDate":"2023-08-26"},{"lineNumber":451,"author":{"gitId":"yytan25"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-26"},{"lineNumber":452,"author":{"gitId":"yytan25"},"content":" BufferedWriter bw \u003d new BufferedWriter(fw);","lastModifiedDate":"2023-08-26"},{"lineNumber":453,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":454,"author":{"gitId":"yytan25"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-08-26"},{"lineNumber":455,"author":{"gitId":"yytan25"},"content":" if (t instanceof ToDo) {","lastModifiedDate":"2023-08-26"},{"lineNumber":456,"author":{"gitId":"yytan25"},"content":" bw.write(String.format(\"ToDo-%s-%c\",","lastModifiedDate":"2023-08-26"},{"lineNumber":457,"author":{"gitId":"yytan25"},"content":" t.getDetails(),","lastModifiedDate":"2023-08-26"},{"lineNumber":458,"author":{"gitId":"yytan25"},"content":" t.isCompleted ? \u0027Y\u0027 : \u0027N\u0027));","lastModifiedDate":"2023-08-26"},{"lineNumber":459,"author":{"gitId":"yytan25"},"content":" } else if (t instanceof Deadline) {","lastModifiedDate":"2023-08-26"},{"lineNumber":460,"author":{"gitId":"yytan25"},"content":" bw.write(String.format(\"Deadline-%s-%c-%s\",","lastModifiedDate":"2023-08-26"},{"lineNumber":461,"author":{"gitId":"yytan25"},"content":" t.getDetails(),","lastModifiedDate":"2023-08-26"},{"lineNumber":462,"author":{"gitId":"yytan25"},"content":" t.isCompleted ? \u0027Y\u0027 : \u0027N\u0027,","lastModifiedDate":"2023-08-26"},{"lineNumber":463,"author":{"gitId":"yytan25"},"content":" ((Deadline) t).due));","lastModifiedDate":"2023-08-26"},{"lineNumber":464,"author":{"gitId":"yytan25"},"content":" } else if (t instanceof Event) {","lastModifiedDate":"2023-08-26"},{"lineNumber":465,"author":{"gitId":"yytan25"},"content":" bw.write(String.format(\"Event-%s-%c-%s-%s\",","lastModifiedDate":"2023-08-26"},{"lineNumber":466,"author":{"gitId":"yytan25"},"content":" t.getDetails(),","lastModifiedDate":"2023-08-26"},{"lineNumber":467,"author":{"gitId":"yytan25"},"content":" t.isCompleted ? \u0027Y\u0027 : \u0027N\u0027,","lastModifiedDate":"2023-08-26"},{"lineNumber":468,"author":{"gitId":"yytan25"},"content":" ((Event) t).start,","lastModifiedDate":"2023-08-26"},{"lineNumber":469,"author":{"gitId":"yytan25"},"content":" ((Event) t).end));","lastModifiedDate":"2023-08-26"},{"lineNumber":470,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-26"},{"lineNumber":471,"author":{"gitId":"yytan25"},"content":" bw.write(String.format(\"Task-%s-%c\",","lastModifiedDate":"2023-08-26"},{"lineNumber":472,"author":{"gitId":"yytan25"},"content":" t.getDetails(),","lastModifiedDate":"2023-08-26"},{"lineNumber":473,"author":{"gitId":"yytan25"},"content":" t.isCompleted ? \u0027Y\u0027 : \u0027N\u0027));","lastModifiedDate":"2023-08-26"},{"lineNumber":474,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":475,"author":{"gitId":"yytan25"},"content":" bw.newLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":476,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":477,"author":{"gitId":"yytan25"},"content":" bw.flush();","lastModifiedDate":"2023-08-26"},{"lineNumber":478,"author":{"gitId":"yytan25"},"content":" bw.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":479,"author":{"gitId":"yytan25"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":480,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-26"},{"lineNumber":481,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":482,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":483,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":484,"author":{"gitId":"yytan25"},"content":" public void exit(int status) throws IOException {","lastModifiedDate":"2023-08-26"},{"lineNumber":485,"author":{"gitId":"yytan25"},"content":" this.saveTasksToDisk(\"./data/tasks.txt\");","lastModifiedDate":"2023-08-26"},{"lineNumber":486,"author":{"gitId":"yytan25"},"content":" if (status \u003d\u003d 1) {","lastModifiedDate":"2023-08-26"},{"lineNumber":487,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"I\u0027ve had enough of your nonsense!%n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":488,"author":{"gitId":"yytan25"},"content":" \"Don\u0027t let me see you again!%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":489,"author":{"gitId":"yytan25"},"content":" } else if (status \u003d\u003d 0) {","lastModifiedDate":"2023-08-26"},{"lineNumber":490,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Finally I can rest. Bye!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":491,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":492,"author":{"gitId":"yytan25"},"content":" printHorizontalLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":493,"author":{"gitId":"yytan25"},"content":" System.exit(0);","lastModifiedDate":"2023-08-24"},{"lineNumber":494,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":495,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":496,"author":{"gitId":"yytan25"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2023-08-26"},{"lineNumber":497,"author":{"gitId":"yytan25"},"content":" new Duke();","lastModifiedDate":"2023-08-19"},{"lineNumber":498,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":499,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"yytan25":496,"-":3}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":" public Event(String details, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":" super(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" public Event(String details, boolean isCompleted, LocalDateTime start,","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" LocalDateTime end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":" super(details, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" SimpleDateFormat dateFormatter \u003d new SimpleDateFormat(\"dd MMM yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":" String startDate \u003d dateFormatter.format(this.start.toLocalDate());","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":" String endDate \u003d dateFormatter.format(this.start.toLocalDate());","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" String startTime \u003d this.start.toLocalTime().toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":" String endTime \u003d this.end.toLocalTime().toString();","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":" return \"[E]\" + super.toString() + String.format(","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":" \" (from: %s to: %s)\",","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":" startDate + \" \" + startTime,","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"yytan25"},"content":" endDate + \" \" + endTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"yytan25":33}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":" protected String details;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":" protected boolean isCompleted;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":" public Task(String details) {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":" this.details \u003d details;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":" public Task(String details, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" this.details \u003d details;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":" public void setCompleted() {","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" public void setIncomplete() {","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":" protected String getDetails() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":" return this.details;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":" if (this.isCompleted) {","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"yytan25"},"content":" return \"[X] \" + this.details;","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"yytan25"},"content":" return \"[ ] \" + this.details;","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"yytan25":36}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":" public ToDo(String details) {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":" super(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":" public ToDo(String details, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":" super(details, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"yytan25":16}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"finish software engineering assignment","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"fri 2359","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"event","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"party at Jon\u0027s","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":"fri 8pm","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":"sat 2am","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yytan25":8}},{"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":"yytan25"},"content":"echo \"The output will be redirected to stdoutput.txt\"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"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":20,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yytan25":2,"-":21}}] +[{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":" protected LocalDateTime due;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":" public Deadline(String details, LocalDateTime due) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":" super(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":" this.due \u003d due;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" public Deadline(String details, boolean isCompleted, LocalDateTime due) {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" super(details, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":" this.due \u003d due;","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"E, dd MMM yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" return \"[D]\" + super.toString() + \" (by: \" +","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":" this.due.toLocalDate().format(dateFormatter) + \" \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":" this.due.toLocalTime().format(timeFormatter) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"yytan25":27}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":" private final Storage storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":" private final Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" private final Parser parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" public Duke() throws IOException {","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" this.storage \u003d new Storage(tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" this.parser \u003d new Parser(this, tasks, ui);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" this.run();","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":" public void run() throws IOException {","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" storage.launchOnStart();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":" storage.readTasksFromDisk(\"./data/tasks.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":" System.out.println(\"File not found. Please check your directory and try again.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"yytan25"},"content":" this.exit(2);","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"yytan25"},"content":" ui.printSelfIntroduction();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"yytan25"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"yytan25"},"content":" while (this.isRunning) {","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"yytan25"},"content":" if (ui.getInvalidInputCount() \u003e\u003d 10) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"yytan25"},"content":" this.exit(1);","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"yytan25"},"content":" } else if (ui.getInvalidInputCount() \u003d\u003d 8) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"yytan25"},"content":" System.out.println(\"If you keep giving me nonsense, I\u0027m leaving!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"yytan25"},"content":" String msg \u003d sc.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"yytan25"},"content":" parser.readInput(msg);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"yytan25"},"content":" this.exit(0);","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"yytan25"},"content":" public void createTask() {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"yytan25"},"content":" String details \u003d parser.checkTaskInput(\"task\");","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"yytan25"},"content":" if (details !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"yytan25"},"content":" tasks.add(new Task(details));","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Don\u0027t expect me to %s for you!%n\", details);","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"yytan25"},"content":" public void createToDo() {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"yytan25"},"content":" String details \u003d parser.checkTaskInput(\"todo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"yytan25"},"content":" if (details !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"yytan25"},"content":" tasks.add(new ToDo(details));","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Stop talking to me! Go and %s!%n\", details);","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"yytan25"},"content":" public void createDeadline() {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"yytan25"},"content":" String details \u003d parser.checkTaskInput(\"deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"yytan25"},"content":" if (details \u003d\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"yytan25"},"content":" LocalDate dueDate \u003d parser.checkDateInput(\"deadline\", \"due\");","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"yytan25"},"content":" if (dueDate \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"yytan25"},"content":" LocalTime dueTime \u003d parser.checkTimeInput(\"deadline\", \"due\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"yytan25"},"content":" if (dueTime \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"yytan25"},"content":" // Shouldn\u0027t reach here as creation of deadline without time input is supported.","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"yytan25"},"content":" // Invalid input is also handled in the Parser class.","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"yytan25"},"content":" // Default dueTime is 23:59.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"yytan25"},"content":" LocalDateTime due \u003d dueTime.atDate(dueDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"yytan25"},"content":" if (parser.checkStartDateTime(\"deadline\", due)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"yytan25"},"content":" tasks.add(new Deadline(details, due));","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Just saying, better %s now.%n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"yytan25"},"content":" \"Not like it\u0027s my problem if you don\u0027t.%n\", details);","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"yytan25"},"content":" public void createEvent() {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"yytan25"},"content":" String details \u003d parser.checkTaskInput(\"event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"yytan25"},"content":" if (details \u003d\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"yytan25"},"content":" LocalDate startDate \u003d parser.checkDateInput(\"event\", \"start\");","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"yytan25"},"content":" if (startDate \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"yytan25"},"content":" LocalTime startTime \u003d parser.checkTimeInput(\"event\", \"start\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"yytan25"},"content":" if (startTime \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"yytan25"},"content":" LocalDate endDate \u003d parser.checkDateInput(\"event\", \"end\");","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"yytan25"},"content":" if (endDate \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"yytan25"},"content":" LocalTime endTime \u003d parser.checkTimeInput(\"event\", \"end\");","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"yytan25"},"content":" if (endTime \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"yytan25"},"content":" LocalDateTime start \u003d startTime.atDate(startDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"yytan25"},"content":" LocalDateTime end \u003d endTime.atDate(endDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"yytan25"},"content":" if (parser.checkStartDateTime(\"event\", end) \u0026\u0026","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"yytan25"},"content":" parser.checkTimeInterval(\"event\", start, end)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"yytan25"},"content":" tasks.add(new Event(details, start, end));","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Wow, you have a %s?%n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"yytan25"},"content":" \"Uhh, n-not like I wanna join you!%n\", details);","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"yytan25"},"content":" public void list() {","lastModifiedDate":"2023-08-20"},{"lineNumber":124,"author":{"gitId":"yytan25"},"content":" int numOfTasks \u003d tasks.getNumOfTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"yytan25"},"content":" int numOfCompletedTasks \u003d tasks.getNumOfCompletedTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"You have %d tasks. (%d complete, %d incomplete)%n\",","lastModifiedDate":"2023-08-21"},{"lineNumber":127,"author":{"gitId":"yytan25"},"content":" numOfTasks, numOfCompletedTasks, numOfTasks - numOfCompletedTasks);","lastModifiedDate":"2023-08-21"},{"lineNumber":128,"author":{"gitId":"yytan25"},"content":" for (int i \u003d 0; i \u003c numOfTasks; i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":129,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"%d. \" + tasks.get(i).toString()","lastModifiedDate":"2023-08-20"},{"lineNumber":130,"author":{"gitId":"yytan25"},"content":" + \"%n\", i + 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":131,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":132,"author":{"gitId":"yytan25"},"content":" if (numOfCompletedTasks \u003d\u003d numOfTasks) {","lastModifiedDate":"2023-08-21"},{"lineNumber":133,"author":{"gitId":"yytan25"},"content":" System.out.println(\"You\u0027ve completed all your tasks. Good for you.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":134,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":135,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Don\u0027t expect me to remember them for you!\");","lastModifiedDate":"2023-08-20"},{"lineNumber":136,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":137,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":139,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":140,"author":{"gitId":"yytan25"},"content":" public void markAsComplete() {","lastModifiedDate":"2023-08-20"},{"lineNumber":141,"author":{"gitId":"yytan25"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"yytan25"},"content":" System.out.println(\"No tasks to mark.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Please create a task first.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"yytan25"},"content":" ui.incrementInvalidInputs();","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"yytan25"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"yytan25"},"content":" Integer taskNumber \u003d parser.launchConfirmationScreen(\"mark as complete\");","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"yytan25"},"content":" if (taskNumber !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"yytan25"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":150,"author":{"gitId":"yytan25"},"content":" if (!task.isCompleted) {","lastModifiedDate":"2023-08-20"},{"lineNumber":151,"author":{"gitId":"yytan25"},"content":" task.setCompleted();","lastModifiedDate":"2023-08-20"},{"lineNumber":152,"author":{"gitId":"yytan25"},"content":" tasks.incrementCompletedTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Task %d set as complete.%n\", taskNumber);","lastModifiedDate":"2023-08-20"},{"lineNumber":154,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":155,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Task %d is already complete.%n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":156,"author":{"gitId":"yytan25"},"content":" \"Stop wasting my time!%n\", taskNumber);","lastModifiedDate":"2023-08-21"},{"lineNumber":157,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":158,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":159,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":162,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":163,"author":{"gitId":"yytan25"},"content":" public void markAsIncomplete() {","lastModifiedDate":"2023-08-20"},{"lineNumber":164,"author":{"gitId":"yytan25"},"content":" if (!tasks.hasCompletedTasks()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"yytan25"},"content":" System.out.println(\"No tasks to unmark.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"yytan25"},"content":" if (!tasks.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"yytan25"},"content":" System.out.println(\"You have no completed tasks.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Please create a task first.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":171,"author":{"gitId":"yytan25"},"content":" ui.incrementInvalidInputs();","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"yytan25"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"yytan25"},"content":" Integer taskNumber \u003d parser.launchConfirmationScreen(\"mark as incomplete\");","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"yytan25"},"content":" if (taskNumber !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"yytan25"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":177,"author":{"gitId":"yytan25"},"content":" if (task.isCompleted) {","lastModifiedDate":"2023-08-20"},{"lineNumber":178,"author":{"gitId":"yytan25"},"content":" task.setIncomplete();","lastModifiedDate":"2023-08-20"},{"lineNumber":179,"author":{"gitId":"yytan25"},"content":" tasks.decrementCompletedTasks();","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Task %d set as incomplete.%n\", taskNumber);","lastModifiedDate":"2023-08-20"},{"lineNumber":181,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":182,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Task %d is already incomplete.%n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":183,"author":{"gitId":"yytan25"},"content":" \"Stop wasting my time!%n\", taskNumber);","lastModifiedDate":"2023-08-21"},{"lineNumber":184,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":185,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":186,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":187,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"yytan25"},"content":" public void deleteTask() {","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"yytan25"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":192,"author":{"gitId":"yytan25"},"content":" System.out.println(\"No tasks to delete.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Please create a task first.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"yytan25"},"content":" ui.incrementInvalidInputs();","lastModifiedDate":"2023-09-01"},{"lineNumber":195,"author":{"gitId":"yytan25"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":196,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"yytan25"},"content":" Integer taskNumber \u003d parser.launchConfirmationScreen(\"delete\");","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"yytan25"},"content":" if (taskNumber !\u003d null) {","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"yytan25"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"yytan25"},"content":" tasks.remove(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Task %d deleted successfully.%n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"yytan25"},"content":" \"You now have %d tasks.%n\", taskNumber, tasks.getNumOfTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":203,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":204,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":205,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":206,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":207,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":208,"author":{"gitId":"yytan25"},"content":" public void exit(int status) throws IOException {","lastModifiedDate":"2023-08-26"},{"lineNumber":209,"author":{"gitId":"yytan25"},"content":" storage.saveTasksToDisk(\"./data/tasks.txt\", tasks);","lastModifiedDate":"2023-09-01"},{"lineNumber":210,"author":{"gitId":"yytan25"},"content":" if (status \u003d\u003d 1) {","lastModifiedDate":"2023-08-26"},{"lineNumber":211,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"I\u0027ve had enough of your nonsense!%n\" +","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"yytan25"},"content":" \"Don\u0027t let me see you again!%n\");","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"yytan25"},"content":" } else if (status \u003d\u003d 0) {","lastModifiedDate":"2023-08-26"},{"lineNumber":214,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Finally I can rest. Bye!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"yytan25"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"yytan25"},"content":" System.exit(0);","lastModifiedDate":"2023-08-24"},{"lineNumber":218,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":219,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":220,"author":{"gitId":"yytan25"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2023-08-26"},{"lineNumber":221,"author":{"gitId":"yytan25"},"content":" new Duke();","lastModifiedDate":"2023-08-19"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"yytan25":220,"-":3}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":" public Event(String details, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":" super(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" public Event(String details, boolean isCompleted, LocalDateTime start,","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":" LocalDateTime end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" super(details, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" String startDate \u003d this.start.toLocalDate().format(dateFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":" String endDate \u003d this.end.toLocalDate().format(dateFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":" String startTime \u003d this.start.toLocalTime().format(timeFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":" String endTime \u003d this.end.toLocalTime().format(timeFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":" return \"[E]\" + super.toString() + String.format(","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"yytan25"},"content":" \" (from: %s to: %s)\",","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"yytan25"},"content":" startDate + \" \" + startTime,","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"yytan25"},"content":" endDate + \" \" + endTime);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"yytan25":35}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":"import java.util.InputMismatchException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":" private final Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" private final Duke duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" public enum Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":" TASK, TODO, DEADLINE, EVENT, LIST, MARK, UNMARK, DELETE, COMMANDS, BYE","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" Parser(Duke duke, duke.TaskList tasks, duke.Ui ui) { // Can only be instantiated with a Duke object","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" this.duke \u003d duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":" public void readInput(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" executeCommand(Command.valueOf(message.toUpperCase()));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":" catch (IllegalArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"I\u0027m just a robot!%n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":" \"I don\u0027t understand what %s is!%n\", message);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yytan25"},"content":" ui.incrementInvalidInputs();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yytan25"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"yytan25"},"content":" public void executeCommand(Command command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"yytan25"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"yytan25"},"content":" case TASK:","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"yytan25"},"content":" duke.createTask();","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"yytan25"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"yytan25"},"content":" duke.createToDo();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"yytan25"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"yytan25"},"content":" duke.createDeadline();","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"yytan25"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"yytan25"},"content":" duke.createEvent();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"yytan25"},"content":" case LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"yytan25"},"content":" duke.list();","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"yytan25"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"yytan25"},"content":" duke.markAsComplete();","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"yytan25"},"content":" case UNMARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"yytan25"},"content":" duke.markAsIncomplete();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"yytan25"},"content":" case DELETE:","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"yytan25"},"content":" duke.deleteTask();","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"yytan25"},"content":" case COMMANDS:","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"yytan25"},"content":" ui.printCommands();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"yytan25"},"content":" case BYE:","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"yytan25"},"content":" duke.isRunning \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"yytan25"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"yytan25"},"content":" // Shouldn\u0027t reach here","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"yytan25"},"content":" // Input errors should already be caught in the readInput() method.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"yytan25"},"content":" public String checkTaskInput(String taskType) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"yytan25"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Input %s details.%n\", taskType);","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"yytan25"},"content":" String message \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"yytan25"},"content":" if (message.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"The %s details cannot be empty.%n\", taskType);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"yytan25"},"content":" } else if (tasks.checkDuplicates(message)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Task %s already exists.%n\", message);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"yytan25"},"content":" return message;","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"yytan25"},"content":" public LocalDate checkDateInput(String taskType, String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"yytan25"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Input %s %s date. (Required format: YYYY-MM-DD)%n\",","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"yytan25"},"content":" taskType, input);","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"yytan25"},"content":" String message \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"yytan25"},"content":" if (message.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"The %s %s cannot be empty.%n\", taskType, input);","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"yytan25"},"content":" return LocalDate.parse(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"yytan25"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Invalid date format. Please try again.%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"yytan25"},"content":" public LocalTime checkTimeInput(String taskType, String input) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"yytan25"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Input %s %s time. (Required format: HH:MM)%n\",","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"yytan25"},"content":" taskType, input);","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"yytan25"},"content":" String message \u003d sc.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"yytan25"},"content":" if (message.isBlank()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"yytan25"},"content":" if (taskType.equals(\"deadline\") \u0026\u0026 input.equals(\"due\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"yytan25"},"content":" return LocalTime.of(23, 59);","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"The %s %s cannot be empty.%n\", taskType, input);","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"yytan25"},"content":" return LocalTime.parse(message);","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"yytan25"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":130,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Invalid time format. Please try again.%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":131,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"yytan25"},"content":" public boolean checkStartDateTime(String taskType, LocalDateTime dateTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"yytan25"},"content":" if (dateTime.isBefore(LocalDateTime.now())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Cannot create %s before the current time. \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"yytan25"},"content":" \"Please try again.%n\", taskType);","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"yytan25"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"yytan25"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":145,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"yytan25"},"content":" public boolean checkTimeInterval(String taskType, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"yytan25"},"content":" if (end.isBefore(start)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Invalid %s time interval. Please try again.%n\", taskType);","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"yytan25"},"content":" ui.printEndOfOperation();","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"yytan25"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"yytan25"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"yytan25"},"content":" public Integer launchConfirmationScreen(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"yytan25"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Please input the task number you wish to %s.%n\",","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"yytan25"},"content":" message);","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"yytan25"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"yytan25"},"content":" for (int i \u003d 0; i \u003c tasks.getNumOfTasks(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":161,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"%d. \" + tasks.get(i).toString()","lastModifiedDate":"2023-09-01"},{"lineNumber":162,"author":{"gitId":"yytan25"},"content":" + \"%n\", i + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":163,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"yytan25"},"content":" int taskNumber \u003d sc.nextInt();","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"yytan25"},"content":" if (taskNumber \u003e tasks.getNumOfTasks() || taskNumber \u003c 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Request unsuccessful. (reason: invalid task number)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":168,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":169,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":170,"author":{"gitId":"yytan25"},"content":" return taskNumber;","lastModifiedDate":"2023-09-01"},{"lineNumber":171,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":172,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"yytan25"},"content":" catch (InputMismatchException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":174,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Request unsuccessful. (reason: invalid input)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":175,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":176,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":177,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"yytan25":179}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"import java.io.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":" private final TaskList tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":" public Storage(duke.TaskList tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" * Greets the user and creates the requisite folder and text file, if required.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" @SuppressWarnings(\"ResultOfMethodCallIgnored\")","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" public void launchOnStart() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" File f \u003d new File(\"./data\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" f.mkdirs();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" File file \u003d new File(\"./data/tasks.txt\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Due to technical issues, I\u0027m only available in guest mode.%n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" \"I sincerely apologise to the inconvenience caused.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":" public void readTasksFromDisk(String filePath) throws FileNotFoundException,","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yytan25"},"content":" IllegalArgumentException {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yytan25"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yytan25"},"content":" Scanner sc \u003d new Scanner(f);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"yytan25"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"yytan25"},"content":" String[] args \u003d sc.nextLine().split(\"/\", -1);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"yytan25"},"content":" duke.TaskList.TaskType type;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"yytan25"},"content":" LocalDateTime due \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"yytan25"},"content":" LocalDateTime start \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"yytan25"},"content":" LocalDateTime end \u003d null;","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"yytan25"},"content":" type \u003d TaskList.TaskType.valueOf(args[0].toUpperCase());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"yytan25"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Task not found\");","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"yytan25"},"content":" String details \u003d args[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"yytan25"},"content":" boolean isCompleted \u003d args[2].equals(\"Y\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"yytan25"},"content":" if (type \u003d\u003d TaskList.TaskType.DEADLINE) {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"yytan25"},"content":" due \u003d LocalDateTime.parse(args[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"yytan25"},"content":" } else if (type \u003d\u003d TaskList.TaskType.EVENT) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"yytan25"},"content":" start \u003d LocalDateTime.parse(args[3]);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"yytan25"},"content":" end \u003d LocalDateTime.parse(args[4]);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"yytan25"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Could not retrieve date and/or time\");","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"yytan25"},"content":" return;","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"yytan25"},"content":" switch (type) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"yytan25"},"content":" case TASK:","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"yytan25"},"content":" Task t \u003d new Task(details, isCompleted);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"yytan25"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"yytan25"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"yytan25"},"content":" ToDo todo \u003d new ToDo(details, isCompleted);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"yytan25"},"content":" tasks.add(todo);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"yytan25"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"yytan25"},"content":" Deadline d \u003d new Deadline(details, isCompleted, due);","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"yytan25"},"content":" tasks.add(d);","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"yytan25"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"yytan25"},"content":" Event e \u003d new Event(details, isCompleted, start, end);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"yytan25"},"content":" tasks.add(e);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"yytan25"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"yytan25"},"content":" // Shouldn\u0027t reach here","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"yytan25"},"content":" public void saveTasksToDisk(String filePath, duke.TaskList tasks) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"yytan25"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"yytan25"},"content":" BufferedWriter bw \u003d new BufferedWriter(fw);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"yytan25"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"yytan25"},"content":" for (int i \u003d 0; i \u003c tasks.getNumOfTasks(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"yytan25"},"content":" duke.TaskList.TaskType type \u003d tasks.getTaskType(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"yytan25"},"content":" Task t \u003d tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"yytan25"},"content":" switch (type) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"yytan25"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"yytan25"},"content":" bw.write(String.format(\"ToDo/%s/%c\",","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"yytan25"},"content":" t.getDetails(),","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"yytan25"},"content":" t.isCompleted ? \u0027Y\u0027 : \u0027N\u0027));","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"yytan25"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"yytan25"},"content":" bw.write(String.format(\"Deadline/%s/%c/%s\",","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"yytan25"},"content":" t.getDetails(),","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"yytan25"},"content":" t.isCompleted ? \u0027Y\u0027 : \u0027N\u0027,","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"yytan25"},"content":" ((Deadline) t).due));","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"yytan25"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"yytan25"},"content":" bw.write(String.format(\"Event/%s/%c/%s/%s\",","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"yytan25"},"content":" t.getDetails(),","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"yytan25"},"content":" t.isCompleted ? \u0027Y\u0027 : \u0027N\u0027,","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"yytan25"},"content":" ((Event) t).start,","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"yytan25"},"content":" ((Event) t).end));","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"yytan25"},"content":" case TASK:","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"yytan25"},"content":" bw.write(String.format(\"Task/%s/%c\",","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"yytan25"},"content":" t.getDetails(),","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"yytan25"},"content":" t.isCompleted ? \u0027Y\u0027 : \u0027N\u0027));","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"yytan25"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"yytan25"},"content":" // Shouldn\u0027t reach here","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"yytan25"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"yytan25"},"content":" bw.newLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"yytan25"},"content":" bw.flush();","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"yytan25"},"content":" bw.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"yytan25"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"yytan25"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"yytan25":126}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":" protected String details;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":" protected boolean isCompleted;","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":" public Task(String details) {","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":" this.details \u003d details;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" public Task(String details, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":" this.details \u003d details;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" public void setCompleted() {","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" public void setIncomplete() {","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":" protected String getDetails() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" return this.details;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"yytan25"},"content":" if (this.isCompleted) {","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"yytan25"},"content":" return \"[X] \" + this.details;","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"yytan25"},"content":" return \"[ ] \" + this.details;","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"yytan25":37}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":" private int numOfTasks \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":" private int numOfCompletedTasks \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":" public enum TaskType {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":" TASK, TODO, DEADLINE, EVENT","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" public void add(Task t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" this.numOfTasks++;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" if (t.isCompleted) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" this.numOfCompletedTasks++;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":" public Task get(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" if (i \u003e -1 \u0026\u0026 i \u003c numOfTasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":" return tasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yytan25"},"content":" public int getNumOfTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"yytan25"},"content":" return this.numOfTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"yytan25"},"content":" public int getNumOfCompletedTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"yytan25"},"content":" return this.numOfCompletedTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"yytan25"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"yytan25"},"content":" return this.numOfTasks \u003d\u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"yytan25"},"content":" public boolean hasCompletedTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"yytan25"},"content":" return this.numOfCompletedTasks !\u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"yytan25"},"content":" public void incrementCompletedTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"yytan25"},"content":" this.numOfCompletedTasks++;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"yytan25"},"content":" public void decrementCompletedTasks() {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"yytan25"},"content":" this.numOfCompletedTasks--;","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"yytan25"},"content":" public boolean checkDuplicates(String details) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"yytan25"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"yytan25"},"content":" if (details.equals(t.getDetails())) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"yytan25"},"content":" return true;","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"yytan25"},"content":" return false;","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"yytan25"},"content":" public TaskType getTaskType(int i) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"yytan25"},"content":" Task t \u003d this.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"yytan25"},"content":" if (t instanceof ToDo) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"yytan25"},"content":" return TaskType.TODO;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"yytan25"},"content":" } else if (t instanceof Deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"yytan25"},"content":" return TaskType.DEADLINE;","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"yytan25"},"content":" } else if (t instanceof Event) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"yytan25"},"content":" return TaskType.EVENT;","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"yytan25"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"yytan25"},"content":" return TaskType.TASK;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"yytan25"},"content":" public void remove(Task t) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"yytan25"},"content":" tasks.remove(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"yytan25"},"content":" this.numOfTasks--;","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"yytan25"},"content":" if (t.isCompleted) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"yytan25"},"content":" this.numOfCompletedTasks--;","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"yytan25":86}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":" public ToDo(String details) {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":" super(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":" public ToDo(String details, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":" super(details, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"yytan25":18}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":" private final String name;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":" private int invalidInputCount \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":" this.name \u003d \"Meg\";","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" public void printHorizontalLine() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":" for (int i \u003d 0; i \u003c 20; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" System.out.print(\"-\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" public void printCommands() {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mtask\\033[0m - Create a new task%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mtodo\\033[0m - Create a new todo%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mdeadline\\033[0m - Create a new deadline%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mevent\\033[0m - Create a new event%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mlist\\033[0m - View your current tasks and completion status%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mmark\\033[0m - Mark a task as complete%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3munmark\\033[0m - Mark a task as incomplete%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mdelete\\033[0m - Delete a task%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"\\033[3mbye\\033[0m - Exit the program%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yytan25"},"content":" public void printSelfIntroduction() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"I\u0027m %s. Nice to meet you.%n\", this.name);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yytan25"},"content":" System.out.println(\"I support the following commands:\" + \"\\n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"yytan25"},"content":" printCommands();","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"yytan25"},"content":" public void printEndOfOperation() {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"yytan25"},"content":" System.out.println();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Anything else you want me to do?%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"yytan25"},"content":" System.out.printf(\"Just so you know, you can input \\033[3mcommands\\033[0m \" +","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"yytan25"},"content":" \"to view the commands again.%n\");","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"yytan25"},"content":" printHorizontalLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"yytan25"},"content":" public void incrementInvalidInputs() {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"yytan25"},"content":" this.invalidInputCount++;","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"yytan25"},"content":" public int getInvalidInputCount() {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"yytan25"},"content":" return this.invalidInputCount;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"yytan25":53}},{"path":"src/test/java/duke/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":"import java.time.Month;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" public void deadline_toString_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" Deadline d \u003d new Deadline(\"test\",","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":" LocalDateTime.of(LocalDate.of(2023, Month.JANUARY, 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" LocalTime.of(23, 59)));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" assertEquals(\"[D][ ] test (by: Sun, 01 Jan 2023 23:59)\",","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" d.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" public void deadline_completed_toString_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":" Deadline d \u003d new Deadline(\"test\", true,","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":" LocalDateTime.of(LocalDate.of(2023, Month.JANUARY, 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" LocalTime.of(23, 59)));","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":" assertEquals(\"[D][X] test (by: Sun, 01 Jan 2023 23:59)\",","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":" d.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"yytan25":30}},{"path":"src/test/java/duke/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":"import java.time.Month;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":"public class EventTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":" public void event_toString_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" Event e \u003d new Event(\"test\",","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":" LocalDateTime.of(LocalDate.of(2023, Month.JANUARY, 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" LocalTime.of(0, 0)),","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" LocalDateTime.of(LocalDate.of(2023, Month.JANUARY, 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" LocalTime.of(23, 59)));","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" assertEquals(\"[E][ ] test (from: 01 Jan 2023 00:00 to: 01 Jan 2023 23:59)\",","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":" public void event_completed_toString_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":" Event e \u003d new Event(\"test\", true,","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":" LocalDateTime.of(LocalDate.of(2023, Month.JANUARY, 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":" LocalTime.of(0, 0)),","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yytan25"},"content":" LocalDateTime.of(LocalDate.of(2023, Month.JANUARY, 1),","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yytan25"},"content":" LocalTime.of(23, 59)));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yytan25"},"content":" assertEquals(\"[E][X] test (from: 01 Jan 2023 00:00 to: 01 Jan 2023 23:59)\",","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"yytan25"},"content":" e.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"yytan25":37}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yytan25"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yytan25"},"content":" public void addTask_numTasksIncremented() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yytan25"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yytan25"},"content":" tasks.add(new Task(\"test\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"yytan25"},"content":" assertEquals(1, tasks.getNumOfTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yytan25"},"content":" public void addCompletedTask_numTasksIncremented() {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yytan25"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yytan25"},"content":" tasks.add(new Task(\"test\", true));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yytan25"},"content":" assertEquals(1, tasks.getNumOfTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yytan25"},"content":" public void addCompletedTask_numCompletedTasksIncremented() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yytan25"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yytan25"},"content":" tasks.add(new Task(\"test\", true));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yytan25"},"content":" assertEquals(1, tasks.getNumOfCompletedTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"yytan25"},"content":" public void addTask_getTaskType_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"yytan25"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"yytan25"},"content":" tasks.add(new Task(\"test\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"yytan25"},"content":" assertEquals(TaskList.TaskType.TASK, tasks.getTaskType(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"yytan25"},"content":" public void addToDo_getTaskType_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"yytan25"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"yytan25"},"content":" tasks.add(new ToDo(\"test\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"yytan25"},"content":" assertEquals(TaskList.TaskType.TODO, tasks.getTaskType(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"yytan25"},"content":" public void addDeadline_getTaskType_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"yytan25"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"yytan25"},"content":" tasks.add(new Deadline(\"test\", LocalDateTime.MIN));","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"yytan25"},"content":" assertEquals(TaskList.TaskType.DEADLINE, tasks.getTaskType(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"yytan25"},"content":" public void addEvent_getTaskType_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"yytan25"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"yytan25"},"content":" tasks.add(new Event(\"test\", LocalDateTime.MIN, LocalDateTime.MAX));","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"yytan25"},"content":" assertEquals(TaskList.TaskType.EVENT, tasks.getTaskType(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"yytan25"},"content":" public void removeTask_numTasksDecremented() {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"yytan25"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"yytan25"},"content":" Task t \u003d new Task(\"test\");","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"yytan25"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"yytan25"},"content":" tasks.remove(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"yytan25"},"content":" assertEquals(0, tasks.getNumOfTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"yytan25"},"content":" public void removeCompletedTask_numTasksDecremented() {","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"yytan25"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"yytan25"},"content":" Task t \u003d new Task(\"test\", true);","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"yytan25"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"yytan25"},"content":" tasks.remove(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"yytan25"},"content":" assertEquals(0, tasks.getNumOfTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"yytan25"},"content":" public void removeCompletedTask_numCompletedTasksDecremented() {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"yytan25"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"yytan25"},"content":" Task t \u003d new Task(\"test\", true);","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"yytan25"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"yytan25"},"content":" tasks.remove(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"yytan25"},"content":" assertEquals(0, tasks.getNumOfCompletedTasks());","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"yytan25"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"yytan25"},"content":" public void checkDuplicates_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"yytan25"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"yytan25"},"content":" Task t \u003d new Task(\"test\");","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"yytan25"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"yytan25"},"content":" assertTrue(tasks.checkDuplicates(\"test\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"yytan25"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"yytan25"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"yytan25":96}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yytan25"},"content":"deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"yytan25"},"content":"finish software engineering assignment","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"yytan25"},"content":"fri 2359","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"event","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"yytan25"},"content":"party at Jon\u0027s","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"yytan25"},"content":"fri 8pm","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"yytan25"},"content":"sat 2am","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"yytan25"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"yytan25":8}},{"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":"yytan25"},"content":"echo \"The output will be redirected to stdoutput.txt\"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"yytan25"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"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":20,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yytan25":2,"-":21}}] diff --git a/yytan25_ip_master/commits.json b/yytan25_ip_master/commits.json index 3f7d07ad..f7b35b8a 100644 --- a/yytan25_ip_master/commits.json +++ b/yytan25_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yytan25":[{"date":"2023-08-19","commitResults":[{"hash":"ca7df2bc7a702aa9498199af78c92f9979322449","isMergeCommit":false,"messageTitle":"Completed Level-0 features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"55e5d54bba306697324dbfc0e8f8405f4dcbb0ca","isMergeCommit":false,"messageTitle":"Completed Level-0 features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}}]},{"date":"2023-08-20","commitResults":[{"hash":"c7f0a8961c3bce76c761c159ada10d0f2162309c","isMergeCommit":false,"messageTitle":"Complete Level-1 features","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":7}}},{"hash":"63db283c5417a2befbae9ab3f8e86bfb0270b574","isMergeCommit":false,"messageTitle":"Complete Level-2 features","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"99d6f4b60a852b0bbc280525ea4f67c415b0ff23","isMergeCommit":false,"messageTitle":"Add OOP elements to Level-2 features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":11}}},{"hash":"27cd3ef0ffbd4895cb532f62133add663954ddbc","isMergeCommit":false,"messageTitle":"Add Level-3 features","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":12}}},{"hash":"04516010ca1b9c4a8b68c55611768cea6bb33e15","isMergeCommit":false,"messageTitle":"Add Level-4 features","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":7}}}]},{"date":"2023-08-21","commitResults":[{"hash":"17288e6591df8620e63bd44e4a90d1099826e4d4","isMergeCommit":false,"messageTitle":"Add run() method","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":42,"deletions":25}}},{"hash":"57ef808ada56c4c2a633510ed47267f8bf253688","isMergeCommit":false,"messageTitle":"Enhance list() method and minor QoL changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"e40ead08c6107ff98310a85085725b54579ed484","isMergeCommit":false,"messageTitle":"Add Level-5 features","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":1},"java":{"insertions":142,"deletions":62},"bat":{"insertions":3,"deletions":0}}},{"hash":"c0948a6c0be4c060fc205b2bb801e692b7a94465","isMergeCommit":false,"messageTitle":"Add Level-6 features","messageBody":"","tags":["Level-6","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":53}}},{"hash":"820cc7f3556189731f4e77452aa26ca05ff1f363","isMergeCommit":false,"messageTitle":"Add Java enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":17}}}]},{"date":"2023-08-26","commitResults":[{"hash":"60da57be00042a81cfb81edfb5aa3b28584669ca","isMergeCommit":false,"messageTitle":"Add Level-7 features","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":175,"deletions":9},"bat":{"insertions":0,"deletions":1}}},{"hash":"01a43bf4b31124a18019e6ba58127a8322a3e031","isMergeCommit":false,"messageTitle":"Fix minor bugs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"2cfbfc26acf83f7bfaf06b0bce86d990af78330f","isMergeCommit":true,"messageTitle":"Fix minor bugs","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"0957234a1691cb62af8819778f1681276d35e200","isMergeCommit":false,"messageTitle":"Add Level-8 features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":43}}},{"hash":"99453a2fbad86d16f2efb90ce544717811847853","isMergeCommit":false,"messageTitle":"Add Level-8 features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"d148f66b2b58b57aa3e96bb02b8e56f740f6dd90","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yytan25":{"java":605,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":8}},"authorContributionVariance":{"yytan25":15452.532},"authorDisplayNameMap":{"yytan25":"CS2103T-W11-3 TAN ..G YI"}} +{"authorDailyContributionsMap":{"yytan25":[{"date":"2023-08-19","commitResults":[{"hash":"ca7df2bc7a702aa9498199af78c92f9979322449","isMergeCommit":false,"messageTitle":"Completed Level-0 features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"55e5d54bba306697324dbfc0e8f8405f4dcbb0ca","isMergeCommit":false,"messageTitle":"Completed Level-0 features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}}]},{"date":"2023-08-20","commitResults":[{"hash":"c7f0a8961c3bce76c761c159ada10d0f2162309c","isMergeCommit":false,"messageTitle":"Complete Level-1 features","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":7}}},{"hash":"63db283c5417a2befbae9ab3f8e86bfb0270b574","isMergeCommit":false,"messageTitle":"Complete Level-2 features","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"99d6f4b60a852b0bbc280525ea4f67c415b0ff23","isMergeCommit":false,"messageTitle":"Add OOP elements to Level-2 features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":11}}},{"hash":"27cd3ef0ffbd4895cb532f62133add663954ddbc","isMergeCommit":false,"messageTitle":"Add Level-3 features","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":12}}},{"hash":"04516010ca1b9c4a8b68c55611768cea6bb33e15","isMergeCommit":false,"messageTitle":"Add Level-4 features","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":7}}}]},{"date":"2023-08-21","commitResults":[{"hash":"17288e6591df8620e63bd44e4a90d1099826e4d4","isMergeCommit":false,"messageTitle":"Add run() method","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":42,"deletions":25}}},{"hash":"57ef808ada56c4c2a633510ed47267f8bf253688","isMergeCommit":false,"messageTitle":"Enhance list() method and minor QoL changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"e40ead08c6107ff98310a85085725b54579ed484","isMergeCommit":false,"messageTitle":"Add Level-5 features","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":1},"java":{"insertions":142,"deletions":62},"bat":{"insertions":3,"deletions":0}}},{"hash":"c0948a6c0be4c060fc205b2bb801e692b7a94465","isMergeCommit":false,"messageTitle":"Add Level-6 features","messageBody":"","tags":["Level-6","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":53}}},{"hash":"820cc7f3556189731f4e77452aa26ca05ff1f363","isMergeCommit":false,"messageTitle":"Add Java enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":17}}}]},{"date":"2023-08-26","commitResults":[{"hash":"60da57be00042a81cfb81edfb5aa3b28584669ca","isMergeCommit":false,"messageTitle":"Add Level-7 features","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":175,"deletions":9},"bat":{"insertions":0,"deletions":1}}},{"hash":"01a43bf4b31124a18019e6ba58127a8322a3e031","isMergeCommit":false,"messageTitle":"Fix minor bugs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"2cfbfc26acf83f7bfaf06b0bce86d990af78330f","isMergeCommit":true,"messageTitle":"Fix minor bugs","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"0957234a1691cb62af8819778f1681276d35e200","isMergeCommit":false,"messageTitle":"Add Level-8 features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":43}}},{"hash":"99453a2fbad86d16f2efb90ce544717811847853","isMergeCommit":false,"messageTitle":"Add Level-8 features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"d148f66b2b58b57aa3e96bb02b8e56f740f6dd90","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"8c6551faf1596946678eda424ecd6be1615d586e","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":440,"deletions":350}}},{"hash":"6792abd51dea8d22d702e988ddcf5bff5a3f806f","isMergeCommit":false,"messageTitle":"Add minor QoL changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"c11cdbf858fec3ea08bce1b79570fcb0dd4d0fdd","isMergeCommit":true,"messageTitle":"Add minor QoL changes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"138feee3b8315ea62236a2d4cb510ad66caf63b9","isMergeCommit":false,"messageTitle":"Add package \u0027duke\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":5}}},{"hash":"d90b2d7cebf263be76ff2733083be4401821cd7a","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"a6030ccd4a40a2dde31708f9c684facd8818e37d","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":194,"deletions":17}}},{"hash":"35f126b4e4ddf9d93c0f947ff324c8f572c60a9f","isMergeCommit":false,"messageTitle":"Improve parsing of date \u0026 time input","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":79,"deletions":32}}},{"hash":"f784c7eef36603a34f88dc18bd08814d1d56fadf","isMergeCommit":false,"messageTitle":"Add additional checks for date and time inputs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":33,"deletions":8}}},{"hash":"a41285f89783d3e40aad2d731d372cd21fb228a2","isMergeCommit":false,"messageTitle":"Remove redundant method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":11}}},{"hash":"7d164cc404588c3ea916cfbf8b7090dc616ec8e3","isMergeCommit":false,"messageTitle":"Edit JUnit test cases","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"yytan25":{"java":944,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":8}},"authorContributionVariance":{"yytan25":91560.695},"authorDisplayNameMap":{"yytan25":"CS2103T-W11-3 TAN ..G YI"}} diff --git a/zacwong2151_ip_master/authorship.json b/zacwong2151_ip_master/authorship.json index a8402ff3..321b0c69 100644 --- a/zacwong2151_ip_master/authorship.json +++ b/zacwong2151_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"T | X | borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":"D | O | return book | Sunday","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":"E | X | project meeting | Mon 2pm-4pm","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"zacwong2151":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":" protected String by;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":" return \"[D]\" + super.toString() + \"(by: \" + by + \")\";","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":" return \"D\" + super.toFileString() + \"| \" + by;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"zacwong2151"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"zacwong2151":15}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":" static String indent \u003d \" \";","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":" static String megaIndent \u003d \" \";","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":" static String horizontalLines \u003d indent + \"__________________________________________\";","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":" static ArrayList\u003cTask\u003e taskArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":" static String dataFile \u003d \"data/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"zacwong2151"},"content":" public static void printWithIndent(String string) {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + string);","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"zacwong2151"},"content":" * @return the last Task from the taskArray","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"zacwong2151"},"content":" public static Task getLastTask() {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"zacwong2151"},"content":" return taskArray.get(taskArray.size() - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"zacwong2151"},"content":" * displays the list of Tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"zacwong2151"},"content":" public static void displayList() {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"zacwong2151"},"content":" for (int i \u003d 0; i \u003c taskArray.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"zacwong2151"},"content":" int num \u003d i + 1;","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"zacwong2151"},"content":" Task curr \u003d taskArray.get(i);","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + num + \".\" + curr.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"zacwong2151"},"content":" * Everytime a Task is added to taskArray, clear the duke.txt file, then scan the whole","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"zacwong2151"},"content":" * taskArray and rewrite the entire txt file","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"zacwong2151"},"content":" * Initially, I did a writeToFile method where everytime a Task is added to taskArray, write","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"zacwong2151"},"content":" * the new task to duke.txt. However, this may cause some problems when it comes to updating","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"zacwong2151"},"content":" * or deleting tasks from the file, so I changed the implementation to rewriting the entire txt","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"zacwong2151"},"content":" * file everytime there is a change to the list. This causes a longer run time but since this mod","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"zacwong2151"},"content":" * is not about run time, it should be fine.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"zacwong2151"},"content":" * @param filePath hardcoded relative path to duke.txt","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"zacwong2151"},"content":" * @throws IOException if the file at the filePath does not exist (I think)","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"zacwong2151"},"content":" private static void updateFile(String filePath) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"zacwong2151"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"zacwong2151"},"content":" // Clear the existing content by opening in write mode and immediately closing","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"zacwong2151"},"content":" fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"zacwong2151"},"content":" for (int i \u003d 0; i \u003c taskArray.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"zacwong2151"},"content":" fw.write(taskArray.get(i).toFileString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"zacwong2151"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"zacwong2151"},"content":" * For an input such as \u0027todo borrow book\u0027, letter is \u0027T\u0027 and string is \u0027borrow book\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"zacwong2151"},"content":" * After adding the Task to taskArray, duke.txt is updated to reflect the new list","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"zacwong2151"},"content":" * @param letter the letter corresponding to the first letter of the Task","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"zacwong2151"},"content":" * @param string the string corresponding to the chunk of text after the word todo, deadline, or event","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"zacwong2151"},"content":" public static void whichTask(String letter, String string) {","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"zacwong2151"},"content":" if (letter.equals(\"T\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"zacwong2151"},"content":" taskArray.add(new ToDo(string));","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"zacwong2151"},"content":" if (letter.equals(\"D\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"zacwong2151"},"content":" taskArray.add(new Deadline(getDescription(string), getBy(string)));","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"zacwong2151"},"content":" if (letter.equals(\"E\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"zacwong2151"},"content":" taskArray.add(new Event(getDescription(string), getFrom(string), getTo(string)));","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"zacwong2151"},"content":" updateFile(dataFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"zacwong2151"},"content":" int arrayLength \u003d taskArray.size();","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"zacwong2151"},"content":" System.out.println(megaIndent + getLastTask().toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Now you have \" + arrayLength + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"zacwong2151"},"content":" } catch (DukeException | IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":93,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":94,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"zacwong2151"},"content":" * For deadline and event Tasks, obtains the description of the Task (before the first slash)","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027event project meeting /from Mon 2pm /to 4pm\u0027 will return \u0027project meeting\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"zacwong2151"},"content":" * @param string of the Task","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"zacwong2151"},"content":" * @return the description of the Task","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"zacwong2151"},"content":" public static String getDescription(String string) {","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"zacwong2151"},"content":" int len \u003d string.length();","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"zacwong2151"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"zacwong2151"},"content":" for (int i \u003d 0; i \u003c len; i++) {","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"zacwong2151"},"content":" if (string.charAt(i) \u003d\u003d \u0027/\u0027) {","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"zacwong2151"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"zacwong2151"},"content":" count++;","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"zacwong2151"},"content":" return string.substring(0, count);","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":113,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"zacwong2151"},"content":" * A method for the Deadline class to obtain the by part of the Task description","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027deadline return book /by Sunday\u0027 will return \u0027Sunday\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"zacwong2151"},"content":" * @param string the Task description","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"zacwong2151"},"content":" * @return the deadline","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"zacwong2151"},"content":" * @throws DukeException if the input string is formatted wrongly","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"zacwong2151"},"content":" public static String getBy(String string) throws DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"zacwong2151"},"content":" String slash \u003d \"/\";","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"zacwong2151"},"content":" int first \u003d string.indexOf(slash);","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"zacwong2151"},"content":" int second \u003d first + 3;","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"zacwong2151"},"content":" if (first \u003d\u003d -1 || !string.substring(first, second).equals(\"/by\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"zacwong2151"},"content":" throw new DukeException(\"You need to add a by timing!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"zacwong2151"},"content":" return string.substring(first + 4); // returns \"Sunday\"","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"zacwong2151"},"content":" * A method for the Event class to obtain the from part of the Event description","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027event project meeting /from Mon 2pm /to 4pm\u0027 will return \u0027Mon 2pm\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"zacwong2151"},"content":" * @param string the Task description","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"zacwong2151"},"content":" * @return the from part of the event","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"zacwong2151"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"zacwong2151"},"content":" public static String getFrom(String string) throws DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"zacwong2151"},"content":" String slash \u003d \"/\";","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"zacwong2151"},"content":" int firstSlash \u003d string.indexOf(slash);","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"zacwong2151"},"content":" int secondSlash \u003d string.indexOf(slash, firstSlash + 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"zacwong2151"},"content":" if (firstSlash \u003d\u003d -1 || secondSlash \u003d\u003d -1","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"zacwong2151"},"content":" || !string.substring(firstSlash, firstSlash + 5).equals(\"/from\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"zacwong2151"},"content":" throw new DukeException(\"You need to add a /from and /to for events\");","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"zacwong2151"},"content":" return string.substring(firstSlash + 6, secondSlash - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":151,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"zacwong2151"},"content":" * A method for the Event class to obtain the to part of the Event description","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027event project meeting /from Mon 2pm /to 4pm\u0027 will return \u00274pm\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"zacwong2151"},"content":" * @param string the Task description","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"zacwong2151"},"content":" * @return the to part of the event","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"zacwong2151"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"zacwong2151"},"content":" public static String getTo(String string) throws DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"zacwong2151"},"content":" String slash \u003d \"/\";","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"zacwong2151"},"content":" int firstSlash \u003d string.indexOf(slash);","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"zacwong2151"},"content":" int secondSlash \u003d string.indexOf(slash, firstSlash + 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":164,"author":{"gitId":"zacwong2151"},"content":" if (!string.substring(secondSlash, secondSlash + 3).equals(\"/to\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"zacwong2151"},"content":" throw new DukeException(\"You need to add a /to for events\");","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"zacwong2151"},"content":" return string.substring(secondSlash + 4);","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":169,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":170,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"zacwong2151"},"content":" * This method encapsulates the functionality of marking a task as completed or not","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027mark 1\u0027 will mark the Task at position 0 at the TaskArray as \u0027marked\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"zacwong2151"},"content":" * After marking description, duke.txt is updated to reflect the new list","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"zacwong2151"},"content":" * @param string the input string","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"zacwong2151"},"content":" public static void markDescription(String string) {","lastModifiedDate":"2023-08-22"},{"lineNumber":178,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"zacwong2151"},"content":" String clean \u003d string.replaceAll(\"\\\\D+\", \"\"); //remove non-digits","lastModifiedDate":"2023-08-22"},{"lineNumber":180,"author":{"gitId":"zacwong2151"},"content":" int pos \u003d Integer.parseInt(clean) - 1;","lastModifiedDate":"2023-08-22"},{"lineNumber":181,"author":{"gitId":"zacwong2151"},"content":" Task curr \u003d taskArray.get(pos);","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":183,"author":{"gitId":"zacwong2151"},"content":" if (string.contains(\"unmark\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":184,"author":{"gitId":"zacwong2151"},"content":" curr.markAsUnDone();","lastModifiedDate":"2023-08-22"},{"lineNumber":185,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":187,"author":{"gitId":"zacwong2151"},"content":" } else if (string.contains(\"mark\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":188,"author":{"gitId":"zacwong2151"},"content":" curr.markAsDone();","lastModifiedDate":"2023-08-22"},{"lineNumber":189,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":191,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":192,"author":{"gitId":"zacwong2151"},"content":" System.out.println(megaIndent + curr.getStatusIconWithBracket() + \" \" + curr.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-22"},{"lineNumber":194,"author":{"gitId":"zacwong2151"},"content":" updateFile(dataFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"zacwong2151"},"content":" } catch (IndexOutOfBoundsException | IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"You are trying to access a Task that does not exist!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":197,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":198,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":199,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":200,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"zacwong2151"},"content":" * This method encapsulates deleting of a task from TaskArray","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027delete 3\u0027 will delete the Task at position 2 of TaskArray","lastModifiedDate":"2023-08-30"},{"lineNumber":203,"author":{"gitId":"zacwong2151"},"content":" * After deleting the Task, duke.txt is updated to reflect the new list","lastModifiedDate":"2023-08-30"},{"lineNumber":204,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"zacwong2151"},"content":" * @param string the input string","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"zacwong2151"},"content":" public static void deleteTask(String string) {","lastModifiedDate":"2023-08-23"},{"lineNumber":208,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"zacwong2151"},"content":" String clean \u003d string.replaceAll(\"\\\\D+\", \"\"); //remove non-digits","lastModifiedDate":"2023-08-23"},{"lineNumber":210,"author":{"gitId":"zacwong2151"},"content":" int pos \u003d Integer.parseInt(clean);","lastModifiedDate":"2023-08-23"},{"lineNumber":211,"author":{"gitId":"zacwong2151"},"content":" if (pos \u003e taskArray.size()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":212,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"You are trying to delete a Task that does not exist\");","lastModifiedDate":"2023-08-23"},{"lineNumber":213,"author":{"gitId":"zacwong2151"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":214,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-23"},{"lineNumber":215,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":216,"author":{"gitId":"zacwong2151"},"content":" System.out.println(megaIndent + taskArray.get(pos - 1).toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":217,"author":{"gitId":"zacwong2151"},"content":" taskArray.remove(pos - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":218,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Now you have \" + taskArray.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":219,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-23"},{"lineNumber":220,"author":{"gitId":"zacwong2151"},"content":" updateFile(dataFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":221,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":222,"author":{"gitId":"zacwong2151"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":223,"author":{"gitId":"zacwong2151"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":224,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":225,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":226,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":227,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":228,"author":{"gitId":"zacwong2151"},"content":" * This function is called when the main method is run. It will print out all the tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":229,"author":{"gitId":"zacwong2151"},"content":" * in the list","lastModifiedDate":"2023-08-30"},{"lineNumber":230,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":231,"author":{"gitId":"zacwong2151"},"content":" * @param filePath the file where the lists of Tasks are stored. It is hardcoded to be \"data/duke.txt\"","lastModifiedDate":"2023-08-30"},{"lineNumber":232,"author":{"gitId":"zacwong2151"},"content":" * @throws FileNotFoundException if the file at this filePath is not found (though I\u0027m not sure","lastModifiedDate":"2023-08-30"},{"lineNumber":233,"author":{"gitId":"zacwong2151"},"content":" * when this will happen)","lastModifiedDate":"2023-08-30"},{"lineNumber":234,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":235,"author":{"gitId":"zacwong2151"},"content":" private static void printFileContents(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-08-30"},{"lineNumber":236,"author":{"gitId":"zacwong2151"},"content":" File f \u003d new File(filePath); // create a File for the given file path","lastModifiedDate":"2023-08-30"},{"lineNumber":237,"author":{"gitId":"zacwong2151"},"content":" Scanner s \u003d new Scanner(f); // create a Scanner using the File as the source","lastModifiedDate":"2023-08-30"},{"lineNumber":238,"author":{"gitId":"zacwong2151"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":239,"author":{"gitId":"zacwong2151"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2023-08-30"},{"lineNumber":240,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":241,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":242,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":243,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":244,"author":{"gitId":"zacwong2151"},"content":" String name \u003d \"zac\";","lastModifiedDate":"2023-08-21"},{"lineNumber":245,"author":{"gitId":"zacwong2151"},"content":" Scanner obj \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-21"},{"lineNumber":246,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":247,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-21"},{"lineNumber":248,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Hello! I\u0027m \" + name);","lastModifiedDate":"2023-08-21"},{"lineNumber":249,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"What can I do for you?\");","lastModifiedDate":"2023-08-21"},{"lineNumber":250,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-21"},{"lineNumber":251,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":252,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":253,"author":{"gitId":"zacwong2151"},"content":" printFileContents(dataFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":254,"author":{"gitId":"zacwong2151"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":255,"author":{"gitId":"zacwong2151"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":256,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":257,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":258,"author":{"gitId":"zacwong2151"},"content":" while (true) {","lastModifiedDate":"2023-08-21"},{"lineNumber":259,"author":{"gitId":"zacwong2151"},"content":" String userInput \u003d obj.nextLine();","lastModifiedDate":"2023-08-21"},{"lineNumber":260,"author":{"gitId":"zacwong2151"},"content":" if (userInput.equals(\"list\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":261,"author":{"gitId":"zacwong2151"},"content":" displayList();","lastModifiedDate":"2023-08-21"},{"lineNumber":262,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":263,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":264,"author":{"gitId":"zacwong2151"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":265,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.contains(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":266,"author":{"gitId":"zacwong2151"},"content":" markDescription(userInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":267,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.contains(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":268,"author":{"gitId":"zacwong2151"},"content":" markDescription(userInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":269,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.contains(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":270,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":271,"author":{"gitId":"zacwong2151"},"content":" whichTask(\"T\", userInput.substring(5));","lastModifiedDate":"2023-08-22"},{"lineNumber":272,"author":{"gitId":"zacwong2151"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":273,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":274,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":275,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.contains(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":276,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":277,"author":{"gitId":"zacwong2151"},"content":" whichTask(\"D\", userInput.substring(9));","lastModifiedDate":"2023-08-22"},{"lineNumber":278,"author":{"gitId":"zacwong2151"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":279,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":280,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":281,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.contains(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":282,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":283,"author":{"gitId":"zacwong2151"},"content":" whichTask(\"E\", userInput.substring(6));","lastModifiedDate":"2023-08-22"},{"lineNumber":284,"author":{"gitId":"zacwong2151"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":285,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":286,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":287,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.contains(\"delete\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":288,"author":{"gitId":"zacwong2151"},"content":" deleteTask(userInput);","lastModifiedDate":"2023-08-23"},{"lineNumber":289,"author":{"gitId":"zacwong2151"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":290,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":291,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":292,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"zacwong2151":290,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":" public DukeException(String error) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":" super(error);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"zacwong2151":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":" protected String from;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":" protected String to;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"zacwong2151"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"zacwong2151"},"content":" return \"E\" + super.toFileString() + \"| \" + from + \"-\" + to;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"zacwong2151"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"zacwong2151":17}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"abstract class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":" protected boolean marked;","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":" this.marked \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":" public String getStatusIconWithBracket() {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":" return marked ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":" return marked ? \"X\" : \"O\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"zacwong2151"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"zacwong2151"},"content":" this.marked \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"zacwong2151"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"zacwong2151"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"zacwong2151"},"content":" public void markAsUnDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"zacwong2151"},"content":" this.marked \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"zacwong2151"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"zacwong2151"},"content":" return this.getStatusIconWithBracket() + \" \" + description;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"zacwong2151"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"zacwong2151"},"content":" return \" | \" + this.getStatusIcon() + \" | \" + this.getDescription();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"zacwong2151"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"zacwong2151":33}},{"path":"src/main/java/TaskArrayManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"//import com.fasterxml.jackson.databind.ObjectMapper;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":"public class TaskArrayManager {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":"// private ArrayList\u003cTask\u003e taskArray;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":"// private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":"// public TaskArrayManager(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":"// this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":"// this.taskArray \u003d loadTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":"// }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"zacwong2151"},"content":"// public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"zacwong2151"},"content":"// try {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"zacwong2151"},"content":"// ObjectMapper objectMapper \u003d new ObjectMapper();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"zacwong2151"},"content":"// }s","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"zacwong2151"},"content":"// }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"zacwong2151"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"zacwong2151":20}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":" return \"T\" + super.toFileString();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"zacwong2151":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"todo borrow book","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":"deadline return book /y Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":"deadline return book by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":"event project meeting from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":"event project meeting /rom Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":"event project meeting /from Mon 2pm to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":"event project meeting /from Mon 2pm /o 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"zacwong2151"},"content":"todo randomthing","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"zacwong2151"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"zacwong2151"},"content":"mark 5","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"zacwong2151"},"content":"delete 4","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"zacwong2151"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"zacwong2151"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"zacwong2151":19}},{"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":"zacwong2151"},"content":"REM Set the working directory to the root directory (ip) before executing the script","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":"CD /D ..\\","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":"if not exist bin mkdir bin","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":"del .\\text-ui-test\\ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":"javac -cp src\\main\\java -Xlint:none -d bin src\\main\\java\\*.java","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"zacwong2151"},"content":"REM because now that the working directory is set to ip, ACTUAL.TXT and EXPECTED.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"zacwong2151"},"content":"REM can only be accessed with the appropriate cd","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"zacwong2151"},"content":"REM Run the program, feed commands from input.txt file, and redirect the output to ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"zacwong2151"},"content":"java -classpath bin Duke \u003c .\\text-ui-test\\input.txt \u003e .\\text-ui-test\\ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"zacwong2151"},"content":"REM Compare the output to the expected output","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"zacwong2151"},"content":"FC .\\text-ui-test\\ACTUAL.TXT .\\text-ui-test\\EXPECTED.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"zacwong2151":14,"-":14}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":" return \"[D]\" + super.toString() + \"(by: \" + localDatetoString(by) + \")\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"zacwong2151"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"zacwong2151"},"content":" return \"D\" + super.toFileString() + \"| \" + localDatetoString(by);","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zacwong2151"},"content":" public String localDatetoString(LocalDateTime dateTime) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zacwong2151"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mma\");","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zacwong2151"},"content":" String formattedDateTime \u003d dateTime.format(outputFormatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zacwong2151"},"content":" return formattedDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"zacwong2151"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"zacwong2151":23}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"import java.time.*;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":"import java.time.DayOfWeek;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":" static String indent \u003d \" \";","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":" static String megaIndent \u003d \" \";","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"zacwong2151"},"content":" static String horizontalLines \u003d indent + \"__________________________________________\";","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"zacwong2151"},"content":" static ArrayList\u003cTask\u003e taskArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"zacwong2151"},"content":" static String dataFile \u003d \"data/duke.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zacwong2151"},"content":" * Prints the input string with horizontal lines above and below it","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zacwong2151"},"content":" * @param string the input string","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zacwong2151"},"content":" public static void printWithIndent(String string) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + string);","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"zacwong2151"},"content":" * @return the last Task from the taskArray","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"zacwong2151"},"content":" public static Task getLastTask() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"zacwong2151"},"content":" return taskArray.get(taskArray.size() - 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"zacwong2151"},"content":" * displays the list of Tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"zacwong2151"},"content":" public static void displayList() {","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"zacwong2151"},"content":" for (int i \u003d 0; i \u003c taskArray.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"zacwong2151"},"content":" int num \u003d i + 1;","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"zacwong2151"},"content":" Task curr \u003d taskArray.get(i);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + num + \".\" + curr.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"zacwong2151"},"content":" * Everytime a Task is added to taskArray, clear the duke.txt file, then scan the whole","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"zacwong2151"},"content":" * taskArray and rewrite the entire txt file","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"zacwong2151"},"content":" * Initially, I did a writeToFile method where everytime a Task is added to taskArray, write","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"zacwong2151"},"content":" * the new task to duke.txt. However, this may cause some problems when it comes to updating","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"zacwong2151"},"content":" * or deleting tasks from the file, so I changed the implementation to rewriting the entire txt","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"zacwong2151"},"content":" * file everytime there is a change to the list. This causes a longer run time but since this mod","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"zacwong2151"},"content":" * is not about run time, it should be fine.","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"zacwong2151"},"content":" * @param filePath hardcoded relative path to duke.txt","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"zacwong2151"},"content":" * @throws IOException if the file at the filePath does not exist (I think)","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"zacwong2151"},"content":" private static void updateFile(String filePath) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"zacwong2151"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"zacwong2151"},"content":" // Clear the existing content by opening in write mode and immediately closing","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"zacwong2151"},"content":" fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"zacwong2151"},"content":" for (int i \u003d 0; i \u003c taskArray.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"zacwong2151"},"content":" fw.write(taskArray.get(i).toFileString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"zacwong2151"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"zacwong2151"},"content":" * For an input such as \u0027todo borrow book\u0027, letter is \u0027T\u0027 and string is \u0027borrow book\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"zacwong2151"},"content":" * After adding the Task to taskArray, duke.txt is updated to reflect the new list","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"zacwong2151"},"content":" * @param letter the letter corresponding to the first letter of the Task","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"zacwong2151"},"content":" * @param string the string corresponding to the chunk of text after the word todo, deadline, or event","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"zacwong2151"},"content":" public static void whichTask(String letter, String string) {","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"zacwong2151"},"content":" if (letter.equals(\"T\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"zacwong2151"},"content":" taskArray.add(new ToDo(string));","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"zacwong2151"},"content":" if (letter.equals(\"D\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"zacwong2151"},"content":" taskArray.add(new Deadline(getDescription(string), convertToLocalDateTime(getBy(string))));","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"zacwong2151"},"content":" if (letter.equals(\"E\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"zacwong2151"},"content":" taskArray.add(new Event(getDescription(string), getFrom(string), getTo(string)));","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"zacwong2151"},"content":" updateFile(dataFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"zacwong2151"},"content":" int arrayLength \u003d taskArray.size();","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-22"},{"lineNumber":94,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":95,"author":{"gitId":"zacwong2151"},"content":" System.out.println(megaIndent + getLastTask().toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Now you have \" + arrayLength + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"zacwong2151"},"content":" } catch (DukeException | IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"zacwong2151"},"content":" * For deadline and event Tasks, obtains the description of the Task (before the first slash)","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027event project meeting /from Mon 2pm /to 4pm\u0027 will return \u0027project meeting\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"zacwong2151"},"content":" * @param string of the Task","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"zacwong2151"},"content":" * @return the description of the Task","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"zacwong2151"},"content":" public static String getDescription(String string) {","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"zacwong2151"},"content":" int len \u003d string.length();","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"zacwong2151"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-22"},{"lineNumber":113,"author":{"gitId":"zacwong2151"},"content":" for (int i \u003d 0; i \u003c len; i++) {","lastModifiedDate":"2023-08-22"},{"lineNumber":114,"author":{"gitId":"zacwong2151"},"content":" if (string.charAt(i) \u003d\u003d \u0027/\u0027) {","lastModifiedDate":"2023-08-22"},{"lineNumber":115,"author":{"gitId":"zacwong2151"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":116,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":117,"author":{"gitId":"zacwong2151"},"content":" count++;","lastModifiedDate":"2023-08-22"},{"lineNumber":118,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":119,"author":{"gitId":"zacwong2151"},"content":" return string.substring(0, count);","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":121,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":122,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"zacwong2151"},"content":" * A method for the Deadline class to obtain the by part of the Task description","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027deadline return book /by Sunday\u0027 will return \u0027Sunday\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"zacwong2151"},"content":" * @param string the Task description","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"zacwong2151"},"content":" * @return the deadline","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"zacwong2151"},"content":" * @throws DukeException if the input string is formatted wrongly","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"zacwong2151"},"content":" public static String getBy(String string) throws DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"zacwong2151"},"content":" String slash \u003d \"/\";","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"zacwong2151"},"content":" int first \u003d string.indexOf(slash);","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"zacwong2151"},"content":" int second \u003d first + 3;","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"zacwong2151"},"content":" if (first \u003d\u003d -1 || !string.substring(first, second).equals(\"/by\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"zacwong2151"},"content":" throw new DukeException(\"You need to add a by timing!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"zacwong2151"},"content":" return string.substring(first + 4); // returns \"Sunday\"","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"zacwong2151"},"content":" * A method for the Event class to obtain the from part of the Event description","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027event project meeting /from Mon 2pm /to 4pm\u0027 will return \u0027Mon 2pm\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"zacwong2151"},"content":" * @param string the Task description","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"zacwong2151"},"content":" * @return the from part of the event","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"zacwong2151"},"content":" * @throws DukeException throws DukeException if invalid input","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"zacwong2151"},"content":" public static String getFrom(String string) throws DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"zacwong2151"},"content":" String slash \u003d \"/\";","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"zacwong2151"},"content":" int firstSlash \u003d string.indexOf(slash);","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"zacwong2151"},"content":" int secondSlash \u003d string.indexOf(slash, firstSlash + 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"zacwong2151"},"content":" if (firstSlash \u003d\u003d -1 || secondSlash \u003d\u003d -1","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"zacwong2151"},"content":" || !string.substring(firstSlash, firstSlash + 5).equals(\"/from\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"zacwong2151"},"content":" throw new DukeException(\"You need to add a /from and /to for events\");","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"zacwong2151"},"content":" return string.substring(firstSlash + 6, secondSlash - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":160,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"zacwong2151"},"content":" * A method for the Event class to obtain the to part of the Event description","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027event project meeting /from Mon 2pm /to 4pm\u0027 will return \u00274pm\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"zacwong2151"},"content":" * @param string the Task description","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"zacwong2151"},"content":" * @return the to part of the event","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"zacwong2151"},"content":" * @throws DukeException throws DukeException if invalid input","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"zacwong2151"},"content":" public static String getTo(String string) throws DukeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"zacwong2151"},"content":" String slash \u003d \"/\";","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"zacwong2151"},"content":" int firstSlash \u003d string.indexOf(slash);","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"zacwong2151"},"content":" int secondSlash \u003d string.indexOf(slash, firstSlash + 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":173,"author":{"gitId":"zacwong2151"},"content":" if (!string.substring(secondSlash, secondSlash + 3).equals(\"/to\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"zacwong2151"},"content":" throw new DukeException(\"You need to add a /to for events\");","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"zacwong2151"},"content":" return string.substring(secondSlash + 4);","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":178,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":179,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"zacwong2151"},"content":" * This method encapsulates the functionality of marking a task as completed or not","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027mark 1\u0027 will mark the Task at position 0 at the TaskArray as \u0027marked\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"zacwong2151"},"content":" * After marking description, duke.txt is updated to reflect the new list","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"zacwong2151"},"content":" * @param string the input string","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"zacwong2151"},"content":" public static void markDescription(String string) {","lastModifiedDate":"2023-08-22"},{"lineNumber":187,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"zacwong2151"},"content":" String clean \u003d string.replaceAll(\"\\\\D+\", \"\"); //remove non-digits","lastModifiedDate":"2023-08-22"},{"lineNumber":189,"author":{"gitId":"zacwong2151"},"content":" int pos \u003d Integer.parseInt(clean) - 1;","lastModifiedDate":"2023-08-22"},{"lineNumber":190,"author":{"gitId":"zacwong2151"},"content":" Task curr \u003d taskArray.get(pos);","lastModifiedDate":"2023-08-23"},{"lineNumber":191,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":192,"author":{"gitId":"zacwong2151"},"content":" if (string.contains(\"unmark\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":193,"author":{"gitId":"zacwong2151"},"content":" curr.markAsUnDone();","lastModifiedDate":"2023-08-22"},{"lineNumber":194,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":196,"author":{"gitId":"zacwong2151"},"content":" } else if (string.contains(\"mark\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":197,"author":{"gitId":"zacwong2151"},"content":" curr.markAsDone();","lastModifiedDate":"2023-08-22"},{"lineNumber":198,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-23"},{"lineNumber":199,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":200,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":201,"author":{"gitId":"zacwong2151"},"content":" System.out.println(megaIndent + curr.getStatusIconWithBracket() + \" \" + curr.description);","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-22"},{"lineNumber":203,"author":{"gitId":"zacwong2151"},"content":" updateFile(dataFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":204,"author":{"gitId":"zacwong2151"},"content":" } catch (IndexOutOfBoundsException | IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"You are trying to access a Task that does not exist!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":206,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":207,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":208,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":209,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"zacwong2151"},"content":" * This method encapsulates deleting of a task from TaskArray","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027delete 3\u0027 will delete the Task at position 2 of TaskArray","lastModifiedDate":"2023-08-30"},{"lineNumber":212,"author":{"gitId":"zacwong2151"},"content":" * After deleting the Task, duke.txt is updated to reflect the new list","lastModifiedDate":"2023-08-30"},{"lineNumber":213,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":214,"author":{"gitId":"zacwong2151"},"content":" * @param string the input string","lastModifiedDate":"2023-08-30"},{"lineNumber":215,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":216,"author":{"gitId":"zacwong2151"},"content":" public static void deleteTask(String string) {","lastModifiedDate":"2023-08-23"},{"lineNumber":217,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":218,"author":{"gitId":"zacwong2151"},"content":" String clean \u003d string.replaceAll(\"\\\\D+\", \"\"); //remove non-digits","lastModifiedDate":"2023-08-23"},{"lineNumber":219,"author":{"gitId":"zacwong2151"},"content":" int pos \u003d Integer.parseInt(clean);","lastModifiedDate":"2023-08-23"},{"lineNumber":220,"author":{"gitId":"zacwong2151"},"content":" if (pos \u003e taskArray.size()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":221,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"You are trying to delete a Task that does not exist\");","lastModifiedDate":"2023-08-23"},{"lineNumber":222,"author":{"gitId":"zacwong2151"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":223,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-23"},{"lineNumber":224,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":225,"author":{"gitId":"zacwong2151"},"content":" System.out.println(megaIndent + taskArray.get(pos - 1).toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":226,"author":{"gitId":"zacwong2151"},"content":" taskArray.remove(pos - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":227,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Now you have \" + taskArray.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":228,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-23"},{"lineNumber":229,"author":{"gitId":"zacwong2151"},"content":" updateFile(dataFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":230,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":231,"author":{"gitId":"zacwong2151"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":232,"author":{"gitId":"zacwong2151"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":234,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":235,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":236,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":237,"author":{"gitId":"zacwong2151"},"content":" * This function is called when the main method is run. It will print out all the tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":238,"author":{"gitId":"zacwong2151"},"content":" * in the list","lastModifiedDate":"2023-08-30"},{"lineNumber":239,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":240,"author":{"gitId":"zacwong2151"},"content":" * @param filePath the file where the lists of Tasks are stored. It is hardcoded to be \"data/duke.txt\"","lastModifiedDate":"2023-08-30"},{"lineNumber":241,"author":{"gitId":"zacwong2151"},"content":" * @throws FileNotFoundException if the file at this filePath is not found (though I\u0027m not sure","lastModifiedDate":"2023-08-30"},{"lineNumber":242,"author":{"gitId":"zacwong2151"},"content":" * when this will happen)","lastModifiedDate":"2023-08-30"},{"lineNumber":243,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":244,"author":{"gitId":"zacwong2151"},"content":" private static void printFileContents(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-08-30"},{"lineNumber":245,"author":{"gitId":"zacwong2151"},"content":" File f \u003d new File(filePath); // create a File for the given file path","lastModifiedDate":"2023-08-30"},{"lineNumber":246,"author":{"gitId":"zacwong2151"},"content":" Scanner s \u003d new Scanner(f); // create a Scanner using the File as the source","lastModifiedDate":"2023-08-30"},{"lineNumber":247,"author":{"gitId":"zacwong2151"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":248,"author":{"gitId":"zacwong2151"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2023-08-30"},{"lineNumber":249,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":250,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":251,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":252,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"zacwong2151"},"content":" * A function that helps convert a string to a LocalDateTime","lastModifiedDate":"2023-09-01"},{"lineNumber":254,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":255,"author":{"gitId":"zacwong2151"},"content":" * @param input the by part of the Deadline Task, eg. \"2/12/2019 1800\"","lastModifiedDate":"2023-09-01"},{"lineNumber":256,"author":{"gitId":"zacwong2151"},"content":" * @param c whether or not the Deadline is put in a \u0027-\u0027 format or \u0027/\u0027 format","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"zacwong2151"},"content":" * @return a LocalDateTime","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"zacwong2151"},"content":" * @throws DukeException if a specific time in 24hr format is not put","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":260,"author":{"gitId":"zacwong2151"},"content":" public static LocalDateTime parseDateTime(String input, char c) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":261,"author":{"gitId":"zacwong2151"},"content":" String[] parts \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":262,"author":{"gitId":"zacwong2151"},"content":" if (parts.length !\u003d 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":263,"author":{"gitId":"zacwong2151"},"content":" throw new DukeException(\"put in a time pls\");","lastModifiedDate":"2023-09-01"},{"lineNumber":264,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":265,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":266,"author":{"gitId":"zacwong2151"},"content":" String datePart \u003d parts[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":267,"author":{"gitId":"zacwong2151"},"content":" String timePart \u003d parts[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":268,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":269,"author":{"gitId":"zacwong2151"},"content":" String[] dateComponents;","lastModifiedDate":"2023-09-01"},{"lineNumber":270,"author":{"gitId":"zacwong2151"},"content":" if (c \u003d\u003d \u0027/\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":271,"author":{"gitId":"zacwong2151"},"content":" dateComponents \u003d datePart.split(\"/\");","lastModifiedDate":"2023-09-01"},{"lineNumber":272,"author":{"gitId":"zacwong2151"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":273,"author":{"gitId":"zacwong2151"},"content":" // c \u003d\u003d \u0027-\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":274,"author":{"gitId":"zacwong2151"},"content":" dateComponents \u003d datePart.split(\"-\");","lastModifiedDate":"2023-09-01"},{"lineNumber":275,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":276,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":277,"author":{"gitId":"zacwong2151"},"content":" if (dateComponents.length !\u003d 3) {","lastModifiedDate":"2023-09-01"},{"lineNumber":278,"author":{"gitId":"zacwong2151"},"content":" throw new IllegalArgumentException(\"Invalid date format\");","lastModifiedDate":"2023-09-01"},{"lineNumber":279,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":280,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":281,"author":{"gitId":"zacwong2151"},"content":" int date \u003d Integer.parseInt(dateComponents[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":282,"author":{"gitId":"zacwong2151"},"content":" int month \u003d Integer.parseInt(dateComponents[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":283,"author":{"gitId":"zacwong2151"},"content":" int year \u003d Integer.parseInt(dateComponents[2]);","lastModifiedDate":"2023-09-01"},{"lineNumber":284,"author":{"gitId":"zacwong2151"},"content":" int hour \u003d Integer.parseInt(timePart.substring(0, 2));","lastModifiedDate":"2023-09-01"},{"lineNumber":285,"author":{"gitId":"zacwong2151"},"content":" int minute \u003d Integer.parseInt(timePart.substring(2, 4));","lastModifiedDate":"2023-09-01"},{"lineNumber":286,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":287,"author":{"gitId":"zacwong2151"},"content":" return LocalDateTime.of(year, month, date, hour, minute);","lastModifiedDate":"2023-09-01"},{"lineNumber":288,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":289,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":290,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":291,"author":{"gitId":"zacwong2151"},"content":" * A function that takes in the by part of a Deadline Task, and converts it to a LocalDateTime","lastModifiedDate":"2023-09-01"},{"lineNumber":292,"author":{"gitId":"zacwong2151"},"content":" * For example, the input \u0027Sunday 1700\u0027 will return the corresponding LocalDateTime","lastModifiedDate":"2023-09-01"},{"lineNumber":293,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":294,"author":{"gitId":"zacwong2151"},"content":" * @param string the by part of the Deadline Task","lastModifiedDate":"2023-09-01"},{"lineNumber":295,"author":{"gitId":"zacwong2151"},"content":" * @return the LocalDateTime corresponding to the Deadline","lastModifiedDate":"2023-09-01"},{"lineNumber":296,"author":{"gitId":"zacwong2151"},"content":" * @throws DukeException if a specific time in 24hr format is not put","lastModifiedDate":"2023-09-01"},{"lineNumber":297,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":298,"author":{"gitId":"zacwong2151"},"content":" private static LocalDateTime convertToLocalDateTime(String string) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":299,"author":{"gitId":"zacwong2151"},"content":" if (string.indexOf(\u0027/\u0027) !\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":300,"author":{"gitId":"zacwong2151"},"content":" if (string.lastIndexOf(\u0027/\u0027) + 5 \u003d\u003d string.length()) { // \"2/12/2019 1800\"","lastModifiedDate":"2023-09-01"},{"lineNumber":301,"author":{"gitId":"zacwong2151"},"content":" throw new DukeException(\"put in a time pls\");","lastModifiedDate":"2023-09-01"},{"lineNumber":302,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":303,"author":{"gitId":"zacwong2151"},"content":" LocalDateTime dateTime \u003d parseDateTime(string, \u0027/\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":304,"author":{"gitId":"zacwong2151"},"content":" return dateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":305,"author":{"gitId":"zacwong2151"},"content":" } else if (string.indexOf(\u0027-\u0027) !\u003d -1) { //","lastModifiedDate":"2023-09-01"},{"lineNumber":306,"author":{"gitId":"zacwong2151"},"content":" if (string.lastIndexOf(\u0027-\u0027) + 3 \u003d\u003d string.length()) { // \"2019-10-15 1800\"","lastModifiedDate":"2023-09-01"},{"lineNumber":307,"author":{"gitId":"zacwong2151"},"content":" throw new DukeException(\"put in a time pls\");","lastModifiedDate":"2023-09-01"},{"lineNumber":308,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":309,"author":{"gitId":"zacwong2151"},"content":" LocalDateTime dateTime \u003d parseDateTime(string, \u0027-\u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":310,"author":{"gitId":"zacwong2151"},"content":" return dateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":311,"author":{"gitId":"zacwong2151"},"content":" } else { // \"Mon 1800\"","lastModifiedDate":"2023-09-01"},{"lineNumber":312,"author":{"gitId":"zacwong2151"},"content":" // problem 1: date does not overflow to next month","lastModifiedDate":"2023-09-01"},{"lineNumber":313,"author":{"gitId":"zacwong2151"},"content":" // problem 2: it goes backwards in day","lastModifiedDate":"2023-09-01"},{"lineNumber":314,"author":{"gitId":"zacwong2151"},"content":" String[] parts \u003d string.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":315,"author":{"gitId":"zacwong2151"},"content":" if (parts.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":316,"author":{"gitId":"zacwong2151"},"content":" throw new DukeException(\"put in a time pls\");","lastModifiedDate":"2023-09-01"},{"lineNumber":317,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":318,"author":{"gitId":"zacwong2151"},"content":" String dayPart \u003d parts[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":319,"author":{"gitId":"zacwong2151"},"content":" String timePart \u003d parts[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":320,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":321,"author":{"gitId":"zacwong2151"},"content":" int year \u003d LocalDate.now().getYear();","lastModifiedDate":"2023-09-01"},{"lineNumber":322,"author":{"gitId":"zacwong2151"},"content":" int month \u003d LocalDate.now().getMonth().getValue();","lastModifiedDate":"2023-09-01"},{"lineNumber":323,"author":{"gitId":"zacwong2151"},"content":" int daysToAdd \u003d -LocalDateTime.now().getDayOfWeek().compareTo(getDayOfWeek(dayPart.toUpperCase()));","lastModifiedDate":"2023-09-01"},{"lineNumber":324,"author":{"gitId":"zacwong2151"},"content":" int date \u003d LocalDate.now().getDayOfMonth() + daysToAdd;","lastModifiedDate":"2023-09-01"},{"lineNumber":325,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":326,"author":{"gitId":"zacwong2151"},"content":" int hour \u003d Integer.parseInt(timePart.substring(0, 2));","lastModifiedDate":"2023-09-01"},{"lineNumber":327,"author":{"gitId":"zacwong2151"},"content":" int minute \u003d Integer.parseInt(timePart.substring(2, 4));","lastModifiedDate":"2023-09-01"},{"lineNumber":328,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":329,"author":{"gitId":"zacwong2151"},"content":" LocalDate temp \u003d LocalDate.of(year, month, 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":330,"author":{"gitId":"zacwong2151"},"content":" // temp LocalDate to obtain the maximum no. of days in that month","lastModifiedDate":"2023-09-01"},{"lineNumber":331,"author":{"gitId":"zacwong2151"},"content":" int maxDaysOfMonth \u003d temp.lengthOfMonth();","lastModifiedDate":"2023-09-01"},{"lineNumber":332,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":333,"author":{"gitId":"zacwong2151"},"content":" if (date \u003e maxDaysOfMonth) {","lastModifiedDate":"2023-09-01"},{"lineNumber":334,"author":{"gitId":"zacwong2151"},"content":" // Date overflows, adjust LocalDateTime to the next month","lastModifiedDate":"2023-09-01"},{"lineNumber":335,"author":{"gitId":"zacwong2151"},"content":" return LocalDateTime.of(year, month + 1, date - maxDaysOfMonth, hour, minute);","lastModifiedDate":"2023-09-01"},{"lineNumber":336,"author":{"gitId":"zacwong2151"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":337,"author":{"gitId":"zacwong2151"},"content":" return LocalDateTime.of(year, month, date, hour, minute);","lastModifiedDate":"2023-09-01"},{"lineNumber":338,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":339,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":340,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":341,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":342,"author":{"gitId":"zacwong2151"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":343,"author":{"gitId":"zacwong2151"},"content":" * A function that takes in a user input that is the day of the week and returns the corresponding DayOfWeek","lastModifiedDate":"2023-09-01"},{"lineNumber":344,"author":{"gitId":"zacwong2151"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":345,"author":{"gitId":"zacwong2151"},"content":" * @param string the user input that is a day of the week, eg. \"sun\", \"Tuesday\", \"Mon\"","lastModifiedDate":"2023-09-01"},{"lineNumber":346,"author":{"gitId":"zacwong2151"},"content":" * @return the DayOfWeek as an enum","lastModifiedDate":"2023-09-01"},{"lineNumber":347,"author":{"gitId":"zacwong2151"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":348,"author":{"gitId":"zacwong2151"},"content":" public static DayOfWeek getDayOfWeek(String string) {","lastModifiedDate":"2023-09-01"},{"lineNumber":349,"author":{"gitId":"zacwong2151"},"content":" DayOfWeek result;","lastModifiedDate":"2023-09-01"},{"lineNumber":350,"author":{"gitId":"zacwong2151"},"content":" String day \u003d string.substring(0, 3);","lastModifiedDate":"2023-09-01"},{"lineNumber":351,"author":{"gitId":"zacwong2151"},"content":" switch(day) {","lastModifiedDate":"2023-09-01"},{"lineNumber":352,"author":{"gitId":"zacwong2151"},"content":" case \"MON\":","lastModifiedDate":"2023-09-01"},{"lineNumber":353,"author":{"gitId":"zacwong2151"},"content":" result \u003d DayOfWeek.MONDAY;","lastModifiedDate":"2023-09-01"},{"lineNumber":354,"author":{"gitId":"zacwong2151"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":355,"author":{"gitId":"zacwong2151"},"content":" case \"TUE\":","lastModifiedDate":"2023-09-01"},{"lineNumber":356,"author":{"gitId":"zacwong2151"},"content":" result \u003d DayOfWeek.TUESDAY;","lastModifiedDate":"2023-09-01"},{"lineNumber":357,"author":{"gitId":"zacwong2151"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":358,"author":{"gitId":"zacwong2151"},"content":" case \"WED\":","lastModifiedDate":"2023-09-01"},{"lineNumber":359,"author":{"gitId":"zacwong2151"},"content":" result \u003d DayOfWeek.WEDNESDAY;","lastModifiedDate":"2023-09-01"},{"lineNumber":360,"author":{"gitId":"zacwong2151"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":361,"author":{"gitId":"zacwong2151"},"content":" case \"THU\":","lastModifiedDate":"2023-09-01"},{"lineNumber":362,"author":{"gitId":"zacwong2151"},"content":" result \u003d DayOfWeek.THURSDAY;","lastModifiedDate":"2023-09-01"},{"lineNumber":363,"author":{"gitId":"zacwong2151"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":364,"author":{"gitId":"zacwong2151"},"content":" case \"FRI\":","lastModifiedDate":"2023-09-01"},{"lineNumber":365,"author":{"gitId":"zacwong2151"},"content":" result \u003d DayOfWeek.FRIDAY;","lastModifiedDate":"2023-09-01"},{"lineNumber":366,"author":{"gitId":"zacwong2151"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":367,"author":{"gitId":"zacwong2151"},"content":" case \"SAT\":","lastModifiedDate":"2023-09-01"},{"lineNumber":368,"author":{"gitId":"zacwong2151"},"content":" result \u003d DayOfWeek.SATURDAY;","lastModifiedDate":"2023-09-01"},{"lineNumber":369,"author":{"gitId":"zacwong2151"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":370,"author":{"gitId":"zacwong2151"},"content":" case \"SUN\":","lastModifiedDate":"2023-09-01"},{"lineNumber":371,"author":{"gitId":"zacwong2151"},"content":" result \u003d DayOfWeek.SUNDAY;","lastModifiedDate":"2023-09-01"},{"lineNumber":372,"author":{"gitId":"zacwong2151"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":373,"author":{"gitId":"zacwong2151"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":374,"author":{"gitId":"zacwong2151"},"content":" result \u003d DayOfWeek.MONDAY;","lastModifiedDate":"2023-09-01"},{"lineNumber":375,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":376,"author":{"gitId":"zacwong2151"},"content":" return result;","lastModifiedDate":"2023-09-01"},{"lineNumber":377,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":378,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":379,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":380,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":381,"author":{"gitId":"zacwong2151"},"content":" String name \u003d \"zac\";","lastModifiedDate":"2023-08-21"},{"lineNumber":382,"author":{"gitId":"zacwong2151"},"content":" Scanner obj \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-21"},{"lineNumber":383,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":384,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-21"},{"lineNumber":385,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"Hello! I\u0027m \" + name);","lastModifiedDate":"2023-08-21"},{"lineNumber":386,"author":{"gitId":"zacwong2151"},"content":" System.out.println(indent + \"What can I do for you?\");","lastModifiedDate":"2023-08-21"},{"lineNumber":387,"author":{"gitId":"zacwong2151"},"content":" System.out.println(horizontalLines);","lastModifiedDate":"2023-08-21"},{"lineNumber":388,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":389,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":390,"author":{"gitId":"zacwong2151"},"content":" printFileContents(dataFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":391,"author":{"gitId":"zacwong2151"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":392,"author":{"gitId":"zacwong2151"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":393,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":394,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":395,"author":{"gitId":"zacwong2151"},"content":" while (true) {","lastModifiedDate":"2023-08-21"},{"lineNumber":396,"author":{"gitId":"zacwong2151"},"content":" String userInput \u003d obj.nextLine();","lastModifiedDate":"2023-08-21"},{"lineNumber":397,"author":{"gitId":"zacwong2151"},"content":" if (userInput.equals(\"list\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":398,"author":{"gitId":"zacwong2151"},"content":" displayList();","lastModifiedDate":"2023-08-21"},{"lineNumber":399,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":400,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":401,"author":{"gitId":"zacwong2151"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":402,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.contains(\"unmark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":403,"author":{"gitId":"zacwong2151"},"content":" markDescription(userInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":404,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.contains(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":405,"author":{"gitId":"zacwong2151"},"content":" markDescription(userInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":406,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.contains(\"todo\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":407,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":408,"author":{"gitId":"zacwong2151"},"content":" whichTask(\"T\", userInput.substring(5));","lastModifiedDate":"2023-08-22"},{"lineNumber":409,"author":{"gitId":"zacwong2151"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":410,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":411,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":412,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.contains(\"deadline\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":413,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":414,"author":{"gitId":"zacwong2151"},"content":" whichTask(\"D\", userInput.substring(9));","lastModifiedDate":"2023-08-22"},{"lineNumber":415,"author":{"gitId":"zacwong2151"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":416,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":417,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":418,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.contains(\"event\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":419,"author":{"gitId":"zacwong2151"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":420,"author":{"gitId":"zacwong2151"},"content":" whichTask(\"E\", userInput.substring(6));","lastModifiedDate":"2023-08-22"},{"lineNumber":421,"author":{"gitId":"zacwong2151"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":422,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":423,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":424,"author":{"gitId":"zacwong2151"},"content":" } else if (userInput.contains(\"delete\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":425,"author":{"gitId":"zacwong2151"},"content":" deleteTask(userInput);","lastModifiedDate":"2023-08-23"},{"lineNumber":426,"author":{"gitId":"zacwong2151"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":427,"author":{"gitId":"zacwong2151"},"content":" printWithIndent(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-23"},{"lineNumber":428,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":429,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":430,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":431,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"zacwong2151":427,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":" public DukeException(String error) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":" super(error);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"zacwong2151":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"import java.time.temporal.Temporal;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":" protected String from;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":" protected String to;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"zacwong2151"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"zacwong2151"},"content":" return \"E\" + super.toFileString() + \"| \" + from + \"-\" + to;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"zacwong2151"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"zacwong2151":18}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":"abstract class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":" protected boolean marked;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":" this.marked \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":" public String getStatusIconWithBracket() {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":" return marked ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":" return marked ? \"X\" : \"O\";","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"zacwong2151"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"zacwong2151"},"content":" this.marked \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"zacwong2151"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"zacwong2151"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"zacwong2151"},"content":" public void markAsUnDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"zacwong2151"},"content":" this.marked \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"zacwong2151"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"zacwong2151"},"content":" return this.getStatusIconWithBracket() + \" \" + description;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"zacwong2151"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"zacwong2151"},"content":" return \" | \" + this.getStatusIcon() + \" | \" + this.getDescription();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"zacwong2151"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"zacwong2151":34}},{"path":"src/main/java/TaskArrayManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"//import com.fasterxml.jackson.databind.ObjectMapper;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":"public class TaskArrayManager {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":"// private ArrayList\u003cTask\u003e taskArray;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":"// private String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":"// public TaskArrayManager(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":"// this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":"// this.taskArray \u003d loadTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":"// }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"zacwong2151"},"content":"// public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"zacwong2151"},"content":"// try {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"zacwong2151"},"content":"// ObjectMapper objectMapper \u003d new ObjectMapper();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"zacwong2151"},"content":"// }s","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"zacwong2151"},"content":"// }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"zacwong2151"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"zacwong2151":20}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":" return \"T\" + super.toFileString();","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"zacwong2151":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"zacwong2151"},"content":"todo borrow book","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"zacwong2151"},"content":"deadline return book /by Sunday 1700","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zacwong2151"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":"todo","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"zacwong2151"},"content":"deadline return book /y Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":"deadline return book by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"zacwong2151"},"content":"event project meeting from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"zacwong2151"},"content":"event project meeting /rom Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":"event project meeting /from Mon 2pm to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"zacwong2151"},"content":"event project meeting /from Mon 2pm /o 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"zacwong2151"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"zacwong2151"},"content":"todo randomthing","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"zacwong2151"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"zacwong2151"},"content":"mark 5","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"zacwong2151"},"content":"delete 4","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"zacwong2151"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"zacwong2151"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"zacwong2151":19}},{"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":"zacwong2151"},"content":"REM Set the working directory to the root directory (ip) before executing the script","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"zacwong2151"},"content":"CD /D ..\\","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"zacwong2151"},"content":"if not exist bin mkdir bin","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"zacwong2151"},"content":"del .\\text-ui-test\\ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"zacwong2151"},"content":"javac -cp src\\main\\java -Xlint:none -d bin src\\main\\java\\*.java","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"zacwong2151"},"content":"REM because now that the working directory is set to ip, ACTUAL.TXT and EXPECTED.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"zacwong2151"},"content":"REM can only be accessed with the appropriate cd","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"zacwong2151"},"content":"REM Run the program, feed commands from input.txt file, and redirect the output to ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"zacwong2151"},"content":"java -classpath bin Duke \u003c .\\text-ui-test\\input.txt \u003e .\\text-ui-test\\ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"zacwong2151"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"zacwong2151"},"content":"REM Compare the output to the expected output","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"zacwong2151"},"content":"FC .\\text-ui-test\\ACTUAL.TXT .\\text-ui-test\\EXPECTED.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"zacwong2151":14,"-":14}}] diff --git a/zacwong2151_ip_master/commits.json b/zacwong2151_ip_master/commits.json index b1d0eff3..888f685b 100644 --- a/zacwong2151_ip_master/commits.json +++ b/zacwong2151_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"zacwong2151":[{"date":"2023-08-21","commitResults":[{"hash":"28972e3dd62ab92400a3e252f576c84353dc5557","isMergeCommit":false,"messageTitle":"added couple print.ln statements for level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"46f6c15b26629ecbc4eb6a54eb69a9384f871231","isMergeCommit":false,"messageTitle":"finished Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"d27e812a2f157b6e439455029e506555e37c407b","isMergeCommit":false,"messageTitle":"added add, list features for level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"22ef12aaec880d3d6ec1fde5b1d933b0fb8bb9ef","isMergeCommit":false,"messageTitle":"added Task class and added Mark as Done feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":8}}}]},{"date":"2023-08-22","commitResults":[{"hash":"b02ba752461442f9986ad625bb81f4dab09be8e8","isMergeCommit":false,"messageTitle":"added multiple subclasses of Task, made Task abstract","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":24}}},{"hash":"844d19f18838122c34d6a533b533df7b972dec09","isMergeCommit":false,"messageTitle":"added automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":2,"deletions":2},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"4de06649fca07b774e918ce2a7d08577c15532db","isMergeCommit":false,"messageTitle":"implemented handle exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":104,"deletions":67}}},{"hash":"a457b9e984139a15d9fb6166e6947c111aa71f2b","isMergeCommit":false,"messageTitle":"implemented delete feature for Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":31,"deletions":24}}}]},{"date":"2023-08-30","commitResults":[{"hash":"739be8d0108cb633d978ea0dc6794e7547e9bf05","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":2},"java":{"insertions":181,"deletions":18},"bat":{"insertions":14,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"zacwong2151":{"java":393,"md":0,"fxml":0,"sh":0,"bat":14,"gradle":0,"txt":22}},"authorContributionVariance":{"zacwong2151":8207.775},"authorDisplayNameMap":{"zacwong2151":"CS2103T-T14-4 ZACH.. JUN"}} +{"authorDailyContributionsMap":{"zacwong2151":[{"date":"2023-08-21","commitResults":[{"hash":"28972e3dd62ab92400a3e252f576c84353dc5557","isMergeCommit":false,"messageTitle":"added couple print.ln statements for level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"46f6c15b26629ecbc4eb6a54eb69a9384f871231","isMergeCommit":false,"messageTitle":"finished Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"d27e812a2f157b6e439455029e506555e37c407b","isMergeCommit":false,"messageTitle":"added add, list features for level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"22ef12aaec880d3d6ec1fde5b1d933b0fb8bb9ef","isMergeCommit":false,"messageTitle":"added Task class and added Mark as Done feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":8}}}]},{"date":"2023-08-22","commitResults":[{"hash":"b02ba752461442f9986ad625bb81f4dab09be8e8","isMergeCommit":false,"messageTitle":"added multiple subclasses of Task, made Task abstract","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":24}}},{"hash":"844d19f18838122c34d6a533b533df7b972dec09","isMergeCommit":false,"messageTitle":"added automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":2,"deletions":2},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-23","commitResults":[{"hash":"4de06649fca07b774e918ce2a7d08577c15532db","isMergeCommit":false,"messageTitle":"implemented handle exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":104,"deletions":67}}},{"hash":"a457b9e984139a15d9fb6166e6947c111aa71f2b","isMergeCommit":false,"messageTitle":"implemented delete feature for Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":31,"deletions":24}}}]},{"date":"2023-08-30","commitResults":[{"hash":"739be8d0108cb633d978ea0dc6794e7547e9bf05","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":2},"java":{"insertions":181,"deletions":18},"bat":{"insertions":14,"deletions":7}}}]},{"date":"2023-09-01","commitResults":[{"hash":"1b51899da699bddfde83dbd046f254a40e1dbef7","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":155,"deletions":8}}},{"hash":"8cfb3da583291caf6eec6d06f2aac22793cd00b6","isMergeCommit":false,"messageTitle":"doing this commit to merge Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3}}},{"hash":"a28b33cfdaee84a803a03e2246629959aeff6382","isMergeCommit":true,"messageTitle":"deleted duke.txt file to resolve conflict","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"zacwong2151":{"java":540,"md":0,"fxml":0,"sh":0,"bat":14,"gradle":0,"txt":19}},"authorContributionVariance":{"zacwong2151":8164.8623},"authorDisplayNameMap":{"zacwong2151":"CS2103T-T14-4 ZACH.. JUN"}} diff --git a/zekone_ip_master/authorship.json b/zekone_ip_master/authorship.json index d7b89073..533c3fb8 100644 --- a/zekone_ip_master/authorship.json +++ b/zekone_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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" mainClass.set(\"main.java.Main\")","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" archiveBaseName \u003d \"thorndike\"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"zekone":2,"-":40}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"public class Main {","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" Thorndike chatbot \u003d new Thorndike();","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" chatbot.start();","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":7}},{"path":"src/main/java/Thorndike.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"import exceptions.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import command.CmdBye;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"import command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"import command.CommandParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"import utility.TextFileHandler;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"public class Thorndike {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" private Boolean running;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" public Thorndike() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" this.running \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" TextFileHandler.createFile(Storage.TASK_FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" this.taskList \u003d Storage.readFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" * Starts the chatbot.","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" public void start() {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" greet();","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" while (running) {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" listen();","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" } catch (ThorndikeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" ui.print(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":" * Listens to command given to user.","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" private void listen() throws ThorndikeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":" System.out.print(\"\u003e\u003e \");","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" Command command \u003d CommandParser.parse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":" if (command \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":" if (command instanceof CmdBye) {","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":" this.running \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":" command.execute(taskList, ui);","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"zekone"},"content":" * Sends greetings to user.","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"zekone"},"content":" private void greet() {","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"zekone"},"content":" ui.print(\"Meow! I\u0027m Thorndike.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"zekone"},"content":" ui.print(\"What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":71}},{"path":"src/main/java/command/CmdAddTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"public class CmdAddTask extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" public CmdAddTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" ui.print(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" ui.print(task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" ui.print(String.format(\"Now you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":22}},{"path":"src/main/java/command/CmdBye.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"public class CmdBye extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" ui.print(\"Bye meow! Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":13}},{"path":"src/main/java/command/CmdDelete.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"public class CmdDelete extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" public CmdDelete(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" Task deleted \u003d taskList.deleteTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" ui.print(\"Meow. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" ui.print(deleted.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" ui.print(String.format(\"Now you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" Storage.writeToFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":24}},{"path":"src/main/java/command/CmdList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"public class CmdList extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" ui.print(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" for (int i \u003d 1; i \u003c taskList.size() + 1; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" Task task \u003d taskList.getTask(i - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" ui.print(String.format(\"%d. %s\", i, task.toString()));","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":18}},{"path":"src/main/java/command/CmdMark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"public class CmdMark extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" public CmdMark(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" taskList.markDone(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" ui.print(\"Meow! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" ui.print(taskList.getTask(index).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" Storage.writeToFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":22}},{"path":"src/main/java/command/CmdUnmark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"public class CmdUnmark extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" public CmdUnmark(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" taskList.markNotDone(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" ui.print(\"Meow! I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" ui.print(taskList.getTask(index).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" Storage.writeToFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":22}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" public abstract void execute(TaskList taskList, Ui ui);","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":9}},{"path":"src/main/java/command/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import exceptions.InvalidDateTimeFormat;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import exceptions.InvalidIndexException;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import exceptions.MissingDescriptionException;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"import exceptions.ThorndikeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"import task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"import utility.DateTimeParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"import utility.StringUtility;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":"public abstract class CommandParser {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" * Parse the input given by user.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" * @param input User input","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" * @return Map of options and values.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" public static Command parse(String input) throws ThorndikeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" String command \u003d input.split(\" \")[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" String[] argList \u003d input.split(\" /\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" String description \u003d StringUtility.removeFirstWord(input.split(\" /\")[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" Map\u003cString, String\u003e arguments \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" for (String arg : argList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" String option \u003d StringUtility.getFirstWord(arg);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" String value \u003d StringUtility.removeFirstWord(arg);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" if (!option.equals(command)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" arguments.put(\"command\", command);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" arguments.put(\"description\", value);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" arguments.put(option, value);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" return new CmdList();","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":" return new CmdBye();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" return new CmdMark(parseIndex(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":" if (command.equals(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" return new CmdUnmark(parseIndex(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":" if (command.equals(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":" throw new MissingDescriptionException(\"todo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":" return new CmdAddTask(new Todo(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"zekone"},"content":" if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"zekone"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"zekone"},"content":" throw new MissingDescriptionException(\"deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"zekone"},"content":" LocalDateTime by \u003d DateTimeParser.parse(arguments.get(\"by\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"zekone"},"content":" if (by \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"zekone"},"content":" throw new InvalidDateTimeFormat();","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"zekone"},"content":" return new CmdAddTask(new Deadline(description, by));","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"zekone"},"content":" if (command.equals(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"zekone"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"zekone"},"content":" throw new MissingDescriptionException(\"event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"zekone"},"content":" LocalDateTime from \u003d DateTimeParser.parse(arguments.get(\"from\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"zekone"},"content":" LocalDateTime to \u003d DateTimeParser.parse(arguments.get(\"to\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"zekone"},"content":" if (from \u003d\u003d null || to \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"zekone"},"content":" throw new InvalidDateTimeFormat();","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"zekone"},"content":" return new CmdAddTask(new Event(description, from, to));","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"zekone"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"zekone"},"content":" * Gets index from a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"zekone"},"content":" * @param idx String to parse index.","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"zekone"},"content":" private static int parseIndex(String index) throws ThorndikeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"zekone"},"content":" int idx \u003d -1;","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"zekone"},"content":" idx \u003d Integer.parseInt(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"zekone"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"zekone"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"zekone"},"content":" return idx - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":112}},{"path":"src/main/java/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"public class InvalidCommandException extends ThorndikeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" super(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":9}},{"path":"src/main/java/exceptions/InvalidDateTimeFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"public class InvalidDateTimeFormat extends ThorndikeException{","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" public InvalidDateTimeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" super(\"The given format is wrong!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"zekone":8}},{"path":"src/main/java/exceptions/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"public class InvalidIndexException extends ThorndikeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" public InvalidIndexException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" super(\"The index given is invalid\");","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":8}},{"path":"src/main/java/exceptions/MissingDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"public class MissingDescriptionException extends ThorndikeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" public MissingDescriptionException(String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" super(String.format(\"The description of a %s cannot be empty.\", command));","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":9}},{"path":"src/main/java/exceptions/ThorndikeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"public class ThorndikeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" public ThorndikeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" super(\"MEOW! \" + message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":7}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"import task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"import utility.DateTimeParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"import utility.TextFileHandler;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"public abstract class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" public static final String TASK_FILE_PATH \u003d \"data/tasks.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" public static final String TASK_FILE_SEPARATOR \u003d \"-\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" public static final String TASK_FILE_TB_FORMAT \u003d \"dd/MM/yyyy HHmm\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" public static TaskList readFromFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" TaskList res \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" String[] lines \u003d TextFileHandler.readLines(TASK_FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" for (String line : lines) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" String[] task \u003d line.split(TASK_FILE_SEPARATOR);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" String taskType \u003d task[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" String status \u003d task[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" String description \u003d task[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" res.addTask(new Todo(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" String time \u003d task[3];","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" res.addTask(new Deadline(description, DateTimeParser.parse(time)));","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" String from \u003d task[3];","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" String to \u003d task[4];","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" res.addTask(new Event(description, DateTimeParser.parse(from),","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" DateTimeParser.parse(to)));","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" if (status.equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" res.markDone(res.size() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" return res;","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":" public static void writeToFile(TaskList list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":" String output \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":" Task task \u003d list.getTask(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":" output +\u003d task.getDescription();","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":" if (task.isDone()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR + \"1\";","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR + \"0\";","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"zekone"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR + \"T\";","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"zekone"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR + \"D\";","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"zekone"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"zekone"},"content":" + deadline.getCompleteBy().format(DateTimeFormatter.ofPattern(TASK_FILE_TB_FORMAT));","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"zekone"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR + \"E\";","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"zekone"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"zekone"},"content":" + event.getStartTime().format(DateTimeFormatter.ofPattern(TASK_FILE_TB_FORMAT));","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"zekone"},"content":" + event.getEndTime().format(DateTimeFormatter.ofPattern(TASK_FILE_TB_FORMAT));","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"zekone"},"content":" output +\u003d System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"zekone"},"content":" TextFileHandler.writeText(TASK_FILE_PATH, output);","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"zekone"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"zekone"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":90}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" * Returns the time when the deadline is due.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" * @return Time when the deadline is due.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" public LocalDateTime getCompleteBy() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" return by;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" * Returns a string representation of Deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" * @return A string representation of Deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" return \"[D]\" + super.toString() + \" (by: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" + by.format(DateTimeFormatter.ofPattern(\"d MMM yyyy, HHmm\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":34}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" * Returns the starting time of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" * @return The starting time of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" public LocalDateTime getStartTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" return from;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" * Returns the ending time of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" * @return The ending time of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" public LocalDateTime getEndTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" return to;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" * Returns a string representation of Event.","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" * @return A string representation of Event.","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" from.format(DateTimeFormatter.ofPattern(\"d MMM yyyy, HHmm\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" to.format(DateTimeFormatter.ofPattern(\"d MMM yyyy, HHmm\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":46}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" protected Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" * Gets the status icon of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" * @return \"X\" if done, \" \" if not done.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" * Returns the status of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" * @return true if done, false if not done.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" public Boolean isDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" return isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" * Sets task to done.","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" public void setDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" * Sets task to not done.","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" public void setNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":" * Returns the decription of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":" * @return Desription of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" * Gets the string representation of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":" * @return String representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), this.description);","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":63}},{"path":"src/main/java/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" return list.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" list.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" Task deleted \u003d list.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" list.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" return deleted;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" public void markDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" list.get(index).setDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" public void markNotDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" list.get(index).setNotDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" public boolean hasIndex(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" return index \u003e 0 \u0026\u0026 index \u003c list.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" return list.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":43}},{"path":"src/main/java/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" * Returns a string representation of Todo","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" * @return A string representation of Todo","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":18}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" System.out.print(\"\u003e\u003e \");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" return input;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" public void print(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" System.out.println(\" \" + message);","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":22}},{"path":"src/main/java/utility/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package utility;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"public abstract class DateTimeParser {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" public final static String[] DATE_FORMATS \u003d {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" \"yyyy-M-d\",","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" \"d-M-yyyy\",","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" \"yyyy/M/d\",","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" \"d/M/yyyy\",","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" };","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" public final static String[] TIME_FORMATS \u003d {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" \"HH:mm\",","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" \"HH-mm\",","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" \"HHmm\"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" };","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" public static LocalDateTime parse(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" String date \u003d input;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" String time \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" String dateFormat \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" if (input.split(\" \").length \u003d\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" date \u003d input.split(\" \")[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" time \u003d input.split(\" \")[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" for (String format : DATE_FORMATS) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(format);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" LocalDate.parse(date, dateFormatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" dateFormat \u003d format;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" // do nothing","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" if (dateFormat !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" for (String format : TIME_FORMATS) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" String dateTimeFormat \u003d dateFormat + \" \" + format;","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(dateTimeFormat);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" return LocalDateTime.parse(input, dateTimeFormatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" // do nothing","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":" if (time \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" return LocalDate.parse(date, DateTimeFormatter.ofPattern(dateFormat)).atStartOfDay();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"zekone":63}},{"path":"src/main/java/utility/StringUtility.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package utility;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"public abstract class StringUtility {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" * Removes the first word from a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" * @param s The input string","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" * @return New string without first word.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" public static String removeFirstWord(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" int indexOfSpace \u003d s.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" if (indexOfSpace \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" return \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" return s.substring(indexOfSpace + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" * Extracts the first word from a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" * @param s The input string.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" * @return The first word.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" public static String getFirstWord(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" int indexOfSpace \u003d s.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" if (indexOfSpace \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" return s;","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" return s.substring(0, indexOfSpace);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":33}},{"path":"src/main/java/utility/TextFileHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package utility;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"public abstract class TextFileHandler {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" * Creates a .txt file along with the necessary directories.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" * @param filePath Path of the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" * @throws IOException if the file path is not .txt","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" public static void createFile(String filePath) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" File directory \u003d file.getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" if (!isTxtFile(file)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" throw new IOException(\"File is not a text file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" * Writes texts to .txt file.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" * @param filePath Path of the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" * @param text Text to be written in the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" * @throws IOException if file cannot be opened.","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" public static void writeText(String filePath, String text) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" FileWriter writer \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" writer.write(text);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" * Returns the lines of the file, creates file if not present.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":" * @param filePath Path of the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":" * @return A array of string which are lines in the .txt file.","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":" * @throws IOException if file cannot be opened.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" public static String[] readLines(String filePath) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":" return lines.toArray(new String[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":" * Checks if the path given is a .txt file.","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"zekone"},"content":" * ","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"zekone"},"content":" * @param filePath Path of the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"zekone"},"content":" * @return true is file is .txt, false otherwise.","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"zekone"},"content":" public static boolean isTxtFile(File filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"zekone"},"content":" String fileName \u003d filePath.getName();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"zekone"},"content":" return fileName.endsWith(\".txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"zekone":73}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"todo read books","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":2}},{"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":"zekone"},"content":"java -classpath ..\\bin Thorndike \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"zekone":1,"-":20}}] +[{"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":"zekone"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"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":"zekone"},"content":" mainClass.set(\"Main\")","lastModifiedDate":"2023-09-01"},{"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":"zekone"},"content":" archiveBaseName \u003d \"thorndike\"","lastModifiedDate":"2023-09-01"},{"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"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":"java {","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":12,"-":40}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":" * Main class for starting the Thorndike chatbot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"public class Main {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" * The main method that initializes and starts the Thorndike chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" * @param args The command-line arguments (not used in this application).","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" Thorndike chatbot \u003d new Thorndike();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" chatbot.start();","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":17}},{"path":"src/main/java/Thorndike.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import command.CmdBye;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import command.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import command.CommandParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"import exceptions.InvalidCommandException;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"import exceptions.ThorndikeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"import utility.TextFileHandler;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" * Thorndike - A simple chatbot for managing tasks and user interactions.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":"public class Thorndike {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" private Boolean isRunning;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" private Ui ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" * Constructs a Thorndike chatbot and initializes necessary components.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" * It sets up the user interface, task list, and handles potential file I/O","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" * exceptions.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" public Thorndike() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" this.isRunning \u003d true;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" TextFileHandler.createFile(Storage.TASK_FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" this.taskList \u003d Storage.readFromFile();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" * Starts the Thorndike chatbot and enters the main interaction loop.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" * It displays a greeting message and listens for user commands until the","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":" * chatbot is terminated.","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" public void start() {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":" greet();","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" while (isRunning) {","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":" listen();","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":" } catch (ThorndikeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":" ui.print(e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":" private void listen() throws ThorndikeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":" System.out.print(\"\u003e\u003e \");","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":" Command command \u003d CommandParser.parse(input);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"zekone"},"content":" if (command \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"zekone"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"zekone"},"content":" if (command instanceof CmdBye) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"zekone"},"content":" this.isRunning \u003d false;","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"zekone"},"content":" command.execute(taskList, ui);","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"zekone"},"content":" private void greet() {","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"zekone"},"content":" ui.print(\"Meow! I\u0027m Thorndike.\");","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"zekone"},"content":" ui.print(\"What can I do for you?\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":79}},{"path":"src/main/java/command/CmdAddTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" * Represents a command to add a task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"public class CmdAddTask extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" private Task task;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" * Constructs a CmdAddTask object with the task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" * @param task The task to be added to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" public CmdAddTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" this.task \u003d task;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" * Executes the command to add the task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" * @param taskList The task list to which the task should be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" * @param ui The user interface for displaying feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" ui.print(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" ui.print(task.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" ui.print(String.format(\"Now you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":38}},{"path":"src/main/java/command/CmdBye.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" * Represents a command to exit the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"public class CmdBye extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" * Executes the command to exit the application and displays a farewell message.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" * @param taskList Not used in this command.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" * @param ui The user interface for displaying the farewell message.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" ui.print(\"Bye meow! Hope to see you again soon!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":24}},{"path":"src/main/java/command/CmdDelete.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" * Represents a command to delete a task from the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"public class CmdDelete extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" * Constructs a CmdDelete object with the index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" public CmdDelete(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" * Executes the command to delete a task from the task list, displays","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" * the deleted task, updates the task list size, and writes changes to","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" * the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" * @param taskList The task list from which the task should be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" * @param ui The user interface for displaying feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" Task deleted \u003d taskList.deleteTask(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" ui.print(\"Meow. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" ui.print(deleted.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" ui.print(String.format(\"Now you have %d tasks in the list.\", taskList.size()));","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" Storage.writeToFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":42}},{"path":"src/main/java/command/CmdFind.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" * Represents a command to find tasks matching a keyword in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"public class CmdFind extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" private String keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" * Constructs a CmdFind object with the specified keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" * @param keyword The keyword to search for in task descriptions.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" public CmdFind(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" * Executes the find command on the provided task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" * @param taskList The task list to search within.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" * @param ui The user interface for displaying result of the search.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" Task[] filteredList \u003d taskList.search(keyword);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" ui.print(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" for (int i \u003d 1; i \u003c filteredList.length + 1; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" Task task \u003d filteredList[i - 1];","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" ui.print(String.format(\"%d. %s\", i, task.toString()));","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":40}},{"path":"src/main/java/command/CmdList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" * Represents a command to list all tasks in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"public class CmdList extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" * Executes the command to list all tasks and their indices in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" * @param taskList The task list to retrieve tasks from.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" * @param ui The user interface for displaying the list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" ui.print(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" for (int i \u003d 1; i \u003c taskList.size() + 1; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" Task task \u003d taskList.getTask(i - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" ui.print(String.format(\"%d. %s\", i, task.toString()));","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":29}},{"path":"src/main/java/command/CmdMark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" * Represents a command to mark a task as done in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"public class CmdMark extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" * Constructs a CmdMark object with the index of the task to be marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" public CmdMark(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" * Executes the command to mark a task as done, displays the marked task,","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" * and updates the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" * @param taskList The task list in which the task should be marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" * @param ui The user interface for displaying feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" taskList.markDone(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" ui.print(\"Meow! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" ui.print(taskList.getTask(index).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" Storage.writeToFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":39}},{"path":"src/main/java/command/CmdUnmark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" * Represents a command to mark a task as not done in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"public class CmdUnmark extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" private int index;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" * Constructs a CmdUnmark object with the index of the task to be marked as not","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" * done.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" * @param index The index of the task to be marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" public CmdUnmark(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" * Executes the command to mark a task as not done, displays the unmarked task,","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" * and updates the storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" * @param taskList The task list in which the task should be marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" * @param ui The user interface for displaying feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" public void execute(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" taskList.markNotDone(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" ui.print(\"Meow! I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" ui.print(taskList.getTask(index).toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" Storage.writeToFile(taskList);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":40}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import ui.Ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" * The abstract base class for all commands that is executed by the chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" * Subclasses of this class represent specific actions that can be performed","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" * by the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" * Executes the specific action associated with this command.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" * @param taskList The task list to operate on.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" public abstract void execute(TaskList taskList, Ui ui);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":23}},{"path":"src/main/java/command/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package command;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import java.util.Map;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"import exceptions.InvalidDateTimeFormat;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"import exceptions.InvalidIndexException;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"import exceptions.MissingDescriptionException;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"import exceptions.ThorndikeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"import task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"import utility.DateTimeParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":"import utility.StringUtility;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" * Utility class responsible for parsing user input and generating corresponding","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" * Command objects.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":"public abstract class CommandParser {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" * Parses the user input to create a corresponding Command object.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" * @param input User input string to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" * @return A Command object corresponding to the parsed input.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" * @throws ThorndikeException If there are errors in parsing or the input is","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" * invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" public static Command parse(String input) throws ThorndikeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" String command \u003d input.split(\" \")[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" String[] argList \u003d input.split(\" /\");","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" String description \u003d StringUtility.removeFirstWord(input.split(\" /\")[0]);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" Map\u003cString, String\u003e arguments \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" for (String arg : argList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" String option \u003d StringUtility.getFirstWord(arg);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" String value \u003d StringUtility.removeFirstWord(arg);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" if (!option.equals(command)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" arguments.put(\"command\", command);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" arguments.put(\"description\", value);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" arguments.put(option, value);","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":" return new CmdList();","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" return new CmdBye();","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":" return new CmdMark(parseIndex(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":" if (command.equals(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"zekone"},"content":" return new CmdUnmark(parseIndex(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"zekone"},"content":" if (command.equals(\"todo\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"zekone"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"zekone"},"content":" throw new MissingDescriptionException(\"todo\");","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"zekone"},"content":" return new CmdAddTask(new Todo(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"zekone"},"content":" if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"zekone"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"zekone"},"content":" throw new MissingDescriptionException(\"deadline\");","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"zekone"},"content":" LocalDateTime by \u003d DateTimeParser.parse(arguments.get(\"by\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"zekone"},"content":" if (by \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"zekone"},"content":" throw new InvalidDateTimeFormat();","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"zekone"},"content":" return new CmdAddTask(new Deadline(description, by));","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"zekone"},"content":" if (command.equals(\"event\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"zekone"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"zekone"},"content":" throw new MissingDescriptionException(\"event\");","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"zekone"},"content":" LocalDateTime from \u003d DateTimeParser.parse(arguments.get(\"from\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"zekone"},"content":" LocalDateTime to \u003d DateTimeParser.parse(arguments.get(\"to\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"zekone"},"content":" if (from \u003d\u003d null || to \u003d\u003d null) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"zekone"},"content":" throw new InvalidDateTimeFormat();","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"zekone"},"content":" return new CmdAddTask(new Event(description, from, to));","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"zekone"},"content":" if (command.equals(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"zekone"},"content":" return new CmdFind(description);","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"zekone"},"content":" return null;","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"zekone"},"content":" * Parses an index string and returns the corresponding task list index.","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"zekone"},"content":" * @param index The string representing the index to be parsed.","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"zekone"},"content":" * @return The parsed task list index (zero-based).","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"zekone"},"content":" * @throws ThorndikeException If the index cannot be parsed or is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"zekone"},"content":" private static int parseIndex(String index) throws ThorndikeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"zekone"},"content":" int idx \u003d -1;","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"zekone"},"content":" idx \u003d Integer.parseInt(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"zekone"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"zekone"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"zekone"},"content":" return idx - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":127}},{"path":"src/main/java/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" * Custom exception class for representing invalid commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"public class InvalidCommandException extends ThorndikeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" * Constructs an InvalidCommandException with a default error message for","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" * unrecognized commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" public InvalidCommandException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" super(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":17}},{"path":"src/main/java/exceptions/InvalidDateTimeFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package exceptions;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" * Custom exception class for representing invalid date and time formats.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"public class InvalidDateTimeFormat extends ThorndikeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" * Constructs an InvalidDateTimeFormat exception with a message indicating that","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" * the given format is wrong.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" public InvalidDateTimeFormat() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" super(\"The given format is wrong!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"zekone":17}},{"path":"src/main/java/exceptions/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" * Custom exception class for representing invalid task list indices.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"public class InvalidIndexException extends ThorndikeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" * Constructs an InvalidIndexException with a message indicating that the given","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" * index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" public InvalidIndexException() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" super(\"The index given is invalid\");","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":17}},{"path":"src/main/java/exceptions/MissingDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" * Custom exception class for representing missing descriptions when adding new","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" * tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"public class MissingDescriptionException extends ThorndikeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" * Constructs a MissingDescriptionException with a message indicating that the","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" * description is missing.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" * @param task The task for which the description is missing.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" public MissingDescriptionException(String task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" super(String.format(\"The description of a %s cannot be empty.\", task));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":21}},{"path":"src/main/java/exceptions/ThorndikeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package exceptions;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" * Custom exception class for the application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"public class ThorndikeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" * Constructs a ThorndikeException with the specified error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" * @param message The error message associated with the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" public ThorndikeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" super(\"MEOW! \" + message);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":18}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"import task.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"import task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"import utility.DateTimeParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"import utility.TextFileHandler;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" * Utility class for reading and writing tasks to/from a textfile.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":"public abstract class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" /** Path to the textfile. */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" public static final String TASK_FILE_PATH \u003d \"data/tasks.txt\";","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" /** Character indicator that separates one elements in the textfile. */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" public static final String TASK_FILE_SEPARATOR \u003d \"-\";","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" /** Standard format for time and date. */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" public static final String TASK_FILE_TB_FORMAT \u003d \"dd/MM/yyyy HHmm\";","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" * Reads task data from the specified file and returns a TaskList containing the","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" * tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" * @return A TaskList containing tasks read from the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" public static TaskList readFromFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" TaskList res \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" String[] lines \u003d TextFileHandler.readLines(TASK_FILE_PATH);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" for (String line : lines) {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" String[] task \u003d line.split(TASK_FILE_SEPARATOR);","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" String taskType \u003d task[2];","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" String status \u003d task[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" String description \u003d task[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":" res.addTask(new Todo(description));","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":" String time \u003d task[3];","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" res.addTask(new Deadline(description, DateTimeParser.parse(time)));","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":" String from \u003d task[3];","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":" String to \u003d task[4];","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":" res.addTask(new Event(description, DateTimeParser.parse(from),","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" DateTimeParser.parse(to)));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":" if (status.equals(\"1\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":" res.markDone(res.size() - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"zekone"},"content":" return res;","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"zekone"},"content":" * Writes the tasks from a TaskList to the specified file in the predefined","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"zekone"},"content":" * format.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"zekone"},"content":" * @param list The TaskList containing tasks to be written to the file.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"zekone"},"content":" public static void writeToFile(TaskList list) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"zekone"},"content":" String output \u003d \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"zekone"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"zekone"},"content":" Task task \u003d list.getTask(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"zekone"},"content":" output +\u003d task.getDescription();","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"zekone"},"content":" if (task.isDone()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR + \"1\";","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"zekone"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR + \"0\";","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"zekone"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR + \"T\";","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"zekone"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR + \"D\";","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"zekone"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"zekone"},"content":" + deadline.getCompleteBy().format(DateTimeFormatter.ofPattern(TASK_FILE_TB_FORMAT));","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"zekone"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR + \"E\";","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"zekone"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"zekone"},"content":" + event.getStartTime().format(DateTimeFormatter.ofPattern(TASK_FILE_TB_FORMAT));","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"zekone"},"content":" output +\u003d TASK_FILE_SEPARATOR","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"zekone"},"content":" + event.getEndTime().format(DateTimeFormatter.ofPattern(TASK_FILE_TB_FORMAT));","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"zekone"},"content":" output +\u003d System.lineSeparator();","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"zekone"},"content":" TextFileHandler.writeText(TASK_FILE_PATH, output);","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"zekone"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"zekone"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":112}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" * Represents a task with a deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" * @author Your Name","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" private LocalDateTime by;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" * Constructs a Deadline task with the specified description and deadline date","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" * and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" * @param by The deadline date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" * Retrieves the deadline date and time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" * @return The deadline date and time.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" public LocalDateTime getCompleteBy() {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" return by;","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" * Returns a string representation of the Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" * @return A string in the format: \"[D][Status] Description (by: dd MMM yyyy,","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" * HHmm)\"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" return \"[D]\" + super.toString() + \" (by: \"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" + by.format(DateTimeFormatter.ofPattern(\"d MMM yyyy, HHmm\")) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":46}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" * Represents an event task with a start and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" * Constructs an Event task with the specified description, start time, and end","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" * time.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" * @param description The description of the event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" * @param from The start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" * @param to The end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" * Retrieves the start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" * @return The start time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" public LocalDateTime getStartTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" return from;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" * Retrieves the end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" * @return The end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" public LocalDateTime getEndTime() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" return to;","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" * Returns a string representation of the Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" * @return A string in the format: \"[E][Status] Description (from: dd MMM yyyy,","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" * HHmm to: dd MMM yyyy, HHmm)\"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" from.format(DateTimeFormatter.ofPattern(\"d MMM yyyy, HHmm\")),","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":" to.format(DateTimeFormatter.ofPattern(\"d MMM yyyy, HHmm\")));","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":59}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" * Represents a generic task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" private String description;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" private boolean isDone;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" * Constructs a Task with the specified description.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" protected Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" * Retrieves the status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" * @return \"X\" if the task is done, \" \" if the task is not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" * Checks if the task is marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" * @return true if the task is done, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" public Boolean isDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" return isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" public void setDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" public void setNotDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" * Retrieves the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":" * @return The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"zekone"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"zekone"},"content":" * @return A string in the format: \"[Status] Description\"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"zekone"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"zekone"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), this.description);","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":72}},{"path":"src/main/java/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" * Represents a list of tasks in Thorndike.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" public TaskList() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" * Retrieves the task at the specified index in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" return list.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" * Adds a task to the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" * @param task The task to add to the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" list.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" * Deletes a task from the TaskList at the specified index.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" * @param index The index of the task to delete.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" * @return The deleted task.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":" Task deleted \u003d list.get(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":" list.remove(index);","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" return deleted;","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":" * Marks a task at the specified index as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":" * @param index The index of the task to mark as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" public void markDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":" list.get(index).setDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":" * Marks a task at the specified index as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":" * @param index The index of the task to mark as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"zekone"},"content":" public void markNotDone(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"zekone"},"content":" list.get(index).setNotDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"zekone"},"content":" * Checks if an index is within the valid range of task indices.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"zekone"},"content":" * @param index The index to check.","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"zekone"},"content":" * @return true if the index is within the valid range, false otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"zekone"},"content":" public boolean hasIndex(int index) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"zekone"},"content":" return index \u003e 0 \u0026\u0026 index \u003c list.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"zekone"},"content":" * Retrieves the number of tasks in the TaskList.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"zekone"},"content":" * @return The number of tasks in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"zekone"},"content":" public int size() {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"zekone"},"content":" return list.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"zekone"},"content":" * Searches for tasks with description containing the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"zekone"},"content":" * @param keyword The keyword to search.","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"zekone"},"content":" * @return an array of task with description containing the keyword.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"zekone"},"content":" public Task[] search(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"zekone"},"content":" Object[] tempRes \u003d list.stream()","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"zekone"},"content":" .filter(task -\u003e task.getDescription().toLowerCase().contains(keyword.toLowerCase())).toArray();","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"zekone"},"content":" Task[] res \u003d new Task[tempRes.length];","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"zekone"},"content":" for (int i \u003d 0; i \u003c tempRes.length; i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"zekone"},"content":" res[i] \u003d (Task) tempRes[i];","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"zekone"},"content":" return res;","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":105}},{"path":"src/main/java/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" * Represents a to-do task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" * Constructs a Todo task with the specified description.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" * @param description The description of the to-do task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" * Returns a string representation of the Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" * @return A string in the format: \"[T][Status] Description\"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":28}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" * User interface class for interaction with users.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" * Constructs a Ui object with an initialized scanner for reading user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" public Ui() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" * Reads a user command from the console and returns it as a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" * @return The user-entered command.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" System.out.print(\"\u003e\u003e \");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" return input;","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" * Prints a message to the console with indentation for a cleaner user","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" * interface.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" * @param message The message to be displayed to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" public void print(String message) {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" System.out.println(\" \" + message);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":41}},{"path":"src/main/java/utility/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package utility;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":" * Utility class for parsing date and time input strings into LocalDateTime","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" * objects.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":"public abstract class DateTimeParser {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" /** Supported date formats */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" public static final String[] DATE_FORMATS \u003d { \"yyyy-M-d\", \"d-M-yyyy\", \"yyyy/M/d\", \"d/M/yyyy\" };","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" /** Supported time formats */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" public static final String[] TIME_FORMATS \u003d { \"HH:mm\", \"HH-mm\", \"HHmm\" };","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" * Parses a date and/or time string into a LocalDateTime object.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" * @param input The input string representing date and/or time.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" * @return A LocalDateTime object representing the parsed date and time, or null","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" * if parsing fails.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" public static LocalDateTime parse(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" String date \u003d input;","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" String time \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" String dateFormat \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" if (input.split(\" \").length \u003d\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" date \u003d input.split(\" \")[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" time \u003d input.split(\" \")[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" for (String format : DATE_FORMATS) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(format);","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" LocalDate.parse(date, dateFormatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" dateFormat \u003d format;","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" // do nothing","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" if (dateFormat !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":" for (String format : TIME_FORMATS) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" String dateTimeFormat \u003d dateFormat + \" \" + format;","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(dateTimeFormat);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":" return LocalDateTime.parse(input, dateTimeFormatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" // do nothing","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":" if (time \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":" return LocalDate.parse(date, DateTimeFormatter.ofPattern(dateFormat)).atStartOfDay();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"zekone"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"zekone":67}},{"path":"src/main/java/utility/StringUtility.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package utility;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":" * Utility class for string manipulation operations.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"public abstract class StringUtility {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" * Removes the first word from a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" * @param s The input string","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" * @return New string without first word.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" public static String removeFirstWord(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" int indexOfSpace \u003d s.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" if (indexOfSpace \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" return \"\";","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" return s.substring(indexOfSpace + 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" * Extracts the first word from a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" * @param s The input string.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" * @return The first word.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" public static String getFirstWord(String s) {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" int indexOfSpace \u003d s.indexOf(\u0027 \u0027);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" if (indexOfSpace \u003d\u003d -1) {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" return s;","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" return s.substring(0, indexOfSpace);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":38}},{"path":"src/main/java/utility/TextFileHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package utility;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" * Utility class for .txt file manipulation operations.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" * @author Ho Khee Wei","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":"public abstract class TextFileHandler {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" * Creates a .txt file along with the necessary directories.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" * @param filePath Path of the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" * @throws IOException if the file path is not .txt","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" public static void createFile(String filePath) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" File directory \u003d file.getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" if (!isTxtFile(file)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" throw new IOException(\"File is not a text file.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" * Writes texts to .txt file.","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" * @param filePath Path of the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":" * @param text Text to be written in the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"zekone"},"content":" * @throws IOException if file cannot be opened.","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"zekone"},"content":" public static void writeText(String filePath, String text) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"zekone"},"content":" FileWriter writer \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"zekone"},"content":" writer.write(text);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"zekone"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"zekone"},"content":" * Returns the lines of the file, creates file if not present.","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"zekone"},"content":" * @param filePath Path of the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"zekone"},"content":" * @return A array of string which are lines in the .txt file.","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"zekone"},"content":" * @throws IOException if file cannot be opened.","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"zekone"},"content":" public static String[] readLines(String filePath) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"zekone"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"zekone"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"zekone"},"content":" return lines.toArray(new String[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"zekone"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"zekone"},"content":" * Checks if the path given is a .txt file.","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"zekone"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"zekone"},"content":" * @param filePath Path of the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"zekone"},"content":" * @return true is file is .txt, false otherwise.","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"zekone"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"zekone"},"content":" public static boolean isTxtFile(File filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"zekone"},"content":" String fileName \u003d filePath.getName();","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"zekone"},"content":" return fileName.endsWith(\".txt\");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"zekone":78}},{"path":"src/test/java/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":" public void getTask_containsTask_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" Task t1 \u003d new Todo(\"test1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" Task t2 \u003d new Todo(\"test2\");","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" list.addTask(t1);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" list.addTask(t2);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" assertEquals(t1, list.getTask(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":" assertEquals(t2, list.getTask(1));","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" assertNotEquals(t2, list.getTask(0));","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" public void getTask_returnSameObject_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" Task t1 \u003d new Todo(\"test1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" Task t2 \u003d new Todo(\"test2\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" list.addTask(t1);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" assertEquals(list.getTask(0), t1);","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" assertNotEquals(list.getTask(0), t2);","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" public void getTask_indexOOB_exception() {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":" Task t1 \u003d new Todo(\"test1\");","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"zekone"},"content":" list.addTask(t1);","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"zekone"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"zekone"},"content":" list.getTask(123);","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"zekone"},"content":" fail();","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"zekone"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"zekone"},"content":" assertEquals(\"Index 123 out of bounds for length 1\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":45}},{"path":"src/test/java/utility/DateTimeParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"package utility;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"zekone"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"zekone"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"zekone"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"zekone"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"zekone"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"zekone"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"zekone"},"content":"public class DateTimeParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"zekone"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"zekone"},"content":" public void parse_corectFormat_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"zekone"},"content":" assertEquals(LocalDateTime.of(2023, 9, 1, 10, 30), DateTimeParser.parse(\"1-9-2023 1030\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"zekone"},"content":" assertEquals(LocalDateTime.of(2023, 9, 1, 10, 30), DateTimeParser.parse(\"1/9/2023 10:30\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"zekone"},"content":" assertEquals(LocalDateTime.of(2023, 9, 1, 10, 30), DateTimeParser.parse(\"01/09/2023 10:30\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"zekone"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"zekone"},"content":" public void parse_noTimeGiven_success() {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"zekone"},"content":" assertEquals(LocalDateTime.of(2023, 9, 1, 00, 00), DateTimeParser.parse(\"1-9-2023\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"zekone"},"content":" assertEquals(LocalDateTime.of(2023, 9, 1, 00, 00), DateTimeParser.parse(\"1/9/2023\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"zekone"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"zekone"},"content":" public void parse_wrongFormat_null() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"zekone"},"content":" assertNull(DateTimeParser.parse(\"1/9-2023\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"zekone"},"content":" assertNull(DateTimeParser.parse(\"1.9.2023\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"zekone"},"content":" assertNull(DateTimeParser.parse(\"1/9/2023 2550\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"zekone"},"content":" assertNull(DateTimeParser.parse(\"1/9/2023 2:10\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"zekone"},"content":" assertNull(DateTimeParser.parse(\"1/19/2023 14:10\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"zekone"},"content":" assertNull(DateTimeParser.parse(\"35/9/2023 14:10\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"zekone"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"zekone"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"zekone"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"zekone":36}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"zekone"},"content":"todo read books","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"zekone"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"zekone":2}},{"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":"zekone"},"content":"java -classpath ..\\bin Thorndike \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"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":{"zekone":1,"-":20}}] diff --git a/zekone_ip_master/commits.json b/zekone_ip_master/commits.json index 3d3d8101..2a7d8c2d 100644 --- a/zekone_ip_master/commits.json +++ b/zekone_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"zekone":[{"date":"2023-08-24","commitResults":[{"hash":"1b86dd2116a7c69422aec19ee2fc8b8cf162e6be","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":10}}},{"hash":"d357315f1abf9a279740eb459aae0e8c8f4e260b","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":6}}},{"hash":"de5ff2180365c220fb8cc4660d9cb6f66f9eee53","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"8882651c09e51d601e65289187e75dc1b14b7bd9","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":15}}},{"hash":"7769f0020eaf4a2c902aee8ca0f399c7c4bc1710","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":5}}},{"hash":"14be0cefe14f15dde5c316c7315b30b5a6abb0ea","isMergeCommit":false,"messageTitle":"TextUI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"d6dba167c4583c98fa2330ad22a6af1470f6dbce","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":67}}},{"hash":"87d98e56dbc4dfd0f493a72ee8480df4fd513527","isMergeCommit":false,"messageTitle":"added delete method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":16}}},{"hash":"f5c358139d2142070439d5a5780e66a191396078","isMergeCommit":false,"messageTitle":"added javadoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":7}}},{"hash":"769032650f1c91b25ad650c032ab0f7ab21410c2","isMergeCommit":false,"messageTitle":"fixed javadoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":5}}},{"hash":"97c646434275ad10421aae85124a1d741c30358f","isMergeCommit":false,"messageTitle":"divided exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":6}}},{"hash":"3a982edecabac260c5ab0acbd01d404fff633b4d","isMergeCommit":false,"messageTitle":"improved list() method in Thorndike.java","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"e408a4a1ee8584f05843c3b0b8edee98b6cb5b6f","isMergeCommit":false,"messageTitle":"Thorndike.java: improve style","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":10}}},{"hash":"423c0190680ee971a0be328a796501048633cbcf","isMergeCommit":false,"messageTitle":"fix javadoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2023-08-30","commitResults":[{"hash":"28fb225c0c88413147ece8cf656d4fd603d1b82c","isMergeCommit":false,"messageTitle":"add TextFileHandler.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":0}}},{"hash":"6961b759fc2ae864c735cb72d33869ef75acdc3c","isMergeCommit":false,"messageTitle":"Task.java: add new methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"72c913fd5d28fb863559d07ac9246b8cfacd63eb","isMergeCommit":false,"messageTitle":"Add save functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":29}}},{"hash":"43713814c8a2f115a7d76149ee61bdc448aa85e2","isMergeCommit":true,"messageTitle":"Merge with branch-Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"345e7b557f69821037822590cbf221279808a4e2","isMergeCommit":false,"messageTitle":"Add DateTimeParser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"75c67fda3867bc6ebb685d337c8dade171b0a7b6","isMergeCommit":false,"messageTitle":"Add InvalidDateTimeFormat.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"28de83fc9ef21bbb89487fe1eb17060cccc7e50b","isMergeCommit":false,"messageTitle":"Add date and time to Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"7051527629c6ce1ce3c2f3ced63f39320d704c94","isMergeCommit":false,"messageTitle":"Add time and date to tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":38}}},{"hash":"823a44d7f10effb680dd376dc79f67d860300eb1","isMergeCommit":true,"messageTitle":"Merge branch-Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"81e4743d6c9d9a2af73360599540f034713d0f70","isMergeCommit":false,"messageTitle":"Add TaskList.java and integrate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":23}}},{"hash":"cd84e4494e66c2da398a139de6e9c75708ef0aea","isMergeCommit":false,"messageTitle":"Add Storage.java and integrate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":86}}},{"hash":"5f7e7abf3d19257fc50089101ad1eb07fa1d9d15","isMergeCommit":false,"messageTitle":"Thorndike.java: Remove constant TASK_FILE_PATH","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":5}}},{"hash":"e5017b852e088b29dd07454e82546a01005b17b9","isMergeCommit":false,"messageTitle":"Add StringUtility.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":0}}},{"hash":"e0080dbd97edc7392f9b91c2013bdfa4bd75584f","isMergeCommit":false,"messageTitle":"Add Command.java and Ui.java and more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":300,"deletions":233}}},{"hash":"356d2d7e1d39e9d85ebf4dee60d0a7494794e9a4","isMergeCommit":false,"messageTitle":"Add Main.java","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"f83a46545e7c68ce791fb58a541aba1539efdeea","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a67595717c840a9b09fb3041654d28542f388044","isMergeCommit":false,"messageTitle":"Add gradle support","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"zekone":{"java":846,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":2}},"authorContributionVariance":{"zekone":67047.23},"authorDisplayNameMap":{"zekone":"CS2103T-W16-1 HO K.. WEI"}} +{"authorDailyContributionsMap":{"zekone":[{"date":"2023-08-24","commitResults":[{"hash":"1b86dd2116a7c69422aec19ee2fc8b8cf162e6be","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":10}}},{"hash":"d357315f1abf9a279740eb459aae0e8c8f4e260b","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":6}}},{"hash":"de5ff2180365c220fb8cc4660d9cb6f66f9eee53","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"8882651c09e51d601e65289187e75dc1b14b7bd9","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":15}}},{"hash":"7769f0020eaf4a2c902aee8ca0f399c7c4bc1710","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":5}}},{"hash":"14be0cefe14f15dde5c316c7315b30b5a6abb0ea","isMergeCommit":false,"messageTitle":"TextUI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"d6dba167c4583c98fa2330ad22a6af1470f6dbce","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":67}}},{"hash":"87d98e56dbc4dfd0f493a72ee8480df4fd513527","isMergeCommit":false,"messageTitle":"added delete method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":16}}},{"hash":"f5c358139d2142070439d5a5780e66a191396078","isMergeCommit":false,"messageTitle":"added javadoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":7}}},{"hash":"769032650f1c91b25ad650c032ab0f7ab21410c2","isMergeCommit":false,"messageTitle":"fixed javadoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":5}}},{"hash":"97c646434275ad10421aae85124a1d741c30358f","isMergeCommit":false,"messageTitle":"divided exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":6}}},{"hash":"3a982edecabac260c5ab0acbd01d404fff633b4d","isMergeCommit":false,"messageTitle":"improved list() method in Thorndike.java","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"e408a4a1ee8584f05843c3b0b8edee98b6cb5b6f","isMergeCommit":false,"messageTitle":"Thorndike.java: improve style","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":10}}},{"hash":"423c0190680ee971a0be328a796501048633cbcf","isMergeCommit":false,"messageTitle":"fix javadoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2023-08-30","commitResults":[{"hash":"28fb225c0c88413147ece8cf656d4fd603d1b82c","isMergeCommit":false,"messageTitle":"add TextFileHandler.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":0}}},{"hash":"6961b759fc2ae864c735cb72d33869ef75acdc3c","isMergeCommit":false,"messageTitle":"Task.java: add new methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"72c913fd5d28fb863559d07ac9246b8cfacd63eb","isMergeCommit":false,"messageTitle":"Add save functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":29}}},{"hash":"43713814c8a2f115a7d76149ee61bdc448aa85e2","isMergeCommit":true,"messageTitle":"Merge with branch-Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"345e7b557f69821037822590cbf221279808a4e2","isMergeCommit":false,"messageTitle":"Add DateTimeParser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":0}}}]},{"date":"2023-08-31","commitResults":[{"hash":"75c67fda3867bc6ebb685d337c8dade171b0a7b6","isMergeCommit":false,"messageTitle":"Add InvalidDateTimeFormat.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"28de83fc9ef21bbb89487fe1eb17060cccc7e50b","isMergeCommit":false,"messageTitle":"Add date and time to Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"7051527629c6ce1ce3c2f3ced63f39320d704c94","isMergeCommit":false,"messageTitle":"Add time and date to tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":38}}},{"hash":"823a44d7f10effb680dd376dc79f67d860300eb1","isMergeCommit":true,"messageTitle":"Merge branch-Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"81e4743d6c9d9a2af73360599540f034713d0f70","isMergeCommit":false,"messageTitle":"Add TaskList.java and integrate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":23}}},{"hash":"cd84e4494e66c2da398a139de6e9c75708ef0aea","isMergeCommit":false,"messageTitle":"Add Storage.java and integrate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":86}}},{"hash":"5f7e7abf3d19257fc50089101ad1eb07fa1d9d15","isMergeCommit":false,"messageTitle":"Thorndike.java: Remove constant TASK_FILE_PATH","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":5}}},{"hash":"e5017b852e088b29dd07454e82546a01005b17b9","isMergeCommit":false,"messageTitle":"Add StringUtility.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":0}}},{"hash":"e0080dbd97edc7392f9b91c2013bdfa4bd75584f","isMergeCommit":false,"messageTitle":"Add Command.java and Ui.java and more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":300,"deletions":233}}},{"hash":"356d2d7e1d39e9d85ebf4dee60d0a7494794e9a4","isMergeCommit":false,"messageTitle":"Add Main.java","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"f83a46545e7c68ce791fb58a541aba1539efdeea","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a67595717c840a9b09fb3041654d28542f388044","isMergeCommit":false,"messageTitle":"Add gradle support","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"9afddbcd4a52c90b2f7efa907fbe673b2b8cb459","isMergeCommit":false,"messageTitle":"Add find command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"f0570a8ef8f1afbc7ebd72eeff0b33de7fe78578","isMergeCommit":false,"messageTitle":"Add JavaDoc for all files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":382,"deletions":53}}},{"hash":"657da7756d5095cbcfaf790633587034c33a942c","isMergeCommit":false,"messageTitle":"Fix coding standard violations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":12}}},{"hash":"a4ac64e5c65aaa2fe334beb04d08a4f882048a36","isMergeCommit":false,"messageTitle":"Fixed JavaDoc for some files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"2f02e932c829dd5052bd5c3664885f0a77e5f49a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"2223805586c0255ecbc8e7ccf7aa6f3fa8b3698b","isMergeCommit":true,"messageTitle":"Merge branch-Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"c72718dd6344e8b875f49bd87caf8856fe79a99d","isMergeCommit":false,"messageTitle":"Add checkstyle.xml and suppressions.xml","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1}}},{"hash":"0a723c58e12f62dfa0af639047693fe5ca7e9050","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":26}}},{"hash":"a283688cdf3e67075305d959da8f061d09105670","isMergeCommit":false,"messageTitle":"Add JUnit testing","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":81,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"zekone":{"java":1315,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":12,"txt":2}},"authorContributionVariance":{"zekone":155588.22},"authorDisplayNameMap":{"zekone":"CS2103T-W16-1 HO K.. WEI"}}